Autor Beitrag
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 08.07.03 18:50 
Assarbad
[PUBLIC DOMAIN]
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
program LCIDtoName; 
{$APPTYPE CONSOLE} 
uses 
  Windows; 


int GetLocaleInfo( 
  LCID Locale,      // locale identifier 
  LCTYPE LCType,    // information type 
  LPTSTR lpLCData,  // information buffer 
  int cchData       // size of buffer 
); 
}
 
var 
  bla:array[0..1023of Char; 
begin 
  GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SENGCOUNTRY, @bla, sizeof(bla)); 
  Writeln('Name des Landes (Englisch)   : ',bla); 
  GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SENGLANGUAGE, @bla, sizeof(bla)); 
  Writeln('Name der Sprache auf Englisch: ',bla); 
  GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SLANGUAGE, @bla, sizeof(bla)); 
  Writeln('Name der Sprache lokalisiert : ',bla); 
  GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SNATIVELANGNAME, @bla, sizeof(bla)); 
  Writeln('Orginalname der Sprache      : ',bla); 
  GetLocaleInfo(GetSystemDefaultLCID, LOCALE_SNATIVECTRYNAME , @bla, sizeof(bla)); 
  Writeln('Orginalname des Landes       : ',bla); 
  Readln; 
end.


Mathias Simmack:
Dann hänge ich die Makros gleich mal hier an, weil´s so schön passt. C-Programmierer haben, dank Microsoft, ein paar schöne Funktionen zum "Dekodieren" von Language-IDs usw. Die hat Borland leider vergessen - zumindest bei Delphi 5 und wahrscheinlich davor. Hier sind sie:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
function MAKELANGID(usPrimaryLanguage, usSubLanguage: BYTE): WORD; 
begin 
  Result := (usSubLanguage shl 10or usPrimaryLanguage; 
end

function PRIMARYLANGID(lgid: WORD): Word; 
begin 
  Result := lgid and $3ff
end

function SUBLANGID(lgid: WORD): WORD; 
begin 
  Result := lgid shr 10
end

function MAKELCID(wLanguageId, wSortId: WORD): DWORD; 
begin 
  Result := (wSortId shl 16or wLanguageId; 
end

function MAKESORTLCID(wLanguageId, wSortId, wSortVersion: WORD): DWORD; 
begin 
  Result := MAKELCID(wLanguageId,wSortId) or (wSortVersion shl 20); 
end

function LANGIDFROMLCID(lcid: DWORD): WORD; 
begin 
  Result := WORD(lcid); 
end

function SORTIDFROMLCID(lcid: DWORD): WORD; 
begin 
  Result := WORD((lcid shr 16and $F); 
end

function SORTVERSIONFROMLCID(lcid: DWORD): WORD; 
begin 
  Result := WORD((lcid shr 20and $F); 
end;


Ein Anwendungsbeispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var 
  txt    : string
  langid : word; 
begin 
  langid := MAKELANGID(LANG_SPANISH, 
    SUBLANG_SPANISH_DOMINICAN_REPUBLIC); 

  SetLength  (txt,MAX_PATH); 
  SetLength  (txt, 
    VerLanguageName(langid,@txt[1],length(txt))); 
  ShowMessage(txt); 
end;


usw. Im PSDK kann man die Sache genauer nachlesen. :)
Ist die Frage beantwortet? Das Problem gelöst?

Dann klicke hier, um das Thema entsprechend zu markieren!