std::locale - unterstützte Werte



  • Hallo @all,

    ich befasse mich zur Zeit mit std::locales und stehe vor einem Problem.
    Wenn ich ein std::locacle erstellen möchte, brauche ich den "locale-Namen" (Oft fällt dabei als Beispiel: "en-EN").
    Soweit ich das verstanden habe, hat jedoch der c++ Standard nicht festgelegt, wie die Namen syntaktich aufgebaut sein sollen bzw. welche überhaupt unterstützt werden - es ist also systemabängig.
    Weiter ist es wohl so, dass die Posix-Betriebssysteme mittels "locale -a" (oder so) abfragen können, welche Sprachen unterstützt werden. Spätestens bei Windows funktioniert dieser Ansatz leider nicht mehr,
    Gibt es also eine Möglichkeit die Namen in Erfahrung zu bringen? Weiter wäre es noch interessant, wie man das globale std::locale am besten abgleicht, folgendes Szenario:

    if( locale::global().name() == "GER" )
    // Drink Beer
    else if( locale::global().name() =="UK" )
    // Eat Fish and Chips
    

    Oder muss ich für solche Anwendungen doch auf die systemabhängigen Aufrufe zurückgreifen? Wenn ja, wo ist dann der Sinn hinter std::locale, wenn ich als Programmierer sowieso die verschiedenen locales nicht richtig verwalten kann?

    Danke und mfG

    shft



  • Die std::locale .. eine im Grunde geniale Idee, in der Praxis aber mit dem Hang zum Rohrkrepierer.

    Die verfügbaren Namen hängen auch von der lokalen Installation des jeweiligen Betriebssystems ab.
    Falls Du unter Windows arbeitest, sollte Dir diese Seite weiter helfen: https://msdn.microsoft.com/en-us/library/hzz3tw78.aspx

    Gruß
    Werner


Log in to reply