3 Stimmen

Wo wird die Lokalisierung im Eclipse-Code vorgenommen?

Ich habe eine beigetragene Ansicht in einer Eclipse RCP-Anwendung. Diese Ansicht hat einen lokalisierten Namen %view.name, mit der Übersetzung auf eine plugin.properties-Datei zu "My View Part".

Ich schaue in den Quellcode von Eclipse, um zu verstehen, wie die Internationalisierung funktioniert. Bisher konnte ich noch nicht herausfinden, an welchem Punkt der Wert aus der Eigenschaftsdatei gelesen und als Name der Ansicht zugewiesen wird.

Wenn ich mit dem Teil zum Lesen der Ressourcen beginne, sehe ich, dass die Klasse ManifestLocalization die Eigenschaftsdatei liest, aber ich kann nicht herausfinden, wo sie verwendet wird.

Wenn ich von der Namenszuweisung ausgehe, sehe ich, dass die TableReader-Klasse den Namen des View-Teils erhält, aber dieser ist bereits lokalisiert. Ich habe auch gesehen, dass Eclipse diese plugin.xml irgendwann in ein serialisiertes Objekt umwandelt. Vielleicht geschieht das aus Leistungsgründen?

Meine Frage ist also, zu welchem Zeitpunkt wird diese Zeichenkette "%view.name" in "My View Part" umgewandelt?

3voto

jamesh Punkte 19377

Es gibt mindestens zwei Mechanismen, die die Lokalisierung in Eclipse unterstützen: das NLS und die org.eclipse.core.runtime.registry.IConfigurationElement . Der Teil, der Sie interessiert, kommt in der IConfigurationElement .

Wenn die IConfigurationElement.getAttribute(String key) aufgerufen wird, wird die ResourceTranslator.getResourceString() Methode verwendet den Bundle-Localization-Header im OSGi-Manifest, um die richtige Eigenschaftsdatei zu finden (normalerweise ist dies plugin${locale}.properties ) und Eintrag in der Eigenschaftsdatei.

Sie können herausfinden, was tatsächlich in der Datei plugin.xml steht, indem Sie die Funktion getAttributeAsIs(String key) Methode an.

0voto

Jordan Liggitt Punkte 14679

Dies kann je nach Eclipse-Version variieren, aber es sieht so aus, als würde die Übersetzung in ResourceTranslator.getResourceString(Bundle, String, ResourceBundle) erfolgen.

Bei einem View-Part-Beitrag geschieht dies, wenn das Plugin-Manifest als Teil von ExtensionRegistry.addContribution() geladen wird.

Sie haben Recht, dass die übersetzte Version im Cache gespeichert wird. Wenn Sie in den genannten Methoden Haltepunkte setzen, werden Sie feststellen, dass diese nur bei der ersten Initialisierung des Arbeitsbereichs ausgelöst werden. Damit sie erneut ausgelöst werden, müssen Sie den Konfigurationsbereich des Arbeitsbereichs löschen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X