https://github.com/2ue/i18n
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/2ue/i18n
- Owner: 2ue
- Created: 2025-06-27T07:47:01.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-06-27T08:12:02.000Z (12 months ago)
- Last Synced: 2025-06-27T09:24:19.952Z (12 months ago)
- Language: TypeScript
- Size: 122 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# i18n-xy
国际化提取替换翻译工具,用于扫描项目中的中文文案,提取并替换为国际化函数(如`$t('key')`),同时生成对应的多语言JSON文件。
[](https://www.npmjs.com/package/i18n-xy)
[](https://github.com/yourusername/i18n-xy/blob/main/LICENSE)
## 功能特点
- 🔍 **智能扫描**:自动扫描项目中的中文文案,支持js/jsx/ts/tsx文件
- 🔑 **自动提取**:提取中文文案并生成唯一key,支持拼音和哈希两种模式
- 🔄 **自动替换**:将中文替换为国际化函数调用,如`$t('key')`
- 📦 **自动导入**:根据配置自动导入国际化函数
- 📝 **多语言生成**:生成多语言JSON文件,支持多种语言
- 🌐 **自动翻译**:支持百度翻译API自动翻译
- ⚙️ **高度可配置**:提供丰富的配置选项,满足不同项目需求
## 安装
```bash
# 全局安装
npm install i18n-xy --global
# 或使用pnpm
pnpm add i18n-xy --global
# 项目内安装
npm install i18n-xy --save-dev
# 或使用pnpm
pnpm add i18n-xy --save-dev
```
## 快速开始
### 步骤1: 初始化配置
```bash
# 生成默认配置文件
i18n-xy init
```
这将在项目根目录创建`i18n-xy.config.ts`文件。
### 步骤2: 提取中文文案
```bash
# 扫描并提取中文文案
i18n-xy extract
```
这将扫描项目中的文件,提取中文文案,并生成语言文件。
### 步骤3: 替换中文文案
```bash
# 替换中文文案为国际化函数调用
i18n-xy replace
```
这将替换项目中的中文文案为国际化函数调用。
### 步骤4: 翻译文案(可选)
```bash
# 翻译中文文案到其他语言
i18n-xy translate --locale en,ja
```
这将翻译中文文案到英语和日语。
## 命令行选项
### 全局选项
- `-c, --config ` - 指定配置文件路径
- `-d, --debug` - 启用调试模式
- `-v, --verbose` - 显示详细输出
- `--help` - 显示帮助信息
- `--version` - 显示版本信息
### init 命令
初始化配置文件。
```bash
i18n-xy init [options]
```
选项:
- `-o, --output ` - 指定配置文件输出路径,默认为`./i18n-xy.config.ts`
- `-f, --force` - 强制覆盖已存在的配置文件
### extract 命令
提取中文文案。
```bash
i18n-xy extract [options]
```
选项:
- `-o, --output ` - 指定输出目录
- `--dry-run` - 仅扫描不写入文件
- `--pattern ` - 指定文件匹配模式
- `--ignore ` - 指定忽略文件模式
- `--replace` - 提取的同时替换中文文案
### replace 命令
替换中文文案为国际化函数调用。
```bash
i18n-xy replace [options]
```
选项:
- `--dry-run` - 仅扫描不写入文件
- `--pattern ` - 指定文件匹配模式
- `--ignore ` - 指定忽略文件模式
- `--auto-import` - 自动导入国际化函数
### translate 命令
翻译中文文案到其他语言。
```bash
i18n-xy translate [options]
```
选项:
- `--locale ` - 指定目标语言,多个语言用逗号分隔
- `--dry-run` - 仅扫描不写入文件
- `-o, --output ` - 指定输出目录
## 配置文件
i18n-xy使用配置文件来控制其行为。默认配置文件名为`i18n-xy.config.ts`,也支持`.js`和`.json`格式。
配置文件示例:
```typescript
import { Config } from 'i18n-xy';
const config: Config = {
locale: 'zh-CN',
fallbackLocale: 'en-US',
outputDir: 'locales',
include: ['src/**/*.{js,jsx,ts,tsx}'],
exclude: ['node_modules/**'],
keyGeneration: {
maxChineseLength: 8,
hashLength: 6,
reuseExistingKey: true,
duplicateKeySuffix: 'hash',
keyPrefix: '',
separator: '_',
maxRetryCount: 5,
pinyinOptions: {
toneType: 'none',
type: 'array'
}
},
output: {
prettyJson: true,
localeFileName: '{locale}.json'
},
replacement: {
functionName: '$t',
autoImport: {
enabled: true,
insertPosition: 'afterImports',
imports: {
'**/*.{jsx,tsx}': {
importStatement: "import { useTranslation } from 'react-i18next';\nconst { t: $t } = useTranslation();"
}
}
}
}
};
export default config;
```
详细配置选项请参考[配置文档](./docs/config.md)。
## 使用示例
详细使用示例请查看[使用指南](./docs/guide.md)和[示例目录](./examples)。
## 支持的场景
i18n-xy支持多种中文文案提取和替换场景,包括但不限于:
- 字符串字面量(单引号、双引号)
- 模板字符串(包括嵌套模板)
- JSX文本节点
- JSX属性值
- 对象和数组中的中文字符串
- 条件表达式中的中文字符串
- 函数参数中的中文字符串
详细支持的场景请参考[场景文档](./docs/scenarios.md)。
## 开发
```bash
# 克隆仓库
git clone https://github.com/yourusername/i18n-xy.git
cd i18n-xy
# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建
pnpm build
# 测试
pnpm test
```
## 贡献指南
欢迎贡献代码、报告问题或提出建议!请参考[贡献指南](./CONTRIBUTING.md)。
## 变更日志
查看[变更日志](./CHANGELOG.md)了解各版本的变化。
## 许可证
[MIT](./LICENSE)