2010-10-20 28 views
5

Hola, una pregunta Wicket i18n: Tengo un archivo javaScript, que contiene las cadenas que quiero localizar. Idealmente quiero localizar todo el archivo. Algo así comoCómo localizar archivos javascript en wicket

  • my.js
  • my_de.js
  • my_fr.js
  • ...

donde postigo elige automáticamente el archivo js la derecha, como lo hace con archivos de propiedades .

¿Alguien sabe cómo hacer eso?

Respuesta

8

Pasar el entorno local en la referencia de recurso:

class MyPage extends WebPage implements IHeaderContributor { 
    public void renderHead(IHeaderResponse response) { 
     response.renderJavascriptReference(new ResourceReference(
     MyPage.class, "my.js", getLocale(), getStyle())); 
    } 
} 
+0

Se me ocurrió una solución que usaba PackageResource, pero la suya es aún más corta. Muchas gracias. – nebenmir

0

La solución real funciona si las cadenas ya están en el Javascript files.But lo que sucede cuando se han localizado las cadenas en su base de datos y quiere pasarlos a tu código Javascript? Puede crear un archivo XML llamado YourPageJS.xml y almacenar el código JavaScript allí identificado por algunas teclas.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 
<properties> 

    <entry key="showModal"> 
    <![CDATA[ 

     $(''#{0}'').modal(''show'',{1}); 

    ]]> 
    </entry> 
</properties> 

Se llama a este código a través del siguiente método que se encuentra en una clase de utilidad, pasando sus parámetros:

public static String getJsByClass(Class clazz, String name, Object... params) 
    { 
     ResourceBundle resources = ResourceBundle.getBundle(clazz.getName() 
       + "JS", Locale.getDefault(), 
       new XMLResourceBundleControl()); 

     String mesaj = resources.getString(name); 
     mesaj = MessageFormat.format(mesaj, params); 

     return mesaj; 
    } 

La llamada se ve así:

YourUtils.getJsByClass(YourPage.class, "showModal" ,"firstParameter","secondParameter"); 

donde los parámetros podrían ser sus cadenas localizadas. En el caso anterior, el primer parámetro es el Id de marca. Puede agregarlo a su encabezado html de la siguiente manera:

response.render(JavaScriptHeaderItem.forScript(YourUtils.getJsByClass(YourPage.class, "showModal" ,"firstParameter","secondParameter"), "yourJSid")); (peatonal incorporada 6)

Además, en el XML debe transformar dos personajes: ' convierte '' y { se convierte en '{' por razones de análisis.

Cuestiones relacionadas