Ссылка на исходный язык с веб-страницы, переведенной Google

У меня есть сайт клиента, на котором мы размещаем ссылки на Google Translate с помощью значков флажков. Я хотел бы предоставить ссылку на исходный язык (английский) из переведенного результата.

Вы можете увидеть, что у меня есть в действии, в правом верхнем углу любой страницы по адресу 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";

?>

РЕДАКТИРОВАТЬ: Вещи, которые я безуспешно пробовал с момента публикации:

  • Обертывание различных вещей в диапазоне «без перевода».
  • Использование jQuery, чтобы попытаться переписать URL-адрес «обратной ссылки».
  • Использование jQuery для перехвата щелчка «обратной ссылки» и перезаписи родительского фрейма.

person da5id    schedule 23.09.2012    source источник
comment
На всякий случай, если кто-то посмотрит на сайт и задастся вопросом о несоответствии: после того, как я попробовал различные решения jQuery (ни одно из которых не работает), я пока отказался и отключил флаг и ссылку возврата.   -  person da5id    schedule 24.09.2012


Ответы (1)


Итак, я смог решить вашу проблему с помощью 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 ждет, когда на нее щелкнут. После нажатия страница будет перенаправлена ​​на исходную непереведенную версию вашего сайта. Также он передает параметр get с именем untranslate, потому что перенаправление передает HTTP_REFERER translate.google.

person chrislondon    schedule 06.06.2013