AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows System Spache auslesen

Ein Thema von sh030169 · begonnen am 8. Sep 2007 · letzter Beitrag vom 12. Sep 2007
Antwort Antwort
sh030169

Registriert seit: 8. Sep 2007
9 Beiträge
 
Delphi 7 Enterprise
 
#1

Windows System Spache auslesen

  Alt 8. Sep 2007, 18:05
Hallo,

ich muss die Windows System Sprache auslesen. Klingt leicht ist es aber nicht, denn ich möchte die wirkliche Installations Sprache auslesen.
Ich habe z.B. viele Infos gefunden, jedoch wenn ich in einem englischen WinXP die Sprache auf Deutsch umstelle, dann wird mir Deutsch angezeigt!

Grund warum ich das benötige:
Ich muss auf mehreren Systemen, egal welche Sprache, in die lokale Admingruppe weitere Domain Gruppen, bzw. User eintragen.
Da sich aber hier der Name der lokalen Admingruppe je Sprache ändert, will ich dies an Hand der installerten Sprache heraufinden und gezielt ansteuern.

Hat jemand eine Idee wie ich die installierte OS Sprache herausfinde, oder gibt es eventuell eine andere Möglichkeit den Namen der lokalen Admingruppe auszulesen?

Danke für eure Hilfe!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Windows System Spache auslesen

  Alt 8. Sep 2007, 20:28
Herzlich willkommen in der Delphi-PRAXiS, sh030169.

Alleine durch schmökern im Windows SDK finde ich das hier:

MS schreibt zu GetSystemDefaultUILanguage
Remarks

This is the install language or the localized operating system language.

Ausprobieren mag ich es jetzt nicht, aber es riecht so, als wäre es das was du suchst.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Windows System Spache auslesen

  Alt 9. Sep 2007, 11:23
Zitat von sh030169:
Ich muss auf mehreren Systemen, egal welche Sprache, in die lokale Admingruppe weitere Domain Gruppen, bzw. User eintragen.
Da sich aber hier der Name der lokalen Admingruppe je Sprache ändert, will ich dies an Hand der installerten Sprache heraufinden und gezielt ansteuern.
Genau aus diesem Grund solltest du die SIDs der Gruppen benutzen und nicht die angezeigten Namen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Windows System Spache auslesen

  Alt 9. Sep 2007, 11:28
Zitat von Luckie:
Zitat von sh030169:
Ich muss auf mehreren Systemen, egal welche Sprache, in die lokale Admingruppe weitere Domain Gruppen, bzw. User eintragen.
Da sich aber hier der Name der lokalen Admingruppe je Sprache ändert, will ich dies an Hand der installerten Sprache heraufinden und gezielt ansteuern.
Genau aus diesem Grund solltest du die SIDs der Gruppen benutzen und nicht die angezeigten Namen.
Und selbst dann gäbe es eine tolle WinAPI-Procedure die dir aus einer LangID den Sprachennamen zaubert.
Ich habe meinen Computer gerade nicht zur hand (ich habe mal für eine Projekt eine relativ umfangreiche Unit geschrieben, die sich mit Sprachen im System beschäftigt), falls bis dahin niemand anders den Namen genannt hat, melde ich mich selbst nochmal.

Grüße,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
sh030169

Registriert seit: 8. Sep 2007
9 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Windows System Spache auslesen

  Alt 9. Sep 2007, 12:09
das mit den SIDs klingt gut!
wie kann ich diese SIDs auslesen?
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Windows System Spache auslesen

  Alt 9. Sep 2007, 19:28
Moin,

Die Systemsprache bekommst du mit GetSystemDefaultLangID; .

Den Namen davon bekommst du mit
Delphi-Quellcode:
function GetLanguageNameByID(AID: Integer): WideString;
begin
  SetLength(Result,MAX_PATH);
  SetLength(Result, VerLanguageNameW(AID,@Result[1], length(Result)));
end;
Grüße,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#7

Re: Windows System Spache auslesen

  Alt 10. Sep 2007, 13:13
Diese Routine und auch die aus der Code-Lib gibt mir immer Deutsch (Deutschland) zurück. Gibts auch eine Möglichkeit nur Deutsch als Rückgabewert zu erhalten. Weiß ja nicht wie das ist, wenn ich jetzt einfach die klammer und deren Inhalt aus den String entferne, ob das immer klappt. Kann mir da einer helfen?
  Mit Zitat antworten Zitat
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Windows System Spache auslesen

  Alt 10. Sep 2007, 14:22
Moin,

Naja, da würde mir nur die Brecheisenmethode einfallen, sprich, Pos und Delete/Copy. Wenn keine Klammer vorhanden ist, wird auch nichts gelöscht.

Kleiner (vielleicht fehlerbehafteter, bin gerade nicht am Produktiv-System, also kein Delphi) Code zur Veranschaulichung bzw. ein Lösungsvorschlag:

Delphi-Quellcode:
function DeleteBracket(lString: string): string;
var
  I: Integer;
begin
  I := Pos('(', lString);
  if I <> 0 then
  begin
    Result := Copy(1, I - 1, lString); // Bei der genauen Sysntax und dem -1 bin ich nicht ganz sicher, einfach testen!
  end
  else
  begin
    Result := lString;
  end;
end;
Grüße,
Max

Edit: Kleine Code Anpassung (der IF-Teil)
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Windows System Spache auslesen

  Alt 12. Sep 2007, 06:47
Hallo,

wer diesen Thread wegens seines Titels findet, der sollte wissen: Da ist ein feiner Unterschied zwischen GetSystemDefaultUILanguage() und GetSystemDefaultLangID(). Letzteres kann vom Administrator geändert werden, ersteres nicht.

Die Sprache ohne den SubLanguage-Zusatz erhält man übrigens so:

Delphi-Quellcode:
// function GetSystemDefaultUILanguage: LANGID; external kernel32 name 'GetSystemDefaultUILanguage';

function NativeLangName(lcid: LCID): string;
var
  buffer: array [Byte] of Char;
begin
  SetString(Result, buffer, GetLocaleInfo(lcid, LOCALE_SNATIVELANGNAME, buffer, SizeOf(buffer)));
end;

// ShowMessage(NativeLangName(GetSystemDefaultUILanguage));
Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz