Переопределить базовый файл localizable.strings
-
26-12-2019 - |
Вопрос
Есть ли способ иметь один базовый файл localizable.strings для нескольких целей в проекте, а также иметь второй файл localizable.string для каждой цели, который будет переопределять и добавлять отдельные значения в базовый файл?
РЕДАКТИРОВАТЬ
Я хочу, чтобы в моем приложении было два файла .strings — Localizable.string и Override.strings.Если строка Title.Welcome не найдена в OverrideLocalizable.strings, я бы хотел, чтобы приложение выполнило поиск Title.Welcome в Localizable.strings.По сути, указание Localizable в качестве резервного варианта, но по умолчанию используется OverrideLocalizable.strings.
Решение
Вот решение, которое я нашел:
NSString *PSILocalizedString(NSString *key, NSString *comment)
{
return NSLocalizedStringWithDefaultValue(key,
@"OverrideLocalizable",
[NSBundle mainBundle],
NSLocalizedString(key, nil),
comment);
}
Это позволит выполнить поиск файла с именем OverrideLocalizable.strings
для key
.Если значение для key
не найден в OverrideLocalizable.strings
, он будет искать localizable.strings
для key
. NSLocalizedString(key, nil)
по умолчанию будет искать localizable.strings
Довольно простое и элегантное решение
Другие советы
Для Swift 4 пользователей, которые сталкиваются с этой проблемой ...
func get_overridable_string_for_key(string_key: String)-> String{
return NSLocalizedString(string_key, tableName: "OverrideLocalizable", bundle: Bundle.main, value: NSLocalizedString(string_key, comment: ""), comment: "");
}
.