Google переводчик. Что это и как это использовать

Виктор Кон
В мире с каждым днем все больше людей пользуются интернетом. Для некоторых -- это просто окно в мир, для других -- это уже необходимый инструмент в работе. Интернет дает доступ к огромному количеству информации. Что касается музыки и картинок, то тут нет барьеров. А вот слова ... Для многих весь мир ограничивается только ресурсами своей страны, а точнее своего языка, так как тексты на других языках непонятны. Так было еще несколько лет назад. Но все стремительно меняется. Компания Гугл (Google) сделала проблему онлайн перевода текстов с одного языка на другой одним из своих приоритетов.

Когда все это началось сказать трудно, наверно попытки автоматического перевода текстов с одного языка на другой начались сразу после изобретения компьютеров, а затем и интернета. Первоначально компания Гугл использовала программу SYSTRAN, которую использовали и другие сервисы онлайн перевода, например, Yahoo или AOL. Эта система не работала с арабскими, китайским и русским языками. Но с октября 2007 года Гугл переводчик (по английски Google Translate или сокращенно GT) стал разрабатывать свой собственный подход к проблеме быстрого перевода. На русскоязычном сайте компании [1] можно узнать, что в момент написания этих строк GT способен переводить сайты на русский язык с 80 иностранных языков.

Конечно, важное значение имеет качество перевода. Как утверждается, для наиболее распространенных языков оно уже вполне приличное, начиная примерно с 2010 года. По крайней мере, уже реально можно понять о чем было написано, то есть текст имеет смысл. Важную роль сыграло также увеличение быстродействия компьютеров и скорости интернета. Во всяком случае, в 2014 году уже разумно пробовать пользоваться онлайн переводом. Я помню, что у меня одно время браузер Гугл Хром сам предлагал переводить сайты, написанные на языках, отличных от русского. Это было похоже на рекламную кампания, и она сильно мешала работе.

Чтобы от этого избавиться приходилось в настройках выбирать "настройки > дополнительные > язык" и снимать галочку с услуги -- предлагать перевод страниц на иностранных языках. Сейчас я у себя в Хроме это не замечаю, но если галочка в настройках стоит, то при условии, что курсор мыши стоит на сайте с иностранным языком, в меню правой кнопки мыши появляется строка "Перевести на русский". И любой иностранный сайт можно перевести на свой родной язык за пару секунд. Но это все же не так красиво и не все это знают.

Любому сайто-писателю хочется поставить на сайт кнопочку или ссылку с предложением перевести сайт на любой язык. Даже русскому автору интересно как будет выглядеть его сайт на иностранных языках. На сайте [1] есть ссылка "Переводчик сайтов". Если пройти по этой ссылке, но на новой странице появится кнопка "Добавить на сайт". Там требуют на первом этапе: указать URL адрес вашего сайта и язык вашего сайта, на втором этапе: на какие языки переводить, то есть можно на все, а можно -- только на выбранные, где и в каком виде разместить кнопку. Там же стоит галочка против услуги -- автоматически показывать панель перевода, если язык сайта отличается от языка пользователя. Галочку, можно снять и я снял. Затем я нажал кнопку "Получить код" и мне дали код, который надо поставить на сайт.

Код состоит из двух частей. В первой части стоит тег

<meta name="google-translate-customization" content="00000000"></meta>

в котором вместо нулей стоит уникальный номер именно для указанного вами сайта. Я его не показываю, так как мне дали свой номер, и другим он не подойдет. А во второй части стоит код, который я немного изменил, чтобы было компактнее. Не люблю я длинных слов.

<div id="gte"></div>
<script type="text/javascript">function gteInit() {new google.translate.TranslateElement({pageLanguage: 'ru'}, 'gte');}</script>
<script type="text/javascript"
Для полноты сообщаю, что в исходном коде вместо 'gte' было написано 'google_translate_element', а вместо 'gteInit' было написано 'googleTranslateElementInit'.

Я замечу, что возможны варианты, и их много. Если все оставить как есть, то на сайте, в том месте, где вы поставите пустой тег div появится кнопка меню с предложением выбрать язык, под ней будет ссылка на сайт [2], то есть на основной англоязычный сайт переводчика Гугл, а меню будет на русском языке и вертикальное. Если же после слов <pageLanguage: 'ru'> добавить вот такой текст

, layout: google.translate.TranslateElement.InlineLayout.SIMPLE

то ссылка на сайт будет в виде небольшой картинки слева от кнопки, а меню будет в виде таблицы и снова на русском языке. Запятая необходима, чтобы отделить второй параметр от первого. Вместо указанного параметра можно использовать такой же, но с заменой слова SIMPLE на HORIZONTAL. В этом случае ссылка на сайт [2] будет на одной линии с кнопкой, а меню будет снова вертикальное.

В этом же месте можно еще добавить слова

, includedLanguages: 'de,en,fr,it'

При этом вместо всех языков будет предлагаться перевод из списка только указанных языков. Языки кодируются двумя буквами. Полный список кодировок я приводить не буду, так как не считаю разумным это делать. Даже если на ваш сайт придет всего один китаец за год, все равно разумно предложить ему перевод. Дискриминация совсем не нужна. Правда стоит сказать, что в длинном списке найти нужный язык не просто, но это ведь не надо делать много раз.

В этом же месте можно еще добавить слова

, autoDisplay: false

Что они означают можно узнать практически, но мне это сделать пока не удалось. Есть и другие параметры, которые можно указать явно, но и компактная форма вполне удобна.

К сожалению, это все что предлагается на сайте GT. И это многих не устраивает. Какие главные неудобства такого бесплатного сервиса? Первое: после перевода на сайте появляется толстая панель-строка самого переводчика, которая по сути совсем не нужна, потому что ничего нового она не предлагает. Она написана на исходном языке сайта (русском), там есть мониторинг перевода, а после окончания процесса она вторично предлагает то же самое меню. И там есть кнопка возврата на родной язык, но и это можно спокойно сделать и без нее. Там же есть ссылка на сайт управления переводом, но и это редко необходимо. Строку можно убрать руками, кликнув крестик справа, но это некрасиво.

Во-вторых, меню тоже на русском. Но иностранцы могут его не понять, а ведь перевод предлагается именно им. Более разумно было бы предлагать выбирать форму выбора языков произвольно, включая и то, сколько языков ставить, и то, на каком языке писать меню. Да и саму форму выбора языка хотелось бы настраивать самостоятельно. В интернете можно найти много советов как все это делается. Так, например, вместо меню можно рисовать таблицу флагов, чтобы при выборе нужного флага сайт переводился на язык флага. Но это тоже неудобно, так как не все знают флаги разных стран. А если делать подсказки, то процедура выбора усложняется.

Как со всем этим бороться каждый решает в меру своей компетентности. Первоначально GT давал для вэб мастеров инструменты (API) по настройке переводчика. Но в мае 2011 года они решили от этого отказаться и не поддерживать такой способ работы. Однако, многие разработчики, которые уже вовсю использовали сервис, стали писать письма с возмущением и против такого поворота событий. Тогда Гугл пошел на попятную, сервис оставил, но сделал его платным. Причина отказа от API была очевидна. Ведь автоматический перевод -- это огромная нагрузка на сервер, а выгоды для компании никакой. Пусть хоть реклама стоит.

Ниже я расскажу что лично мне удалось узнать. А пока обсудим указанный выше код. Первую часть кода -- тэг <meta ...> надо ставить внутри тега head, который не показывается на сайте. Ничего не случится, если его не поставить. Это просто информация для сервера или для браузера как надо показывать сайт. В данном случае он играет вот какую роль. Гугл переводчик предлагает очень затратный сервис. Для каждого сайта индивидуально можно указать конкретный перевод конкретных фраз и это будет учтено при автоматическом переводе. Стоит указать хотя бы один сайт, и у вас уже возникает ваш аккаунт по настройке перевода. На нем вы можете работать с уже подключенными сайтами или добавить новые. 

Я проделал процедуру дважды для двух своих сайтов. Интересно, что второй раз я вернулся на шаг назад в браузере и попал на страницу с уже вбитым адресом моего первого сайта. Моментально появилась надпись "Ошибка ! Такой сайт уже существует". Пришлось поменять адрес. А если теперь снова на сайте [1] выбрать ссылку "Переводчик сайтов", то первоначально меня направляют на настройку перевода моих сайтов (у меня уже два) и только там есть кнопка "Добавить на сайт". Настраивать автоматический перевод сайта на все языки -- не очень понятно кому это по силам. Вот я знаю английский язык. Я могу еще как-то помочь с переводом на английский. А все остальные языки, включая китайский, я не знаю и помочь ничем не могу.

Если же отказаться от настройки перевода, то на сайт [1] ходить не обязательно. Достаточно поставить на сайт в теге body вторую часть кода, то есть пустой тег div и два тега script. При этом кнопка появится на сайте и будет работать. Вторая часть кода совершенно универсальная, и подписывать свой сайт для ее работы вовсе не требуется. Но вопросы еще остаются. А как все таки сделать так, чтобы панель GT не выскакивала при переводе. Оказывается, что способ есть. Но я не нашел ни одного сайта, где это бы описывалось в явном виде. Есть только готовые сайты, код которых можно посмотреть, а потом понять как это делается. И есть сайт, который дает этот код [4].

Так вот, для того, чтобы панель GT не появлялась, необходимо добавить несколько запретов в CSS форматирование, то есть в тег style. А можно и новый тег открыть. Вот какой код надо добавить внутрь тега head

<style type="text/css">
#goog-gt-tt {display:none !important;}
.goog-te-banner-frame {display:none !important;}
.goog-te-menu-value:hover {text-decoration:none !important;}
body {top:0 !important;}
</style>

Даже не имеет никакого смысла объяснять что значит этот код. Достаточно его поставить как написано и баннера не будет. Впрочем и так легко догадаться. Параметр

{display:none!important;}

означает "не показывать" и то, что эта инструкция имеет приоритет по отношению к другим таким же инструкциям, но без "!important". Очевидно, что данное форматирование насильно отменяет то форматирование, которое добавляется сервисом GT. Это уже намного лучше.

А как все таки поменять вид меню выбора языков? Например, сделать его на английском языке. Способ есть, но на этот раз я покажу как это делается неявным образом. Во-первых, надо добавить достаточно большой и малопонятный кусок джаваскрипт кода, который является универсальным и его даже смотреть не обязательно. Я его в тексте статьи показывать не буду, а дам ссылку на страницу, где он записан на моем сайте [3]. Есть два способа его использовать, либо скопировать файл и перенести его себе на сайт. Либо просто дать ссылку на мой файл вот так

<script type="text/javascript"
Эту строчку надо добавить внутрь тега head. Если перенести файл на свой сайт, то можно сделать относительную ссылку. Далее, внутрь указанного выше тега style надо добавить еще одну инструкцию

#gte {display:none!important;}

На этот раз ее смысл ясен: она запрещает показ стандартной кнопки меню, которую ставит Гугл переводчик. Осталось написать свое меню на английском языке в том месте куда вы хотите поставить кнопку. Разумно ее ставить на самой верхней строке сайта, чтобы ее хорошо было видно. Это значит, что ее надо поставить сразу после тега body. Вот код собственной кнопки меню.

<p>   <b>To read the site in other language please   </b>
<select onchange="doGTranslate(this);">
<option value="">Select Language</option>
<option value="ru|ru">Russian</option>
<option value="ru|af">Afrikaans</option>
<option value="ru|sq">Albanian</option>
<option value="ru|ar">Arabic</option>
<option value="ru|hy">Armenian</option>
<option value="ru|az">Azerbaijani</option>
<option value="ru|eu">Basque</option>
<option value="ru|be">Belarusian</option>
<option value="ru|bg">Bulgarian</option>
<option value="ru|ca">Catalan</option>
<option value="ru|zh-CN">Chinese (Simplified)</option>
<option value="ru|zh-TW">Chinese (Traditional)</option>
<option value="ru|hr">Croatian</option>
<option value="ru|cs">Czech</option>
<option value="ru|da">Danish</option>
<option value="ru|nl">Dutch</option>
<option value="ru|en">English</option>
<option value="ru|et">Estonian</option>
<option value="ru|tl">Filipino</option>
<option value="ru|fi">Finnish</option>
<option value="ru|fr">French</option>
<option value="ru|gl">Galician</option>
<option value="ru|ka">Georgian</option>
<option value="ru|de">German</option>
<option value="ru|el">Greek</option>
<option value="ru|ht">Haitian Creole</option>
<option value="ru|iw">Hebrew</option>
<option value="ru|hi">Hindi</option>
<option value="ru|hu">Hungarian</option>
<option value="ru|is">Icelandic</option>
<option value="ru|id">Indonesian</option>
<option value="ru|ga">Irish</option>
<option value="ru|it">Italian</option>
<option value="ru|ja">Japanese</option>
<option value="ru|ko">Korean</option>
<option value="ru|lv">Latvian</option>
<option value="ru|lt">Lithuanian</option>
<option value="ru|mk">Macedonian</option>
<option value="ru|ms">Malay</option>
<option value="ru|mt">Maltese</option>
<option value="ru|no">Norwegian</option>
<option value="ru|fa">Persian</option>
<option value="ru|pl">Polish</option>
<option value="ru|pt">Portuguese</option>
<option value="ru|ro">Romanian</option>
<option value="ru|sr">Serbian</option>
<option value="ru|sk">Slovak</option>
<option value="ru|sl">Slovenian</option>
<option value="ru|es">Spanish</option>
<option value="ru|sw">Swahili</option>
<option value="ru|sv">Swedish</option>
<option value="ru|th">Thai</option>
<option value="ru|tr">Turkish</option>
<option value="ru|uk">Ukrainian</option>
<option value="ru|ur">Urdu</option>
<option value="ru|vi">Vietnamese</option>
<option value="ru|cy">Welsh</option>
<option value="ru|yi">Yiddish</option>
</select></p>

Выше записано меню на 58 языков. Чтобы убрать какие-то языки достаточно уничтожить соответствующую строку. А чтобы добавить язык надо добавить строку, но нужно знать как ее правильно записать. Вот и все. Если кому это нравится, то для привлечения внимания к кнопке можно также поставить картинку с флагами  до или после текста. Но выбирать все же удобнее из списка. Чтобы кнопка имела нужный вид текста надо отформатировать тег select.

А теперь несколько слов о том как работает GT. Вопрос не праздный, потому что сайт -- это очень много вариантов показа. Итак, если на сайте просто текст, то перевод делается и нет проблем. Причем переводятся даже сайты на локальном компьютере при условии, что есть интернет. Однако существует возможность подставлять текст из постороннего файла с расширением js, в котором может быть сформирована строка кода code, а затем на сайте в теге div эта строка добавлена командой джаваскрипт id.innerHTML=code; Практика показала, что такая динамическая загрузка сайта для переводчика не помеха. Все отлично переводится, причем даже на локальном сайте.

Более того, даже в анимациях, когда разные тексты появляются и сменяют друг друга через определенные промежутки времени, тоже все переводится. В момент смены текста он сначала появляется на русском языке, а через какое-то время переводится на английский.

Но есть еще более сложная возможность, а именно тег <iframe>, в окне которого можно показывать посторонние сайты. Оказалось, что на локальных сайтах содержимое этого тега не переводится. Но если перенести сайт на сервер, то переводятся и такие сайты. То есть можно даже не ставить переводчик на какой-то сайт, а просто поставить этот сайт в окно iframe на другом сайте, который переводится, и можно увидеть перевод. Тут еще очень большое поле для экспериментов.

Когда я впервые увидел, что iframe не переводится, я даже решил, что это хорошо, потому что всегда есть такой текст, который переводить не хочется. Например, на персональном сайте фамилия, имя и отчество хозяина сайта, а также место его работы или профессия. Переводчик Гугл не может перевести такие тексты адекватно. Пока что я не придумал ничего лучше, как поместить такие тексты на картинку.

Более детальный анализ показал, что и в интернете в теге <iframe> переводятся только разные страницы одного и того же сайта. Страницы других сайтов не переводятся. По этой причине показать на сайте другие сайты с переводом никак не получится. Соответственно, приходится воздерживаться от такой практики. Видимо, это связано в политикой переводчика. Если автор чужого сайта не хочет, чтобы его переводили, то нельзя давать другим такую возможность. Возможной причиной может являться и то, что это трудно сделать технически. 

А что касается более качественного перевода сайта на фиксированные языки, то можно взять перевод GT, скопировать его себе в файл и потом отредактировать как полагается. А затем записать альтернативную версию сайта на другом языке, которую показывать по кнопке или по ссылке. Так переводили сайты в прошлом. Я, правда, сначала писал свой сайт сразу на английском языке, а потом долго переводил его на русский, а по английски писать перестал. Мне кажется, что ручной перевод сайтов скоро станет таким же устаревшим методом как перьевые авторучки, грампластинки и все то, что устарело. Человек не может выучить 80 языков, а Google Translate уже может.

Хоть и не хочется говорить о грустном, но я заметил и проколы. При переводе меняются теги форматирования. Например, GT не признает тег <br> внутри тега <td>. Он его игнорирует и при переводе не ставит. Наверно, это правильно, нечего пользоваться устаревшими методами форматирования. И еще одна особенность -- совсем не переводятся тексты внутри тега <textarea>, ни на локальном компьютере, ни на сервере. И это наверно правильно. Этот тег предназначен для записи программ и их входных данных, все тексты там не должны меняться по определению. Тем, что использует данный тег не по прямому его назначению, необходимо перестроить свой сайт до того, как ставить переводчик. Как раз мне и пришлось это сделать.

Ссылки         

[1] https://translate.google.ru
[2] https://translate.google.com
[3] http://kohnvict.ucoz.ru/js/goog-trans.js
[4] http://gtranslate.net