國際化
1. 記得我在《我的第乙個android 程式,基於intent 的元件互動機制 》在分析r 檔案和文章最後,有透露過這種機制的原理和好處。
很大程度上,為什麼我們能如此方便的實現國際化、解析度匹配等?
主要就是得益於android 中這種獨特的資源管理方式。程式設計師的**可以不直接和資源發生關係。android 中,我們通常通過r 檔案提供的索引來間接的引用某乙個資源。而如何維護資源索引和真正的資源之間的關係,這個活,卻是android系統來做的。
這裡面就可以大作文章了不是麼?
我說過,最了解使用者手機的,不是使用者也不是程式設計師,而是作業系統,是android。它最了解使用者當前使用的是什麼語言,最了解使用者當前手機的解析度是多少,了解電量,了解記憶體情況...等等。
既然你自個的情況這麼了解,為什麼不自己把所有能完成的事情都做了?不麻煩程式設計師了好吧?好的,所以android 在這方面做得非常優秀。
基於這個角度,我們要轉換的觀念為:有可能,r 檔案中的索引,並非是和資源一對一的。例如我們以前認為它就一定是對應了一張,對應了乙個字串,對應了乙個布局檔案。
而很可能,android 其實會根據使用者當前使用的環境對應幾套方案:例如本文所講的主題,從國際化角度,可能對應中文環境方案,英文環境方案?那麼,這時候r 檔案對應的這個資源便不確定起來,當我們通過r 檔案呼叫乙個資源顯示在視窗上時,android 作業系統會自動根據使用者當前的環境,而選用最合適的(這個挑選過程卻是透明的)。
程式設計師可以干預的是:英文環境到底對應哪套方案?中文環境對應到底哪套方案?
ok。這就簡單了。
2. android 中要實現國際化比較簡單。
字串國際化:只要在res 資料夾下新建對應語言的values 資料夾就好了,
如,英語環境下的,資料夾命名為:values-en
美國英文環境:values-en-rus
中文環境為:values-zh
大陸地區中文環境:
在eclipse 下新建android 專案時,會在res 目錄下自動建立乙個預設語言環境的資料夾: values
當某乙個資源沒有在語言環境的對應的資源集合中找到時,就會使用values 下的資源。
若某乙個語言環境沒有在專案中定義語言環境,那麼也會使用values 下的資源。
3. 國際化
同理。在res 下新建drawable-zh 資料夾,存放中文環境下的
新建drawable-en 作為英語環境下的
在eclipse 下新建android 專案時,會在res 目錄下自動建立三個預設語言環境的資料夾:
drawable-hdpi
drawable-ldpi
drawable-mdpi
分別用於存放高、中。低解析度的。android 系統會根據手機的解析度,而自動從不同的對應的某乙個資料夾下去載入。
同樣,它們也可以國際化,命名規則如:
drawable-zh-hdpi
drawable-en-ldpi
drawable-en-rus-mdpi
使用,在xml 中需要使用到的地方用表示式:@drawable/icon
**中使用:r.drawable.icon。因為資源同樣也會在r 檔案中生成乙個索引。
Qt之國際化
qt國際化屬於qt高階中的一部分,本想著放到後面來說,上節剛好介紹了qt linguist,趁熱打鐵就一起了解下。對於絕大多數的應用程式,在剛啟動時,需要載入預設的語言 或最後一次設定的語言 在使用的過程中,我們也不需要重啟應用程式而實現語言的動態切換。這樣的話,易用性就非常好了。要進行多語言的切換...
struts2學習之 國際化
struts2的國際化按如下步驟進行 1.讓系統載入國際化資源檔案 2.輸出國際化 1.檢視頁面的國際化 在jsp頁面中指定國際化資源需要借助struts2的另乙個標籤 如果把標籤作為標籤的父標籤,則會直接載入標籤裡指定的國際化資源檔案 如果把標籤當成表單標籤的父標籤,則表單標籤的key屬性將會從國...
Go基礎之國際化字元 rune
unicode,utf 8,utf 16完整的說明請參考wiki unicode,utf 8,utf 16 用比較簡單的話來說就是,unicode定義了所有可以用來表示字元的數值集合 稱之為code point utf 8和utf 16等utf標準定義了這些數值和字元的對映關係。在utf8編碼中,英...