2010-10-20 13 views
5

Hallo, pytanie dotyczące iicket i18n: Mam plik javaScript zawierający ciągi, które chcę zlokalizować. Idealnie chcę zlokalizować cały plik. Coś jakJak zlokalizować pliki javascript w furtce?

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

gdzie furta automatycznie wybiera plik prawo js, ​​jak to robi z plikami własności .

Każdy wie, jak to zrobić?

Odpowiedz

8

Przepuścić locale do odniesienia zasobu:

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

Wymyśliłem rozwiązanie, które używało PackageResource, ale Twoje jest jeszcze krótsze. Wielkie dzięki. – nebenmir

0

Rzeczywiste rozwiązanie działa, jeśli struny są już w JavaScripcie files.But co się dzieje, gdy zlokalizowane ciągi w bazie danych i chcą przekazać je do Twój kod JavaScript? Można utworzyć plik XML o nazwie YourPageJS.xml i zapisać kod JavaScript zidentyfikowany przez niektóre klucze.

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

wywołać ten kod poprzez następujące metody, która znajduje się w klasie użytkowej, przekazując swoje parametry:

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; 
    } 

Połączenie wygląda następująco:

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

gdzie parametry może być twoimi zlokalizowanymi ciągami. W powyższym przykładzie pierwszym parametrem jest identyfikator znacznika. Możesz go dodać do nagłówka html tak:

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

Również w XML należy przekształcić dwa znaki: ' staje '' i { staje '{' analizowania przyczyn.

Powiązane problemy