Frage

Ich habe ein beigetragen Blick in eine Eclipse RCP-Anwendung.Diese Ansicht hat eine lokalisierte name % - Ansicht.name, mit dem die übersetzung auf ein plugin.Eigenschaften Datei in "Meine Sicht Teil".

Ich bin auf der Suche in den source-code von Eclipse zu verstehen, wie Internationalisierung funktioniert.So weit, ich habe nicht in der Lage zu finden, an welcher Stelle der Wert aus der Eigenschaftendatei gelesen und zugeordnet, wie der name der Ansicht.

Wenn ich beginne von der Ressource Lesen Teil, ich sehe, dass die Klasse ManifestLocalization liest die properties-Datei, aber ich kann nicht herausfinden, wo es verwendet wird.

Wenn ich es starten aus die Namen-Zuweisung, sehe ich, dass die TableReader Klasse ruft den Namen der Ansicht ein Teil, aber es ist bereits lokalisiert.Ich sah auch, dass Eclipse wandelt diese plugin.xml in einigen serialisiertes Objekt zu einem bestimmten Zeitpunkt.Vielleicht ist es gemacht aus performance-Gründen?

Meine Frage ist also, was Zeit ist dies "% - Ansicht.name" Zeichenfolge umgewandelt in "Meine Sicht Teil"

War es hilfreich?

Lösung

Es gibt mindestens zwei Mechanismen zur Unterstützung der Lokalisierung in eclipse:der NLS, und die org.eclipse.core.runtime.registry.IConfigurationElement.Der Teil, der Sie interessiert, tritt in den IConfigurationElement.

Wenn die IConfigurationElement.getAttribute(String key) wird aufgerufen, die der ResourceTranslator.getResourceString() Methode nutzt die Bundle-Localization header in der OSGi-manifest zu finden, die die richtigen Eigenschaften Datei (in der Regel ist dies plugin${locale}.properties) und Eintrag in den Eigenschaften der Datei.

Sie können bekommen, was auch tatsächlich in der plugin.xml -Datei durch aufrufen der getAttributeAsIs(String key) Methode statt.

Andere Tipps

Dies kann variieren, abhängig von der spezifischen version von Eclipse, aber es sieht aus wie die übersetzung geschieht in ResourceTranslator.getResourceString(Bundle, String, ResourceBundle)

Für einen Blick auf einen Teil-Beitrag, dies geschieht, wenn das plugin-manifest geladen ist als Teil des ExtensionRegistry.addContribution().

Sie sind richtig, dass die übersetzte version zwischengespeichert wird.Wenn Sie Haltepunkte in den Methoden, die ich erwähnt habe, werden Sie feststellen, dass Sie nur ausgelöst, wenn der Arbeitsbereich wird zunächst initialisiert.Um Sie wieder Feuer, Sie müssen löschen der Konfiguration Bereich der Arbeitsfläche.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top