让它漂亮
对于 Swift,有更好的解决方案可以让您的本地化稍微好一点 - 不是那么混乱。您可以使用以下扩展名:
extension String {
var localized: String {
return NSLocalizedString(self, tableName: nil, bundle: NSBundle.mainBundle(), value: "", comment: "")
}
func localizedWithComment(comment:String) -> String {
return NSLocalizedString(self, tableName: nil, bundle: NSBundle.mainBundle(), value: "", comment: comment)
}
}
现在,无论何时您想要本地化某些内容,您都可以将其作为字符串属性请求:
let text = "my-localization-key".localized
它将根据您当前的系统语言/区域设置获取本地化字符串。
一些提示
如果您有更大的项目,那么值得寻找经理,为您处理本地化导出/添加新语言。例如,我使用 Crowdin - 但您可能会发现一些服务更有吸引力。很棒的是,您不必手动完成所有操作,您只需插入键/翻译并为您完成导出,适用于您拥有的所有语言。
此外,请遵循良好的密钥命名。根据我所看到的人们所做的/我的经验,我认为按逻辑组件/模块命名键是明智的,它们所属的位置,例如:
"Profile.NavigationBar.Title" = "Profile";
"Profile.NavigationBar.Button.Edit" = "Edit;
这样,您可以立即看到您会在哪里找到它。
最后,由于您可以做的错误数量,本地化通常是巨大的痛苦。有生成器可以根据您的本地化创建实际代码,因此编译器会为您检查它。你可以在 GitHub 上获得它。
祝你好运!
Swift 4+ 的更新,它改变了 bundle-access 语法:
extension String
{
var localized: String
{
return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
}
func localizedWithComment(comment:String) -> String
{
return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: comment)
}
}