国际化&本地化

概念

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

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

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

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

2. 创建 strings 文件

  1. 新建文件

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

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

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

  4. 将多语言勾上

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

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

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

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

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

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

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

    英文

    1
    2
    3
    4
    5
    "firstTitle" = "Limit";
    "secondTitle" = "Reduce";
    "thirdTitle" = "Free";
    "fourthTitle" = "Subject";
    "fifthTitle" = "Hot";

    汉语

    1
    2
    3
    4
    5
    "firstTitle" = "限免";
    "secondTitle" = "降价";
    "thirdTitle" = "免费";
    "fourthTitle" = "专题";
    "fifthTitle" = "热榜";
  3. NSLocalizedStringFromTable 通过多语言的文件加载多语言的字符串

1
2
//key 多语言中要使用的字符串的key,tbl 多语言文件(MyFree)的名称 , comment,预留参数 一般设为nil
root.title = NSLocalizedStringFromTable([dic objectForKey:@"title"],@"MyFree",nil);

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