首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AEM 6:如何从语言文件中读取变量?

AEM 6:如何从语言文件中读取变量?
EN

Stack Overflow用户
提问于 2015-01-19 10:21:09
回答 2查看 6.3K关注 0票数 4

我有以下html:

代码语言:javascript
复制
<div >${'foo' @ i18n}</div>

在我的i18n文件中,我有以下内容:

代码语言:javascript
复制
<foo
            jcr:mixinTypes="[sling:Message]"
            jcr:primaryType="sling:MessageEntry"
            sling:key="foo"
            sling:message="This is dummy text"/>

This is dummy text显示在页面中。到目前为止。问题是,foo是一个来自其他模板的变量,我如下所示:

代码语言:javascript
复制
${fooValue} //this returns foo

现在,为了读取来自i18n的消息,我尝试了以下方法:

<div>${'${fooValue}' @ i18n} </div>

但是这会在页面中显示${fooValue}。如何读取来自i18n的消息,如果我有variable key

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-19 19:36:46

您可以使用本地模板将标识i18n字典密钥的变量传递给该模板:

代码语言:javascript
复制
<template data-sly-template.locale="${@ key}">
    ${key @ i18n, locale='de'}    
</template>

<div data-sly-call="${locale @ key='world'}"></div>

假设您的i18n字典有翻译,则输出如下:

代码语言:javascript
复制
<div>
    Welt    
</div>

您还可以从页面中的另一个模板调用locale模板:

代码语言:javascript
复制
<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>

输出将与上述相同。

票数 5
EN

Stack Overflow用户

发布于 2015-02-17 21:52:55

拉杜的解决方案效果很好。我也尝试过这样做,如果有人在不涉及模板的情况下寻找解决方案,这也是可行的。

代码语言:javascript
复制
<div>${fooValue @ i18n}</div>

不过,我个人会选择使用模板。让它更容易读懂。<div>${fooValue @ i18n}</div><div data-sly-call="${translate @ string=fooValue}"></div>.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28022356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档