API de Localización

A partir de la versión 3.5.0, el código ha sido internacionalizado y es capaz de ejecutarse localmente. El método de Internacionalización y Localización puede ser usado para localizar sus aplicaciones Java con código muy fácil de usar.

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

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

1. Agregar la instacia WrapperResources

Cualquier aplicación Java que desee utilizar los métodos de Internacionalización y Localización del Wrapper necesita agregar la instancia WrapperResources. Existen diferentes maneras de hacerlo. Le recomendamos que coloque una variable estática que mantenga la instancia WrapperResources en una clase única de su proyecto, y ésta cree un método estático de acceso "getter". De esta manera, las clases de su proyecto tendrán acceso a WrapperResource y podrán localizar mensajes. En el método de acceso, 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 domain, i.e. el nombre sobre el cual el Wrapper tratará de cargar el archivo de recursos. Por ejemplo si se usa el método de acceso (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 esta propiedad no es configurada, se tratará de cargar desde "../lang".

2. Marcar los mensajes de localización

Marcar todos los mensajes que desee normalmente toma demasiado tiempo en configurar la ubicación. Necesita revisar su proyecto y configurarlo con el método que le ofrece el Wrapper getString().

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

Si necesita usar varibales en su salida de datos, por favor use el método getString(java.lang.String, java.lang.Object[]). Todas las variables son puestas en un Objeto de arreglo. 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

Tome en cuenta que las versiones anteriores a Java 1.6 no pueden convertir tipos primitivos (int, boolean, float, etc.) a Objectos. En este caso, por favor 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 consiguiente, la manera más fácil es crear la plantilla del mensaje de recurso con xgettext.

Creando la plantilla con xgettext:
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 quiere agregar otra palabra clave, por favor hágalo 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 específico ejecute:

Creando mensaje de recursos con xgettext:
msginit --locale=ja --input=./lang/myapp.pot --output=./lang/myapp_ja.po

Esto se resolverá en un archivo po editable. Usted o su traductor(a) pueden empezar a traducir este archivo. Se puede usar un editor de texto simple o un editor para archivos po (e.g. "Poedit", o "Gtranslator", etc.).

Después de terminada la traducción, compile el archivo po (usando un editor de archivos po o msgfmt), que resolverá en el archivo binario mo. Si aún no lo ha hecho, coloque el archivo mo con los otros archivos mo del Wrapper. Su aplicación ha sido localizada!

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