Отображение языка на страны в Java? - PullRequest
1 голос
/ 13 марта 2011

У меня есть значки стран Famfamfam, теперь я хотел бы показать флаг для языка в моем приложении. Есть ли способ сопоставить язык стране? Я знаю, что может быть много стран, использующих один и тот же язык, или страны могут использовать много языков. Но, скорее всего, все языки используются в некоторых странах, поэтому есть ли способ сопоставить языки странам, чтобы я мог отображать значки флагов для языков?

Ответы [ 3 ]

2 голосов
/ 13 марта 2011

JRE предоставляет вам информацию по умолчанию Locale для текущей установки независимо от платформы.Там у вас есть информация о стране и языке.Пользователи могут настроить эти параметры в соответствии со своими потребностями.

Все остальное - сопоставить код country_language, например, с файлом imgae (DE_de.jpg).

1 голос
/ 13 марта 2011

Во-первых, не делай этого. Флаги стран не годятся языковые индикаторы , они являются индикаторами стран, и вы часто будете оскорблять своих пользователей, если используете флаг другой страны, кроме их собственного, для указания их языка - или есть несколько одинаковых флагов для разных языков, на которых говорят в этой стране (в Азии и Африке это часто бывает).

Существует только очень небольшое количество языков, которые на самом деле имеют собственные флаги, например эсперанто.


Если вы действительно хотите это сделать, есть несколько способов:

  • Создайте базу данных языка / страны самостоятельно, например, как показал Йохан. Или еще лучше, флаг базы данных language =>, так как это то, что вы действительно хотите (и это также поддерживает флаг эсперанто).

  • Вы можете спросить свою Java JRE о поддерживаемых локалях (Locale.getAvailableLocales), отсортировать их по языку и выбрать случайную страну из списка поддерживаемых вариантов страны для этого языка. Часто будет только один, поэтому нет проблем. Для больших языков, таких как английский, арабский, испанский, французский, вы можете выбрать один флаг страны случайным образом.

0 голосов
/ 13 марта 2011

Звучит так, как будто enums может быть полезным, например,

enum Language {
   Swedish(Country.Sweden), 
   English(Country.England, Country.USA), 
   German(Country.Germany);

   private Country[] countries;
   Language(Country... countries) {
       this.countries = countries;
   }

   public Country[] getCountries() {
       return this.countries;
   }
}

enum Country {
   Sweden, 
   Germany, 
   England,
   USA;
}

, который может быть использован как:

Language lang = Language.English;
lang.getCountries(); // England, USA

Следующее предложение будет позволить Country взятьFlag в качестве аргумента конструктора (так же, как Language принимает Country).Тогда вы можете использовать что-то вроде:

for(Country c : Language.English.getCountries()) {
    System.out.println(c.getFlag());
}
...