Locale Beschreibung in anderen Sprachen darstellen

Thomas Darimont

Erfahrenes Mitglied
Hallo,

möchte man in einer internationalisierbaren Anwendung dem Anwender die Möglichkeit geben die Sprache der Anwendung auszuwählen, so sollte man schon die Auswahl der Sprachen selbst in der für den Benutzer passenden Sprache anbieten.

Hier ein kleines Beispiel dazu.
Java:
package de.tutorials;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Locale;

public class LanguageTranslation {
	public static void main(String[] args) {
		Locale defaultLocale = Locale.getDefault();
		System.out.println("Current Locale is " + defaultLocale);
		for (Locale locale : getLocalesSortedByLocaleCode()) {
			System.out.printf("Current Locale rendered in : %s (%s)", locale,	locale.getDisplayName(defaultLocale))
					  .println();

			System.out.printf("%s %s %s %s",
					defaultLocale.getDisplayName(locale),
					defaultLocale.getDisplayLanguage(locale),
					defaultLocale.getDisplayCountry(locale),
					defaultLocale.getDisplayVariant(locale)).println();
		}
	}

	static Locale[] getLocalesSortedByLocaleCode() {
		Locale[] locales = Locale.getAvailableLocales().clone();
		Arrays.sort(locales, new Comparator<Locale>() {
			@Override
			public int compare(Locale first, Locale second) {
				return first.toString().compareTo(second.toString());
			}
		});
		return locales;
	}
}

Ausgabe:
Code:
Current Locale: de_DE
Current Locale rendered in : ar (Arabisch)
German (Germany) German Germany 
Current Locale rendered in : ar_AE (Arabisch (Vereinigte Arabische Emirate))
German (Germany) German Germany 
Current Locale rendered in : ar_BH (Arabisch (Bahrain))
German (Germany) German Germany 
Current Locale rendered in : ar_DZ (Arabisch (Algerien))
German (Germany) German Germany 
Current Locale rendered in : ar_EG (Arabisch (Ägypten))
German (Germany) German Germany 
Current Locale rendered in : ar_IQ (Arabisch (Irak))
German (Germany) German Germany 
Current Locale rendered in : ar_JO (Arabisch (Jordanien))
German (Germany) German Germany 
Current Locale rendered in : ar_KW (Arabisch (Kuwait))
German (Germany) German Germany 
Current Locale rendered in : ar_LB (Arabisch (Libanon))
German (Germany) German Germany 
Current Locale rendered in : ar_LY (Arabisch (Libyen))
German (Germany) German Germany 
Current Locale rendered in : ar_MA (Arabisch (Marokko))
German (Germany) German Germany 
Current Locale rendered in : ar_OM (Arabisch (Oman))
German (Germany) German Germany 
Current Locale rendered in : ar_QA (Arabisch (Katar))
German (Germany) German Germany 
Current Locale rendered in : ar_SA (Arabisch (Saudi-Arabien))
German (Germany) German Germany 
Current Locale rendered in : ar_SD (Arabisch (Sudan))
German (Germany) German Germany 
Current Locale rendered in : ar_SY (Arabisch (Syrien))
German (Germany) German Germany 
Current Locale rendered in : ar_TN (Arabisch (Tunesien))
German (Germany) German Germany 
Current Locale rendered in : ar_YE (Arabisch (Jemen))
German (Germany) German Germany 
Current Locale rendered in : be (Belorussisch)
German (Germany) German Germany 
Current Locale rendered in : be_BY (Belorussisch (Belarus))
German (Germany) German Germany 
Current Locale rendered in : bg (Bulgarisch)
German (Germany) German Germany 
Current Locale rendered in : bg_BG (Bulgarisch (Bulgarien))
German (Germany) German Germany 
Current Locale rendered in : ca (Katalanisch)
alemany (Alemanya) alemany Alemanya 
Current Locale rendered in : ca_ES (Katalanisch (Spanien))
alemany (Alemanya) alemany Alemanya 
Current Locale rendered in : cs (Tschechisch)
German (Germany) German Germany 
Current Locale rendered in : cs_CZ (Tschechisch (Tschechische Republik))
German (Germany) German Germany 
Current Locale rendered in : da (Dänisch)
German (Germany) German Germany 
Current Locale rendered in : da_DK (Dänisch (Dänemark))
German (Germany) German Germany 
Current Locale rendered in : de (Deutsch)
Deutsch (Deutschland) Deutsch Deutschland 
Current Locale rendered in : de_AT (Deutsch (Österreich))
Deutsch (Deutschland) Deutsch Deutschland 
Current Locale rendered in : de_CH (Deutsch (Schweiz))
Deutsch (Deutschland) Deutsch Deutschland 
Current Locale rendered in : de_DE (Deutsch (Deutschland))
Deutsch (Deutschland) Deutsch Deutschland 
Current Locale rendered in : de_LU (Deutsch (Luxemburg))
Deutsch (Deutschland) Deutsch Deutschland 
Current Locale rendered in : el (Griechisch)
****************? (****************) ****************? **************** 
Current Locale rendered in : el_CY (Griechisch (Zypern))
****************? (****************) ****************? **************** 
Current Locale rendered in : el_GR (Griechisch (Griechenland))
****************? (****************) ****************? **************** 
Current Locale rendered in : en (Englisch)
German (Germany) German Germany 
Current Locale rendered in : en_AU (Englisch (Australien))
German (Germany) German Germany 
Current Locale rendered in : en_CA (Englisch (Kanada))
German (Germany) German Germany 
Current Locale rendered in : en_GB (Englisch (Vereinigtes Königreich))
German (Germany) German Germany 
Current Locale rendered in : en_IE (Englisch (Irland))
German (Germany) German Germany 
Current Locale rendered in : en_IN (Englisch (Indien))
German (Germany) German Germany 
Current Locale rendered in : en_MT (Englisch (Malta))
German (Germany) German Germany 
Current Locale rendered in : en_NZ (Englisch (Neuseeland))
German (Germany) German Germany 
Current Locale rendered in : en_PH (Englisch (Philippinen))
German (Germany) German Germany 
Current Locale rendered in : en_SG (Englisch (Singapur))
German (Germany) German Germany 
Current Locale rendered in : en_US (Englisch (Vereinigte Staaten von Amerika))
German (Germany) German Germany 
Current Locale rendered in : en_ZA (Englisch (Südafrika))
German (Germany) German Germany 
Current Locale rendered in : es (Spanisch)
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_AR (Spanisch (Argentinien))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_BO (Spanisch (Bolivien))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_CL (Spanisch (Chile))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_CO (Spanisch (Kolumbien))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_CR (Spanisch (Costa Rica))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_DO (Spanisch (Dominikanische Republik))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_EC (Spanisch (Ecuador))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_ES (Spanisch (Spanien))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_GT (Spanisch (Guatemala))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_HN (Spanisch (Honduras))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_MX (Spanisch (Mexiko))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_NI (Spanisch (Nicaragua))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_PA (Spanisch (Panama))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_PE (Spanisch (Peru))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_PR (Spanisch (Puerto Rico))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_PY (Spanisch (Paraguay))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_SV (Spanisch (El Salvador))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_US (Spanisch (Vereinigte Staaten von Amerika))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_UY (Spanisch (Uruguay))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : es_VE (Spanisch (Venezuela))
alemán (Alemania) alemán Alemania 
Current Locale rendered in : et (Estnisch)
German (Germany) German Germany 
Current Locale rendered in : et_EE (Estnisch (Estland))
German (Germany) German Germany 
Current Locale rendered in : fi (Finnisch)
saksa (Saksa) saksa Saksa 
Current Locale rendered in : fi_FI (Finnisch (Finnland))
saksa (Saksa) saksa Saksa 
Current Locale rendered in : fr (Französisch)
allemand (Allemagne) allemand Allemagne 
Current Locale rendered in : fr_BE (Französisch (Belgien))
allemand (Allemagne) allemand Allemagne 
Current Locale rendered in : fr_CA (Französisch (Kanada))
allemand (Allemagne) allemand Allemagne 
Current Locale rendered in : fr_CH (Französisch (Schweiz))
allemand (Allemagne) allemand Allemagne 
Current Locale rendered in : fr_FR (Französisch (Frankreich))
allemand (Allemagne) allemand Allemagne 
Current Locale rendered in : fr_LU (Französisch (Luxemburg))
allemand (Allemagne) allemand Allemagne 
Current Locale rendered in : ga (Irisch)
Gearmáinis (An Ghearmáin) Gearmáinis An Ghearmáin 
Current Locale rendered in : ga_IE (Irisch (Irland))
Gearmáinis (An Ghearmáin) Gearmáinis An Ghearmáin 
Current Locale rendered in : hi_IN (Hindi (Indien))
German (Germany) German Germany 
Current Locale rendered in : hr (Kroatisch)
German (Germany) German Germany 
Current Locale rendered in : hr_HR (Kroatisch (Kroatien))
German (Germany) German Germany 
Current Locale rendered in : hu (Ungarisch)
German (Germany) German Germany 
Current Locale rendered in : hu_HU (Ungarisch (Ungarn))
German (Germany) German Germany 
Current Locale rendered in : in (Indonesisch)
Jerman (Jerman) Jerman Jerman 
Current Locale rendered in : in_ID (Indonesisch (Indonesien))
Jerman (Jerman) Jerman Jerman 
Current Locale rendered in : is (Isländisch)
German (Germany) German Germany 
Current Locale rendered in : is_IS (Isländisch (Island))
German (Germany) German Germany 
Current Locale rendered in : it (Italienisch)
tedesco (Germania) tedesco Germania 
Current Locale rendered in : it_CH (Italienisch (Schweiz))
tedesco (Germania) tedesco Germania 
Current Locale rendered in : it_IT (Italienisch (Italien))
tedesco (Germania) tedesco Germania 
Current Locale rendered in : iw (Hebräisch)
German (Germany) German Germany 
Current Locale rendered in : iw_IL (Hebräisch (Israel))
German (Germany) German Germany 
Current Locale rendered in : ja (Japanisch)
******** (****?) ******** ****? 
Current Locale rendered in : ja_JP (Japanisch (Japan))
******** (****?) ******** ****? 
Current Locale rendered in : ja_JP_JP (Japanisch (Japan,JP))
******** (****?) ******** ****? 
Current Locale rendered in : ko (Koreanisch)
****? (****) ****? **** 
Current Locale rendered in : ko_KR (Koreanisch (Südkorea))
****? (****) ****? **** 
Current Locale rendered in : lt (Litauisch)
German (Germany) German Germany 
Current Locale rendered in : lt_LT (Litauisch (Litauen))
German (Germany) German Germany 
Current Locale rendered in : lv (Lettisch)
German (Germany) German Germany 
Current Locale rendered in : lv_LV (Lettisch (Lettland))
German (Germany) German Germany 
Current Locale rendered in : mk (Mazedonisch)
German (Germany) German Germany 
Current Locale rendered in : mk_MK (Mazedonisch (Mazedonien))
German (Germany) German Germany 
Current Locale rendered in : ms (Malay)
German (Jerman) German Jerman 
Current Locale rendered in : ms_MY (Malay (Malaysia))
German (Jerman) German Jerman 
Current Locale rendered in : mt (Maltesisch)
?ermani? (?ermanja) ?ermani? ?ermanja 
Current Locale rendered in : mt_MT (Maltesisch (Malta))
?ermani? (?ermanja) ?ermani? ?ermanja 
Current Locale rendered in : nl (Niederländisch)
German (Germany) German Germany 
Current Locale rendered in : nl_BE (Niederländisch (Belgien))
German (Germany) German Germany 
Current Locale rendered in : nl_NL (Niederländisch (Niederlande))
German (Germany) German Germany 
Current Locale rendered in : no (Norwegisch)
German (Germany) German Germany 
Current Locale rendered in : no_NO (Norwegisch (Norwegen))
German (Germany) German Germany 
Current Locale rendered in : no_NO_NY (Norwegisch (Norwegen,Nynorsk))
German (Germany) German Germany 
Current Locale rendered in : pl (Polnisch)
niemiecki (Niemcy) niemiecki Niemcy 
Current Locale rendered in : pl_PL (Polnisch (Polen))
niemiecki (Niemcy) niemiecki Niemcy 
Current Locale rendered in : pt (Portugiesisch)
alemão (Alemanha) alemão Alemanha 
Current Locale rendered in : pt_BR (Portugiesisch (Brasilien))
alemão (Alemanha) alemão Alemanha 
Current Locale rendered in : pt_PT (Portugiesisch (Portugal))
alemão (Alemanha) alemão Alemanha 
Current Locale rendered in : ro (Rumänisch)
German (Germany) German Germany 
Current Locale rendered in : ro_RO (Rumänisch (Rumänien))
German (Germany) German Germany 
Current Locale rendered in : ru (Russisch)
**************** (****************) **************** **************** 
Current Locale rendered in : ru_RU (Russisch (Russland))
**************** (****************) **************** **************** 
Current Locale rendered in : sk (Slowakisch)
German (Germany) German Germany 
Current Locale rendered in : sk_SK (Slowakisch (Slowakei))
German (Germany) German Germany 
Current Locale rendered in : sl (Slowenisch)
German (Germany) German Germany 
Current Locale rendered in : sl_SI (Slowenisch (Slowenien))
German (Germany) German Germany 
Current Locale rendered in : sq (Albanisch)
German (Germany) German Germany 
Current Locale rendered in : sq_AL (Albanisch (Albanien))
German (Germany) German Germany 
Current Locale rendered in : sr (Serbisch)
************? (************?) ************? ************? 
Current Locale rendered in : sr_BA (Serbisch (Bosnien und Herzegowina))
************? (************?) ************? ************? 
Current Locale rendered in : sr_CS (Serbisch (Serbien und Montenegro))
************? (************?) ************? ************? 
Current Locale rendered in : sr_ME (Serbisch (Montenegro))
************? (************?) ************? ************? 
Current Locale rendered in : sr_RS (Serbisch (Serbien))
************? (************?) ************? ************? 
Current Locale rendered in : sv (Schwedisch)
tyska (Tyskland) tyska Tyskland 
Current Locale rendered in : sv_SE (Schwedisch (Schweden))
tyska (Tyskland) tyska Tyskland 
Current Locale rendered in : th (Thai)
************? (************?) ************? ************? 
Current Locale rendered in : th_TH (Thai (Thailand))
************? (************?) ************? ************? 
Current Locale rendered in : th_TH_TH (Thai (Thailand,TH))
************? (************?) ************? ************? 
Current Locale rendered in : tr (Türkisch)
German (Germany) German Germany 
Current Locale rendered in : tr_TR (Türkisch (Türkei))
German (Germany) German Germany 
Current Locale rendered in : uk (Ukrainisch)
German (Germany) German Germany 
Current Locale rendered in : uk_UA (Ukrainisch (Ukraine))
German (Germany) German Germany 
Current Locale rendered in : vi (Vietnamesisch)
Ti?ng ****c (****c) Ti?ng ****c ****c 
Current Locale rendered in : vi_VN (Vietnamesisch (Vietnam))
Ti?ng ****c (****c) Ti?ng ****c ****c 
Current Locale rendered in : zh (Chinesisch)
**** (****) **** **** 
Current Locale rendered in : zh_CN (Chinesisch (China))
**** (****) **** **** 
Current Locale rendered in : zh_HK (Chinesisch (Hongkong))
**** (****) **** **** 
Current Locale rendered in : zh_SG (Chinesisch (Singapur))
**** (****) **** **** 
Current Locale rendered in : zh_TW (Chinesisch (Taiwan))
**** (****) **** ****

Bei mir wird unter Windows 7 Standardmäßig die Codepage (CP850 bzw. CP1252) verwendet wobei u.a. Zeichen aus dem Arabischen und Asiatischen Raum nicht korrekt dargestellt werden.
Wenn man die passenden Codepages installiert hat kann man jedoch in der Konsole mit dem Kommando chcp Codepage-Nummer (chcp 932) auf eine Codepage wechseln, welche die Zeichen darstellen kann.

Die Default-LocaleLkann man übrigens auch bequem über ein JVM Properties beim Aufruf setzen
( -Duser.language=it -Duser.region=IT für Italien):
Code:
C:\development\java\workspaces\sts233M1\de.tutorials.java.training>java -Duser.language=it -Duser.region=IT -cp ./target/classes de.tutorials.LanguageTranslation
Current Locale is it_IT
Current Locale rendered in : ar (arabo)
Italian (Italy) Italian Italy
Current Locale rendered in : ar_AE (arabo (Emirati Arabi Uniti))
Italian (Italy) Italian Italy
Current Locale rendered in : ar_BH (arabo (Bahrain))
Italian (Italy) Italian Italy
Current Locale rendered in : ar_DZ (arabo (Algeria))
...

Gruß Tom
 
Zurück