Существует ли изящный способ преобразовать ISO 639-2 (3 буквы) коды языка к Локалям Java?

В вашем сообщении об ошибке cors четко сказано, что вам нужно использовать http при выполнении запроса

$.ajax({
    type: "GET",
    url: "http://localhost:3000/send",
    beforeSend:function(){
             $(".loading_msg").hide();
        },
    complete:function(){
             $(".loading_msg").show();
        }
});

15
задан PeterP 23 March 2009 в 16:17
поделиться

3 ответа

Я не знаю, существует ли простой способ преобразовать с 3 буквами в версии с 2 буквами, но в худшем варианте развития событий, Вы могли создать Карту их, как так:

String[] languages = Locale.getISOLanguages();
Map<String, Locale> localeMap = new HashMap<String, Locale>(languages.length);
for (String language : languages) {
    Locale locale = new Locale(language);
    localeMap.put(locale.getISO3Language(), locale);
}

Теперь можно искать локали с помощью вещей как localeMap.get("eng");

Править: Измененный путь карта создается. Теперь должен быть один объект на язык.

Редактирование 2: это было некоторое время, но изменило код для использования фактической длины массива языков при инициализации Карты.

20
ответ дан 1 December 2019 в 03:24
поделиться

Можно использовать конструктора Locale(String language), где язык является 2 кодами буквы ISO-639-1. Я думаю, что самый легкий способ преобразовать ISO-639-2 в ISO-639-1 состоял бы в том, чтобы создать HashMap<String,String> постоянный.

2
ответ дан 1 December 2019 в 03:24
поделиться

Некоторый измененный код из моего проекта, который имеет подобное требование. У нас есть наш собственный исторический формат часового пояса, таким образом, мы не можем пользоваться стандартными библиотеками.

public class MyProjectTimeZoneFactory  {

   private static Map timeZoneDb;

   /**
   * Set up our timezone id mappings; call this from any constructor
   * or static method that needs it.
   */
   private static void init() {
      if(null == TimeZoneDb) {
         timeZoneDb = new HashMap();   // Maybe a TreeMap would be more appropriate
         timeZoneDb.put("     ","GMT+00");
         timeZoneDb.put("EAD  ","GMT+10");
         timeZoneDb.put("JST  ","GMT+9");
         // etc.
       }
   }

   public static TimeZone getTimeZone(String id) 
                          throws CommandFormatException {
       init();

       TimeZone tz;
       if(timeZoneDb.containsKey(id)) {
           tz = TimeZone.getTimeZone((String)timeZoneDb.get(id));
       } else {
           throw new CommandFormatException("Invalid Timezone value");
       }

       return tz;
   }

 }

Вы могли утверждать, что будет лучше иметь карту в конфигурации, а не коде - возможно, в файле свойств. Это может быть верно - но действительно помнит правило Прагматически настроенных Программистов 'Ваш не испытание необходимость в нем'.

0
ответ дан 1 December 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: