2010-10-20 13 views
5

Ciao, una domanda di i18n Wicket: Ho un file javaScript, che contiene le stringhe che voglio localizzare. Idealmente voglio localizzare l'intero file. Qualcosa di simileCome localizzare i file javascript nel wicket

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

dove wicket sceglie automaticamente il file js destra, come si fa con i file di proprietà .

Qualcuno sa come farlo?

risposta

8

Passare il locale al riferimento risorsa:

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

Mi è venuta una soluzione che utilizza PackageResource, ma la tua è ancora più breve. Molte grazie. – nebenmir

0

La soluzione reale funziona se le stringhe sono già in Javascript files.But cosa succede quando si hanno localizzato le stringhe nel database e si desidera passare loro di il tuo codice Javascript? È possibile creare un file XML denominato YourPageJS.xml e memorizzare il codice Javascript identificato da alcune chiavi.

<?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> 

Si chiama questo codice attraverso il seguente metodo che si trova in una classe di utilità, passando i parametri:

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 chiamata si presenta così:

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

dove i parametri potrebbero essere le stringhe localizzate.Nel caso precedente, il primo parametro è l'Id di markup. Puoi aggiungerlo alla tua testa html in questo modo:

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

Inoltre, nel XML è necessario trasformare le due personaggi: ' diventa '' e { diventa '{' per motivi di analisi.

Problemi correlati