Hallo,
Mehrsprachigkeit kann den Nutzerkreis ungemein erhöhen Aber es macht auch sehr viel Arbeit, dass komplette Programm zu übersetzen. Hier stelle ich eine Methode vor, wie es über den Service Google Language Tools möglich ist, keine perfekten, aber annehmbare Übersetzungen zu bekommen. Gut, fangen wir an. Als erstes erstellen wir in den Resourcen eine neue Textdatei namens "language". In jede Zeile kommt jetzt jeder Text, der sich mit der Sprache ändern soll. Für jede Zeile einer. Dazu gehören zum Beispiel Programmtitel, Texte in Labels, Meldungen (Messageboxen), Text in Buttons und so weiter.
So weit so gut - weiter geht´s mit dieser einfachen Funktion:
Sie übersetzt unseren Text in eine beliebige andere Sprache. Jetzt fügen wir ein Bedienelement zum ändern der Sprache hinzu. Ich benutze eine Treeview:
(Adden durch folgenden Code:
). Weiter geht´s. Ein Button zum bestätigen der Sprache.
oder alternativ kann man 2. auch so gestalten:
und eben entsprechend anpassen, sodass wirklich alle Controls übersetzt werden.
Natürlich könnte man noch weitere Sprachen ergänzen, die Kürzel sind die offiziellen Kürzel des Landes. Der untere Teil muss natürlich entsprechend angepasst werden. Hier werden nur 3 verschiedene Texte übersetzt: Der Text in einem Label ("Dies ist ein Testtext. Er steht in einem Label."), der Text in einem Button ("Beenden") und der Titel des Programms ("Das ist der Titel des Programms.").
Hier meine Testform in zwei Sprachen als Beispiel:
Französisch:
Spanisch:
Mehrsprachigkeit kann den Nutzerkreis ungemein erhöhen Aber es macht auch sehr viel Arbeit, dass komplette Programm zu übersetzen. Hier stelle ich eine Methode vor, wie es über den Service Google Language Tools möglich ist, keine perfekten, aber annehmbare Übersetzungen zu bekommen. Gut, fangen wir an. Als erstes erstellen wir in den Resourcen eine neue Textdatei namens "language". In jede Zeile kommt jetzt jeder Text, der sich mit der Sprache ändern soll. Für jede Zeile einer. Dazu gehören zum Beispiel Programmtitel, Texte in Labels, Meldungen (Messageboxen), Text in Buttons und so weiter.
So weit so gut - weiter geht´s mit dieser einfachen Funktion:
Sie übersetzt unseren Text in eine beliebige andere Sprache. Jetzt fügen wir ein Bedienelement zum ändern der Sprache hinzu. Ich benutze eine Treeview:
(Adden durch folgenden Code:
VB.NET-Quellcode
- Dim node As New TreeNode("Sprachen")
- node.Nodes.Add("Deutsch")
- node.Nodes.Add("Englisch")
- node.Nodes.Add("Französisch")
- node.Nodes.Add("Dänisch")
- node.Nodes.Add("Finnisch")
- node.Nodes.Add("Griechisch")
- node.Nodes.Add("Portugiesisch")
- node.Nodes.Add("Italienisch")
- node.Nodes.Add("Spanisch")
- node.Nodes.Add("Norwegisch")
- node.Nodes.Add("Schwedisch")
- node.Nodes.Add("Niederländisch")
- TreeView1.Nodes.Add(node)
). Weiter geht´s. Ein Button zum bestätigen der Sprache.
VB.NET-Quellcode
- Dim lng As String
- ' 1. Übersetzen:
- Select Case TreeView1.SelectedNode.Text
- Case "Deutsch"
- lng = My.Resources.language
- Case "Englisch"
- lng = Translate(My.Resources.language, "en")
- Case "Französisch"
- lng = Translate(My.Resources.language, "fr")
- Case "Dänisch"
- lng = Translate(My.Resources.language, "da")
- Case "Finnisch"
- lng = Translate(My.Resources.language, "fi")
- Case "Griechisch"
- lng = Translate(My.Resources.language, "el")
- Case "Portugiesisch"
- lng = Translate(My.Resources.language, "pt")
- Case "Italienisch"
- lng = Translate(My.Resources.language, "it")
- Case "Spanisch"
- lng = Translate(My.Resources.language, "es")
- Case "Norwegisch"
- lng = Translate(My.Resources.language, "no")
- Case "Schwedisch"
- lng = Translate(My.Resources.language, "sv")
- Case "Niederländisch"
- lng = Translate(My.Resources.language, "nl")
- End Select
- lng = lng.Replace("\r\n", vbNewLine)
- If lng.Length > 1 Then
- lng = lng.Remove(0, 1)
- lng = lng.Remove(lng.Length - 1, 1)
- End If
- '2. Zuweisen:
- Dim anzeigen() As String = Split(lng, vbNewLine)
- Testform.Label1.Text = anzeigen(0)
- Testform.Text = anzeigen(1)
- Testform.Button1.Text = anzeigen(2)
- Testform.Show()
oder alternativ kann man 2. auch so gestalten:
VB.NET-Quellcode
- Dim str As New System.Text.StringBuilder
- For Each ctl1 As Control In Testform.Controls
- str.AppendLine(ctl1.Text)
- Next
- Dim übersetzung As String = Translate(str.ToString, k)
- übersetzung = übersetzung.Replace("\r\n", vbNewLine)
- If übersetzung.Length > 1 Then
- übersetzung = übersetzung.Remove(0, 1)
- übersetzung = übersetzung.Remove(übersetzung.Length - 1, 1)
- End If
- Dim v() As String = Split(übersetzung, vbNewLine)
- Dim zähler As Integer = 0
- For Each ctl2 As Control In Testform.Controls
- ctl2.Text = v(zähler) ' übersetzung
- zähler += 1
- Next
und eben entsprechend anpassen, sodass wirklich alle Controls übersetzt werden.
Natürlich könnte man noch weitere Sprachen ergänzen, die Kürzel sind die offiziellen Kürzel des Landes. Der untere Teil muss natürlich entsprechend angepasst werden. Hier werden nur 3 verschiedene Texte übersetzt: Der Text in einem Label ("Dies ist ein Testtext. Er steht in einem Label."), der Text in einem Button ("Beenden") und der Titel des Programms ("Das ist der Titel des Programms.").
Hier meine Testform in zwei Sprachen als Beispiel:
Französisch:
Spanisch:
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kevin89“ ()