iOS 本地化(非IB篇) - twototwoto/WYW_Blog GitHub Wiki
上篇:iOS 本地化(IB篇),讲述了iOS 本地化中与
Interface Builder相关的内容。
本篇将给大家分享一下iOS本地化(非IB本地化文本)的内容。
步骤如下:
- 步骤一:创建Localizable.strings,用于本地化文本。
示意图如下:
- 步骤二:Localizable.strings添加中文简体支持,如下图:
- 步骤三:Localizable.strings创建完成,如下图:
- 步骤四:添加本地化文本(默认叫Localizable.strings),如下图:
本地化(英文环境部分):
本地化(简体中文环境部分):
备注:可以使用“英文”作为key,也可以使用“中文”作为key。(可以根据开发者的语言习惯决定)
- 步骤五: 调用方法:就会根据设备当前的语言环境 => 不同语种的字符串。
[[NSBundle mainBundle] localizedStringForKey:@"QiPushViewController_localizationLabel.text" value:nil table:nil];
[[NSBundle mainBundle] localizedStringForKey:@"奇分享本地化文本" value:nil table:nil];
// 官方还提供了宏来做这件事,也可以使用。
NSString *str1 = NSLocalizedString(@"QiPushViewController_localizationLabel.text", @"奇分享本地化文本");
NSString *str2 = NSLocalizedString(@"QiPushViewController_localizationLabel.text", nil);
NSString *str3 = NSLocalizedString(@"奇分享本地化文本", nil);
其中这个方法:
- (NSString *)localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName; 
有三个参数key、value、tableName,并且返回一个字符串。
| 参数 | 含义 | 
|---|---|
| key | 键名 | 
| value | 值名 | 
| tableName | 文件名(默认是Localizable) | 
key,value,和返回的字符串之间的关系可由如下表格表示
| key | value | return(string) | 
|---|---|---|
| nil | nil | empty string | 
| nil | non-nil | value | 
| not found | nil or empty string | key | 
| not found | non-nil | value | 
注:在日常开发中:直接使用
NSLocalizedString(key, comment)这个宏就可以啦~既方便又直观快捷。
可以添加其他的本地化文件,例如:supplementaryLocalizable.strings,过程与创建Localizable.strings的过程相同。
如下图:
调用方法:
[[NSBundle mainBundle] localizedStringForKey:@"奇分享本地化文本补充" value:nil table:@"supplementaryLocalizable"];
// 或者使用宏
NSLocalizedStringFromTable(@"奇分享本地化文本补充", @"supplementaryLocalizable", nil);
工程源码:GitHub地址