Возможно ли для записи иметь два URL в Expression Engine и переводить имена шаблонов?

В настоящее время я делаю двуязычный веб-сайт Expression Engine 2.5.2. Я использую эту технику для создания двух языков, которая отлично работает.

Я создал глобальную переменную {country_code} в двух файлах index.php, которая позволяет мне определять текущий язык.

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

Пример записи:

  • {entry_id} = 123
  • {title} = Моя тестовая статья
  • {title_permalink} = my-test-article
  • {name_fr} = понедельник
  • {name_en} = Моя статья

Если я прошу http://www.example.com/index.php/en/blog/articles/my-test-articleЯ ожидаю найти на английском языке "Моя статья", используя шаблоны статей в группе шаблонов блога.

Все хорошо, но французский перевод доступен при запросе http://www.example.com/index.php/fr/blog/articles/my-test-article, Правильный перевод URL должен быть http://www.example.com/index.php/fr/blogue/articles/mon-article-test,

Кто-нибудь сталкивался с такой проблемой? Какие-либо решения с помощью расширений или модулей?

2 ответа

Решение

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

Я обычно просто придерживаюсь entry_id вместо url_titleи жить с именами шаблонов на основном языке.

Лучший способ, который я нашел для достижения этой цели, - это встраивание шаблонов с сегментными переводами, дублирование групп шаблонов и дублирование каналов.

в blog/articles шаблон:

{embed="shared/.head" segment_2_translation="blogue" segment_3_translation="articles"}

в blogue/articles шаблон:

{embed="shared/.head" segment_2_translation="blog" segment_3_translation="articles"}

В shared/.head шаблон:

[...] <a href="/{lang}/{if embed:segment_2_translated}{segment_2_translated}/{/if}{if embed:segment_3_translated}{segment_3_translated}/{/if}">{if lang == "fr"}English{if:else}Français{/if}</a> [...]

И тогда вы можете создать Articles (FR) и Articles (EN) каналы, и у каждого будут свои уникальные заголовки URL. Вы также можете добавить настраиваемое поле отношения для каждого канала, чтобы связать запись с ее переводом.

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

Другие вопросы по тегам