Android: разрешение языковых ресурсов (в приложении и в Play Store)

Меня немного смущает руководство, которое здесь.

До Android 7 кажется, что устройство пытается использовать конкретную локаль, например. fr_FR и если такого языкового ресурса нет, то он удаляет страну и смотрит в fr.

Исходя из этого, учитывая, что у меня нет огромной армии переводчиков для перевода на каждый локальный вариант, я вставляю переводы в родительские папки, например fr, de и т. Д. Если пользователю не нравится поставляемый вариант, в приложении есть возможность выбрать любой другой.

Для Android 7 и более поздних версий руководство выглядит следующим образом:

хранить ресурсы на наиболее распространенном родительском диалекте. Например, если вы раньше хранили испанские ресурсы в каталоге values-es-rUS, переместите их в каталог values-b+es+419, который содержит латиноамериканский испанский.

Но если ваши испанские переводы действительно предназначены для es_US, тогда нет никакого смысла рассматривать их как es_419 (потому что es_US и es_419 разные)? Почему бы просто не оставить их под es_US, потому что кажется, что для Android 7 они все равно будут найдены (пройдя вверх, а затем вниз по дереву), даже если для устройства было установлено значение es_ES, а es_US было единственным доступным?

Для небольшого разработчика, имея только один перевод для определенного языка (например, только es_ES), по-прежнему ли разумной стратегией вставить его в папку родительского языкового стандарта (например, es)? Таким образом, он должен быть доставлен для любого запрошенного варианта испанского языка как до, так и после Android 7? Но это противоречит приведенным выше указаниям.

А что касается переводов описаний приложений в Play Store, мне кажется, что нет никакой иерархической логики разрешения, как в Android ... там просто кажется, что есть плоский список языков . Допустим, у вас есть перевод только на испанский (Испания), а затем, чтобы его можно было использовать в США, Латинской Америке и Испании (на том основании, что другой вариант испанского языка лучше, чем машинный перевод английского языка), вам нужно скопировать это в слоты для американского испанского, латиноамериканского и испанского языков ... не существует общего "испанского" слота?


person drmrbrewer    schedule 22.11.2016    source источник


Ответы (2)


Но, конечно, если ваши испанские переводы действительно для es_US, тогда нет никакого смысла рассматривать их как es_419 (потому что es_US и es_419 разные)?

Это может иметь смысл, если у вас есть только один перевод для обоих.

Почему бы просто не оставить их в es_US, потому что кажется, что для Android 7 они все равно будут найдены (пройдя вверх, а затем вниз по дереву), даже если для устройства было установлено значение es_ES, а es_US был единственным доступным?

Его можно было бы найти, но это было бы немного медленнее.

Для небольшого разработчика, имея только один перевод для определенного языка (например, только es_ES), по-прежнему ли разумной стратегией вставить его в папку родительского языкового стандарта (например, es)? Таким образом, он должен быть доставлен для любого запрошенного варианта испанского языка как до, так и после Android 7?

Менее одного из тысячи устройств работает на Android до 7, поэтому нет смысла поддерживать эти устройства, если у вас нет устаревшей кодовой базы, из-за дополнительной сложности обратной совместимости.

Если у вас есть только один перевод и вы говорите, что их устройства настроены на es_MX, он будет искать es_MX, затем es, а затем другие дочерние es, такие как es_ES. Если у вас есть только один перевод, подойдет es. Вы можете добавить в XML комментарий, что это перевод es_ES, но вы помещаете его в es, поскольку у вас есть только один перевод (хотя оставить его в es_ES тоже нормально, поскольку устройства es_MX будут использовать es_ES, если они не найдут каталоги es_MX или es).

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

person Dennis Sheil    schedule 23.11.2016
comment
Его можно было бы найти, но это было бы немного медленнее - действительно ли задержка настолько значительна? Я представляю, может быть, один или два такта. - person drmrbrewer; 24.11.2016
comment
Просто хочу подчеркнуть, что 4 из 5 устройств - это Android до 7, а не 1 из тысячи. Возможно, вы думаете об уровне API, а не о версии Android. (Источник: developer.android.com/about/dashboards/index.html#Platform) - person Can_of_awe; 20.11.2017

для приложения используйте общую папку, если у вас нет региональных вариантов: иначе «es», а не «es-US». Таким образом, перевод будет использоваться всеми спикерами ES. (независимо от региона)

тогда вы можете просто перезаписать некоторые слова, такие как «цвет против цвета» для en-US vs en-GB.

для магазина Google Play: я не уверен. поскольку "es" НЕТ, а только "es-ES", "es-xxx". а логика вроде другая.

person Community    schedule 05.12.2017