2017-10-15 4 views
0

Ich versuche eine einfache Methode, um meine Anwendung zu übersetzen. Ich dachte, dass es vielleicht möglich ist, das Formular mit einem Dictionary auf Textebene zu übersetzen, indem Sie die Graphics-Klasse überschreiben. Und sogar den Zeichnungspunkt auf die gleiche Weise für die Unterstützung von RightToLeft Languages ​​bearbeiten. Jemand hat eine gute Idee?Ist es möglich, die Formsprache auf Textebene zu übersetzen?

Antwort

0

Ich dachte, vielleicht ist es möglich, das Formular mit einem Dictionary auf der Textebene zu übersetzen, indem Sie die Graphics-Klasse überschreiben.

Die Klasse Graphics kann nicht überschrieben werden. Sie können die Methode OnPaint der Steuerelemente überschreiben. Aber wie würden Sie die Textzeichnung von einer anderen Zeichnung trennen? Und was erwarten Sie, wenn jemand zum Beispiel die Text Eigenschaft liest?

Jemand hat eine gute Idee?

Ja, verwenden Sie die integrierten Lösungen für die Lokalisierung. Setzen Sie einfach Localizable auf Ihrem Formular auf true. Jetzt können Sie die Sprachen zur Entwurfszeit wechseln und alles zur Entwurfszeit für diese Sprache bearbeiten, nicht nur Text, sondern auch RightToLeft-Eigenschaft, Größen und im Grunde alles.

Wenn Sie die Anwendung starten, verwendet das Formular die Windows-Sprache oder greift auf die invariante Sprache zurück. Wenn Sie die Sprache programmgesteuert ändern möchten, legen Sie einfach die Eigenschaft Thread.CurrentThread.CurrentUICulture fest. Möglicherweise möchten Sie das Formular erneut öffnen, um die Sprache anzuwenden, oder rufen Sie explizit InitializeComponent() an.

+0

Dies ist ein interessanter Weg, ich werde es überprüfen. Und für Ihre Frage, was ich meinte, ist nur die Ausgabe in das Display zu übersetzen, so dass die Text-Eigenschaft das Original bleibt. – user6466445

+0

Das wäre sehr irreführend und es fehlt jede Konvention. Warum ist es ein Problem, wenn die 'Text' -Eigenschaft den Text auf dem Steuerelement zurückgibt? Wenn Sie etwas stationäres benötigen, gibt es die Eigenschaft 'Name' und Sie können das' Tag' auch für jeden benutzerdefinierten Zweck verwenden. – taffer

+0

Wenn ich die Text-Eigenschaft übersetze, kann ich das Original nicht zurückgeben und dies kann in einigen Situationen (z. B. ComboBox mit Optionsliste) zu Problemen führen. Wenn die Übersetzung in der Zeichenzeit ausgeführt wurde, bleibt die Text-Eigenschaft die Quelle und So wird es möglich sein, die Sprache jederzeit durch Neuzeichnen zu ändern. – user6466445

Verwandte Themen