Mit C++ gibt es eine einfache und zuverlässige Möglichkeit zu erkennen, ob die englische oder englische englische Rechtschreibung besser zum Gebietsschema des Benutzers passt? Ich habe ein einfaches Desktop-C++ - Programm und möchte diesen ersten minimalen Internationalisierungsschritt durchführen. Meine Benutzeroberfläche verwendet das Wort Farbe/Farbe sehr viel und ich hoffe, dem Benutzer in 99% + Fällen die richtige Schreibweise ohne viel Raketenwissenschaft oder eine explizite Benutzeroption zu präsentieren.Ermitteln, ob die englische oder englische englische Rechtschreibung mit C++ kompatibel ist
Bearbeiten: Die angenommene Antwort unten ist gut. Um nur einige zusätzliche Informationen und eine vollständig nutzbare Lösung zu bieten, ist hier vielleicht die einfachste Möglichkeit zu bestimmen, ob Sie in Ihrer C++ - Anwendung amerikanisches oder britisches Englisch verwenden. Dies ist ein kleiner, aber nützlicher Schritt zur richtigen Internationalisierung. Es ist nützlich für US-Entwickler, die kulturell sensibel auf Englisch sprechende Personen außerhalb der USA reagieren möchten, und für andere englischsprachige Entwickler, die möchten, dass ihre Produkte in den USA ein wenig mehr zu Hause sind (ich bin im letzteren Lager).
Es ist keine perfekte Lösung, aber der Standardisierungsprozess hat keine perfekte und einfache Lösung geliefert. Ich gehe davon aus, dass zumindest die Verwendung dieses Codes die Farbe versus Farbe für einen kleineren Teil Ihrer Benutzer falsch erscheinen lässt, als wenn Sie einfach das eine oder andere auswählen, vorausgesetzt Ihr Produkt ist weit verbreitet.
#include <string>
#include <clocale>
setlocale(LC_MONETARY,"");
struct lconv * lc;
lc = localeconv();
std::string sym(lc->int_curr_symbol);
bool us_english = (sym=="USD" || sym=="PHP");
ich im Grunde US English gehe davon ist die Präferenz in den USA und in britischem Englisch anderswo, obwohl ich eine Ausnahme für ein Land gemacht habe, wo ich weiß, dass nicht der Fall zu sein (Philippinen).
Auf meinem Windows-System spiegelt dieses Programm sofort eine Änderung der Standardsprache wider, die von den Windows-Einstellungen oder der Systemsteuerung gesteuert wird. Auf diese Weise vermeiden Sie das Parsen von Strings, die von Betriebssystem zu Betriebssystem variieren können, und ich erwarte, dass es tragbar ist.
Ich werde meine eigene Lösung nicht verwenden, da ich in meinem speziellen Fall wxWidgets benutze, und wxWidgets liefert einen portablen Wrapper, der genau auf dieses Problem zugeschnitten ist (ich hätte vorher nachdenken sollen).
#include "wx/intl.h"
int lang = wxLocale::GetSystemLanguage();
bool us_english = (lang == wxLANGUAGE_ENGLISH_US);
Die explizite Benutzeroption könnte trotzdem nützlich sein. Wenn Sie ein Engländer in New York sind, bevorzugen Sie möglicherweise Farbe trotz des Unternehmensstandardgebiets. –