Kirby i18n Workflows
KB entry points
kirby://kb/scenarios/46-i18n-field-options-and-labels
kirby://kb/scenarios/47-i18n-find-translation-keys
kirby://kb/scenarios/48-i18n-import-export-translations
kirby://kb/scenarios/72-filter-by-language
kirby://kb/scenarios/73-language-variables-and-placeholders
Required inputs
- Enabled languages and default language.
- Where translation keys live and desired naming scheme.
- Which content is translated vs label-only.
Default translation rule
- Use
t('key', 'fallback') in templates and snippets.
- Keep stored content language-neutral when possible; translate labels at render time.
- Maintain fallback strings in the default language file.
Import/export hint
return [
'site.title' => 'Example',
];
Missing key audit
- Run
rg -F 't(' site and compare keys with site/languages/*.php.
- Add missing keys to the default language file first.
Common pitfalls
- Storing translated labels in content instead of language files.
- Using translation keys without fallback strings.
Workflow
- Confirm language setup with
kirby://config/languages and locate language files via kirby://roots.
- Inspect templates/snippets/controllers for translation usage; use
rg to find t( calls if needed.
- Search the KB with
kirby:kirby_search (examples: "translate field options", "find translation keys", "import export translations", "language variables placeholders").
- Update language files (
site/languages/*.php) or config maps for option labels.
- Ensure templates render translated labels (not stored keys) and use fallbacks.
- Verify by rendering representative pages in each language (
kirby:kirby_render_page).