【轉】使用genstring和NSLocalizedString實現App文本的本地化

來源:互聯網
上載者:User

標籤:blog   java   c   ext   http   com   

原地址:http://www.cnblogs.com/U-tansuo/p/IOS_NSLocalizedString.html

iOS提供了簡便的方法來實現本地化,其中用的最多的就是NSLocalizedString。首先查看下NSLocalizedString是什麼:#define NSLocalizedString(key,comment)[[NSBundle mainBundle]localizedStringForKey:(key) value:@"" table:nil];這 是一個宏,本質上調用了函數localizedStringForKey:這樣,這個宏做的其實就是在當前bundle中尋找資源檔名 Localizable.strings中索引值key所指向的字串,這樣就不難理解還有諸如:NSLocalizedStringFromTable的 宏了。 

在不考慮本地化的情況下,外面如果在代碼中給一個Button定義title,一般會這樣寫:

btn.titleLabel.text = @"Example Button";當虛考慮本地化的問題時,把要顯示給使用者看的字串做如下修改:(對於內部使用的字串就用不著本地化了)btn.titileLabel.text = NSLocalizedString(@"btn_title",nil);NSLocalizedString是一個定義在NSBundle.h中的宏,氣用途是尋找當前系統語言對應的Localizable.strings檔案中的某個key的值。第一個參數是key的名字,第二個參數是對這個“索引值對”的注釋,在用genstrings工具產生Loclizable.strings檔案時會自動加上去。 到目前為止,外面還沒有產生Localizable.strings檔案,這個一個逆向的過程,也就是先寫好調用過程,再產生strings資源檔。當外面把所有的.m檔案都修改好以後,就該genstring工具了。1.啟動終端,進入工程所在的目錄2.建立兩個目錄,推薦放在資來源目錄下目錄名會作用到Localizable.strings檔案對應的語言,不能寫錯了。這裡zh-Hans指簡體中文,注意不能用zh.lproj表示。mkdir zh-Hans.lprojmkdir en.lproj3.產生Localizable.strings檔案genstrings -o zh-Hans.lproj *.mgenstrings -o en.lproj *.m-o<檔案夾>,指定產生的Localizable.strings檔案放置的目錄*.m,掃描所有的.m檔案,這裡支援的檔案還包括.h,.java等4.右鍵點擊工程的Resources目錄,選擇“New group”,添加兩個目錄zh-Hans.lproj和en.lproj5.在建立的group中添加剛剛產生的Loclizable.strings檔案6.最後在Localizable.strings檔案中,修改每個key所對應的內容,就可以了。 總結:1.在代碼裡用NSLocalizedString擷取要本地化的字串2.用genstrings掃描碼檔案,產生Localizable.strings,然後加到工程中。

聯繫我們

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