oc/swift:国际化之逆向生成Localizable文件

第一步:准备工作

1. 创建一个String File类型文件,如下。

2.1 点击这个文件,在右侧导航栏点击Localize这个按钮,如下,添加多语言比如:语言和汉语

2.2 添加后,右侧如下

左侧项目文件Localize变成下面这样。

2.3 如果要添加更多语言,打开PROJECT,如下:

第二步:代码工作:

新建一个文件,在代码中加入下面的内容

swift:let testLocalized = NSLocalizedString("test1", comment: "这个是测试")

oc    :   NSString *testLocalized = NSLocalizedString(@"test1", @"这个是测试");

 

第三步:逆向工作:

1. 打开终端(Terminal),cd到项目的根目录。

2. 生成最终文件

swift:

find ./ -name "*.swift" | xargs genstrings -o en.lproj

find ./ -name "*.swift" | xargs genstrings -o zh-Hans.lproj

find ./ -name "*.swift" | xargs genstrings -o ja.lproj

oc:

find ./ -name *.m -print0 | xargs -0 genstrings -o en.lproj

find ./ -name *.m -print0 | xargs -0 genstrings -o zh-Hans.lproj

find ./ -name *.m -print0 | xargs -0 genstrings -o ja.lproj

3. 打开项目文件查看

4. 把这个丢给翻译,让他去修改就好,当然注释要明确,不然又产生沟通成本等等问题。

 

 

更多:

1. NSLocalizedString(key,comment)的‘comment’是用来生成描述文字,便于查看,不至于一头雾水,因此‘comment’包含的信息需要尽可能准确,可以精确到具体的项目的文件名,比如某个controller、某个view。

例子:

string国际化

NSLocalizedString(@"cancel",@"string::::aController::UILabel:取消");

图片国际化

NSLocalizedString(@"homeBackground",@"picture::::bController::UIImageView:homeBackground_en.png");

说明:1.key最好以英文为主;2.可以直接将英文的string做为key这样英文就不需要改,只需改其它语言;3.如果是图片国际化,最好以图片名字做为key,如果key没有对应值,默认是以key为值,可以正确调用图片

如下

NSLocalizedString(@"this is a localizable file",@"string::::cController::UILabel:这是国际化文件");

或者下面这样,key使用关键字

NSLocalizedString(@"localizable file",@"string::::cController::UILabel:这是国际化文件~this is a localizable file");

 

2. 从代码中逆向生成国际化文件。这样就不需要每次加了一个本地化字符串,就得手动去Localizable.strings添加对应的key。方法是先按照上面1.2的方式写好调用,等项目差不多写好了,使用苹果提供的快捷生成本地化key的命令。

需要注意的是,NSLocalizedString(key,comment),用这个函数时,key不能是宏定义或者一些动态字符串,否则用上面的命令会报错。

 

3.1 到了这里其实关于iOS的国际化已经算是完成了,但你可能也发现一个问题了,上面两种方法全都是一次性生成文件,但我们的项目往往会不断地更新。重新照上面流程跑,生成的string文件会将之前翻译好的文件覆盖掉。

3.2 代码的国际化还好,毕竟一般面对新需求我们都会新建新的类和文件,只要把新代码文件脱到一个文件夹下,执行genstrings便可以得到一份对应的本地化文件,然后拿给翻译人员,最后将翻译好的键值对追加在初始的localizable.string文件尾部即可。

 

4. 参考:

https://www.bbsmax.com/A/MAzAWM8p59/    总结,GitHub仓库改写的国际化功能

https://www.jianshu.com/p/6a37f7f8cecd    用偷懒的方式

https://www.cnblogs.com/yanzheng216/p/8674722.html

https://www.cnblogs.com/levilinxi/p/4296712.html     脚本:添加没有的,去掉多于的

 

 

5. 下面是打印出当前设备支持的所有语言:(其中zh-Hans是简体中文,zh-Hant是繁体中文;en英文,ja日文

(

    en,  "zh-Hans",  fr, de, ja, nl, it, es,  pt,  "pt-PT", da, fi, nb, sv,  ko,  "zh-Hant", ru, pl,

    tr, uk,  ar, hr, cs,  el,  he,  ro, sk, th,  id,  ms,  "en-GB",  ca, hu,  vi

)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值