iOS国际化适配

添加应用需要国际化的语言

在Project的Localizations选项,点击加号(+),添加需要国际化的语言。如果需要适配storyboard和启动页可以勾选。


Snip20200809_10.png
Snip20200809_11.png

一、语言适配

步骤一、批量替换字符串
  • Command+Shift+F,进入全局搜索引擎,切换为Replace模式,并把匹配模式改为正则匹配模式Regular Expression
  • 使用正则表达式搜索并替换中文字符串:在搜索条件里输入(@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?"),在下面替换内容里输入NSLocalizedString($1, nil),点击Replace All,即可完成替换。关于正则表达式不太懂的,请戳我
步骤二、生成多语言文件
  • 首先,创建所需语言的文件夹,这里主要适配中午和英文。
cd 工程目录
mkdir en.lproj
mkdir zh-Hans.lproj
  • 然后,遍历所有.m文件,根据每个文件内的需要国际化的字符串生成key和value。
find . -name *.m | xargs genstrings -o en.lproj
find . -name *.m | xargs genstrings -o zh-Hans.lproj
  • en.lprojzh-Hans.lproj文件夹中就应该有了相应的Localizable.string文件了,我们把这两个文件夹拖到工程里,然后在相应的Localizable.strings文件中,修改每个key所对应的value值就可以了。

二、权限提示文字适配

  • 添加Strings文件,命名为 InfoPlist.string


    Snip20200809_3.png
Snip20200809_6.png
Snip20200809_8.png
  • 根据项目需要,添加字段
CFBundleDisplayName = "InternationalTest";
NSPhotoLibraryUsageDescription = "InternationalTest needs to access your photo album so that you can use photo saving and publishing dynamic services normally";
.
.
.
CFBundleDisplayName = "国际化适配";
NSPhotoLibraryUsageDescription = "使用相册";
.
.
.

三、图片适配

方法1、指定不同图片名字

在不同语言的Localizable.strings中指定不同的图片名称,通过NSLocalizedString(key, comment)获取不同的图片名称后进行显示不同的图片

//en.lproj/Localizable.strings
"im_service_zh" = "im_service_en";

//zh-Hans.lproj/Localizable.strings
"im_service_zh" = "im_service_zh";

//xxx.m
imgView.image = [UIImage imageNamed:NSLocalizedString(@"im_service_zh", nil)];
2、方法2、利用xcode生成

这种方法不用对代码进行改动,只需要在工程目录中新建一个Group,放入所有需要国际化的原有图片。然后选中图片,点击右侧的Localization,选中需要支持的语言即可在原有图片下生成选中语言所对应的子文件。然后替换掉对应语言的子图片即可。

Snip20200809_15.png

你可能感兴趣的:(iOS国际化适配)