# Mehrere Sprachen im Plug-In anbieten



## Gonzo17 (14. Sep 2009)

Hallihallo,

momentan bin ich gerade dabei mein Plug-In zu "internationalisieren", sprich, mehrsprachig zu gestalten. Um das sinnvoll realisieren zu können bin ich einer Anleitung aus nem "alten" Eclipse-Buch gefolgt. Das wichtigste Stichwort dazu ist wohl die Eclipse-Funktion "Externalize Strings". Das klappt auch alles wunderbar, ich hab nun meine plugin.properties in ein Fragment abgelegt. Nun hab ich mich aber gefragt. Wenn ich plugin_en.properties und plugin_de.properties habe - welche wird denn nun verwendet? Logischerweise die, die in der Manifestdatei eintragen ist. Aber geht das nicht anders? Das ist ja wohl ziemlich statisch. 

Mir wärs eigentlich am liebsten, wenn es eine Einstellungen in den Preferences gäbe, in der die Sprache festgelegt und geändert werden kann. Weil wenn ich das so mache wie jetzt, dann muss ich ja für jede Sprache ein eigenes Plug-In erstellen und die andere Sprache wäre dann überhaupt nicht zugänglich. Ist finde ich nicht sehr schön und eigentlich muss das besser gehen. 

Habe jetzt eben noch folgendes Tutorial überflogen: How to Internationalize your Eclipse Plug-In
Sieht aber im Grunde ganz genauso aus wie das in dem Buch, nur etwas ausführlicher. Trotzdem sehe ich da keine Möglichkeit die Sprache festzulegen, ohne im Code direkt zu arbeiten. ;(


----------



## Wildcard (14. Sep 2009)

Wenn du das per Menü machen willst, dann häng einen Parameter -nl <language> in die eclipse.ini und starte die Workbench neu.


----------



## Gonzo17 (18. Sep 2009)

Klasse, das funktioniert!

Ich hab nurn Problemchen, wenn ich die ganze Geschichte exportiere und nicht mehr aus Eclipse heraus starte (da funktionierts wunderbar). 

Ich habe für englisch und deutsch jeweils eine plugin_<language>.properties und eine messages_<language>.properties. Die hab ich in ein Fragment gelagert, damit ich bei eventuellen Updates nicht das ganze Plug-In updaten muss. Die plugin_en.properties und plugin_de.properties liegen direkt im Fragment, die messages_en.properties und messages_de.properties liegen in dem gleichen package, wie es auch im Original-Plug-In liegen würde (heisst das package dort de.test.ui, dann wär das hier auch der Name für das Package im Fragment). Wie gesagt, aus Elcipse heraus über das Product oder als Eclipse Application ist das alles kein Problem, läuft tadellos. Aber sobald ich exportiere, wird die messages_<language>.properties nicht mehr gelesen. 

Ich dachte erst, dass vielleicht in der Manifest-Datei vom Fragment irgendwas nicht stimmt, aber ich hab alles mögliche probiert, hab vor allem darauf geachtet, dass unter "Build" die Datei überhaupt erstellt werden. Hat alles nichts gebracht. Mir ist aufgefallen, dass das Fragment nicht als .jar im Plug-In-Verzeichnis liegt, wenn man exportiert, sondern entpackt. Ich hab keine Ahnung, ob es was damit zu tun hat, aber ich würde gerne wissen, wie man beeinflußen kann, ob ein Plug-In/Fragment entpackt oder unentpackt exportiert wird (dann könnte ich wenigstens ausschließen, dass es daran liegt). Ansonsten weiss ich leider nicht mehr weiter. Weiss jemand, was ich da tun oder probieren kann? :bahnhof:


----------



## Wildcard (18. Sep 2009)

Das stellst du im entsprechenden Feature ein durch das das Fragment gemanaged wird. Würde darauf tippen das einfach etwas beim installieren des Bundles nicht funktioniert hat. Wie hast du es denn deployed?


----------



## Gonzo17 (21. Sep 2009)

Also mein Plug-In gibts sowohl als Plug-In für Eclipse wie auch als RCP, quasi ein Standalone. Wenn ich es jetzt als RCP exportieren möchte, dann tu ich das über das Product und den dortigen Export-Wizard. Es wird ein Ordner erstellt, der die Ordner "plugins" und "configuration" enthält, sowie eine .exe, eine .ini und die .eclipseproduct. Im Ordner "plugins" ist ja auch das entsprechende Plug-In (schon entpackt). Und dass es generell zu funktionieren scheint zeigt ja die Tatsache, dass die plugin_<language>.properties problemlos gelesen werden, nur eben die messages_<language>.properties nicht. 

Ich hab zwar gefunden, wie ich im Feature einstellen kann, ob das Plug-In/Fragment entpackt wird oder nicht, aber zumindest auf den Export des RCP hat das irgendwie keine Auswirkung. Und beim Test als Plug-In hat es keinen Unterschied gemacht, obs gepackt war oder nicht, er konnte die Datei wohl nicht finden.

Nochmal zum Aufbau, vielleicht liegt da der Fehler. Ich hab ein Plug-In "de.meineseite.meinplugin", dazu auch das Feature "de.meineseite.meinplugin.feature" und als Standalone "de.meineseite.meinplugin.standalone" (das auf das Plug-In aufbaut) sowie "de.meineseite.meinplugin.standalone.feature". Dazu noch jeweils Update-Sites. Neu dazugekommen ist jetzt "de.meineseite.meinplugin.nl1" (so soll man das laut Tutorial nennen), das ist das Fragment, das nun die Sprachdateien enthalten soll. Im Plug-In "de.meineseite.meinplugin" gibt es nun ein gleichnamiges Package mit verschiedenen Subpackages (die aber wohl erstmal nicht interessieren) und in diesem Package liegt die Messages-Klasse. Normalerweise liegen im selben Package wie diese Klasse ja auch die messages_<language>.properties Dateien, die werden ja aber herausgezogen. Im Fragment "de.meineseite.meinplugin.nl1" gibt es dann entsprechend dieses Package mit genau das gleichen Bezeichnung. Und wie gesagt, wenn ich es aus Eclipse heraus starte, dann klappt das wunderbar, sobald ich es exportiere, funktionierts nichtmehr.


----------



## Gonzo17 (21. Sep 2009)

Habs wohl gelöst. In den build.properties fehlt folgende Zeile:

source.. = src/

Ohne diese Zeile wurde das Package nicht automatisch exportiert, sondern nur wenn ich src oder bin angeklickt habe. Da aber eben dann ein Ordner obendrüber war (src bzw bin), hat ers wohl nicht gefunden.


----------

