iOS國際化詳細教程

之前做的項目都不需要去做國際化,最近公司項目需要國際化了。于是自己在網上找了一些資料,自己親手實踐做了一遍,然后碼了這遍文章。文中有錯誤的地方,還望大家指出。謝謝!

1. App名稱國際化

點擊工程-PROJECT-Info-Localizations,添加簡體中文支持,如果想支持繁體,也可繼續添加,其他語言亦然。

Localizations添加簡體中文.png

新建一個Strings File,命名必須為InfoPlist.strings,不然不起作用。

InfoPlist.png

選中創建的InfoPlist.strings - 點擊右邊的“Localizion”- 添加簡體中文
(PS: Base不要選中, 我也不知道Base選中會有什么影響)

Localizion.png

分別在InfoPlist.strings中文和英文文件中創建:
“CFBundleDisplayName” = “中文名字”;

“CFBundleDisplayName” = “EnglishName”;
名字字符串自己填寫就好, 這里只是示范

英文app名稱.png

中文app名稱:

中文 app名稱.png

分別切換模擬器的設置中的語言至中英文模式,分別查看appiocn下面的名字的變化。搞定!(如果你的沒有成功,肯定是你哪一步錯了,自己去檢查啰。????)

2. 文本國際化(針對代碼中字符串進行國際化)

主要針對代碼中的字符串進行國際化,比如說一些消息,UI標題等。
我們通過一個Localizable.strings文件來存儲每個語言的文本,它是iOS默認加載的文件,如果想用自定義名稱命名,在使用NSLocalizedString方法時指定tableName為自定義名稱就好了,但你的應用規模不是很大就不要分模塊搞特殊了。

同添加InfoPlist.strings的做法相同,添加一個Localizable.strings文件
對應中英文(其他語言自行添加),分別添加下列語句:

Localizable 中文.png

Localizable英文文件:

Localizable英文.png

關于上述的key和value,只是示范,可自行定義,調用這些key-value需要利用NSLocalizedString(<#key#>, <#comment#>)系統宏,例如:NSLocalizedString(@”alertTitle”, @”這是一句注解,根據情況寫”),第一個參數即在strings文件中自定義的key,根據不同的語言環境,系統會自動檢測這個key對應的value(中文還是英文),第二個參數是注釋,為了便于理解,可以為nil。

分別切換模擬器的設置中的語言至中英文模式,分別查看Alert彈窗效果:


中文環境測試.png

英文環境下效果:

英文環境測試.png

3. 圖片的國際化

方案一: 原生支持(建議用這一種)

Paste_Image.png

=============繼續:

Paste_Image.png

打開文件夾以后出現這樣的截圖:

Paste_Image.png

在XIB或Storyboard中引用圖片時如果只使用名稱有時候是實時顯示不了的,一定要加上后綴名.(例如mask.png)

Paste_Image.png

代碼中使用:

UIImageView *imgView = [[UIImageView alloc]init];
imgView.frame = CGRectMake(100, 50, 150, 150);
imgView.image = [UIImage imageNamed:@"mask.png"];
[self.view addSubview:imgView]; //OK, 到這一步圖片國際化已經完成了。

4. Storyboard&XIB國際化

前面的兩種資源國際化比較簡單,但Storyboard國際化就稍微麻煩了點。同樣它也有二種方案
方案一:每種語言定制一套Storyboard(不推薦,所以不寫了啊。這里給你們個鏈接:http://www.cocoachina.com/ios/20151120/14258.html自己去看吧。)

方案二: 基于基礎的Base StoryBoard以及每種語言一套strings
1.下面用StoryBoard講解,Xib同理:

Snip20160902_5.png

然后
1 在Main.string(Chinese(Simplified)) 中設置:"lKs-YV-8tS.normalTitle" = "我是一個按鈕";
2 在Main.string(English)中設置:"lKs-YV-8tS.normalTitle" = "I am a button";至于為什么這么設置:
前面的lKs-YV-8tS,這個是控件的Object-ID,
可以向下圖查找也可以直接查看它的源代碼(XML格式),后面的就是屬性。

Snip20160902_6.png

下面看運行結果:
中文:

中文狀態.png

英文:

英文狀態.png

=================================================================

以上算是整個國際化的完整過程,本人菜鳥,第一次寫簡書,有不對的地方還請見諒。

QQ: 260595314
github地址: 暫時還沒上傳上去.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容