ICU-6750 Allow aliases in numbering system descriptions
X-SVN-Rev: 25469
This commit is contained in:
parent
27ce5a3df5
commit
ec9921c61c
@ -55,32 +55,32 @@ numberingSystems:table(nofallback){
|
|||||||
}
|
}
|
||||||
hanjfin{
|
hanjfin{
|
||||||
algorithmic:int{1}
|
algorithmic:int{1}
|
||||||
desc{"%ja/SpelloutRules/financial"}
|
desc{"ja/SpelloutRules/%financial"}
|
||||||
radix:int{10}
|
radix:int{10}
|
||||||
}
|
}
|
||||||
hanjstd{
|
hanjstd{
|
||||||
algorithmic:int{1}
|
algorithmic:int{1}
|
||||||
desc{"%ja/SpelloutRules/spellout"}
|
desc{"ja/SpelloutRules/%spellout"}
|
||||||
radix:int{10}
|
radix:int{10}
|
||||||
}
|
}
|
||||||
hansfin{
|
hansfin{
|
||||||
algorithmic:int{1}
|
algorithmic:int{1}
|
||||||
desc{"%zh/SpelloutRules/financial"}
|
desc{"zh/SpelloutRules/%financial"}
|
||||||
radix:int{10}
|
radix:int{10}
|
||||||
}
|
}
|
||||||
hansstd{
|
hansstd{
|
||||||
algorithmic:int{1}
|
algorithmic:int{1}
|
||||||
desc{"%zh/SpelloutRules/spellout"}
|
desc{"zh/SpelloutRules/%spellout"}
|
||||||
radix:int{10}
|
radix:int{10}
|
||||||
}
|
}
|
||||||
hantfin{
|
hantfin{
|
||||||
algorithmic:int{1}
|
algorithmic:int{1}
|
||||||
desc{"%zh_Hant/SpelloutRules/financial"}
|
desc{"zh_Hant/SpelloutRules/%financial"}
|
||||||
radix:int{10}
|
radix:int{10}
|
||||||
}
|
}
|
||||||
hantstd{
|
hantstd{
|
||||||
algorithmic:int{1}
|
algorithmic:int{1}
|
||||||
desc{"%zh_Hant/SpelloutRules/spellout"}
|
desc{"zh_Hant/SpelloutRules/%spellout"}
|
||||||
radix:int{10}
|
radix:int{10}
|
||||||
}
|
}
|
||||||
hebrew{
|
hebrew{
|
||||||
|
@ -278,6 +278,29 @@ root{
|
|||||||
"3000: mmm[>>];\n",
|
"3000: mmm[>>];\n",
|
||||||
"4000: =#,##0=;\n",
|
"4000: =#,##0=;\n",
|
||||||
"-x: >>n;\n",
|
"-x: >>n;\n",
|
||||||
|
"%tamil:\n",
|
||||||
|
"0: =#,##,##0=;\n",
|
||||||
|
"1: \u0BE7;\n",
|
||||||
|
"2: \u0BE8;\n",
|
||||||
|
"3: \u0BE9;\n",
|
||||||
|
"4: \u0BEA;\n",
|
||||||
|
"5: \u0BEB;\n",
|
||||||
|
"6: \u0BEC;\n",
|
||||||
|
"7: \u0BED;\n",
|
||||||
|
"8: \u0BEE;\n",
|
||||||
|
"9: \u0BEF;\n",
|
||||||
|
"10: \u0BF0[>>];\n",
|
||||||
|
"20: <<\u0BF0[>>];\n",
|
||||||
|
"100: \u0BF1[>>];\n",
|
||||||
|
"200: <<\u0BF1[>>];\n",
|
||||||
|
"1000: \u0BF2[>>];\n",
|
||||||
|
"2000: <<\u0BF2[>>];\n",
|
||||||
|
"1000000/100000: <<\u0BF1\u0BF2[>%%tamil_thousands>];\n",
|
||||||
|
"100000000: =#,##,##0=;\n",
|
||||||
|
"-x: =#,##,##0=;\n",
|
||||||
|
"%%tamil_thousands:\n",
|
||||||
|
"0: =%tamil=;\n",
|
||||||
|
"1000: <<\u0BF2[>>];\n",
|
||||||
"%upper-roman:\n",
|
"%upper-roman:\n",
|
||||||
"0: N; I; II; III; IV; V; VI; VII; VIII; IX;\n",
|
"0: N; I; II; III; IV; V; VI; VII; VIII; IX;\n",
|
||||||
"10: X[>>];\n",
|
"10: X[>>];\n",
|
||||||
@ -322,5 +345,5 @@ root{
|
|||||||
"0: =#,##0.#=;\n",
|
"0: =#,##0.#=;\n",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Version{"1.6"}
|
Version{"1.7"}
|
||||||
}
|
}
|
||||||
|
@ -84,6 +84,8 @@ static const UChar gLastResortPluralCurrencyPat[] = {
|
|||||||
static const UChar gSingleCurrencySign[] = {0xA4, 0};
|
static const UChar gSingleCurrencySign[] = {0xA4, 0};
|
||||||
static const UChar gDoubleCurrencySign[] = {0xA4, 0xA4, 0};
|
static const UChar gDoubleCurrencySign[] = {0xA4, 0xA4, 0};
|
||||||
|
|
||||||
|
static const UChar gSlash = 0x2f;
|
||||||
|
|
||||||
// If the maximum base 10 exponent were 4, then the largest number would
|
// If the maximum base 10 exponent were 4, then the largest number would
|
||||||
// be 99,999 which has 5 digits.
|
// be 99,999 which has 5 digits.
|
||||||
// On IEEE754 systems gMaxIntegerDigits is 308 + possible denormalized 15 digits + rounding digit
|
// On IEEE754 systems gMaxIntegerDigits is 308 + possible denormalized 15 digits + rounding digit
|
||||||
@ -931,12 +933,41 @@ NumberFormat::makeInstance(const Locale& desiredLocale,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ns->isAlgorithmic()) {
|
if (ns->isAlgorithmic()) {
|
||||||
RuleBasedNumberFormat *r = new RuleBasedNumberFormat(URBNF_NUMBERING_SYSTEM,desiredLocale,status);
|
UnicodeString nsDesc;
|
||||||
|
UnicodeString nsRuleSetGroup;
|
||||||
|
UnicodeString nsRuleSetName;
|
||||||
|
Locale nsLoc;
|
||||||
|
URBNFRuleSetTag desiredRulesType = URBNF_NUMBERING_SYSTEM;
|
||||||
|
|
||||||
|
nsDesc.setTo(ns->getDescription());
|
||||||
|
int32_t firstSlash = nsDesc.indexOf(gSlash);
|
||||||
|
int32_t lastSlash = nsDesc.lastIndexOf(gSlash);
|
||||||
|
if ( lastSlash > firstSlash ) {
|
||||||
|
char nsLocID[ULOC_FULLNAME_CAPACITY];
|
||||||
|
|
||||||
|
nsDesc.extract(0,firstSlash,nsLocID,ULOC_FULLNAME_CAPACITY,US_INV);
|
||||||
|
nsRuleSetGroup.setTo(nsDesc,firstSlash+1,lastSlash-firstSlash-1);
|
||||||
|
nsRuleSetName.setTo(nsDesc,lastSlash+1);
|
||||||
|
|
||||||
|
nsLoc = Locale::createFromName(nsLocID);
|
||||||
|
|
||||||
|
UnicodeString SpelloutRules = UNICODE_STRING_SIMPLE("SpelloutRules");
|
||||||
|
if ( nsRuleSetGroup.compare(SpelloutRules) == 0 ) {
|
||||||
|
desiredRulesType = URBNF_SPELLOUT;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
nsLoc = desiredLocale;
|
||||||
|
nsRuleSetName.setTo(nsDesc);
|
||||||
|
}
|
||||||
|
|
||||||
|
RuleBasedNumberFormat *r = new RuleBasedNumberFormat(desiredRulesType,nsLoc,status);
|
||||||
|
|
||||||
if (U_FAILURE(status) || r == NULL) {
|
if (U_FAILURE(status) || r == NULL) {
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
r->setDefaultRuleSet(ns->getDescription(),status);
|
r->setDefaultRuleSet(nsRuleSetName,status);
|
||||||
f = (NumberFormat *) r;
|
f = (NumberFormat *) r;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// replace single currency sign in the pattern with double currency sign
|
// replace single currency sign in the pattern with double currency sign
|
||||||
// if the style is kIsoCurrencyStyle
|
// if the style is kIsoCurrencyStyle
|
||||||
|
Loading…
Reference in New Issue
Block a user