Существует множество способов создать многоязычный сайт или сайт для конкретной страны в ExpressionEngine для доставки контента , специфичного для каждого языка / страны .
Два наиболее популярных решения обобщены в следующих статьях ExpressionEngine Wiki:
Основная идея - представить ваш контент на разных языках, используя комбинацию сегментов URL, пользовательских полей и немного PHP.
Преимущества
- Одна запись управляет несколькими языками
- Простая структура URL
Например, скажем, у вас есть сайт на трех языках: английский (en), испанский (es) и немецкий (de).
Для каждого элемента контента на вашем сайте вы должны создать настраиваемое поле с идентификатором языка в виде постфикса (или префикса, независимо от того, что вы предпочитаете) для полей.
Имена пользовательских полей могут выглядеть следующим образом:
custom_field_en
custom_field_es
custom_field_de
Для переключения между языками просто добавьте соответствующий сегмент URL (/en
, /es
или /de
), который соответствует языку:
example.com/template_group/template/en
example.com/template_group/template/es
example.com/template_group/template/de
Основным преимуществом этого подхода является то, что он сохраняет все версии вашего контента в одной записи, делая обновления и правки легкими и последовательными.
Альтернативный подход заключается в создании подкаталогов для каждой страны и использовании глобальных переменных path.php
ExpressionEngine для хранения кода страны и / или языка в качестве переменной.
Преимущества
- PHP не требуется
- Нет необходимости отслеживать, какой сегмент содержит языковую переменную
- Элегантная структура URL
Используя те же 3 языка в качестве примера из первого метода, вы создадите новый каталог в корне вашей установки EE и назовете его после кода страны языка, который вы хотите добавить:
Структура вашей папки может выглядеть следующим образом:
+ /de
+ /en
+ /es
index.php
+ /images
+ /system
+ /themes
Чтобы этот метод работал, поместите копию основного index.php
внутри каждой языковой директории. Затем вы должны изменить каждый файл, назначив переменные, соответствующие каталогу каждого языка:
$assign_to_config['site_index'] = 'http://www.example.com/en/';
$assign_to_config['global_vars'] = array(
"country_code" => "en",
"language" => "english"
);
Созданные URL будут использовать любой язык / название страны, которое вы выберете:
example.com/es-MX/template_group/template/
example.com/MX/template_group/template/
Основным преимуществом альтернативного подхода является использование глобальных переменных, используя тот факт, что они анализируются очень рано и могут использоваться практически в любом месте в шаблонах.
См .: Порядок разбора ExpressionEngine (PDF, 33 КБ)
Другие решения
Используя философию ExpressionEngine, гибкость, которую вы получаете как дизайнер / разработчик, позволяет адаптировать индивидуальное решение, отвечающее вашим уникальным потребностям.
Если любой из этих подходов не совсем соответствует вашим потребностям, вы можете легко создать свой собственный метод или использовать гибридный подход.
Имея это в виду, хорошей отправной точкой было бы изучение Многоязычных дополнений в Devot-ee , которые могут помочь в вашем развитии.