Правильный язык для Индонезии ("id_ID" и "in_ID")? - PullRequest
0 голосов
/ 02 мая 2019

Я сейчас использую 6.0 version из hybris . Наш проект полностью основан на Backoffice. Ранее мы настроили in_ID (languageISOcode_countryISOcode) для локали Индонезии и работали нормально, но теперь Клиент запросил настройку локали как id_ID для локали Индонезии.

Обратите внимание, что в languageISOcode устарела, а id является обновленным languageISOcode Индонезии.

Ниже приведен фрагмент кода нашего гибриса:

final Locale locale = cockpitLocaleService.getCurrentLocale();

LOG.info("locale : " + locale); //Here I'm getting in_ID value of locale in all scenario

Он вызывает файл Locale.class из java, и если я передам id_ID, то также метод convertOldISOCodes (внутри Locale.class) преобразует id_ID в in_ID.

См. Код ниже:

import java.util.Locale;

Locale localeIndonesia = new Locale("id", "ID");

System.out.println(localeIndonesia); //printed in_ID

Не могли бы вы помочь мне получить id_ID в качестве локали для Индонезии.

OR

Если это ошибка в Java, есть ли способ получить id_ID в гибридах с?

1 Ответ

3 голосов
/ 03 мая 2019

Вы можете использовать следующий код:

Locale locale = new Locale("id", "ID");
System.out.print(locale.toLanguageTag().replace('-', '_')) // printed id_ID

Кстати.это не ошибка в Java, а «проблема» с обратной совместимостью.Java использует первую версию ISO 639. Позже стандарт был обновлен, и некоторые коды были обновлены.Java была разработана как полностью обратно совместимая, поэтому авторы решили не обновлять эти коды.Это причина, почему «id_ID» изменяется на «in_ID».Индонезийский не единственный код, который используется в старой форме.По крайней мере, иврит и идиш также используются в старом виде.

+---------------------------------+
|  Language  | ISO 639 | ISO 3166 |
|------------|---------|----------|
| Indonesian |   IN    |    ID    |
|   Hebrew   |   HE    |    IW    |
|   Yiddish  |   YI    |    JI    |
+---------------------------------+
...