国际化&本地化
原文链接 http://chaosky.me/2015/12/28/i18n-l10n/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
概念
国际化是指为应用程序提供一个用来支持不同语言的框架的过程,在代码设计上加入能方便的移植到其他国家和地区的特性。I18n是Internationalization的简写。
本地化是使你的应用程序支持特定地区的过程,将具有国际化支持的代码翻译成本国或地区的语言,是本地用户更容易使用。l10n是Localization的简写。
支持多语言,在英语语言环境设置显示相应的英文,在汉语环境下设置显示相应的中文。
<!--more-->
1. 在工程菜单info选项卡下的localizations中添加新语言
2. 创建 strings 文件
- 新建文件
如果要对APP的设置(比如:应用程序包的显示名称)进行本地化,需要对InfoPlist.strings
进行本地化处理。Xcode 6 里面没有InfoPlist.strings
了,那么需要我们自己创建一个。InfoPlist.strings有了之后系统会自动加载。
- 选择新建文件,并在右边栏找到Localization属性
- 在出现的对话框选择Localize
- 将多语言勾上
- 在English和Simplified中分别输入应用名
- 运行一下-修改系统语言为中文和英文
系统是英语环境 那么 会加载英文的文件
系统是汉语环境 那么 会加载支持汉语的文件
3. 代码中加载指定文件中的字符串
自定义文件创建 一个.strings 文件,分别创建支持英语和中文的文件
多语言的设置 格式 key = value
英文
"firstTitle" = "Limit";
"secondTitle" = "Reduce";
"thirdTitle" = "Free";
"fourthTitle" = "Subject";
"fifthTitle" = "Hot";
汉语
"firstTitle" = "限免";
"secondTitle" = "降价";
"thirdTitle" = "免费";
"fourthTitle" = "专题";
"fifthTitle" = "热榜";
- NSLocalizedStringFromTable 通过多语言的文件加载多语言的字符串
//key 多语言中要使用的字符串的key,tbl 多语言文件(MyFree)的名称 , comment,预留参数 一般设为nil
root.title = NSLocalizedStringFromTable([dic objectForKey:@"title"],@"MyFree",nil);
label.text = NSLocalizedStringFromTable(@"labelKey", @"content", nil);//使用NSLocalizedStringFromTable方法取出设置好的多语言内容,第一个参数为对应的key,第二参数是多语言文件名,第三个参数是对这个内容的注释,可以为nil