canon-i18n
Installation
SKILL.md
CANON · Internationalization
I18n is preparing the codebase so that adding a new language doesn't require rewriting the UI. L10n is the act of adding one.
Externalize all strings
No user-visible string lives in source code. Every string goes through a translation function.
// Bad
<button>Save changes</button>
// Good
<button>{t('actions.save_changes')}</button>
Keys are structured, not sequential: actions.save_changes not string_47.