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.
Cebian project i18n key naming, placeholder, pluralization, file layout, and glossary conventions.
$ npx skills add maotoumao/Cebian --skill i18n-naming -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install maotoumao/Cebian i18n-naming --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/maotoumao/Cebian.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/i18n-naming .claude/skills/i18n-naming && 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-naming" agent skill from https://github.com/maotoumao/Cebian/tree/master/.agents/skills/i18n-naming into .claude/skills/i18n-naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n-naming", 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/maotoumao/Cebian/tree/master/.agents/skills/i18n-namingType 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 maotoumao/Cebian --skill i18n-naming -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install maotoumao/Cebian i18n-naming --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maotoumao/Cebian.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/i18n-naming .agents/skills/i18n-naming && 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-naming" agent skill from https://github.com/maotoumao/Cebian/tree/master/.agents/skills/i18n-naming into .agents/skills/i18n-naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n-naming", 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 maotoumao/Cebian --skill i18n-naming -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install maotoumao/Cebian i18n-naming --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maotoumao/Cebian.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/i18n-naming .cursor/skills/i18n-naming && 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-naming" agent skill from https://github.com/maotoumao/Cebian/tree/master/.agents/skills/i18n-naming into .cursor/skills/i18n-naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n-naming", 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/maotoumao/Cebian.git --path .agents/skills/i18n-naming--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 maotoumao/Cebian --skill i18n-naming -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install maotoumao/Cebian i18n-naming --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maotoumao/Cebian.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/i18n-naming .gemini/skills/i18n-naming && 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-naming" agent skill from https://github.com/maotoumao/Cebian/tree/master/.agents/skills/i18n-naming into .gemini/skills/i18n-naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n-naming", 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 maotoumao/Cebian i18n-namingInstalls 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 maotoumao/Cebian --skill i18n-naming -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/maotoumao/Cebian.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/i18n-naming .github/skills/i18n-naming && 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-naming" agent skill from https://github.com/maotoumao/Cebian/tree/master/.agents/skills/i18n-naming into .github/skills/i18n-naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n-naming", 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 maotoumao/Cebian --skill i18n-naming -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install maotoumao/Cebian i18n-naming --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maotoumao/Cebian.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/i18n-naming .opencode/skills/i18n-naming && 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-naming" agent skill from https://github.com/maotoumao/Cebian/tree/master/.agents/skills/i18n-naming into .opencode/skills/i18n-naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "i18n-naming", 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.
i18n-namingCebian project i18n key naming, placeholder, pluralization, file layout, and glossary conventions.
I18n Naming is an agent skill from maotoumao/Cebian. Cebian project i18n key naming, placeholder, pluralization, file layout, and glossary conventions. MUST be used whenever adding, editing, refactoring, or reviewing any translation key in locales/.yml, any t(...) call in source code, or any MSG placeholder in manifest. Also triggers when reviewing diffs that touch i18n files, when proposing new user-facing strings, or when validating translation completeness/consistency between en.yml, zhCN.yml, and zhTW.yml.
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Frontend & Design, covering Internationalization and Translation. It works with Chrome Extensions. The repository describes itself as: An AI assistant that lives in your browser side panel. The licence is AGPL-3.0.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit da045e6. 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:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.
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.
I18n Naming loads about 3.7k tokens when it runs. Until then it costs about 124 tokens; SKILL.md has 1,358 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 maotoumao/Cebian at commit da045e6, republished under its AGPL-3.0 licence (© maotoumao). 1,358 words, ~3,658 tokens.
.claude/skills/i18n-naming/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.This skill captures the agreed-upon rules for the Cebian extension's i18n
implementation, built on @wxt-dev/i18n with its simple YAML format. All
translation work — both authoring and review — must follow these rules.
t('...') call in source.locales/en.yml, locales/zh_CN.yml, or locales/zh_TW.yml.__MSG_*__).Cebian ships three independently maintained locales:
en — default (fallback for all non-Chinese users)zh_CN — Simplified Chinese (Mainland conventions)zh_TW — Traditional Chinese (Taiwan conventions; also serves HK users
via Chrome's zh_TW → zh → default fallback chain when no zh_HK is
present — we do not ship a separate zh_HK)Source files live at:
locales/en.yml
locales/zh_CN.yml
locales/zh_TW.ymlAll three are hand-authored and must respect each language's idiomatic
style. zh_TW is NOT a mechanical character conversion of zh_CN; word
choice differs (see the Traditional Chinese glossary below).
The WXT module compiles them into
.output/<browser>/_locales/{en,zh_CN,zh_TW}/messages.json at build
time. Never edit generated messages.json files by hand. Chrome's
_locales/ directory does not accept a bare zh folder, which is why
we ship zh_CN and zh_TW separately.
Use a fixed top-level namespace set. Do not invent new top-level namespaces without updating this skill first.
common # generic verbs/labels reused across UI (send, cancel, save, ...)
chat # /chat/* page (input, message, tools)
settings # /settings/* page (layout, providers, chat, prompts, skills, data, about)
provider # provider sub-components (oauth, apiKey, custom)
tools # agent tool runtime labels (shown in ToolCard while a tool runs)
vfs # standalone VFS browser entrypoint (entrypoints/vfs)
permission # standalone user-permission entrypoint (entrypoints/user-permission)
dialogs # modal dialogs
errors # toast / inline error messages
agent # agent-runtime user-facing strings
pageActions # in-page injected UI (floating ball, selection toolbar)
# Flat top-level keys (manifest exception, see "Manifest localization"):
# extName, extDescription, actionTitlenamespace.block.name (e.g. chat.input.placeholder).apiKey not api-key, not api_key.common.cancel, errors.fileTooLargecommon.cancelButton, errors.fileTooLargeMessagecommon.send, common.delete.provider.oauth.loggedIn.errors.* and read as a sentence.Prefer one canonical key per concept, reused across the UI, over
near-duplicates. Every "Cancel" button must use common.cancel. Add a
non-common key only when the wording legitimately differs in context.
@wxt-dev/i18n's simple YAML format only supports positional
substitutions $1–$9. Named placeholders ($NAME$) are only available
via the verbose Chrome messages.json format, which we do not use.
$1, $2, ... $9 in message text.$N with an inline YAML comment on the
line above the message, so translators see what they are.errors:
# $1 = file name, $2 = size limit
fileTooLarge: "$1 exceeds $2 limit"t('errors.fileTooLarge', [file.name, '5MB']);To produce a literal $, double it: $$.
If natural sentence order differs between en and zh, keep the indices the same and rearrange the surrounding text:
# en.yml — $1 = model, $2 = provider
chat.modelLine: "Using $1 from $2"
# zh.yml — same indices, different surrounding text
chat.modelLine: "正在使用 $2 的 $1"The call site t('chat.modelLine', [model, provider]) works for both.
@wxt-dev/i18n plural syntax (NOT i18next's _one/_other suffixes).
A pluralized key is a map with numeric keys plus n:
chat:
history:
# $1 = count
count:
0: "No messages"
1: "1 message"
n: "$1 messages"Call with the count as the second argument:
t('chat.history.count', 0); // "No messages"
t('chat.history.count', 1); // "1 message"
t('chat.history.count', 5); // "5 messages"Chinese has no plural form, but must still provide the same shape so the key set is symmetric:
chat:
history:
count:
0: "暂无消息"
1: "1 条消息"
n: "$1 条消息"For manifest.json fields use __MSG_<key>__ placeholders. Chrome
restricts the key to [a-zA-Z0-9_] — dots are not allowed inside the
placeholder. Therefore manifest keys are an exception to the
namespace rule and live as flat top-level entries in the YAML files:
# en.yml
extName: "Cebian"
extDescription: "AI-powered browser sidebar assistant"
actionTitle: "Open Cebian sidebar"
# (all other keys remain nested under their namespace)
common:
newChat: "New chat"// wxt.config.ts
manifest: {
default_locale: 'en',
name: '__MSG_extName__',
description: '__MSG_extDescription__',
action: { default_title: '__MSG_actionTitle__' },
}The allow-list of flat top-level keys is fixed:
extName, extDescription, actionTitle. Adding a new flat key
requires updating this skill.
Authoritative. Any deviation must be discussed and added here. The
zh_TW column is not a character-conversion of zh_CN — Taiwan
usage frequently picks a different word entirely.
| EN | 简体中文 (zh_CN) | 繁體中文 (zh_TW) | Notes |
|---|---|---|---|
| Cebian | Cebian | Cebian | Brand name, never translated |
| Extension | 扩展 | 擴充功能 | TW prefers 擴充功能 over 擴充/擴展 |
| Provider | 提供商 | 供應商 | TW commonly uses 供應商 |
| Model | 模型 | 模型 | |
| Skill | 技能 | 技能 | Translated |
| Prompt | 提示词 | 提示詞 | Translated |
| Agent | 智能体 | 智慧型代理 | TW: 智慧型代理 (avoid bare 代理) |
| Tool | 工具 | 工具 | |
| Session / Chat | 会话 / 对话 | 工作階段 / 對話 | TW: 工作階段 for technical session |
| Thinking | 思考 | 思考 | |
| Settings | 设置 | 設定 | TW: 設定 (not 設置) |
| Sidepanel | 侧边栏 | 側邊欄 | |
| Token | Token | Token | Keep English |
| API Key | API Key | API Key | Keep English |
| OAuth | OAuth | OAuth | Keep English |
| Sign in / Login | 登录 | 登入 | TW: 登入 (not 登錄) |
| Sign out / Logout | 退出 | 登出 | TW: 登出 |
| Verify | 验证 | 驗證 | |
| Archive (verb) | 归档 | 封存 | TW: 封存 (not 歸檔) |
| Save | 保存 | 儲存 | TW: 儲存 (not 保存) |
| Cancel | 取消 | 取消 | |
| Delete | 删除 | 刪除 | |
| Confirm | 确认 | 確認 | |
| Send | 发送 | 傳送 | TW: 傳送 (not 發送) |
| Open | 打开 | 開啟 | TW: 開啟 (not 打開) |
| Close | 关闭 | 關閉 | |
| New chat | 新对话 | 新對話 | |
| History | 历史 / 历史记录 | 歷史 / 歷史記錄 | Use longer form as panel title |
| Search | 搜索 | 搜尋 | TW: 搜尋 (not 搜索) |
| File | 文件 | 檔案 | TW: 檔案 (not 文件) |
| Folder | 文件夹 | 資料夾 | TW: 資料夾 |
| Network | 网络 | 網路 | TW: 網路 (not 網絡) |
| Default | 默认 | 預設 | TW: 預設 (not 默認) |
| Information | 信息 | 資訊 | TW: 資訊 (not 訊息/信息) |
| Program / Software | 程序 / 软件 | 程式 / 軟體 | TW: 程式, 軟體 |
| Data | 数据 | 資料 | TW: 資料 (not 數據) |
Send, Open in new tab发送、在新标签页打开傳送、在新分頁開啟Saved / zh_CN: 已保存 / zh_TW: 已儲存Search models… zh_CN: 搜索模型… zh_TW: 搜尋模型…. , ! ? : ;).。,!?:;).… for all locales, never ....locales/en.yml first.locales/zh_CN.yml (Simplified, Mainland style).locales/zh_TW.yml (Traditional, Taiwan style).
This is NOT a character conversion of zh_CN — use Taiwan-idiomatic
word choices per the Traditional Chinese glossary below.t('your.key') (or t('your.key', [arg1, ...])).$N
with an inline YAML comment on the preceding line, in all three locales.pnpm check (compiles types and runs the i18n lint).Run through this list explicitly when reviewing any i18n-touching diff. Cite each item as pass/fail.
en.yml, zh_CN.yml, and zh_TW.yml
matches the same set. No orphans in any locale.$N indices
in en, zh_CN, and zh_TW is identical (same numeric set, same
count). The surrounding text may differ for word order.0/1/n subkeys)
has the same subkey set in all three languages.…; no trailing punctuation in button labels.$N, in both
locales.common.* key already cover this?
If yes, prefer reusing.Output the review as a structured report:
## i18n review
Pass: <count>
Fail: <count>
Notes: <count>
### Failures
- <key>: <reason> -> <suggested fix>
### Notes (non-blocking)
- <key>: <observation>.tsx "just for this one toast".t('a') + ' ' + t('b')).
Make one key with placeholders.These conventions exist so a future move to react-i18next is mechanical:
$1 $2 → i18next {{0}} {{1}} (or named via codemod)0/1/n plural maps → i18next _zero / _one / _other suffixest('key', [...]) → t('key', [...]) (codemod-friendly)Do not introduce features that break this property without explicit project-level approval.
© maotoumao, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .agents/skills/i18n-naming of maotoumao/Cebian.
Open the folder on GitHubat commit da045e6
I18n Naming 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 |
|---|---|---|---|---|---|---|
| I18n Naming this skillmaotoumao/Cebian | 164 | — | ~3.7k | Automated safety check: Pass | AGPL-3.0 | |
| Chatbox i18n Translatorchatboxai/chatbox | 42k | — | ~508 | Automated safety check: Pass | GPL-3.0 | |
| Internationalization Workflow with i18niOfficeAI/AionUi | 33k | 1 repos | ~1.9k | Automated safety check: Pass | Apache-2.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 |
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.
iOfficeAI/AionUi
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.
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).
maotoumao/Cebian
A skill your agent uses when completing a coding task to perform senior-level code review.
maotoumao/Cebian
Create new Cebian skills, edit or improve existing ones, scaffold multi-file skill packages, and validate them against the agentskills.io specification.
maotoumao/Cebian
审计自上次发版以来的提交,把遗漏的「用户可见变更」补进 CHANGELOG.md 的 [Unreleased];可选地把 [Unreleased] 收口成正式版本节
maotoumao/Cebian
调研 package.json 所有依赖的最新版本,交叉验证版本差异,给出可升级到最新版的结论. An agent skill from maotoumao/Cebian.
maotoumao/Cebian
Resume execution of an approved plan from the next unchecked subtask, following the gated Task Execution Workflow in AGENTS.md.
maotoumao/Cebian
升级pi-agent-core和pi-ai到最新版本
Works with
Categories
Cebian project i18n key naming, placeholder, pluralization, file layout, and glossary conventions. I18n Naming is an agent skill from maotoumao/Cebian. Cebian project i18n key naming, placeholder, pluralization, file layout, and glossary conventions.
I18n Naming fits situations like: reviewing diffs that touch i18n files; proposing new user-facing strings; validating translation completeness/consistency between en.yml.
Run `npx skills add maotoumao/Cebian --skill i18n-naming -a claude-code`. Or copy the skill folder (.agents/skills/i18n-naming in maotoumao/Cebian) into .claude/skills/i18n-naming in your project. Claude Code loads it when a task matches its description.
Run `npx skills add maotoumao/Cebian --skill i18n-naming -a codex`. Or copy the skill folder (.agents/skills/i18n-naming in maotoumao/Cebian) into .agents/skills/i18n-naming 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 maotoumao/Cebian --skill i18n-naming -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-naming, .gemini/skills/i18n-naming, .github/skills/i18n-naming and .opencode/skills/i18n-naming in your project.
Going by SKILL.md and its folder, I18n Naming needs the command-line tools its instructions call (pnpm).
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.
I18n Naming is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k 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 I18n Naming: Chatbox i18n Translator (chatboxai/chatbox, 42k stars), Internationalization Workflow with i18n (iOfficeAI/AionUi, 33k stars), Enforce Rules For I18n (moeru-ai/airi, 50k stars) and Claude Desktop Chinese Localization (javaht/claude-desktop-zh-cn, 7.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
maotoumao (a GitHub user) maintains it in maotoumao/Cebian, which has 164 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 10, 2026.
Source: maotoumao/Cebian on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.