Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在aem中使用i18n在自定义jsvascript中发布_Aem - Fatal编程技术网

在aem中使用i18n在自定义jsvascript中发布

在aem中使用i18n在自定义jsvascript中发布,aem,Aem,我有一个要求,就像我需要在发布实例中的自定义javascript中有一个i18n值一样。谁能帮我一下吗 提前感谢有几种方法可以做到这一点: 在js中,您可以访问提供本地化消息的objectCQ.I18n。默认情况下,它使用用户区域设置(而不是当前页面/路径的区域设置) 因此,您可以以下一种方式使用它: if (CQ && CQ.I18n) { CQ.I18n.setLocale(_currentPathLocale_); var localizedMessag

我有一个要求,就像我需要在发布实例中的自定义javascript中有一个i18n值一样。谁能帮我一下吗


提前感谢

有几种方法可以做到这一点:

  • 在js中,您可以访问提供本地化消息的object
    CQ.I18n
    。默认情况下,它使用用户区域设置(而不是当前页面/路径的区域设置)
因此,您可以以下一种方式使用它:

if (CQ && CQ.I18n) {
    CQ.I18n.setLocale(_currentPathLocale_);
    var localizedMessage = CQ.I18n.getMessage(messageKey);
}
\u currentPathLocale\u
您可以在初始化时注入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>

$(文档).ready(函数(){
$(“#componentDiv”).myComponent({message:”“});
})

第一种方法的问题是CQ对象在发布实例中不可用。我没有使用next js来使用第二种方法。@Tushar您使用哪种CQ/AEM版本?@Tushar可能没有包含“CQ.shared”类别。只需将其包含在“cq:includeClientLib”中,将其嵌入全局clientlib或使其成为clientlib的依赖项,cq对象也将在发布时可用。@Tushar要在发布实例检查时获取cq对象,非常感谢您的回答