Лучший подход к локализации ресурсов в модуле (общедоступном или частном — безразлично) — добавить .strings
файлы локализации в пакет модуля.
Основное приложение очень разборчиво, когда дело доходит до загрузки файлов локализации из фреймворков pod, вот шаги, которые вы должны выполнить:
1. Создайте файл Localizable.strings и все остальные *.strings
файлы, необходимые для локализации, и поместите их в папку примерно так:
Некоторые ограничения для соблюдения:
- Имя папки должно быть
XX.lproj
, где XX — ваше ТОЧНОЕ название языка, примечание: en
!= en-GB
!= en-US
- Все папки
lproj
должны быть на одном уровне
- В каждой папке
lproj
должно быть одинаковое количество файлов .strings
и с одинаковыми именами.
2. Настройте файл .podspec
, чтобы модуль мог правильно подобрать локализацию и скопировать их в файл .framework
.
Пример:
s.resource = 'your_path/Localizations/**/*', '... possibly other resources'
после выполнения pod install
результат в вашей папке Development Pods должен быть примерно таким:
Важно проверить, что созданная структура состоит в том, что вся папка .lproj
должна находиться в корневой папке, в противном случае основное приложение не сможет правильно подобрать ее.
3. В коде вашего модуля вместо обычного NSLocalizedString
вы должны использовать NSLocalizedStringFromTableInBundle
:
NSLocalizedStringFromTableInBundle(@"My string", nil, [NSBundle bundleForClass:[MCLoginContext class]], @"String context")
Весь процесс очень деликатный и раздражающий, но это все.
person
Kappe
schedule
24.07.2020