【问题标题】:JavaScript/jQuery - Get text and translate itJavaScript/jQuery - 获取文本并翻译它
【发布时间】:2011-07-20 06:37:36
【问题描述】:

是否可以使用 jQuery 从元素中获取文本并将其翻译成其他语言?

之前

<p>Hello</p>

之后

<p>bonjour</p>

【问题讨论】:

  • 这不是内置的 jQuery 功能。您必须有某种可以调用的翻译 API。
  • 我不会选择自动翻译。它可能导致丑陋的沟通不畅。根据个人经验。

标签: javascript jquery api google-translate


【解决方案1】:

使用这个 JQuery 插件 https://github.com/tinoni/translate.js

免责声明:我是作者

1 - 在您要翻译的文本中包含“trn”类:

<span class="trn">text to translate</span>

2 - 定义字典:

var dict = {
  "text to translate": {
    pt: "texto para traduzir"
  },
  "Download plugin": {
    pt: "Descarregar plugin",
    en: "Download plugin"
  }
}

3 - 翻译整个页面正文:

var translator = $('body').translate({lang: "en", t: dict}); //use English

4 - 更改为另一种语言:

translator.lang("pt"); //change to Portuguese

【讨论】:

  • 我需要一个简单页面的简单解决方案,它不依赖于谷歌翻译的粗俗翻译,所以这对我来说是首选。谢谢!
【解决方案2】:

使用谷歌翻译 API。使用方便。以下将西班牙语翻译成英语。要在其他语言之间进行翻译,只需更改 'es''en'

&lt;div id="content"&gt;&lt;/div&gt;

google.load("language", "1");

function initialize() {
    var content = document.getElementById('content');
    content.innerHTML = '<div id="text">Hola, me alegro mucho de verte.<\/div><div id="translation"/>';
    var text = document.getElementById("text").innerHTML;
    google.language.translate(text, 'es', 'en', function(result) {
        var translated = document.getElementById("translation");
        if (result.translation) {
            translated.innerHTML = result.translation;
        }
    });
}
google.setOnLoadCallback(initialize);

http://jsfiddle.net/wJ2QP/1/查看工作示例

【讨论】:

  • 小提琴现在坏了。
  • Fiddle 中使用的 Google 翻译 API 已停用。
【解决方案3】:

【讨论】:

  • 同样的答案。您需要加载谷歌翻译 API 并使用它,我链接到文档。
【解决方案4】:

使用 Bing 翻译器,因为免费的 Google Translate API 已于 2011 年 12 月 1 日停止使用

【讨论】:

  • 我认为必应翻译器已经不存在了
【解决方案5】:

您可以使用谷歌翻译的 Javascript API。

<p id="some">Hello</p>
<input id="trans" value="Translate" type="button">

<script>
   $('#trans').click(function() {
     google.language.translate($('#some').html(), 'en', 'fr', function(result) {
         $('#some').html(result.translation);
     });
   });
</script>

您需要在页面的 HEAD 部分加载 js 库才能使用 API。

【讨论】:

    【解决方案6】:

    在这个 PHP/JS 解决方案中,您应该使用包含 PHP 语言文件在 session/cookie 上设置语言,而不是在 $_GET 上。为了简单我会在

    index.php 文件

    <?php
    $lang = $_GET['lang'];
    
    if ($lang == 'fr'){
        $w = array(
            'Trouvé',
            ' non trouvé.',
            'Erreur. Veuillez réessayer.'
        );  
    }else if($lang == 'en'){
        $w = array(
            'Found',
            ' not found.',
            'Error. Please try again.'
        );  
    }else{
        $w = array(
            'Trouvé',
            ' non trouvé.',
            'Erreur. Veuillez réessayer.'
        );  
    }
    ?>
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
    ....................
    <body>
    ....................
        <script type="text/javascript">
            /*  Translate JS
                Declare JS variables for translation in PHP file as below (Global vars outside $(document).ready). 
                Inside JS file call the variable as $.lang_mynamespace.var_name
            */
            $.lang_scan = { 
                found_js:"<?=$w[0];?>",
                not_found_js:"<?=$w[1];?>",
                error_js:"<?=$w[2];?>"
            };  
        </script>
    </body>
    </html>
    

    JS 文件

    $(function() {
        $("#scan_result").on('change', function(){
    
            //check number
            $.ajax({
                url: "check.php",
                dataType: "json",
                type: "post",
                data: {'scan_no': scan_value} ,
                success: function (response) {
                    if (response.status == true){
                        alert("Scan no. " + response.scan_no + $.lang_scan.found_js);
                    }else{
                        alert("Scan no. " + response.scan_no + $.lang_scan.not_found_js);                      
                    }
                },
                error: function(jqXHR, textStatus, errorThrown) {
                   //ajax error 
                   alert($.lang_scan.error_js);            
                }
            }); 
    
        }); 
    });
    

    check.php 返回一个 json

    {"scan_no": "123", "status": true/false}
    

    【讨论】:

      【解决方案7】:

      为什么不试试这个:

      var body = $("body");
      var html = body.html();
      var nhtml = html.split(" ");
      var dict = [];
      for (var i = 0; i < nhtml.length; i++) {
          nhtml[i].replace(dict[index]);
      }
      

      它可以代替任何东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-27
        • 1970-01-01
        • 2011-12-06
        相关资源
        最近更新 更多