Niedzielski has uploaded a new change for review.
https://gerrit.wikimedia.org/r/217978
Change subject: Refactor dialect from AppLanguageState
......................................................................
Refactor dialect from AppLanguageState
Change-Id: I8d437b3941d17ab00d0912595a967ec59b6aa43e
---
M wikipedia/src/main/java/org/wikipedia/Utils.java
M wikipedia/src/main/java/org/wikipedia/interlanguage/AppLanguageState.java
A wikipedia/src/main/java/org/wikipedia/interlanguage/LanguageUtil.java
3 files changed, 52 insertions(+), 46 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/78/217978/1
diff --git a/wikipedia/src/main/java/org/wikipedia/Utils.java
b/wikipedia/src/main/java/org/wikipedia/Utils.java
index 7363e41..bdb3c26 100644
--- a/wikipedia/src/main/java/org/wikipedia/Utils.java
+++ b/wikipedia/src/main/java/org/wikipedia/Utils.java
@@ -30,6 +30,7 @@
import org.json.JSONException;
import org.json.JSONObject;
import org.wikipedia.bridge.CommunicationBridge;
+import org.wikipedia.interlanguage.LanguageUtil;
import org.wikipedia.settings.PrefKeys;
import org.wikipedia.util.ApiUtil;
import org.wikipedia.util.ShareUtils;
@@ -247,27 +248,6 @@
}
/**
- * Takes a ISO language code (as returned by Android) and returns a wiki
code, as used by wikipedia.
- *
- * @param langCode Language code (as returned by Android)
- * @return Wiki code, as used by wikipedia.
- */
- public static String langCodeToWikiLang(String langCode) {
- // Convert deprecated language codes to modern ones.
- // See https://developer.android.com/reference/java/util/Locale.html
- switch (langCode) {
- case "iw":
- return "he"; // Hebrew
- case "in":
- return "id"; // Indonesian
- case "ji":
- return "yi"; // Yiddish
- default:
- return langCode;
- }
- }
-
- /**
* List of wiki language codes for which the content is primarily RTL.
*
* Ensure that this is always sorted alphabetically.
@@ -302,7 +282,7 @@
} else {
payload.put("contentDirection", "ltr");
}
- if (isLangRTL(langCodeToWikiLang(uiLang))) {
+ if
(isLangRTL(LanguageUtil.languageCodeToWikiLanguageCode(uiLang))) {
payload.put("uiDirection", "rtl");
} else {
payload.put("uiDirection", "ltr");
diff --git
a/wikipedia/src/main/java/org/wikipedia/interlanguage/AppLanguageState.java
b/wikipedia/src/main/java/org/wikipedia/interlanguage/AppLanguageState.java
index 35fc461..4597592 100644
--- a/wikipedia/src/main/java/org/wikipedia/interlanguage/AppLanguageState.java
+++ b/wikipedia/src/main/java/org/wikipedia/interlanguage/AppLanguageState.java
@@ -22,10 +22,6 @@
* and application languages. */
public class AppLanguageState {
public static final String SYSTEM_LANGUAGE_CODE = null;
- private static final String HONG_KONG_COUNTRY_CODE = "HK";
- private static final String MACAU_COUNTRY_CODE = "MO";
- private static final List<String> TRADITIONAL_CHINESE_COUNTRY_CODES =
Arrays.asList(
- Locale.TAIWAN.getCountry(), HONG_KONG_COUNTRY_CODE,
MACAU_COUNTRY_CODE);
@NonNull
private final Context context;
@@ -76,8 +72,10 @@
@NonNull
public String getSystemLanguageCode() {
- String lang =
Utils.langCodeToWikiLang(Locale.getDefault().getLanguage());
- return appLanguageLookUpTable.isSupportedCode(lang) ? lang :
convertSystemLanguageCode(lang);
+ String code =
LanguageUtil.languageCodeToWikiLanguageCode(Locale.getDefault().getLanguage());
+ return appLanguageLookUpTable.isSupportedCode(code)
+ ? code
+ : AppLanguageLookUpTable.FALLBACK_LANGUAGE_CODE;
}
public Locale getAppLocale() {
@@ -135,24 +133,6 @@
@Nullable
public String getAppLanguageLocalizedName(String code) {
return appLanguageLookUpTable.getLocalizedName(code);
- }
-
- @NonNull
- private String convertSystemLanguageCode(@NonNull String code) {
- // If the user configures Android for Chinese (zh) we have no way to
know the intended
- // dialect. We guess based on country. If the guess is incorrect, the
user must explicitly
- // choose the dialect in the app settings.
- if (Locale.CHINA.getLanguage().equals(code)) {
- return
isTraditionalChinesePredominantInCountry(Locale.getDefault().getCountry())
- ? AppLanguageLookUpTable.TRADITIONAL_CHINESE_LANGUAGE_CODE
- : AppLanguageLookUpTable.SIMPLIFIED_CHINESE_LANGUAGE_CODE;
- }
-
- return AppLanguageLookUpTable.FALLBACK_LANGUAGE_CODE;
- }
-
- private boolean isTraditionalChinesePredominantInCountry(@Nullable String
country) {
- return TRADITIONAL_CHINESE_COUNTRY_CODES.contains(country);
}
@NonNull
diff --git
a/wikipedia/src/main/java/org/wikipedia/interlanguage/LanguageUtil.java
b/wikipedia/src/main/java/org/wikipedia/interlanguage/LanguageUtil.java
new file mode 100644
index 0000000..f2075fb
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/interlanguage/LanguageUtil.java
@@ -0,0 +1,46 @@
+package org.wikipedia.interlanguage;
+
+import android.support.annotation.Nullable;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+public class LanguageUtil {
+ private static final String HONG_KONG_COUNTRY_CODE = "HK";
+ private static final String MACAU_COUNTRY_CODE = "MO";
+ private static final List<String> TRADITIONAL_CHINESE_COUNTRY_CODES =
Arrays.asList(
+ Locale.TAIWAN.getCountry(), HONG_KONG_COUNTRY_CODE,
MACAU_COUNTRY_CODE);
+
+ /**
+ * Takes a ISO language code (as returned by Android) and returns a wiki
code, as used by wikipedia.
+ *
+ * @param code Language code (as returned by Android)
+ * @return Wiki code, as used by wikipedia.
+ */
+ public static String languageCodeToWikiLanguageCode(String code) {
+ // Convert deprecated language codes to modern ones.
+ // See https://developer.android.com/reference/java/util/Locale.html
+ switch (code) {
+ case "iw":
+ return "he"; // Hebrew
+ case "in":
+ return "id"; // Indonesian
+ case "ji":
+ return "yi"; // Yiddish
+ case "zh":
+ // If the user configures Android for Chinese (zh) we have no
way to know the intended
+ // dialect. We guess based on country. If the guess is
incorrect, the user must explicitly
+ // choose the dialect in the app settings.
+ return
isTraditionalChinesePredominantInCountry(Locale.getDefault().getCountry())
+ ?
AppLanguageLookUpTable.TRADITIONAL_CHINESE_LANGUAGE_CODE
+ :
AppLanguageLookUpTable.SIMPLIFIED_CHINESE_LANGUAGE_CODE;
+ default:
+ return code;
+ }
+ }
+
+ private static boolean isTraditionalChinesePredominantInCountry(@Nullable
String country) {
+ return TRADITIONAL_CHINESE_COUNTRY_CODES.contains(country);
+ }
+}
\ No newline at end of file
--
To view, visit https://gerrit.wikimedia.org/r/217978
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8d437b3941d17ab00d0912595a967ec59b6aa43e
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits