iOS 国际化

这周在公司一直在搞APP 国际化,这个看似简单的事情却让我走了不少弯路,网上的教程我已不想吐槽,fuck!首先最可能的原因是我们的项目工程太大,1.8G,对此我也不想吐槽,毕竟项目至少被5个人蹂躏过,不废话步入正题:
```首先我先介绍一下国际化过程中可能会遇到的问题和简便的方法`
1.如果运行报错,首先检查一下你的国际化string文件,看看有没有少引文分号或者是等号;
2.如果你发现系统语言和代码写的都正确,但是有的内容国际化了有的却没有国际化,首先看一下你的国际化string文件是不是行数太多;
3.如果你工程的需要国际化的内容较多,建议你把国际化分为模块化,也就是你在创建String文件的时候,文件名跟你要国际化的文件夹名字一样,这样看起来比较清晰
4.你最好把工程里面的国际化内容先按文件夹整理好,然后用翻译工具一下子翻译出来,再整理好它的格式就ok了,这样做你会省下不少时间。

下面上步骤图
第一步:command+n创建一个String File 如下图:

![屏幕快照 2016-05-29 下午2.05.58.png](http://upload-images.jianshu.io/upload_images/969236-c591dcf5a64c3799.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
第二步:如果你工程需要国际化的内容较多,那么红色框框里面的文件名可以以你的类文件夹命名。

![屏幕快照 2016-05-29 下午2.06.43.png](http://upload-images.jianshu.io/upload_images/969236-cee2d533de4cd6d3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
这是我以CC名字命名的:

![屏幕快照 2016-05-29 下午3.44.05.png](http://upload-images.jianshu.io/upload_images/969236-685b5aa0cad5b7a8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

第三步来到这里:

![屏幕快照 2016-05-29 下午2.04.11.png](http://upload-images.jianshu.io/upload_images/969236-ac113cd62e79f3ff.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

第四步点击加号选择你要国际化的语言:
![屏幕快照 2016-05-29 下午2.08.11.png](http://upload-images.jianshu.io/upload_images/969236-b01c9fbdac566dc5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
第五步来到CC.String这里,点击红色区域按钮
![屏幕快照 2016-05-29 下午2.07.01.png](http://upload-images.jianshu.io/upload_images/969236-329b46e4e11a814f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
第六步来选择上一步弹出来的框框,选择一个语言

![屏幕快照 2016-05-29 下午2.07.36.png](http://upload-images.jianshu.io/upload_images/969236-e51a489832a697df.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

第七步来到工程代码里面:

![屏幕快照 2016-05-29 下午3.44.57.png](http://upload-images.jianshu.io/upload_images/969236-5666f2d491a59caf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

```大家可以看到我是这样写的NSLocalizedStringFromTable(@"国际化", @"CC", nil)```
我现在解释一下为什么用它NSLocalizedStringFromTable,其实看字面意思就知道了,来自哪个表,第一个参数@"国际化",就是你要国际化的内容,第二个参数@"CC",就是我第二步创建的String文件已CC命名的,所以这里用它来取,第三个参数可以写nil,也可以写@""```
```与NSLocalizedStringFromTable功能差不多的并且常用的还有一个叫NSLocalizedString,如果你用NSLocalizedString那么前提是你的String文件名要以Localization命名,记住必须是它,而且你在代码中要这样写NSLocalizedString(@"国际化", nil)或者NSLocalizedString(@"国际化", @"")这样写```
```以上内容都是工程内容的国际化,下面介绍APP名字的国际化,这个就比较简单了```
```找到你的info.plist文件,在右边选择你的国际化语言,之后你会发现你的info.plist文件可以折叠展开了。```
![屏幕快照 2016-05-29 下午3.58.24.png](http://upload-images.jianshu.io/upload_images/969236-4e13d68a1f7656d9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最后一步在展开之后的文件夹里面对应写上CFBundleDisplayName = "你的APP名字";
比如我在英文文件里面这样写CFBundleDisplayName = "Your APP name";

xib和SB的国际化步骤,和内容国际化差不多,首先点击你的xib文件

![屏幕快照 2016-05-31 上午11.09.52.png](http://upload-images.jianshu.io/upload_images/969236-1b35b1188e77cc61.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


![屏幕快照 2016-05-31 上午11.12.03 1.png](http://upload-images.jianshu.io/upload_images/969236-23ad1118537aaa4c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


在对应的文件里面自己更改内容就ok了
![屏幕快照 2016-05-31 上午11.15.36.png](http://upload-images.jianshu.io/upload_images/969236-e37c2a6c57e99367.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

切换模拟器语言,验证你的内容是否国际化了

![屏幕快照 2016-05-30 上午9.01.18.png](http://upload-images.jianshu.io/upload_images/969236-7b4802bcb6fe9f00.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


![屏幕快照 2016-05-30 上午9.01.36.png](http://upload-images.jianshu.io/upload_images/969236-3fb4f501853f9542.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
 最后见证奇迹的时刻,command+R




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • ** 原文发表在:https://www.xiaolei0808.com/2016/04/24/Localized...
    金小白先生阅读 17,552评论 16 90
  • 国际化(Internationalization ,简写为I18N)的作用是防止将本土文化信息写死仔应用里(所谓本...
    西西西瓜啊阅读 11,316评论 23 15
  • 之前公司的app可能要在岛国和东南亚地区使用,所以最合理的方法就是--国际化。 写这篇文章也是为一个妹子写的(咦~...
    伦敦乡下的小作家阅读 796评论 4 4
  • 大家好,我是Assen!自个打滚学习iOS也半年之多了,现在想把自己平时的一些心得分享给大家(如果有地方描述粗...
    Assen阿森纳阅读 4,135评论 12 9
  • 在项目里的PROJECT Info的Localizations里添加你要支持的语言。 创建本地化(国际化)文件 注...
    谢谢生活阅读 695评论 0 0