一、什么是应用程序的国际化?
根据当前用户当前移动设备的语言自动将我们的app切换对应语言。
对于个人开发者而言国外市场比国内市场更加有价值些,毕竟国外的版权意识,付费理念较好些。
二、怎么做?
1.本地化应用程序名称
(1)应用程序名称的设置在 InfoPlist.strings文件中,而本地化的InofPlist.strings(simple Chinese)等在Xcode 5
之后只能在Project ->Info-> Localizations 中点击加号添加即可。操作如下图
(2)点击下图“+”号 选择所要使用的语言选择Chinese 后
在InfoPlish.strings(english)文件中加入:
CFBundleDisplayName
同理在InfoPlish.strings(chinese)文件中加入:
CFBundleDisplayName
注意:CFBundleDisplayName加不加双引号都行,这和本地化字符串有些不同
(3)编辑Info.plist,添加一个新的属性Application has localized display name,
设置其类型为boolean,并将其value设置为YES即可
2.本地化字符串
(1)点击“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到“String File”的图标。
创建这个文件,命名为“Localizable”(一定是这个文件名否则后面调用会有一些区别)就生成一个
Localizable.strings文件;
(2)设置Localizable.strings文件的本地化属性,在完成后选中该文件,在属性选择器中选择Show the File Inspector
可以看到多了个按钮,如下图
注意:当你在本地化应用名称中如果添加上中文,在本地化字符串也是没有的中文的。
在添加中文后Localizable.strings 里自动会增加一个Localizable.strings(chinese)文件
(3)在Localizable.strings(english)文件中加入:
3.本地化StoryBoard、Xib
本地化StoryBoard、Xib 和 本地化字符串类似,选中文件添加Localization文件
分别在不同的文件做不同的处理。
最后解释NSbundle下几个方法:
#define NSLocalizedString(key, comment) \
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
#define NSLocalizedStringFromTable(key, tbl, comment) \
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tbl)]
#define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \
[bundle localizedStringForKey:(key) value:@"" table:(tbl)]
#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \
[bundle localizedStringForKey:(key) value:(val) table:(tbl)]
(key, tbl, bundle, val, comment)
1.key 所使用的字符串对应的key
2.tbl 所使用的字符串所在的string文件名。 ex:abc.strings的话 就输入abc
3.bundle 资源strings文件所在的文件目录。
4.val 默认字符。
5.comment 注释
参考来源:
http://blog.csdn.net/a_ss_a/article/details/37996265
http://www.iliunian.com/2362.html
http://poolo.iteye.com/blog/1983753
原文:http://blog.csdn.net/skymingst/article/details/38227337