Макрос для NSLocalizedString

#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: ?