20

我正在管理页面上为博客创建帖子。我有一个法语 textarea 和一个英语 textarea。所以,对于那些不能自己翻译的人,我创建了一个“用谷歌翻译”按钮:

<a id="tr_textefr" href="http://translate.google.fr/#fr/en/" target="_blank">
  Traduire avec Google
</a>

我的法语 textarea 有一个名为的 javascript 函数onkeyup

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 ce soir ?”的 href 属性。 ”。该链接将重定向到我的文本的翻译版本(通过谷歌翻译)。

顺便说一句,这段代码可以正常工作。问题是我有时可以在我的文本中包含 bbcode:“Voulez-vous [b]coucher[/b] avec moi ce soir ?”。

那么,谷歌翻译有没有办法禁用某些单词或句子的翻译?例如,我不想翻译两个 @ 之间的单词:“Voulez-vous @[b]@coucher@[/b]@ avec moi ce soir ?”

4

3 回答 3

24

编辑(2020 年 9 月):似乎通过一些 API 更改,此解决方案不再适用(至少在网络上)。

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

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

例子

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

于 2013-04-11T23:13:33.010 回答
8

只需在您需要的地方添加 notranslate 类class="notranslate",谷歌翻译器不要碰它.. https://cloud.google.com/translate/v2/faq#technical

于 2014-11-11T07:36:19.187 回答
1

我想添加一种不翻译双引号之间的文本的简单方法是使用 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 类的跨度。

于 2021-09-11T05:55:15.963 回答