2017-01-30 4 views
0

Система Android Wear поддерживает только несколько языков. Есть ли способ, как заставить менеджера ресурсов использовать ресурсы для языков, которые я настроил на своем мобильном телефоне, но они не поддерживаются системой Android Wear?Android Wear - Поддержка различных языков

Пример

В моей Android приложение Wear Я хочу поддерживать три языка. Английский, гернамский и чешский. В моем приложении Android Wear у меня есть эти каталоги со строковыми файлами: значения, values-de, values-cs.

Если я настроил свой язык на немецком языке, мое приложение Android Wear правильно использует немецкие строки. Но если я настраиваю чешский язык на своем мобильном телефоне, приложение Android Wear использует по умолчанию (из каталога: значения) строки.

Есть ли какой-либо способ, как я могу достичь этого менеджера ресурсов, будет использовать values-cs папка, когда мой телефон имеет чешский язык, но чешский язык не поддерживается системой Android Wear?

Заранее спасибо.

EDIT

я сделал довольно уродливые обходной путь. У меня есть сервис в моем приложении для мобильных телефонов, связанный с этим приложением для ношения. Когда я начинаю свое приложение, я просто спрашиваю у телефона, какой язык он использует. После его отправки мне ответ, я просто пытаюсь переключить локаль в приложении Xamarin Android Wear.

Код для изменения локали:

myLocale = new Java.Util.Locale(lang); 
DisplayMetrics dm = Resources.DisplayMetrics; 
Configuration conf = Resources.Configuration; 
conf.Locale = myLocale; 
Resources.UpdateConfiguration(conf, dm); 

где языки является ISO639-1 код и myLocale является деятельность свойство типа Locale.

ответ

0

Как уже упоминалось в Localization Tips,

Если приложение отсутствует хотя бы один ресурс по умолчанию, он не будет работать на устройстве, которое устанавливается на неподдерживаемый местности. Например, в файле по умолчанию res/values/strings.xml может отсутствовать одна строка, требуемая приложению: Когда приложение запускается в неподдерживаемой локали и пытается загрузить res/values/strings.xml, пользователь увидит сообщение об ошибке и кнопку принудительного закрытия.

Дополнительную информацию можно получить у Language and Locale. Он объясняет стратегию разрешения ресурсов в версиях Android ниже, чем 7.0 (API-уровень 24). Затем он описывает улучшенную стратегию разрешения ресурсов в Android 7.0. Наконец, в нем объясняется, как использовать расширенное количество локалей для поддержки более многоязычных пользователей.

Кроме того, как указано в данной документации,

Когда код Java относится к строкам, система будет загружать строки из значения по умолчанию (en_US) файл ресурсов, даже если приложение имеет испанские ресурсы локализованы под es_ES.Это связано с тем, что, когда система не может найти точное соответствие, она продолжает искать ресурсы, удаляя код страны из локали. Наконец, если совпадение не найдено, система возвращается к умолчанию, которое является en_US.

Как четко указано, невозможно использовать неподдерживаемый язык. Итак, если вы по-прежнему предпочитаете использовать чешский язык, вы можете использовать Android 5.0 или более низкую версию, где поддерживается чешский язык, как показано в этом связанном SO post и в list of Android Supported Language and Locales.