iOS开发 App本地化(开发日记)

新人,写的不好的地方,还请指出。

前期准备

先点击工程->PROJECT->Localizations添加你要本地化的语言

picture1.png

如果是已经本地化过的项目,这里添加之后会弹出

picture2.png

Resource File是需要本地化为你刚刚选择的语言的项目,Reference Language是本地化文件生成时使用的模板,一般默认即可。

1,App名称(以我的Xcode9.2为例)

点击工程->TARGETS->General

picture3.png

会看到如下界面,在Display Name一项填写你的App名称(中英文都可),不填可能会导致编译不通过,填写完成之后,Xcode会自动在工程的info.plist里面生成此字段

此后要在工程目录下新建一个strings文件

picture4.png

并命名为InfoPlist(不要问我为什么)

picture5.png

点击该文件,在Xcode最右边会出现此界面

picture6.png

点击Localize...按钮

picture7.png

点击Localize,本地化此语言,一般默认即可。完成之后刚才的Localize...按钮位置的地方会变成这样

picture8.png

勾选你要本地化的语言即可。

之后文件就变成了这种状态,包含各种语言,应用安装时或者系统语言切换时会自动加载各语言文件,来设置不同语言的App名称

picture9.png

选中一个

picture10.png
picture11.png

这里用到了CFBundleDisplayName这个key,这个key是设置App名称的,按照此方法设置好对应语言App名称即可(这里和开头设置的Display Name字段不冲突,如果这里设置的话,就会按照这里的来显示)

2,本地化图片

(1)直接本地化

大致与上面的一样,选中需要本地化的文件,点击Localize...按钮,勾选你需要本地化的语言即可

之后就变成了这样

picture12.png

注:Assets.xcassets里面的图片不能直接本地化

然后右键点击文件

picture13.png

去到工程目录下,

picture14.png

对应的语言文件夹 下,复制替换 对应图片的对应语言版本 就好了,可以看到此时这个图片现在是在en 英文语言文件夹下

那么我们就把他替换为 英文版图片 就好了,同理, 中文 或者 其他语言版本的图片 的步骤一样。

(2)间接本地化

请看文末

3,本地化字符串

和本地化App名称一样,先创建一个strings文件,并命名为Localizable(还是不要问我为什么)

接下来选中文件,点击Localize...按钮,勾选你要本地化的语言

picture15.png

然后可以在里面以key=value的形式添加一项

picture16.png
picture17.png

在你的代码里面,找到需要本地化的字符串,加上NSLocalizedString()

NSString *title = NSLocalizedString(@"viewVC_title", nil);
picture18.png

这样title的值在英文环境下显示为hahaha

中文简体环境下显示为哈哈哈

注:此NSLocalizedString()宏的返回值为NSString类型,因此可以直接当做NSString*对象来使用,如

self.title = NSLocalizedString(@"viewVC_title", nil);
[button setTitle:NSLocalizedString(@"viewVC_buttontitle", nil) forState:UIControlStateNormal];
picture19.png
picture20.png

这种方法一般需要来回切换文件一行一行的手动添加,下面介绍一种相对来说简单一些的方法

首先把需要本地化的字符串按照下面的形式全部包装起来,第一个参数是key,第二个参数是注释,注意是注释,也就是说你之后要是看到这个注释,你就知道这个字符串是 在哪里用到的怎么赋值等等。

NSLocalizedString(@"viewVC_title", "哈哈哈");
picture21.png

选中工程

picture22.png
picture23.png

选择好导出的目录类型(这里我们选择development language only也就是英文语言)导出之后找到导出的文件

picture24.png

是一个.xliff的文件,右键选择打开方式,选择Xcode打开它

picture25.png
picture26.png

这个文件是一个xml的形式,可以看到有三个标签,

我们先删除掉暂时用不到的两个,变成了下面这样

picture27.png

因为这个是我们导出英文版翻译,可以看到source-languageen,也就是这个导出的语言包的源语言英文导入时要加上目标语言target-language="en"

picture28.png

之后对标签里面的内容进行修改,增加一个标签,内容填写英文翻译

picture29.png

现在我们导入看看效果,同样选中工程

picture30.png
picture31.png
picture32.png

导入完成

picture33.png

这样就完成了英文语言导入。接下来我们来导出 中文翻译

picture34.png
picture35.png
picture36.png

选中Xcode打开来看看

picture37.png
picture38.png

删除掉暂时用不到的两个

picture39.png

然后我们加上标签,填上中文翻译

picture40.png

然后保存导入

picture41.png

就ok啦,同理,其它语言也和 中文 翻译的方法一样的。

最后我们来介绍下图片的 间接本地化,就是把 图片名字 当做 字符串 来进行本地化,

[button setImage:[UIImage imageNamed:NSLocalizedString(@"viewVC_buttonimagename", @"buttonimage")] forState:UIControlStateNormal];
picture42.png
picture43.png
picture44.png

注:图片名字一定要写对。

你可能感兴趣的:(iOS开发 App本地化(开发日记))