如何本地化 wicket 中的 javascript 文件

发布于 2024-09-28 02:46:06 字数 225 浏览 3 评论 0原文

你好,一个 Wicket i18n 问题: 我有一个 javaScript 文件,其中包含我想要本地化的字符串。 理想情况下,我想本地化整个文件。像

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

这样的 wicket 会自动选择正确的 js 文件,就像处理属性文件一样。

有人知道该怎么做吗?

Hallo, a Wicket i18n question:
I have a javaScript file, that holds strings I want to localize.
Ideally I want to localize the whole file. Something like

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

where wicket automatically chooses the right js file, as it does with property files.

Any one knows how to do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云胡 2024-10-05 02:46:06

将区域设置传递给资源引用:

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

Pass the locale to the resource reference:

class MyPage extends WebPage implements IHeaderContributor {
    public void renderHead(IHeaderResponse response) {
        response.renderJavascriptReference(new ResourceReference(
        MyPage.class, "my.js", getLocale(), getStyle()));
    }
}
唐婉 2024-10-05 02:46:06

如果字符串已经在 J​​avascript 文件中,则实际的解决方案有效。但是,当您在数据库中已经本地化字符串并希望将它们传递给 Javascript 代码时,会发生什么情况呢?您可以创建一个名为 YourPageJS.xmlXML 文件,并在其中存储由某些键标识的 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")); (Wicket 6)

此外,在 XML 中,您必须转换两个字符:' 变为 ''{由于解析原因,变为 '{'

The actual solution works if the Strings are already in the Javascript files.But what happens when you have localized Strings in your database and want to pass them to your Javascript code? You could create a XML file named YourPageJS.xml and store Javascript code there identified by some keys.

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

You call this code through the following method that is located in an utility class,passing your parameters:

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

The call looks like this :

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

where the parameters could be your localized strings.In the above case,the first parameter is the markup Id.You can add it to your html head like this:

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

Also,in the XML you must transform two characters: 'becomes '' and { becomes '{' for parsing reasons.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文