Domanda

Ho una visione contribuito in un'applicazione Eclipse RCP. Questo punto di vista ha un nome localizzato% view.name, con la traduzione su un file plugin.properties a "My View Part".

Sto cercando nel codice sorgente di Eclipse per capire come funziona l'internazionalizzazione. Finora, non sono stato in grado di trovare a che punto il valore dal file delle proprietà viene letto e assegnato come il nome della vista.

Se inizio dalla parte lettura risorsa, vedo che il ManifestLocalization classe di legge il file delle proprietà, ma non riesco a trovare dove viene utilizzato.

Se parto dalla assegnazione del nome, vedo che la classe TableReader prende il nome della parte vista, ma è già localizzato. Ho visto anche che Eclipse converte questo plugin.xml in qualche oggetto serializzato a un certo punto. Forse è fatto per motivi di prestazioni?

Quindi la mia domanda è, a che ora è questa "% view.name" stringa convertita in "My View Part"

È stato utile?

Soluzione

C'è almeno due meccanismi di supporto localizzazione in Eclipse: NLS e la org.eclipse.core.runtime.registry.IConfigurationElement. La parte siete interessati a verifica nel IConfigurationElement.

Quando il IConfigurationElement.getAttribute(String key) viene chiamato, il metodo ResourceTranslator.getResourceString() utilizza l'intestazione Bundle-localizzazione nel OSGi manifesto per trovare il file delle proprietà corrette (di solito questo è plugin${locale}.properties) e l'ingresso nelle proprietà del file.

È possibile ottenere ciò che è effettivamente nel file plugin.xml chiamando il metodo getAttributeAsIs(String key) invece.

Altri suggerimenti

Questo può variare a seconda della versione specifica di Eclipse, ma sembra che la traduzione sta accadendo in ResourceTranslator.getResourceString (Bundle, String, ResourceBundle)

Per un contributo parte vista, questo accade quando il manifesto plugin è caricato come parte di ExtensionRegistry.addContribution ().

Lei ha ragione che la versione tradotta viene memorizzato nella cache. Se si imposta i punti di interruzione nei metodi che ho citato, si noterà che essi fuoco solo quando il lavoro viene prima inizializzato. Al fine di rendere loro fuoco di nuovo, è necessario cancellare l'area di configurazione dell'area di lavoro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top