Mein Projekt enthält mehrere Plugins und jedes Plugin enthält die Datei plugin.properties mit fast 20 Übersetzungen. Die Datei MANIFEST.MF definiert den Namen der Eigenschaftendateien, in denen die externen Plug-in-Strings gespeichert sind.plugin.properties Mechanismus in Eclipse RCP
Bundle-Localization: plugin
Der Name des Plug-i wie
definieren%plugin.name
Eklipse die "% plugin.name" suchen in der plugin.properties Datei zur Laufzeit.
Welche Klasse liest den Eintrag MANIFEST.MF Bundle-Localization aus und an welcher Stelle wird die Zeichenkette mit dem Suffix '%' in der Datei "plugin.properties" gesucht?
Ich möchte diese Klasse auf diese Weise finden und patchen, dass ich zuerst in einigen anderen Verzeichnissen/Dateien nach dem "% plugin.name" Bezeichner suchen kann. Mit diesem neuen Mechanismus kann ich Fragmente zu meinem Produkt hinzufügen und einzelne Zeilen in einer "plugin.properties" -Datei überschreiben, ohne das ursprüngliche Plugin zu ändern. Mit diesen Mechanismen konnte ich einen Build-Prozess für mehrere Kunden erstellen, indem Sie einfach verschiedene Fragmente hinzufügen. Die Fragmente einschließlich der Kundennamen und der speziellen Zeichenfolge, die sie ändern möchten.
Ich möchte es so machen, weil der Fragmentmechanismus nur Dateien zum ursprünglichen Plugin hinzufügt. Wenn die Datei "plugin.properties" im Plugin vorhanden ist, wird das Fragment "plugin.properties" ignoriert.
UPDATE 1:
Verfahren
class ManifestLocalization{
...
protected ResourceBundle getResourceBundle(String localeString) {
}
...
}
kehrt die Resource der Eigenschaften für den gegebenen locale String-Datei. Wenn jemand jetzt weiß, wie ich jetzt zuerst in das Fragment schauen kann, um den Ressourcenpfad zu bekommen, bitte posten Sie es.
UPDATE 2:
Die Methode in der Klasse ManifestLocalization
private URL findInResolved(String filePath, AbstractBundle bundleHost) {
URL result = findInBundle(filePath, bundleHost);
if (result != null)
return result;
return findInFragments(filePath, bundleHost);
}
Suchen für die Eigenschaften-Datei und die Cache-es. Die Übersetzungen können dann aus der zwischengespeicherten Datei abgerufen werden. Das Problem ist, dass die komplette Datei zwischengespeichert wird und nicht einzelne Übersetzungen.
Eine Lösung wäre, zuerst die Fragmentdatei zu lesen, dann die Bundle-Datei zu lesen. Wenn beide Dateien vorhanden sind, führen Sie sie in eine Datei zusammen und schreiben Sie die neue Eigenschaftendatei auf den Datenträger. Die URL der neuen Eigenschaftendatei wird zurückgegeben, sodass die neue Property-Datei zwischengespeichert werden kann.
Wo kann ich die populate Methode finden? Oder muss ich es schreiben? –
Können Sie bitte mehr Informationen in Ihre Antwort einfügen. Vielen Dank! –