跳转到主要内容

一个用于管理和自动翻译的工具,支持OpenAI和PO文件

项目描述

ai18n - 基于AI的PO翻译工具包

ai18n

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

通用命令

  1. 翻译缺失的字符串:运行此命令以使用OpenAI填写缺失的翻译

    ai18n translate --po-files-folder <path-to-po-files> --batch-size 10 --temperature 0.5
    
  2. 生成翻译报告:了解翻译了多少字符串和单词

    ai18n report
    
  3. PO/YAML管理:

    • 拉取:将翻译从PO文件加载到YAML内存中。

      ai18n po-pull
      
    • 推送:将翻译从YAML推送到PO文件。

      ai18n po-push
      
  4. 清除AI翻译:从YAML文件中清除所有AI生成的翻译

    ai18n flush-ai
    

开发设置与贡献

  1. 克隆仓库并安装运行和开发所需的依赖项

    pip install -r requirements.txt
    pip install -r requirements-dev.txt
    pip install -e .
    
  2. 设置您的 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 查看哈希值)

上传时间 Python 3

由以下机构支持