【问题标题】: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 ?”

【问题讨论】:

    标签: javascript html google-translate


    【解决方案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

    【讨论】:

    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多