iOS国际化(三):.strings文件和NSLocalized
2016-10-26 本文已影响57人
金风细细
场景
- 用户可以在手机设置->通用->语言和地区中,设置语言
- app希望通过用户设置的语言,app显示不同的文本
步骤:
1.新建一个.string文件
是在Source里面去找:
1__#$!@%!#__Pasted Graphic 1.jpg
2. 写法:
"ivykey" = "ivy中文";
3. 添加语言:
3-1先选base,其他的后面再勾选都可以的
3-2去查看工程目录
多了en.lproj和zh-Hans.lproj.它们分别存放需要国际化的strings文件,如果勾选了base,则Base.lproj里也会有strings文件
4. 代码使用:
- 如果.strings文件的名字是:Localizable.strings
则用NSLocalizedString宏 就可以了
NSString * strLocalizable = NSLocalizedString(@"ivykey", @"comment");
- 如果.strings文件的名字是自定义的,则要用这个宏, 第二个参数是名字
NSString * str = NSLocalizedStringFromTable(@"ivykey", @"ivy", @"comment");
这2个宏,很有意思:它们调用的是这个方法
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
• If key is nil and value is nil, returns an empty string.
• If key is nil and value is non-nil, returns value.
• If key is not found and value is nil or an empty string, returns key.
• If key is not found and value is non-nil and not empty, return value.
总之,就是谁不为nil且存在,就返回谁.
5. 添加其他语言
这个见我另一个文章的最后面