Кроссплатформенные строковые ресурсы для Android и iOS (MonoTouch & MonoDroid)
Я занят кросс-платформенным мобильным приложением, использующим моно библиотеки Xamarin, и столкнулся со следующей ситуацией...
У меня есть куча строковых ресурсов в моем проекте monodroid (strings.xml), которые используются моими макетами и моим C# кодом.
Я хотел бы переместить эти строковые ресурсы в файл в общем проекте, чтобы их могли использовать как iOS, Android и Windows phone. Каков наилучший способ достичь этого?
* В настоящее время я использую файл Resource.resx, который содержит строки не-пользовательского интерфейса. А потом у меня есть файл strings.xml в проекте android(monodroid) для обслуживания строк ресурсов пользовательского интерфейса.
Имейте в виду следующее:
- Один и тот же файл должен использоваться всеми платформами.
- Мне нужны макеты Android, чтобы использовать те же ресурсы. (который в настоящее время является файлом strings.xml)
- Желательно, чтобы это был один файл.
Есть мнения?
2 ответа
Есть (по крайней мере) пара "стандартных" библиотек / инструментов, на которые вы можете посмотреть:
- Средство Rdio Vernacular поможет решить эту проблему, используя
GetText
слой - https://github.com/rdio/vernacular - MvvmCross использует файлы JSON для совместного использования текста (см. Локализация текста в MvvmCross ViewModels)
Оба из них с открытым исходным кодом - вы должны быть в состоянии сделать свои собственные инструменты времени разработки или времени выполнения из них.
Другой вариант - использовать генератор для генерации соответствующих ресурсов во время сборки. Для простоты я решил создать Resource Migrator, который я запускаю при каждой сборке.
По сути, я беру все в моих PCL *.resx
файлы и генерировать ресурсы Android или iOS перед сборкой приложения. Это аналогичный подход к объединению / минимизации CSS/JS в веб-приложении во время сборки... он снижает издержки производительности во время выполнения.