Chatbox i18n Translator
chatboxai/chatbox
Translates new or changed i18n keys from a Chatbox Pro diff, staged changes or a commit range, writing the locale JSON files directly with a built-in glossary.
Standards for keeping all user-facing text translatable: read the i18n config first, use namespaced keys, reuse shared strings and follow the key naming rules.
$ npx skills add iOfficeAI/AionUi --skill i18n -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install iOfficeAI/AionUi i18n --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/iOfficeAI/AionUi.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/i18n .claude/skills/i18n && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "i18n" agent skill from https://github.com/iOfficeAI/AionUi/tree/main/.claude/skills/i18n into .claude/skills/i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/iOfficeAI/AionUi/tree/main/.claude/skills/i18nType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add iOfficeAI/AionUi --skill i18n -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install iOfficeAI/AionUi i18n --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iOfficeAI/AionUi.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/i18n .agents/skills/i18n && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "i18n" agent skill from https://github.com/iOfficeAI/AionUi/tree/main/.claude/skills/i18n into .agents/skills/i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add iOfficeAI/AionUi --skill i18n -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install iOfficeAI/AionUi i18n --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iOfficeAI/AionUi.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/i18n .cursor/skills/i18n && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "i18n" agent skill from https://github.com/iOfficeAI/AionUi/tree/main/.claude/skills/i18n into .cursor/skills/i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/iOfficeAI/AionUi.git --path .claude/skills/i18n--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add iOfficeAI/AionUi --skill i18n -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install iOfficeAI/AionUi i18n --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iOfficeAI/AionUi.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/i18n .gemini/skills/i18n && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "i18n" agent skill from https://github.com/iOfficeAI/AionUi/tree/main/.claude/skills/i18n into .gemini/skills/i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install iOfficeAI/AionUi i18nInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add iOfficeAI/AionUi --skill i18n -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/iOfficeAI/AionUi.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/i18n .github/skills/i18n && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "i18n" agent skill from https://github.com/iOfficeAI/AionUi/tree/main/.claude/skills/i18n into .github/skills/i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add iOfficeAI/AionUi --skill i18n -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install iOfficeAI/AionUi i18n --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iOfficeAI/AionUi.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/i18n .opencode/skills/i18n && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "i18n" agent skill from https://github.com/iOfficeAI/AionUi/tree/main/.claude/skills/i18n into .opencode/skills/i18n/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
i18nStandards for keeping all user-facing text translatable: read the i18n config first, use namespaced keys, reuse shared strings and follow the key naming rules.
All user-visible text in the project has to go through i18n. Before any work, the agent reads `src/common/config/i18n-config.json`, which holds the supported languages, the translation modules and the reference language (en-US at the time of writing). The agent never assumes a fixed list, because that file is the single source of truth for scripts and runtime code.
Keys use namespaced dot notation such as `t('common.send')` or `t('cron.status.active')`, and inside each module's JSON file they may be flat or nested. Names are camelCase, related keys are grouped by nesting, and reusable words like save, cancel and delete belong in `common.json`. The skill also lists common suffixes (title, placeholder, label, success and error, confirm, empty, tooltip) and then begins a step-by-step workflow, reading the config and checking existing keys, which the excerpt cuts off.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6744099. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bunnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Internationalization Workflow with i18n loads about 1.9k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 641 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from iOfficeAI/AionUi at commit 6744099, republished under its Apache-2.0 licence (© iOfficeAI). 641 words, ~1,939 tokens.
.claude/skills/i18n/SKILL.md (or your agent's skills folder).Standards and workflow for internationalization. All user-visible text must use i18n.
Announce at start: "I'm using i18n skill to ensure proper internationalization."
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.jsonThis file is the single source of truth. All scripts, runtime code, and this workflow depend on it.
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
│ └── ...
└── ...referenceLanguage in i18n-config.json (currently en-US)supportedLanguages array — read the file to get the current listmodules array — read the file to get the current listKeys 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:
t('common.send'); // flat key in common.json
t('cron.status.active'); // nested key in cron.jsoncopySuccess, scheduledTasksstatus.active, actions.pausecommon.json: save, cancel, delete, confirm, etc.| Suffix | Usage |
|---|---|
title | Section/page titles |
placeholder | Input placeholders |
label | Form labels |
success / error | Status messages |
confirm | Confirmation dialogs |
empty | Empty state messages |
tooltip | Tooltip text |
src/common/config/i18n-config.jsonGet the current language list and module list. Do not skip this step.
Before adding a new key, search for similar existing keys:
grep -r "keyword" src/renderer/i18n/locales/en-US/Reuse common.* keys when possible.
Match the module to the feature area. If no module fits, consider whether a new module is needed (see "Adding a New Module" below).
CRITICAL: Every new key must be added to every locale in supportedLanguages. Use this checklist for each key:
en-US/<module>.json — reference language (added in Step 3)zh-CN/<module>.json — addedzh-TW/<module>.json — addedsrc/common/config/i18n-config.json → supportedLanguages — addedA key missing from even one locale will cause node scripts/check-i18n.js to fail in CI.
import { useTranslation } from 'react-i18next';
function MyComponent() {
const { t } = useTranslation();
return <button>{t('common.save')}</button>;
}Run these two commands in order — both must pass before committing:
bun run i18n:types # Step A: regenerate i18n-keys.d.ts from reference locale
node scripts/check-i18n.js # Step B: validate structure, keys, and type synci18n:types must be run before check-i18n.js — the check validates the generated filecheck-i18n.js exits with errors (❌), fix them before proceedingcheck-i18n.js exits with warnings only (⚠️), review but may proceedi18n-keys.d.tssrc/common/config/i18n-config.json → modules array<module>.json in every locale directory (read supportedLanguages to know which)index.tsbun run i18n:types to regenerate type definitionsnode scripts/check-i18n.js to validateNever use hardcoded Chinese/English text in JSX:
// Bad
<span>重命名</span>
<span>Delete</span>
{name || '新对话'}
// Good
<span>{t('common.rename')}</span>
<span>{t('common.delete')}</span>
{name || t('conversation.newConversation')}console.log() / debug output{
"taskCount": "{{count}} task(s)",
"greeting": "Hello, {{name}}!"
}t('cron.taskCount', { count: 5 });Use Trans component for complex markup:
import { Trans } from 'react-i18next';
<Trans i18nKey='cron.countdown'>
Task <strong>{{ taskName }}</strong> in <span>{{ countdown }}</span>
</Trans>;Most terms can be auto-converted from zh-CN, but some need manual review:
| zh-CN | zh-TW | Notes |
|---|---|---|
| 视频 | 影片 | Different term |
| 软件 | 軟體 | Different term |
| 信息 | 訊息 | Different term |
| 默认 | 預設 | Different term |
Before submitting code with new text:
src/common/config/i18n-config.json to get current languages and modulest() functionsupportedLanguagesbun run i18n:types ran first (regenerates i18n-keys.d.ts)node scripts/check-i18n.js passed after types regenerated (no errors)| Mistake | Correct |
|---|---|
| Assuming a fixed number of languages | Always read i18n-config.json first |
| Adding key to only some locales | Add to every locale in supportedLanguages |
Editing i18n-keys.d.ts manually | Run bun run i18n:types to generate |
Using t("New Chat") | Define key: t("conversation.newChat") |
Not updating i18n-config.json for new module | Update config first, then create files |
Adding module JSON but not updating index.ts | Must add import + export in each locale's index.ts |
© iOfficeAI, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/i18n of iOfficeAI/AionUi.
Open the folder on GitHubat commit 6744099
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in iOfficeAI/AionUi, which our catalogue first saw on October 7, 2026.
Internationalization Workflow with i18n next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Internationalization Workflow with i18n this skilliOfficeAI/AionUi | 33k | 1 repos | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Chatbox i18n Translatorchatboxai/chatbox | 42k | — | ~508 | Automated safety check: Pass | GPL-3.0 | |
| Enforce Rules For I18nmoeru-ai/airi | 50k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Claude Desktop Chinese Localizationjavaht/claude-desktop-zh-cn | 7.5k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Translation ReviewDevolutions/UniGetUI | 26k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Frontend I18nlangflow-ai/langflow | 155k | — | ~1k | Automated safety check: Pass | MIT |
chatboxai/chatbox
Translates new or changed i18n keys from a Chatbox Pro diff, staged changes or a commit range, writing the locale JSON files directly with a built-in glossary.
moeru-ai/airi
Review pending AIRI translations on Crowdin in a batch, then sync them into the repository.
javaht/claude-desktop-zh-cn
Adds missing Simplified and Traditional Chinese translations to the Claude Desktop Chinese patch across three layers, then checks how many mappings actually hit.
Devolutions/UniGetUI
Reviews UniGetUI .json language files for localization quality, detects parity issues, English-equal entries, wrong-script content, and cross-language outliers, then generates a dataset for…
langflow-ai/langflow
Add, change, or review user-facing text in the Langflow frontend using the i18n system (i18next / react-i18next).
Y80/bmm
A skill your agent uses when the user wants to translate a repository README, make a repo multilingual, localize docs, add a language switcher, internationalize the README, or update localized…
iOfficeAI/AionUi
Tells the agent where new code belongs in an Electron multi-process project and which APIs each process may use, with rules for new bridges, services, agents and workers.
iOfficeAI/AionUi
Sets the test-writing workflow for the repository: risk-first scenario lists, behavior-focused Vitest tests, a full run before each commit and a coverage target.
iOfficeAI/AionUi
Automates an AionUi release: checks the latest AionCore release and its artifacts, updates package.json, writes the changelog, opens a PR and tags the release.
Categories
Standards for keeping all user-facing text translatable: read the i18n config first, use namespaced keys, reuse shared strings and follow the key naming rules. All user-visible text in the project has to go through i18n.json`, which holds the supported languages, the translation modules and the reference language (en-US at the time of writing).
Internationalization Workflow with i18n fits situations like: adding new user-facing text to an existing screen; creating a component that contains labels, titles or messages; reviewing a pull request for hard-coded strings; adding a new translation module.
Run `npx skills add iOfficeAI/AionUi --skill i18n -a claude-code`. Or copy the skill folder (.claude/skills/i18n in iOfficeAI/AionUi) into .claude/skills/i18n in your project. Claude Code loads it when a task matches its description.
Run `npx skills add iOfficeAI/AionUi --skill i18n -a codex`. Or copy the skill folder (.claude/skills/i18n in iOfficeAI/AionUi) into .agents/skills/i18n in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add iOfficeAI/AionUi --skill i18n -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/i18n, .gemini/skills/i18n, .github/skills/i18n and .opencode/skills/i18n in your project.
Going by SKILL.md and its folder, Internationalization Workflow with i18n needs the command-line tools its instructions call (bun and node). Our summary lists: A project with `src/common/config/i18n-config.json` and i18next.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Internationalization Workflow with i18n is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Internationalization Workflow with i18n: Chatbox i18n Translator (chatboxai/chatbox, 42k stars), Enforce Rules For I18n (moeru-ai/airi, 50k stars), Claude Desktop Chinese Localization (javaht/claude-desktop-zh-cn, 7.5k stars) and Translation Review (Devolutions/UniGetUI, 26k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
iOfficeAI (a GitHub organization) maintains it in iOfficeAI/AionUi, which has 33,409 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on September 9, 2026.
Source: iOfficeAI/AionUi on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.