1、为项目添加新的语言
2、为项目添加 *.string 文件
在 Resource 下面选择 Strings Files 。并且命名为 Localizable.string (如果不想自定义的时候)
3、配置 string 文件
选中 Localizable.string ,在 xcode Utility Area 区 Localization 点击 Localiza.. 。
选择 English 就可以.
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 对应的字符串
2、新建 InfoPlist.strings ,并在 InfoPlist.strings 文件中加入:
CFBundleDisplayName = "test"; // InfoPlist.strings (English)
CFBundleDisplayName = "测试"; // InfoPlist.strings (Simplified)
然后修改本机语言就可以看到效果了
如果那里不对,欢迎各位大屌指出 QQ : 964638645