iOS 本地化总结

2018-12-28  本文已影响15人  Rui哥

本文设计到的本地化,均来自自己实践, 在此做个笔记,方便自己复习也方便他人学习.

在iOS中涉及到本地化的场景主要有以下几种:

1> app 中内容(图片/文字)的本地化
2> 系统配置文字本地化(后面补写)
3> 启动图片本地化(后面补写)
4> xib / storyboard 本地化(后面补写)
5> 强制默认 某种语言 (后面补写)
6> 批量生成 本地化键值对文件,供翻译人员翻译




一、 app 中内容(图片/文字)的本地化

1、 让app 支持多国语言
PROJECT->Info->Localizations中点击下方的小->“+” 添加需要添加的语言,本文中以简体中文和英文为例。(国际化的所有操作,都需要这一步作为前提。)

Snip20181228_1.png

2、 创建本地化文件

Snip20181228_4.png


Snip20181228_5.png



Snip20181228_6.png

3、本地化使用

NSString *key = @"Cancle";
    NSString *tableName = @"Localization";
    NSString *describe = @"按钮的标题";
    
    
    
    // 方式1:
    // 在名称为 tableName 的本地化文件中, 去查找 key 对应的文字
    // 当在对应文件中没找到 key 对应的文字时, 默认值就是 key
    // describe 是对 key 对应的文字的描述, 便于翻译人员理解含义,给出正确的翻译
    // 当 tableName 为nil 时, 会自动的去 名为Localization 的本地化文件中查找对应的文字
    NSString *localStr =  NSLocalizedStringFromTable(key, tableName, describe);
    NSLog(@"localStr : %@",localStr);
    
    
    // 方式2:
    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"zh-Hans" ofType:@"lproj"]];
    // 在bundle 中的, 名为tableName的本地化文件, 中去查找key对应的本地化文字
    NSString *localStr2 = NSLocalizedStringFromTableInBundle(key, tableName, bundle, describe);
    NSLog(@"localStr2 : %@",localStr2);

4、本地化匹配原理,经过测试得出以下结论(实际上网上有说没有的语言默认使用base 文件是错误的):

Snip20181228_7.png



Snip20181228_9.png

6、批量生成 本地化键值对文件,供翻译人员翻译

方式1:

根据 xxx.m  yyy.m 中的key 和 解释, 自动生成本地化键值对
genstrings  xxx.m  yyy.m

方式2: 文件批量化生成指令

find . \( -name '*.m' -o -name '*.h' \) -print0 | xargs -0 genstrings -o en.lproj

// 注意:en.lproj 是导出的目标文件夹, 在执行命令前必须要有, 也可以是其他的名字
find . \( -name '*.m' -o -name '*.h' \) -print0 | xargs -0 genstrings -o locOutput

参看文件:
https://www.cnblogs.com/yanzheng216/p/8674722.html
https://www.jianshu.com/p/f8edd7b7a217

上一篇下一篇

猜你喜欢

热点阅读