Pregunta

Tengo una visión contribuido en una aplicación Eclipse RCP. Este punto de vista tiene un nombre% view.name localizado, con la traducción de un archivo plugin.properties a "Mi vista parcial".

Estoy buscando en el código fuente de Eclipse para entender cómo funciona la internacionalización. Hasta ahora, no he sido capaz de encontrar en qué momento el valor del archivo de propiedades se lee y se asigna como el nombre de la vista.

Si comienzo de la parte de lectura de recursos, veo que la ManifestLocalization clase lee el archivo de propiedades, pero no puedo encontrar donde se utiliza.

Si comienzo de la asignación de nombres, veo que la clase TableReader obtiene el nombre de la parte de la vista, pero ya está localizada. También vi que Eclipse convierte esta plugin.xml en algún objeto serializado en algún momento. Tal vez se hace por razones de rendimiento?

Así que mi pregunta es, ¿en qué momento se esta "% view.name" cadena convertida en "Mi vista parcial"

¿Fue útil?

Solución

Hay al menos dos mecanismos de apoyo localización en Eclipse: el NLS, y el org.eclipse.core.runtime.registry.IConfigurationElement. La parte que interesa se produce en el IConfigurationElement.

Cuando el IConfigurationElement.getAttribute(String key) se llama, el método ResourceTranslator.getResourceString() utiliza la cabecera Bundle-Localización en los manifiestos de OSGi para encontrar el archivo de propiedades correctas (por lo general esto es plugin${locale}.properties) y la entrada en el archivo de propiedades.

Puede obtener lo que realmente está en el archivo plugin.xml llamando al método getAttributeAsIs(String key) lugar.

Otros consejos

Esto puede variar dependiendo de la versión específica de Eclipse, pero parece que la traducción está sucediendo en ResourceTranslator.getResourceString (Bundle, Cordel, ResourceBundle)

Para una contribución Ver parte, esto sucede cuando el manifiesto plugin está cargado como parte de ExtensionRegistry.addContribution ().

Tiene razón en que la versión traducida se almacena en caché. Si establece puntos de interrupción en los métodos que he mencionado, se dará cuenta de que sólo disparan cuando el espacio de trabajo se inicializa en primer lugar. Con el fin de hacer que se disparan de nuevo, usted tiene que limpiar el área de configuración del espacio de trabajo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top