Benutzer mit den meisten Antworten
Windows Sprache ermitteln

Frage
-
Hallo,
hab schon eine Weile gesucht aber nicht das richtige gefunden. Ich möchte einfach nur die Sprache des Betriebssystems ermitteln. Habe die Funktion GetLocaleInfo gefunden aber da gibt anscheinend Probleme bei Windows 7 mit der richtigen Ermittlung der Sprache und andere Regionsinformationen. Welche Möglichkeiten habe ich noch die Sprache des jeweiligen Betriebssystem(Windows) zu ermitteln?
Antworten
-
die Sprache des Betriebssystems ermitteln.
Hallo F,
vielleicht passt ja .NET:
CultureInfo.InstalledUICulture
http://msdn.microsoft.com/de-de/library/system.globalization.cultureinfo.installeduiculture.aspx"Ruft die CultureInfo ab, die die mit dem Betriebssystem installierte Kultur darstellt."
Diese Eigenschaft entspricht GetSystemDefaultUILanguage in der Windows-API:
http://msdn.microsoft.com/en-us/library/dd318123(VS.85).aspx- Als Antwort markiert Elmar BoyeEditor Donnerstag, 26. August 2010 19:37
Alle Antworten
-
So habe ich es gemacht:
Public Shared Property Language() As LanguagesID Get Select Case Thread.CurrentThread.CurrentCulture.ToString Case "de-DE" Return LanguagesID.DE Case "en-EN" Return LanguagesID.EN Case Else Return LanguagesID.DE End Select End Get Set(ByVal CultureStyle As LanguagesID) Dim strCulture As String = "de-DE" Select Case CultureStyle Case LanguagesID.DE strCulture = "de-DE" Case LanguagesID.EN strCulture = "en-EN" Case Else strCulture = "de-DE" End Select Thread.CurrentThread.CurrentCulture = New CultureInfo(strCulture) Thread.CurrentThread.CurrentUICulture = New CultureInfo(strCulture) End Set End Property
Vergiss nicht die
Imports System.Globalization
Gruss
Torsten
- Bearbeitet Robert BreitenhoferModerator Montag, 23. August 2010 11:50 Formatierung
-
Hallo Torsten,
ich sehe nicht, wie Du mit Deinem Code die Sprache des
Betriebssystems ermittelst.
Mit CurrentThread.CurrentCulture stellt man fest, mit welcher
CultureInfo eben dieser CurrentThread läuft aber das hat
nichts mit der Systemsprache zu tun.Beim folgenden Beispiel wird man auch auf einem "deutschen"
Windows die Information "Englisch (USA)" bekommen.Imports System.Threading
Imports System.Globalization
Public Class Form1Public TH As Thread
Private Sub Form1_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.ClickTH = New Thread(AddressOf TSub)
TH.Start()
End SubPublic Sub TSub()
TH.CurrentCulture = New CultureInfo("en-US")
MsgBox(TH.CurrentCulture.DisplayName, MsgBoxStyle.Information)
End Sub
End ClassGruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen) -
Bekomme es beim Get
Select Case Thread.CurrentThread.CurrentCulture.ToString
Ich habe es in einer unabhangigen Assembly eingebettet und nicht innerhalb eines Forms. In meinem Beispiel habe ich erstmal bei Englisch und Deutch aufgehört. In allen anderen Fällen übergibt er mir immer Deutsch...
Muss natürlich erweitert werden.
-
Soweit ich das mitbekommen habe gibt es unter Windows zwei Möglichkeiten das Betriebssystem auf Regionen/Länder und Sprachen einzustellen. Einmal bei der Installation, diese Info's kann man dann per "getLocaleInfo" aus der kernel32.dll herauslesen und die zweite Möglichkeit ist die Einstellung in der Systemsteuerung unter Region/Sprache. Also gibt es aus meiner Sicht zwei verschiedene Stellen wo ich die Ländereinstellungen abfragen kann, oder nicht. Und ich würde gern wissen ob ich die Einstellungen in der Systemsteuerung irgendwo herauslesen kann und wenn ja wo? Die Möglichkeit mit den Threads hab ich auch schon in Erwägung gezogen aber wie Peter schon sagte die Manipulation ist mir einfach zu groß.
-
Hallo F.,
Soweit ich das mitbekommen habe gibt es unter Windows zwei
Möglichkeiten das Betriebssystem auf Regionen/Länder und
Sprachen einzustellen. Einmal bei der Installation, diese Info's
kann man dann per "getLocaleInfo" aus der kernel32.dll herauslesen
und die zweite Möglichkeit ist die Einstellung in der Systemsteuerung
unter Region/Sprache.
Also gibt es aus meiner Sicht zwei verschiedene Stellen wo ich
die Ländereinstellungen abfragen kann, oder nicht.Bei der Api-Funktion GetLocaleInfo()
int GetLocaleInfo(
LCID Locale, // locale identifier
LCTYPE LCType, // information type
LPTSTR lpLCData, // information buffer
int cchData // size of buffer
);bestimmt der erste Parameter (LCID Locale) die von der
Funktion zurückgegebenen Werte:LCID Locale = LOCALE_SYSTEM_DEFAULT (2048)
Ländereinstellung bei der InstallationLCID Locale = LOCALE_USER_DEFAULT (1024)
Ländereinstellung für den akt. angemeldeten BenutzerGruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen) -
die Sprache des Betriebssystems ermitteln.
Hallo F,
vielleicht passt ja .NET:
CultureInfo.InstalledUICulture
http://msdn.microsoft.com/de-de/library/system.globalization.cultureinfo.installeduiculture.aspx"Ruft die CultureInfo ab, die die mit dem Betriebssystem installierte Kultur darstellt."
Diese Eigenschaft entspricht GetSystemDefaultUILanguage in der Windows-API:
http://msdn.microsoft.com/en-us/library/dd318123(VS.85).aspx- Als Antwort markiert Elmar BoyeEditor Donnerstag, 26. August 2010 19:37
-
Es passt wie die Faust auf's Auge. Es ist in der Dokumentation zum Lokalisieren von Windows Forms Anwendungen etwas schlecht dargestellt weil dort immer nur vom "Thread" die Rede den man in der Kultur einstellen kann, es ist nirgends die Rede wie ich die im System eingestellten Vorgaben abfragen kann.
Danke Euch allen für die schnellen Antworten.