Question

J'ai vue contribué dans une application Eclipse RCP. Ce point de vue a un nom localisé% view.name, la traduction d'un fichier plugin.properties à "My View partie".

Je suis à la recherche dans le code source d'Eclipse pour comprendre comment fonctionne l'internationalisation. Jusqu'à présent, je ne l'ai pas été en mesure de trouver à quel point la valeur du fichier de propriétés est lu et désigné comme le nom de la vue.

Si je commence de la partie de lecture des ressources, je vois que la ManifestLocalization de classe lit le fichier de propriétés, mais je ne peux pas trouver où il est utilisé.

Si je pars de l'attribution de nom, je vois que la classe TableReader obtient le nom de la partie de vue, mais il est déjà localisé. J'ai vu aussi que Eclipse convertit plugin.xml dans un objet sérialisé à un moment donné. Peut-être qu'il est fait pour des raisons de performance?

Ma question est, à quel moment est cette chaîne "% view.name" transformé en "My View partie"

Était-ce utile?

La solution

Il existe au moins deux mécanismes de support de localisation en éclipse: la NLS, et le org.eclipse.core.runtime.registry.IConfigurationElement. La partie qui vous intéresse se produit dans le IConfigurationElement.

Lorsque l'on appelle IConfigurationElement.getAttribute(String key), la méthode utilise l'en-tête ResourceTranslator.getResourceString() Bundle-localisation dans les OSGi manifestes pour trouver le fichier de propriétés correctes (ce qui est habituellement plugin${locale}.properties) et l'entrée dans le fichier de propriétés.

Vous pouvez obtenir ce qui est en fait dans le fichier plugin.xml en appelant la méthode à la place getAttributeAsIs(String key).

Autres conseils

Cela peut varier en fonction de la version spécifique d'Eclipse, mais il semble que la traduction se passe dans ResourceTranslator.getResourceString (Bundle, String, ResourceBundle)

Pour une contribution de partie, cela se produit lorsque le manifeste de plug-in est chargé dans le cadre de ExtensionRegistry.addContribution ().

Vous avez raison que la version traduite est mise en mémoire cache. Si vous définissez des points d'arrêt dans les méthodes que je parlais, vous remarquerez qu'ils se déclenchent uniquement lorsque l'espace de travail est d'abord initialisé. Pour les faire feu à nouveau, vous devez effacer la zone de configuration de l'espace de travail.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top