Sling-Initial-Content i18n mode "merge"


I don't know if this is the right project to open this ticket, I hope you help me anyway

we are using your archetype (wcm multi-bundle) with the new maven maven-bundle-plugin plugin. Inside Sling-Initial-Content we have mapped the folder with i18n files in json format.

SLING-INF / app-config; overwrite: = true; ignoreImportProviders: = xml; path: = / apps / acf-web / config,
SLING-INF / app-root; overwrite: = true; ignoreImportProviders: = xml; path: = / apps / acf-web / core,
SLING-INF / ErrorHandler; overwrite: = true; ignoreImportProviders: = xml; path: = / apps / sling / servlet / ErrorHandler,
SLING-INF / app-i18n; overwrite: = false; overwriteProperties: = false; uninstall: = false; ignoreImportProviders: json =; path: = / apps / acf-web / i18n,
SLING-INF / app-mail; overwrite: = true; ignoreImportProviders: json =; path: = / apps / acf-web / email,
SLING-INF / clientlibs-root; overwrite: = true; ignoreImportProviders: = xml; path: = / etc / clientlibs / acf-web
</ Sling-Initial-Content>

Is there no way to overwrite the label already present on aem?
Setting overwrite, overwriteProperties and uninstall at false continues to override them.

I tried also to add the filter.xml under META-INF / vault both under the core module and under the "complete" module but without result

<? xml version = "1.0" encoding = "UTF-8"?>
<workspaceFilter version = "1.0">
<filter root = "/ apps / acf-web / i18n" mode = "merge" />
</ WorkspaceFilter>

I need this mode to be able to give the freedom to modify the labels from AEM without being overwritten (/libs/cq/i18n/translator.html)

thank you


Stefan Seifert
August 22, 2019, 10:21 AM

the main point is to not include the i18n json files in the sling bundle using Sling-Initial-Content, but deploy them separately using a content package (e.g. as part of the complete package).
if you want to let override the master language as well maybe you should not even include it in the complete package, but in a separate package which you deploy only once on the first time, and then not more because it will overwrite changes to the master file as well.

using a "merge" mode in the package will not help as all i18n translations are contained in one single json file, the package manager cannot merge two JSON files.

Stefano Messi
August 20, 2019, 9:33 PM

yes, you have correctly interpreted the question, unfortunately in my case also the main language must be managed by the customer.

Could you let me know when you can create this example?
Alternatively, would you be able to direct me to the correct solution?

modifying the pointing of Sling-Initial-Content under / content continues to overwrite the labels after the redeploy.

SLING-INF / app-i18n; overwrite: = false; overwriteProperties: = false; uninstall: = false; ignoreImportProviders:json=;path:=/content/acf/i18n

Stefan Seifert
August 20, 2019, 4:08 PM

do i get your question right?

  • you want to deploy i18n as json files with the application

  • then you want to allow to updates to these json files within AEM, e.g. using the AEM translator tool

  • when the AEM app is redeployed the json files should not be overwritten?

in this case the json dictionaries files should be placed below /content in my point of view. the primary language should probably always deployed with the application and not allowed to be changes on the AEM instance, but the translations could be maintained within AEM and published from there. the setup is a bit fiddly esp. because the Touch UI does not support displaying nt:file nodes in the content hierarchy (classic UI did). i have on my todo list do enhance the archetype with an example for this type of "customer-driven i18n" setup.




Stefano Messi