根据区域设置选择模型的正确属性 class?
Choosing right properties of a model class depending on the locale settings?
说,我有一个模型(用于 Realm 数据库):
class Country: Object {
dynamic var id = ""
dynamic var nameRu = ""
dynamic var nameEn = ""
}
我在代码的某处显示了这样一个国家的名称:
cell.textLabel?.text = countries[indexPath.row].nameRu
那么,如何根据区域设置自动显示 nameRu
或 nameEn
?有 "smart" 的方法吗?
谢谢。
一种选择是使用标准 iOS 本地化方法。此方法假设您的基本本地化是英语,因此 "Country::name" 是 "Russia",它将作为 'key' 到 Localizable.strings。
您的国家/地区对象不需要保存所有翻译;因此简化为:
class Country: Object {
dynamic var id = ""
dynamic var name = ""
}
创建一个 Localizable.strings 文件(对于 ru-RU)
/*
Localizable.strings (ru-RU)
*/
"Russia" = "Россия"
"Germany" = "Германия"
/*
Localizable.strings (en-US)
(optional)
*/
"Russia" = "Russia"
"Germany" = "Germany"
调用使用:
cell.textLabel?.text = NSLocalizedString(countries[indexPath.row].name, comment: "Country name that will translate based on iOS region preference in Settings > General > Language & Region")
像下面这样的东西可以工作吗?
let country = countries[indexPath.row]
cell.textLabel?.text = country["name\(localization)"]
其中 localization
是 En
还是 Ru
?
说,我有一个模型(用于 Realm 数据库):
class Country: Object {
dynamic var id = ""
dynamic var nameRu = ""
dynamic var nameEn = ""
}
我在代码的某处显示了这样一个国家的名称:
cell.textLabel?.text = countries[indexPath.row].nameRu
那么,如何根据区域设置自动显示 nameRu
或 nameEn
?有 "smart" 的方法吗?
谢谢。
一种选择是使用标准 iOS 本地化方法。此方法假设您的基本本地化是英语,因此 "Country::name" 是 "Russia",它将作为 'key' 到 Localizable.strings。
您的国家/地区对象不需要保存所有翻译;因此简化为:
class Country: Object { dynamic var id = "" dynamic var name = "" }
创建一个 Localizable.strings 文件(对于 ru-RU)
/* Localizable.strings (ru-RU) */ "Russia" = "Россия" "Germany" = "Германия" /* Localizable.strings (en-US) (optional) */ "Russia" = "Russia" "Germany" = "Germany"
调用使用:
cell.textLabel?.text = NSLocalizedString(countries[indexPath.row].name, comment: "Country name that will translate based on iOS region preference in Settings > General > Language & Region")
像下面这样的东西可以工作吗?
let country = countries[indexPath.row]
cell.textLabel?.text = country["name\(localization)"]
其中 localization
是 En
还是 Ru
?