API de Localización

A partir de la versión 3.5.0 del Wrapper, la base del código se ha internacionalizado y puede ejecutarse con localización (internacionalización). El método de internacionalización y localización del Wrapper también se puede utilizar para localizar sus aplicaciones Java con relativamente poco esfuerzo de codificación.

Los pasos básicos para implementar la localización basada en el Wrapper son:

Puede localizar su aplicación a cualquier idioma que admita su distribución y con cualquier sistema operativo: japonés, español, alemán, francés, ruso, chino, coreano, italiano, portugués, holandés, danés, húngaro, hindi, griego, árabe, rumano, ucraniano, turco, malayo. (Si hay algún otro idioma que desee usar, por favor escríbenos y agregaremos el/los idioma(s) que necesite en nuestra siguiente liberación.)

1. Agregar la instacia WrapperResource

Para utilizar los métodos de localización del Wrapper, necesitará agregar una instancia WrapperResources. La forma más recomendada es colocar una variable estática que contenga la instancia WrapperResources en una clase única de su proyecto y crear un método "getter" estático. De esta manera, las clases de su proyecto tendrán acceso a WrapperResource y podrán localizar mensajes. En el método getter, puede crear la clase WrapperResource llamando a WrapperManager.loadWrapperResources(java.lang.String, java.lang.String).

instancia estática WrapperResource & método getter
private static WrapperResources m_res;

public static WrapperResources getRes()
{
    if ( m_res == null )
    {
            // Synchronize and then recheck to avoid this method always synchronizing.
            synchronized( Unique.class )
            {
                if ( m_res == null )
                {
                    m_res = WrapperManager.loadWrapperResources( "myapp",
                        WrapperSystemPropertyUtil.getStringProperty( "wrapper.lang.folder", "../lang" ) );
                }
            }
    }
    return m_res;
}

El primer parámetro de WrapperManager.loadWrapperResources() es el dominio, es decir, el nombre sobre el cual el Wrapper tratará de cargar el archivo de recursos. Por ejemplo, con el método getter, el Wrapper tratará de cargar myapp_XX.mo (XX es la abreviación del idioma) desde la ubicación especificada en la propiedad wrapper.lang.folder. Si no se configura esta propiedad, tratará de cargar desde "../lang".

2. Marcar los mensajes para localizaciónon

Marcar todos los mensajes que desea localizar es probablemente la parte que requiere más tiempo en la configuración de la localización. Es necesario revisar su proyecto y envolver sus mensajes con el método getString().

Ejemplo de getString simple
System.out.println( Unique.getRes().getString( "A test message." ) );

Si necesita usar variables en su salida de datos, por favor use el método getString(java.lang.String, java.lang.Object[]). Todas las variables se colocan en la matriz de Objetos. Por conveniencia, WrapperResources también proporciona algunos métodos para hasta 5 Objetos.

Ejemplo de getString con 2 variables
int number = 2;
String msg = "test";
System.out.println( Unique.getRes().getString( "A {0} message with {1} variables.", msg, number ) );

El primer parámetro del método getString() también puede definir varios formatos. Para más información, por favor visite la página de "documentación de java.text.MessageFormat".

NOTA

Tenga en cuenta que las versiones anteriores a Java 1.6 no pueden convertir tipos primitivos (int, boolean, float, etc.) en Objectos. En este caso, considere usar las clases correspondientes del Wrapper (java.lang.Integer, java.lang.Boolean, java.lang.Float, etc.).

3. Crear y preparar archivos mo

La estructura de la localización de procesos del Wrapper es similar a GNU gettext. Por lo tanto, la forma más sencilla es crear la plantilla de recursos de mensajes con xgettext.

Usar xgettext para crear la plantilla de recursos de mensages:
xgettext -d myapp -o ./lang/myapp.pot [project source files]

Esto creará un archivo pot. Recuerde que para los archivos de Java, xgettext buscará la palabra clave ""getString("..")". Si desea agregar otra palabra clave, agréguela con el parámetro "-k [palaba clave]". Los archivos de recursos para cualquier idioma están basados en esta plantilla. Para crear un archivo de recursos para un idioma determinado, ejecute lo siguiente.

Usar xgettext para crear un recurso de mensajes:
msginit --locale=ja --input=./lang/myapp.pot --output=./lang/myapp_ja.po

Esto creará un archivo po editable que podrá traducir. Puede usar un editor de texto simple o un editor para archivos po (e.g. "Poedit", o "GNOME Translation Editor", etc.).

Una vez finalizada la traducción, compile el archivo po (utilizando un editor de archivos po o msgfmt), que se resolverá en el archivo binario mo. Si aún no lo ha hecho, coloque el archivo mo entre los otros archivos mo del Wrapper. ¡Su aplicación ha sido localizada!

¡La configuración de localización para su aplicación ha finalizado! Para más información sobre como ejecutar su aplicación, por favor visite las propiedades wrapper.lang.