Язык Java в строку - PullRequest
       23

Язык Java в строку

2 голосов
/ 02 марта 2012

Мне нужно преобразовать Locale в String. Как это сделать:

У меня есть Locale loc и String loc1, мне нужно преобразовать значение из локали в String.Спасибо

Ответы [ 3 ]

22 голосов
/ 03 марта 2012

Это действительно зависит от используемой вами версии Java.Когда вы говорите конвертировать в строку, я предполагаю, что вам может понадобиться:

  1. Преобразовать его в идентификатор локали, чтобы вы могли легко воссоздать локаль в будущем.
  2. Передать какСтроковое представление некоторой части системы.
  3. Получить (возможно, родное) имя языка, страны или объекта Locale.

Другие указали вам документацию, но я думаю, что этоЛучше пройтись по нескольким возможностям.

Объявление 1. Если вам нужно преобразовать в идентификатор Locale, лучший метод для Java 7 (который на самом деле не существовал в предыдущих выпусках) - toLanguageTag() .

Это потому, что вы можете легко хранить идентификатор локали в строке (включая все параметры, такие как сценарий, расширения Unicode и т. Д.) И воссоздать объект локали, используя forLanguageTag (String) без потери информации.Simple toString() не содержит этого свойства.
Следующий фрагмент кода иллюстрирует мою точку зрения:

Locale locale = Locale.getDefault(Locale.Category.DISPLAY);
String localeId = locale.toLanguageTag();
Locale recreatedLocale = Locale.forLanguageTag(localeId);

До Java 7 вам действительно нужно было использовать toString() и вручную обрабатывать страны и варианты (дляЛокаль состоит из трех идентификаторов, разделенных и подчеркивания, т.е. no_NO_NY.)

Ad 2. Если вам нужно передать Локаль в другую часть системы (например, веб-сервис), toString() может и может бытьЭто не то что вы ищете.Это из-за того, что я написал выше - если вам нужен dash в качестве разделителя и вас не особо волнуют варианты, я бы предпочел методы getLanguage () и getCountry () чем обычный toString():

Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);
String localeId = MessageFormat.format("{0}-{1}", 
                                       uiLocale.getLanguage(),
                                       uiLocale.getCountry());

Этот метод должен хорошо работать с версиями Java начиная с версии 1.4.

Объявление 3. Если вы хотите представить отображаемое имя языка, страны или языка, поэтомуэтот пользователь может выбрать действительную локаль (то есть в своем профиле), которую вы, вероятно, ищете: getDisplayCountry (локаль) , getDisplayLanguage (локаль) и getDisplayName (локаль)) .Вы можете использовать их для отображения имен на целевом языке пользователя (при условии, что JVM имеет соответствующие переводы, что верно для многих языков):

Locale uiLocale = Locale.getDefault(Locale.Category.DISPLAY);
String languageName = uiLocale.getDisplayLanguage(uiLocale);
String countryName = uiLocale.getDisplayLanguage(uiLocale);
// usually something like langage (country), i.e. polski (Polska)
String localeName = uiLocale.getDisplayName(uiLocale);
2 голосов
/ 02 марта 2012

В зависимости от того, что вы хотите с ним сделать, вы можете использовать метод toString класса Locale:

http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html#toString%28%29

0 голосов
/ 20 января 2016

Это очень просто, просто используйте следующий код, учитывая, что вы используете локаль для преобразования из текущей даты каландра в хиджры Каландера.

    Chronology iso = ISOChronology.getInstanceUTC();
    Chronology hijri = IslamicChronology.getInstanceUTC();
    LocalDate todayIso = new LocalDate(2016, 1,
            20, iso);
    LocalDate todayHijri = new LocalDate(todayIso.toDateTimeAtStartOfDay(),
            hijri);
    String currenthijridate = "" + todayHijri;
    /*currenthijridate will will appear as 1437-04-08 which is a string now its simple String=""+locale*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...