#*
#*******************************************************************************
#* Copyright (C) 2008-2012, International Business Machines Corporation and    *
#* others. All Rights Reserved.                                                *
#*******************************************************************************
#* This is the properties is used for configuring ICU locale service provider
#* implementation.
#*

# Whether if Locales with ICU's variant suffix will be included in getAvailableLocales.
# [default: true]
com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIcuVariants = true

# Suffix string used in Locale's variant field to specify the ICU implementation.
# [default: ICU4J]
com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.icuVariantSuffix = ICU4J

# Whether if 3-letter language Locales are included in getAvailabeLocales.
# [default: true]
com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.enableIso3Languages = true

# Whether if java.text.DecimalFormat subclass is used for NumberFormat#getXXXInstance.
# DecimalFormat#format(Object,StringBuffer,FieldPosition) is declared as final, so
# ICU cannot override the implementation.  As a result, some number types such as
# BigInteger/BigDecimal are not handled by the ICU implementation.  If a client expects
# NumberFormat#getXXXInstance returns a DecimalFormat (for example, need to manipulate
# decimal format patterns), he/she can set true to this setting.  However, in this case,
# BigInteger/BigDecimal support is not done by ICU's implementation.
# [default: false]
com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.useDecimalFormat = false
