An open API service indexing awesome lists of open source software.

https://github.com/2ue/i18n-x


https://github.com/2ue/i18n-x

Last synced: 5 months ago
JSON representation

Awesome Lists containing this project

README

          

# i18n-xy

A CLI tool for automatically extracting Chinese strings from React projects and internationalizing them. Supports intelligent string extraction, AST code transformation, key generation, automatic translation, and more.

## ✨ Features

- πŸš€ **Automatic Extraction**: Intelligently identifies and extracts Chinese strings from JavaScript/TypeScript/JSX/TSX files
- πŸ”„ **Code Transformation**: Uses AST technology to precisely replace Chinese strings with internationalization function calls
- 🎯 **Smart Key Generation**: Supports pinyin conversion, hash generation, duplicate key detection, and other strategies
- 🌐 **Automatic Translation**: Integrated with Baidu Translate API for batch translation of internationalization files
- βš™οΈ **Flexible Configuration**: Rich configuration options to meet different project requirements
- πŸ“ **File Management**: Supports temporary directory processing to avoid directly modifying source files
- πŸ”§ **Auto Import**: Configurable automatic addition of internationalization function import statements
- πŸ“Š **Detailed Logging**: Multi-level log output for easy debugging and monitoring

## πŸ“¦ Installation

```bash
# Global installation
npm install -g i18n-xy

# Or using pnpm
pnpm add -g i18n-xy

# Or using yarn
yarn global add i18n-xy
```

## πŸš€ Quick Start

### 1. Initialize Configuration

```bash
# Initialize configuration file
i18n-xy init
# Or use short command
i18nx init
```

### 2. Extract Chinese Strings

```bash
# Use default configuration to extract
i18n-xy extract

# Specify configuration file
i18n-xy extract -c ./my-config.json
```

### 3. Translate Internationalization Files

```bash
# Batch translation
i18n-xy translate --batch

# Translate single text
i18n-xy translate --test -f zh -t en -i "δ½ ε₯½δΈ–η•Œ"
```

## βš™οΈ Basic Configuration

Configuration file example (`i18n.config.json`):

```json
{
"locale": "zh-CN",
"displayLanguage": "en-US",
"outputDir": "locales",
"include": [
"src/**/*.{js,jsx,ts,tsx}",
"pages/**/*.{js,jsx,ts,tsx}",
"components/**/*.{js,jsx,ts,tsx}"
],
"exclude": [
"node_modules/**",
"dist/**",
"build/**",
"**/*.test.{js,jsx,ts,tsx}"
],
"replacement": {
"functionName": "$t",
"autoImport": {
"enabled": true,
"insertPosition": "afterImports"
}
}
}
```

### Core Configuration Options

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `locale` | string | `"zh-CN"` | Source language |
| `outputDir` | string | `"locales"` | Internationalization file output directory |
| `include` | string[] | `["src/**/*.{js,jsx,ts,tsx}"]` | File patterns to process |
| `exclude` | string[] | `["node_modules/**"]` | File patterns to exclude |
| `replacement.functionName` | string | `"$t"` | Replacement function name |

## πŸ› οΈ Development

### Environment Requirements

- Node.js >= 16.0.0
- npm/pnpm/yarn

### Local Development

```bash
# Clone project
git clone
cd i18n-xy

# Install dependencies
pnpm install

# Development mode
pnpm dev

# Build
pnpm build

# Code check
pnpm lint

# Type check
pnpm type-check
```

### Project Structure

```
src/
β”œβ”€β”€ ast/ # AST processing core logic
β”œβ”€β”€ cli.ts # CLI command line entry
β”œβ”€β”€ config/ # Configuration management
β”œβ”€β”€ translation/ # Translation functionality
β”œβ”€β”€ utils/ # Utility functions
└── vars/ # Variable management
```

## πŸ“š Usage Examples

### Before Processing

```javascript
function Welcome({ name }) {
return (


ζ¬’θΏŽδ½Ώη”¨ζˆ‘δ»¬ηš„η³»η»Ÿ


η”¨ζˆ·οΌš{name}οΌŒζ‚¨ε₯½οΌ


点击开始

);
}
```

### After Processing

```javascript
import { useTranslation } from 'react-i18next';

function Welcome({ name }) {
const { t: $t } = useTranslation();

return (


{$t("huan_ying_shi_yong_wo_men_de_xi_tong")}


{$t("yong_hu")}:{name},{$t("nin_hao")}!


{$t("dian_ji_kai_shi")}

);
}
```

### Generated Internationalization File

`locales/zh-CN.json`:
```json
{
"huan_ying_shi_yong_wo_men_de_xi_tong": "ζ¬’θΏŽδ½Ώη”¨ζˆ‘δ»¬ηš„η³»η»Ÿ",
"yong_hu": "η”¨ζˆ·",
"nin_hao": "您ε₯½",
"dian_ji_kai_shi": "点击开始"
}
```

## πŸ“ License

ISC

## 🀝 Contributing

Issues and Pull Requests are welcome!

---

For more detailed configuration and advanced features, please check the [documentation](./docs/).