Saturday, April 25, 2009

Getting Languages list in Java

In this post: Getting countries list in Java I wrote about how to get countries list in Java. Getting languages list is quite similar. In fact by making small changes to the code on the countries post languages list can be easily taken.

In order to get the countries list we used this static method of Locale class: Locale.getISOCountries(). Getting languages list is quite similar and can be taken by using this method: Locale.getISOLanguages(). This method returns String array containing all language codes compatible with ISO 639 standard (2 letters code).

Similar to the countries list, we will use a class named Language to store information of a single language:

package com.bashan.blog;
public class Language {
  private String languageCode;
  private String name;
  public Language() {
  }
  public Language(String languageCode, String name) {
    this.languageCode = languageCode;
    this.name = name;
  }
  public String getLanguageCode() {
    return languageCode;
  }
  public void setLanguageCode(String languageCode) {
    this.languageCode = languageCode;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String toString() {
    return languageCode + ", " + name;
  }
}
And the class LanguageUtil is very similar to CountyUtil, but instead of countries it returns languages:
package com.bashan.blog;
import java.util.*;
public class LanguageUtil {
  public static List<Language> getLanguages(final Locale inLocale) {
    String[] languageCodes = Locale.getISOLanguages();
    List<Language> languages = new ArrayList<Language>(languageCodes.length);
    for (String languageCode : languageCodes) {
      languages.add(new Language(languageCode, new Locale(languageCode, "").getDisplayLanguage(inLocale)));
    }
    Collections.sort(languages, new Comparator<Language>() {
      public int compare(Language c1, Language c2) {
        return c1.getName().compareTo(c2.getName());
      }
    });
    return languages;
  }
  public static Map<String, String> getLanguagesMap(final Locale inLocale) {
    List<Language> countries = getLanguages(inLocale);
    Map<String, String> countriesMap = new LinkedHashMap<String, String>(countries.size());
    for (Language country : countries) {
      countriesMap.put(country.getLanguageCode(), country.getName());
    }
    return countriesMap;
  }
  public static void printLanguages(List<Language> languages) {
    for (Language language : languages) {
      System.out.println(language);
    }
  }
  public static void main(String[] args) {
    // Get list of countries in US English
    System.out.println("---- List of languages in English ----");
    List<Language> languages = getLanguages(Locale.US);
    printLanguages(languages);
    System.out.println("\n\n---- List of languages in Japanese ----");
    // Get list of countries in Japanese
    languages = getLanguages(Locale.JAPANESE);
    printLanguages(languages);
  }
}

And the output for our small test program, which prints all languages once in English and once in Japanese:
---- List of languages in English ----
ab, Abkhazian
aa, Afar
af, Afrikaans
ak, Akan
sq, Albanian
am, Amharic
ar, Arabic
an, Aragonese
hy, Armenian
as, Assamese
av, Avaric
ae, Avestan
ay, Aymara
az, Azerbaijani
bm, Bambara
ba, Bashkir
eu, Basque
be, Belarusian
bn, Bengali
bh, Bihari
bi, Bislama
bs, Bosnian
br, Breton
bg, Bulgarian
my, Burmese
ca, Catalan
ch, Chamorro
ce, Chechen
zh, Chinese
cu, Church Slavic
cv, Chuvash
kw, Cornish
co, Corsican
cr, Cree
hr, Croatian
cs, Czech
da, Danish
dv, Divehi
nl, Dutch
dz, Dzongkha
en, English
eo, Esperanto
et, Estonian
ee, Ewe
fo, Faroese
fj, Fijian
fi, Finnish
fr, French
fy, Frisian
ff, Fulah
gl, Gallegan
lg, Ganda
ka, Georgian
de, German
el, Greek
kl, Greenlandic
gn, Guarani
gu, Gujarati
ht, Haitian
ha, Hausa
he, Hebrew
iw, Hebrew
hz, Herero
hi, Hindi
ho, Hiri Motu
hu, Hungarian
is, Icelandic
io, Ido
ig, Igbo
id, Indonesian
in, Indonesian
ia, Interlingua
ie, Interlingue
iu, Inuktitut
ik, Inupiaq
ga, Irish
it, Italian
ja, Japanese
jv, Javanese
kn, Kannada
kr, Kanuri
ks, Kashmiri
kk, Kazakh
km, Khmer
ki, Kikuyu
rw, Kinyarwanda
ky, Kirghiz
kv, Komi
kg, Kongo
ko, Korean
ku, Kurdish
kj, Kwanyama
lo, Lao
la, Latin
lv, Latvian
li, Limburgish
ln, Lingala
lt, Lithuanian
lu, Luba-Katanga
lb, Luxembourgish
mk, Macedonian
mg, Malagasy
ms, Malay
ml, Malayalam
mt, Maltese
gv, Manx
mi, Maori
mr, Marathi
mh, Marshallese
mo, Moldavian
mn, Mongolian
na, Nauru
nv, Navajo
ng, Ndonga
ne, Nepali
nd, North Ndebele
se, Northern Sami
no, Norwegian
nb, Norwegian Bokmål
nn, Norwegian Nynorsk
ny, Nyanja
oc, Occitan
oj, Ojibwa
or, Oriya
om, Oromo
os, Ossetian
pi, Pali
pa, Panjabi
fa, Persian
pl, Polish
pt, Portuguese
ps, Pushto
qu, Quechua
rm, Raeto-Romance
ro, Romanian
rn, Rundi
ru, Russian
sm, Samoan
sg, Sango
sa, Sanskrit
sc, Sardinian
gd, Scottish Gaelic
sr, Serbian
sn, Shona
ii, Sichuan Yi
sd, Sindhi
si, Sinhalese
sk, Slovak
sl, Slovenian
so, Somali
nr, South Ndebele
st, Southern Sotho
es, Spanish
su, Sundanese
sw, Swahili
ss, Swati
sv, Swedish
tl, Tagalog
ty, Tahitian
tg, Tajik
ta, Tamil
tt, Tatar
te, Telugu
th, Thai
bo, Tibetan
ti, Tigrinya
to, Tonga
ts, Tsonga
tn, Tswana
tr, Turkish
tk, Turkmen
tw, Twi
ug, Uighur
uk, Ukrainian
ur, Urdu
uz, Uzbek
ve, Venda
vi, Vietnamese
vo, Volapük
wa, Walloon
cy, Welsh
wo, Wolof
xh, Xhosa
ji, Yiddish
yi, Yiddish
yo, Yoruba
za, Zhuang
zu, Zulu


---- List of languages in Japanese ----
is, アイスランド語
ay, アイマラ語
ga, アイルランド語
ak, アカン語
az, アゼルバイジャン語
as, アッサム語
aa, アファール語
af, アフリカーンス語
ab, アブハズ語
am, アムハラ語
an, アラゴン語
ar, アラビア語
sq, アルバニア語
hy, アルメニア語
av, アヴァル語
ae, アヴェスタ語
it, イタリア語
ji, イディッシュ語
yi, イディッシュ語
io, イド語
iu, イヌクウティトット語
ik, イヌピアック語
ig, イボ語
id, インドネシア語
in, インドネシア語
ug, ウイグル語
cy, ウェールズ語
wo, ウォロフ語
uk, ウクライナ語
uz, ウズベク語
ur, ウルドゥー語
ee, エウェ語
et, エストニア語
eo, エスペラント語
oj, オジブワ語
os, オセチア語
nl, オランダ語
or, オリヤー語
kk, カザフ語
ks, カシミール語
ca, カタロニア語
kr, カヌリ語
kn, カンナダ語
km, カンボジア語
om, ガラ語
gl, ガリシア語
lg, ガンダ語
ki, キクユ語
ky, キルギス語
el, ギリシア語
kj, クゥニャマ語
cr, クリー語
ku, クルド語
hr, クロアチア語
gu, グジャラート語
kl, グリーンランド語
ka, グルジア語
gn, グワラニ語
qu, ケチュア語
xh, コサ語
kv, コミ語
co, コルシカ語
kg, コンゴ語
kw, コーンウォール語
sm, サモア語
sc, サルディニア語
sg, サンゴ語
sa, サンスクリット語
ss, シスワティ語
sn, ショナ語
sd, シンド語
si, シンハラ語
jv, ジャワ語
sv, スウェーデン語
gd, スコットランド・ゲール語
es, スペイン語
sk, スロバキア語
sl, スロベニア語
sw, スワヒリ語
su, スンダ語
zu, ズールー語
st, セソト語
sr, セルビア語
so, ソマリ語
th, タイ語
tl, タガログ語
tg, タジク語
tt, タタール語
ty, タヒチ語
ta, タミール語
cs, チェコ語
ce, チェチェン語
bo, チベット語
ch, チャモロ語
cv, チュヴァシュ語
za, チワン語
ts, ツォンガ語
tn, ツワナ語
ti, ティグリニア語
te, テルグ語
dv, ディベヒ語
da, デンマーク語
tw, トゥイ語
tk, トルクメン語
tr, トルコ語
to, トンガ語
de, ドイツ語
na, ナウル語
nv, ナバホ語
ny, ニャンジャ語
ne, ネパール語
no, ノルウェー語
nn, ノルウェー語 (ニューノルスク)
nb, ノルウェー語 (ボークモール)
ht, ハイチ語
ha, ハウサ語
hu, ハンガリー語
ba, バシキール語
eu, バスク語
bm, バンバラ語
ps, パシュトー語
pa, パンジャブ語
pi, パーリ語
ho, ヒリ・モツ語
hi, ヒンディー語
bi, ビスラマ語
bh, ビハール語
my, ビルマ語
fj, フィジー語
fi, フィンランド語
fo, フェロー語
fr, フランス語
ff, フラ語
fy, フリジア語
bg, ブルガリア語
br, ブルトン語
dz, ブータン語
oc, プロバンス語
he, ヘブライ語
iw, ヘブライ語
hz, ヘレロ語
vi, ベトナム語
bn, ベンガル語
ve, ベンダ語
fa, ペルシア語
bs, ボスニア語
vo, ボラピュク語
pt, ポルトガル語
pl, ポーランド語
mi, マオリ語
mk, マケドニア語
ms, マライ語
mg, マラガシー語
ml, マラヤーラム語
mr, マラーティー語
mt, マルタ語
gv, マン島語
mh, マーシャル語
mo, モルダビア語
mn, モンゴル語
yo, ヨルバ語
lo, ラオ語
la, ラテン語
lv, ラトビア語 (レット語)
lt, リトアニア語
ln, リンガラ語
li, リンブルグ語
lb, ルクセンブルク語
lu, ルバ語
rw, ルワンダ語
rn, ルンジ語
ro, ルーマニア語
rm, レト=ロマン語
ru, ロシア語
wa, ワロン語
ng, ンドンガ語
zh, 中国語
se, 北サミ語
nd, 北ンデベレ語
nr, 南ンデベレ語
ii, 四川語
ia, 国際語
ie, 国際語
cu, 教会スラブ語
ja, 日本語
be, 白ロシア語
en, 英語
ko, 韓国語

No comments:

Post a Comment