Texte ins Englische übersetzen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Texte ins Englische übersetzen

    Moin.

    Ich habe in meinem Programm eine Englische Flagge in meine Startform (Form1) eingebaut.
    Wenn ich die anklicke möchte ich, das sich alle Texte ins Englische änderen. Bevor ich kein
    Tutorial gesehen habe, dachte ich man könnte einfach die Texte der Labels auf Form2 mit
    Form2.Label1.Text = "..." ändern nur habe ich auch ein MenuStrip auf der Form wo per Klick
    eine MessageBox geöffnet wird, wie sollte man den Text der MessageBox ändern? Der steht
    ja nicht auf der Form sondern im Code.

    Habe dann das Tutorial hier gefunden von "RodFromGermany":
    [VB 2010] Tutorial: Programme mehrsprachig erstellen

    Habe in der Assembly auch als Standardsprache "Deutsch (Deutschland) eingestellt.
    Habe die Formeigenschaft "Localizable" auf True, unter Language "Englisch (USA)" eingestellt.


    Ich verstehe jetzt aber nicht so richtig, wie ich das mit dem übersetzen mache.

    Ich muss doch eine Textressource hinzufügen, muss die einen bestimmten Namen haben?

    Und als Beispiel ist ja gegeben:

    Quellcode

    1. Teststring | this is an english text
    2. Teststring | Das ist ein deutscher Text


    Ich will ja vom Deutschen ins Englische, also muss die Reihenfolge ja denke umgekehrt sein.
    Nur was bedeutet das Teststring am Anfang?

    Und woher soll die Ressource wissen welches Label gemeint ist, welcher ComboBox-Eintrag, welche MessageBox?

    :(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Creatiive“ ()

    Wenn ich es richtig verstanden habe, soll der Anwender sich für eine Sprache der Oberfläche entscheiden, und nicht das Programm selber?
    Wenn ja, kann ich dir meine Varinate vorschlagen und hier als Beispiel zeigen.

    Innerhalb jeder Form erfolgt dann eine eigene "SUB Beschriftung" mittels select case für die richtige Zuweisung der Texte bzw. Bezeichnungen.

    wenn nein, kann ich nicht weiterhelfen.

    VB.NET-Quellcode

    1. Public Class MDI_form
    2. Public usersprache As Byte
    3. Private Sub MDI_form_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Me.Text = My.Application.Info.ProductName
    5. usersprache = 1
    6. beschriftung()
    7. End Sub
    8. Private Sub mnu_deutsch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnu_deutsch.Click
    9. usersprache = 1
    10. beschriftung()
    11. End Sub
    12. Private Sub mnu_spanisch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnu_spanisch.Click
    13. usersprache = 2
    14. beschriftung()
    15. End Sub
    16. Sub beschriftung()
    17. Select Case usersprache
    18. Case 1
    19. AdressenToolStripMenuItem.Text = "Adressen"
    20. '
    21. mnu_deutsch.Text = "Deutsch"
    22. mnu_spanisch.Text = "Spanisch"
    23. mnu_englisch.Text = "Englisch"
    24. Case 2
    25. AdressenToolStripMenuItem.Text = "Direcciones"
    26. '
    27. mnu_deutsch.Text = "Alemán"
    28. mnu_spanisch.Text = "Español"
    29. mnu_englisch.Text = "Inglés"
    30. Case 3
    31. AdressenToolStripMenuItem.Text = "Addresses"
    32. '
    33. mnu_deutsch.Text = "German"
    34. mnu_spanisch.Text = "Spanish"
    35. mnu_englisch.Text = "English"
    36. End Select
    37. End Sub
    Bilder
    • sprachauswahl.png

      11,31 kB, 327×141, 116 mal angesehen

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „it-aha“ ()

    Ich habe die Menü Variante gewählt, weil es immer angezeigt, auswählbar und nicht auf eine Sprache begrenzt wird.
    Zudem bestand die Anforderung, dass mehrere Anwender mit unterschiedlicher Muttersprache am Screen sitzen und umschalten sollten, ohne die Daten neu zu lesen.
    Könntest du mir bitte mal ein Beispiel machen wie das mit einer MessageBox funktionieren soll?

    Wenn ich Standardmäßig im Code MessageBox.Show("Hallo") stehen habe, und ich vorher dann aber
    die Englische Flagge anklicke, soll nicht mehr in der MessageBox "Hallo" angezeigt werden, sondern "Hello".

    Ich benutze dafür ein MenuStrip mit einem Eintrag der per Klick eine MessageBox erscheinen lässt. Das MenuStrip
    befindet sich auf Form2, die Flagge auf Form1.

    Creatiive schrieb:

    Habe dann das Tutorial hier gefunden von "RodOfGermany":
    Der Kerl heißt RodFromGermany. Bitte die Namen genau abschreiben, so viel Höflichkeit muss sein.
    1. Texte in Labels, Controls usw. schreibst Du einfach in der für die Form eingestellten Sprache da rein.
    2. Texte ohne Bezug zu Controls musst Du in die Ressourcen reinschreiben, auch jeweils in der dür die Datei korrekten Sprache.
    Die müssen natürlich in beiden Ressource-Dateien dieselbe Bezeichnung haben, sonst würde dies nicht funktionieren:

    VB.NET-Quellcode

    1. MessageBox.Show(My.Resources.Teststring)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Da dieselbe Text-ID sowohl in der deutschen als auch in der englischen Ressource vorkommt, wird zunächst der richtige Text genommen. Da beim Start eine Sprache voreingestellt wird, wird der Text in genau dieser Sprache genommen.
    Wenn ein Text nur in der Primärsprache vorhanden ist (wenn nicht, gibt es einen Compilerfehler), nicht aber in einer anderen Sprache, wird bei Initialisierung der anderen Sprache der Text in der Primärsprache verwendet.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!