Ответ 1
Все локализованные строковые ресурсы (плюс много других ресурсов) извлекаются из пакета. Обычно приложение использует "основной комплект", который создается XCode вместе с вашим приложением. Но вы можете создать отдельно любой другой пакет, если вы сделаете его с правильной структурой, затем вы можете загрузить его в своем приложении и, наконец, извлечь локализованную строку, используя функцию NSLocalizedStringFromTableInBundle().
Итак, скажем, вы извлекаете для ключа "KEY" перевод языка, тогда нормальный синтаксис будет выглядеть следующим образом:
NSString *translated = NSLocalizedStringFromTable(@"key",nil,nil);
но есть вариант этой опции, который позволяет указать пакет:
NSString *translated = NSLocalizedStringFromTableInBundle(@"key",nil,myBundle,nil);
В стандартном случае вы заменяете myBundle
на [NSBundle mainBundle]
, но если вы хотите использовать другой комплект, вы можете указать его следующим образом:
NSString *myBundlePath = "the path to the downloaded bundle";
NSBundle *myBundle = [NSBundle bundleWithPath:myBundlePath];
NSString *translated = NSLocalizedStringFromTableInBundle(@"key",nil,myBundle,nil);
Полную структуру пакета можно увидеть в "Руководстве по программированию Bundle" в документах Apple, но в вашем случае вы можете просто создать таким образом:
- на вашем Mac создайте каталог и назовите его "MyBundle"
- внутри этого каталога перемещайте ваши локализованные строки (если у вас несколько языков в комплекте, тогда файл localizable.strings будет находиться в каталогах lproj: en.lproj, it.lproj, fr.lproj,... )
- затем переименуйте каталог в "MyBundle.bundle"
Вы заметите с последней операцией, что теперь этот объект рассматривается как отдельный объект, но на самом деле это каталог.
Теперь вы можете выбрать подход с несколькими связями или следовать методу с одним узлом: в последнем случае вы можете упаковать все языки, а затем использовать уникальный обновленный комплект для перевода языка с использованием правил автоматической локализации системы; в другом случае вы можете создать набор для каждого языка, а затем - на основе выбранного языка - загрузите соответствующий пакет и выберите его для своих переводов.