WordPress. Как сделать блог многоязычным

Начиная вести свой блог, я твердо решила никогда не писать обзорных статей о плагинах к WordPress. На это было несколько причин: во-первых об этом и без меня достаточно пишут, во-вторых, разобраться с плагином сможет практически любой пользователь. Да и к тому же, меня не особо интересовала эта область. Но правила на то и существуют, чтобы их иногда нарушать.

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

Установка плагина

Для того чтобы добавить дополнительные языки для нашего блога, мы будем использовать плагин WPML Multilingual CMS, который позволяет не только русифицировать все тексты на сайте, но и перевести шаблон, а также элементы навигации. Так что с его помощью, мы сможем создать, полноценный сайт на разных языках. Он гарантированно работает до версии wordpress 2.8.4, но обязательно потребует наличие PHP5 на вашем сервере. Итак, скачиваем плагин, устанавливаем его, как обычно (распаковываем в папку wp-content/plugins) и активируем.

После активации плагина, в панели управления появится дополнительный блок управления плагином WPML:

wpml

Перейдите на вкладку Overview в блоке WMPL, здесь вам понадобится установить первоначальные настройки. Вы увидите две группы настроек, содержащие несколько разных секций. Мы не будем сейчас останавливаться на них подробно, в данный момент нас интересует первая секция под названием Languages. Здесь вам понадобится назначить доступные для сайта языки. Нажимайте кнопку «configure languages»:

configure_languages

Сначала нужно указать основной язык сайта – тот, на котором он отображается по умолчанию. Поскольку наш блог по умолчанию русскоязычный – мы выбираем его в качестве умолчания, а вторым языком указываем английский.

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

Локализация контента

Итак, вышеприведенных шагов достаточно, для того, чтобы можно было создавать записи уже на двух языках. В нашем примере, у нас уже есть традиционная запись «Привет, мир», с русским текстом. И если вы все сделали правильно, вот так будет выглядеть вкладка «Редактировать записи», в Панели управления:

posts

Кнопка в виде плюса, одновременно сообщает нам, что запись еще не переведена на английский язык, и позволяет добавить перевод. Нажав на нее, вы увидите обычную форму добавления новой записи, за исключением небольшого блока “Language” слева, этот блок будет информировать вас о текущем языке и переводе к записи.

block_language

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

После того как вы опубликуете запись (версию перевода нужно точно также публиковать как и оригинал статьи), в панели редактирования записей, вместо значка плюса, появится иконка карандаша, с помощью которой можно всегда отредактировать ранее созданный перевод.

Теперь, можно полюбоваться на полученный результат, вот так выглядит оригинал статьи в моем блоге:

blog_rus

А если воспользуемся переключателем, то он загрузит нам эту же версию страницы, но на английском языке:

blog_en

Страницы локализуются точно также, я добавила одну страницу «о блоге»:

page_rus

и ее локализованный вариант «about»:

page_en

Обратите внимание, что в английском варианте, рядом со ссылкой «главная», появилась надпись «No categories». Это потому, что я пока не добавила перевод рубрики «новости», в панели управления рубриками. Сделать это очень просто. Заходите на страницу редактирования рубрики, и в блоке language нажимаете ссылку add:

category_add

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

Локализация комментариев

WPML предлагает весьма интересную схему локализации комментариев, которую проще всего будет объяснить на примере.

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

Эту статью прочитала одна из ваших читательниц, и оставила комментарий на английском языке:

sofi_en

Когда вы зайдете в Панель управления, вы обнаружите новый комментарий, но не на английском языке, для вас он будет переведен на русский:

sofi_rus

Вы ответите комментатору на русском языке:

me_rus

А ваш ответ, добавится на английском языке.

me_en

То есть фактически, вы можете говорить с читателями на их родном языке.

Как же это происходит?

Все довольно просто, когда пользователь оставляет комментарий на английском языке, WMPL отправляет его к автоматическому переводчику Google, это работает очень быстро и бесплатно. Конечно, никто не гарантирует вам абсолютной точности перевода, именно поэтому эта услуга бесплатная, вы получаете машинный перевод, чтобы просто уловить смысл комментария.

С другой стороны, когда вы публикуете ответ пользователю, ваш ответ может быть переведен профессиональным переводчиком, и будет звучать так, как будто вы на самом деле владеете иностранным языком. И вот за эту услугу, уже придется заплатить, эта услуга стоит около 0.07$ за слово.

Для того чтобы активировать локализацию комментариев, вам понадобится отметить соответствующие пункты в меню WPML – comments translations, а также зарегистрироваться в сервисе ICanLocalize, что можно сделать прямо из панели администрирования в разделе WPML – Pro translation:

icanlocalize

Локализация темы

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

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

Хорошим примером, здесь могут служить темы, входящие в состав WordPress, по умолчанию. А определить готов ли ваш шаблон к переводу очень просто: достаточно взглянуть на то, как оформлены текстовые строки, такие как: «автор», «комментарии», «читать далее» и другие. Если вы видите обычный текст, без использования php-функции gettext, то вам не повезло – и придется добавлять ее вручную.

WPML предлагает два способа перевода шаблона, с помощью готового .mo-файла или вручную, с помощью плагина, но независимо от выбранного способа локализации, вам прежде всего нужно все-все текстовые строки шаблона заключить внутрь функции gettext. Например, строчку «Автор», идущую перед именем автора, следует записать так:

[php]
<?php _e(‘Автор’); ?>
[/php]

А текст, выводящийся в php-функциях, например, надпись «Редактировать», следующим образом:

[php]
<?php edit_post_link(__(‘Редактировать’) ); ?>
[/php]

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

Перевод темы с помощью плагина

Итак, переходим на страницу WPML – Theme Localization, и указываем, что мы будем переводить тему с помощью WMPL:

theme_localization

Все очень просто, после того, как мы заключили все текстовые строки шаблона в функцию gettext, нажимаем кнопку «Scan the theme for string», и плагин просканирует все файлы темы, найдет строчки, которые нужно перевести, и отобразит их в таблице, выше.

После того, как вы увидите найденные строки, нажимайте кнопку «View strings that need translation», и добавляйте по очереди перевод для каждой строки:

translate

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

Этот процесс не займет много времени, зато результат будет отличный – полностью локализованная тема.

Перевод темы с помощью файла .mo

Многие темы WordPress поставляются уже переведенными на разные языки. Если вам повезло, и вы обладатель такой темы – вы можете использовать уже готовый перевод, вместо того, чтобы мучиться самому.

Чтобы использовать перевод с помощью файла .mo, выберите пункт «Using a .mo file in the theme directory». Все, что вам потребуется указать – это название текстового домена для вашей темы.

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

Оформление переключателя

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

Для начала давайте уберем существующий переключатель языков, это делается в меню WPML – Languages

switcher_off

Выбираете из списка none, и сохраняете.

Получение списка доступных языков

Функция icl_get_languages() используется для получения списка переводов для любой страницы. Пример использования:

[php]
icl_get_languages(‘skip_missing=N’)
[/php]

Параметр skip_missing говорит функции, как выводить языки, не имеющие перевода. Вы вернемся к нему, чуть позже.

Эта функция возвращает массив с определенным набором элементов, для каждого языка. Например, для WordPress-сайта, запущенного на Английском, Французском и Итальянском, массив будет выглядеть следующим образом:

[php]
Array
(
[0] => Array
(
[active] => 1
[native_name] => English
[translated_name] => English
[language_code] => en
[country_flag_url] => http://yourdomain/wpmlpath/res/flags/en.png
[url] => http://yourdomain/about
)

[1] => Array
(
[active] => 0
[native_name] => Français
[translated_name] => French
[language_code] => fr
[country_flag_url] => http://yourdomain/wpmlpath/res/flags/fr.png
[url] => http://yourdomain/fr/a-propos
)

[2] => Array
(
[active] => 0
[native_name] => Italiano
[translated_name] => Italian
[language_code] => it
[country_flag_url] => http://yourdomain/wpmlpath/res/flags/it.png
[url] => http://yourdomain/it/circa
)
)
[/php]

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

  • active: Это текущий активный язык (только один язык является активным)
  • native_name: Имя языка (не переводится)
  • translated_name: Имя языка, переведенное на текущий, активный язык
  • country_flag_url: URL PNG-картинки в виде флага, отображающей язык
  • url: Ссылка на перевод, выполненный на этом языке

Обработка отсутствующих переводов

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

Если указать ’skip_missing=1′, эти языки просто не будут выводиться. Если значение параметра skip_missing, установить в 0, будут выведены все доступные языки сайта.

Использование функции в шаблоне

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

Примеры PHP-функций, представленных ниже, должны быть распложены в файле functions.php (который расположен в папке с темой).

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

[php]
function icl_post_languages(){
$languages = icl_get_languages(‘skip_missing=1’);
if(1 < count($languages)){
echo __(‘Эта запись также доступна на следующих языках: ‘);
foreach($languages as $l){
if(!$l[‘active’]) $langs[] = ‘<a href="’.$l[‘url’].’">’.$l[‘translated_name’].'</a>’;
}
echo join(‘, ‘, $langs);
}
}
[/php]

Что делает функция:

  1. Получает список языков от WMPL – $languages = icl_get_languages(’skip_missing=1′);
  2. Проверяет, доступен ли перевод для текущей записи – if(1 < count($languages))
  3. Создает вывод, пропуская активный в данный момент язык – if(!$l['active']).

Обратите внимание:

  1. Сообщения заключены в функцию gettext. Это очень важно, поскольку это сообщение, добавленное к каждой записи, будет отображаться на правильном языке – __(‘Эта запись также переведена на:’);
  2. Имена языков выводятся на основе переведенных названий. Это гарантирует правильное отображение имени языка: $l['translated_name']

Вот такой у нас получился результат:

switch1

Чтобы включить это сообщение в каждую запись, добавьте вызов функции icl_post_languages(), в файле single.php.

[php]
<?php icl_post_languages(); ?>
[/php]

Список языков с флагами

Рассмотрим еще один вид переключателя языков – список названий языков с соответствующими флагами. Такой переключатель обычно располагается в подвале многоязычного сайта, но вы можете расположить его где угодно.

[php]
function languages_list_footer(){
$languages = icl_get_languages(‘skip_missing=0’);
if(!empty($languages)){
echo ‘<div id="footer_language_list"><ul>’;
foreach($languages as $l){
echo ‘<li>’;
if($l[‘country_flag_url’]){
if(!$l[‘active’]) echo ‘<a href="’.$l[‘url’].’">’;
echo ‘<img src="’.$l[‘country_flag_url’].’" height="12" alt="’.$l[‘language_code’].’" width="18" />’;
if(!$l[‘active’]) echo ‘</a>’;
}
if(!$l[‘active’]) echo ‘<a href="’.$l[‘url’].’">’;
echo icl_disp_language($l[‘native_name’], $l[‘translated_name’]);
if(!$l[‘active’]) echo ‘</a>’;
echo ‘</li>’;
}
echo ‘</ul></div>’;
}
}
[/php]

Эта функция выполняет следующее:

  1. Если существует хотя бы один перевод, создает DIV и открывает внутри него маркированный список
  2. Просматривает каждый язык и добавляет его в список
  3. Если текущий язык не является активным в данный момент, также добавляет ссылку на страницу с этим языком
  4. Добавляет флаг для языка
  5. Добавляет оба названия языка, настоящее и переведенное, если они отличаются

Кроме самой функции, нам понадобится добавить немного CSS, для нормального отображения нашего списка языков:

[css]
#footer_language_list{
margin-bottom: 25px;
text-align: center;
}

#footer_language_list ul{
list-style: none;
margin:0;
padding:0;
}

#footer_language_list ul li img{
margin-right:5px;
}

#footer_language_list ul li{
display:inline;
margin:0 5px 0 5px;
padding:0;
}

#footer_language_list ul li a, #footer_language_list ul li a:visited{
color: #000;
text-decoration:underline;
}

#footer_language_list ul li a:hover, #footer_language_list ul li a:active{
color: #000;
}
[/css]

В результате у нас получился вот такой переключатель:

swith2

Чтобы добавить его в свою тему, добавьте вызов функции languages_list_footer, в файле footer.php (или в любом другом месте вашего шаблона) следующим образом:

[php]
<?php languages_list_footer(); ?>
[/php]

Обратите внимание: вы легко можете изменить горизонтальный переключатель языков, на вертикальный. Просто удалите из CSS строчку display: inline.

Заключение

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


Posted

in

by

Comments

101 responses to “WordPress. Как сделать блог многоязычным”

  1. Truper Avatar

    Есть ещё два адекватных плагина, у которых принципиально другой подход. Вот краткое описание их работы.

    1. Truper Avatar

      Странно, но ссылки у тебя никак не выделяются, т.е. захочешь – не найдешь. В предыдущем моем комментарии ссылка на слове “Вот”.

      1. dreamhelg Avatar
        dreamhelg

        вроде бы подчеркиванием выделяются

        1. Truper Avatar

          На третьей мозиле никакого подчеркивания нет.

  2. Сергей Avatar
    Сергей

    Спасибо за статью!
    Работает или нет – пока не знаю, не пробовал, но написано толково.

  3. Ким Avatar
    Ким

    А как добавить язык не из списка?

    1. dreamhelg Avatar
      dreamhelg

      Вам нужно добавить язык, которого нет в списке Site Languages?

      1. Ким Avatar
        Ким

        Да, казахский язык

  4. egoManyak Avatar

    а как быть с большими вставками текста, Theme Localization их не берет, находит, но отказывается отображать разные переводы, короткие слова отображает, а большие куски текста нет, как можно решить эту проблему, не подскажите? )

    1. dreamhelg Avatar
      dreamhelg

      Расскажите подробнее, плагин их находит, вы добавляете перевод а он его не отображает?

      1. egoManyak Avatar

        именно так. После сканирования, строки находятся, я делаю перевод, комплит, с маленькими строками все ОК, перевод отображается, а с большими на 3-4 предложений вместо перевода, отображается на родном языке. Я пока получаю текущий язык и через if вывожу нужную мне строку. но конечно хотелось бы через админку.

        1. dreamhelg Avatar
          dreamhelg

          А текст заключен в функцию gettext? Или он слишком большой?

  5. egoManyak Avatar

    Да, и спасибо большое за статью, она великолепна )

  6. Konstanty Avatar

    Спасибо за толковое объяснение, как раз собирался сделать на вордпрессе 2язычную версию своего сайта.

  7. iUser Avatar
    iUser

    Подскажите где искать вкладку “WPML – Theme Localization”
    в менюшке WPML , только два пункта:
    Languages и Pro translation

    1. dreamhelg Avatar
      dreamhelg

      хм.. вообще меню WPML должно быть такое как на скриншоте, может вы еще не добавили язык?

  8. iUser Avatar
    iUser

    установил плагин, и он дыл уже такой. Сейчас выбрал статьи, оформил две страницы и две записи. Меню без тем. Может скачать плагин заново, киньте ссылку плиз

  9. iUser Avatar
    iUser

    переустановил_ ничего, может скитьте ссылку адреса из админки

  10. iUser Avatar
    iUser

    Обновил WP до 2.8.6 – переустановил плагин – все тоже, только два пункта.
    Перешол по сслыке – wp-admin/admin.php?page=sitepress-multilingual-cms/menu/theme-localization.php
    Сообщение- “Вы не имеете достаточно прав для доступа к данной странице.”
    Зашел на фтп – файл есть theme-localization.php с правами как и все.

  11. iUser Avatar
    iUser

    все готово – дело все в кнопочке “Go advanse” которая горела в верху меню, под кнопкой “Выход”. нажал на ее и меню стало как и должно.

  12. Ирина Avatar

    А что делать, если плагин (русская версия) отключает полностью все записи?

    1. dreamhelg Avatar
      dreamhelg

      WPML отключает все записи?

  13. dvigatelpr.ru Avatar

    Давно хотел перевести свой блог и на украинский

  14. P Avatar

    Скажите, а где конкретно нужно писать “display: inline.”, хочу, чтобы переключение языков было в строчку а не выпадающее. Спасибо.

    1. dreamhelg Avatar
      dreamhelg

      Для того чтобы вывести языки в строчку, сделайте так, как написано в абзаце Список языков с флагами

      1. P Avatar

        1. Вставляю код в футер.
        2. Редактирую файл CSS – а какой конкрентно? Которые в Editor или какой?

        1. compass Avatar
          compass

          Можно основной style.css темы.

  15. compass Avatar
    compass

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

    1. dreamhelg Avatar
      dreamhelg

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

      1. compass Avatar
        compass

        Да-да. Так и есть. Есть “Портфолио” я добавила его перевод “Portfolio” и по факту появилась еще одна англоязычная рубрика.
        Я так понимаю, что без “хирургического вмешательства” в тему не обойдется. Когда решим этот вопрос, я тут напишу.
        Если вы что-то придумаете, буду благодарна 🙂

        1. compass Avatar
          compass

          http://topwpthemes.com/imag/ – вот тут можно скачать тему, которая устроена подобно моей.

  16. Baoluo Avatar
    Baoluo

    У меня задача добавить язык в уже существующий блог. По умолчанию, посты на русском попадают в англ. версию. А при попытке вручную перенести, пропадают комментарии.

    1. dreamhelg Avatar
      dreamhelg

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

      1. Baoluo Avatar
        Baoluo

        У меня есть посты на русском. Для англ. я хочу писать вручную свои посты, просто в англ. разделе они будут. Главная проблема, все посты написанные уже на русском находятся под британским флагом после установки плагина :), т.е. в англ. версии. И как это поменять ума не приложу.

        1. dreamhelg Avatar
          dreamhelg

          То есть ваши английские статьи не будут переводами уже существующих статей, а будут самостоятельными постами?

          1. Baoluo Avatar
            Baoluo

            Могут быть, но будем переводить вручную, или будут другими по содержанию. Т.е. будет и так и так.

          2. dreamhelg Avatar
            dreamhelg

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

          3. compass Avatar
            compass

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

          4. Baoluo Avatar
            Baoluo

            Да! Как это исправить?

          5. compass Avatar
            compass

            Перейдите на вкладку Overview в блоке WMPL (в самом начале поста – это с картинками), там есть кнопка «configure languages» (см. 2-ю картинку к посту).
            Если написано “Английский (default)”, то проблема в этом. Тогда надо под “Русский” нажать кнопку “Change default language”, и установить языком по умолчанию русский.

          6. Baoluo Avatar
            Baoluo

            Сделал. Но в этом случае, все посты которые были, пропали. Т.е. их не видно.

          7. compass Avatar
            compass

            Кодировка, видимо, если не видно постов. Хотя как не видно? Их просто нет или они невидимые?
            И о каментах тот же вопрос – их нет в принципе или не видно?
            Самое простое ссылку на блог дайте.

  17. Юрий Avatar
    Юрий

    Спасибо большое за очень познавательную статью! Наверное, перейду на Multilingual c Global Translator (последний создает просто безумное количество перекрестных переводов). Скажите, а с разделением на разные RSS-потоки в Multilingual все просто? Или нужно вставлять в шаблон какой-то код? Не хотелось бы загружать русскоязычных RSS-подписчиков англоязычными переводами…

    1. Юрий Avatar
      Юрий

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

      1. dreamhelg Avatar
        dreamhelg

        На сайте плагина пишут, что с разделенем потоков все в порядке.
        Обычный рсс блога выглядит так:

        http//dreamhelg.ru/feed

        А его локализованная версия, скажем английская, выглядела бы так:

        http//dreamhelg.ru/en/feed

        1. Юрий Avatar
          Юрий

          Спасибо большое!

  18. Baoluo Avatar
    Baoluo

    И еще при импорте постов при включенном WPML пропали комментарии.

  19. Baoluo Avatar
    Baoluo

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

  20. Baoluo Avatar
    Baoluo

    Вот блог: http://farplanet.cn/
    Коммент в последнем посте, это я после поставил. А старые все невидимые (их не стало) стали после включения WPML, но после отключения WPML они возвращаются.

    Спасибо!

  21. Awayka Avatar

    Здравствуйте. Меня интересует вот такая возможность:
    На сайте установлен WMPL плагин.
    Нужно сделать запрос для вывода постов (записей) только на том языке, который в данный момент выбран.
    Например, есть дефолтный виджет “Новости” (WP_Widget_Recent_Posts) – он выдает, в зависимости от выбранного языка. Значит, сделать такое возможно.
    У меня установлен один плагин, который вызывает из БД записи следующим образом:
    $request = "SELECT ID, post_date, post_title, post_excerpt FROM $wpdb->posts WHERE post_status = 'publish' ";
    Я пыталась составить что-то вроде:
    $request = "SELECT ID, post_date, post_title, post_excerpt FROM $wpdb->posts wp, wp_prefix_icl_languages_translations icl WHERE
    wp.ID = icl.id AND wp.post_status = 'publish' AND icl.language_code = '".$this_lang."' ";

    Но для этого надо еще определить $this_lang – да и сам запрос вряд ли корректен.
    Можете помочь?

  22. Konstantin Avatar
    Konstantin

    Спасибо за хороший пост! Есть вопрос, можете помочь? Мне необходимо чтобы текстовый виджет тоже переводился, т.е. возможно ли это? Если да то как…

  23. RG Avatar

    Спасибо! С помощью вашей заметки за час выставил переключатель в правом верхнем углу. Как и нужно было. Успехов Вам! ) РГ

  24. RG Avatar
    RG

    Ольга, а не подскажете, как или где можно убрать дублирование название языка на текущем (активном) языке – то что в скобочках в паре “English (Английский)”. То есть я хочу оставить только “English”, убрав русскобуквенного дублера. Буду благодарен )

    РГ

  25. RG Avatar
    RG

    Все, разобрался! 🙂 Благодарю еще раз.

  26. nethead Avatar

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

  27. Матвей Avatar
    Матвей

    Спасибо за статью…все очень хорошо написано…но один вопрос все же возник…
    планирую сделать сайт на 2х языках с покупкой 2х доменов в зоне ru и зоне com..между собой их связать через алиас…вопрос в следующем…как сделать что бы при заходе на домен.com текст выводился на английском языке а при заходе на домен.ru на русском?

  28. иван Avatar
    иван

    спасибо за статью

  29. Бионик Андрей Викторович Avatar

    Да никак, плати деньги и тебе сделают.

  30. Игорь Avatar

    Привет. Поставил плагин на сайт, но почему-то когда включен русский язык категории и страницы пишутся как categories и pages. В чем может быть дело?

  31. Дмитрий Avatar
    Дмитрий

    Установил WPML Multilingual CMS, с переводом страниц и заметок разобрался, а вот с переводом текстовых переменных не могу. Сканирую, нажожу нужное слово, пишу для него перевод нажимаю готово, но *.po и *.mo файл с переводом не появляется. Что надо настроить, чтоб эти файлы создались ?

  32. fAcknet Avatar

    У меня проблема, все работает кроме главной страницы, включен в постоянных ссылках = “произвольно /%postname%/”, в .htaccess
    вот

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    Options +FollowSymLinks

    RewriteCond %{HTTP_HOST} ^www.hostelmar.ru$ [NC]
    RewriteRule ^(.*)$ http://hostelmar.ru/$1 [R=301,L]

    # END WordPress

    сам сайт вот http://hostelmar.ru/?lang=de

    все страницы открывает а главную не видит при отключении “постоянных ссылок” начинает работать.
    Помогите )?

  33. Оксана Avatar
    Оксана

    Здравствуйте, помогите пожалуйста, у меня в панели “Записи” не отображается плюсик, то есть нет возможности добавить вручную перевод статьи. В чём может быть проблемма?

    1. Оксана Avatar
      Оксана

      Я так поняла у меня в плагине отсутствует WPML’s Translation Management – WPML, то есть менеджер-переводчик. Поэтому я не могу добавлять переводы вручную, плюсиков нет. Скажите пожалуйста, где его можно скачать бесплатно? На сайте разработчика он стоит 79 долларов.

  34. Дизайн студия ProGrafika Avatar

    Статья хорошая. На днях буду пробовать локализацию. Потом отпишу проблемы и их решение.

  35. МАКС Avatar

    Свасибо за статью Долго искал данный материал . буду тестировать

  36. Анна Avatar

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

  37. Дмитрий Avatar
    Дмитрий

    Подскажите пожалуйста что такое за проблема, скачиваю версию WPML 2.0.4.1 при активации пишет фатальная ошибка, скачиваю версию 1.1.0 она активируется нормально, но вот язык по умолчанию не видит и под в кладкой – Configure Languages вот такие вещи – ————————-

    Currently configured languages:
    Warning: join() [function.join]: Invalid arguments passed in /home/u709660220/public_html/mhostel/wp-content/plugins/sitepress-multilingual-cms/menu/overview.php on line 52

    Что это вобще такое? и в чем дело? разъясните пожалуйста а то уже прям незнаю что и делать, вроде бы ничего не менял

    1. Анна Avatar

      Дмитрий, а у вас какой WordPress установлен? Версия WPML 1.1.0 , судя по всему, работает до 3-й версии, у меня прекрасно себя чувствует на WordPress 2.9.2 например.
      А в последних версиях вордпресса вообще не активируется – то есть да, не видит различные языки.

      1. Дмитрий Avatar
        Дмитрий

        Да к сожалению у меня наверное стоит последняя версия, но это никак нельзя исправить?а есть ли какой нибудь заменитель по типа WPML? есть ли такой плагин который переводит все в сайте даже шаблон и заголовок сайта?и виджеты

  38. Areg Avatar
    Areg

    Спасибо за статью. Все работает нормально, но никак не могу сообразить, как сделать кнопку “Главная” мультиязычной. В принципе в редакторе можно переименовать на “Home”, но сайт четырехязычный, возникнут неудобства. Есть возможность справиться с задачей?

  39. Polina Avatar
    Polina

    Здравствуйте!

    Очень развёрнуто и подробно написано. Спасибо!

    Скажите пожалуйста, правильно ли я понимаю, что при использовании этого плагина достаточно одного “ядра” WordPress? То есть, если есть уже установленный и работающий WordPress, сайт отлажен и работает на одном языке, не нужно устанавливать ничего кроме плагина? А база данных используется одна?

    Судя по официальному сайту плагин платный http://wpml.org. Стоит ли он своих денег? Не разработали ли бесплатных _таких_же_удобных_ аналогов?

    Спасибо.

  40. Сергей Avatar
    Сергей

    Всем привет.
    Немогу никак реализовать отображения текста в зависимости от языка. У меня на сайте 2 языка, рус и англ.
    Делаю примерно так:
    if ($lang == ‘ru’){
    echo “bla bla bla”;
    }else{
    echo “bla2 bla2 bla2”;
    }
    Но ничего не получается.
    Пользуюсь плагином WPML.
    Помогите плиз.

  41. Павел Avatar

    Тема устарела. Плагина этого не существует!!!!

    1. dreamhelg Avatar
      dreamhelg

      Официальный сайт плагина – http://wpml.org
      Или для вас существуют только бесплатные плагины?

  42. Роман Avatar
    Роман

    Здравствуйте.
    Спасибо за статью, очень конструктивно и познавательно.
    Остался вопрос. Если на mysite.com/post контент у меня на английском языке, перевод на mysite.com/en/post выглядит отлично. Но. При переходе на другие страницы я возвращаюсь на mysite.com/ и, как следствие, возвращаюсь к англ. языку. Как решить проблему навигации не слишком уродуя шаблон? Есть решение?

    1. dreamhelg Avatar
      dreamhelg

      Нужно сделать перевод всех страниц, и перевод самой навигации. Эта опция доступна в новой, платной версии плагина.

      1. Илья Avatar

        Я сделал то же в бесплатной версии. 2,0,4, если не ошибаюсь. Т.е. можно обойтись и бесплатной версией.

  43. Ms Lana Vi Avatar

    Здравствуйте, большое спасибо за пояснения.
    Плагин несомненно интересный.
    А как быть с главной страницей блога, которая оптимизируется через All-in-One-SEO? Где и как ее оптимизировать под англ. версию?
    Подскажите пожал.
    С уваж.

  44. Ms Lana Vi Avatar

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

    1. Анна Avatar

      Конечно,
      в установках плагина установить английский язык default – нажать на кнопку “change default language”.

      Если нужно вообще основным языком английский сделать (в т.ч. админку) – закомментировать строку подключения русского перевода в файле wp-config.php

      1. Ms Lana Vi Avatar

        Спасибо большое!

      2. Ms Lana Vi Avatar

        Добрый день, может Вы сможете мне еще подсказать.
        У меня возникла проблема с этим плагином.
        Пропадают русские посты за 2 месяца, которые я опубликовала после загрузки плагина, но он был все это время не активный.
        Теперь как только я его активирую, то последние посты просто исчезают.
        А они есть и в индексации ПИ, и более того я в них продавала ссылки, т.е. удалить эти посты я не могу, ну или оставить как есть, потому что при активном плагине их ПС не будут находить, а это проблемы с биржами.

        1. ВагонДенег Avatar

          У меня WPML Multilingual CMS Версия 2.0.4.1 отлично работает на многих сайтах и переводит все, и меню и контент и темы. Но вот столкнулся с одной инсталяцией, где после активации плагина пропадают страницы сайта из списка страниц в админке. Сам сайт работает отлично. Но страницы то как править?)) Тему верстал сам, там все по минимуму, и лишних плагинов нету, да и отключал их. Ищу решение… а так плагин работает хорошо, но разобраться в нем надо.

  45. Роман Avatar

    То есть халява закончилась. А старая версия плагина тоже за денежку ?

    1. dreamhelg Avatar
      dreamhelg

      Думаю нет, хотя мне не попалась ссылка на старую версию плагина.

      1. Илья Avatar

        Последнюю бесплатную версию 2.0.4.1 можно скачать на сайте wordpress.org, где и остальные плагины.

  46. Саша Avatar
    Саша

    Здравствуйте,
    такой вопрос. После установки плагина (версия 2.0.4.1) и его настройки все отлично, но есть один ОООчень существенный косяк. Итак, по-порядку.
    Сайт двуязычный, рус. (основная) + укр.
    К основному языку вопросов нет, все супер, но вот с укр. есть косяк, проявляется он при заходе в подкатегорию ссылка почему-то выглядит так http://имя_сайта.ру/uk/uk/category/имя_подкатегории/

    Обратите внимание, что в ссылке два раза /uk/uk/. Как убрать одно? Два дня безрезультатно борюсь с этим и все никак:(

    1. dreamhelg Avatar
      dreamhelg

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

    2. Виктор Avatar
      Виктор

      Я решил проблему таким образом

      Открыть файл “sitepress.class.php”

      Перейти в строку 3406

      и закоментировать //

      if($this->get_default_language() != $element_lang_details->language_code){
      $p = $this->convert_url($p, $element_lang_details->language_code);
      }

      1. ВагонДенег Avatar

        Отлично, спасибо за подсказку, а я костыль ставил типа:
        str_replace(“/ru/ru/”, “/ru/”, get_category_link($featured_cat_2));

    3. Виктор Avatar
      Виктор

      Я решил проблему таким образом

      Саша

      Открыть файл «sitepress.class.php»

      Перейти в строку 3406

      и закоментировать //

      if($this->get_default_language() != $element_lang_details->language_code){
      $p = $this->convert_url($p, $element_lang_details->language_code);
      }

  47. Виктор Avatar
    Виктор

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

  48. Константин Avatar

    Скажите, пожалуйста, переводится ли раздел меню “Главная”. По скринам вижу, что даже при переключении статьи на английскую версию – в меню постоянно остается “Главная” на оригинальном языке…?

    1. Анна Avatar

      “в меню постоянно остается «Главная» на оригинальном языке” – в смысле, на русском?
      Попробуйте подключить в своем WordPress в файле wp-config.php облегченный русский перевод (ru_RU_lite), вместо обычного.
      Для этого закомментировать строку
      define ('WPLANG', 'ru_RU');
      и добавить такую строку
      if (strpos($_SERVER['REQUEST_URI'], 'wp-admin')) define ('WPLANG', 'ru_RU'); else define ('WPLANG', 'ru_RU_lite');
      только сначала убедитесь, что нужный файл ru_RU_lite у вас на хостинге есть.

      Обычно помогает 🙂

    2. ВагонДенег Avatar

      В шаблоне “Главная” нужно выводить через _e(“Главная”); Тогда слово “Главная” появится в списке переводимых слов в настройках плагина. Т.е. все переводится полностью.

  49. Василий Avatar
    Василий

    Здравствуйте. Обнаружил серьезную проблему этого плагина. На языковых версиях не работает страница 404. Я выбрал установку в подкаталогах – для английского языка она добавляет в урле параметр en/. Формат постов – post.html. Если набирать любую абракадабру site.com/en/asdsadads.html не выдается страница 404, а вместо нее – последний пост, хотя в адресной строке остается site.com/en/asdsadads.html, если набирать – site.com/en/asdsadads тоже выдается главная данной языковой версии. При этом вместо ответа 404 посылается ответ 200 Ок. На сайте разработчика http://wpml.org/forums/topic/wpml-404-fix/ пишет, что проблема устранена, но к сожалению это не так.
    Может что нибудь посоветуете

    1. Илья Avatar

      На сайте разработчика http://wpml.org/forums/topic/wpml-404-fix/ пишет, что проблема устранена, но к сожалению это не так.

      Возможно исправлена проблема в последней, коммерческой версии. Бесплатная же версия устаревшая.

  50. Роман Avatar

    как перевести виджеты с помощью этого плагина

  51. Андрей Avatar
    Андрей

    Здравствуйте.
    Подскажите пожалуйста, как мне сделать сайт объявлений на вордпресс. Нужно чтобы можно было настроить поддомены для регионов. (чтобы присвоить в яндексе регион). Вот нашел одну доску объявлений http://moskva.biglus.com/ с регионами, подскажите какой шаблон или плагин тут используется, нужно именно, чтобы поддомены работали как в указанном сайте. Я находил плагин для создания поддоменов, но там только для категорий, тоесть из категорий создаются поддомены, а мне так не нужно.

  52. zmoe Avatar

    Тут все спрашивают про технические аспекты, а как дела обстоят с seo ? если перевести весь сайта ( к примеру на нем 500 в день) на еще один язык, то увеличится ли посещаемость? Как отнесутся ПС с тому, что на домене ru несколько языков, дадут ли они ему трафик на этот перевод? Насколько он будет читаем для носителей языка? Кто нибудь уже ПРАКТИЧЕСКИ получил отдачу от него?

Leave a Reply to Виктор Cancel reply

Your email address will not be published. Required fields are marked *