1.- Кто-нибудь знает, почему это поведение следует за языком?
Одним из первых аспектов, которые изменяются в приложении в зависимости от его языка, является язык.Подумайте о Швейцарии, в которой официальными языками являются французский и немецкий.Использование страны в этом сценарии не имеет смысла, потому что, помимо валюты, есть и другой аспект (например, отображать сообщения, которые необходимо учитывать)
То же самое относится и к ряду стран (на мой взгляд, Канада - это другая страна)).
В стране есть возможность специализировать этот язык.
Поскольку нет «итальянского английского», en_IT не имеет особого смысла.Таким образом, он принимает «английский», и поэтому возвращаемый экземпляр - это «английский».
2.- Что более важно, кто-нибудь может предложить подробности о том, как изменить поведение по умолчанию в Java, чтобы вместо этого следовать языку?
Ты имеешь в виду, правильно ли страна?
Ответ находится в методе: NumberFormat.getAvailableLocales () , что, в свою очередь, приводит вас к: NumberFormatProvider , который является абстрактным классом, который вы можете расширить для возврата правильногоNumberFormat
для "en_IT" (который в значительной степени вернет it_IT)
Как установить этот новый класс выходит за рамки моих знаний, но я думаю, вам придется взломать его где-то в jre
каталог.
EDIT
Как я подозреваю, класс должен быть установлен в папке jre/ext
и все.
В другом месте есть проект, который сделал что-то похожее на поддержку "gl_ES" (Галисийский)
Вот инструкции о том, как его установить и что это такое:
http://www.javagalician.org/install.html
Итак, в основном, если вы хотите предоставить кучу экземпляров для Италии (или даже лучше, один), вам просто нужно создать один экземпляр NumberFormatProvider и заставить его отвечать на все языки.имеется в наличии.