npx skills add https://github.com/aicodingstack/aicodingstack.io --skill i18n管理 translations/ 目录中的多语言内容。此技能提供工具来同步语言文件与英语参考文件,并协助翻译工作。
本项目使用 next-intl 进行国际化,JSON 消息文件组织在 translations/ 目录中:
translations/
├── en/ # 英语(源语言)
│ ├── index.ts # 主导出文件
│ ├── shared.json
│ ├── components.json
│ └── pages/
│ ├── home.json
│ ├── manifesto.json
│ ├── docs.json
│ ├── articles.json
│ ├── curated-collections.json
│ ├── stacks.json
│ ├── comparison.json
│ ├── landscape.json
│ ├── open-source-rank.json
│ └── search.json
├── de/ # 德语
├── es/ # 西班牙语
├── fr/ # 法语
├── id/ # 印度尼西亚语
├── ja/ # 日语
├── ko/ # 韩语
├── pt/ # 葡萄牙语
├── ru/ # 俄语
├── tr/ # 土耳其语
├── zh-Hans/ # 简体中文
└── zh-Hant/ # 繁体中文
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
重要提示: 每个语言环境必须保持与 en/ 完全相同的文件结构和 JSON 键顺序。
本项目有两个独立的国际化系统,它们共享相同的 12 个语言环境配置:
translations/{locale}/*.jsonuseTranslations() 钩子或 getTranslations() 服务器函数manifests/**/*.json(在每个清单文件的 translations 字段中)localizeManifestItem() 和 localizeManifestItems() 函数此技能仅管理 UI 翻译系统。 对于清单翻译,请直接编辑清单 JSON 文件或使用清单自动化技能。
src/i18n/config.ts 中当前启用的语言环境:
en - 英语(源语言)de - Deutsch(德语)es - Español(西班牙语)fr - Français(法语)id - Bahasa Indonesia(印度尼西亚语)ja - 日本語(日语)ko - 한국어(韩语)pt - Português(葡萄牙语)ru - Русский(俄语)tr - Türkçe(土耳其语)zh-Hans - 简体中文(简体中文)zh-Hant - 繁體中文(繁体中文)所有 12 个语言环境均已完全启用,必须保持同步。
sync将所有启用的语言环境目录与作为源语言的 en/ 目录同步。
功能:
translations/ 中所有在配置中启用的语言环境目录index.ts 文件结构用法:
当需要同步语言文件时,在 Claude Code 中使用此命令:
Please run the i18n sync command
Claude Code 将执行:
node .claude/skills/i18n/scripts/sync.mjs
输出示例:
🔄 Syncing translation files with en/...
✓ Synced de/
+ Added 3 keys in components.json
+ Added 5 keys in pages/home.json
- Removed 1 key in shared.json
✓ Synced zh-Hans/
+ Added 8 keys in pages/stacks.json
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ Sync complete!
Modified: 2 locales
Added: 16 keys
Removed: 1 key
使用时机:
translate <locale>为 Claude Code 生成翻译任务,以翻译缺失的内容。
功能:
en/ 和 <locale>/ 中的所有 JSON 文件用法:
当需要翻译内容时,在 Claude Code 中使用此命令:
Please run the i18n translate command for ja
Claude Code 将执行:
node .claude/skills/i18n/scripts/translate.mjs ja
工作流程:
翻译指南(自动强制执行):
✓ 保留品牌名称: AI Coding Stack、Claude Code 等。
✓ 保持占位符完整: {count}、{name}、${variable}
✓ 不翻译 URL: https://example.com
✓ 不翻译文件路径: /path/to/file
✓ 在整个翻译过程中保持术语一致性
✓ 保留引用语法: @:path.to.key 用于内部引用
输出示例:
🌐 Translation Assistant for ja
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📝 Translation Task
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Target Language: 日本語 (Japanese)
Entries to translate: 15
Files affected:
- components.json: 5 entries
- pages/home.json: 8 entries
- shared.json: 2 entries
⚠ Translation Guidelines:
1. Preserve brand names: "AI Coding Stack", "Claude Code"
2. Keep placeholders intact: {count}, {name}, ${variable}
3. Don't translate URLs and file paths
4. Maintain consistent terminology
5. Preserve reference syntax: @:path.to.key
Content to translate:
```json
{
"components.languageSwitcher.english": "English",
"pages.home.hero.title": "Welcome to AI Coding Stack",
"shared.navigation.docs": "Documentation",
...
}
---
## 文件结构
.claude/skills/i18n/ ├── SKILL.md # 此文档 └── scripts/ ├── sync.mjs # 同步脚本 └── translate.mjs # 翻译助手脚本
## 技术细节
**语言:** Node.js (ES Modules)
**依赖项:** 仅使用内置 Node.js 模块 (`fs`, `path`)
**JSON 格式:** 2 空格缩进,末尾换行符
**编码:** UTF-8
### 翻译文件结构
每个语言环境包含:
1. **JSON 文件:** 包含实际的消息数据
2. **index.ts:** 导入并组装消息
```typescript
// translations/en/index.ts
import components from './components.json'
import articles from './pages/articles.json'
import comparison from './pages/comparison.json'
import curatedCollections from './pages/curated-collections.json'
import docs from './pages/docs.json'
import home from './pages/home.json'
import landscape from './pages/landscape.json'
import manifesto from './pages/manifesto.json'
import openSourceRank from './pages/open-source-rank.json'
import search from './pages/search.json'
import stacks from './pages/stacks.json'
import shared from './shared.json'
const messages = {
shared,
components,
pages: {
home,
manifesto,
docs,
articles,
curatedCollections,
stacks,
comparison,
landscape,
openSourceRank,
search,
},
}
export default messages
脚本使用递归遍历来处理嵌套的 JSON 结构。使用点表示法比较键:
{
"pages": {
"home": {
"hero": {
"title": "Welcome"
}
}
}
}
变为:pages.home.hero.title = "Welcome"
注意: 本项目目前支持 12 个语言环境。要添加新的语言环境(例如,意大利语 'it'):
将语言环境添加到 src/i18n/config.ts:
export const locales = [ 'en', 'de', 'es', 'fr', 'id', 'ja', 'ko', 'pt', 'ru', 'tr', 'zh-Hans', 'zh-Hant', 'it' // 添加新语言环境 ] as const;
更新语言环境名称:
export const localeNames: Record<Locale, string> = { // ... 现有语言环境 it: 'Italiano', }
export const localeToOgLocale: Record<Locale, string> = { // ... 现有语言环境 it: 'it_IT', }
添加到 translate.mjs 的 LOCALE_NAMES(.claude/skills/i18n/scripts/translate.mjs):
const LOCALE_NAMES = { // ... 现有语言环境 it: 'Italiano (Italian)', }
创建语言环境目录结构:
mkdir -p translations/it/pages cp translations/en/index.ts translations/it/index.ts cp translations/en/.json translations/it/ cp translations/en/pages/.json translations/it/pages/
运行 sync 以确保结构匹配:
Please run the i18n sync command
运行 translate 以生成翻译任务:
Please run the i18n translate command for it
translate 之前运行 sync,以确保所有键都存在@:path.to.key)问题: 脚本显示 "directory not found"
translations/ 目录是否存在问题: 添加新内容后键不同步
sync 命令以更新所有语言环境文件问题: 翻译包含 {0} 而不是 {count} 之类的占位符
问题: 翻译后的应用程序中某些文本显示为英语
translate 以查找缺失的翻译,检查英语回退问题: sync 后 index.ts 导入错误
此技能设计用于与项目的 next-intl 设置配合使用:
// src/i18n/request.ts
const rawMessages = (await import(`../../translations/${locale}/index.ts`)).default
const messages = resolveReferences(rawMessages)
JSON 文件通过每个语言环境的 index.ts 加载,resolveReferences 函数处理引用语法。
本项目支持引用语法以重用翻译:
基本引用: @:path.to.key
{
"shared": {
"appName": "AI Coding Stack",
"welcome": "Welcome to @:shared.appName"
}
}
// 结果:"Welcome to AI Coding Stack"
带修饰符的引用: @.modifier:path.to.key
支持的修饰符:
@.upper:path - 转换为大写
@.lower:path - 转换为小写
@.capitalize:path - 首字母大写
{ "terms": { "documentation": "documentation", "title": "@.capitalize:terms.documentation Guide" } } // 结果:"Documentation Guide"
重要提示:
src/i18n/lib-core.ts 解析此技能是 AI Coding Stack 项目的一部分,遵循项目的 Apache 2.0 许可证。
每周安装次数
1
仓库
GitHub 星标数
28
首次出现
1 天前
安全审计
安装于
claude-code1
agent-browser 浏览器自动化工具 - Vercel Labs 命令行网页操作与测试
155,300 周安装
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
115,300 周安装
Azure 成本优化技能:分析订阅、清理资源、调整规格、降低支出
121,400 周安装
Microsoft Entra 应用注册指南:Azure AD 应用配置、API权限与OAuth流程详解
128,600 周安装
Azure 存储服务完整指南:Blob、文件、队列、表存储及Data Lake使用教程
128,400 周安装
Azure 托管 GitHub Copilot SDK 部署指南 - 微软官方技能模板
128,500 周安装
Azure诊断指南:官方生产问题排查与调试权威教程
128,600 周安装