Sprachauswahl mittels Combobox

czemmel

Mitglied
Hallo allezusammen. Bin richtig neu in der vb-Programmierung und habe gleich eine schwierige Aufgabe zu bewältigen. :confused:
Habe mir 2 Resourcen-Dateien angelegt (Resource.resx für Deutsch und Resource.en-GB für Englisch).
Nun meine Fragen:
1. möchte nun mein Projekt abfragen welche Resourcen zur Verfügung stehen
2. Diese dann in einer Combobox anzeigen lassen
3. Die Sprachauswahl soll dann in der Combobox nach der Auswahl für alle offenen Forms geändert werden

Kann mir jemand helfen, oder hört sich das Idiotisch an
Danke schon mal im voraus:-(
 
Normalerweise sind die Ressourcen-Dateien im Projekt mitkompiliert, da brauchst du keine Datei abfragen. Ich geh aber mal davon aus, dass du z.B. Textdateien als Sprachdateien mitlieferst, eine weitere Sprache braucht dann keine Neukompilierung sonders nur eine weitere Textdatei im Sprachenordner.

Betr der Erkennung, mittels der Dir()-Funktion kannst du dein Sprachenverzeichnis auslesen (Schneller gehts per API, braucht aber mehr Code und ist bei größeren Verzeichnissen mit mehr Inhalt interessant), die Dateinamen ergeben dir halt deine Sprache (würde die Sprache in den Namen schreiben und eine einheitliche Erweiterung benutzen). Die gefundenen Namen schreibst du einfach in eine Combobox.

Wenn der User nun in der Combobox eine Sprache wählt, rufst du einfach eine eigene Sub auf. In dieser Sub liest du die Textdatei ein (du kannst auch INI-Dateien verwenden, das Handling ist aber vor allem bei vielen Menupunkten etwas langwieriger) und weist den Controls die jeweilige Beschreibung zu. Das machst du aber nicht nur für die aktiven sondern für alle Forms.

Sinnvollerweise wäre es richtig, die gewählte Sprache zu speichern (z.B. den Namen der Sprachdatei in der Registry), beim Start des Programms liest du den Namen aus und stellst die richtigen Beschriftungen wieder her (Standardsprache, wenn keine Sprache gewählt nicht vergessen).


Der Doc!
 
Danke für die schnelle Antwort.
Für die Sprache benutze ich keine textdateien zum einlesen.
Da meine Anwendung nicht so groß ist, benutze ich nur die Resourcen-dateien.
Probiere dies erst mal aus und melde mich dann wieder
 
Stelle hier mal den code zur Verfügung. Habe die Sprachauswahl in der Combobox drin,
kann aber dann mit dem Valuememeber nichts anfangen

Imports System
Imports System.Globalization
Imports System.Threading

Public Class Form1
Public ci As CultureInfo

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'Schleife zum befüllen der Combobox
' Eine Tabelle erstellen für die Kulturtypen
Dim mostCultureTypes() As Globalization.CultureTypes = { _
CultureTypes.NeutralCultures} ', _

'CultureTypes.SpecificCultures, _
'CultureTypes.InstalledWin32Cultures, _
'CultureTypes.UserCustomCulture, _
'CultureTypes.ReplacementCultures, _
'CultureTypes.FrameworkCultures, _
'CultureTypes.WindowsOnlyCultures}

Dim allCultures() As Globalization.CultureInfo

allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures)

For Each ci In allCultures


ComboBoxSprache.ValueMember = ci.Name
ComboBoxSprache.DisplayMember = ci.DisplayName

ComboBoxSprache.Items.Add(ComboBoxSprache.DisplayMember)


Next ci
End Sub

Private Sub ComboBoxSprache_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBoxSprache.SelectedIndexChanged

If ComboBoxSprache.SelectedIndex > -1 Then

' Warum wird hier immer Obersorbisch - Deutsch angezeigt ?
' bei ValueMember immer hsb-DE ?
MessageBox.Show(ComboBoxSprache.DisplayMember)

End If

End Sub
End Class
 
Tja, da muss ich dich gleich mal ins .NET-Unterforum verweisen, hier werden nur die VB-Versionen bis VB6 und VBA bearbeitet. VB.NET hat doch eine etwas andere Syntax, daher das eigene Unterforum.


Der Doc!
 
Zurück