看来网上好多关于本地化&国际化的文章和分享,太多的说得太繁琐,看了一通还是觉得云里雾里不知怎么下手,这里就来个简单的干货,如果想了解详细理论资料的请查看苹果官方文档或者戳这里,废话不多说了。
1.使用IB绘制界面的简单咯,直接添加新的local就可以自动生成了,这里是__纯代码__绘制界面使用的方法。
2.在代码里面所有需要使用到国际化字符串的地方把
@"你要国际化的字符串"
改成
NSLocalizedString(@"你要国际化的字符串的英文", @"你要国际化的字符串的描述")
或者苹果这里提供了4种不同的本地化方法
#define NSLocalizedString(key, comment) \
[NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil]
#define NSLocalizedStringFromTable(key, tbl, comment) \
[NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:(tbl)]
#define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \
[bundle localizedStringForKey:(key) value:@"" table:(tbl)]
#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \
[bundle localizedStringForKey:(key) value:(val) table:(tbl)]
其中第一个生成的Localizable.strings
文件的key
和value
都是一样的,如果想在不同的地方对同一字符串进行不同翻译的话可以使用第四个,其中参数的val
可以自己写成各种不同地方的翻译,而key
可以相同。
P.S. 非常建议写上描述,磨刀不误砍材工。
3.改好之后进入控制台,到你项目的git文件夹里面的项目文件夹下面(就是装所有代码文件的那个文件夹)输入以下命令
$ find xxx -name '*.m' | xargs genstrings -o en.lproj
$ find xxx -name '*.m' | xargs genstrings -o zh-Hans.lproj
其中,可以把xxx换成你要生成翻译文件的任何路径,比如./
或者./Controller/
之类的
4.如果没有问题,项目文件夹下面会生成两个文件夹en.lproj
和zh-Hans.lproj
,建议把两个文件夹拖到Supporting Files
组里面。然后打开每个文件夹里面的Localizable.strings
,喏
/* 你要国际化的字符串的描述 */
"你要国际化的字符串的英文" = "你要国际化的字符串的翻译";
拿去给人翻译就行喽,并没有那么难。
当然,可惜的是,网上各种可以追加这个strings文件的方法貌似都不太靠谱,所以每次生成的语言文件都要重新翻译。当然,也有解决办法,戳这里