#*
#*******************************************************************************
#* Copyright (C) 2008, 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: ICU]
com.ibm.icu.impl.javaspi.ICULocaleServiceProvider.icuVariantSuffix = ICU

# 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
