PDA

Ver la Versión Completa : Como detectar idioma del sistema y que funcione en todos windows?


cocute
01-02-2010, 12:22:51
pues eso, uso delphi2010 en Windows 7 64, pero me interesa que la cosa funcione en todos windows.

he probado con esto:
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):
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:

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;