iOS 应用的本地化
iOS 应用的本地化
文案的本地化
- 项目设置中开启需要支持的本地化语言。项目导航中点击项目名,
PROJECT
中定位到到Localizations
。点击 "+" 添加想要支持的语言。
选择需要本地化的语言
首次创建,会将项目中已经存在的 Storyboard,xib 等文件列出来,为其创建相应的本地化文件,如果你项目中不使用 IB 进行界面开发,可忽略。
选择现有的文件
- 创建 strings 文件,命名为
Localizable.strings
,系统默认会从该文件读取多语。
创建 strings 文件
- 为 strings 文件创建本地化版本的副本。在项目导航中选中刚刚创建的
Localizable.strings
然后在 Inspector 面板的 Localization 中点击Localize...
为 strings 文件创建本地化副本
添加相应文件。比如选择英文,然后再将需要本地化的语言都勾选上。此时刚刚的 Localizable.strings
文件变成了一个组,下面包含了每种语言对应的副本。
strings 文件及其本地化副本
- 接下来就是添加多语本身了,编辑每种语言的文件,写上对应的文案 key 及翻译。譬如:
简单中文
"hello" = "Hello";
"my_name_is" = "My name is %@";
英文
"hello" = "你好";
"my_name_is" = "我叫 %@";
这里左边是文案对应的 key,在代码中使用,右边则是展示到界面的文案。
编写多语文案
- 最后便是使用。以下是代码中使用的简单示例:
使用
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 50, 200, 20)];
label1.text = NSLocalizedString(@"hello", @"");
UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(10, 70, 200, 20)];
NSString *name = @"niuwayong";
NSString *localizedStr = NSLocalizedString(@"my_name_is", @"");
label2.text = [NSString stringWithFormat:localizedStr,name];
[self.view addSubview:label1];
[self.view addSubview:label2];
}
@end
运行效果:
运行效果
前面提到创建 strings 文件时需要命名成 Localizable.strings
,如果是其他名称,则不能使用 NSLocalizedString
来进行本地化,而需要使用 NSLocalizedStringFromTable
来指定多语文件名。
假如我们保存成了 MyI18n.strings
,则可以这样来获取和使用:
[label setText:NSLocalizedStringFromTable(@"key", @"MyI18n", @"comment")];
测试其他语言
默认应用会跟随系统语言,但也可通过配置来测试指定语言。
- 选择顶部项目目标点击 "Edit Scheme..."
Edit Scheme...
- 在
Run
面板的 "Options" 中找到 "Application Language" 造成想要测试的语言即可
设置程序应用的语言
以下是选择简体中文的运行效果:
简体中文运行效果
Info.plist 的本地化
应用中除了界面上有文案,像应用名称,权限描述等文本则不在代码范围内,这需要本地化项目的 info.plist
来完成。
-
创建 strings 文件,命名为
InfoPlist.strings
。这里的名称很重要,不能是其他名称,且大小写敏感。 -
然后在其中添加需要本地化的字段,这些字段便是 info.plist 里对应的字段。
"CFBundleDisplayName" = "我的应用名";
"CFBundleName" = "我的应用名";
"NSLocationWhenInUseUsageDescription" = "开启定位以搜索附近的餐馆";