gpt4 book ai didi

spring - JSP 自定义标记中的 i18n 翻译

转载 作者:行者123 更新时间:2023-12-02 04:21:44 24 4
gpt4 key购买 nike

是否可以编写自定义 JSP 标记来获取 i18n 消息键并输出给定​​请求的翻译短语?

通常在 JSP/JSTL 中,我这样做:

<fmt:message key="${messageKey}"><fmt:param>arg1</fmt:param></fmt:message>

我得到了翻译短语。现在我需要执行以下操作(这是有充分理由的):

<custom:translate key="${messageKey}" arg="arg1"/>

但我不知道如何在自定义标签代码中查找翻译。 TagSupport 基类提供了一个 pageContext,我可以从中获取具有 Locale 的 ServletRequest...但是如何查找键的翻译?

我使用 Spring 3.0,在我的 application-context.xml 中,我定义了一个 ReloadableBundleMessageSource,这样我就可以调用:

messageSource.getMessage(
key, new Object[] {arg}, pageContext.getRequest().getLocale()
);

但我不认为我可以将 messageSource 注入(inject)到自定义标签中,可以吗?否则我可以实例化一个新的翻译,但每次调用都会加载数以万计的翻译吗?我不想让 messageSource 成为静态类的静态成员。

最佳答案

我不使用 Spring,但在“普通”JSP 中,您可以借助 FilterResourceBundle 实例放入 session 范围中Servlet

ResourceBundle bundle = ResourceBundle.getBundle(basename, request.getLocale());
request.getSession().setAttribute("bundle", bundle);

并在 JSP 中像对待 EL 中的任何其他 bean 一样对待它。

${bundle[messageKey]}

Spring 一定可以将其作为 Bean 放入 session 范围内。

关于spring - JSP 自定义标记中的 i18n 翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3714291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com