Я локализую свое приложение, а один из поддерживаемых языков/областей - Espanol-419. Android не поддерживает значения соглашения об именах-es-r419, но он принимает значения-en-rGB. Какое имя следует использовать, чтобы заставить его работать?
Android локализовать es-r419
Ответ 1
Я не знаю, откуда приходит r419. Единственное, что я мог подумать, это LCID, но 419 для русского, или код страны, но ничего для 419. Вот список языковых кодов для испанского языка, возможно, тот, который вы хотите, находится здесь:
es-ar Spanish - Argentina
es-bo Spanish - Bolivia
es-cl Spanish - Chile
es-co Spanish - Colombia
es-cr Spanish - Costa Rica
es-do Spanish - Dominican Republic
es-ec Spanish - Ecuador
es-sv Spanish - El Salvador
es-gt Spanish - Guatemala
es-hn Spanish - Honduras
es-mx Spanish - Mexico
es-ni Spanish - Nicaragua
es-pa Spanish - Panama
es-py Spanish - Paraguay
es-pe Spanish - Peru
es-pr Spanish - Puerto Rico
es-es Spanish - Spain (Traditional)
es-uy Spanish - Uruguay
es-ve Spanish - Venezuela
Литература:
Update:
Таким образом, очевидно, что 419 из UN M.49 standard, принятого BCP 47 для тега языка IETF. Google документация по альтернативным ресурсам говорит:
Язык определяется двухбуквенным кодом языка ISO 639-1, необязательно сопровождаемым двух буквенным кодом региона ISO 3166-1-alpha-2 (которому предшествуют строчные буквы "r" ).
Ясно (только по "r" ) вы можете видеть, что это не стандартные теги языка IETF. К сожалению, я считаю, что это также означает, что вы не сможете найти подходящую двухбуквенную область, эквивалентную 419. Вы также можете проверить официальный список ISO . Это не так, для стран есть только два тега для письма. По-видимому, он очень распространенный не поддерживает трехзначные теги.
Единственное решение, о котором я могу думать, это предоставить набор по умолчанию для es
, а затем более конкретный набор для подразделения es
. Вы могли бы предоставить ресурсы для каждого региона (например, es-rAR
), который, по вашему мнению, соответствует 419, но, глядя на этот список, я думаю, что было бы проще сделать обратное и использовать es
для предоставления ресурсов для латиноамериканского испанского языка, а затем предоставить ресурсы для es-rES
для Испании. Поскольку es-rES
более конкретный, чем es
, он должен иметь приоритет (если совпадает языковой стандарт).
Ответ 2
es-r419 = es-rUS.
измените имя папки на values-es-rUS
для согласованности с пользовательскими параметрами времени выполнения.
При использовании служб переводов Google, когда вы запрашиваете перевод на испанский язык для Латинской Америки, вы получите возвращенную папку es-r419
.
При просмотре источника AOSP или в settings->language and input->language
вы увидите испанский и испанский (США).
Во время выполнения, выбирая язык = испанский (США), вы не увидите строки, вытащенные из values-es-r419
, и, конечно, вы увидите строки, вытащенные из values-es-rUS
Ответ 3
Android 7.0 (уровень API 24) обеспечивает более надежное разрешение ресурсов и автоматически находит лучшие варианты отката. Однако, чтобы ускорить разрешение и улучшить удобство сопровождения, вы должны хранить ресурсы на наиболее распространенном родительском диалекте. Например, если ранее вы хранили испанские ресурсы в каталоге
values-es-rUS
, переместите их в каталогvalues-b+es+419
, который содержит латиноамериканский испанский.
Источник: https://developer.android.com/guide/topics/resources/multilingual-support.html
Мы предложили выбрать язык в приложении, поэтому для хорошей работы на новых и старых телефонах у нас были дублированные ресурсы в values-es-rUS
Español (Estados Unidos), а также values-b+es+419
Español (Latinoamérica)