Seite 1 von 1

Zweifelsfrei die Sprache feststellen

Verfasst: Freitag 24. September 2010, 16:20
von rhersel
Wie kann ich zweifelsfrei die Sprache feststellen?

Code: Alles auswählen

locale.getdefaultlocale()
kann mir bei einem deutschen System diverse Sprachcodes liefern: de_CH, de_AT, nds_DE, ...

Ich möchte aber einfach nur wissen ob es Deutsch ist oder nicht. Dabei interessiert mich nicht ob es Niedersachsen, Schweiz oder Österreich ist. Muss ich dafür tatsächlich auf alle Möglichen "_de, de_, _DE" Varianten testen?

Re: Zweifelsfrei die Sprache feststellen

Verfasst: Freitag 24. September 2010, 17:04
von BlackJack
@rhersel: Da kann auch "german", "deutsch", "87872", oder sonstwas kommen, das ist nicht standardisiert. Also ist die Antwort auf Deine Frage "leider gar nicht".

Re: Zweifelsfrei die Sprache feststellen

Verfasst: Freitag 24. September 2010, 17:09
von gkuhl
Für mich sieht das so aus, als stehe der erste Teil für die Sprache (de: deutsch, en: englisch, nds: niederdeutsch...) und der zweite Teil für das Land (DE: Deutschland, CH: Schweiz...). Niederdeutsch ist eine eigenständige Sprache und "nds_DE" steht für in Deutschland gesprochenes niederdeutsch. Also nur den ersten Teil testen, wenn es um die Sprache geht. Ansonsten wäre "fr_DE" und "en_DE" im Test ebenfalls deutsch.

Du könntest wie folgt testen (wenn es denn standardisiert wäre, siehe BlackJacks Antwort):

Code: Alles auswählen

>>> locale = 'de_DE'
>>> locale.split('_')[0] in ['de', 'nds']
True
>>> locale = 'nds_DE'
>>> locale.split('_')[0] in ['de', 'nds']
True
Grüße
Gerrit

Re: Zweifelsfrei die Sprache feststellen

Verfasst: Freitag 24. September 2010, 17:34
von Dav1d

Code: Alles auswählen

>>> locale = 'de_DE'
>>> any(l.lower() == 'de' for l in locale.split('_'))
True
>>> locale = 'nds_DE'
>>> any(l.lower() == 'de' for l in locale.split('_'))
True
>>> 
Mit any gehts IMHO schöner/besser.

//Edit: sry nicht genau genug gelesen

Re: Zweifelsfrei die Sprache feststellen

Verfasst: Samstag 25. September 2010, 12:35
von noisefloor
Hallo,

bei mir (Ubuntu 10.04.01) kommt raus: ('de_DE', 'UTF8')

Ob unter bestimmten Umständen / Konfigurationen auch nur 'UTF8' rauskommen kann weiß ich nicht... Dann wäre jeder Test auf 'de' ja so wie so sinnlos.

Was ist denn der Hintergrund der Frage? Vielleicht gibt es eine alternative Lösung.

Gruß, noisefloor

Re: Zweifelsfrei die Sprache feststellen

Verfasst: Samstag 25. September 2010, 13:14
von rhersel
Danke für die bisherigen Antworten.

Der Hintergrund der Frage ist ganz einfach: In meiner Anwendung muss ich je nach Sprache die richtige Übersetzung der Labels, Messages und der Hilfe auslösen (gettext() usw.). Dafür muss ich aber eindeutig feststellen welche Sprache der Anwender hat. Dabei ist nur von Interesse ob es DE, EN, FR usw. ist.

Ich werde wohl den Vorschlag:

Code: Alles auswählen

locale = 'nds_DE'
any(l.lower() == 'de' for l in locale.split('_'))
verwenden.

Oder besser so:

Code: Alles auswählen

loc = locale.getdefaultlocale()[0].lower().split('_')
if 'de' in loc: print 'hier wird Deutsch gesprochen'