iOS14开发- 国际化

2021-11-24 15:02:28 浏览数 (1)

介绍

如果 App 需要给不同语言的用户使用,需要进行国际化处理。如果 App 需要进行国际化,在开发之初就需要考虑,在开发时统一使用某一种语言(建议英文),待开发完成以后再进行国际化处理。

配置国际化语言

在进行国际化之前,必须要添加需要国际化的语言,选中国际化的项目 —> PROJECT —> Info —> Localizations,点击 添加需要的国际化语言(默认已经存在英文)。

App名国际化

  1. 新建一个Strings File,必须命名为InfoPlist.strings
  2. 在 Xcode 的右侧文件检查器中找到Localization,点击Localize...,然后勾选配置的国际化语言。
  3. InfoPlist.strings左侧多了一个箭头,点击箭头可以展开,Strings File里面都是形如Key = Value的键值对,操作时一定要保证多个国际化文件中Key的一致性
  4. 设置 App 名字的 Key 为"CFBundleName"
代码语言:javascript复制
// 英文名
"CFBundleName" = "I18N";
代码语言:javascript复制
// 中文名
"CFBundleName" = "国际化";

文本国际化

  1. 新建一个Strings File,必须命名为Localizable.strings
  2. 在 Xcode 的右侧文件检查器中找到Localization,点击Localize...,然后勾选配置的国际化语言。
  3. Localizable.strings的各个国际化版本中写上需要国际化文本的Key = Value对。
代码语言:javascript复制
"title" = "Info";
"message" = "This is a Dialog";
"btnTitle" = "Cancel";
代码语言:javascript复制
"title" = "温馨提示";
"message" = "这是一个对话框";
"btnTitle" = "取消";
  1. 在需要的地方使用NSLocalizedString(key, comment)读取,其中第一个参数就是上面的key
代码语言:javascript复制
NSLocalizedString("title", comment: "")
NSLocalizedString("message", comment: "")
NSLocalizedString("btnTitle", comment: "")

图片国际化

图片和文本国际化的使用方式一样,首先在Localizable.strings中进行图片名称的设置,然后通过NSLocalizedString(key, comment)来读取图片名,再根据不同的图片名获取不同的图片。

代码语言:javascript复制
let imageName = NSLocalizedString("img", comment: "")
let image = UIImage(named: imageName)
imageView.image = image

storyboard/xib国际化

  1. 二者使用方式几乎一样,以 storyboard 为例。
  2. 配置国际化语言时,会弹出选择需要国际化的 storyboard 的对话框,选择以后对应的 storyboard 左侧就会多一个箭头,点击箭头可以展开,里面有storyboard名.stringsStrings File
  3. 选中storyboard名.strings,在 Xcode 的右侧文件检查器中找到Localization,点击Localize...
  4. storyboard名.strings文件对应位置填写相应的国际化信息。
代码语言:javascript复制
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "bRH-7c-qiE"; */
"bRH-7c-qiE.normalTitle" = "Button";

/* Class = "UILabel"; text = "UserName"; ObjectID = "dp4-Bf-56s"; */
"dp4-Bf-56s.text" = "UserName";

/* Class = "UITextField"; placeholder = "Please input your name"; ObjectID = "fen-IE-aUn"; */
"fen-IE-aUn.placeholder" = "Please input your name";
代码语言:javascript复制
/* Class = "UIButton"; normalTitle = "Button"; ObjectID = "bRH-7c-qiE"; */
"bRH-7c-qiE.normalTitle" = "登录";

/* Class = "UILabel"; text = "UserName"; ObjectID = "dp4-Bf-56s"; */
"dp4-Bf-56s.text" = "用户名";

/* Class = "UITextField"; placeholder = "Please input your name"; ObjectID = "fen-IE-aUn"; */
"fen-IE-aUn.placeholder" = "请输入用户名";

注意:如果在弹出的对话框中没有勾选 storyboard,也可以选中 storyboard 文件,再在 Xcode 的右侧文件检查器中找到Localization,点击Localize...,选择 Base,点击Localize,然后在Localization中勾选需要的国际化语言,会生成各个国际化语言的Strings File,最后进行国际化信息的填充。

0 人点赞