文章目录
- 多语言处理
- xib多语言
- 通过创建Controller
- 添加语言
- localizable strings和Interface Builder Cocoa XIB
-
- Interface Builder Cocoa XIB转localizable strings
- 设置无效的问题
- 简体转繁体
- .string设置无效
- base xib作用
- 验证多语言方法
- 官方文档
多语言处理
对于文本的多语言处理,使用
NSLocalizedString
并配置好
Localizable.strings
文件实现
对于界面的对语言处理,同样也可以代码编写,在使用
NSLocalizedString
实现,但xib更加简单直接
xib多语言
通过创建Controller
首先创建一个视图Controller,并勾选添加xib文件
这里也可同样适用于单独的xib文件,例如和
MainMenu.xib
文件
.storyboard
然后选中,选择右侧栏中的
localize...
这里就会提示
这里选择
Base
就意为做一个最基本的样板,然后根据
做好的这个样板
我们再定义其他语言的样式
需要开启
autolayout
我们才能使用约束布局
添加好内容布局后,就可以设置多语言
添加语言
这里只有
英文En
和
base
,选中
project
,添加语言
添加新语言时,会提示你是否为已经多语言化的xib文件创建这个新语言的支持
localizable strings和Interface Builder Cocoa XIB
这里有两种,一种是
localizable strings
,另一种是
xib
形式
区别在于
localizable strings
适用于只有文本变化,UI布局不变化的场景
Interface Builder Cocoa XIB
形式,适用于UI布局变化的场景
Interface Builder Cocoa XIB转localizable strings
有时候我们只需要一份布局,后续可能还会继续修改,那么保持多份xib文件就不明智了。
就需要
Interface Builder Cocoa XIB
转
localizable strings
例如我们有MainMenu.xib的英文文件
将多语言删除,但不删除文件
然后选择
English
提示已经有xib文件,是否使用其中的内容,选择
Use file
则可以使用xib匹配。
设置无效的问题
前提是
base
文件的
ObjectID
和
xib
文件需要一致
/* Class = "NSWindow"; title = "Rich Media Web Training"; ObjectID = "nHh-YP-tQ3"; */
"nHh-YP-tQ3.title" = "多媒體網絡培訓";
nHh-YP-tQ3
同样需要在
xib
中也能搜索到(将
xib文件
拖入文本编辑器搜索),并且也为此值
简体转繁体
写了一份简体之后,剩余的繁体可以可以通过脚本转换,或者使用在线网站
http://tools.jb51.net/transcoding/convertzh
.string设置无效
值得注意的是需要正确的格式编码,例如简体转繁体从网站复制之后,再复制一次到文本编辑器中,格式化下,再粘贴到
.string
文件中即可
base xib作用
base xib
文件仅在使用
.string
文件需要,如果使用xib,可以不使用
base xib
验证多语言方法
在xcode中设置即可,不用变动系统语言测试
官方文档
附上官方文档 https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/Introduction/Introduction.html#//apple_ref/doc/uid/10000171i-CH1-SW1