Expression Engine i18n - PullRequest
       3

Expression Engine i18n

2 голосов
/ 27 июня 2011

Есть ли у Expression Engine встроенное решение для i18n (интернационализация)?

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

1 Ответ

2 голосов
/ 27 июня 2011

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

Два наиболее популярных решения обобщены в следующих статьях ExpressionEngine Wiki:

Многоязычные сайты в ExpressionEngine

Основная идея - представить ваш контент на разных языках, используя комбинацию сегментов 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

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


Многоязычные сайты в ExpressionEngine, Альтернатива

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

...