
I18n
Internationalization (i18n) workflow and standards for managing translations.
Install
npx skills add iOfficeAI/AionUi --skill i18n -g -a claude-code -y- Repository
- iOfficeAI/AionUi34k
- Category
- Engineering
- Updated
- 12d ago
- License
- Apache-2.0
- Context cost
- Mediumabout 1,866 tokens
- Runs scripts
- No, instructions only
What it does
Internationalization (i18n) workflow and standards for managing translations. Use when: (1) Adding new user-facing text, (2) Creating new components with user-facing text, (3) Reviewing code for i18n compliance, (4) Adding a new translation module.
i18n Skill
Standards and workflow for internationalization. All user-visible text must use i18n.
Announce at start: "I'm using i18n skill to ensure proper internationalization."
IMPORTANT: Read Config First
Before doing any i18n work, always read src/common/config/i18n-config.json to get the current list of supported languages and modules. Never assume a fixed number, languages and modules may have been added or removed since this skill was written.
cat src/common/config/i18n-config.json
This file is the single source of truth. All scripts, runtime code, and this workflow depend on it.
File Structure
src/common/config/i18n-config.json # Single source of truth: languages, modules
src/renderer/i18n/
├── index.ts # i18next configuration
├── i18n-keys.d.ts # AUTO-GENERATED, do not edit manually
└── locales/
├── <lang>/ # One directory per language in i18n-config.json
│ ├── index.ts # Barrel import for all modules
│ ├── common.json # One JSON per module in i18n-config.json
│ ├── conversation.json
│ └── ...
└── ...
Key Facts
- Reference language: defined by
referenceLanguageini18n-config.json(currentlyen-US) - Supported languages: defined by
supportedLanguagesarray, read the file to get the current list - Modules: defined by
modulesarray, read the file to get the current list
Key Structure
Keys use namespaced dot notation in code: t('module.key') or t('module.nested.key').
Inside each module JSON file, keys can be flat or nested:
// common.json, flat keys
{
"send": "Send",
"cancel": "Cancel",
"copySuccess": "Copied"
}
// cron.json, nested keys
{
"scheduledTasks": "Scheduled Tasks",
"status": {
"active": "Active",
"paused": "Paused"
}
}
In code:
