我使用的是 Microsoft 服务的 Translator 插件。如果帖子内容过长,翻译会失败并出现以下错误:
此帖子过长,无法通过翻译器进行翻译。
能否请您实现按段落翻译的功能,以绕过此问题?
我使用的是 Microsoft 服务的 Translator 插件。如果帖子内容过长,翻译会失败并出现以下错误:
此帖子过长,无法通过翻译器进行翻译。
能否请您实现按段落翻译的功能,以绕过此问题?
这是谷歌翻译的正常限制,据我所知,字数上限大约在 500 字左右。
如果您经常遇到超过此限制的内容,可以考虑以下几种方案:
别忘了告诉我们哪种方法有效。
我使用的是 Microsoft API,而非 Google。
看起来 Microsoft 对单次请求有 10,000 字符的限制:Service limits - Translator - Foundry Tools | Microsoft Learn
我认为最简单的方法是按段落(使用"\r\n\r\n"或
)拆分帖子,前提是假设每个段落不会超过 10,000 个字符?
我还没用过微软翻译,所以在这方面你比我领先——不过我怀疑理论上方法应该是一样的。
我喜欢你关于解析段落换行的想法,但我不确定是否应该假设每份文档都使用 CR/LF 换行符。Unix 系统仅使用 LF 字符,Mac 仅使用 CR 字符,Windows 则两者都用。其他文档甚至可能使用空字节作为行尾字符。
Unicode 也带来了自身的问题,因为每个字符都是两个字节长。
可能的解决方案:检查前一两句话中的换行符,将其存储为一个值,然后在解析文档之前将所有换行符统一转换为"\n"。文档处理完成后,可以自动恢复为正确的换行符格式。
一种方法是:向前扫描直到达到 10,000 个单词,然后向后扫描以找到段落换行处。将头指针置于当前块的开头,向前扫描,当找到 10,000 个单词之前的最后一个段落换行处时,设置尾指针。剪下该块,进行翻译,将其移至结果文档,将头指针移至尾指针位置,然后继续处理。
==============================
顺便提一下,翻译软件的效果可能非常糟糕,因为很多时候翻译结果对上下文极其敏感,包含俚语或专业术语。同样,某些特定行业或技能领域的技术术语或专有词汇——在许多情况下不应被翻译——却常常被严重误译。法律、医疗以及工程/技术类文档就是典型例子。
我曾将一份复杂的医疗文档(某人的脑部手术记录)分别通过两个不同的翻译工具——谷歌和 Yandex——尝试翻译成俄语。两份翻译的结果与其说是可读的文档,不如说更像是一盘糟糕的千层面!
@jharris1993,我猜你是在建议我来实现这个功能。不幸的是,我没有 Ruby 的开发经验,如果让我来做,会比有经验的人花费更长的时间。当然,我可以快速拼凑一个版本,但这样的代码不会被合并。
在我的论坛上,最常被请求的翻译任务是将技术帖从俄语翻译成英语。微软在这方面做得相当不错。
太棒了!
请问那是哪个论坛?如果它能实现英语到俄语的翻译,我可能会把下一份长而复杂的文档发过去试试!
翻译由 discourse-translator 插件执行。我原以为已将此主题发布在插件分类下,但它却未被分类。