谷歌翻译 - 禁止翻译我的部分文字
Posted
技术标签:
【中文标题】谷歌翻译 - 禁止翻译我的部分文字【英文标题】:Google translate - Disable translating of a part of my text 【发布时间】:2013-01-29 12:21:32 【问题描述】:我正在管理页面上为博客创建帖子。我有一个法语 textarea 和一个英语 textarea。所以,对于那些不能自己翻译的人,我创建了一个“用谷歌翻译”按钮:
<a id="tr_textefr" href="http://translate.google.fr/#fr/en/" target="_blank">
Traduire avec Google
</a>
我的法语 textarea 有一个名为 onkeyup
的 javascript 函数:
function translate(what)
var button = "tr_" + what;
var textarea = document.getElementById(what);
var google = "http://translate.google.fr/#fr/en/" + textarea.value;
document.getElementById(button).setAttribute('href', google);
例如,如果我写“Voulez-vous coucher avec moi ce soir ?”,它将更改“http://translate.google.fr/#fr/en/Voulez-vous coucher avec moi”的 href 属性ce soir 吗?”。该链接将重定向到我的文本的翻译版本(通过谷歌翻译)。
顺便说一句,这段代码运行良好。问题是我有时可能在我的文本中包含 bbcode:“Voulez-vous [b]coucher[/b] avec moi ce soir ?”。
那么,谷歌翻译有没有办法禁用某些单词或句子的翻译?例如,我不想翻译两个@之间的单词:“Voulez-vous @[b]@coucher@[/b]@ avec moi ce soir ?”
【问题讨论】:
【参考方案1】:编辑(2020 年 9 月):似乎通过一些 API 更改,此解决方案不再适用(至少在网络上)。
可以通过将字符串的某些部分包装在具有特定类值的<span>
标记中(如here 所述)来保护字符串的某些部分不被翻译:
<span class="notranslate">[bold]</span>
Example
此外,如果您不介意支付少量费用(每 100 万个字符 20 美元),Google Translate API 将为您提供更大的灵活性。
【讨论】:
我找不到所说的灵活性,但<span>
技巧有效。如果你能在没有标记的情况下取回翻译后的文本,那就太好了。
现在看来只要支付少量费用就可以使用谷歌翻译API了。您能否解释一下 API 改进的解决方案是什么?
该示例对我不起作用,因为我没有使用纯 html 文本。只需将文本放在段落之间:my text to translate[bold]
即可。 2019年 translate.google.com/… 检查这个,由于某些原因,它也对我有用。【参考方案2】:只需在您需要的地方添加 notranslate 类class="notranslate"
并且谷歌翻译器不要碰它..
https://cloud.google.com/translate/v2/faq#technical
【讨论】:
translate.google.com/… 检查这个,由于某些原因,它也对我有用。【参考方案3】:我想添加一个不翻译双引号之间的文本的简单方法是使用 for 循环。
var text = "This is the \"Word\" I dont want to translate.";
var splitText = text.Split(" ").ToList();
bool Found = false;
string temp = string.Empty;
for (int i = 0; i < splitText.Count; i++)
if (splitText[i].Contains("\"") && !Found)
splitText[i] = "<span class='notranslate'>" + splitText[i];
Found = true;
temp = splitText[i];
if (splitText[i].Contains("\"") && Found && splitText[i] != temp)
splitText[i] = splitText[i] + "</span>";
Found = false;
text = String.Join(" ", splitText).ToString();
如您所见,我在每个双引号中添加了一个带有 notranslate 类的 span。
【讨论】:
以上是关于谷歌翻译 - 禁止翻译我的部分文字的主要内容,如果未能解决你的问题,请参考以下文章