
What it does
- Reads every locale file the dashboard loads and shows how complete each language is, with a namespace × language heatmap.
- Edits every key side by side in a translation matrix, with placeholder checks, filters and CSV export.
- Walks one language key by key in a translation queue, with the base text and the other languages for context.
- Hosts translation workspaces for your other apps and serves them as public JSON at
/i18n/<workspace>/<locale>.json.
Install
Run the AntelopeJS CLI from the root of a project that already loads @antelopejs/dms:
ajs project modules add @antelopejs/dms-lang
Quick start
The command adds an @antelopejs/dms-lang entry to antelope.config.ts. The module starts read-only. To allow writes on the process that edits translations, set editable: true in that entry:
"@antelopejs/dms-lang": {
source: { type: "package", package: "@antelopejs/dms-lang", version: "<latest>" },
config: {
editable: true,
},
},
Restart the backend, then the frontend, and open Modules › Translations (/modules/lang/overview). To edit your own frontend module's locale files, register it with options: { dmsI18nAppLayer: true }, as Installation shows.
Requirements
| Package | Supported | Tested with |
|---|---|---|
@antelopejs/interface-api | >=0.2.0 <1.0.0 | 0.2.0 |
@antelopejs/interface-api-util | >=0.3.0 <1.0.0 | 0.3.0 |
@antelopejs/interface-core | >=0.4.0 <1.0.0 | 0.4.0 |
@antelopejs/interface-dms | >=0.12.0 <1.0.0 | 0.12.0 |
The module also needs a DMS backend in a release that implements the @antelopejs/interface-dms range above. It needs the @antelopejs/dms-frontend renderer in the range that engines["@antelopejs/dms-frontend"] of frontend-vue/package.json declares. The ajs dms CLI refuses to build the module with a renderer outside that range.
Documentation
The canonical guide lives in docs/, including the supported extension boundary. There is no separate DMS Lang interface package. The package also ships the dms-lang Claude Code skill in skills/, declared under antelopeJs.skills.
Contributing
Read CONTRIBUTING.md before opening a pull request. The playground connects to MongoDB at mongodb://localhost:27017. To use another instance, set MONGO_URL.
pnpm install
pnpm dev # playground backend
pnpm frontend:dev # dashboard, in a second terminal
pnpm lint
pnpm typecheck
pnpm test
Repository notes
- The backend registers the
frontend-vuemodule throughAddFrontendModulewith thevuerenderer.frontend-vue/dms.frontend.tsregisters every component ofapp/componentsandapp/build/componentsunder theDmsLangcomponent prefix, and the backend pages name them, as inCustomComponent("DmsLangTranslationMatrix"). dms.frontend.build.tsauto-importsapp/composables,app/utilsandapp/types. The code inapp/build/is private and imported by path.- The pages read their data with the DMS's
useApiData, which the server render hands to the browser with the page. The module declares the public language files (/i18n/**) to the frontend server as a backend prefix without a session (backendProxies). - The module compiles against the published
@antelopejs/interface-dms.@antelopejs/dmsand@antelopejs/dms-frontendare development dependencies for the tests and the playground. pnpm test:unitruns the locale discovery and write target suites ofsrc/testand thenode:testsuites intests. The othersrc/testsuites run withpnpm testonly, since an interface refuses to load outside the AntelopeJS runtime.pnpm test:frontendchecksfrontend-vueagainst the installed DMS frontend layer withajs dms verify-source.