級別:★★☆☆☆
標籤:「iOS 本地化」「Storyboard」「Xib」「圖片」「應用顯示名稱」
做者: WYW
審校: QiShare團隊php
最近項目須要作 「本地化」,「本地化」 是讓app支持多種語言的過程。附:官方文檔html
我使用storyboard結合代碼建立了以下的一個Demo(QiShareLocalization)。git
簡體中文環境: 啓動頁顯示不符合簡體中文 github
啓動頁顯示和預期效果相符(zh-Hans
)
英文環境: bash
PROJECT -> Info -> Localizations
添加簡體中文(zh-Hans表明簡體中文)添加簡體中文: 微信
Reference Language: app
若是再次添加其餘本地化語言,注意File Types可選: 佈局
勾選做用:把文本從.storyboard
和.xib
文件中分離出來動畫
Use Base Internationalization
,那麼在添加本地化語言的時候,會建立多個相應語言的storyboard
、xib
,那麼咱們還能夠調整不一樣語言下的界面佈局及顯示內容。Use Base Internationalization
,那麼在添加語言的時候,會把當前的storyboard
、xib
中的文本提取出來,咱們只須要在相應的新增的.strings
文件中改變對應的文本便可。1.若是不選中「Use Base Internationalization」操做步驟及生成的文件, 以下所示:ui
生成的文件:
而後咱們能夠調整.strings
中的文件或者是調整相應語言的Storyboard均可以達到本地化Storyboard的效果
通過上述操做,能夠調整.strings
中的文件或者是調整相應語言的Storyboard
均可以達到本地化Storyboard
的效果。
可是對於啓動的Storyboard,我作調整以後,並無起到效果。後來查到,其實能夠建立不一樣本地化語言相應的啓動Storyboard,經過修改InfoPlist.strings
(注:這部份內容後邊會提到)中的UILaunchStoryboardName = "LaunchScreen_zhHans";
指定對應的啓動的Storyboard便可作到本地化啓動Storyboard的效果。參考博客
Info.plist
中添加應用顯示名及版權信息鍵值對。<key>NSHumanReadableCopyright</key>
<string>Copyright © 2018-2108 QiShare.</string>
<key>CFBundleDisplayName</key>
<string>$(PRODUCT_NAME)</string>
複製代碼
InfoPlist.strings
,示意圖以下:修改簡體中文的InfoPlist.strings
的文本
修改英文的InfoPlist.strings
的文本
項目中代碼使用:
// 應用顯示名
[[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:@"CFBundleDisplayName"];
// 版權信息
[[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:@"NSHumanReadableCopyright"];
複製代碼
簡體中文輸出內容: 奇分享本地化 版權 © 2018-2108 奇分享.
英文輸出內容: QiShare Localization Copyright © 2018-2108 QiShare.
對於上文提到指定相應的本地化啓動Storyboard,能夠看下列的指定方式:
至於查看Info.plist
文件中的key
能夠經過下圖Show Raw Keys/Values
的方式:
本地化圖片資源:
添加QiShareLogo簡體本地化支持:
選中以支持QiShareLogo英文本地化支持:
選中後效果:
選中相應的圖片Show In Finder
更改英文的本地化圖片:
項目中獲取對應的圖片使用:
[UIImage imageNamed:@"QiShareLogo"];
複製代碼
或
[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"QiShareLogo" ofType:@"png"]];
複製代碼
對於圖片的本地化,我目前分享的不包括Assets.xcassets
中的圖片資源,我當前還沒找到比較合適的方式。 看了下其餘人分享的文章,有經過像本地化非IB的文本(下篇文章分享)的方式來指定不一樣的語言環境加載不一樣的圖片。 至於xib的本地化,此次先不分享細節了,若是作了本地化以後,後期又新增的xib,xib的本地化,能夠參考圖片的本地化,是同樣的。
好比:某xib,本地化前
好比:某xib,本地化後
工程源碼:GitHub地址
關注咱們的途徑有:
QiShare(簡書)
QiShare(掘金)
QiShare(知乎)
QiShare(GitHub)
QiShare(CocoaChina)
QiShare(StackOverflow)
QiShare(微信公衆號)
推薦文章:
iOS 文件操做簡介
iOS 關鍵幀動畫
iOS 小遊戲項目——數字速算升級版
iOS 小遊戲項目——你話我猜升級版
奇舞週刊