{"id":23459523,"url":"https://github.com/orbinson/aem-dictionary-translator","last_synced_at":"2025-07-07T07:33:07.115Z","repository":{"id":186210820,"uuid":"674690591","full_name":"orbinson/aem-dictionary-translator","owner":"orbinson","description":"Translate AEM dictionaries for internationalisation","archived":false,"fork":false,"pushed_at":"2025-07-01T21:20:55.000Z","size":2318,"stargazers_count":16,"open_issues_count":10,"forks_count":8,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-07-01T22:24:58.233Z","etag":null,"topics":["aem","aemaacs","dictionary","i18n","translator"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orbinson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["bdhoine","royteeuwen"]}},"created_at":"2023-08-04T14:32:25.000Z","updated_at":"2025-07-01T21:20:52.000Z","dependencies_parsed_at":"2023-10-14T20:02:19.034Z","dependency_job_id":"1f87a2fa-b68b-42f8-9615-7eeb09a558e1","html_url":"https://github.com/orbinson/aem-dictionary-translator","commit_stats":null,"previous_names":["orbinson/aem-dictionary-translator"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/orbinson/aem-dictionary-translator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbinson%2Faem-dictionary-translator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbinson%2Faem-dictionary-translator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbinson%2Faem-dictionary-translator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbinson%2Faem-dictionary-translator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orbinson","download_url":"https://codeload.github.com/orbinson/aem-dictionary-translator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbinson%2Faem-dictionary-translator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264034761,"owners_count":23547272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aem","aemaacs","dictionary","i18n","translator"],"created_at":"2024-12-24T06:14:52.012Z","updated_at":"2025-07-07T07:33:07.110Z","avatar_url":"https://github.com/orbinson.png","language":"Java","funding_links":["https://github.com/sponsors/bdhoine","https://github.com/sponsors/royteeuwen"],"categories":[],"sub_categories":[],"readme":"[![Maven Central](https://img.shields.io/maven-central/v/be.orbinson.aem/aem-dictionary-translator)](https://search.maven.org/artifact/be.orbinson.aem/aem-dictionary-translator.all)\n[![GitHub](https://img.shields.io/github/v/release/orbinson/aem-dictionary-translator)](https://github.com/orbinson/aem-dictionary-translator/releases)\n[![Build and test for AEM 6.5](https://github.com/orbinson/aem-dictionary-translator/actions/workflows/build.yml/badge.svg)](https://github.com/orbinson/aem-dictionary-translator/actions/workflows/build.yml)\n[![Build with AEM IDE](https://img.shields.io/badge/Built%20with-AEM%20IDE-orange)](https://plugins.jetbrains.com/plugin/9269-aem-ide)\n\n# AEM Dictionary Translator\n\nAEM TouchUI tool to translate dictionaries for i18n internationalisation in AEM as a Cloud Service. The AEM\nDictionary Translator is a replacement for the\nClassicUI [translator](http://localhost:4502/libs/cq/i18n/translator.html) which is not available on AEMaaCS.\n\nThe [AEM Dictionary Translator](http://localhost:4502/tools/translation/dictionaries.html) is available under `Tools` \u003e\n`Translation` \u003e `Dictionary`.\n\n![Dictionaries](docs/assets/dictionaries.png)\n\n![Key](docs/assets/key.png)\n\n## Installation\n\n### Compatibility matrix\n\nThe minimal required AEM and AEM Dictionary Translator versions are:\n\n| AEM Type | AEM version                     | AEM Dictionary Translator |\n|----------|---------------------------------|---------------------------|\n| AEM 6.5  | `6.5.17`                        | `1.3.0`                   |\n| AEMaaCS  | `2023.1.10912.20230130T173736Z` | `1.0.0`                   |\n\nThe minimal required Java version is `11`.\n\n**Note:** AEM 6.5 is supported on a best-effort basis and will not undergo active testing or bug fixing. Known issues exist in service packs 18, 19, and 20. We depend on the community to help identify and resolve bugs through pull request contributions.\n\n### Package installation\n\nTo deploy the AEM Dictionary Translator as an embedded package you need to update your `pom.xml`\n\n1. Add the `aem-dictionary-translator.all` to the `\u003cdependencies\u003e` section\n\n   ```xml\n   \u003cdependency\u003e\n     \u003cgroupId\u003ebe.orbinson.aem\u003c/groupId\u003e\n     \u003cartifactId\u003eaem-dictionary-translator.all\u003c/artifactId\u003e\n     \u003cversion\u003e\u003c!-- Replace with last released version on Maven Central --\u003e\u003c/version\u003e\n     \u003ctype\u003ezip\u003c/type\u003e\n   \u003c/dependency\u003e\n   ```\n2. Embed the package in with\n   the [filevault-package-maven-plugin](https://jackrabbit.apache.org/filevault-package-maven-plugin/) in\n   the `\u003cembeddeds\u003e` section\n\n   ```xml\n   \u003cembedded\u003e\n      \u003cgroupId\u003ebe.orbinson.aem\u003c/groupId\u003e\n      \u003cartifactId\u003eaem-dictionary-translator.all\u003c/artifactId\u003e\n      \u003ctarget\u003e/apps/vendor-packages/content/install\u003c/target\u003e\n   \u003c/embedded\u003e\n   ```\n\n3. Currently, AEMaaCS doesn't allow loading of i18n dictionaries outside `/apps`,  `/libs`, `/content/forms/af` and\n   `/content/dam/formsanddocuments`.\n\nTo mitigate this, update the `org.apache.sling.i18n.impl.JcrResourceBundleProvider` OSGi config to allow dictionaries in\nother folders, for example by using `/content/dictionaries` for all your editable dictionaries.\n\nExample `org.apache.sling.i18n.impl.JcrResourceBundleProvider` OSGi config\n\n```json\n{\n  \"included.paths\": [\n    \"/libs\",\n    \"/apps\",\n    \"/content/forms/af\",\n    \"/content/dam/formsanddocuments\",\n    \"/content/dictionaries\"\n  ]\n}\n\n```\n\n## Limitations\n\n1. Only [`sling:Message` or `sling:MessageEntry` based dictionaries](https://sling.apache.org/documentation/bundles/internationalization-support-i18n.html#slingmessageentry-jcrprimarytype-or-slingmessage-jcrmixintypes-based) are supported in edit mode, the ones in [JSON format](https://github.com/orbinson/aem-dictionary-translator/issues/26) are exposed in read-only mode.\n2. Due to the [search order of dictionaries](https://sling.apache.org/documentation/bundles/internationalization-support-i18n.html#resourcebundle-hierarchies) it is not possible to overwrite entries from dictionaries within `/libs` (shipped with AEM) with different translations leveraging a dictionary placed below `/content`.\n\n## Development\n\nIf you want to contribute to the project make sure to check the contribution guidelines in [CONTRIBUTING.md](CONTRIBUTING.md).\n\nTo build all the modules run in the project root directory the following command\n\n```shell\nmvn clean install\n```\n\nTo build all the modules and deploy the `all` package to a local instance of AEM, run in the project root directory the\nfollowing command\n\n```shell\nmvn clean install -PautoInstallSinglePackage\n```\n\nThis project follows the [AEM Archetype](https://github.com/adobe/aem-project-archetype) conventions so for further\nguidelines consult the available documentation.\n\n### UI Tests\n\nThe project contains a set of UI tests with basic coverage for the AEM Dictionary Translator UI.\n\nTo run the UI tests, first install the `it.content` module to your local AEM instance.\nDo note that the `it.content` module is not part of the `all` package and that it always needs to be installed separately.\n\n**Warning:** When installing the `it.content` module, some paths will be overwritten like `/apps/wcm/core/resources/languages` and `/etc/replication/agents.author`.\n\n```shell\nmvn clean install -pl it.content -PautoInstallPackage\n```\n\nAfterward run the UI tests with the following command\n\n```shell\nmvn clean test -pl ui.tests -DskipTests=false\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forbinson%2Faem-dictionary-translator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forbinson%2Faem-dictionary-translator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forbinson%2Faem-dictionary-translator/lists"}