字符串的本地化处理
-
1.给项目添加多个语言
-
2.新建strings文件
-
3.让strings文件支持本地化
给字符串支持的语言打钩,看到旁边的Words.string多出了几个带语言名称的文件,可以在这些文件中编写需要本地化的字符串
4.编写strings文件
可以自己添加想要本地化的字符串
在Words.strings(Base)中填写:
"Cancel" = "Cancel";
在Words.strings(English)中填写:
"Cancel" = "Cancel";
在Words.strings(Chinese(Simplified))中填写:
"Cancel" = "取消";
- 5.代码中做本地化标识
UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(100, 100, 100, 30);
label.backgroundColor = [UIColor redColor];
label.text = [[NSBundle mainBundle] localizedStringForKey:@"Cancel" value:@"Cancel" table:@"Words"];
需要注意的是,在这个过程中,苹果已经给我们定义了几个宏方便本地化处理,上面的最后一行代码也可以写作
label.text = NSLocalizedStringFromTable(@"Cancel", @"Words", nil);
如果我们的stings文件名称为Localizable.strings,这代码也可以简写为
label.text = NSLocalizedString(@"Cancel", nil);
经过以上处理,就可以在不同的语言环境下显示不同的语言的字符串啦!
storyboard中的本地化
我们还可以对storyboard和xib进行本地化
1.给项目增加多种语言支持
2.让storyboard支持本地化
3.可以看到storyboard中的每种语言都生成了一个strings文件,在这个文件中对我们的控件进行本地化处理
4.或者我们选择
每种语言都会生成一个storyboard,可以对每种语言的storyboard进行配置.
info.plist的本地化
Info.plist的本地化文件是InfoPlist.strings
例如 :在InfoPlist.strings(Base)中填写:
"CFBundleName" = "Localization Test";
在InfoPlist.strings(English)中填写:
"CFBundleName" = "Localization Test";
在InfoPlist.strings(Chinese(Simplified))中填写:
"CFBundleName" = "本地化测试";
这样,项目的名称也可以进行本地化了.