AEM 6 sightly:如何从语言文件中读取变量?
AEM 6 sightly: How to read variable from language file?
我有以下 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}
。如果我有 variable key
,如何从 i18n
读取消息?
您可以使用一个本地模板,您可以向该模板传递标识 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>
输出结果与上面相同。
Radu 的解决方案非常有效。我也试过这个,如果有人正在寻找不涉及模板的解决方案,这也有效。
<div>${fooValue @ i18n}</div>
不过我个人会选择模板。让它更容易阅读。
<div>${fooValue @ i18n}</div>
对比 <div data-sly-call="${translate @ string=fooValue}"></div>
.
我有以下 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}
。如果我有 variable key
,如何从 i18n
读取消息?
您可以使用一个本地模板,您可以向该模板传递标识 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>
输出结果与上面相同。
Radu 的解决方案非常有效。我也试过这个,如果有人正在寻找不涉及模板的解决方案,这也有效。
<div>${fooValue @ i18n}</div>
不过我个人会选择模板。让它更容易阅读。
<div>${fooValue @ i18n}</div>
对比 <div data-sly-call="${translate @ string=fooValue}"></div>
.