在开发个人项目时,写 README 文件一直是一件很头疼的事情,所幸辛苦写完了,想做个多语言版本更头疼,为了解决整个痛点,写了个 python + GPT 脚本,将这一切自动化处理了。
源码:https://github.com/dlzmoe/translate-README
在根目录下新建俩文件 .env
和 translate_md.py
:
OPENAI_URL=https://api.openai.com/v1/chat/completions
API_KEY=your_api_key_here
MODEL=gpt-4o-mini
INPUT_FILE=README.md
OUTPUT_FILE=README_EN.md
TARGET_LANGUAGE=en
个人是比较喜欢 gpt-4o-mini
这个模型,功能足够覆盖我日常使用,生成速度快,对 token 的消耗也比较低,作图生文、理解性也都是前排水平。
# translate_md.py
import os
import requests
from dotenv import load_dotenv
# 加载 .env 文件中的环境变量
load_dotenv()
# 配置选项
OPENAI_URL = os.getenv("OPENAI_URL")
API_KEY = os.getenv("API_KEY")
MODEL = os.getenv("MODEL")
INPUT_FILE = os.getenv("INPUT_FILE")
OUTPUT_FILE = os.getenv("OUTPUT_FILE")
TARGET_LANGUAGE = os.getenv("TARGET_LANGUAGE")
def read_markdown_file(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
return file.read()
def write_markdown_file(file_path, content):
with open(file_path, 'w', encoding='utf-8') as file:
file.write(content)
def translate_text(text):
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
prompt = f"Translate the following text to {TARGET_LANGUAGE} Markdown syntax is not preserved :\n\n{text}"
data = {
"model": MODEL,
"messages": [{"role": "user", "content": prompt}]
}
response = requests.post(OPENAI_URL, headers=headers, json=data)
if response.status_code == 200:
return response.json()['choices'][0]['message']['content']
else:
print(f"Error: {response.status_code} - {response.text}")
return None
def main():
if not os.path.exists(INPUT_FILE):
print(f"Input file {INPUT_FILE} does not exist.")
return
# 读取 Markdown 文件
markdown_content = read_markdown_file(INPUT_FILE)
# 去除头尾的 ``` 语法
# 这里假设 markdown_content 的开头和结尾没有其他内容,只是代码块
if markdown_content.startswith('```'):
markdown_content = markdown_content[3:].strip()
if markdown_content.endswith('```'):
markdown_content = markdown_content[:-3].strip()
# 翻译文本
translated_content = translate_text(markdown_content)
if translated_content:
# 写入翻译后的内容到输出文件
write_markdown_file(OUTPUT_FILE, translated_content)
print(f"Translation completed. Output saved to {OUTPUT_FILE}.")
else:
print("Translation failed.")
if __name__ == "__main__":
main()
文件创建完成后安装一下依赖:
pip install requests
pip install python-dotenv
直接运行即可:
py translate_md.py