en de fr es ja it pt

18 августа 2009 г.

Перевод блога blogspot с помощью Google Translator

Недавно я прочитал пост Автоматический перевод блога на Blogspot с помощью Google translate. Идея мне понравилась, но представленная там реализация по каким-то причинам отказывалась у меня работать. В итоге был написан свой код, который, как вы можете заметить по флагам в правом верхнем углу, успешно работает.

Update 24.9.10 - Новый способ, без JavaScript

Во первых, раз уж всеравно придется использовать Javascript для получения ссылки на текущую страницу, я создал следующую функцию:
function translate(to,img) {
document.write('<a href="http://www.google.com/translate?gl=ru&ie=UTF8&u='+location.href+'&langpair=ru|'+to+'"><img src='+img+' border=0 width=30 height=20 alt='+to+'></a>&nbsp;');


* This source code was highlighted with Source Code Highlighter.

Но blospot отказался принимать такой код в шаблоне, видимо путая js и html. Было два пути - либо разместить js на стороннем хостинге, либо попытаться обмануть парсер блогспота. Первый вариант мне сразу не понравился - слишком многие сейчас пользуются Firefox'ом и Noscript к нему, тем самым они просто не увидят ничего. Пришлось закодировать код и оставить его на блогспоте, в итоге вставлять в шаблон нужно следующее:
<script>
function translate(to,img) {
// Used some hack: unescape, because blogger don't want parse template with this javascript. Function only write link to google-translate.
document.write(unescape('%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D%2F%74%72%61%6E%73%6C%61%74%65%3F%67%6C%3D%72%75%26%69%65%3D%55%54%46%38%26%75%3D')+location.href+unescape('%26%6C%61%6E%67%70%61%69%72%3D%72%75%7C')+to+unescape('%22%3E%3C%69%6D%67%20%73%72%63%3D')+img+unescape('%20%62%6F%72%64%65%72%3D%30%20%77%69%64%74%68%3D%33%30%20%68%65%69%67%68%74%3D%32%30%20%61%6C%74%3D')+to+unescape('%3E%3C%2F%61%3E%26%6E%62%73%70%3B'));
}
</script>

* This source code was highlighted with Source Code Highlighter.



Теперь остается в нужном месте в шаблоне (где будут выводиться флаги-ссылки) вставить следующий код:
<script language='JavaScript'>
translate('en','http://lh6.ggpht.com/_vScVCDhZ52k/SnVjxOgAHXI/AAAAAAAAFpE/zs6DsKHq114/s144/United%20Kingdom%28Great%20Britain%29.png');
translate('fr','http://photos1.blogger.com/img/43/1633/320/13539949_e76af75976.jpg');
translate('de','http://photos1.blogger.com/img/43/1633/320/13539933_041ca1eda2.jpg');
translate('it','http://photos1.blogger.com/img/43/1633/320/13539953_0384ccecf9.jpg');
translate('pt','http://photos1.blogger.com/img/43/1633/320/13539966_0d09b410b5.jpg');
translate('es','http://photos1.blogger.com/img/43/1633/320/13539946_2fabed0dbf.jpg');
translate('ja','http://photos1.blogger.com/img/43/1633/320/13539955_925e6683c8.jpg');
translate('ko','http://photos1.blogger.com/img/43/1633/320/13539958_3c3b482c95.jpg');
translate('zh-CN','http://photos1.blogger.com/img/43/1633/320/14324441_5ca5ce3423.jpg');
translate('ar','http://farm4.static.flickr.com/3043/2347434064_0d36a04624_o.gif');
</script>


* This source code was highlighted with Source Code Highlighter.

О том, как добавить новое направление перевода думаю вопросов не возникнет.

5 комментариев:

  1. Спасибо, поставил себе.
    У Вас опечатка во втором скрипте. Там вместо 'zn-CN' надо написать 'zh-CN'

    ОтветитьУдалить
  2. спасибо за статью, только одна большая просьба - куда именно в шаблоне нужно вставлять?! я в этом деле абсолютный чайник =)

    ОтветитьУдалить
  3. вроде втулила в нужное место )) пока работает..еще раз спасибо!!

    ОтветитьУдалить
  4. Спасибо, вставил куда хотел без проблем ))
    Всё работает.

    ОтветитьУдалить