前言

最近看了一下关于app本地化的一些尝试,这里做了一些最基础的总结。

Bundle display name的本地化

首先需要倒入需要的语言包,如下图所示:

2

其次新建一个名为InfoPlist.strings的文件:

6

点击这个文件右侧展开,点击localize…,把刚才添加的语言设置按需选择:

3

选择

7

在相应的strings文件里填写app不同语言的名称,分号千万不能漏掉,否则编译不通过。如果不知道字段的可以看下图:

1

英语语言下:

"CFBundleDisplayName" = "Tea tree mushroom";

简体中文语言下:

"CFBundleDisplayName" = "茶树菇";

日语语言下:

"CFBundleDisplayName" = "茶の木キノコ";

韩语语言下:

"CFBundleDisplayName" = "차 나무 菇";

然后设置手机不同的语言就能看到效果。

StoryBoard的本地化

这个设置跟上面差不多,同样点击需要本地化的sb文件,点击localize…,选择好之后会出现相应的strings文件:

8

如果sb文件之前是有编辑过的,就是上面已经有显示控件的,生成string文件的时候会自动有 key-value的值,如下图:

9.png

如果在以后添加了新的控件,没有自动生成怎么办?别着急。咱们仔细看一下这个规则就知道了。首先打开sb文件显示xml代码:

10.png

这里搜到这个id对应的button,JNm-54-QzN.normalTitle拿到文字进行修改即可,下次新其他控件按照这个规则直接可以改,这里normalTitle等属性可以自行网上查到。

这里需要注意一点,如果是sb的约束可能需要注意不同语言文字的长度问题。

app内字符串的本地化

本地化的文件需要建一个名为Localizable.strings,注意大小写。同理需要选择右侧localize…,这里就不再啰嗦了。然后就可以用key-value的形式定义不同语言下的字符串,在需要使用的文件中利用:

public func NSLocalizedString(_ key: String, tableName: String? = default, bundle: Bundle = default, value: String = default, comment: String) -> String

读取字符串显示在相应的控件上

这里总结了最基础的本地化需要的操作,如果有更高级的用法,欢迎大家一起分享。

Post Author: menglingfeng

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You may also like

iOS OC语言copy修饰符实现原理

前言 在经过频繁的业

Label尺寸自适应与AutoLayout问题小结

水平布局与垂直布局L

iOS7之后的导航栏与控制器原点坐标问题

简单记录关于iOS7

%d bloggers like this: