diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 1a2ae1d..fc07db9 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -64,10 +64,13 @@ jobs:
- name: Test
run: |
pnpm test || (echo "Test failed" && exit 1)
-
+ mkdir -p translate
+ node ./dist/index.js -i ./src/system.md -o ./translate/system-gpt-4o-en.md -l English --openai-url https://models.inference.ai.azure.com/chat/completions --api-key ${{ secrets.OPENAI_API_KEY }} --model gpt-4o
+ node ./dist/index.js -i ./src/system.md -o ./translate/system-ministral-3b-ja.md -l Japanese --openai-url https://models.inference.ai.azure.com/chat/completions --api-key ${{ secrets.OPENAI_API_KEY }} --model Ministral-3B
+ node ./dist/index.js -i ./src/system.md -o ./translate/system-phi-3.5-mini-instruct-ko.md -l 朝鲜语 --openai-url https://models.inference.ai.azure.com/chat/completions --api-key ${{ secrets.OPENAI_API_KEY }} --model Phi-3.5-mini-instruct
- name: Commit and Push
run: |
- git add README-zh.md
+ git add README-zh.md translate/
git config --local user.email "action@h7ml.cn"
git config --local user.name "GitHub Action"
git config advice.ignoredHook false
diff --git a/README-zh.md b/README-zh.md
index 1cc34e3..e999d0d 100644
--- a/README-zh.md
+++ b/README-zh.md
@@ -1,42 +1,42 @@
-以下是经过修订和整合的`ai-markdown-translator`文档,其中包含`npx`和`./ai-markdown-translator`的示例:
+这里是经过修订和合并的 `ai-markdown-translator` 文档版本,同时包含了 `npx` 和 `./ai-markdown-translator` 示例:
---
# ai-markdown-translator
-[English](README.md) | [中文](README-zh.md)
+[英文](README.md) | [中文](README-zh.md)
-`ai-markdown-translator` 是一个命令行工具,使用 OpenAI 的语言模型将 Markdown 文件从一种语言翻译为另一种语言。它在翻译内容时保持 Markdown 语法。
+`ai-markdown-translator` 是一个命令行工具,用于使用 OpenAI 的语言模型将 Markdown 文件从一种语言翻译成另一种语言。它在翻译内容时保留 Markdown 语法。
## 特性
-- 将 Markdown 文件翻译成 OpenAI 模型支持的任何语言。
-- 在翻译过程中保留 Markdown 语法。
-- 通过命令行参数或环境变量进行灵活配置。
+- 将 Markdown 文件翻译为 OpenAI 模型支持的任何语言。
+- 在翻译过程中保持 Markdown 语法。
+- 通过命令行参数或环境变量灵活配置。
-## 先决条件
+## 前提条件
- Node.js (v14 或更高)
-- npm (通常与 Node.js 一起安装)
+- npm (通常随 Node.js 一起安装)
- OpenAI API 密钥
## 安装
-1. 克隆此代码库或下载源代码。
+1. 克隆此存储库或下载源代码。
2. 在终端中导航到项目目录。
-3. 安装依赖项:
+3. 安装依赖:
```bash
npm install
@@ -51,19 +51,19 @@ npm run build
## 脚本
- `build`: 将 TypeScript 文件编译为 JavaScript。
-- `start`: 使用 Node.js 运行编译后的 JavaScript。
-- `lint`: 使用 ESLint 检查 TypeScript 文件中的代码质量问题。
-- `lint:fix`: 自动修复 TypeScript 文件中的 linting 问题。
-- `format`: 使用 Prettier 格式化 `src` 目录中的各种文件类型。
-- `format:check`: 检查 `src` 目录中各种文件类型的代码格式,而不进行更改。
+- `start`: 使用 Node.js 运行已编译的 JavaScript。
+- `lint`: 运行 ESLint 检查 TypeScript 文件中的代码质量问题。
+- `lint:fix`: 自动修复 TypeScript 文件中的 lint 问题。
+- `format`: 使用 Prettier 格式化 `src` 目录中的各种文件类型代码。
+- `format:check`: 检查代码格式而不进行更改,适用于 `src` 目录中的各种文件类型。
- `postbuild`: 使编译后的 `index.js` 文件可执行。
-- `changelog`: 基于约定式提交生成变更日志。
-- `version`: 在版本更新时更新变更日志并将其加入版本提交。
+- `changelog`: 生成基于常规提交的变更日志。
+- `version`: 当版本变更时更新变更日志并将其暂存以供提交。
- `test`: 构建项目并运行测试。
-## 使用方法
+## 用法
-您可以使用 Node.js、`npx` 或作为独立可执行文件(如果您已打包)来运行 CLI 工具。
+你可以使用 Node.js、`npx` 或作为独立可执行文件(如果你已经打包它)来运行 CLI 工具。
### 使用 Node.js
@@ -91,54 +91,54 @@ npx ai-markdown-translator -u https://gitee.com/h7ml/ai-markdown-translator/raw/
## 选项
-- `--input`, `-i`: 输入 Markdown 文件或目录(替代 `--url`)。此选项允许您指定要翻译的 Markdown 文件或目录的路径。
-- `--url`, `-u`: 要翻译的 Markdown 文件的 URL(替代 `--input`)。使用此选项提供您想要翻译的 Markdown 文件的直接链接。
+- `--input`, `-i`: 输入的 Markdown 文件或目录(替代 `--url`)。此选项允许你指定要翻译的 Markdown 文件或目录的路径。
+- `--url`, `-u`: 要翻译的 Markdown 文件的 URL(替代 `--input`)。使用此选项提供要翻译的 Markdown 文件的直接链接。
-- `--extension`, `-e`: 指定要翻译的文件扩展名(例如,`md`)。如果未提供,将处理所有文件。此选项允许您根据文件的扩展名过滤要翻译的文件。
+- `--extension`, `-e`: 指定要翻译的文件扩展名(例如,`md`)。如果未提供,将处理所有文件。此选项允许你根据文件扩展名过滤要翻译的文件。
-- `--rename`: 是否修改文件名。如果为 true,则输出文件将命名为 `<原文件名>-translated.<扩展名>`。此选项允许您指定是否希望在翻译后的文件名后附加后缀。
+- `--rename`: 是否修改文件名。如果为真,输出文件将命名为 `<原始文件名>-translated.<扩展名>`。此选项允许你指定是否希望在翻译后的文件名中附加后缀。
-- `--output`, `-o`: 输出 Markdown 文件(如果未提供,默认为输入文件名)。此选项允许您指定保存翻译内容的输出文件的名称。
+- `--output`, `-o`: 输出的 Markdown 文件(如果未提供,默认为输入文件名)。此选项允许你指定翻译内容保存输出文件的名称。
-- `--language`, `-l`: 翻译的目标语言(必需)。此选项指定您希望将 Markdown 内容翻译成的语言。
+- `--language`, `-l`: 翻译的目标语言(必填)。此选项指定你希望将 Markdown 内容翻译成的语言。
-- `--openai-url`: OpenAI API URL(默认:使用 `OPENAI_URL` 环境变量)。此选项允许您如有需要指定自定义的 OpenAI API URL。
+- `--openai-url`: OpenAI API URL(默认:使用 `OPENAI_URL` 环境变量)。此选项允许你在需要时指定 OpenAI API 的自定义 URL。
-- `--api-key`: OpenAI API 密钥(默认:使用 `API_KEY` 环境变量)。此选项用于提供您的 OpenAI API 密钥以进行身份验证。
+- `--api-key`: OpenAI API 密钥(默认:使用 `API_KEY` 环境变量)。此选项用于提供你的 OpenAI API 密钥以进行身份验证。
-- `--model`: 要使用的 OpenAI 模型(默认:使用 `MODEL` 环境变量或 `gpt-3.5-turbo`)。此选项允许您指定要用于翻译的 OpenAI 模型。
+- `--model`: 使用的 OpenAI 模型(默认:使用 `MODEL` 环境变量或 `gpt-3.5-turbo`)。此选项允许你指定要用于翻译的 OpenAI 模型。
- `--help`, `-h`: 显示帮助。此选项显示命令行工具的帮助信息。
- `--show-version`, `-v`: 显示版本。此选项显示工具的当前版本。
-> 注意:`--input` 和 `--url` 是互斥的;您必须提供其中一个。
+> 注意:`--input` 和 `--url` 是互斥的;你必须提供其中一个。
## 环境变量
-您可以设置以下环境变量,而不是将它们作为命令行参数传递:
+你可以设置以下环境变量,而不是作为命令行参数传递它们:
- `OPENAI_URL`: OpenAI API 的 URL。
-- `API_KEY`: 您的 OpenAI API 密钥。
+- `API_KEY`: 你的 OpenAI API 密钥。
- `MODEL`: 要使用的 OpenAI 模型(例如,`'gpt-3.5-turbo'`)。
-您可以在项目根目录中的 `.env` 文件中设置这些变量,或在 shell 中导出它们。
+你可以在项目根目录的 `.env` 文件中设置这些变量,或者在命令行中导出它们。
## 示例
-1. **将 Markdown 文件从英文翻译成西班牙文:**
+1. **将 Markdown 文件从英语翻译成西班牙语:**
```bash
npx ai-markdown-translator -i english.md -o spanish.md -l "西班牙语"
```
-2. **使用特定的 OpenAI 模型翻译:**
+2. **使用特定的 OpenAI 模型进行翻译:**
```bash
npx ai-markdown-translator -i input.md -o output.md -l "法语" --model "gpt-4"
```
-3. **使用自定义 OpenAI URL 和 API 密钥翻译:**
+3. **使用自定义 OpenAI URL 和 API 密钥进行翻译:**
```bash
npx ai-markdown-translator -i input.md -o output.md -l "德语" --openai-url "https://api.302.ai/v1/chat/completions" --api-key "sk-302-api-key"
@@ -168,7 +168,7 @@ npx ai-markdown-translator -i example.md -o translated_example.md -l "日语"
## Git 信息
-- **代码库**: [h7ml/ai-markdown-translator](https://github.com/h7ml/ai-markdown-translator)
+- **存储库**: [h7ml/ai-markdown-translator](https://github.com/h7ml/ai-markdown-translator)
- **问题**: [报告问题](https://github.com/h7ml/ai-markdown-translator/issues)
## 版本信息
@@ -178,12 +178,12 @@ npx ai-markdown-translator -i example.md -o translated_example.md -l "日语"
## CI 信息
-该项目使用 GitHub Actions 进行持续集成。CI 工作流包括:
+该项目使用 GitHub Actions 进行持续集成。CI 工作流程包括:
-- 使用 ESLint 对代码进行 linting
+- 使用 ESLint 对代码进行检测
- 运行测试(如果适用)
- 构建项目
-- 缓存依赖项以加快构建速度
+- 缓存依赖以加快构建速度
## 贡献
@@ -191,8 +191,8 @@ npx ai-markdown-translator -i example.md -o translated_example.md -l "日语"
## 支持
-如果您遇到任何问题或有任何疑问,请在此代码库中提交问题。
+如果你遇到任何问题或有任何疑问,请在此存储库中提出问题。
---
-这个版本将 `npx` 和独立可执行文件(`./ai-markdown-translator`)的使用示例整合为一个统一的部分。如果您希望进行任何进一步的调整,请告诉我!
\ No newline at end of file
+此版本将 `npx` 和独立可执行文件(`./ai-markdown-translator`)的用法示例合并为一个统一的部分。如需进一步调整,请告诉我!
\ No newline at end of file
diff --git a/package.json b/package.json
index 4a576d7..572fce9 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"main": "dist/index.js",
"type": "module",
"scripts": {
- "build": "tsc",
+ "build": "tsc && node ./scripts/copy.js",
"start": "node dist/index.js",
"lint": "eslint . --ext .ts",
"lint:fix": "eslint . --ext .ts --fix",
diff --git a/scripts/copy.js b/scripts/copy.js
new file mode 100644
index 0000000..f031424
--- /dev/null
+++ b/scripts/copy.js
@@ -0,0 +1,30 @@
+import fs from 'fs';
+import path from 'path';
+import { fileURLToPath } from 'url';
+
+// 将 import.meta.url 转换为文件路径
+const __filename = fileURLToPath(import.meta.url); // 当前脚本的文件路径
+const __dirname = path.dirname(__filename); // 当前文件所在目录
+
+const srcDir = path.join(__dirname, '../src'); // 源文件目录
+const distDir = path.join(__dirname, '../dist'); // 目标文件目录
+
+// 检查目标目录是否存在,如果不存在则创建
+if (!fs.existsSync(distDir)) {
+ fs.mkdirSync(distDir, { recursive: true }); // 递归创建目标目录
+}
+
+// 遍历 src 目录下的所有 Markdown 文件
+const files = fs.readdirSync(srcDir);
+files.forEach((file) => {
+ const filePath = path.join(srcDir, file);
+
+ // 检查是否是 .md 文件
+ if (path.extname(file) === '.md') {
+ const destPath = path.join(distDir, file); // 目标文件路径
+
+ // 复制文件
+ fs.copyFileSync(filePath, destPath);
+ console.log(`已复制文件 ${file} 到 ${distDir}`);
+ }
+});
diff --git a/src/assistant.md b/src/assistant.md
new file mode 100644
index 0000000..01bf3ca
--- /dev/null
+++ b/src/assistant.md
@@ -0,0 +1,199 @@
+### **Frontend Languages**
+
+#### **HTML**
+
+```html
+
+
+
+
+ Hello, World!
+
+
+
+ Hello, World!
+
+
+```
+
+#### **CSS**
+
+```css
+/* Set styles for the h1 element in HTML */
+h1 {
+ color: blue; /* Text color is blue */
+ text-align: center; /* Text is centered */
+}
+```
+
+#### **JavaScript**
+
+```javascript
+// Output "Hello, World!" to the browser's console
+console.log('Hello, World!');
+```
+
+#### **TypeScript**
+
+```typescript
+// Output "Hello, World!" in TypeScript
+let message: string = 'Hello, World!'; // Declare a string variable
+console.log(message); // Print to the console
+```
+
+#### **Vue.js**
+
+```javascript
+// Vue.js usage, display "Hello, World!" on the page
+const app = Vue.createApp({
+ data() {
+ return {
+ message: 'Hello, World!',
+ };
+ },
+});
+app.mount('#app');
+```
+
+Corresponding HTML:
+
+```html
+{{ message }}
+```
+
+---
+
+### **Backend Languages**
+
+#### **Node.js (JavaScript)**
+
+```javascript
+// Create a simple server with Node.js and return "Hello, World!"
+const http = require('http');
+
+// Create server
+http
+ .createServer((req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' }); // Set response header to text
+ res.end('Hello, World!\n'); // Return "Hello, World!"
+ })
+ .listen(3000);
+
+console.log('Server running at http://localhost:3000');
+```
+
+#### **Python**
+
+```python
+# Output "Hello, World!" to the terminal
+print("Hello, World!")
+```
+
+#### **Django (Python Web Framework)**
+
+View code:
+
+```python
+from django.http import HttpResponse
+
+# Define a view function that returns "Hello, World!"
+def hello_world(request):
+ return HttpResponse("Hello, World!")
+```
+
+#### **Java**
+
+```java
+// Output "Hello, World!" to the terminal
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!"); // Use standard output
+ }
+}
+```
+
+#### **Kotlin**
+
+```kotlin
+// Output "Hello, World!" to the terminal
+fun main() {
+ println("Hello, World!") // Print function in Kotlin
+}
+```
+
+#### **PHP**
+
+```php
+
+```
+
+#### **Ruby**
+
+```ruby
+# Output "Hello, World!" to the terminal
+puts "Hello, World!"
+```
+
+#### **Go**
+
+```go
+// Output "Hello, World!" to the terminal
+package main
+
+import "fmt"
+
+func main() {
+ fmt.Println("Hello, World!") // Print string
+}
+```
+
+#### **C#**
+
+```csharp
+// Output "Hello, World!" to the terminal
+using System;
+
+class Program {
+ static void Main() {
+ Console.WriteLine("Hello, World!"); // Print string
+ }
+}
+```
+
+#### **Rust**
+
+```rust
+// Output "Hello, World!" to the terminal
+fn main() {
+ println!("Hello, World!"); // Print to standard output
+}
+```
+
+#### **Swift**
+
+```swift
+// Output "Hello, World!" to the terminal
+print("Hello, World!") // Print function in Swift
+```
+
+#### **PHP Laravel (Backend Framework)**
+
+Controller example:
+
+```php
+// Return "Hello, World!" in the Laravel framework
+Route::get('/', function () {
+ return 'Hello, World!';
+});
+```
+
+---
+
+### **SQL**
+
+```sql
+-- Simple query example, returns 'Hello, World!'
+SELECT 'Hello, World!';
\ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
index 45efc9f..42a3e00 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -8,9 +8,12 @@ import { hideBin } from 'yargs/helpers';
import * as path from 'path';
import * as os from 'os';
import * as glob from 'glob';
+import { fileURLToPath } from 'url';
config();
+const __filename = fileURLToPath(import.meta.url); // 当前脚本的文件路径
+const __dirname = path.dirname(__filename); // 当前文件所在目录
// 添加常量配置
const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB
const ALLOWED_CONTENT_TYPES = [
@@ -61,6 +64,11 @@ function writeMarkdownFile(filePath: string, content: string): void {
fs.writeFileSync(filePath, content, 'utf-8');
}
+async function getFileContent(fileName: string): Promise {
+ const filePath = path.join(__dirname, fileName);
+ return fs.readFileSync(filePath, 'utf-8');
+}
+
async function getDefaultApiKey(): Promise {
try {
const response = await axios({
@@ -100,11 +108,18 @@ async function translateText(
'Content-Type': 'application/json',
};
- const prompt = `将以下文本翻译成${targetLanguage}。请保持Markdown语法不变:\n\n${text}`;
-
+ const prompt = `将以下文本翻译成${targetLanguage}。请保持格式不变:\n\n${text}`;
+ const systemContent = await getFileContent('system.md');
+ const translateContent = await getFileContent('translate.md');
+ const assistantContent = await getFileContent('assistant.md');
const data = {
model: model,
- messages: [{ role: 'user', content: prompt }],
+ messages: [
+ { role: 'system', content: systemContent },
+ { role: 'user', content: `请将以下文本翻译成英文。请保持格式不变:\n\n${translateContent}` },
+ { role: 'assistant', content: assistantContent },
+ { role: 'user', content: prompt },
+ ],
};
try {
const response = await axios.post(openaiUrl, data, { headers });
diff --git a/src/system.md b/src/system.md
new file mode 100644
index 0000000..7bbb7da
--- /dev/null
+++ b/src/system.md
@@ -0,0 +1,44 @@
+# Role: 翻译助手
+
+你是一个翻译助手,请将用户提供的文本翻译成指定语言。请保持格式不变。
+
+## Profile
+
+- 语言: 中文
+- 翻译语言: 英文
+- 翻译格式: 保持格式不变
+
+## Goal
+
+- 请将用户提供的文本翻译成指定语言。请保持格式不变。
+- 确保翻译后的文本与原文的格式一致。
+- 避免翻译错误,确保翻译的准确性。
+- 保持原有的格式,包括代码块、列表、表格等。
+- 如果原文中包含代码,请将代码中的文字和注释翻译成指定语言。
+
+## Skills
+
+- 精通多种语言的翻译,包括但不限于中文、英文、日文、韩文等。
+- 熟悉多种语言的语法和用法。
+- 熟悉多种语言的翻译格式和习惯。
+- 熟悉多种语言的翻译技巧和方法。
+
+## Constraints
+
+- 请不要翻译代码中的变量名。
+- 请不要翻译代码中的函数名。
+- 请不要翻译代码中的类名。
+- 请不要翻译代码中的模块名。
+- 请不要翻译代码块中的标签。
+
+## Workflow
+
+- 请按照以下步骤进行翻译:
+ 1. 阅读用户提供的文本。
+ 2. 理解用户提供的文本的含义。
+ 3. 将用户提供的文本翻译成指定语言。
+ 4. 保持原有的格式,包括代码块、列表、表格等。
+
+## Instructions
+
+作为翻译助手。我已经准备好翻译用户提供的文本。
diff --git a/src/translate.md b/src/translate.md
new file mode 100644
index 0000000..93f4caf
--- /dev/null
+++ b/src/translate.md
@@ -0,0 +1,200 @@
+### **前端语言**
+
+#### **HTML**
+
+```html
+
+
+
+
+ Hello, World!
+
+
+
+ Hello, World!
+
+
+```
+
+#### **CSS**
+
+```css
+/* 为HTML中的h1元素设置样式 */
+h1 {
+ color: blue; /* 文本颜色为蓝色 */
+ text-align: center; /* 文本居中 */
+}
+```
+
+#### **JavaScript**
+
+```javascript
+// 输出 "Hello, World!" 在浏览器的控制台中
+console.log('Hello, World!');
+```
+
+#### **TypeScript**
+
+```typescript
+// TypeScript 中输出 "Hello, World!"
+let message: string = 'Hello, World!'; // 声明一个字符串变量
+console.log(message); // 打印到控制台
+```
+
+#### **Vue.js**
+
+```javascript
+// Vue.js 用法,显示 "Hello, World!" 到页面
+const app = Vue.createApp({
+ data() {
+ return {
+ message: 'Hello, World!',
+ };
+ },
+});
+app.mount('#app');
+```
+
+对应的 HTML:
+
+```html
+{{ message }}
+```
+
+---
+
+### **后端语言**
+
+#### **Node.js (JavaScript)**
+
+```javascript
+// 使用Node.js创建简单服务器并返回 "Hello, World!"
+const http = require('http');
+
+// 创建服务器
+http
+ .createServer((req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' }); // 设置响应头为文本
+ res.end('Hello, World!\n'); // 返回 "Hello, World!"
+ })
+ .listen(3000);
+
+console.log('Server running at http://localhost:3000');
+```
+
+#### **Python**
+
+```python
+# 输出 "Hello, World!" 到终端
+print("Hello, World!")
+```
+
+#### **Django (Python Web Framework)**
+
+视图代码:
+
+```python
+from django.http import HttpResponse
+
+# 定义一个视图函数,返回 "Hello, World!"
+def hello_world(request):
+ return HttpResponse("Hello, World!")
+```
+
+#### **Java**
+
+```java
+// 输出 "Hello, World!" 到终端
+public class Main {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!"); // 使用标准输出
+ }
+}
+```
+
+#### **Kotlin**
+
+```kotlin
+// 输出 "Hello, World!" 到终端
+fun main() {
+ println("Hello, World!") // Kotlin 里的打印函数
+}
+```
+
+#### **PHP**
+
+```php
+
+```
+
+#### **Ruby**
+
+```ruby
+# 输出 "Hello, World!" 到终端
+puts "Hello, World!"
+```
+
+#### **Go**
+
+```go
+// 输出 "Hello, World!" 到终端
+package main
+
+import "fmt"
+
+func main() {
+ fmt.Println("Hello, World!") // 打印字符串
+}
+```
+
+#### **C#**
+
+```csharp
+// 输出 "Hello, World!" 到终端
+using System;
+
+class Program {
+ static void Main() {
+ Console.WriteLine("Hello, World!"); // 打印字符串
+ }
+}
+```
+
+#### **Rust**
+
+```rust
+// 输出 "Hello, World!" 到终端
+fn main() {
+ println!("Hello, World!"); // 打印到标准输出
+}
+```
+
+#### **Swift**
+
+```swift
+// 输出 "Hello, World!" 到终端
+print("Hello, World!") // Swift 的打印函数
+```
+
+#### **PHP Laravel(后端框架)**
+
+控制器示例:
+
+```php
+// 在 Laravel 框架中返回 "Hello, World!"
+Route::get('/', function () {
+ return 'Hello, World!';
+});
+```
+
+---
+
+### **SQL**
+
+```sql
+-- 简单查询示例,返回 'Hello, World!'
+SELECT 'Hello, World!';
+```
diff --git a/translate/system.md b/translate/system.md
new file mode 100644
index 0000000..e42c846
--- /dev/null
+++ b/translate/system.md
@@ -0,0 +1,44 @@
+# Role: Translation Assistant
+
+You are a translation assistant. Please translate the text provided by the user into the specified language. Maintain the original format.
+
+## Profile
+
+- Language: Chinese
+- Target Language: English
+- Translation Format: Maintain the original format
+
+## Goal
+
+- Translate the text provided by the user into the specified language. Maintain the original format.
+- Ensure the translated text is consistent with the format of the original text.
+- Avoid translation errors and ensure translation accuracy.
+- Retain the original format, including code blocks, lists, tables, etc.
+- If the original text includes code, translate the text and comments within the code into the specified language.
+
+## Skills
+
+- Proficient in translating multiple languages, including but not limited to Chinese, English, Japanese, Korean, etc.
+- Familiar with the grammar and usage of multiple languages.
+- Accustomed to translation formats and conventions of various languages.
+- Knowledgeable about translation techniques and methods for multiple languages.
+
+## Constraints
+
+- Do not translate variable names in the code.
+- Do not translate function names in the code.
+- Do not translate class names in the code.
+- Do not translate module names in the code.
+- Do not translate tags within code blocks.
+
+## Workflow
+
+- Follow these steps to perform the translation:
+ 1. Read the text provided by the user.
+ 2. Understand the meaning of the text provided by the user.
+ 3. Translate the text provided by the user into the specified language.
+ 4. Retain the original format, including code blocks, lists, tables, etc.
+
+## Instructions
+
+As a translation assistant, I am ready to translate the text provided by the user.
\ No newline at end of file