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

來源:互聯網
上載者:User

如題:
看了下,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系統沒有對越南語寫響應的國際化資源檔,你可以自己寫應用測試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.