Einzelnen Beitrag anzeigen

hathor
(Gast)

n/a Beiträge
 
#4

Re: Windows Sprache ermitteln

  Alt 9. Jul 2008, 15:33
GetKeyboardLayout:

Man kann noch GetKeyboardLayout abfragen, dann hast Du das gesuchte Land.

oder so:

Delphi-Quellcode:
const
  IDAfrikaans = $0436; IDAlbanian = $041C;
  IDArabicAlgeria = $1401; IDArabicBahrain = $3C01;
  IDArabicEgypt = $0C01; IDArabicIraq = $0801;
  IDArabicJordan = $2C01; IDArabicKuwait = $3401;
  IDArabicLebanon = $3001; IDArabicLibya = $1001;
  IDArabicMorocco = $1801; IDArabicOman = $2001;
  IDArabicQatar = $4001; IDArabic = $0401;
  IDArabicSyria = $2801; IDArabicTunisia = $1C01;
  IDArabicUAE = $3801; IDArabicYemen = $2401;
  IDArmenian = $042B; IDAssamese = $044D;
  IDAzeriCyrillic = $082C; IDAzeriLatin = $042C;
  IDBasque = $042D; IDByelorussian = $0423;
  IDBengali = $0445; IDBulgarian = $0402;
  IDBurmese = $0455; IDCatalan = $0403;
  IDChineseHongKong = $0C04; IDChineseMacao = $1404;
  IDSimplifiedChinese = $0804; IDChineseSingapore = $1004;
  IDTraditionalChinese = $0404; IDCroatian = $041A;
  IDCzech = $0405; IDDanish = $0406;
  IDBelgianDutch = $0813; IDDutch = $0413;
  IDEnglishAUS = $0C09; IDEnglishBelize = $2809;
  IDEnglishCanadian = $1009; IDEnglishCaribbean = $2409;
  IDEnglishIreland = $1809; IDEnglishJamaica = $2009;
  IDEnglishNewZealand = $1409; IDEnglishPhilippines = $3409;
  IDEnglishSouthAfrica = $1C09; IDEnglishTrinidad = $2C09;
  IDEnglishUK = $0809; IDEnglishUS = $0409;
  IDEnglishZimbabwe = $3009; IDEstonian = $0425;
  IDFaeroese = $0438; IDFarsi = $0429;
  IDFinnish = $040B; IDBelgianFrench = $080C;
  IDFrenchCameroon = $2C0C; IDFrenchCanadian = $0C0C;
  IDFrenchCotedIvoire = $300C; IDFrench = $040C;
  IDFrenchLuxembourg = $140C; IDFrenchMali = $340C;
  IDFrenchMonaco = $180C; IDFrenchReunion = $200C;
  IDFrenchSenegal = $280C; IDSwissFrench = $100C;
  IDFrenchWestIndies = $1C0C; IDFrenchZaire = $240C;
  IDFrisianNetherlands = $0462; IDGaelicIreland = $083C;
  IDGaelicScotland = $043C; IDGalician = $0456;
  IDGeorgian = $0437; IDGermanAustria = $0C07;
  IDGerman = $0407; IDGermanLiechtenstein = $1407;
  IDGermanLuxembourg = $1007; IDSwissGerman = $0807;
  IDGreek = $0408; IDGujarati = $0447;
  IDHebrew = $040D; IDHindi = $0439;
  IDHungarian = $040E; IDIcelandic = $040F;
  IDIndonesian = $0421; IDItalian = $0410;
  IDSwissItalian = $0810; IDJapanese = $0411;
  IDKannada = $044B; IDKashmiri = $0460;
  IDKazakh = $043F; IDKhmer = $0453;
  IDKirghiz = $0440; IDKonkani = $0457;
  IDKorean = $0412; IDLao = $0454;
  IDLatvian = $0426; IDLithuanian = $0427;
  IDMacedonian = $042F; IDMalaysian = $043E;
  IDMalayBruneiDarussalam = $083E; IDMalayalam = $044C;
  IDMaltese = $043A; IDManipuri = $0458;
  IDMarathi = $044E; IDMongolian = $0450;
  IDNepali = $0461; IDNorwegianBokmol = $0414;
  IDNorwegianNynorsk = $0814; IDOriya = $0448;
  IDPolish = $0415; IDBrazilianPortuguese = $0416;
  IDPortuguese = $0816; IDPunjabi = $0446;
  IDRhaetoRomanic = $0417; IDRomanianMoldova = $0818;
  IDRomanian = $0418; IDRussianMoldova = $0819;
  IDRussian = $0419; IDSamiLappish = $043B;
  IDSanskrit = $044F; IDSerbianCyrillic = $0C1A;
  IDSerbianLatin = $081A; IDSesotho = $0430;
  IDSindhi = $0459; IDSlovak = $041B;
  IDSlovenian = $0424; IDSorbian = $042E;
  IDSpanishArgentina = $2C0A; IDSpanishBolivia = $400A;
  IDSpanishChile = $340A; IDSpanishColombia = $240A;
  IDSpanishCostaRica = $140A; IDSpanishDominicanRepublic = $1C0A;
  IDSpanishEcuador = $300A; IDSpanishElSalvador = $440A;
  IDSpanishGuatemala = $100A; IDSpanishHonduras = $480A;
  IDMexicanSpanish = $080A; IDSpanishNicaragua = $4C0A;
  IDSpanishPanama = $180A; IDSpanishParaguay = $3C0A;
  IDSpanishPeru = $280A; IDSpanishPuertoRico = $500A;
  IDSpanishModernSort = $0C0A; IDSpanish = $040A;
  IDSpanishUruguay = $380A; IDSpanishVenezuela = $200A;
  IDSutu = $0430; IDSwahili = $0441;
  IDSwedishFinland = $081D; IDSwedish = $041D;
  IDTajik = $0428; IDTamil = $0449;
  IDTatar = $0444; IDTelugu = $044A;
  IDThai = $041E; IDTibetan = $0451;
  IDTsonga = $0431; IDTswana = $0432;
  IDTurkish = $041F; IDTurkmen = $0442;
  IDUkrainian = $0422; IDUrdu = $0420;
  IDUzbekCyrillic = $0843; IDUzbekLatin = $0443;
  IDVenda = $0433; IDVietnamese = $042A;
  IDWelsh = $0452; IDXhosa = $0434;
  IDZulu = $0435;

function GetWindowsLanguage: string;
var
  langid: Cardinal;
  langcode: string;
  CountryName: array[0..4] of char;
  LanguageName: array[0..4] of char;
  works: boolean;
begin
  // The return value of GetLocaleInfo is compared with 3 = 2 characters and a zero
  works := 3 = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SISO639LANGNAME, LanguageName, SizeOf(LanguageName));
  works := works and (3 = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SISO3166CTRYNAME, CountryName,
    SizeOf(CountryName)));
  if works then begin
    // Windows 98, Me, NT4, 2000, XP and newer
    LangCode := PChar(@LanguageName[0]);
    if lowercase(LangCode)='nothen LangCode:='nb';
    LangCode:=LangCode + '_' + PChar(@CountryName[0]);
  end else begin
    // This part should only happen on Windows 95.
    langid := GetThreadLocale;
    case langid of
      IDBelgianDutch: langcode := 'nl_BE';
      IDBelgianFrench: langcode := 'fr_BE';
      IDBrazilianPortuguese: langcode := 'pt_BR';
      IDDanish: langcode := 'da_DK';
      IDDutch: langcode := 'nl_NL';
      IDEnglishUK: langcode := 'en_GB';
      IDEnglishUS: langcode := 'en_US';
      IDFinnish: langcode := 'fi_FI';
      IDFrench: langcode := 'fr_FR';
      IDFrenchCanadian: langcode := 'fr_CA';
      IDGerman: langcode := 'de_DE';
      IDGermanLuxembourg: langcode := 'de_LU';
      IDGreek: langcode := 'el_GR';
      IDIcelandic: langcode := 'is_IS';
      IDItalian: langcode := 'it_IT';
      IDKorean: langcode := 'ko_KO';
      IDNorwegianBokmol: langcode := 'nb_NO';
      IDNorwegianNynorsk: langcode := 'nn_NO';
      IDPolish: langcode := 'pl_PL';
      IDPortuguese: langcode := 'pt_PT';
      IDRussian: langcode := 'ru_RU';
      IDSpanish, IDSpanishModernSort: langcode := 'es_ES';
      IDSwedish: langcode := 'sv_SE';
      IDSwedishFinland: langcode := 'sv_FI';
    else
      langcode := 'C';
    end;
  end;
  Result := langcode;
end;
  Mit Zitat antworten Zitat