rubensa.eu.org algo en qué pensar...
El contenido de este sitio es de libre distribución, siempre que se cite la fuente original. No está permitido su uso comercial sin previo aviso y si lo modifica o distribuye debe mantener esta licencia.
Inicio de sesión de usuario
10. Localización
Mié, 28/03/2007 - 17:21 — rubensa
El proceso de localizar una aplicación Echo2 es el mismo que el usado para una aplicación Java de escritorio. Las cadenas localizadas se almacenan en paquetes de recursos que se crean para localizaciones específicas. Las cadenas, en lugar de estar escritas en el código de la aplicación, se obtienen de estos paquetes de recursos usando identificadores únicos.
Por ejemplo, el siguiente código configura botones con texto hardcoded (en el propio código) en Inglés:
okButton.setText("Ok"); cancelButton.setText("Cancel");
Una aplicación localizada por el contrario recuperaría el texto adecuado para el botón de un ResourceBundle (paquete de recursos):
ResourceBundle resourceBundle = ResourceBundle.getBundle("myapp.Messages", ApplicationInstance.getActive().getLocale());
okButton.setText(ResourceBundle.getString("Generic.Cancel"));
cancelButton.setText(ResourceBundle.getString("Generic.Cancel"));
Es aconsejable la práctica de obtener todos los textos mostrados a partir de paquetes de recursos incluso si la aplicación no mostrará mas de un idioma. La centralización de todas las cadenas permite una facil revisión de todos los textos que pueden ser mostrados al usuario.
Localización de Component: Component posee soporte para fijar una propiedad Locale que describa su estado de localización así como el estado de localización por defecto para sus Components bajo él en la jerarquía.
Determinando la Localización: Para determinar la localización de un Component dado, se puede invocar al método Component.getRenderLocale(). Este método, para determinar el Locale con el que el Component debería pintarse, consultará al componente, sus ancestros, y finalmente la ApplicationInstance en la que está registrado.
import nextapp.echo2.webcontainer.ContainerContext;
import nextapp.echo2.webrender.ClientProperties;
public class MyApp extends ApplicationInstance {
public void init() {
ContainerContext context = (ContainerContext) getContextProperty(ContainerContext.CONTEXT_PROPERTY_NAME);
ClientProperties clientProperties = context.getClientProperties();
if (clientProperties.getProperty(ClientProperties.LOCALE) != null) {
setLocale((Locale) clientProperties.getProperty(ClientProperties.LOCALE));
}
}
}
Alineación Leading (delantera) y Trailing (trasera): Cuando desarrollamos una aplicación que se puede usar en idiomas RTL, el diseño puede solicitar que ciertas características del interfaz de usuario sean "intercambiadas" al otro lado de la pantalla basándose en si el idioma usado es LTR o RTL. El objeto de propiedad Alignment posee esta capacidad automáticamente cuando se especifican los valores Alignment.LEADING o Alignment.TRAILING para la propiedad horizontal. El valor Alignment.LEADING indica que un elemento se debería situar o alinear a la izquierda cuando se use un idioma LTR, y a la derecha cuando se use un idioma RTL. De modo similar, la propiedad Alignment.TRAILING indica que un elemento debería posicionarse a la derecha para idiomas LTR y a la izquierda para idiomas RTL.
Por ejemplo, el siguiente código configura botones con texto hardcoded (en el propio código) en Inglés:
okButton.setText("Ok"); cancelButton.setText("Cancel");
Una aplicación localizada por el contrario recuperaría el texto adecuado para el botón de un ResourceBundle (paquete de recursos):
ResourceBundle resourceBundle = ResourceBundle.getBundle("myapp.Messages", ApplicationInstance.getActive().getLocale());
okButton.setText(ResourceBundle.getString("Generic.Cancel"));
cancelButton.setText(ResourceBundle.getString("Generic.Cancel"));
Es aconsejable la práctica de obtener todos los textos mostrados a partir de paquetes de recursos incluso si la aplicación no mostrará mas de un idioma. La centralización de todas las cadenas permite una facil revisión de todos los textos que pueden ser mostrados al usuario.
Propiedades Locale
Una ApplicationInstance de Echo2 posee una propiedad Locale que describe su localización actual. Esta propiedad está pensada para que sea fijada por el desarrollador de la aplicación según sea necesario para ajustarse a la localización del usuario.Localización de Component: Component posee soporte para fijar una propiedad Locale que describa su estado de localización así como el estado de localización por defecto para sus Components bajo él en la jerarquía.
Determinando la Localización: Para determinar la localización de un Component dado, se puede invocar al método Component.getRenderLocale(). Este método, para determinar el Locale con el que el Component debería pintarse, consultará al componente, sus ancestros, y finalmente la ApplicationInstance en la que está registrado.
Contenedor Web: Determinar el Locale del Navegador Cliente
Una aplicación Echo2 se puede configurar para que dectecte y configure al iniciarse la localización del cliente. Esto se realiza usando el objeto ClientProperties que se puede obtener del ServerContext. El siguiente código de ejemplo muestra cómo se puede fijar la localización basándose en el navegador cliente:import nextapp.echo2.webcontainer.ContainerContext;
import nextapp.echo2.webrender.ClientProperties;
public class MyApp extends ApplicationInstance {
public void init() {
ContainerContext context = (ContainerContext) getContextProperty(ContainerContext.CONTEXT_PROPERTY_NAME);
ClientProperties clientProperties = context.getClientProperties();
if (clientProperties.getProperty(ClientProperties.LOCALE) != null) {
setLocale((Locale) clientProperties.getProperty(ClientProperties.LOCALE));
}
}
}
Dirección de Escritura
Echo2 proporciona soporte para idiomas que están escritos de izquierda a derecha ("LTR" left-to-right) así como a los que están escritos de derecha a izqueirda ("RTL" right-to-left). Como ejemplos de idiomas RTL están el Arabe y el Hebreo.Alineación Leading (delantera) y Trailing (trasera): Cuando desarrollamos una aplicación que se puede usar en idiomas RTL, el diseño puede solicitar que ciertas características del interfaz de usuario sean "intercambiadas" al otro lado de la pantalla basándose en si el idioma usado es LTR o RTL. El objeto de propiedad Alignment posee esta capacidad automáticamente cuando se especifican los valores Alignment.LEADING o Alignment.TRAILING para la propiedad horizontal. El valor Alignment.LEADING indica que un elemento se debería situar o alinear a la izquierda cuando se use un idioma LTR, y a la derecha cuando se use un idioma RTL. De modo similar, la propiedad Alignment.TRAILING indica que un elemento debería posicionarse a la derecha para idiomas LTR y a la izquierda para idiomas RTL.
- Inicie sesión para enviar comentarios
