Как получить Locale из его строкового представления в Java? - PullRequest
95 голосов
/ 26 марта 2010

Есть ли удобный способ получения экземпляра Locale из его "программного имени", возвращаемого методом toString() Locale? Очевидным и уродливым решением будет синтаксический анализ строки и затем создание нового экземпляра Locale в соответствии с этим, но, может быть, есть более подходящее решение для этого?

Необходимо, чтобы я хотел сохранить некоторые настройки для конкретной локали в базе данных SQL, включая сами локали, но было бы некрасиво помещать туда сериализованные объекты локали. Я бы предпочел хранить их строковые представления, которые кажутся достаточно адекватными в деталях.

Ответы [ 12 ]

1 голос
/ 10 июля 2012

Потому что я только что это реализовал:

В Groovy / Grails это будет:

def locale = Locale.getAvailableLocales().find { availableLocale ->
      return availableLocale.toString().equals(searchedLocale)
}
1 голос
/ 26 марта 2010

Ну, я бы вместо этого сохранил конкатенацию строк Locale.getISO3Language(), getISO3Country() и getVariant () в качестве ключа, что позволило бы мне позже вызвать конструктор Locale(String language, String country, String variant).

действительно, использование displayLanguage подразумевает использование языка локали для его отображения, что делает его зависимым от локали, в отличие от кода языка iso.

Например, ключ локали можно сохранить как

en_EN
en_US

и так далее ...

...