配置多國語及預設語言

來源:互聯網
上載者:User
一、先搞清4個系統屬性

 

唯讀預設語言

[ro.product.locale.language]:[en]

[ro.product.locale.region]: [US]

 

使用者改變語言設定後修改的值

[persist.sys.language]: [zh]

[persist.sys.country]: [CN]

這兩個會以檔案的形式存在於檔案系統的/data/property目錄下(其實每個新設定的屬性都會以屬性名稱為檔案名稱,以屬性值為內容存在這個目錄下),如果同名的屬性即存在於/system/build.prop中,又存在於/data/property下,那末根據屬性的讀取順序

同名覆蓋的原則,最終的value是在/data/property中的。

 

可以在手機上改變語言設定後,用adb shell getprop命令查看系統屬性,每次改變語言設定

persist.sys.language和 persist.sys.country都會相應改為所設定的語言,而

ro.product.locale.language和ro.product.locale.region是無法改變的。

 

 

二、我的修改方法

 

     我設定成功是在device/qcom/msm7627_qrd/system.prop
中加入:

persist.sys.timezone=Asia/Shanghai
persist.sys.language=zh
persist.sys.country=CN

重新開關機,恢復出廠預設值均是正確的。

system.prop的內容在編譯過程中會拷貝到system.img 的/system/build.prop中(至於system.prop是如何拷貝進去的,就不清楚了,只看到google建議

vendor在product下用這個檔案來設定自己需要的system property),同時會寫入到out/target/product/msm7627_qrd/recovery/root/default.prop中,所以恢復出廠預設值才成功。

ps:產品下各個mk檔案作用可以參考

http://www.kandroid.org/android_pdk/build_new_device.html


關於語言的配置有很多方法,如http://stackoverflow.com/questions/5814754/how-to-set-default-ime-in-porting-android ,不過這也許是錯誤的^_^

 

三、關於時區

 時區在Android中是通過Bionic C Library來管理的,具體可見

   Timezone management:

       The name of the current timezone is taken from the TZ environment variable, if defined. Otherwise, the system property named 'persist.sys.timezone' is checked instead.
The zoneinfo timezone database and index files are located under directory /system/usr/share/zoneinfo, instead of the more Posix-compliant path of /usr/share/zoneinfo.

Timezone的WIKI:http://en.wikipedia.org/wiki/List_of_zoneinfo_timezones.BTW:我的錯誤修改方法

    1.在system/core/rootdir/etc/init.qcom.rc中加入

          setprop persist.sys.timezone  Asia/Shanghai

      結果:雖然開機可以在/data/property下產生了persist.sys.timezone檔案,但是每次開機都會重寫該檔案,使timezone恢複回去。


    2.在device/qcom/msm7627_qrd/msm7627_qrd.mk中加入

       ADDITIONAL_BUILD_PROPERTIES += persist.sys.timezone=Asia/Shanghai

     結果:也可以在/data/property下產生persist.sys.timezone檔案,設定改變後,重新開機也不會被覆蓋掉,但是一旦恢復出廠預設值,timezone就成了預設的格林尼治時區>_<!~!

  ADDITIONAL_BUILD_PROPERTIES:指定(增加)額外的屬性檔案;

 

四、小結      一般設定屬性的終極目標是要編譯後出現在system/build.prop中,如果編譯後在此檔案中有你需要的屬性,應該就是OK的。此檔案的來源暫時只看到兩部分,一是buildinfo.sh,另一個就是system.prop了,至於system/build.prop的解析源碼就是在system/core/init/property_service.c了。五、其他參考

1.關於語言的修改很詳細了

http://blog.csdn.net/dahailantian1/archive/2011/01/16/6144676.aspx

   不過此文中將屬性加入到這個變數中PRODUCT_PROPERTY_OVERRIDES := /

             persist.sys.language=zh /
             persist.sys.country=CN ,沒有試過是否OK!   

2.深入理解Android的System property:http://blog.csdn.net/tekkamanitachi/archive/2009/06/18/4280982.aspx

六、補充

device/qcom/msm7627_qrd/system.prop中類似的修改還有

#added  :set default ring

ro.config.ringtone=Noises1.ogg

ro.config.notification_sound=Tinkerbell.ogg

#added by yue  :LCD is 480x800 ,這樣設定後表徵圖才會正常顯示否則會非常小

ro.sf.lcd_density=240


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.