[c] Systemsprache unter Windows rausfinden

Cusco

Erfahrenes Mitglied
Hi,

ich versuche schon den ganzen Tag ne Routimne zu schreiben die Festellt ob die Sprache die im System eingestellt ist, Deutsch ist. Weit bin ich nicht gekommen und folgene Routine funktioniert nicht.

Code:
#include <stdio.h>
#include <windows.h>

int main(void)
{
   DWORD LangID; 
   TCHAR Info[100];  
   
   LangID = GetSystemDefaultLangID();
   VerLanguageName(LangID,Info,sizeof(Info)); 
   printf("'%S'\n",Info);
   
  return (0);}

Ich denke mir aber das VerLanguageName() unnötig ist, es muss doch möglich sein, anhand der LangID die Sprache fest zu stellen, nur leider habe ich keine Passende Code-Tabelle gefunden :( Die Funktion VerLanguageName() gibt auch nur einen Leerstring zurück oder ist sogar nur für UNICODE ich benötige aber ASCII :(
 
Die LANG_xxx-Defines sind bei mir in winnt.h drin definiert.

LANG_GERMAN hat den Wert 07. Ich würde übrigens bei einer Sprachprüfung auch nur auf die Hauptsprache prüfen, die SubLangs weglassen (es gibt mehrere deutschsprachige Länder).

Einfach den Wert von GetSystemDefaultLangID maskiert prüfen:

Code:
if ( PRIMARYLANGID( GetSystemDefaultLangID() ) == LANG_GERMAN )
{
  // deutsch gefunden
}
 
Endurion hat gesagt.:
Die LANG_xxx-Defines sind bei mir in winnt.h drin definiert.

LANG_GERMAN hat den Wert 07. Ich würde übrigens bei einer Sprachprüfung auch nur auf die Hauptsprache prüfen, die SubLangs weglassen (es gibt mehrere deutschsprachige Länder).

Einfach den Wert von GetSystemDefaultLangID maskiert prüfen:

Code:
if ( PRIMARYLANGID( GetSystemDefaultLangID() ) == LANG_GERMAN )
{
  // deutsch gefunden
}

Gut :) Die Winnt.h wird übrigens gleich mit geladen wenn man die Windows.h nutzt, zumindest scheint es so. Frage sollte man Lieber Userdefault dafür nehmen? Ich denke mir, das ggf. das Userdefault auch gleich dem Systemdefault entspricht, andersrum wohl eher nicht.

Oder gibt es eine Funktion die zurück gibt welches Default gerade aktiv ist? Ich meine das Allgemein und nicht nur auf die Languane bezogen.
 
Was genau User und System-Default sind, bzw. den Unterschied habe ich leider auch nicht richtig rausgekriegt. Ich meine, das User-Default ist die Sprache, mit dem der User beim Anmelden hochkommt. Und dann gibt es glaube ich noch eine, da man ja die Sprache über die Language Bar für einzelne Applikationen umstellen kann.
 
Endurion hat gesagt.:
Was genau User und System-Default sind, bzw. den Unterschied habe ich leider auch nicht richtig rausgekriegt. Ich meine, das User-Default ist die Sprache, mit dem der User beim Anmelden hochkommt. Und dann gibt es glaube ich noch eine, da man ja die Sprache über die Language Bar für einzelne Applikationen umstellen kann.

Hmm, ich denke mir das so: Default ist die Globale einstellung, und User die Benutzer einstellung, den Windows kann doch mehere Benutzer verwalten, also das mehere Leute an den selben Computer hängen ohne das einer in die Daten des anderen schauen kann. Auch bei der Installation von Programmen wird ab und zu gefragt ob das Programm für Alle Benutzer oder nur für den der das Progamm installiert hat gelten soll, oder so ähnlich.
 
Zurück