iOS實現應用內切換本地化語言的方法例項

2022-09-21 22:54:12 字數 2370 閱讀 4825

前言

當我們的應用僅僅面向國內使用者群,一般僅支援一種語言--中文就可以了。當面向國外使用者時就需要進行國際化了,不僅僅是語言的轉變,也可能包括設計風格,頁面布局、互動效果的轉變,如微信,微博,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 程式中文名 類似...