一个用于管理和自动翻译的工具,支持OpenAI和PO文件
项目描述
ai18n - 基于AI的PO翻译工具包
ai18n 是一个工具包,使您能够基于 GNU gettext框架 来处理翻译,同时增强您的 .po
文件。它集成了OpenAI API,可以手动或作为CI/CD管道的一部分自动进行翻译。
主要功能
- AI翻译:使用OpenAI模型(如
gpt-4
)自动生成缺失的翻译。 - PO/YAML同步:在YAML文件中集中管理翻译,同时保持传统的
.po
文件同步。 - 自定义报告:生成报告,显示跨语言和文件的翻译覆盖率。
- CLI界面:易于使用的命令行界面,用于翻译、同步和报告翻译。
- 非破坏性工作流程:原始翻译保持不变,AI建议添加在顶部,您控制将其合并回
.po
文件。
工作原理
通过简单的CLI,ai18n
可以将现有的 .po
文件加载到内存中,调用OpenAI API生成缺失或错误的翻译,并将进度保存到中央YAML文件中。然后,您可以选择在需要时将这些AI生成的翻译合并回您的 .po
文件。
框架是 非破坏性的——您的原始翻译被保留,AI生成的翻译按增量添加。您可以根据需要完全控制将它们合并到您的 .po
文件中。
使用方法
配置
虽然您可以将其中一些作为参数传递给命令,但我们建议您通过设置这些环境变量来准备环境
# Set your target locales
export AI18N_TARGET_LANGUAGES=ar,de,es,fr,it,ja,ko,nl,pt,pt_BR,ru,sk,sl,tr,uk,zh,zh_TW
# Tell ai18n where your PO files are located
export AI18N_PO_FOLDER_ROOT="./translations/"
# This will be embedded into our prompt for extra context about your application / use cases
export AI18N_PROMPT_EXTRA_CONTEXT="These translation are part of Apache Superset, a Business Intelligence data exploration, visualization and dashboard open source application"
# If you want alter / customize the jinja template used to prompt AI
export AI18N_TEMPLATE_FOLDER="./templates/"
# Where your big yaml file with all your translations live
export AI18N_YAML_FILE=$AI18N_PO_FOLDER_ROOT/ai18n.yml
通用命令
-
翻译缺失的字符串:运行此命令以使用OpenAI填写缺失的翻译
ai18n translate --po-files-folder <path-to-po-files> --batch-size 10 --temperature 0.5
-
生成翻译报告:了解翻译了多少字符串和单词
ai18n report
-
PO/YAML管理:
-
拉取:将翻译从PO文件加载到YAML内存中。
ai18n po-pull
-
推送:将翻译从YAML推送到PO文件。
ai18n po-push
-
-
清除AI翻译:从YAML文件中清除所有AI生成的翻译
ai18n flush-ai
开发设置与贡献
-
克隆仓库并安装运行和开发所需的依赖项
pip install -r requirements.txt pip install -r requirements-dev.txt pip install -e .
-
设置您的 OpenAI API 密钥
export OPENAI_API_KEY=<your-openai-api-key>
许可
ai18n 目前由 Preset 独家所有,但如果最终证明它不是一个很大的差异化因素,它最终可能成为开源软件。
作者
由 Apache Superset 背后的团队构建,最初为满足其多语言支持需求而量身定制,但可以适应任何使用 PO 文件进行翻译的项目。
示例/默认提示
Translate the following text for the UI of Apache Superset, a web-based business intelligence software.
This is in the context of a .po file, so please follow the appropriate formatting for pluralization if needed.
Other language translations are provided as a reference where available, but they may need improvement or correction.
Ensure the translation is appropriate for a technical audience and aligns with common UI/UX terminology.
Instructions:
- Provide the output in JSON format (no markdown) with the language code as a key and the translated string as the value.
- Provide translations for the following languages: ['sl', 'sk', 'pt_BR', 'ja', 'it', 'zh_TW', 'ru', 'pt', 'zh', 'uk', 'ar', 'nl', 'de', 'ko', 'fr', 'es', 'tr']
- Follow the pluralization rules for the target language if applicable.
- Only pass the key to overwrite if your translation is significantly better than the existing one.
Original string to translate: 'Could not fetch all saved charts'
Existing translations for reference:
sl: 'Vseh shranjenih grafikonov ni bilo mogoče pridobiti'
pt_BR: 'Não foi possível obter todos os gráficos salvos'
ja: '保存したすべてのチャートを取得できませんでした'
it: 'Non posso connettermi al server'
nl: 'Kon niet alle opgeslagen grafieken ophalen'
de: 'Nicht alle gespeicherten Diagramme konnten abgerufen werden'
fr: 'Impossible de récupérer tous les graphiques sauvegardés'
es: 'No se pudieron cargar todos los gráficos guardados'
tr: 'Tüm kayıtlı grafikler getirilemedi'
待办事项
- 通用/自定义 Jinja 模板
- 语言 linting
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源分发
ai18n-0.1.0.tar.gz (16.9 kB 查看哈希值)
构建分发
ai18n-0.1.0-py3-none-any.whl (14.8 kB 查看哈希值)
关闭
ai18n-0.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e4ede5776e09b9ba3f691a854b889dd7a441bf0fc3474812e2209d8510275a54 |
|
MD5 | 78a7ae59ddc0f2696c77d779c786469d |
|
BLAKE2b-256 | 74fd594f3b45eac890b6dda8b218bfe5eb6101a06384d80b9cd59c3f3bce794f |
关闭
ai18n-0.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 63b5f115953f1588674d144bedb70275a878c9b810eece227c38f3addd12aa07 |
|
MD5 | 07e7f99999d975cb21df46ccf92a3450 |
|
BLAKE2b-256 | bad3015fae58c190ce71ee3d1525b9bbd669738b49b5d99107626f88b7a82226 |