Hello,

(Dear lazy sling community)

I'm working to implement my first sling application / pages. We have to
deploy a *Terms of use* page that need to be translated across multiple
languages.

I figured this should be easy with Sling - and it's not quite as I
expected :( .

The solution that I have settled for in my head is using thymeleaf
templates and sling i18n with json files. However I need some help
implementing it.

I'm sharing what is in my head, please help correct if I am wrong. I
have been at this (and other sling related stuff - content loading, etc)
for the past few days.

My page is going to live in */content**/terms-of-us**e.ht**ml*. It's a
*nt:file*, *sling:res**ource* with *sling:resourceType = **ieugen**/page* .

Now, let's put translations for the page under 
*/lib/trans**lations/content/t**erms**-of-use**.htlm/{english**.**json*,
*deuts**ch.json}* . These files should follow the format described in [1].

My goal is for the content of the "/content/terms-of-use.html" node to
be a thymeleaf template itself. This template will use attributes like
th-text="#{text-id-from-translation-file}".

Now, the script "*ieu**gen/page*" should to the following:

- take the content of the JCR node

- load the proper translation file based on the requested language and
the node currently being rendered.

- render the content of the node (thymeleaf template - or any other
template language - handlebars?? ) by providing a context with the
translation files loaded

- extra: the content might be rendered inside a layout defined by
ieugen/page script - with common headers and footers.

My goal is to be able to create pages that are easy to internationalize.

So far I have a few setbacks:

1. I don't know how to render resource properties.

2. I don't know how to render a template inside a script.

So far, my script looks like this:

<!DOCTYPE html>
<html
data-th-with="*valueMap=${resource.adaptTo(@org.apache.sling.api.resource.ValueMap@class)}*">
<head>
  <!-- Common head -->
</head>
<body>
<div class="container">
  <span data-th-text="${resource}">This works prints the resource </span>
  <span data-th-text="${valueMap.attribute['jcr:title']}">*This fails -
valueMap is null* </span>
  <div>
     <p>*How do I render node content here**?**Node content is a
thymeleaf? template* </p>
  </div>
</div>
<footer>Common footer</footer>
</body>
</html>

Thanks,

[1]
https://sling.apache.org/documentation/bundles/internationalization-support-i18n.html#json-file-based


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to