iOS 本地化(非IB篇)

级别:★★☆☆☆
标签:「iOS本地化」「Localizable.strings」
作者: WYW
审校: QiShare团队

上篇:iOS 本地化(IB篇),讲述了iOS 本地化中与Interface Builder相关的内容。
本篇将给大家分享一下iOS本地化(非IB本地化文本)的内容。

iOS本地化(非IB本地化文本)

步骤如下:

  • 步骤一:创建Localizable.strings,用于本地化文本。

示意图如下:

  • 步骤二: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; 
复制代码

有三个参数keyvaluetableName,并且返回一个字符串。

参数 含义
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的过程相同。 如下图:

简体中文的supplementaryLocalizable.strings

英文的supplementaryLocalizable.strings

调用方法:

[[NSBundle mainBundle] localizedStringForKey:@"奇分享本地化文本补充" value:nil table:@"supplementaryLocalizable"];

// 或者使用宏
NSLocalizedStringFromTable(@"奇分享本地化文本补充", @"supplementaryLocalizable", nil);
复制代码

工程源码:GitHub地址

关注我们的途径有:
QiShare(简书)
QiShare(掘金)
QiShare(知乎)
QiShare(GitHub)
QiShare(CocoaChina)
QiShare(StackOverflow)
QiShare(微信公众号)

推荐文章:
iOS 文件操作简介
iOS 关键帧动画
iOS 小游戏项目——数字速算升级版
iOS 小游戏项目——你话我猜升级版
奇舞周刊

猜你喜欢

转载自juejin.im/post/5bf6648cf265da617369eda6