javascript - 如何在网站上使用谷歌翻译而不使用组合框更改语言?

标签 javascript html translation google-translate

我想在我的网站上添加多语言功能,因此我添加了谷歌翻译工具 ( Translate Tool ),但我想仅在用户单击页面中的按钮时而不是在用户单击页面中的按钮时翻译网站使用组合!有没有办法在单击按钮时自动更改组合的值?

这是翻译工具的代码:

 <div id="google_translate_element"></div><script type="text/javascript">
      function googleTranslateElementInit() {
      new google.translate.TranslateElement({ pageLanguage: 'it', autoDisplay: false },'google_translate_element');
                                         }
 </script>
 <script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

我正在尝试更改包含语言的值。

<script>
window.onclick = function() {
    var container = document.getElementById('google_translate_element');
    var select = container.getElementsByTagName('select')[0];
    select.value="en";
}
</script>

此代码有效,所选值发生变化,但仅此而已!该页面未翻译。我想我必须验证这个操作!有人知道我该怎么做吗?

最佳答案

我为一个开源项目创建了一个 PHP 类:

---//google_translate.php 的源代码//----

<?php

class google_translate{

    public $original_language;
    public $translate;
    public $domain;


    function __construct ($original_language, $translate, $domain){
        $this->original_language = $original_language;      
        $this->translate = $translate;
        $this->domain = $domain;
    }   

    function translate(){


        $url = "http://translate.googleusercontent.com/translate_c?act=url&depth=1&hl=" . $this->original_language;
        $url .= "&ie=UTF8&prev=_t&rurl=translate.google.com&sl=" .  $this->original_language;
        $url .= "&tl=". $this->translate;
        $url .= "&u=" . $this->domain;


        echo "<script language=\"javascript\">document.location=\"$url\"</script>";             


    }


}
?>

---//google_translate.php 的源代码//----

该脚本与另一个名为translate.php 的脚本结合使用。

---//translate.php 源代码//----

<?php


include_once("include/google_translate.php");
?>
<form method="post">
<table width="640" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><img src="images/language/choose_your_language.jpg" width="640" height="360" /></td>
  </tr>
    <tr>
    <td valign="top" align="left">
    <select name="language">
    <?php echo $default_language; ?>
        <option value="ar">Arabic</option>
        <option value="be">Belarusian</option>
        <option value="bn">Bengali</option>
        <option value="bs">Bosnian</option>
        <option value="bg">Bulgarian</option>
        <option value="ca">Catalan</option>
        <option value="zh-CN">Chinese (China)</option>
        <option value="zh-TW">Chinese (Taiwan)</option>
        <option value="hr">Croatian</option>
        <option value="cs">Czech</option>
        <option value="da">Danish</option>
        <option value="nl">Dutch</option>
        <option value="en">English</option>
        <option value="fil">Filipino</option>
        <option value="fi">Finnish</option>
        <option value="fr">French</option>
        <option value="de">German</option>
        <option value="el">Greek</option>
        <option value="gu">Gujarati</option>
        <option value="he">Hebrew</option>
        <option value="hi">Hindi</option>
        <option value="hu">Hungarian</option>
        <option value="id">Indonesian</option>
        <option value="it">Italian</option>
        <option value="ja">Japanese</option>
        <option value="kn">Kannada</option>
        <option value="ko">Korean</option>
        <option value="lv">Latvian</option>
        <option value="lt">Lithuanian</option>
       <option value="mr">Marathi</option>       
        <option value="no">Norwegian</option>
        <option value="fa">Persian</option>
        <option value="pl">Polish</option>
        <option value="pt-BR">Portuguese (Brazil)</option>
        <option value="pt-PT">Portuguese (Portugal)</option>
        <option value="ro">Romanian</option>
        <option value="ru">Russian</option>
        <option value="sr">Serbian</option>
        <option value="sk">Slovak</option>
        <option value="sl">Slovenian</option>
        <option value="es">Spanish</option>
        <option value="sv">Swedish</option>
        <option value="sw">Swahili</option>
        <option value="ta">Tamil</option>
        <option value="te">Telugu</option>
        <option value="th">Thai</option>
        <option value="tr">Turkish</option>
        <option value="uk">Ukrainian</option>
        <option value="vi">Vietnamese</option>
      </select>
    </td>   
    </tr>
    <tr>
     <td valign="top" align="left">
      <input name="submit" type="submit" value="Translate" /></td>
  </tr>
 </table>
</form>

---//translate.php 源代码//----

下面您可以看到如何在 Horizo​​n QCMS 中使用它的代码示例:

---//如何使用代码//----

<?php

include_once('translate.php');

# Google translator
# script generated with Horizon QCMS 4


if(isset($_POST['submit'])){

    $language='en';
    $translate = new google_translate('en', $_POST['language'], 'http://www.hnqcms.com/wiki/');
    $translate->translate();
}

---//如何使用代码//----

可以在这里找到一个工作示例: http://www.hnqcms.com/wiki/index-page-28-category-28.html

P.s.您当然可以稍微调整脚本,以便用户不必单击“提交”按钮。

关于javascript - 如何在网站上使用谷歌翻译而不使用组合框更改语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20998646/

相关文章:

javascript - 从数组中提取不重复的随机图像

javascript - AJAX : How to make loaded page appear below the page that calls it

codeigniter - 如何翻译 CodeIgniter 上的上传错误

google-chrome-extension - 禁用 javascript 的 chrome 翻译

javascript - 如何以 utf-16 编码 JavaScript 字符串?

javascript - 使表格适合屏幕? (JQueryMobile/ Cordova )

javascript - 一个js文件中定义的函数在另一个js文件中未定义

javascript - html中的嵌套消息

html - 强制 IE9 进入浏览器兼容性 View

symfony - 如何设置基于注解的路由转换?