Adds a changeset for the new translations export/import CLI commands.
Updates the internationalization docs with the CLI-based workflow as
the recommended approach for managing translations, and adds the
commands to the CLI reference. Also adds the internationalization
page to the mkdocs navigation.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Adds a --pattern option to both translations export and import commands
that controls the file path layout of message files within the messages/
directory. The default pattern is {id}.{lang}.json (unchanged behavior),
but users can pass e.g. --pattern '{lang}/{id}.json' for language-based
directory grouping. The pattern is stored in the manifest so that import
picks it up automatically.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The package discovery for the translations export command previously only
looked at direct dependencies and only workspace packages. This changes
it to recursively walk the full transitive dependency tree and resolve
packages from node_modules when they aren't found in the workspace.
Entry point resolution now also prefers .d.ts type declarations for
npm-installed packages.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Adds tooling for exporting and importing translation strings to enable
integration with external TMS tools like Smartling. The export command
uses the TypeScript compiler API (ts-morph) to discover TranslationRef
exports from all frontend plugin dependencies of the current package,
extracting message keys and default values from the type system. The
import command generates TranslationResource wiring from translated
JSON files downloaded from a TMS.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Adds a dependabot.yml configuration that:
- Ignores @types/react and @types/node (need to match supported versions)
- Ignores packages with licensing issues (@elastic/elasticsearch, event-source-polyfill)
- Disables version update PRs (we use Renovate for that)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
These type packages need to stay pinned to match the React/Node
versions we support, so we don't want automated bump PRs for them.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
* Scaffolder: Evaluate 'if' conditions inside the context of 'each', if it exists
Signed-off-by: Jacob Raihle kdm951 <jacob.raihle@teliacompany.com>
* chore: small little cleanup
Signed-off-by: benjdlambert <ben@blam.sh>
* Reuse pre-iteration context instead of creating it twice
Signed-off-by: Jacob Raihle kdm951 <jacob.raihle@teliacompany.com>
---------
Signed-off-by: Jacob Raihle kdm951 <jacob.raihle@teliacompany.com>
Co-authored-by: benjdlambert <ben@blam.sh>