обычно вы взаимодействуете с NSBundle
. Вы используете строку для чтения локализованной версии строки (которая загружается из файла локализованных строк).
есть также некоторые макросы, которые некоторые люди используют для облегчения синтаксиса, с префиксом NSLocalizedString
. NSLocalizedString
реализации используют NSBundle
.
imo, вы должны использовать строковые константы, чтобы идентифицировать локализованную строку, которую вы читаете (как вы должны делать со словарями и ключами объекта).
Вы можете объявить свои константы, используя эту форму (предполагается, что objc):
extern NSString* const MONAppString_Download;
и определите так:
NSString* const MONAppString_Download = @"Download";
затем получите к нему доступ:
NSString * tableName = nil; // << using the default
NSString * localized =
[[NSBundle mainBundle]
localizedStringForKey:MONAppString_Download
value:MONAppString_Download // << return the string using the default localization if not found
table:tableName];
иногда это помогает создавать функции-обертки для уменьшения шума, особенно когда вы используете их во многих местах:
// @return what's set to the above variable named 'localized'.
NSString * MONLocalized_Download();
затем вы настраиваете свои строковые файлы как карту, по одному для каждой локализации, которую вы поддерживаете.
поэтому, когда вам нужно прочитать строку, которая видна пользователю, вы используете вышеуказанную форму. Также учтите, что существуют другие ресурсы для локализации (перья, изображения, PDF и т. д.), которые вы можете связать с вашим приложением. большая часть работы здесь также абстрагирована NSBundle из CFBundle, если вы предпочитаете.
удачи