咱们造不出巴别塔,却能够经过本地化让不一样语言环境的人舒坦地用上咱们的 App。swift
但提起本地化,开发者们最直观的感觉必定是一堆细碎繁琐的本地化文件字符串文件,以及永远也想不起来的Key
。ui
// Chinese Simplified
"zelda.btn.confirm" = "肯定";
"zelda.btn.cancel" = "取消";
"zelda.dish.backed.cocoanut" = "烤椰子";
"zelda.dish.backed.mushroom.skewer" = "精力烤鱼蘑菇串";
// English
"zelda.btn.confirm" = "Confirm";
"zelda.btn.cancel" = "Cancel";
"zelda.dish.backed.cocoanut" = "Baked Palm Fruit";
"zelda.dish.backed.mushroom.skewer" = "Energizing Fish and Mushroom Skewer"
复制代码
在开发的时候,代码里充满了相似不直观的代码。下降了咱们的可读性。spa
titleLabel.text = NSLocalizedString(@"zelda.dish.backed.cocoanut", nil);
复制代码
另外,若是开发者一不当心漏掉了某个翻译,界面上就会直接显示你定义的 key。翻译
那么咱们能不能...code
答案是确定的。 使用本地语言做为 Key 就能够解决这三个问题。例如「肯定」按钮,咱们写代码的时候能够这么写:cdn
titleLabel.text = NSLocalizedString("肯定", comment: "");
复制代码
同时,在目标语言(例如英语)资源文件中添加:blog
"肯定" = "Comfirm";
复制代码
这样便一次性解决了上述的全部问题。资源
惟一的一点小遗憾是 NSLocalizedString 宏定义的第二个参数在 99% 的状况下都是空字符,在代码上是一个噪音。咱们能够经过为 String 添加一个 extension 来解决它。开发
extension String {
var ps_localized: String {
get {
return NSLocalizedString(self, comment: "")
}
}
}
复制代码
愉快地使用新的本地化方式 Coding 吧!字符串