logotype

Перевод сайта с русского на другой язык.

Для создания сайта в разных языковых версиях я вижу два подхода:

  1. Создаём для каждой страницы несколько разноязычных версий. Если страницы генерятся скриптом, то все фразы можно засунуть в отдельный массив вида $text['ru']['title']="Привет", $text['en']['title']="Hello", $text['fr']['title']="Salut" и в момент генерации подставлять нужный язык. Хорошо если сам полиглот или есть кого заставить. А если хочется, что бы просто был перевод, пусть корявый, но зато на многих языках? Тогда переходим ко второму варианту.
  2. Машинный перевод. Не будем сейчас обсуждать его недостатки, они известны всем, кто им пользовался. Но у меня есть уверенность, что в тексте с общеупотребительной тематикой носитель языка вполне сможет разобраться со всеми завалами и корявостями. Дальнейший текст будет посвящён именно этому варианту.

Все указанные ниже факты являются справедливыми лишь на момент написания статьи. Для перевода нам понадобится online переводчик, мне известны только два: translate.ru & google.com; возможно стоит поискать переводчики на национальных сайтах.
Translate.ru даёт возможность перевести с русского на английский, немецкий, французский и испанский. Google только на английский и переводчик имеет статус БЕТА.
Translate позволяет поиграться со многими параметрами при переводе страницы, как то: кодировка входной и выходной страниц, перевод ссылок, транслитерация. Google никаких настроек не имеет транслетирирует незнакомые слова, кодировка переведённой страницы UTF-8 и переводит ссылки (переделывает адрес ссылок на себя, оригинальная ссылка присутствует в виде значения одного из параметров).
Переведённая страница придставляет из себя оригинал страницы с включённым текстовым блоком о том, что эта страница переведена с помощью translate или в случае google это будет страница с включёным фреймом содержащим переведённую страницу.

Я решил воспользоваться translate.ru, моя идея такова (использовался PHP):

  1. На странице имеются ссылки код для которых следующий:
    <?php
    $s_flag="http://".$_SERVER['SERVER_NAME'].(isset($_SERVER['SERVER_PORT'])&&$_SERVER['SERVER_PORT']!=80?":".$_SERVER['SERVER_PORT']:"").$_SERVER['REQUEST_URI'];
    ?>
    
    <a onclick="document.cookie='lang=ru; path=/'" href="">
    <img src="/image/flag-land/russia.gif" style="width:22px; height:20px" alt="Русский"/>
    </a>
    
    <a onclick="document.cookie='lang=re; path=/'" href="">
    <img src="/image/flag-land/grbretania.gif" style="width:22px; height:20px" alt="English"/>
    </a>
    
    <a onclick="document.cookie='lang=rg; path=/'" href="">
    <img src="/image/flag-land/germania.gif" style="width:22px; height:20px" alt="Deutch"/>
    </a>
    
    <a onclick="document.cookie='lang=rf; path=/'" href="">
    <img src="/image/flag-land/france.gif" style="width:22px; height:20px" alt="Francais"/>
    </a>
    
    <a onclick="document.cookie='lang=rs; path=/'" href="">
    <img src="/image/flag-land/ispania.gif" style="width:22px; height:20px" alt="Inspanyol"/>
    </a>
    
  2. И фрагмент кода обработчика перехода по ссылке
    <?php
    function translate ($url) {
    $handle = fopen($url, "rb");
    $contents = '';
    while (!feof($handle)) { $contents .= fread($handle, 8192); }
    fclose($handle);
    return $contents;
    }
    ob_start();
    ......
    if(isset($_COOKIE['lang'])&&strcmp($_COOKIE['lang'],"ru")!=0) {
    $s=$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    $s=str_replace("&","%26",$s);
    $s=str_replace("/","%2F",$s);
    $s=str_replace("?","%3F",$s);
    $s=str_replace("=","%3D",$s);
    $url="http://www.translate.ru/url/tran_url.asp?lang=ru&url=http%3A%2F%2F{$s}&direction={$_COOKIE['lang']}&template=General&cp1=NO&cp2=NO&transliterate=on&";
    $url.="psubmit2.x=".(rand(5,110))."&psubmit2.y=".(rand(3,20));
    
    echo translate($url);
    } .....
    ob_end_flush();
    ?>
    
Результат можете наблюдать прямо на этой странице, заодно и увидите как издевается переводчик над & (амперсанд).

Известные проблемы: пока мне известна только одна техническая проблема: Иногда переводчик отказывается работать и Вы можете наблюдать строки отладочной информации на экране, это может происходить и при переходе на несуществующую ссылку.

 

web-mastering &:   Андрей В. Сапожников
designer
web/sql-программирование, разработка скриптов и прочее
Copyleft 1998-2010


Последнее обновление сайта: 23.05.2011 21:38:31,
страницы: 16.12.2010 22:27:21

Rambler's Top100 Рейтинг@Mail.ru Яндекс цитирования