我有以下html:
<div >${'foo' @ i18n}</div>在我的i18n文件中,我有以下内容:
<foo
jcr:mixinTypes="[sling:Message]"
jcr:primaryType="sling:MessageEntry"
sling:key="foo"
sling:message="This is dummy text"/>This is dummy text显示在页面中。到目前为止。问题是,foo是一个来自其他模板的变量,我如下所示:
${fooValue} //this returns foo现在,为了读取来自i18n的消息,我尝试了以下方法:
<div>${'${fooValue}' @ i18n} </div>
但是这会在页面中显示${fooValue}。如何读取来自i18n的消息,如果我有variable key
发布于 2015-01-19 19:36:46
您可以使用本地模板将标识i18n字典密钥的变量传递给该模板:
<template data-sly-template.locale="${@ key}">
${key @ i18n, locale='de'}
</template>
<div data-sly-call="${locale @ key='world'}"></div>假设您的i18n字典有翻译,则输出如下:
<div>
Welt
</div>您还可以从页面中的另一个模板调用locale模板:
<template data-sly-template.locale="${@ key}">
${key @ i18n, locale='de'}
</template>
<template data-sly-template.translate="${@ string}">
<div data-sly-call="${locale @ key=string}" data-sly-unwrap></div>
</template>
<div data-sly-call="${translate @ string='world'}"></div>输出将与上述相同。
发布于 2015-02-17 21:52:55
拉杜的解决方案效果很好。我也尝试过这样做,如果有人在不涉及模板的情况下寻找解决方案,这也是可行的。
<div>${fooValue @ i18n}</div>不过,我个人会选择使用模板。让它更容易读懂。<div>${fooValue @ i18n}</div>对<div data-sly-call="${translate @ string=fooValue}"></div>.
https://stackoverflow.com/questions/28022356
复制相似问题