summaryrefslogtreecommitdiff
path: root/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LikelySubtags.java
diff options
context:
space:
mode:
Diffstat (limited to 'icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LikelySubtags.java')
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LikelySubtags.java73
1 files changed, 33 insertions, 40 deletions
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LikelySubtags.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LikelySubtags.java
index 6d5a35379..2a42c60c4 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LikelySubtags.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/locale/LikelySubtags.java
@@ -213,49 +213,42 @@ public final class LikelySubtags {
// Handle pseudolocales like en-XA, ar-XB, fr-PSCRACK.
// They should match only themselves,
// not other locales with what looks like the same language and script subtags.
- 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);
+ if (!returnInputIfUnmatch) {
+ if (region.length() == 2 && region.charAt(0) == 'X') {
+ switch (region.charAt(1)) {
+ case 'A':
+ return new LSR(PSEUDO_ACCENTS_PREFIX + language,
+ PSEUDO_ACCENTS_PREFIX + script, region, LSR.EXPLICIT_LSR);
+ case 'B':
+ return new LSR(PSEUDO_BIDI_PREFIX + language,
+ PSEUDO_BIDI_PREFIX + script, region, LSR.EXPLICIT_LSR);
+ case 'C':
+ return new LSR(PSEUDO_CRACKED_PREFIX + language,
+ PSEUDO_CRACKED_PREFIX + script, region, LSR.EXPLICIT_LSR);
+ default: // normal locale
+ break;
}
- return new LSR(PSEUDO_CRACKED_PREFIX + language,
- PSEUDO_CRACKED_PREFIX + script, region, LSR.EXPLICIT_LSR);
- default: // normal locale
- break;
}
- }
- if (variant.startsWith("PS")) {
- int lsrFlags = region.isEmpty() ?
- LSR.EXPLICIT_LANGUAGE | LSR.EXPLICIT_SCRIPT : LSR.EXPLICIT_LSR;
- switch (variant) {
- case "PSACCENT":
- return new LSR(PSEUDO_ACCENTS_PREFIX + language,
- PSEUDO_ACCENTS_PREFIX + script,
- region.isEmpty() ? "XA" : region, lsrFlags);
- case "PSBIDI":
- return new LSR(PSEUDO_BIDI_PREFIX + language,
- PSEUDO_BIDI_PREFIX + script,
- region.isEmpty() ? "XB" : region, lsrFlags);
- case "PSCRACK":
- return new LSR(PSEUDO_CRACKED_PREFIX + language,
- PSEUDO_CRACKED_PREFIX + script,
- region.isEmpty() ? "XC" : region, lsrFlags);
- default: // normal locale
- break;
+ if (variant.startsWith("PS")) {
+ int lsrFlags = region.isEmpty() ?
+ LSR.EXPLICIT_LANGUAGE | LSR.EXPLICIT_SCRIPT : LSR.EXPLICIT_LSR;
+ switch (variant) {
+ case "PSACCENT":
+ return new LSR(PSEUDO_ACCENTS_PREFIX + language,
+ PSEUDO_ACCENTS_PREFIX + script,
+ region.isEmpty() ? "XA" : region, lsrFlags);
+ case "PSBIDI":
+ return new LSR(PSEUDO_BIDI_PREFIX + language,
+ PSEUDO_BIDI_PREFIX + script,
+ region.isEmpty() ? "XB" : region, lsrFlags);
+ case "PSCRACK":
+ return new LSR(PSEUDO_CRACKED_PREFIX + language,
+ PSEUDO_CRACKED_PREFIX + script,
+ region.isEmpty() ? "XC" : region, lsrFlags);
+ default: // normal locale
+ break;
+ }
}
}