簡介:語言本地化酪碘,又叫做語言國際化朋譬。是指根據(jù)用戶操作系統(tǒng)的語言設置,自動將應用程序的語言設置為和用戶操作系統(tǒng)語言一致的語言兴垦。往往一些應用程序需要提供給多個國家的人群使用徙赢,或者一個國家有多種語言,這就要求應用程序所展示的文字探越、圖片等信息狡赐,能夠讓講不同語言的用戶讀懂、看懂钦幔。進而提出為同一個應用程序適配多種語言枕屉,也即是國際化。語言國際化之所以又叫做語言本地化鲤氢,這是站在每個用戶的角度而言的搀擂,是指能夠讓用戶本地、本土人群能夠看懂的語言信息卷玉,顧名思義哨颂,語言本地化。其實語言本地化 == 語言國際化相种!
配置需要國際化的語言
配置需要國際化的語言威恼,這也是國際化之前的準備工作,無論我們是國際化App名稱蚂子、代碼中的字符串沃测、圖片、還是storyboard和xib食茎,都需要進行這一步的準備工作(一個項目中需要且僅需要配置一次)蒂破。
1. 選中project->Info->Localizations,然后點擊”+”别渔,添加需要國際化/本地化的語言附迷。英文國際化是工程建立時默認添加的,此處以添加簡體中文為例哎媚,如下圖(默認需要勾選Use Base Internationalization):
彈出如下對話框喇伯,直接點擊finish,如下圖:
添加效果圖如下:
備注:“zh-Hans”和“zh-Hant”是簡體中文和繁體中文的縮寫拨与。這是標準的縮寫稻据。H可大寫也可小寫÷蛐”en”是英語的縮寫捻悯。其他語言請百度各國語言縮寫即可查詢匆赃。
(一)應用名稱本地化/國際化
應用名稱本地化,是指同一個App的名稱今缚,在不同的語言環(huán)境下(也就是手機設備的語言設置)顯示不同的名稱算柳。比如,微信在簡體中文環(huán)境下App名稱顯示為“微信”姓言,在英語環(huán)境下顯示為“weChat”瞬项。下面就開始進行應用名稱本地化。
1. 選中Info.plist何荚,按下鍵盤上的command + N囱淋,選擇并創(chuàng)建文件Strings File(iOS->Resource->Strings File)
2. 文件命名為:InfoPlist.strings(首字母大寫,必須是這個名稱)兽泣,點擊Localize绎橘,來配置語言文件。
3. 選擇需要本地化的語言唠倦。
原理:程序啟動時称鳞,會根據(jù)操作系統(tǒng)設置的語言,自動加載InfoPlist.strings文件下對應的語言文件稠鼻,然后顯示應用程序的名字冈止。
4. 接下來,我們分別用不同的語言給InfoPlist.strings下的文件設置對應的名字候齿。
(1).在InfoPlist.strings(English)文件中添加下面代碼:(CFBundleDisplayName可以使用雙引號熙暴,也可以不使用雙引號!)? ? ? ? ?
CFBundleDisplayName="Demo";
Demo是App在英語環(huán)境環(huán)境下顯示的名稱
(2).在InfoPlist.strings(Simplified)文件中添加下面代碼:
CFBundleDisplayName="演示";
演示是App在中文環(huán)境環(huán)境下顯示的名稱
在手機上安裝APP慌盯,切換不同的語言環(huán)境周霉,即可查看APP名字的變化。
(二) 代碼中字符串的國際化
1. 和上面APP名稱國際化一樣亚皂,先創(chuàng)建本地化語言文件俱箱,名稱為Localizable.strings(首字母大寫,必須是這個名稱),選中InfoPlist.strings灭必,按下鍵盤上的command + N狞谱,選擇并創(chuàng)建文件Strings File(iOS->Resource->Strings File)
2. 選中Localizable.strings文件,在Xcode的File inspection中點擊Localize禁漓,選擇我們需要本地化的語言跟衅,由于我們在配置需要的國際化語言中添加了簡體中文,英文是默認添加的播歼,所以點擊Localize彈框選項中會有三個選項:Base伶跷、English、Chinese(Simplified),選擇一項即可撩穿。因為我們要配置簡體中文和英文磷支,這里我們選English。
3. 在xcode右側Localization下選中English食寡、Chinese,此時廓潜,Xcode左側的Localizable.stirings下多了兩個文件抵皱,Localizable.stirings(English)、Localizable.stirings(Simplified),然后我們只需要在Localizable.strings下對應的文件中辩蛋,分別以Key-Value的形式呻畸,為代碼中每一個需要本地化的字符串賦值,如下圖:
4. 我們只需要使用Foundation框架自帶的NSLocalizedString(key, comment)這個宏根據(jù)Key獲取對應的字符串悼院,然后賦值給代碼中的字符串伤为。
NSLocalizedString(key, comment)
第一個參數(shù)是內容,根據(jù)第一個參數(shù)去對應語言的文件中取對應的字符串,第二個參數(shù)將會轉化為字符串文件里的注釋据途,可以傳nil绞愚,也可以傳空字符串@""。
5. 不同環(huán)境下的顯示效果:
中文環(huán)境:
英文環(huán)境: