谷歌翻译 - 禁止翻译我的部分文字

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 有一个名为 onkeyupjavascript 函数:

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 更改,此解决方案不再适用(至少在网络上)。

可以通过将字符串的某些部分包装在具有特定类值的&lt;span&gt; 标记中(如here 所述)来保护字符串的某些部分不被翻译:

<span class="notranslate">[bold]</span>

Example

此外,如果您不介意支付少量费用(每 100 万个字符 20 美元),Google Translate API 将为您提供更大的灵活性。

【讨论】:

我找不到所说的灵活性,但 &lt;span&gt; 技巧有效。如果你能在没有标记的情况下取回翻译后的文本,那就太好了。 现在看来只要支付少量费用就可以使用谷歌翻译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。

【讨论】:

以上是关于谷歌翻译 - 禁止翻译我的部分文字的主要内容,如果未能解决你的问题,请参考以下文章

谷歌在线翻译怎么用?

谷歌翻译被曝“辱华”?官方回应来了

请问谷歌是否有一种翻译工具可以语音的,然后即显示中英文字幕?因为我想下载一个可以语音的翻译工具,

检测谷歌浏览器翻译

谷歌在线翻译怎么用?

谷歌翻译在线翻译