iOS應(yīng)用的國(guó)際化,主要分為3個(gè)部分:
Info.plist 文件的國(guó)際化
.xib文件的國(guó)際化
.m文件的國(guó)際化
Info.plist 文件的國(guó)際化
我們使用Xcode 創(chuàng)建一個(gè)新項(xiàng)目,會(huì)自動(dòng)創(chuàng)建一個(gè) en.lproj 目錄,這個(gè)目錄下存放的就是需要國(guó)際化的文件(默認(rèn)為英文)。下面,我們還需要?jiǎng)?chuàng)建中文國(guó)際化支持。
- 創(chuàng)建名為 zh-Hans.lproj 的目錄
- 在項(xiàng)目的 Info.plist 文件中增加配置 Localizations, 添加英文和中文的支持:English, Chinese(simplified)
- 將 en.lproj/InfoPlist.strings 文件拷貝到 zh-Hans.lproj/InfoPlist.strings 文件中。
- 將 zh-Hans.lproj 目錄添加到項(xiàng)目。注意要選擇 Add to targets
- 選擇 File -> Info -> Localization 為對(duì)應(yīng)的語(yǔ)言在 InfoPlist.strings 文件中,我們可以國(guó)際化一些應(yīng)用信息,例如:CFBundleDisplayName 應(yīng)用顯示名稱(chēng)。這樣我們就可以根據(jù)不同的語(yǔ)言,顯示不同語(yǔ)言的應(yīng)用名。更多字段信息,請(qǐng)參考http://developer.apple.com/library/ios/#documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html的 Key Summary 部分。
.xib 文件的國(guó)際化
我們已經(jīng)創(chuàng)建了一個(gè)英文的xib文件,在 en.lproj 文件下。然后,需要使用命令行來(lái)操作: - 將 .xib文件 中的文字提取,另存為 .strings文件。ibtool --generate-strings-file MainViewController.strings MainViewController.xib
- 將 MainViewController.strings 拷貝到 zh-Hans.lproj 目錄下,然后漢化該文件中的文字
- 執(zhí)行命令,根據(jù)英文的 .xib文件 和 .strings漢化文件 生成一個(gè)漢化后的 .xib 文件ibtool --strings-file zh-Hans.lproj/MainViewController.strings --write zh-Hans.lproj/MainViewController.xib en.lproj/MainViewController.xib
- 將生成的這個(gè) .xib 文件添加到項(xiàng)目中的 zh-Hans.lproj 分組下,注意要選擇 Add to targets
- 選擇 File -> Info -> Localization 為對(duì)應(yīng)的語(yǔ)言至此,xib文件的漢化已經(jīng)完成。
.m 文件的國(guó)際化 - 代碼中,凡是需要國(guó)際化的文字,都使用 NSLocalizedString 函數(shù),例如 NSLocalizedString(@"hello_world", @"Hello world!");
- 執(zhí)行命令,將所有 .m 文件中需要漢化的文字都提取出來(lái),并放入 en.lproj 文件夾下genstrings -o en.lproj *.m此時(shí),會(huì)自動(dòng)生成 Localizable.strings 文件。接著將該文件也拷貝到 zh-Hans.lproj 文件夾下去。這個(gè)文件就是需要漢化的內(nèi)容
- 將 .strings 文件添加到項(xiàng)目中相應(yīng)的漢化目錄下,注意要選擇 Add to targets
- 選擇 File -> Info -> Localization 為對(duì)應(yīng)的語(yǔ)言然后,我們運(yùn)行程序,通過(guò)修改系統(tǒng)語(yǔ)言發(fā)現(xiàn),文件顯示名稱(chēng)、.xib文件 和 .m文件 都可以自動(dòng)切換顯示語(yǔ)言了。
一.iOS名稱(chēng)國(guó)際化(根據(jù)系統(tǒng)語(yǔ)言修改App的名字)
1.新建工程名為"iOS國(guó)際化"如圖1-1

圖 1-1 新建文件名為"iOS國(guó)際化"的項(xiàng)目
2.添加InfoPlist.strings(注意文件名千萬(wàn)不能改,我就是因?yàn)榘?Info"的"I"寫(xiě)成小寫(xiě),弄了半天)如圖1-2 和圖1-3/圖1-4

圖1-2 選擇Strings File

圖1- 3 這里名字一定要一致

圖1-4 InfoPlist.strings文件創(chuàng)建完畢
3.添加漢語(yǔ)到工程中如圖1-5

圖 1-5 選擇簡(jiǎn)易中文到工程中
4.給InfoPlist.strings添加多語(yǔ)言如圖1-6和圖1-7

圖1-6 添加Localize...

圖 1-7 勾選英文和中文
5.添加修改名稱(chēng)的代碼分別到InfoPlist.strings(English)和InfoPlist.strings(Chinese(Simplified))中如圖1-8和圖1-9

圖1-8 在中文中添加代碼

圖1-9 在英文下添加代碼
OK大功告成了.運(yùn)行結(jié)果分別把設(shè)備調(diào)到英文和中文語(yǔ)言上,如圖1-10和圖1-11

圖1-10 在設(shè)備系統(tǒng)為中文時(shí)的app名字

圖1-11 在設(shè)備系統(tǒng)為英文時(shí)的app名字
二.內(nèi)容國(guó)際化(程序中的名稱(chēng)進(jìn)行本地化顯示)
1.在ViewController.swift中加入一個(gè)紅色的label如圖1-11

圖1-11 在視圖加入一個(gè)紅色label
2.添加一個(gè)名字為L(zhǎng)ocalizable.strings(同樣的這個(gè)名字是固定的)并對(duì)它加入本地化如圖1-11

圖1-12 添加Localizable.strings
3.勾選英文和中文并添加相應(yīng)代碼如圖1-13和1-14

圖1-13 在英文里面寫(xiě)英文

如圖1-14 在中文里面寫(xiě)中文(它們的key都是name)
4.在代碼中進(jìn)行應(yīng)用如圖1-15

圖1-15 在代碼中加入NSLocalizedString("name", comment: "name")
OK大功告成了,運(yùn)行下看看結(jié)果,萌萌噠......

圖 1- 16手機(jī)系統(tǒng)是英文

圖1-17手機(jī)系統(tǒng)是中文的