NSLocalizedString
имеет несколько ограничений, но он настолько важен для Какао, что нецелесообразно писать собственный код для обработки локализации, то есть вам придется его использовать.Тем не менее, небольшой инструментарий может помочь, вот как я продолжаю:
Обновление файла строк
genstrings
перезаписывает ваши файлы строк, отбрасывая все ваши предыдущие переводы.Я написал update_strings.py , чтобы проанализировать старый файл строк, запустить genstrings
и заполнить пробелы, чтобы вам не пришлось вручную восстанавливать существующие переводы.Сценарий пытается максимально приблизиться к существующим строковым файлам, чтобы избежать слишком большого различия при их обновлении.
Присвоение имен вашим строкам
Если вы используете NSLocalizedString
как объявлено:
NSLocalizedString(@"Cancel or continue?", @"Cancel notice message when a download takes too long to proceed");
Вы можете в конечном итоге определить ту же строку в другой части вашего кода, что может конфликтовать, поскольку один и тот же английский термин может иметь разное значение в разных контекстах (на ум приходят OK
и Cancel
).Вот почему я всегда использую бессмысленную строку со всеми заглавными буквами с префиксом, специфичным для модуля, и очень точное описание:
NSLocalizedString(@"DOWNLOAD_CANCEL_OR_CONTINUE", @"Cancel notice window title when a download takes too long to proceed");
Использование одной и той же строки в разных местах
Если вы используетенесколько раз одну и ту же строку, вы можете использовать макрос, как вы это сделали, или кэшировать его как переменную экземпляра в вашем контроллере представления или в вашем источнике данных.Таким образом, вам не придется повторять описание, которое может устареть и стать непоследовательным среди экземпляров одной и той же локализации, что всегда сбивает с толку.Поскольку переменные экземпляра являются символами, вы сможете использовать автозаполнение в этих наиболее распространенных переводах и использовать «ручные» строки для конкретных, что в любом случае произойдет только один раз.
Я надеюсь, выбудьте более продуктивными с локализацией Какао с этими советами!