在项目中我没有使用标准i18n国际化。而是在不久前创建了一个自定义的。
现在在AEM 6.1上迁移我们想要使用Sightly但仍然使用我们自己的自定义系统。稍微有i18n support,我想知道是否有可能为我们自己的系统创建类似的东西。
我尝试使用模板,但很难在不同的数据狡猾标签中使用它们然后调用。 (例如data-sly-attribute)我在这里犯了错误吗?
template.html
<template data-sly-template.foo="${ @ key }">bar</template>
<sly data-sly-call="${ foo }" data-sly-unwrap></sly>
<div data-sly-attribute="${ foo }"></div>
output.html
bar
<div></div>
我尝试使用java接口RuntimeExtension做一些工作,但它没有用。
我们的系统基本上是一个带有标签和字符串的xml文件。我可以从那里获得数据而不会出现服务问题。
示例:
<en>
<com.example.title jcr:primaryType="nt:unstructured" value="A title"/>
<com.example.desc jcr:primaryType="nt:unstructured" value="Description"/>
</en>
<de>
<com.example.title jcr:primaryType="nt:unstructured" value="Ein Tiel"/>
<com.example.desc jcr:primaryType="nt:unstructured" value="Beschreibung"/>
</de>
如果您对此问题有任何疑问,请随时提出。
答案 0 :(得分:2)
您无法定义自己的标签。您最多可以做的是利用use指令并使用另一个模板作为自定义标记。您基本上可以查看/libs/granite/sightly/templates/clientlib.html下的工作示例,该示例基本上遵循以下结构: html的
<template data-sly-template.customi18n="${@ i18nkey}">do something here</template>
html的
<div data-sly-use.i18n="${'/path/to/templates/customi18n.html'}" data-sly-unwrap>
<span data-sly-call="${i18n.customi18n @ i18nkey='My Translation Key'}" data-sly-unwrap></span>
</div>