2009-03-13 12 views
9

¿Cómo externalizo cadenas en plugin.xml de mi plugin de Eclipse?Cadenas de externalización en plugin.xml para el complemento Eclipse

Al hacer clic derecho en el proyecto del complemento> Herramientas PDE> Externalizar cadenas no aparece en mi complemento.

Estoy tratando de hacer esto manualmente ahora. Agregué entradas en plugin.properties y reemplacé la cadena equivalente en plugin.xml con un signo% seguido de la clave de cadena. Pero eso no parece funcionar. ¿Que me estoy perdiendo aqui?

Respuesta

18

Finalmente descubrí cómo externalizar manualmente el complemento.

Eclipse, resulta que, exterioriza plugin.xml de esta manera:

  • En el complemento de manifiesto (META-INF/MANIFEST.MF), agregue la siguiente línea

    Bundle-Localization: plugin 
    

    donde tiene la intención de almacenar las cadenas externalizadas en un archivo llamado "plugin.properties" (Resulta que esta era la pieza faltante).

  • Agregue los pares clave-valor de cadena externa en plugin.properties.

  • Reemplace las cadenas reales en plugin.xml con las claves de plugin.properties (con el prefijo%).

+0

Gracias por este comentario. +1. He agregado algunos enlaces relacionados con ese problema de "Localización de paquetes" en mi respuesta a continuación. – VonC

3

Si su conjunto de trabajo tiene proyectos de complemento, el Externalize Strings wizard para ayudar a externalizar cadenas en sus archivos Manifest y plugin.xml debería estar disponible.
La externalización de archivos de manifiesto extrae cadenas traducibles y las almacena en un archivo de propiedades para compatibilidad con varios idiomas.

El asistente está disponible en el menú Herramientas de PDE en el menú contextual de los archivos MANIFEST.MF o plugin.xml de un proyecto de PDE.

alt text http://help.eclipse.org/stable/topic/org.eclipse.pde.doc.user/guide/images/pde_actions/externalize_strings_selection.png

Sé consciente de que había algunos errores relacionados con detecting all non-externalized attributes/values of the <extension-point> and <extension> elements o showing up un-externalized names of extension(-point), que sólo se resuelven en 3.4 o muy 3.5M4 reciente.

Sin embargo, si el menú "Externalizar las secuencias" no aparece en absoluto en sus proyectos de plug-in, que puede ser su "project nature" está dañado de alguna manera, puede ser su antiguo proyecto Java es not properly converted to a PDE project?

Así que dos sugerencias:

  • intento con una nueva instalación de un eclipse3.5M4
  • importar su proyecto plugin y comprobar su naturaleza

y luego nos dicen si ese menú es todavía indisponible.


Como usted menciona in your own answer, el proceso de externalización es declarado por la cadena

Bundle-Localization: plugin 

en el archivo MANIFEST.MF, como se menciona en this message.

Un bug has been created, pero:

  • La localización puede no ser algo específico de la PDE pero en cambio la especificación OSGi
  • esa línea no es siempre en el manifiesto:

    Antes de 3.3 , creamos todos nuestros manifiestos creando un plugin.xml y luego convirtiéndolo. El convertidor siempre agregó "Bundle-Localization: plugin" al manifiesto , ya que esa es la ubicación predeterminada si el complemento no tiene Manifiesto.
    Si un complemento no tenía archivos de traducción, este encabezado no era innecesario.
    En 3.3, creamos proyectos de complemento al crear Manifiesto directamente, lo que significa que decidimos crear solo los encabezados necesarios para la creación del proyecto.

  • es probable que sea un problema para aquellos que han creado paquetes con externalización < 3.2, y luego no ser capaz de verlos cuando se ejecuta en 3.3.

+0

Por alguna razón, el asistente de Externalize String muestra otros complementos pero no el complemento requerido. Sin embargo, logré solucionar el problema. Lo he agregado como una nueva respuesta aquí. – PlagueHammer

+0

+1 Para una solución completa que no sabía que existía. Normalmente, internacionalicé todas estas cadenas a mano. –

+0

Gracias Nocturne por la publicación. Junto con los cambios que mencionaste en tu publicación, me gustaría agregar una línea más. Mientras exporta el contenedor de plug-in, realice la entrada de plugin.properties en el archivo build.properties. –

Cuestiones relacionadas