generate-translations▌
payloadcms/payload · updated Apr 8, 2026
Payload has two separate translation systems:
Translation Generation Guide
Payload has two separate translation systems:
- Core Translations - for core Payload packages (packages/ui, packages/payload, packages/next)
- Plugin Translations - for plugins (packages/plugin-*)
Table of Contents
1. Core Translations
When to use: Adding translations to core Payload packages (packages/ui, packages/payload, packages/next)
Steps:
-
Add the English translation to
packages/translations/src/languages/en.ts- Add your new key/value to the appropriate section (e.g.,
authentication,general,fields, etc.) - Use nested objects for organization
- Example:
export const enTranslations = { authentication: { // ... existing keys newFeature: 'New Feature Text', }, }
- Add your new key/value to the appropriate section (e.g.,
-
Add client key (if needed for client-side usage) to
packages/translations/src/clientKeys.ts- Add the translation key path using colon notation
- Example:
'authentication:newFeature' - Client keys are used for translations that need to be available in the browser
-
Generate translations for all languages
- Change directory:
cd tools/scripts - Run:
pnpm generateTranslations:core - This auto-translates your new English keys to all other supported languages
- Change directory:
2. Plugin Translations
When to use: Adding translations to any plugin package (packages/plugin-*)
Steps:
-
Verify plugin has translations folder
- Check if
packages/plugin-{name}/src/translationsexists - If it doesn't exist, see "Scaffolding New Plugin Translations" below
- Check if
-
Add the English translation to the plugin's
packages/plugin-{name}/src/translations/languages/en.ts- Plugin translations are namespaced under the plugin name
- Example for plugin-multi-tenant:
export const enTranslations = { 'plugin-multi-tenant': { 'new-feature-label': 'New Feature', }, }
-
Generate translations for all languages
- Change directory:
cd tools/scripts - Run the plugin-specific script:
pnpm generateTranslations:plugin-{name} - Examples:
pnpm generateTranslations:plugin-multi-tenantpnpm generateTranslations:plugin-ecommercepnpm generateTranslations:plugin-import-export
- Change directory:
Scaffolding New Plugin Translations
If a plugin doesn't have a translations folder yet, ask the user if they want to scaffold one.
Structure to create:
packages/plugin-{name}/src/translations/
├── index.ts
├── types.ts
└── languages/
├── en.ts
├── es.ts
└── ... (all other language files)
Files to create:
- types.ts - Define the plugin's translation types
- index.ts - Export all translations and re-export types
- languages/en.ts - English translations (the source for generation)
- languages/*.ts - Other language files (initially empty, will be generated)
Generation script to create:
-
Create
tools/scripts/src/generateTranslations/plugin-{name}.ts- Use
plugin-multi-tenant.tsas a template - Update the import paths to point to the new plugin
- Update the targetFolder path
- Use
-
Add script to
tools/scripts/package.json:"generateTranslations:plugin-{name}": "node --no-deprecation --import @swc-node/register/esm-register src/generateTranslations/plugin-{name}.ts"
Important Notes
- All translation generation requires
OPENAI_KEYenvironment variable to be set - The generation scripts use OpenAI to translate from English to other languages
- Always add translations to English first - it's the source of truth
- Core translations: Client keys are only needed for translations used in the browser/admin UI
- Plugin translations: Automatically namespaced under the plugin name to avoid conflicts
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.6★★★★★53 reviews- ★★★★★Amelia Taylor· Dec 28, 2024
generate-translations is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Mateo Patel· Dec 24, 2024
generate-translations fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Xiao Khanna· Dec 24, 2024
Useful defaults in generate-translations — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Ren Robinson· Dec 20, 2024
generate-translations has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Kiara Park· Dec 4, 2024
Keeps context tight: generate-translations is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Xiao Patel· Nov 23, 2024
I recommend generate-translations for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Min Gill· Nov 19, 2024
Solid pick for teams standardizing on skills: generate-translations is focused, and the summary matches what you get after install.
- ★★★★★Sofia Khanna· Nov 15, 2024
We added generate-translations from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Min Gupta· Oct 14, 2024
generate-translations reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Xiao Liu· Oct 10, 2024
We added generate-translations from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
showing 1-10 of 53