一、首先讲解下本地化和国际化的区别
这是两个非常容易混淆的概念,总的来说,本地化就是把UI变成本地语言,比如英文的cancel变成中文就是取消。国际化就是功能上支持国际化,比如键盘的国际化就是对应不同国家给他们不同的键盘。
本地化的原理:创建对应不同语言的本地化文件,然后每次去读名称一样的本地化文件,ios系统会根据当前语言的不同读不同的文件
二、本地化程序中的字符主要步骤
1、首先建立一个新文件(快捷键Command+N),选择IOS Resource -> Strings File 命名为hwcLocalizable。这样会生成一个Localizable.Strings的新文件
2、选择左上角项目图标->project->在info的最下面->Localizations->选择加号->选择想要本地化的语言->选择所有提示框中的文件->完成。这样在storyboard 和 info.plist两个文件左边会出现两个小的三角形。然后点击这个小的三角形会看到生成了Main.strings(chinese(simplified)),这个就是本地化storyboard的文件
3、选择Localizable.Strings
然后选择
接下来选择中文简体,这样对于选择Localizable.Strings左边会出现一个小的三角形,点击小的三角形,会出现一个对应的中文strings的文件
4、把对应的内容写到Strings的文件里
比如:对于Localizable.strings(English)
“Done” = "Done";
对于Localizable.strings(Chinese(Simplified))
"Done" = "完成";
5、在每次使用到字符串的地方改成读文件
完整的调用函数
func NSLocalizedString(
key: String,
tableName: String? = default,
bundle: NSBundle = default,
value: String = default,
#comment: String) -> String
由于swift可以省略含有defalut的变量,所以可以简单调用
NSLocalizedString("Done", comment: "Done")
三、本地化图片
方法1:
采用如二中的方式,把图片的名称写到strings里,然后每次使用的时候用NSLocalizedString去读
方法2:
点击图片,然后
选择对应语言后会像Localizable.Strings那样生成多个图片,右击图片,show in finder,然后在对应文件夹下进行替换
四、本地化应用程序名称
首先在info.plist文件中添加如下key-value对
然后仿照(二)中的方式建立InfoPlist.strings(一定要是这个名字)
然后在中文和英文对应的InfoPlistStrings分别对应
"CFBundleDisplayName" = "你的应用程序名称";
"CFBundleDisplayName" = "Your_Product_Name";
至于本地化应用程序图标,暂时没找到合适的方案
贴上一个stackoverflow的链接
http://stackoverflow.com/questions/18978016/ios-app-icon-localized