Возможно ли для записи иметь два 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. Вы также можете добавить настраиваемое поле отношения для каждого канала, чтобы связать запись с ее переводом.
Это кажется грязным, но это единственный способ, которым я мог бы заставить его работать без модулей, плагинов или чего-то еще.