前言
當我們的應用僅僅面向國內使用者群,一般僅支援一種語言--中文就可以了。當面向國外使用者時就需要進行國際化了,不僅僅是語言的轉變,也可能包括設計風格,頁面布局、互動效果的轉變,如微信,微博,qq這類應用都有著切換語言的功能。
最近因為工作的原因,遇到個需要在應用內部設定語言的需求,預設使用系統設定的語言,如果使用者在app內設定了別的語言,以後則按照新設定的語言顯示介面。
ios確定應用的語言
1.ios首先搜尋使用者的語言偏好設定(設定-通用-語言與地區)
2.檢測你的應用是否支援使用者的語言,先用偏好設定的第乙個語言,檢測應用是否包含該語言對應的資料夾(字尾是.l檔名部分,英語為en,中文簡體為zh-hans,日語為ja)如果存在,那就是該語言,否則用偏好設定第二個語言來匹配。重複該過程。
3.一旦系統為應用確定了語言,對應的.lproj資料夾就會用作本地化資源。
於是,寫了個新輪子solocalization (本地**),希望大家喜歡,其實**很簡單,有興趣的可以直接去讀源**,有補充的可以直接向我提交 pull request。下面話不多說了,來一起看看詳細的介紹吧。
方法如下:
1.建立本地化檔案。
建立本地化字串檔案,檔名可以是預設的 infoplist.strings,也可以是別的,為這個檔案設定好要支援的語言及內容。
2.匯入 solocalization。
3.配置 solocalization。
設定支援的語言及預設語言,當系統設定的語言不屬於支援的語言時會使用預設語言。
[solocalization configsupportregions:@[solocalizationenglish, solocalizationsimplifiedchinese] fallbackregion:solocalizationenglish];
4.設定 uikit 物件。
為 uikit 物件設定合適的屬性,像下面這樣簡單,而且這樣設定後,當語言切換時,這些 uikit 物件的文字內容會自動變為新設定的語言,不需要任何額外處理。
uibarbuttonitem *change = [[uibarbuttonitem alloc]initwithtitle:@"" style:uibarbuttonitemstyleplain target:self action:@selector(changelanguage:)];
// 這裡的 @"se程式設計客棧tting" 就是 strings 檔案中對應的那個 key,下同
change.sol_title = @"setting";
self.n**igationitem.oqnikrightbarbuttonitem = change;
self.label.sol_text = @"label";
[self.button sol_settitle:@"button" forstate:uicontrolstatenormal];
self.textfield.sol_placeholder = @"textfield placeholder";
self.n**igationitem.sol_title = @"title";
對於 solocalization 暫不支援切換語言後自動修改文字內容的 uikit 物件,可以這樣獲取需要的本地化字串:
// 其中 「title」 為 strings 檔案中對應的 key,「infoplist」是本地化字串檔名
nsstring *localizedstring = solocalizedstringfromtable(@"title", @"infoplist");
5.修改應用內使用的語言
// to use english
[solocalization sharedlocalization].region = solocalizationenglish;
// to use 簡體中文
[solocalization sharedlocalization].region = solocalizationsimplifiedchinese;
6.自定義的本地化字串檔名
solocalization 提供的 api 中,預設使用的本地化字元程式設計客棧串檔名為 infoplist.strings 檔案,如oqnik果使用其他檔名(比如使用這個檔名:local.strings),如下即可:
// 對於支援的 uikit 物件
label.sol_table = @"local";
// 使用 solocalizedstringfromtable 時
nsstring *localizedstring = solocalizedstringfromtable(@"title", @"local");
總結本文標題: ios實現應用內切換本地化語言的方法例項
本文位址:
iOS 語言本地化
建立localizable.strings檔案 localizable.strings新增支援語言 編寫兩個檔案中的字段 通過key value方式 通過 nslocalizedstring 相應字段 nil 獲取本地化之後的檔案。版的本地化語言實現 storyboard版的本地化語言實現 得到當前...
IOS應用本地化小結
幾經艱辛,專案終於到達尾聲,在上週給遊戲增加了簡體中文的本地化支援,這次本地化的內容主要有應用的名稱 字串和資源,ios在本地化的支援還是很友好的,最後來個簡單的小結吧。因專案是在xcode4上開發,本文的操作也是基於xcode4,在xcode3上,部分操作應該會有所不同。開啟專案的 info 屬性...
iOS 字串本地化與應用名本地化
新建infoplist.strings檔案 在file inspector面板中 新增 新增english和base兩個版本 新增乙個鍵值對cfbundledisplayname programenglishname 在 base 版本中 新增cfbundledisplayname 程式中文名 類似...