Multilanguage bei Toolstripmenuitems will nicht

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von Rootbob91.

    Multilanguage bei Toolstripmenuitems will nicht

    Guten Tag,

    ich habe das Multilanguage Beispiel von dieser Seite hier genommen (vorher hatte ich es immer anders gelöst, aber bin froh jetzt hier drauf gestoßen zu sein):
    dotnetcurry.com/showarticle.aspx?ID=174

    Die Prozedur habe ich ein bisschen umgeschrieben, damit er alle Forms durchläuft:

    VB.NET-Quellcode

    1. Public Sub ChangeLanguage(ByVal lang As String)
    2. For Each frm As Form In Application.OpenForms
    3. For Each c As Control In frm.Controls
    4. Dim resources As ComponentResourceManager = New ComponentResourceManager(frm.GetType())
    5. resources.ApplyResources(c, c.Name, New CultureInfo(lang))
    6. Next c
    7. Next frm
    8. End Sub


    An sich funktioniert das auch soweit, leider möchte er nur die ToolStripMenuItems nicht in der korrekten Sprache übernehmen?

    Hat das mal jemand getestet, oder einen Lösungsvorschlag?

    Lg Rob
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Von dieser Methode der Multilanguage halte ich nicht viel, da man dort nur mehr Komplikationen hat, als alles andere.
    Schnapp Dir ne Klasse und serialisiere diese und benenne dann dein Zeugs entsprechend diese deserialisierten Einträgen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ich finde die bisher ganz genial, weil das Ziel in kleinster Menge an Arbeit erreicht ist und schnell noch obendrein.

    Ich bin jetzt ja schon ne ganze Weile dabei, verstehe allerdings nicht so ganz wie ich deinen Vorschlag realisieren soll/kann.

    Eine Klasse soll dann einzelne Einträge erhalten welche dann geändert werden?

    Soll dies mit Databinding geschehen?

    Serialisieren hmm :/?

    Hatte bisher schon mehrere Versuche getätigt Mehrsprachigkeit zu realisieren, bisher hat alles immer funktioniert, allerdings bin ich bisher nicht zufrieden.

    Hatte halt schon XMLs die dann je nach Sprache geladen werden und wo verschiedene Einträge dann zu Control XY gehören.

    Dann ne DB wo verschiedene Einträge einem Control zugeordnet waren.

    Blablabla.. ;)
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Einfach ne Klasse anlegen, da die Properties für die einzelnen Controls reinmachen, die zuweisen und serialisieren. (JavaScriptSerializer)
    Dann deserialisieren und den Controls zuweisen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ist in deinem Fall halt unpassend.

    Beispiel:

    VB.NET-Quellcode

    1. Public Class LanguageSerializer
    2. Public Sub New()
    3. TestProperty = "Test"
    4. End Sub
    5. Public Property TestProperty As String
    6. End Class


    Dann schnappst Du Dir einen JavaScriptSerializer und serialisierst das in eine Datei.

    Dann deserialisierst Du das Ganze in deiner Form mit den entsprechenden Controls und weist den Control-Text-Properties die Properties zu, die durch das Deserialisieren der Klasse LanguageSerializer zugewiesen wurden.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Okay, dass bekomme ich denke ich hin.

    Allerdings würde ich trotzdem gerne den ursprünglichen Fehler wissen.

    Wieso übernimmt das ToolStripMenu die Sprache nicht, bzw. dessen Items, ich hatte schon geschaut ob dort irgendwas noch eingestellt werden muss, wurde aber nicht fündig.
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Danke Rod, aber den Link hatte ich schon gefunden :), allerdings bin ich mit dem vielen Rumgehampel dort nicht so ganz zufrieden.

    Wie ich es oben aus dem 1. Link erklärt hatte finde ich es eigentlich ziemlich gut, weil wenig Fummelei dahinter ist.

    Ich wüsste nur gerne warum das ToolStripMenu die Sprache nicht übernimmt, denn die Sub-Controls dieser Form übernehmen die Sprache korrekt
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    @Rootbob91 Kannst Du dazu mal ein kleines Testprojekt posten?
    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!
    Klar:
    Dateien
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

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

    Ich benutze für die Mehrsprachigkeit immer die eingebaute von Microsoft (zur Entwicklungszeit beide Sprachen im Designer für jeden Control, wo sie benötigt werden, einstellen) und habe keine Probleme damit. Für Tooltip musste ich es allerdings per Hand machen, wie ich mich erinnere. Es kann aber sein, weil die Texte einfach nicht festgelegt waren.

    EDIT: habe es gerade ausprobiert, Tooltip in mehreren Sprachen im Designer einstellen funktioniert hervorragend.

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

    Oh man, ich wüsste gerne was ich falsch mache, ich probiere es nochmal mit nem neuen Projekt aus, vll. habe ich zu viel durcheinander gemacht :/..

    Eben testen.. Hattest du dir mein Beispiel angesehen?

    EDIT:
    Habe ein neues Projekt gemacht, Deutsche Seite bearbeitet (Standard), auf Englisch umgestellt, ebenfalls bearbeitet, dann im Programm ausprobiert, allerdings gehen wieder nur die Labels und nicht die ToolStrip-Items etc.
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Das war nur zum Test, daher wurde es als Testporjekt bezeichnet..

    Unabhängig davon wie die Sprachen dort eingestellt sind -> wenn ich ChangeLanguage() aufrufe müssten die Sprachen trotzdem auf allen Formen angepasst werden, tun sie aber nicht.

    Der ToolStrip ist auf Unterform1

    Danke schonmal..
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Rootbob91 schrieb:

    Tun sie aber nicht.
    Du kannst einem laufenden Thread nicht so einfach die Sprache wechseln.
    Selektiere die Sprache und re-starte Dein Programm. Gugst Du hier.
    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!
    Ich hatte das Gefühl das es geht^^.. Mit den Formen gehts ja wie gesagt, warum dann nicht beim ToolStrip.

    *confused*

    Das was du sagst verstehe ich und klingt plausibel, aber bei allem Anderen klappts ja. Und als ob der ToolStrip jetzt so einen Unterschied macht.

    Ich schau mir den Link an, danke ;)!
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Ach, Toolstrip!! Den kenne ich nicht.

    Ich glaube nicht, dass du einfach so die Sprache wechseln kannst. Ich habe am Anfang eine Login-Form, in der die Sprache ausgewählt wird, dann starte ich nach ChangeCultureUI() meine Hauptform. Die Startform wird übrigens automatisch in der Sprache des Betriebssystem gestartet, dafür musst du nichts tun.