如何向android的setting語言列表中添加一門語言


如題:
看了下,android2.2系統有越南語的字庫,所以支持越南語,但setting中語言列表里沒有越南語選項,起初我在LocalePicker.java的onCreate方法的133行做了如下修改:

  1. mLocales = new Loc[finalSize+1];
  2.         for (int i = 0; i < finalSize ; i++) {
  3.             mLocales[i] = preprocess[i];
  4.         }
  5.         Locale temp = new Locale("vi", "VN");//vi是越南語
  6.         mLocales[finalSize] = new Loc(toTitleCase(getDisplayName(temp)), temp);
  7.         Arrays.sort(mLocales);
復制代碼

重新編譯后,語言列表里有了越南語,但點擊后系統語言還是默認的英文,也就是說系統語言沒有更改成功,我再看了下/data/property/目錄下關於語言和國家的兩個屬性文件都是修改成功了的,再繼續往下跟代碼,但沒有所獲,google了一下,搜到了一篇關於android2.1 架構解析 之語言定制的帖子(http://hi.baidu.com/gigatron/blo ... c8ab20843bd0e24445d,有興趣的朋友可以看下) ,里面說語言選擇列表在external/icu4c/stubdata/Android.mk中配置,我在這里面添加了越南語,最后返回上一級,查看readme.txt,官方已經給出說明,改動后需要將語言配置的txt轉成dat,可是在run icu_dat_generator.py  4.2這個命令時 一直報錯,到現在還沒弄好,希望有涉及過這方面的朋友分享下經驗,謝謝!
問題已經解決,解決步驟開始寫在回復里,現在直接寫到該位置吧:


第一種:修改配置文件
                   位置:build/target/product/languages_full.mk| languages_small.mk,這兩個文件里頭,有PRODUCT_LOCALES := en_US en_GB fr_FR it_IT es_ES es_US 這樣的片段,其實setting中語言選擇列表的數據源頭就來源於此,既然找到了源頭,那只要在之后加上我們想要的語言即可,比如要加越南語 只要在后面加上 “vi_VN”即可,但細心的同學打開這兩個文件比較的時候會發現一個問題:
            里面都有PRODUCT_LOCALES :=這樣的片段,只是languages_small.mk的語言要比前者少些,聰明,這就是答案,從命名上也可發現一個full一個small,當我們不需要更多的語言時候,那languages_small.mk里面的語言就可以滿足,而且語言少,生成的image所占用的空間也會相對小些,沒驗證過哈,只是根據同目錄下full.mk里的注釋“Get a list of languages. We use the small list to save space on smaller devices.”推測的。
        好了,接下來,會有一個問題就是在哪個地方去設置full還是small呢?剛提到一個full.mk的文件,這里面有這樣的片段:$(call inherit-product, build/target/product/languages_small.mk),后者路徑就是我們要設置的地方。好了,改好后,得整個make下,這個得花些時間,好多模塊都是重新編譯。
第二種:編碼方式修改
   Android里一個listview會對應一個數據數組,那我們只需在這個數組里按格式添加我們所需要的數據就行了,我們的目標是com.android.settings.LocalePicker.java,在該文件133行位置做如下修改:
        mLocales = new Loc[finalSize+1];
        for (int i = 0; i < finalSize ; i++) {
            mLocales = preprocess;
        }
        Locale temp = new Locale("vi", "VN");
        mLocales[finalSize] =new Loc(toTitleCase(temp.getDisplayLanguage(temp)), temp);
    這步做完后setting的語言列表里就有了越南語了,但點擊越南語后,界面沒發現有什么變化,那是因為android系統沒有對越南語寫響應的國際化資源文件,你可以自己寫應用測試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM