Многоязычные постоянные ссылки в qTranslate для WordPress

15 нояб. 2011 г., 13:50:20
Просмотры: 18K
Голосов: 4

Я использую плагин qtranslate для моего сайта на WordPress, чтобы сделать его многоязычным.

Теперь у меня появилось требование:

Для английского языка URL должен выглядеть так: www.sitename.com/contact-en
Для французского языка URL должен выглядеть так: www.sitename.com/fr/contact-fr

Как этого добиться? (Используется плагин qTranslate)

Примечание: В URL не должно быть ID записи между языковыми метками

Согласно посту на https://wordpress.stackexchange.com/questions/24061/multilingual-permalinks-qtranslate я попробовал http://www.3dolab.net/en/qtranslateslug-plugin-widget, но возникают ошибки "страница не найдена". Похоже, что автор прекратил разработку этого плагина, как видно из 29-го комментария на той странице.

1
Комментарии

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

User User
24 нояб. 2011 г. 02:20:04
Все ответы на вопрос 3
1

В настройках qTranslate в админ-панели откройте расширенные опции и выберите радиокнопку для использования языковых префиксов после имени домена. Предполагаю, что у вас в настройках языков плагина указан французский. После этого даты могут отображаться некорректно — используйте функцию date в PHP для исправления этого в настройках конкретного языка (редактирование языка). Например, j F. Пример можно увидеть на minexrussia.com/2011, где префикс ru используется таким же образом.

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

15 нояб. 2011 г. 16:03:00
Комментарии

Да, французский язык есть в моем списке языков. Дата не должна появляться в URL. Мое основное требование — чтобы можно было задавать разные slugs для разных языков. Например: /contact-en для английского, /contact-fr для французского, как описано в моем вопросе.

Beniston Beniston
16 нояб. 2011 г. 05:49:52
0

Имея плагин "qtranslateslug-plugin-widget" работающим в административной части для сохранения ЧПУ в таблице слагов, я добавил свой собственный код на стороне пользователя.

На странице wp-blog-header.php я добавил свой код прямо перед подключением файла wp-load.php. Я взял URL из $_SERVER['REQUEST_URI'], и используя слаг и язык в нем, получил название записи и присвоил модифицированный URI $_SERVER['REQUEST_URI'] соответствующим образом.

Например:

До редактирования: $_SERVER['REQUEST_URI'] = '/fr/french-slug';

После редактирования: $_SERVER['REQUEST_URI'] = '/post-name';

Позвольте объяснить это более подробно

  1. Присвоить $_SERVER['REQUEST_URI'] переменной

  2. Получить слаг, разделив его по слешу (/)

  3. Проверить слаг в таблице слагов базы данных, которую использует плагин "qtranslateslug-plugin-widget", и получить оттуда ID записи

  4. Теперь, используя ID записи, получить название записи из таблицы записей.

  5. Собрать обратно, как показано в примере выше.

  6. Присвоить обратно в $_SERVER['REQUEST_URI']

22 нояб. 2011 г. 11:09:43
0

Пожалуйста, ознакомьтесь с http://wordpress.org/plugins/qtranslate-slug/

Qtranslate - хороший плагин, но, к сожалению, на сегодняшний день устарел. Qtranslate Slug - это дополнение к QTranslate, которое добавляет поддержку перевода постоянных ссылок и исправляет некоторые недостатки QTranslate, начиная с WordPress 3.0.

19 июн. 2014 г. 19:13:06