Custom MT 模块
该模块可帮助您连接 Crowdin 尚不支持的机器翻译引擎。 创建此类应用后,您就可以使用连接的 MT 对内容进行自动翻译,或将 MT 提出的翻译建议显示在编辑器中供翻译人员使用。
您可以将此模块的访问权限授予以下用户类别之一:
对于 Crowdin:
- 仅限我自己(即项目所有者)
- 所有项目成员
- 选定用户
对于 Crowdin Enterprise:
- 仅限组织管理员
- 组织项目中的所有用户
- 选定用户
{ "modules": { "custom-mt": [ { "key": "custom-mt", "name": "Custom MT", "logo": "/logo.png", "url": "/translate", "withContext": true, "batchSize": 10, "splitStringsIntoChunks": true } ] }}key | 类型: 必填: 是 描述: Crowdin 应用内的模块标识符。 |
name | 类型: 必填: 是 描述: 模块的可读名称。 |
logo | 类型: 必填: 是 描述: 将在 Crowdin 界面中显示的自定义 MT 徽标的相对 URL。 |
url | 类型: 必填: 是 描述: 将与 Crowdin 集成的模块内容页面的相对 URL。 |
withContext | 类型: 必填: 否 描述: 将随字符串一起发送的附加元数据。 |
batchSize | 类型: 必填: 否 描述: 在一次请求中可发送到 Custom MT 应用的字符串最大数量。 |
splitStringsIntoChunks | 类型: 必填: 否 默认值: 描述: 控制批量处理。 如果设置为 |
environments | 类型: 允许值: 描述: 可安装该模块的环境集合。 |
系统使用 url 发送待翻译文本,然后应用处理这些文本并以两种可能的响应类型之一返回给系统:无错误和有错误。
HTTP 请求:
https://{AppBaseUrl}/translate/?source=en&target=uk&project_id=727186&jwtToken={yourTokenValue}source | 类型: 描述: 源语言。 |
target | 类型: 描述: 目标语言。 |
project_id | 类型: 描述: Crowdin 项目的数字标识符。 |
jwtToken | 类型: 描述: 用于授权的 JWT 令牌。 |
strings | 类型: 描述: 需要翻译的源字符串。 |
默认情况下,Crowdin 将源字符串拆分为较小的块(splitStringsIntoChunks: true)以优化处理时间并管理请求大小。
但是,某些现代 MT 引擎和 AI 提供商(如 XL8 或 LLM)需要文件的完整上下文才能生成高质量的翻译。 这对于字幕(SRT)或文学内容等格式尤为重要,因为在这些格式中,一个句子的翻译在很大程度上依赖于前一个句子。
如果您要连接支持基于文件或文档级别翻译的引擎:
- 在清单中将
splitStringsIntoChunks设置为false。 - Crowdin 将在一次请求中发送属于单个文件的所有字符串。
对于包含不可翻译元素(例如标签、占位符等)的字符串,Crowdin 会将这些元素替换为特殊的 notranslate 标签。 这确保了这些元素在字符串被 MT 引擎翻译后保持其原始状态。 Crowdin 使用这种方法来避免可能破坏导出翻译文件的潜在问题。
以下是字符串修改前后的示例。
以下是包含不可翻译元素(标签、占位符等)的字符串示例 在 Crowdin 中的显示效果:
<strong>任务:</strong>以下是 Crowdin 在将上述字符串发送到 MT 引擎之前对其进行修改的方式:
<span class="notranslate">0</span>任务:<span class="notranslate">1</span>如果您的 MT 引擎已有类似功能但实现方式与 Crowdin 不同,我们建议在您的 Custom MT 应用中调整不可翻译元素的处理方式,以匹配您的 MT 引擎的实现。 具体来说,将 Crowdin 的默认值替换,例如
<span class="notranslate">%index%</span>替换为特定于您的 MT 引擎的禁止翻译元素。
您可以在此处查看 Amazon Translate 中禁止翻译元素的实现示例:在 Amazon Translate 中使用禁止翻译。
如果 MT 引擎向 Crowdin 发送的翻译未包含所有原始状态的标签,或标签以某种方式被更改(例如被翻译),Crowdin 将忽略此类翻译,不会将其保存到字符串中。
请求载荷示例:
{ "strings": [ "Save as...", "New file", "You received one message.", "You received {number} messages." ]}要使用扩展请求,请将 withContext 参数添加到您的 Custom MT 模块。
请求载荷示例:
{ "strings": [ { "id": 1, "projectId": 727186, "fileId": 47047, "text": "Save as...", "identifier": "save_as", "context": "translation Context", "maxLength": 15, "isHidden": false, "isPlural": false, "pluralForm": null },36 collapsed lines
{ "id": 2, "projectId": 727186, "fileId": 47047, "text": "New file", "identifier": "new_file", "context": "translation Context", "maxLength": null, "isHidden": false, "isPlural": false, "pluralForm": null }, { "id": 3, "projectId": 727186, "fileId": 47047, "text": "You received one new message.", "identifier": "new_message", "context": "translation Context", "maxLength": null, "isHidden": false, "isPlural": true, "pluralForm": "one" }, { "id": 3, "projectId": 727186, "fileId": 47047, "text": "You received {number} new messages.", "identifier": "new_message", "context": "translation Context", "maxLength": null, "isHidden": false, "isPlural": true, "pluralForm": "other" } ]}响应载荷示例:
{ "data": { "translations": [ "Зберегти як...", "Новий файл", "Ви отримали одне нове повідомлення.", "Ви отримали {number} нових повідомлень." ] }}响应载荷示例:
{ "error": { "message": "Error message from the App or MT engine" }}应用返回的响应结构应与所提供的示例一致,否则 Crowdin 将视其为无效。