Android多語言支持實現



一.AndroidMianFest.xml中配置

                <receiver android:name="cn.xm.antrou.broadcast.LanBroadcast">
                        <intent-filter>
                                <action android:name="cn.xm.broadcast.language" />
                        </intent-filter>
                </receiver>



二.設置選中的語言

        Configuration config = resources.getConfiguration();
        DisplayMetrics dm = resources .getDisplayMetrics();
        config.locale = locale;
        resources.updateConfiguration(config, dm);
        this.finish()//設置語言後關閉當前Activity


上面的local參數就是設置語言的,比如:Locale.SIMPLIFIED_CHINESE  Locale.ENGLISH,詳細信息你可以查看Local類,其實這裏設置後軟件語言已經變了,不過需要重新進入該界面,所以會用到通知來重啓啓動當前界面



三.發送通知

               Intent intent = new Intent("cn.xm.broadcast.language");
               sendBroadcast(intent);


注意上面構造Intent參數:cn.xm.broadcast.language與AndroidMainfest.xml中的配置是一致的,這裏發出通知後,系統會在你配置的信息中找到匹配項後執行,android:name指定的類,這個類需要實現 BroadcastReceiver ,並重寫 onReceive()在這個方法裏面去重啓你剛剛的設置語言的界面



第一步:將應用中的所有需要顯示的字符串,如菜單,標題、文本,以及提示信息等都定義到values/strings.xml之中,注意name屬性不能有重複
第二步:將應用中的字符串替換成從strings.xml中引用的形式,如 getResources().getString(R.string.appname)
第三步:真正的多語言設置了,需要新建一個xml文件,會顯示如圖畫面!




需要注意的地方:

1. 需要選中”values“選項
2. 需要設置”Region“和”Language“兩個屬性(注:上圖中這兩個屬性已經設置,所以左邊列表中已不可見),分別指代”區域“與”語言“,通過畫面中的右箭頭添加,對於英語支持,”Region“和”Language“分別對應"us"和"en"

設置完成點擊”Finsh“之後會在res/values目錄下發現多了個目錄:values-en-rUS,然後將對應的strings.xml內容翻譯成英文存儲在該目錄下的strings.xml即可,注意name屬性不要更改。

再添加其他更多語言支持,重複上面的第三步即可(如設置繁體:”Region“和”Language“分別對應"tw"和"zh")!


參考鏈接:
www.cnblogs.com/wuyunan/archive/2009/09/16/1567960.html

還有一個關於動態替換strings.xml中變量的有用鏈接:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章