Мультиязычность сайта aka google_translate API

+22
3.94K
Многие из вас хотели бы иметь англо-etc язычную копию вашего сайта. Мой пример — не лучшая тому реализация, но как говорится, за не имением лучшего и это подойдет.
Вот как будет выглядеть 2х языковая панелька(можно добавить все возможные) Иллюстрация

Реализовывать, как вы уже наверное поняли перевод сайта мы будем с помощью использования google.translate API.
Нам потребуется 2 js библиотеки: jquery-translate и jquery-cookie(пользователи ведь не попугаи, нужно запоминать их действия). Если хотите — можете взять библиотеки из мест их производства(1ая тут 2ую ищите), а можете скачать всё сразу собранное мной.

Данные библиотеки заливаем в любое удобное для вас место, я выбрал /template/мой_шаблон/js/.

Так же качаем картинки русского и англ. флагов и их аналогично заливаем в удобное для вас место, я залил в /images/

Ну что ж, теперь поиграемся с вашим шаблоном. Открываем /template/ваш_шаблон/template.php и в хедере(<head></head>) подключаем js библиотеки:
  1.  
  2. <script src="/templates/мой_шаблон/js/cookie.js" type="text/javascript"></script>
  3. <script src="/templates/мой_шаблон/js/lang.js" type="text/javascript"></script>
  4. <script src="/templates/мой_шаблон/js/translate.js" type="text/javascript"></script>
  5.  
Далее добавляем css блока с позицией absolute(аналогично в хедер):
  1.  
  2. <style>
  3. #flags2 {position:absolute; left:400px; top:0px; width:100px; font:bold 12px Tahoma; color:#fff; text-align:center; background-color:#333; padding:5px 0 7px 0; filter:alpha(opacity=55); opacity:0.55; -moz-opacity:0.55; -webkit-border-bottom-left-radius:7px; -webkit-border-bottom-right-radius:7px; -moz-border-radius-bottomleft:7px; -moz-border-radius-bottomright:7px; border-bottom-left-radius:7px; border-bottom-right-radius:7px;}
  4. #flags2:hover {filter:alpha(opacity=100); opacity:1.0; -moz-opacity:1.0;}
  5. .tops img {margin:0 0 -2px 0;}
  6. </style>
  7.  
можете конечно вкрутить его в .css файл style.css, как вам удобней.

Ну и финальный шаг, добавляем блок в любое место шаблона(можно сразу после открытия тела[body]):
  1.  
  2. <div id="flags2" class="flags2">
  3. <span id="english"><a href=""><img src="/images/eng.png" alt="Translate to English" width="18" height="13" /></a></span>
  4. <span id="russian"><a href=""><img src="/images/rus.png" alt="Translate to Russian" width="18" height="13" /></a></span>
  5. <span>LANG</span>
  6. </div>
  7.  
Ну вот и все, наслаждаемся и радуем наших посетителей. Самое главное чтобы на нашем сайте было как можно меньше грам. ошибок, тогда и перевод будет точным😊

p.s. кто хочет поглядеть и "потыкать" в живу, смотрите на моем сайте.

Если тема "юзабилити" сайта вам интересна, мы продолжим данную рубрику интересными статьями smoke
+1
abasia abasia 13 лет назад #
Очень полезно. Спасибо.
0
vitalson9 vitalson9 13 лет назад #
а как добавить ещё языков?
0
Михаил Михаил 13 лет назад #
Смотри div-блок где они отображаются.
Код PHP:
<span id="ваш_язык_на_енгл"><a href=""><img src="/images/кнопошкэ.png" alt="Translate to Ваш_язык_на_енгл" border="0" width="18" height="13" /></a></span> 
0
vitalson9 vitalson9 13 лет назад #
как мне к примеру добавить украинский язык?
0
Михаил Михаил 13 лет назад #
Находите где то укр. флаг, режете до 18x13, заливаете в /images/ua.png
После в <div id='flags2' class='flags2'> добавляете:
Код PHP:
<span id="ukrainian"><a href=""><img src="/images/ua.png" alt="Translate to Ukrainian" border="0" width="18" height="13" /></a></span>
0
vitalson9 vitalson9 13 лет назад #
спасибо всё работает
0
picaboo picaboo 13 лет назад #
перевод конечно ржачный :)) но плагин хороший. я у себя прикрутил его отдельной кнопкой перевести статью. а сам интерфейс сделал на другом языке переключением шаблона. но ваш способ конечно менее геморойный.
0
Михаил Михаил 13 лет назад #
Ну качество перевода не зависит от меняsmileНо лучше так, чем никак ) Одиночные слова переводит кстати нормально, с шаблонами извращаться незачем )
0
picaboo picaboo 13 лет назад #
там есть свои тонкости с индексациейsmileмне просто надо было именно так.
0
Михаил Михаил 13 лет назад #
Искуственно увеличиваем кол-во уникальных страниц на сайте для сапы? :)
0
Майкл Майкл 13 лет назад #
Выбрасывает на главную и не переводит.
0
Майкл Майкл 13 лет назад #
У Вас авторизация на анг. языке проходит?
0
Михаил Михаил 13 лет назад #
У меня да :)
0
lezginka.ru lezginka.ru 13 лет назад #
+
0
Майкл Майкл 13 лет назад #
Чего то не работает!
0
Михаил Михаил 13 лет назад #
Если все сделаете как я указал будет работать, см. мой сайт )
0
Майкл Майкл 13 лет назад #
Это не ответ:
Тогда я подробно поясню что Вы тут написали:
Это в шаблоне, в файле template.php ставим перед закрывающимся </head>
Код PHP:
<script src="/templates/mermaid/js/cookie.js" type="text/javascript"></script>
<script src="/templates/mermaid/js/lang.js" type="text/javascript"></script>
<script src="/templates/mermaid/js/translate.js" type="text/javascript"></script>
    <link href="/templates/mermaid/css/styles.css" rel="stylesheet" type="text/css" />
<style>
#flags2 {position:absolute; left:400px; top:0px; width:100px; font:bold 12px Tahoma; color:#fff; text-align:center; background-color:#333; padding:5px 0 7px 0; filter:alpha(opacity=55); opacity:0.55; -moz-opacity:0.55; -webkit-border-bottom-left-radius:7px; -webkit-border-bottom-right-radius:7px; -moz-border-radius-bottomleft:7px; -moz-border-radius-bottomright:7px; border-bottom-left-radius:7px; border-bottom-right-radius:7px;}
#flags2:hover {filter:alpha(opacity=100); opacity:1.0; -moz-opacity:1.0;}
.tops img {margin:0 0 -2px 0;}
</style>
далее, там же, после
Код PHP:
<body>
вставляем
Код PHP:
<div id="flags2" class="flags2">
<span id="english"><a href=""><img src="/images/eng.png" alt="Translate to English" border="0" width="18" height="13" /></a></span> 
<span id="russian"><a href=""><img src="/images/rus.png" alt="Translate to Russian" border="0" width="18" height="13" /></a></span>
<span>LANG</span>
</div>
Бросаем файлы сюда:
/template/мой_шаблон/js/
и сюда:
/images/

Ну вот и всё!
Это не работает!
У меня ни один модуль не переводится и при клике на картинку, выбрасывает на главную.
Где тут ошибка?
-1
Михаил Михаил 13 лет назад #
Не можете - не ставьте, идите читайте книжки по html/css/js.
0
Майкл Майкл 13 лет назад #
:) Ну Вы даете!
Пока ставить преждевременно.
Тем кто поставил рекомендую проверить авторизацию на англ. варианте,
раньше авторизацию пройти было нельзя.
И похоже у хака возникают конфликты с чем то, пока понять не могу с чем,
надо смотреть коды.
0
vitalson9 vitalson9 13 лет назад #
вот смотрите поставил и всё работает и на английском и на украинском
0
vitalson9 vitalson9 13 лет назад #
прошу прощения ссыль поправил смотрите
-1
Михаил Михаил 13 лет назад #
Не ставьте, я вас не заставляю ... Можете даже instant cms не ставить, тоже никто не заставляет )
0
Telema93 Telema93 13 лет назад #
не работало только потому, что переводило 1 модуль: хочу общаться. Отключил - и заработало
0
SP SP 13 лет назад #
Все работает! Спасибо!
0
imprint imprint 13 лет назад #
у меня вообще ничего не отображается
0
Михаил Михаил 13 лет назад #
Это прескорбно, берите книжки и учитесь )
0
Ne OS Ne OS 13 лет назад #
У меня на сайте тоже ничего не появлялось но метод ТЫКА и МАТА дал свои плоды!
У меня кнопки спрятались за графикой в header!
Поставьте код кнопки не сразу после тега <body> а например сюда
Код PHP:
<body>
<div id="wrapper">
<div id="page">
        <div id="header">
            <div class="container_12">
                <div class="grid_3">
                    <div id="sitename"><a href="/"></a></div>
                </div>
                <div class="grid_9">
[b][u]<div id="flags2" class="flags2">
<span id="english"><a href=""><img src="/images/eng.png" alt="Translate to English" border="0" width="18" height="13" /></a></span> 
<span id="russian"><a href=""><img src="/images/rus.png" alt="Translate to Russian" border="0" width="18" height="13" /></a></span>
<span>LANG</span>
</div> [/u][/b]
                    <?php if (!$inUser->id){ ?>
                        <div id="mod_user_menu">
                            <span class="register"><li><a href="/registration">Регистрация</a></li></span>
                            <span class="login"><li><a href="/login">Вход</a></li></span>
                        </div>
                    <?php } else { ?>
                        <?php cmsModule('header'); ?>
                    <?php } ?>
                </div>
            </div>
        </div>
и все будет путем!

P.S. Если код неправильный то напишите правильный вариант а то я в этом ни фига не разбираюсь!
-1
Ne OS Ne OS 13 лет назад #
думал код выделить жирным шрифтом и подчеркнуть ))
-1
Ne OS Ne OS 13 лет назад #
думал код выделить жирным шрифтом и подчеркнуть ))
-1
PolarOne PolarOne 11 лет назад #
26 мая 2011 был официально закрыт Google Translate API
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.