Роб Кенигер прав. Я также хотел бы добавить это:
Второй параметр можно использовать как .. значение по умолчанию !!
(NSLocalizedStringWithDefaultValue не работает должным образом с genstring, поэтому я предложил это решение)
Вот моя Пользовательская реализация, которая использует NSLocalizedString, которая использует комментарий в качестве значения по умолчанию:
1. В предварительно скомпилированном заголовке (файл .pch) переопределите макрос 'NSLocalizedString':
// cutom NSLocalizedString that use macro comment as default value
#import "LocalizationHandlerUtil.h"
#undef NSLocalizedString
#define NSLocalizedString(key,_comment) [[LocalizationHandlerUtil singleton] localizedString:key comment:_comment]
2. создать класс для реализации обработчика локализации
#import "LocalizationHandlerUtil.h"
@implementation LocalizationHandlerUtil
static LocalizationHandlerUtil * singleton = nil;
+ (LocalizationHandlerUtil *)singleton
{
return singleton;
}
__attribute__((constructor))
static void staticInit_singleton()
{
singleton = [[LocalizationHandlerUtil alloc] init];
}
- (NSString *)localizedString:(NSString *)key comment:(NSString *)comment
{
// default localized string loading
NSString * localizedString = [[NSBundle mainBundle] localizedStringForKey:key value:key table:nil];
// if (value == key) and comment is not nil -> returns comment
if([localizedString isEqualToString:key] && comment !=nil)
return comment;
return localizedString;
}
@end
3. Используйте это!
Убедитесь, что вы добавили скрипт Run в ваши фазы сборки приложения, чтобы ваш файл Localizable.strings обновлялся при каждой сборке, т. Е. Новая локализованная строка добавлялась в ваш файл Localized.strings:
Моя фаза сборки Script - это сценарий оболочки:
Shell: /bin/sh
Shell script content: find . -name \*.m | xargs genstrings -o MyClassesFolder
Итак, когда вы добавляете эту новую строку в свой код:
self.title = NSLocalizedString(@"view_settings_title", @"Settings");
Затем выполните сборку, ваш файл ./Localizable.scripts будет содержать новую строку:
/* Settings */
"view_settings_title" = "view_settings_title";
И так как ключ == значение для 'view_settings_title', пользовательский LocalizedStringHandler будет возвращать комментарий, то есть «Настройки»
Вуаля: -)