LocalizacionNetbeansPlatformComoPlugins

Localización de Aplicaciones Basadas en Netbeans Platform como Plugins

Artículo Original: Netbeans Platform Localization as Plugins
Autor: Tonny Kohar
Adaptado desde http://blogs.kiyut.com/tonny/2008/08/06/netbeans-platform-localization-as-plugins/
Traducido por: Luis Enrique Funes



Este es otro truco para la internacionalización y localización de aplicaciones basadas en NetBeans Platform. Este método es usado para localizar Aplicaciones basadas en NetBeans Platform que pueden ser actualizadas mediante el Update Center. La localización también tiene una entrada en la lista de plugins. Sin embargo, tenga en cuenta que esto puede ser considerado una especie de HACK. Una localización apropiada deberá seguir el Proyecto de Localizacion de NetBeans.


File:nb-plugins-list_LocalizacionNetbeansPlatformComoPlugins.png

Nota: esto fue probado en Netbeans 6.1, y usando Alkitab Bible Study como ejemplo.

Arquitectura

Como probablemente sepa, NetBeans divide la plataforma en módulos, cada módulo tiene su propio directorio y sus aplicaciones (basadas en la Plataforma) deberán tener uno propio. Por ejemplo:

- bin
- etc
- ide9 (grupo del IDE)
- platform (grupo del Platform)
- alkitab (grupo de la aplicación)
  * modules
    - locale (tenga en cuenta que esto es importante)
- ...

Por lo que yo entiendo, NetBeans almacena la localización en la carpeta nombre-del-grupo/modules/locale. Así que de alguna manera lo que necesita es colocar su jar (conteniendo una única localización) en esa carpeta. Otro punto importante es que el nombre del jar tiene que tener el mismo nombre que el módulo que busca localizar. Por ejemplo:

- para com-su-modulo.jar, el nombre del jar de localización debería ser com-su-modulo[_pais_lenguaje].jar
- para org-netbeans-core.jar, el nombre del jar de localización debería ser org-netbeans-core[_pais_lenguaje].jar
- etc

El código de país y lenguaje son opcionales para el nombre del jar. Este realmente se utiliza si busca separar los jars de cada localización. The country code and lang is optional for the jar name. It only use if you really want to separate the jar for each locale. Para mantener las cosas simples nosotros podemos no agregar los códigos de país/lenguaje y todas las localizaciones soportadas estarán dentro de un único jar.

Paso 1: Crear un nuevo módulo

El primer paso es crear un nuevo proyecto de módulo que puede contener la localización (en este caso para todos los lenguajes). Dentro del mismo módulo, crear un paquete (estructura de carpeta) que se corresponda con las cosas que desea localizar y crear los archivos apropiados de propiedades (.properties) localizados (adjuntar el código de país y lenguaje) Por ejemplo: kiyut.alkitab.actions.Bundle_in_ID.properties

Para el módulo de la plataforma/edi necesita encontrar si el texto está localizado y el nombre del jar- Por ejemplo: org.netbeans.core.actions.Bundle with key Exit=E&xit jar name = org-netbeans-core.jar Y crear la misma estructura en el proyecto del módulo anteriormente creada.

Paso 2: Modificar build.xml

El proximo paso es modificar build.xml para producir el jar en el lugar apropiado (nota: la carpeta locale). La salida será algo como esto:

nombre-tu-modulo-de-localizacion.nbm (este es el nuevo proyecto nbm del paso 1)
- info
- META-INF
- netbeans
  - config
    - Modules
      - nombre-tu-modulo-de-localizacion.xml
- modules
  - locale
    - tu-jar-que-contiene-archivo-properties-de-localizacion.jar (opcionalmente puede usar el código de país)
    - org-netbeans-core.jar (Parte de Netbeans que usted localiza)
    - org-netbeans-core-windows.jar
    - etc
  - nombre-tu-modulo-de-localizacion.jar

Este es un ejemplo de build.xml, Fíjese que sobrescribe el destino: jar y nbm.

<project name="kiyut.alkitab.modules.localization" default="netbeans" basedir=".">
    <description>Construye, prueba, y ejecuta el proyecto kiyut.alkitab.modules.localization.</description>
    <import file="nbproject/build-impl.xml"/>
    <target name="build-init" depends="harness.build-init">
        <property name="update-source.basedir" value="../alkitab-suite/alkitab-core"/>
        <property name="locale.dir" value="${basedir}/build/cluster/modules/locale/"/>
    </target>
 
    <!-- Actualizar el origen de la actualizacion, este es solo para Alkitab -->
    <!-- los archivos de propiedades de Netbeans necesitan ser actualizados/copiados manualmente -->
    <target name="update-source" description="Actualiza la localización de origen" depends="init">
        <copy todir="." preservelastmodified="false" verbose="true" overwrite="true">
            <fileset dir="${update-source.basedir}">
                <include name="src/**/*.properties"/>
                <include name="src/**/*.htm*"/>
                <exclude name="src/kiyut/alkitab/*.properties" />
                <!-- <include name="javahelp/**/*.properties"/>
                <include name="javahelp/**/*.htm*"/>
                <include name="javahelp/**/*toc.xml"/>
                -->
            </fileset>
        </copy>
    </target>
 
    <target name="jar" depends="projectized-common.jar">
        <!-- paso 1: crear un jar por cada modulo que solo contiene la localizacion y el lugar bajo la carpeta locale-->
 
        <mkdir dir="${locale.dir}"/>
        <jar jarfile="${locale.dir}/kiyut-alkitab.jar" compress="${build.package.compress}">
            <fileset dir="build/classes">
                <include name="**/kiyut/alkitab/**/*_*.properties"/>
                <exclude name="**/kiyut/alkitab/modules/**" />
            </fileset>
        </jar>
 
        <jar jarfile="${locale.dir}/org-netbeans-core.jar" compress="${build.package.compress}">
            <fileset dir="build/classes">
                <include name="**/org/netbeans/core/**/*_*.properties"/>
                <exclude name="**/org/netbeans/core/windows/**" />
            </fileset>
        </jar>
 
        <jar jarfile="${locale.dir}/org-netbeans-core-windows.jar" compress="${build.package.compress}">
            <fileset dir="build/classes">
                <include name="**/org/netbeans/core/windows/**/*_*.properties"/>
            </fileset>
        </jar>
 
        <jar jarfile="${locale.dir}/org-netbeans-modules-options-api.jar" compress="${build.package.compress}">
            <fileset dir="build/classes">
                <include name="**/org/netbeans/modules/options/**/*_*.properties"/>
            </fileset>
        </jar>
 
        <!-- paso 2: actualizar el jar del modulo para eliminar innecesarias archivos de localizacion de este modulo -->
 
        <property name="module.jar-temp" value="${module.jar}-temp"/>
        <jar jarfile="${cluster}/${module.jar-temp}" compress="${build.package.compress}" index="${build.package.index}" filesetmanifest="merge">
            <zipfileset src="${cluster}/${module.jar}">
                <include name="**/modules/localization/**"/>
                <include name="META-INF/**"/>
            </zipfileset>
        </jar>
        <move file="${cluster}/${module.jar-temp}" tofile="${cluster}/${module.jar}"/>
 
    </target>
 
    <target name="nbm" depends="projectized-common.nbm">
        <property name="nbm-expand" value="nbm-expand"/>
 
        <!-- paso 1: descomprimir (unjar) el archivo nbm creado -->
        <unjar src="build/${nbm}" dest="build/${nbm-expand}">
            <patternset>
                <exclude name="META-INF/**"/>
            </patternset>
        </unjar>
 
        <!-- paso 2: colocar la localizacion dentro de la carpeta apropiada -->
        <copy todir="build/${nbm-expand}/netbeans/modules/locale/" >
            <fileset dir="${cluster}/modules/locale/" />
        </copy>
 
        <!-- paso 3: comprimir nuevamente el resultado -->
        <jar jarfile="build/${nbm}" compress="true">
            <fileset dir="build/${nbm-expand}" />
        </jar>
 
        <!-- paso 4 [opcional: firmar el nbm resultante -->
        <antcall target="sign-nbm" />
    </target>
 
    <target name="sign-nbm" if="keystore">
        <signjar jar="build/${nbm}" keystore="${keystore}" storepass="${storepass}" alias="${nbm_alias}" />
    </target>
 
</project>

Paso 3: Finalizar y Probar

Esto esta finalizado, lo único que necesita es probarlo. Tengalo en cuenta en su aplicaciones de Menú/Herramientas/Plugins It is finished, you only need to test it. Note in your application Menu-Tools-Plugins, podría listar el nuevo plugin de localización que puede ser actualizado mediante el Centro de Actualizaciones (Update Center)

Puedes descargar el código fuente entero desde la sección Alkitab Bible Study Developer.

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo