Как локализовать файлы javascript в калитке - PullRequest
5 голосов
/ 20 октября 2010

Привет, вопрос Wicket i18n: у меня есть файл javaScript, содержащий строки, которые я хочу локализовать.В идеале я хочу локализовать весь файл.Что-то вроде

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

где wicket автоматически выбирает правильный файл js, как это происходит с файлами свойств.

Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

8 голосов
/ 21 октября 2010

Передайте локаль для ссылки на ресурс:

class MyPage extends WebPage implements IHeaderContributor {
    public void renderHead(IHeaderResponse response) {
        response.renderJavascriptReference(new ResourceReference(
        MyPage.class, "my.js", getLocale(), getStyle()));
    }
}
0 голосов
/ 12 апреля 2017

Реальное решение работает, если строки уже находятся в файлах Javascript. Но что произойдет, если вы локализовали строки в своей базе данных и хотите передать их в свой код Javascript?Вы можете создать файл XML с именем YourPageJS.xml и сохранить там код Javascript, идентифицируемый некоторыми ключами.

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

Этот код вызывается с помощью следующего метода, который находится в служебном классе, передавая ваши параметры:

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

Вызов выглядит следующим образом:

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

, где параметры могут быть вашими локализованными строками. В приведенном выше случае первым параметром является Id разметки. Вы можете добавитьэто к вашей голове HTML, как это:

response.render(JavaScriptHeaderItem.forScript(YourUtils.getJsByClass(YourPage.class, "showModal" ,"firstParameter","secondParameter"), "yourJSid")); (калитка 6)

Кроме того, в XML вы должны преобразовать два символа: ' становится '' и { становится '{' для разбора.

...