2016-05-17 3 views
0

Я работаю над приложением, которое должно поддерживать большое количество языков. Вместо того, чтобы связывать все языки в ресурсах приложений, я хочу иметь возможность загружать этот язык, когда пользователь выбирает новый язык из меню настроек.Локализация приложений Android - Загрузка транзакций во время выполнения

Мобильное приложение Facebook делает это очень хорошо. Если вы вошли в систему, перейдите в меню «Настройки»> «Языки»> «Переключить язык»> выберите другой язык.

Я думаю, что Facebook загружает эти языковые ресурсы, потому что, если я поместил свой телефон в режим самолета, он не работает (подсказка с повторением попытки или использование английского по умолчанию).

Поскольку ресурсы приложения не могут редактироваться во время выполнения, я предполагаю, что Facebook использует базу данных для загрузки языка, а затем загружает переводы оттуда!

Любые идеи по этому вопросу?

Благодаря

p.s Я на самом деле пытается сделать это в Xamarin ... пытаясь понять подход Facebook для Android, так что я могу реализовать себя.

ответ

0

Если вы загружаете файлы локализации, вы не сможете использовать поддержку локализации по умолчанию в Android.

Если вы продолжите эту стратегию (загрузка файлов локализации), вам нужно будет создать свой собственный класс для управления этим или, альтернативно, для поиска библиотеки, которая сделает это за вас.

+0

благодарит за ответ. Я согласен с вами, но это не отвечает на мой вопрос. – AhmedW

1

Я не знаю конкретно о Facebook, но я знаю, что эта техника используется некоторыми людьми - я видел презентации на аналогичных настройках других компаний. Есть несколько очевидных преимуществ:

  • Уменьшить общий размер приложения, не связывая 30 языков стоимостью строк.
  • Возможность улучшить локализованные строки, не заставляя пользователя загружать обновление приложения.
  • Улучшенные данные о том, какие языки используют ваши пользователи.

Когда я видел в представленном (опять же, это не было специально для Facebook), он работал так, как вы предлагали - пользователь выбирает предпочтительный язык, приложение выбирает набор строк с сервера, затем начинает его использовать , После установки языка приложение может периодически обновлять локализованный набор строк для получения обновлений.

Однако есть некоторые недостатки, о которых следует помнить, особенно если локализованные строки меняются со временем. Это может затруднить поддержку - если строка была изменена, кнопка (например) может быть вызвана разными вещами в зависимости от того, когда пользователь использовал приложение. Это также будет действительно оказывать давление на вашу стратегию i18n и QA, чтобы убедиться, что пользовательский интерфейс выглядит прилично со строками, которые могут часто меняться.

+0

Спасибо за информацию Chase. Любая ссылка на эти презентации? Я знаю, что на iOS вы можете загрузить другой языковой пакет во время выполнения. Но для Android единственный способ, который я вижу, - загрузить строки в базу данных, а затем прочитать их там? возможно, так это делает Facebook? Он просто работает так гладко, что сложно определить, является ли это БД или кешированным ресурсом. – AhmedW

+0

Это тот, который я помню наиболее ясно, хотя это довольно высокий уровень: http: // lingoport.ком/WP-содержание/добавления/2012/03/Dynamic-Language-Delivery-на-Adobe% E2% 80% 99s-Mobile-Applications.pdf –

Смежные вопросы