Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como detectar idioma del sistema y que funcione en todos windows? (https://www.clubdelphi.com/foros/showthread.php?t=66084)

cocute 01-02-2010 12:22:51

Como detectar idioma del sistema y que funcione en todos windows?
 
pues eso, uso delphi2010 en Windows 7 64, pero me interesa que la cosa funcione en todos windows.

he probado con esto:
Código Delphi [-]
if SysLocale.PriLangID = LANG_SPANISH then Idioma.text='Español';
if SysLocale.PriLangID = LANG_ENGLISH then Idioma.text='Ingles';

pero esto no me funciona con mi sistema Windows7 x64, me dice que tengo el sistema en ingles cuando en realidad está en español.

he probado con esta alternativa y funciona bien (pero solo para España "Español tradicional" claro esta):
Código Delphi [-]
if GetUserDefaultLangID = 1034 then Idioma.text='Español';
if GetUserDefaultLangID = 9 then Idioma.text='Ingles';



El problema es que si uso este modo tendría que definir todas estas variantes, sería lo correcto definirlas todas o hay algun metodo alternativo que me diga solo si el sistema es ingles, español u otro sin distinguir paises?

9 - English
3081 - English(Australian)
10249 - English(Belize)
2057 - English(British)
4105 - English(Canadian)
9225 - English(Caribbean)
6153 - English(Ireland)
8201 - English(Jamaica)
5129 - English(New Zealand)
7177 - English(South Africa)
11273 - English(Trinidad)
1033 - English(United States)
11274 - Spanish(Argentina)
16394 - Spanish(Bolivia)
13322 - Spanish(Chile)
9226 - Spanish(Colombia)
5130 - Spanish(Costa Rica)
7178 - Spanish(Dominican Republic)
12298 - Spanish(Ecuador)
17418 - Spanish(El Salvador)
4106 - Spanish(Guatemala)
18442 - Spanish(Honduras)
2058 - Spanish(Mexican)
19466 - Spanish(Nicaragua)
6154 - Spanish(Panama)
15370 - Spanish(Paraguay)
10250 - Spanish(Peru)
20490 - Spanish(Puerto Rico)
3082 - Spanish(Spain - Modern Sort)
1034 - Spanish(Spain - Traditional Sort)
14346 - Spanish(Uruguay)
8202 - Spanish(Venezuela)

cocute 01-02-2010 12:43:38

me respondo a mi mismo, no se bien como funciona lo de $03FF pero funciona:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  LangID: DWORD;
 begin
  LangID := GetUserDefaultLangID;
  case Byte(LangID and $03FF) of
    LANG_SPANISH: Button1.Caption:='español';
    LANG_ENGLISH: Button1.Caption:='english';
  else
   Button1.Caption:='Otro idioma';
end;

end;


La franja horaria es GMT +2. Ahora son las 03:24:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi