Eingestellte Landessprache unter Linux ermitteln



  • Hallo,
    heute schlag ich mit dem Problem herum, eine Anwendung, geschrieben in C++, von Windows nach Linux zu portieren.

    Um unter Windows die eingestellte Systemsprache zu ermitteln, wird mittels GetSystemDefaultLangID() (definiert in WinNls.h) die Sprach-ID ermittelt und mit PRIMARYLANGID( sprachID ) (definiert in Winnt.h) die jeweilige Sprache.

    Gibt es ähnliches für Linux?


  • Mod

    Sprache lässt sich aus der Umgebungsvariable LANG ermitteln. Das bekommt man systemunabhängig(!) auch über std::locale("").name() (wobei die Form des Namens dann aber systemabhängig ist).

    Ich muss aber fragen, was du mit dieser Information vor hast. Denn du willst das ja sicher nicht nur zur Befriedigung deiner Neugierde wissen. Wenn du vor hast, damit beispielsweise das Ein-/Ausgabeformat bestimmter Datentyp zu ändern (zum Beispiel "€123.456.789,12" statt "$123,456,789.12"), dann gibt es da viele weitere kleinteilige Einstellungen zu beachten. Die man auch wieder über Umgebungsvariablen/Locales ermitteln kann. Das gilt auch unter Windows. Aber das brauchst du gar nicht zu wissen, denn die Locales sind ja gerade dazu da, das für dich zu wissen. Auch für Textübersetzungen gibt es fertige Frameworks, die sicher ausgereifter sein werden als alles, was du selber programmierst. Daher: Was hast du letztendlich damit vor?



  • Hallo @SeppJ ,
    danke für die Antwort.
    Zu Deiner Frage. Nur was ganz einfaches; es werden drei Sprachen (deutsch, englisch und französisch) unterstützt und dementsprechende Text ausgegeben.


Anmelden zum Antworten