【问题标题】:Using i18n in aem publish in custom jsvascript在自定义 javascript 中的 aem 发布中使用 i18n
【发布时间】:2016-01-18 09:02:43
【问题描述】:

我有一个要求,比如我需要在发布实例中的自定义 javascript 中有一个 i18n 值。谁能帮我解决这个问题。

提前致谢

【问题讨论】:

    标签: aem


    【解决方案1】:

    有几种方法可以做到:

    • 在您的 js 中,您可以访问提供本地化消息的对象 CQ.I18n。默认情况下,它使用用户语言环境(而不是当前页面/路径的语言环境)。

    所以你可以在下一个方式使用它:

    if (CQ && CQ.I18n) {
        CQ.I18n.setLocale(_currentPathLocale_);
        var localizedMessage = CQ.I18n.getMessage(messageKey);
    }
    

    _currentPathLocale_你可以在初始化的时候注入到你的js中。

    • 另一种方法是注入已经本地化的消息。

    如果你有下一个 js 脚本:

    (function($) {
        $.fn.myComponent = function(options) {
            var defaults = {
                 message: "Hello!"
            }
    
            var opts = $.extend(defaults, options);
            var localizedMessage = opts.message;
        }
    })(jQuery);
    

    那么你就可以从你的jsp中传递过来了:

    <script type="text/javascript">
        $(document).ready(function() {
            $("#componentDiv").myComponent({message: "<fmt:message key="messageKey"/>"});
        })
    </script>
    

    【讨论】:

    • 第一种方法的问题是 CQ 对象在 Publish 实例中不可用。而且我没有使用next js来使用第二种方法。
    • @Tushar 您使用哪个 CQ/AEM 版本?
    • @Tushar 可能,您没有包含“cq.shared”类别。只需将它包含在“cq:includeClientLib”中,将其嵌入到您的全局客户端库中或使其成为您的客户端库的依赖项,CQ 对象也将在发布时可用。
    • @Tushar 在发布实例检查时获取 CQ 对象 forums.adobe.com/thread/1143494?tstart=0
    • 非常感谢您的回答
    猜你喜欢
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    相关资源
    最近更新 更多