Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 史上最強多語言國際化,不僅第一次會跟隨系統,而且會保存用戶的語言設置

Android 史上最強多語言國際化,不僅第一次會跟隨系統,而且會保存用戶的語言設置

編輯:關於Android編程

1.我等屌絲喜歡簡單粗暴,首先來一幅圖

\

哥們我是大陸人,當然默認語言是 中文簡體,但是我剛剛切換成了繁體了

 

2.看下配置文件,按照這個格式 ,看圖吧,簡單粗暴,別問為什麼,你就按照這樣寫,如果你想知道為什麼這樣寫,以及詳細的步驟,請百度 : Android 多語言

阿拉伯語 ar, 德語 de ,英語 en ,西班牙 es, 法語 fr ,日語 ja ,韓語 ko ,葡萄牙 pt , 我大天朝 和 港澳台 就略過了,不解釋,

\

 

 

3.注意下所有語言配置文件 string.xml 裡面的文本格式是一樣的,只是語言不同 ,name 是相同的,對應的值不同

\

 

 

4.如何在引用這些鳥東西了,是個Android開發人員都會。。。 還是截個圖吧,

\

 

 

5.進入史上最牛逼的環節, 第一次進入APP

首先引進 公共方法,上代碼

 

public static final String SYSTEM_LOCALE_LANGUAGUE_STRING = system_locale_languague_string;
	public static final String SYSTEM_LOCALE_COUNTRY_STRING = system_locale_country_string;
	
	public static final String ENAME[]={zh,en,fr,de,ja,ko,es,pt,ar};


public static Locale getSystemLacale(Context context) { SharedPreferences sharedPreferences = getCurrentSharedPreferences(context); String str = sharedPreferences.getString(SYSTEM_LOCALE_LANGUAGUE_STRING, no_languague); String strc = sharedPreferences.getString(SYSTEM_LOCALE_COUNTRY_STRING, ); if (no_languague.equals(str)) { Locale l=Locale.getDefault(); String def=en; for (int i = 0; i < ENAME.length; i++) { if (ENAME[i].equals(l.getLanguage())) { def=ENAME[i]; break; } } Locale nLocale=null; if (zh.equals(def)) { if (CN.equals(l.getCountry())) { nLocale=Locale.SIMPLIFIED_CHINESE; }else { nLocale=Locale.TRADITIONAL_CHINESE; } }else { nLocale=new Locale(def); } setSystemLacate(context, nLocale); return nLocale; } return new Locale(str,strc); } public static void setSystemLacale(Context context,Locale locale){ SharedPreferences sharedPreferences = getCurrentSharedPreferences(context); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(SYSTEM_LOCALE_LANGUAGUE_STRING, locale.getLanguage()); editor.putString(SYSTEM_LOCALE_COUNTRY_STRING, locale.getCountry()); editor.commit(); }


 



不用我多解釋吧,獲取系統默認的 Lacale ,為什麼這樣寫了? 我就不解釋了, 如果你有更好的方法,大神你就在下面評論吧!

 

 

加入改變語言的方法

 

private void reloadLanguageAction(){
		Locale locale = StaticFunction.getSystemLacate(MainActivity.this);
		Locale.setDefault(locale);  
        Configuration config = new Configuration();  
        config.locale = locale;  
       getBaseContext().getResources().updateConfiguration(config, null);
       getBaseContext().getResources().flushLayoutCache();
       
	}

 

 

在哪裡調用了 ? 這個問題跟 學挖掘機哪家強是同一個類型的問題。 上圖

\
 

 

 

 

 

6.語言切換,也就是 你看到的第一張圖,這裡面的功能怎麼搞

\

 

為什麼要直接跳到首頁, 不跳行不行了 ? iOS可以不跳,iOS可以發送一個通知,全局一下子改變了, Android我最早的時候嘗試過使用觀察者模式,蛋碎了一地。。。。如果你使用觀察者模式做到了我這種效果,請評論吧。。

2015年08月12日00:36:48 ,擦嘞, 苦逼的程序猿明天還要上班

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved