因为这两天还做国际化相关的东西,所以网上搜索了下国际化相关的教程,但是发现由于xcode升级,按照以前的那种方法是行不通的。所以自己摸索了一些时间,终于搞出来了,特地写在这里,标记一下。
首先看一下 NSLocalizedString 是什么。
#define NSLocalizedString(key, comment) \
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
这是一个宏,本质上是调用了函数 localizedStringForKey:这样,这个宏做的其实就是在当前bundle中查找资源文件名Localizable.strings中键值key所指向的字符串.
下面开始动手实现
1.首先创建个名字为Localizable.strings的文件。
2.创建完成后选中该文件, 然后右侧的属性选择器中点击 localize按钮
点击后会出来国际化的选择框, 通常会只有一个English选项, 然后点击Localize按钮。
3.
点击工程根目录,并选择PROJECT,然后选择Info选项卡,底部我们就看到了Localizations
然后点击+号,选择Chinese
4.这时工程目录中Locallizable.strings就有了两个子文件,
然后打开Localizable.strings(English)文件,在里面添加
"button" = "btn";
记得要以分号结尾。在Localizable.strings(Chinese)文件中添加
5。 然后在代码中创建个按钮,然后设置按钮的标题。
[self.btnsetTitle:NSLocalizedString(@"button",@"this is a title") forState:UIControlStateNormal];
运行后,将会发现标题的按钮名字已经改好了
如果模拟器的语言是英文的话,那么就显示btn
是中文的话,就显示 "按钮"。
到这里,国际化操作就完成了。
注意:
如果创建.strings文件是自定义的名字的话,如当前我起名为 Internation.strings,那么调用的方式为:
NSLocalizedStringFromTable(@”title”,@”Internation”, nil) NSLocalizedStringFromTable(@”name”,@”Internation”, nil)
当自定义名字后,使用NSLocalizedString的方式不起作用,这里要注意;