#objective-c #macros #nslocalizedstring
#objective-c #макросы #nslocalizedstring
Вопрос:
Все мои вызовы NSLocalizedString имеют nil в качестве второго параметра, потому что я не использую никаких комментариев. Но я ненавижу повторяться. Теперь я спрашиваю себя, можно ли определить макрос типа LSSTRING(str), который вызывает NSLocalizedString(str, nil), и если да, то как?
Ответ №1:
Вы можете. Добавьте следующий макрос в предварительно скомпилированный заголовок. т.е. в {ProjectName}-Prefix.pch файл
#define LSSTRING(str) NSLocalizedString(str, nil)
Комментарии:
1. Одна из проблем с этим подходом заключается в том, что genstrings ожидает найти строку для комментария и выдаст ошибку, подобную этой:
Bad entry in file ... (line = #): Argument is not a literal string.
2. В Xcode просто выполните поиск / замену следующим образом: Find: LSSTRING((@»w «)) Заменить: NSLocalizedString(1, 1)
Ответ №2:
я использую
#define _(format, ...) [[NSBundle mainBundle] localizedStringForKey: [NSString stringWithFormat:@"%@", [NSString stringWithFormat:format, ##__VA_ARGS__]] value:@"" table:nil]
Комментарии:
1. Почему первый
stringWithFormat:
?