文本国际化


一、获取系统所支持的国际化信息


在国际化之前,你可以在iphone中的设置->通用->多语言环境->语言中来查看你的iphone支持哪些语言,当然也可以写一段代码测试一下你的iphone都支持哪些语言.测试代码如下:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
NSLog(@"%@", languages);

注:NSUserDefaults类用来取得用户人默认信息.

二、在Xcode中建立多语言文档


打开 File>New>File,选择Resource中Strings Fils,如图:

1.png

注意:Localizable.strings是iOS用来本地化文本默认的文件名称。请抑制以其他内容给它命名的冲动,否则以后你每次引用本地化字符串的时候要一次次输入.strings 文件名。

现在,你已经创建了Localizable.strings文件,你需要添加所有的文本–当前硬编码在app中的文本。你需要遵从一个特定但简单的格式:

"KEY" = "CONTENT"; 

三、在源代码中使用NSLocalizedString来引用国际化文件


  • 括号里第一个参数是要显示的内容,与各Localizable.strings中的id对应
  • 第二个是对第一个参数的注释,一般可以为空串
NSString *str = NSLocalizedString(@"KEY",@"CONTENT");

四、使用Terminal的genstrings命令进行生成资源文件


打开Terminal,然后cd到工程所在的目录,然后使用genstrings来生成自动从源代码中生成资源文件.

例如,项目的目录为:/user/project/test01,则命令如下:

genstrings -o English.lproj  ./classes/*.m genstrings -o zh.lproj  ./classes/*.m

五、编辑各Localizable.strings文件


从第四步中得到了与代码对应的资源文件,最后我们需要对这些资源文件翻译成对应的语言就可以了.如在Localizable.strings(zh)中,把等号后的文字进行编译成中文.

"KEY" = "CONTENT"

不同语言显示不同名称


一、 创建InfoPlist.strings文件,并本地化它


在项目目录下新建一个InfoPlist.strings文件,同样按着以上的步骤进行本地化处理。保存。

二、编辑InfoPlist.strings文件内容


English下面,添加一行:CFBundleDisplayName = “英文名称”

zh-CN对应:CFBundleDisplayName = “中文名称”

Error: Copy .strings file Error

Read failed: The data couldn’t be read because it isn’t in the correct format.

没有正确格式化,可能是忘记以;结尾。

三、 模拟器中显示


2.png

Cmd + R 运行

Cmd + Shift + Home 回去主界面

可以看到显示名称已经改为中文。

界面国际化


一、 项目中添加多语言


3.png

二、选择要多语言的文件