Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Windows API / MS.NET Framework API (https://www.delphipraxis.net/20-library-windows-api-ms-net-framework-api/)
-   -   Delphi Infos aus der Locale ID (LCID aka Gebietsschema) (https://www.delphipraxis.net/6349-infos-aus-der-locale-id-lcid-aka-gebietsschema.html)

Gast 7. Jul 2003 17:06


Infos aus der Locale ID (LCID aka Gebietsschema)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die Frage kam grad im DF. Da gibts aber keine so schoene Code-Library ;)

[PUBLIC DOMAIN]

Delphi-Quellcode:
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..1023] of 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.

MathiasSimmack 7. Jul 2003 18:04

Re: Infos aus der Locale ID (LCID aka Gebietsschema)
 
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:
Delphi-Quellcode:
function MAKELANGID(usPrimaryLanguage, usSubLanguage: BYTE): WORD;
begin
  Result := (usSubLanguage shl 10) or 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 16) or 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 16) and $F);
end;

function SORTVERSIONFROMLCID(lcid: DWORD): WORD;
begin
  Result := WORD((lcid shr 20) and $F);
end;
Ein Anwendungsbeispiel:
Delphi-Quellcode:
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. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz