Xcode4.6 国际化设置 NSLocalizedString

来源:互联网 发布:cnc数控编程 编辑:程序博客网 时间:2024/06/07 13:58

  因为这两天还做国际化相关的东西,所以网上搜索了下国际化相关的教程,但是发现由于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的方式不起作用,这里要注意;


原创粉丝点击