Да, но это не то, что вы думаете.
Вы можете взять файл строк и загрузить его в NSString
, а затем преобразовать его в словарь, используя -[NSString propertyListFromStringsFileFormat]
.
Это даст вам возможность хранить ваши строки в пользовательском переводе в памяти.
Что касается фактического использования, вам придется определить пользовательские функции перевода.То есть вы больше не можете использовать NSLocalizedString()
и друзей.К счастью, genstrings
(утилита, используемая для генерации файлов строк) позволяет указывать имена пользовательских функций :
genstrings -s "JPLocalizedString" ...
Это означает, что в коде вы можете определить:
NSString* JPLocalizedString(NSString *key, NSString *comment) {
return [myLoadedStrings objectForKey:key];
}
, а также JPLocalizedStringFromTable()
, JPLocalizedStringFromTableInBundle()
, JPLocalizedStringWithDefaultValue()
.genstrings
подберет все это.(Другими словами, то, что NSLocalizedString
- это макрос, не означает, что ваша версия должна быть такой)
Если вы сделаете это и будете использовать эти JPLocalizedString
варианты, то genstrings
все равно будет генерировать ваши строкифайлы для вас (при условии, что вы используете флаг -s
).
После вызова этих функций вы можете использовать любой механизм поиска, который вам нужен, по умолчанию вернуться к версиям NSLocalizedString
, если вы ничего не можете найти.