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

Reply via email to