国际化&本地化

2015-12-28 ALEX LIN 更多博文 » 博客 » GitHub »

I18N l10n

原文链接 http://chaosky.me/2015/12/28/i18n-l10n/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


概念

国际化是指为应用程序提供一个用来支持不同语言的框架的过程,在代码设计上加入能方便的移植到其他国家和地区的特性。I18n是Internationalization的简写。

本地化是使你的应用程序支持特定地区的过程,将具有国际化支持的代码翻译成本国或地区的语言,是本地用户更容易使用。l10n是Localization的简写。

支持多语言,在英语语言环境设置显示相应的英文,在汉语环境下设置显示相应的中文。

<!--more-->

1. 在工程菜单info选项卡下的localizations中添加新语言

2. 创建 strings 文件

  1. 新建文件

如果要对APP的设置(比如:应用程序包的显示名称)进行本地化,需要对InfoPlist.strings进行本地化处理。Xcode 6 里面没有InfoPlist.strings了,那么需要我们自己创建一个。InfoPlist.strings有了之后系统会自动加载。

  1. 选择新建文件,并在右边栏找到Localization属性

  1. 在出现的对话框选择Localize

  1. 将多语言勾上

  1. 在English和Simplified中分别输入应用名

  1. 运行一下-修改系统语言为中文和英文

系统是英语环境 那么 会加载英文的文件

系统是汉语环境 那么 会加载支持汉语的文件

3. 代码中加载指定文件中的字符串

  1. 自定义文件创建 一个.strings 文件,分别创建支持英语和中文的文件

  2. 多语言的设置 格式 key = value

英文

   "firstTitle" = "Limit";
   "secondTitle" = "Reduce";
   "thirdTitle" = "Free";
   "fourthTitle" = "Subject";
   "fifthTitle" = "Hot";

汉语

   "firstTitle" = "限免";
   "secondTitle" = "降价";
   "thirdTitle" = "免费";
   "fourthTitle" = "专题";
   "fifthTitle" = "热榜";
  1. NSLocalizedStringFromTable 通过多语言的文件加载多语言的字符串
//key 多语言中要使用的字符串的key,tbl 多语言文件(MyFree)的名称 , comment,预留参数 一般设为nil
root.title = NSLocalizedStringFromTable([dic objectForKey:@"title"],@"MyFree",nil);

label.text = NSLocalizedStringFromTable(@"labelKey", @"content", nil);//使用NSLocalizedStringFromTable方法取出设置好的多语言内容,第一个参数为对应的key,第二参数是多语言文件名,第三个参数是对这个内容的注释,可以为nil