обычно вы взаимодействуете с 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();
затем вы настраиваете свои строковые файлы как карту, по одной для каждой поддерживаемой вами локализации.
поэтому всякий раз, когда вам нужно прочитать строку, которая видна пользователю, вы используете приведенную выше форму. также учтите, что есть другие ресурсы для локализации (nibs, изображения, PDF-файлы и т. д.), которые вы можете связать со своим приложением. большая часть работы здесь также абстрагируется NSBundle, CFBundle, если хотите.
удачи
10.05.2011
ibtool
для экспорта/импорта локализованных строковых файлов. в этом случае им не понадобится IB или ibtool. 10.05.2011