PO文件翻译管理服务器

一个用于管理和翻译.po文件的Model Context Protocol (MCP)服务器,提供加载、搜索、更新和管理翻译文件的全面工具集。

  • by snimshchikov
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 snimshchikov/translate-po-mcp

使用说明

翻译PO MCP服务器

用于管理和翻译.po(gettext)文件的模型上下文协议(MCP)服务器。此服务器提供了一套全面的工具,用于加载、搜索、更新和管理翻译文件。

特性

  • 加载翻译文件:加载单个.po文件或整个翻译文件目录
  • 搜索功能:高级搜索,支持正则表达式、区分大小写选项和过滤
  • 翻译管理:一次更新单个或多个翻译
  • 统计:获取详细的翻译统计数据(翻译、未翻译、模糊、过时)
  • 文件组织:按文件对翻译进行分组,并获取特定于文件的数据
  • 批量操作:高效处理多个翻译更新

安装

首先,使用pnpm安装依赖项(根据您的喜好):

pnpm install

构建

编译TypeScript代码:

pnpm run build

用法

该服务器作为MCP服务器运行,并通过stdio进行通信。它可以与任何兼容MCP的客户端集成。

可用工具

文件加载

  • load_po_file:加载单个.po文件
  • load_translation_project:从目录递归加载所有.po文件

搜索和发现

  • search_translations:具有多个条件的高级搜索
  • get_untranslated_strings:获取所有需要翻译的字符串
  • get_fuzzy_translations:获取所有模糊(需要审查)的翻译
  • get_file_translations:从特定文件获取所有翻译

翻译管理

  • update_translation:更新单个翻译
  • update_multiple_translations:批量更新多个翻译

统计和信息

  • get_translation_stats:获取翻译统计信息
  • get_translations_by_file:按文件对翻译进行分组
  • get_loaded_files:列出当前加载的所有文件

工具使用示例

加载翻译项目

{
  "name": "load_translation_project",
  "arguments": {
    "directory": "./locales"
  }
}

搜索翻译

{
  "name": "search_translations",
  "arguments": {
    "query": "welcome",
    "searchIn": "msgid",
    "caseSensitive": false,
    "includeUntranslated": true
  }
}

更新翻译

{
  "name": "update_translation",
  "arguments": {
    "filePath": "./locales/fr/messages.po",
    "msgid": "Welcome",
    "msgstr": "Bienvenue"
  }
}

获取翻译统计信息

{
  "name": "get_translation_stats",
  "arguments": {
    "filePath": "./locales/fr/messages.po"
  }
}

建筑

该项目遵循以下结构的关注点分离:

  • src/types/:TypeScript类型定义
  • src/services/POFileService.ts:低级PO文件操作
  • src/services/TranslationService.ts:高级翻译管理
  • src/index.ts:MCP服务器实现

类型安全

所有操作都是完全类型化的,具有全面的TypeScript接口:

  • TranslationEntry:个人翻译条目
  • POFile:完整的.po文件表示
  • SearchOptions:搜索配置
  • TranslationStats:统计信息
  • UpdateTranslationRequest:翻译更新请求

错误处理

服务器包括强大的错误处理功能:

  • 无效的文件路径将得到妥善处理
  • 报告格式错误的.po文件,并显示特定的错误消息
  • 正则表达式查询的搜索模式验证
  • 批量操作状态报告

发展

脚本

  • pnpm run build:编译TypeScript
  • pnpm run dev:观看模式编译
  • pnpm run start:运行已编译的服务器
  • pnpm run lint:运行ESLint
  • pnpm run format:使用Prettier格式化代码

依赖项

  • @modelcontextprotocol/sdk:用于服务器实现的MCP SDK
  • pofile:PO文件解析和操作
  • glob:用于查找的文件模式匹配

许可证

麻省理工学院