0921 iOS本地化

1、本地化介绍

1、本地化分类

使用本地化功能,可以轻松地将应用程序翻译成多种语言,甚至可以翻译成同一语言的多种方言。原理是当本地化的应用程序需要载入某一资源时,如图像、属性列表、nib文件,应用程序会检查用户的语言和地区,并查找相匹配的本地化文件夹。如果找到了相应的文件夹,就会载入这个文件夹中的资源

Xcode 8 iOS 10

  • 1、xib和storyBoard本地化
  • 2、App应用名称本地化
  • 3、图片本地化
  • 4、字符串本地化

2、Demo

0921 iOS本地化_第1张图片
Snip20160921_27.png
]( http://upload-images.jianshu.io/upload_images/1742830-8c2508901fd5ff9d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2、stroyBoard本地化

一、创建好中文、英文和日本语的本地化文件夹

0921 iOS本地化_第2张图片
D49E55C6-27AC-4186-998E-B01075E29913.png
0921 iOS本地化_第3张图片
Snip20160921_6.png
0921 iOS本地化_第4张图片
Snip20160921_7.png
0921 iOS本地化_第5张图片
Snip20160921_8.png

二、配置lable的文字

0921 iOS本地化_第6张图片
Snip20160921_9.png
0921 iOS本地化_第7张图片
Snip20160921_11.png

三、显示效果

0921 iOS本地化_第8张图片
Snip20160921_12.png

2、App应用名字本地化

一、Info.plist中有个叫CFBundleDisplayName的key决定了应用程序的名称

让应用程序支持名称本地化,Info.plist就会去InfoPlist.strings加载CFBundleDisplayName对应的字符串,(这里需要注意不能直接本地化Info.plist,因为这样做之后Info.plist文件会存在各自的本地化文件夹中(像en.lproj)中,这样系统会报Info.plist文件不存在的问题,虽然可以去指定Info.plist文件的位置,但是这样就不能实现本地化的目的了,所以需要用到InfoPlist.strings文件)

0921 iOS本地化_第9张图片
Snip20160921_13.png
0921 iOS本地化_第10张图片
Snip20160921_14.png
0921 iOS本地化_第11张图片
Snip20160921_15.png
0921 iOS本地化_第12张图片
Snip20160921_17.png
0921 iOS本地化_第13张图片
Snip20160921_18.png

二、配置App名称

0921 iOS本地化_第14张图片
Snip20160921_19.png
0921 iOS本地化_第15张图片
Snip20160921_20.png

三、App名称显示效果(日语)

0921 iOS本地化_第16张图片
Snip20160921_21.png

3、图片本地化

一、Xcode配置需要本地化的素材

0921 iOS本地化_第17张图片
Snip20160921_23.png
0921 iOS本地化_第18张图片
Snip20160921_24.png
0921 iOS本地化_第19张图片
Snip20160921_27.png

二、Clean然后重新跑起来

0921 iOS本地化_第20张图片
Snip20160921_25.png
0921 iOS本地化_第21张图片
Snip20160921_26.png

不要问我怎么clean, command + option + shift +K

三、显示效果(美国)

0921 iOS本地化_第22张图片
Snip20160921_28.png

注意: 使用Assets.xcassets或者Images.xcassets管理图片本地化
因为iOS暂不支持.xcassets的本地化,所以这里需要结合字符串的本地化来处理(这里也放在后面介绍)

4、字符串的本地化

一、字符串资源文件名Localizable.strings

也可以使用其他名字,但是需要终端生成Xcode可识的字符串资源文件文件,具体可参考本文末尾链接,这里只使用Localizable.strings

0921 iOS本地化_第23张图片
Snip20160921_29.png

在代码中使用NSLocalizedString(key, comment)来读取本地化字符串,key是Localizable.strings文件中等号左边的字符串,comment纯粹是注释。

0921 iOS本地化_第24张图片
Snip20160921_30.png

二、读取Localizable.strings中的key

0921 iOS本地化_第25张图片
Snip20160921_31.png
0921 iOS本地化_第26张图片
Snip20160921_33.png
0921 iOS本地化_第27张图片
Snip20160921_34.png

注意:Xcode只能读取字符串和单个单词的key,所以通一用" "来表示key,这样不容易错,毕竟资源文件是没有查错功能的

0921 iOS本地化_第28张图片
Snip20160921_35.png

如果没有对字符串进行本地化 或者 找不到key对应的值,NSLocalizedString将直接返回key这个字符串

0921 iOS本地化_第29张图片
Snip20160921_36.png

三、通过Localizable.strings中的key,读取.xcassets的图片(日本)

0921 iOS本地化_第30张图片
Snip20160921_37.png
0921 iOS本地化_第31张图片
Snip20160921_44.png
0921 iOS本地化_第32张图片
Snip20160921_38.png
0921 iOS本地化_第33张图片
Snip20160921_41.png

参考链接

千叶的博客->iOS应用本地化国际化

M了个J -> 应用程序本地化

你可能感兴趣的:(0921 iOS本地化)