我正在使用python 2.7& django 1.7。
当我使用Google Translator Toolkit将我的.po文件机器翻译成另一种语言(英语到德语)时,由于在翻译标签中使用了不同的django模板变量,因此会出现许多错误。
我知道机器翻译不是很好,但我只想在测试页面上测试我的翻译字符串。
以下是从英语(en)翻译为德语(de)的机器翻译.po文件的典型错误示例。
#. Translators: {{ site_name_lowercase }} is a variable that does not require translation.
#: .\templates\users\reset_password_email_html.txt:47
#: .\templates\users\reset_password_email_txt.txt:18
#, python-format
msgid ""
"Once you've returned to %(site_name_lowercase)s.com, we will give you "
"instructions to reset your password."
msgstr "Sobald du mit% (site_name_lowercase) s.com zurückgegeben haben, geben wir Ihnen Anweisungen, um Ihr Passwort zurückzusetzen."
%(site_name_lowercase)s
机器已翻译为% (site_name_lowercase) s
,并且经常连接到预读字词,如上所示。
我有数百种这类错误,我估计这是一个发现&更换至少需要7个小时。另外,如果我制作消息然后再翻译.po文件,我将不得不通过查找并再次替换。
我希望Google Translator Toolkit中存在某种类型的未记录规则,允许机器翻译忽略变量。我已阅读Google Translator Toolkit文档并搜索了SO&谷歌,但没有找到任何可以帮助我的东西。
有人有任何建议吗?
答案 0 :(得分:3)
%(site_name_lowercase)被机器翻译为%(site_name_lowercase),并且通常连接到预读词,如上所示。
这是由翻译前的标记化引起的,然后是翻译后的去标记,即谷歌翻译尝试在翻译之前拆分输入,以便在翻译后重新合并。您使用的变量通常由标记生成器用于检测标记边界的字符组成。为避免此类问题,您可以预处理文件并使用没有此问题的占位符替换有问题的变量 - 我建议您尝试一些方法,例如: _VAR_PLACE_HOLDER_。重要的是不要使用任何可能导致标记生成器分割的标点符号。预处理后,通过将占位符替换为原始值来翻译新生成的文件和后处理。通常,您的占位符将被选为词典外(OOV)项目,并在翻译期间保留。尝试尝试包含序列号(以便在后处理期间跟踪占位符),因为可能会发生单词重新排序。曾经有一个用于Google Translate的科学API,可以为您提供令牌对齐。您也可以将它们用于后期处理。
请注意,此过程不会为您提供最佳的翻译输出,因为语言模型无法识别占位符。你可以在这里看到这个(用占位符,令牌" gelezen"在错误的地方):
如果您只想测试系统中的变量,而您不关心翻译质量,这是最快的方法。
如果您决定寻求更好的解决方案,您可以通过开发自己的机器翻译系统来解决这个问题(顺便说一句,请参阅http://www.statmt.org/moses/)并应用解释的程序以上,但随后使用例如Part-Of-Speech-Tags来改进语言模型。请注意,您也可以使用对齐信息。