2011-01-11 10 views
2

Ich globalisieren eine Windows-Formularanwendung.Gibt es in WinForms ein Repository für lokalisierten allgemeinen Text?

Gibt es eine Möglichkeit, auf allgemeinen Text in der aktuellen Sprache für Windows zuzugreifen?

Zum Beispiel für die Beschriftungen von OK, Cancel und Accept; Wenn ich ein Formular mit einer OK-Schaltfläche erstelle, möchte ich dieselbe Übersetzung verwenden, die Windows überall sonst für OK-Schaltflächen verwendet.

Ich weiß, dass ich die Übersetzung für sie selbst speichern kann, aber Windows muss sie irgendwo gespeichert haben, geben sie Entwicklern Zugang zu ihnen?

+1

Datei + Öffnen + Datei, wählen Sie c: \ windows \ system32 \ user32.dll. LoadString() API. Verwenden Sie das nicht, MSFT hat versprochen, es eines Tages zu brechen. –

+1

Wert Verknüpfung mit der Microsoft Terminonlogy DB @ http://www.microsoft.com/Language/en-US/Terminology.aspx –

Antwort

3

Ja, theoretisch könnten Sie lokalisierte Strings aus Windows internen Systemdateien extrahieren. Aber tu es nicht. Die Vorteile werden von den möglichen Nachteilen bei weitem übertroffen. Ihre Anwendung sollte nicht auf undokumentierte Implementierungsdetails angewiesen sein. Es gibt keinen Grund, dies von Windows zu versuchen.

Es ist auch erwähnenswert, dass Sie Tasten (und jede andere Steuerung) umbenennen können. Das bedeutet, dass es zu einfach ist, etwas zu brechen, wenn Sie sich auf einen String-Matching-Algorithmus verlassen. Es gibt keine Möglichkeit, eine Schaltfläche als einen bestimmten "Typ" zu kennzeichnen, so dass sie automatisch einer bestimmten Beschriftung zugeordnet wird. Selbst wenn Sie könnten, würde dies nicht jede Schaltfläche abdecken, die in einer nicht trivialen Benutzeroberfläche vorhanden ist. Auch, wie Joey's Antwort darauf hinweist, gibt es für den Benutzer nichts Schlimmeres als eine lokalisierte UI teilweise. Konsistenz ist der Schlüssel, und Sie können auf diese Weise keine Labels, Gruppenrahmen, Menüs, Tooltips usw. lokalisieren.

Beachten Sie jedoch, dass Windows automatisch die Beschriftungen für Schaltflächen in einem Meldungsfeld (MessageBox) lokalisiert. Du musst keinen Finger rühren.

Was mit der Einstellung des Localizable Eigenschaft des Formulars auf True falsch ist (Sie müssen diese zur Design-Zeit zu tun) und die Bereitstellung lokalisierter Textes für all der Kontrollen in Ihrer Anwendung? Windows Forms bietet eine ziemlich umfassende Unterstützung für die Lokalisierung. Der Designer wird alle lokalisierbaren Elemente automatisch in die RESX-Datei des Formulars serialisieren. Siehe MSDN: Walkthrough: Localizing Windows Forms. Stellen Sie sicher, dass Sie genügend Platz für die verschiedenen Längen von Ausdrücken in verschiedenen Sprachen lassen.

+0

Ich wusste nicht über diese lokalisierbare Eigenschaft. Das macht die Dinge viel einfacher – Jamiegs

1

This scheint einige Informationen über das haben:

Die USER32.dll ist in der Tat das Repository für lokalisierte Zeichenfolge in Windows.

Es enthält jedoch nicht mehrere String-Tabellen, nur eine.

Ich habe Zugang zu einigen anderen lokalisierten Windows-Versionen (pt-BR, es-ES, ua) und in jedem von ihnen die folgenden Positionen von Windows XP durch Windows behoben werden 7:

800 - OK 801 - Abbrechen 802 - & Abbruch ...

ich noch dies als eine Implementierung Detail behandeln würde und nichts zu verlassen. Lesen Sie Raymond Chen's blog für verschiedene Horrorgeschichten von Entwicklern, die Windows-interne Dinge für selbstverständlich und ewig hielten.

Auch warum haben Sie nicht einfach Ihre eigenen Saiten? Sie können einfach "OK" auf die Schaltfläche setzen, anstatt sie vom Betriebssystem zu übernehmen (und sie dann selbst lokalisieren, wenn Ihre Anwendung lokalisiert werden soll). Als Benutzer finde ich es leicht verwirrend, Teile einer Oberfläche in einer anderen Sprache zu haben als der Rest (was dann immer passieren würde, wenn Ihr Programm keine Lokalisierung hat, zB auf Deutsch und auf einer deutschen Windows-Maschine verwendet wird) Schnittstelle in Englisch mit nur den Knöpfen in Deutsch).

Verwandte Themen