iOS 國(guó)際化-多語(yǔ)言-本地化-語(yǔ)言切換

在使用微信等APP中,我們經(jīng)常會(huì)看到切換語(yǔ)言的功能,那么這個(gè)功能是怎么實(shí)現(xiàn)的呢,讓我們來(lái)一探究竟。

關(guān)鍵字:NSLocalizedString

NSLocalizedString.png

這是一個(gè)Objective-C自帶的宏,那么,他究竟是如何實(shí)現(xiàn)的呢,我們可以按住Command+鼠標(biāo)左鍵,給他來(lái)一槍。


NSLocalizedString的實(shí)現(xiàn).png

OK!通過(guò)這個(gè)這段代碼,我們可以得知NSLocalizedString這個(gè)宏,最終調(diào)用了
[NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil]
這樣的一個(gè)方法。

通過(guò)查看文檔和Dash:


Xocde注釋.png

Dash文檔.png

我們得出該方法的作用為:根據(jù)鍵和值返回特定的本地化的字符串。

至此,我們可以推斷出,這個(gè)方法會(huì)去特定的目錄或者文件中,通過(guò)鍵key去找到對(duì)應(yīng)值value,并返回。

APP國(guó)際化

1、在我們的項(xiàng)目中添加需要的語(yǔ)言(以中文和英文為例)

項(xiàng)目設(shè)置.png

2、在Xcode中Command+N新建一個(gè)String文件,命名必須為infoPlist

新建String文件.png

3、選中新建的infoPlist.Strings文件,在Xcode右側(cè)信息欄中選中Localize并添加語(yǔ)言(隨便選中那個(gè)都可以,這里我們Chinese)

image.png

這個(gè)操作完成后,我們會(huì)發(fā)現(xiàn)信息欄變成這樣了

image.png

把項(xiàng)目需要支持的語(yǔ)言前面的勾勾上。

再回到左側(cè)目錄,infoPlist.Strings下自動(dòng)生成了不同語(yǔ)言文件


項(xiàng)目目錄及文件.png

4、再對(duì)應(yīng)語(yǔ)言文件內(nèi)對(duì)照格式,寫(xiě)入不同語(yǔ)言下APP名

中文.png

英文.png
中文應(yīng)用名.png
英文應(yīng)用名.png

至此,APP名字國(guó)際化已經(jīng)完成。

應(yīng)用內(nèi)語(yǔ)言切換

1、新建語(yǔ)言Strings文件,由于我的項(xiàng)目只需要中文和英文,故我只創(chuàng)建了兩個(gè)Strings文件,更多語(yǔ)言請(qǐng)重復(fù)該操作

image.png

2、在Chinese.strings文件和English.strings文件中,以鍵值對(duì)的形式對(duì)內(nèi)容進(jìn)行編寫(xiě),如下圖

Chinese.strings文件內(nèi)容.png
English.strings文件內(nèi)容.png

3、根據(jù)對(duì)Objective-C自帶宏NSLocalizedString的分析和理解,我們可以按照我們的需求定義如下圖的宏
其中,參數(shù)key即你在strings文件中所使用的key(如上圖pay_succeed和pay_failed),參數(shù)table為查詢strings文件名字(如上圖Chinese和English)
PS:我項(xiàng)目是以[NSUserDefaults standardUserDefaults]存儲(chǔ)當(dāng)前語(yǔ)言的,請(qǐng)以你項(xiàng)目實(shí)際為準(zhǔn)!

image.png

4、至此,在項(xiàng)目中可以使用我們剛才自定義的宏獲取對(duì)應(yīng)的文本內(nèi)容了
在中文情況下,即[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]返回Chinese時(shí),會(huì)返回Chinese.strings文件內(nèi)對(duì)應(yīng)的文本
在中文情況下,即[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]返回English時(shí),會(huì)返回English.strings文件內(nèi)對(duì)應(yīng)的文本

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容