iOS多国语言国际化由于我个人也是第一次做,所以遇到了很多问题,
在此我把我所遇到的一些问题分享给大家。
最基础的怎么进行多国语言国际化在此就不老生常谈了,有兴趣的朋友可自行百度。
1.首先我们说下翻译的格式:"你好" = "hello"
;
我们可以把需要翻译的文档制作成"你好" = "";
这种Word文档
每一种语言一个Word文档,这样你会发现,你做国际化的时候会快很多,不必到处找啊找的,我们这次搞得就是表格样式的,坑死人了,放翻译文档放的手都软了;
2.我们尽量把同一个VC
的词语翻译成差不多长的其他语言。
大家可以想象一下如果你的一个布局里面有一排按钮,等分排练的,然后翻译的title
一个好长一个非常短的,我们该这么去适配呢?而我们最简单的做法是btn.titleLabel.adjustsFontSizeToFitWidth = YES;
想象一下当时我是有多痛苦了吗?所以说,当你看到这篇文章的时候说明你很庆幸,至少下次你遇到这样的需求你可以及时的和翻译说。
3.由于某些国家的语言有很多种不同的系列,导致测试的时候会出现,这种语言缺失,其实不然,只是你在选择语言的时候少选了他的语种,就像中文一样,有简体和繁体中文。我这里最常见的有这么几种:
西班牙语(最坑爹,我选了3个才搞定)
丹麦语
俄语
葡萄牙语
意大利语
4.当初做项目的时候没管那么多,直接是只考虑了中文,然而国际版我们的项目需要减少一个tabBarItem
所以通过判断是否为中文来判断的具体写法是写了个单例的类然后写的方法:
//判断是否为中文简体- (BOOL)isSimpleChinese{ NSString *language = [[NSLocale preferredLanguages] firstObject]; if ([language isEqualToString:@"zh-Hans"]) { return 1; }else{ return 0; }}
然而我们的运气貌似有点差,刚好碰上的iOS9升级,失效了,打开代码断点看看,原来是苹果IOS9增加了语言后面的地区代码,原来的zh-Hanz
变成了zh-Hanz-CN
能怎么办呢?当然是改代码咯。。。。下面是改过的代码
//判断是否为中文简体- (BOOL)isSimpleChinese{ NSString *language = [[NSLocale preferredLanguages] firstObject];if ([language hasPrefix:@"zh-Hans"]) { return 1; } else { return 0; }}
仔细的你是否发现了代码的不同之处啊?
5.国际化一些有图片的地方,我们需要特别注意下取名哦,比如:hello_en@2x.png
(英语)
这样做的好处就是我们替换图片的时候只要判断下后缀是否是en
就可以判断当前语言所需的图片下面我截个图给大家瞧瞧
记得叫美工改好名字哦,我们用起来的时候就会方便快捷!
联系客服