iOS 国际化

1、为项目添加新的语言

Paste_Image.png

2、为项目添加 *.string 文件
在 Resource 下面选择 Strings Files 。并且命名为 Localizable.string (如果不想自定义的时候)

Paste_Image.png

3、配置 string 文件

选中 Localizable.string ,在 xcode Utility Area 区 Localization 点击 Localiza.. 。

Paste_Image.png

选择 English 就可以.

Paste_Image.png

4、测试

在 Localizable.string 里面分别添加

"test" = "test";  //Localiazble.strings (English)
"test" = "测试";  //Localiazble.strings (Simplified)

然后在 viewController 里面测试 是否成功

UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 30)];
[self.view addSubview:label];
label.text = NSLocalizedString(@"test", nil);

NSLocalizedString 以及 "变种"

在 NSBundle.h 下边 有以下宏定义 蹩脚的英文翻一下 大神可以给我挖挖土 太蹩脚

/*本地化字符串 (默认 Localizable.string )*/
#define NSLocalizedString(key, comment) \
     [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil] 
/*使用指定的 string 文件的本地化字符串*/ 
#define NSLocalizedStringFromTable(key, tbl, comment) \
     [NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:(tbl)]
/*使用某个包里的的本地化字符串*/
#define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \
     [bundle localizedStringForKey:(key) value:@"" table:(tbl)]
/*用默认值得本地化字符串  (黑人问号??? 不太理解,有空试验下)*/
#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \
     [bundle localizedStringForKey:(key) value:(val) table:(tbl)]

其实这段宏定义 就是调用了 [NSBundle.mainBundle localizedStringForKey: value: table: 方法,并且在 bundle 中查找资源文件名Localizable.strings

应用程序名称本地化(Info.plist本地化)

Info.plist中有个叫CFBundleDisplayName的key决定了应用程序的名称

1、为 Info.plist 添加一个 key-value ,让应用程序支持名称本地化,Info.plist 就会去 InfoPlist.strings 加载 CFBundleDisplayName 对应的字符串

Paste_Image.png

2、新建 InfoPlist.strings ,并在 InfoPlist.strings 文件中加入:
CFBundleDisplayName = "test";  // InfoPlist.strings (English)
CFBundleDisplayName = "测试";  // InfoPlist.strings (Simplified)

然后修改本机语言就可以看到效果了

如果那里不对,欢迎各位大屌指出 QQ : 964638645

转载于:https://www.cnblogs.com/Snoho/p/6376607.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值