losion.liu@sikey.com.cn 8 月之前
父节点
当前提交
cde06c1cd6

+ 4 - 40
app/src/main/java/com/xplora/xpsettings/Activity/LanguageActivity.java

@@ -1,48 +1,24 @@
 package com.xplora.xpsettings.Activity;
 
-import android.content.Context;
-import android.content.Intent;
 import android.content.res.Configuration;
 import android.graphics.Color;
 import android.graphics.drawable.ColorDrawable;
-import android.icu.impl.LocaleIDParser;
-import android.icu.text.LocaleDisplayNames;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.LocaleList;
-import android.os.Looper;
-import android.os.Message;
-import android.os.PowerManager;
-import android.provider.Settings;
-import android.util.Log;
 import android.view.View;
 import android.widget.AdapterView;
-import android.widget.CompoundButton;
 import android.widget.ListView;
-import android.widget.Switch;
-
-import androidx.annotation.NonNull;
 
 import com.android.internal.app.LocaleHelper;
-import com.android.internal.app.LocalePicker;
-import com.android.internal.app.LocalePickerWithRegion;
-import com.android.internal.app.LocaleStore;
 import com.xplora.xpsettings.Adapter.BaseListAdapter;
-import com.xplora.xpsettings.Adapter.ListAdapter;
 import com.xplora.xpsettings.Model.BaseModel;
 import com.xplora.xpsettings.R;
 import com.xplora.xpsettings.Data.DataManager;
 import com.xplora.xpsettings.Utils.Constant;
-import com.xplora.xpsettings.Utils.Macros;
-import com.xplora.xpsettings.Utils.ToolsUtils;
+import com.xplora.xpsettings.Utils.ResUtils;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
 import java.util.Locale;
-import java.util.concurrent.atomic.AtomicInteger;
 
 
 public class LanguageActivity extends BaseActivity {
@@ -67,14 +43,8 @@ public class LanguageActivity extends BaseActivity {
         String currentLanguage = DataManager.getCurrentLanguage();
         for (String s : mLanguageList) {
             boolean isOn = s.trim().equals(currentLanguage.trim());
-            Locale locale;
-            String name = "";
-            if (s.equals("sr")) {
-                locale = new Locale.Builder().setLanguage("sr").setRegion("RS").setScript("latn").build();
-            } else {
-                locale = new Locale(s);
-            }
-            name = LocaleHelper.getDisplayName(locale, locale, true);
+            Locale locale = ResUtils.getLocaleName(s);
+            String name = LocaleHelper.getDisplayName(locale, locale, true);
             int endIndex = name.indexOf("(");
             if (endIndex >= 0) {
                 name = name.substring(0, endIndex);
@@ -116,13 +86,7 @@ public class LanguageActivity extends BaseActivity {
         if (position >= mLanguageList.size())
             return;
         String language = mLanguageList.get(position);
-
-        Locale locale;
-        if (language.equals("sr")) {
-            locale = new Locale.Builder().setLanguage("sr").setRegion("RS").setScript("latn").build();
-        } else {
-            locale = new Locale(language);
-        }
+        Locale locale = ResUtils.getLocaleName(language);
         updateLanguage(locale);
         DataManager.setChangeLanguageStatus(1);
     }

+ 19 - 0
app/src/main/java/com/xplora/xpsettings/Utils/ResUtils.java

@@ -1,6 +1,8 @@
 package com.xplora.xpsettings.Utils;
 import android.content.Context;
 
+import java.util.Locale;
+
 public class ResUtils {
     private static Context mSaveContext = null;
     private static String mSavePackageName = null;
@@ -64,6 +66,23 @@ public class ResUtils {
         return context.getResources().getIdentifier(imageName, defType, packageName);
     }
 
+    public static Locale getLocaleName(String language) {
+        Locale locale;
+        if (language.equals("sr")) {
+            locale = new Locale.Builder().setLanguage("sr").setRegion("RS").setScript("latn").build();
+        } else {
+            int index = language.indexOf('-');
+            if (index == -1) {
+                locale = new Locale(language);
+            } else {
+                String lan = language.substring(0, index);
+                String reg = language.substring(index+1, language.length());
+                locale = new Locale.Builder().setLanguage(lan).setRegion(reg).build();
+            }
+        }
+        return locale;
+    }
+
     /**
      * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
      */