Собственная поддержка интернационализации в виде
В проекте я работаю по стандарту i18n интернационализация не используется. Скорее обычай был создан некоторое время назад.
Теперь с переходом на AEM 6.1 мы хотим использовать Sightly, но по-прежнему использовать собственную систему. Очевидно, что есть поддержка i18n, и мне было интересно, возможно ли создать нечто подобное для нашей собственной системы.
Я пытался использовать шаблоны, но изо всех сил пытался использовать их в различных хитросплетенных тегах, а затем вызывать. (например, 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>
Если у вас есть какие-либо вопросы относительно проблемы, не стесняйтесь спрашивать.
1 ответ
Вы не можете определить собственные визуальные теги. Самое большее, что вы можете сделать, - это воспользоваться директивой 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>