mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-08 06:53:45 +00:00
ICU-22545 Fix addLikelySubtags for pseudo Locales
This commit is contained in:
parent
1bb711ad20
commit
fa6a4661ba
5 changed files with 57 additions and 0 deletions
|
@ -561,12 +561,21 @@ LSR XLikelySubtags::makeMaximizedLsr(const char *language, const char *script, c
|
|||
if (region[0] == 'X' && (c1 = region[1]) != 0 && region[2] == 0) {
|
||||
switch (c1) {
|
||||
case 'A':
|
||||
if (returnInputIfUnmatch) {
|
||||
return LSR(language, script, region, LSR::EXPLICIT_LSR);
|
||||
}
|
||||
return LSR(PSEUDO_ACCENTS_PREFIX, language, script, region,
|
||||
LSR::EXPLICIT_LSR, errorCode);
|
||||
case 'B':
|
||||
if (returnInputIfUnmatch) {
|
||||
return LSR(language, script, region, LSR::EXPLICIT_LSR);
|
||||
}
|
||||
return LSR(PSEUDO_BIDI_PREFIX, language, script, region,
|
||||
LSR::EXPLICIT_LSR, errorCode);
|
||||
case 'C':
|
||||
if (returnInputIfUnmatch) {
|
||||
return LSR(language, script, region, LSR::EXPLICIT_LSR);
|
||||
}
|
||||
return LSR(PSEUDO_CRACKED_PREFIX, language, script, region,
|
||||
LSR::EXPLICIT_LSR, errorCode);
|
||||
default: // normal locale
|
||||
|
|
|
@ -3814,6 +3814,18 @@ const char* const basic_maximize_data[][2] = {
|
|||
// ICU-22546
|
||||
"zh_Hani",
|
||||
"zh_Hani_CN" // If change, please also update common/unicode/uloc.h
|
||||
}, {
|
||||
// ICU-22545
|
||||
"en_XA",
|
||||
"en_XA"
|
||||
}, {
|
||||
// ICU-22545
|
||||
"en_XB",
|
||||
"en_XB"
|
||||
}, {
|
||||
// ICU-22545
|
||||
"en_XC",
|
||||
"en_XC"
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -3881,6 +3881,21 @@ LocaleTest::TestAddLikelyAndMinimizeSubtags() {
|
|||
"zh_Hani",
|
||||
"zh_Hani_CN", // If change, please also update common/unicode/locid.h
|
||||
"zh_Hani"
|
||||
}, {
|
||||
// ICU-22545
|
||||
"en_XA",
|
||||
"en_XA",
|
||||
"en_XA",
|
||||
}, {
|
||||
// ICU-22545
|
||||
"en_XB",
|
||||
"en_XB",
|
||||
"en_XB",
|
||||
}, {
|
||||
// ICU-22545
|
||||
"en_XC",
|
||||
"en_XC",
|
||||
"en_XC",
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -1949,6 +1949,18 @@ public class ULocaleTest extends CoreTestFmwk {
|
|||
// ICU-22546
|
||||
"zh_Hani",
|
||||
"zh_Hani_CN" // If change, please also update ULocale.java
|
||||
}, {
|
||||
// ICU-22545
|
||||
"en_XA",
|
||||
"en_XA",
|
||||
}, {
|
||||
// ICU-22545
|
||||
"en_XB",
|
||||
"en_XB",
|
||||
}, {
|
||||
// ICU-22545
|
||||
"en_XC",
|
||||
"en_XC",
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -216,12 +216,21 @@ public final class XLikelySubtags {
|
|||
if (region.length() == 2 && region.charAt(0) == 'X') {
|
||||
switch (region.charAt(1)) {
|
||||
case 'A':
|
||||
if (returnInputIfUnmatch) {
|
||||
return new LSR(language, script, region, LSR.EXPLICIT_LSR);
|
||||
}
|
||||
return new LSR(PSEUDO_ACCENTS_PREFIX + language,
|
||||
PSEUDO_ACCENTS_PREFIX + script, region, LSR.EXPLICIT_LSR);
|
||||
case 'B':
|
||||
if (returnInputIfUnmatch) {
|
||||
return new LSR(language, script, region, LSR.EXPLICIT_LSR);
|
||||
}
|
||||
return new LSR(PSEUDO_BIDI_PREFIX + language,
|
||||
PSEUDO_BIDI_PREFIX + script, region, LSR.EXPLICIT_LSR);
|
||||
case 'C':
|
||||
if (returnInputIfUnmatch) {
|
||||
return new LSR(language, script, region, LSR.EXPLICIT_LSR);
|
||||
}
|
||||
return new LSR(PSEUDO_CRACKED_PREFIX + language,
|
||||
PSEUDO_CRACKED_PREFIX + script, region, LSR.EXPLICIT_LSR);
|
||||
default: // normal locale
|
||||
|
|
Loading…
Add table
Reference in a new issue