iOS開發(fā) App本地化(開發(fā)日記)

簡(jiǎn)書新人,寫的不好的地方,還請(qǐng)指出。

前期準(zhǔn)備

先點(diǎn)擊工程->PROJECT->Localizations添加你要本地化的語言

picture1.png

如果是已經(jīng)本地化過的項(xiàng)目,這里添加之后會(huì)彈出

picture2.png

Resource File是需要本地化為你剛剛選擇的語言的項(xiàng)目,Reference Language是本地化文件生成時(shí)使用的模板,一般默認(rèn)即可。

1,App名稱(以我的Xcode9.2為例)

點(diǎn)擊工程->TARGETS->General

picture3.png

會(huì)看到如下界面,在Display Name一項(xiàng)填寫你的App名稱(中英文都可),不填可能會(huì)導(dǎo)致編譯不通過,填寫完成之后,Xcode會(huì)自動(dòng)在工程的info.plist里面生成此字段。

此后要在工程目錄下新建一個(gè)strings文件

picture4.png

并命名為InfoPlist(不要問我為什么)

picture5.png

點(diǎn)擊該文件,在Xcode最右邊會(huì)出現(xiàn)此界面

picture6.png

點(diǎn)擊Localize...按鈕

picture7.png

點(diǎn)擊Localize,本地化此語言,一般默認(rèn)即可。完成之后剛才的Localize...按鈕位置的地方會(huì)變成這樣

picture8.png

勾選你要本地化的語言即可。

之后文件就變成了這種狀態(tài),包含各種語言,應(yīng)用安裝時(shí)或者系統(tǒng)語言切換時(shí)會(huì)自動(dòng)加載各語言文件,來設(shè)置不同語言的App名稱

picture9.png

選中一個(gè)

picture10.png
picture11.png

這里用到了CFBundleDisplayName這個(gè)key,這個(gè)key是設(shè)置App名稱的,按照此方法設(shè)置好對(duì)應(yīng)語言App名稱即可(這里和開頭設(shè)置的Display Name字段不沖突,如果這里設(shè)置的話,就會(huì)按照這里的來顯示)。

2,本地化圖片

(1)直接本地化

大致與上面的一樣,選中需要本地化的文件,點(diǎn)擊Localize...按鈕,勾選你需要本地化的語言即可。

之后就變成了這樣

picture12.png

注:Assets.xcassets里面的圖片不能直接本地化

然后右鍵點(diǎn)擊文件

picture13.png

去到工程目錄下,

picture14.png

對(duì)應(yīng)的語言文件夾 下,復(fù)制替換 對(duì)應(yīng)圖片的對(duì)應(yīng)語言版本 就好了,可以看到此時(shí)這個(gè)圖片現(xiàn)在是在en 英文語言文件夾下

那么我們就把他替換為 英文版圖片 就好了,同理, 中文 或者 其他語言版本的圖片 的步驟一樣。

(2)間接本地化

請(qǐng)看文末

3,本地化字符串

和本地化App名稱一樣,先創(chuàng)建一個(gè)strings文件,并命名為Localizable(還是不要問我為什么)

接下來選中文件,點(diǎn)擊Localize...按鈕,勾選你要本地化的語言

picture15.png

然后可以在里面以key=value的形式添加一項(xiàng)

picture16.png
picture17.png

在你的代碼里面,找到需要本地化的字符串,加上NSLocalizedString()

NSString *title = NSLocalizedString(@"viewVC_title", nil);
picture18.png

這樣title的值在英文環(huán)境下顯示為hahaha

中文簡(jiǎn)體環(huán)境下顯示為哈哈哈

注:此NSLocalizedString()宏的返回值為NSString類型,因此可以直接當(dāng)做NSString*對(duì)象來使用,如

self.title = NSLocalizedString(@"viewVC_title", nil);
[button setTitle:NSLocalizedString(@"viewVC_buttontitle", nil) forState:UIControlStateNormal];
picture19.png
picture20.png

這種方法一般需要來回切換文件一行一行的手動(dòng)添加,下面介紹一種相對(duì)來說簡(jiǎn)單一些的方法

首先把需要本地化的字符串按照下面的形式全部包裝起來,第一個(gè)參數(shù)是key,第二個(gè)參數(shù)是注釋,注意是注釋,也就是說你之后要是看到這個(gè)注釋,你就知道這個(gè)字符串是 在哪里用到的, 怎么賦值等等。

NSLocalizedString(@"viewVC_title", "哈哈哈");
picture21.png

選中工程

picture22.png
picture23.png

選擇好導(dǎo)出的目錄類型(這里我們選擇development language only也就是英文語言),導(dǎo)出之后找到導(dǎo)出的文件

picture24.png

是一個(gè).xliff的文件,右鍵選擇打開方式,選擇Xcode打開它

picture25.png
picture26.png

這個(gè)文件是一個(gè)xml的形式,可以看到有三個(gè)<file>標(biāo)簽,

我們先刪除掉暫時(shí)用不到的兩個(gè),變成了下面這樣

picture27.png

因?yàn)檫@個(gè)是我們導(dǎo)出英文版翻譯,可以看到source-languageen,也就是這個(gè)導(dǎo)出的語言包的源語言英文,導(dǎo)入時(shí)要加上目標(biāo)語言target-language="en"

picture28.png

之后對(duì)<body>標(biāo)簽里面的內(nèi)容進(jìn)行修改,增加一個(gè)<target>標(biāo)簽,內(nèi)容填寫英文翻譯

picture29.png

現(xiàn)在我們導(dǎo)入看看效果,同樣選中工程

picture30.png
picture31.png
picture32.png

導(dǎo)入完成

picture33.png

這樣就完成了英文語言導(dǎo)入。接下來我們來導(dǎo)出 中文翻譯

picture34.png
picture35.png
picture36.png

選中Xcode打開來看看

picture37.png
picture38.png

刪除掉暫時(shí)用不到的兩個(gè)<file>

picture39.png

然后我們加上<target>標(biāo)簽,填上中文翻譯

picture40.png

然后保存導(dǎo)入

picture41.png

就ok啦,同理,其它語言也和 中文 翻譯的方法一樣的。

最后我們來介紹下圖片的 間接本地化,就是把 圖片名字 當(dāng)做 字符串 來進(jìn)行本地化,

[button setImage:[UIImage imageNamed:NSLocalizedString(@"viewVC_buttonimagename", @"buttonimage")] forState:UIControlStateNormal];
picture42.png
picture43.png
picture44.png

注:圖片名字一定要寫對(duì)。

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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