Obvio, no se usa mas poner los textos hace mil años =D, incluso, aunque la aplicacion este pensada para un solo idioma.
Por ? y facil, correcciones ortograficas, estandarizacion de palabras (no queda bien que un boton diga guardar, otro diga save, y otro aplicar )
Solucion magica gracias a java y wicket
archivos.properties
Simple, es un archivo de texto (o varios ) que tienen clave-valor para los textos (o configuraciones)
# comentarios
clave=valor
#clasico ejemplo hola mundo
message=Hola mundo !
ahora donde y como ponemos estos archivos ?
wicket busca primero en un archivo.properties con el mismo nombre que la pagina
por ej: home.html y home.java , va a buscar el home.properties, si no lo encuentra, va a buscar el de la clase super de este (WebPage.properties ) si no puede, su padre y asi hasta
llegar al object.java
si no encuentra la clave hasta ahi, busca por los componentes (por ejemplo panelMenu.properties , panelFooter.properties, etc ) o por la aplicacion.
Con esto, podemos tener uno con el nombre de la aplicacion, y sobreescribir si queremos algo particular, en uno
entonces
Application.properties
#clasico ejemplo hola mundo
message=Hola mundo !
home.properties
#clasico ejemplo hola mundo
message=Hola mundo sobreescrito
como se usa ?
<wicket:message key="message">esto se pisa si encuentra una clave (si no, no )</wicket:message>
en vez de poner el texto en el html
si lo queremos en un componente html por ejemplo un input
<input type="submit" value="Hello world"/>
lo reemplazamos por
<input type="submit" value="texto por defecto" wicket:message="value:helloworld"/>
y si quicieramos poner mas de una propiedad
<input type="submit" value="texto por defecto" wicket:message="value:helloworld,title:hellotitle"/>
como darle varios idiomas
se pone un archivo por cada idioma
(idioma por defecto)
application.properties
(ingles)
application.properties
(españo)
application.properties
(español argentina)
application.properties
codigos en http://msdn.microsoft.com/en-us/library/ms533052(VS.85).aspx
"si, m$ hace cosas buenas =P"
tambien podemos usar esto para configuraciones,
desde codigo java podemos levantarlo con wicket
new StringResourceModel(key, this,null)
MyPanel.properties:
bla=Un texto loco
MyPanel.html:
<span wicket:id="summary">Text that will be replaced.</span>
MyPanel.java:
Summary summary = ...;
add(new Label("summary", new StringResourceModel("bla", this, null)));
tambien se puede inducir cual locale usar
Locale.getDefault() y Locale.setDefault(Locale))
Referencias
http://cwiki.apache.org/WICKET/everything-about-wicket-internationalization.html
http://www.chuidiang.com/java/ResourceBundle/internacionalizacion.php
http://wicket.apache.org/docs/wicket-1.3.2/wicket/apidocs/org/apache/wicket/model/StringResourceModel.html
listado locales
http://msdn.microsoft.com/en-us/library/ms533052(VS.85).aspx
Powered by ScribeFire.