2012-09-23 40 views
3

我有一個客戶的網站,我們提供通過標誌圖標鏈接到谷歌翻譯。我想從翻譯的結果中提供返回原始語言(英語)的鏈接。鏈接回到谷歌翻譯的網頁的原始語言

你可以看到我目前在任何頁面的右上角的行動在tesselaar.com

瞭如果你點擊其中一個標記,頁面被轉換和國旗圖標與更換英文版。我希望這個標誌鏈接回去,但正如你可以看到它不是因爲Google Translate正在重寫我給它的URL。有誰知道如何解決這個問題?

這裏是我的代碼:

<?php 

echo "<ul class=\"breadcrumb pull-right\">\n"; 

if (stripos($_SERVER['HTTP_REFERER'], "translate.google") !== false) { // page has been translated 

    if (empty($_SESSION['return_url'])) $_SESSION['return_url'] = "tesselaar.com"; 

    echo "<li>View page in English:</li>\n"; 
    echo "<li><a target=\"_top\" href=\"http://" . $_SESSION['return_url'] . "\"><img src=\"/assets/img/flags/gb.gif\" width=\"16\" height=\"11\" title=\"English\" alt=\"English\"></a></li>\n"; 

} else { // regular site (not translated) 

    $_SESSION['return_url'] = $_SERVER['REQUEST_URI']; 

    echo "<li>Translate this page:</li>\n"; 
    echo "<li><a href=\"http://translate.google.com/translate?sl=en&tl=fr&u=tesselaar.com". $_SERVER['REQUEST_URI'] . "\"><img src=\"/assets/img/flags/fr.gif\" width=\"16\" height=\"11\" alt=\"French\"></a></li>\n"; 
    echo "<li><a href=\"http://translate.google.com/translate?sl=en&tl=de&u=tesselaar.com". $_SERVER['REQUEST_URI'] . "\"><img src=\"/assets/img/flags/de.gif\" width=\"16\" height=\"11\" alt=\"German\"></a></li>\n"; 
    echo "<li><a href=\"http://translate.google.com/translate?sl=en&tl=nl&u=tesselaar.com". $_SERVER['REQUEST_URI'] . "\"><img src=\"/assets/img/flags/nl.gif\" width=\"16\" height=\"11\" alt=\"Dutch\"></a></li>\n"; 
    echo "<li><a href=\"http://translate.google.com/translate?sl=en&tl=es&u=tesselaar.com". $_SERVER['REQUEST_URI'] . "\"><img src=\"/assets/img/flags/es.gif\" width=\"16\" height=\"11\" alt=\"Spanish\"></a></li>\n"; 
    echo "<li><a href=\"http://translate.google.com/translate?sl=en&tl=el&u=tesselaar.com". $_SERVER['REQUEST_URI'] . "\"><img src=\"/assets/img/flags/gr.gif\" width=\"16\" height=\"11\" alt=\"Greek\"></a></li>\n"; 

} 

echo "</ul>\n\n"; 

?> 

編輯:事情我已經試過了,沒有成功,因爲發佈:

  • 結束語各種事情在 「notranslate」 新增跨度。
  • 使用jQuery嘗試重寫「鏈接返回」URL。
  • 使用jQuery攔截「鏈接回」單擊並重寫父框架。
+0

只是爲了防止任何人查看網站和奇蹟的差異:嘗試各種jQuery解決方案(其中沒有一個工作)後,我已經放棄了現在並禁用了國旗和返回鏈接。 – da5id

回答

2

所以我能用jQuery解決你的問題。這是我做過什麼:

<!-- inside your <head></head --> 
<script src="http://code.jquery.com/jquery-1.10.0.min.js"></script> 

<!-- inside your <body></body> --> 
<?php $requestUri = str_replace('untranslate', '', $_SERVER['REQUEST_URI']); ?> 
<ul class="breadcrumb pull-right"> 
    <?php if (stripos($_SERVER['HTTP_REFERER'], "translate.google") !== false && !isset($_GET['untranslate'])) : ?> 
     <li class="notranslate">View page in English:</li> 
     <li> 
      <a class="untranslate" href="#"> 
       <img src="/assets/img/flags/gb.gif" width="16" height="11" alt="English" /> 
      </a> 
     </li> 
    <?php else: ?> 
     <?php $uri = "http://translate.google.com/translate?sl=en&u=" . $_SERVER['HTTP_HOST']; ?> 
     <li>Translate this page:</li> 
     <li><a href="<?php echo $uri . $requestUri ?>&tl=fr"><img src="/assets/img/flags/fr.gif" width="16" height="11" alt="French" /></a></li> 
     <li><a href="<?php echo $uri . $requestUri ?>&tl=de"><img src="/assets/img/flags/ed.gif" width="16" height="11" alt="German" /></a></li> 
     <li><a href="<?php echo $uri . $requestUri ?>&tl=nl"><img src="/assets/img/flags/nl.gif" width="16" height="11" alt="Dutch" /></a></li> 
     <li><a href="<?php echo $uri . $requestUri ?>&tl=es"><img src="/assets/img/flags/es.gif" width="16" height="11" alt="Spanish" /></a></li> 
     <li><a href="<?php echo $uri . $requestUri ?>&tl=el"><img src="/assets/img/flags/gr.gif" width="16" height="11" alt="Greek" /></a></li> 
    <?php endif; ?> 
</ul> 

<!-- right before your </body> or remove <script></script> and place in different js file --> 
<script> 
    $('.untranslate').click(function() { 
     window.top.location = 'http://<?php echo $_SERVER['HTTP_HOST'] . $requestUri ?>?untranslate'; 
    }); 
</script> 

所以基本上沒有一個URL類.untranslate一個鏈接,然後jQuery的等待,要被點擊。點擊後,它會將頁面重定向到您網站的原始頁面未翻譯版本。它還傳遞一個名爲untranslate的get參數,因爲重定向傳遞了translate.google HTTP_REFERER。