Я пытаюсь создать многоязычный сайт в codeigniter с помощью FuelCMS. Я выяснил некоторые вещи:
Я добавил многоязычный вариант в MY_fuel.php
$config['language_mode'] = 'segment';
$config['settings']['languages'] = array(
'type' => 'keyval',
'fields' => array(
'key' => array('ignore_representative' => TRUE),
'label' => array('ignore_representative' => TRUE),
),
'class' => 'repeatable',
'repeatable' => TRUE,
'ignore_representative' => TRUE
);
Я настроил навигацию для разных языков.
<?php echo fuel_nav(array('container_tag_id' => 'masterMenu', 'item_id_prefix' => 'menu-item','subcontainer_tag_class' => array("subMenu"),'language' => $this->fuel->language->selected())); ?>
Навигация выглядит так:
default en:
- около
- Продукты /producta
- Продукты /productb
И другой язык:
п:
- overons
- Продукты /producta
- Продукты /productb
Он показывает правильную навигацию. Но выбранный язык не "импортируется" в URL. Так что он исчезает всегда.
Пример. Если я на странице about (английский по умолчанию), и я меняю язык на nl. Он по-прежнему показывает страницу, но с правильной навигацией на голландском языке. Поэтому у меня есть некоторые вопросы.
(РЕШАЕТ ЭТУ ЧАСТЬ) Есть ли возможность всегда иметь язык в URL-адресе? Я посмотрел в классе меню (http://docs.getfuelcms.com/libraries/menu), но не смог его добавить.
Могу ли я иметь 1 страницу в CMS, которая имеет в ней многоязычность? Если я изменю язык, то он покажет правильный голландский текст?
Что-то вроде
{language=en}About the company{/language}
{language=nl}Over het bedrijf{/language}
Мне удалось решить одну часть моей проблемы.
Я добавил страницу "overons" (параметр языка для NL, переопределение местоположения). Затем я вручную добавил навигацию для этой страницы с параметром местоположения nl/overons. Это работает.
Только если я изменю язык, пока я на английской странице, он остается на английском. Поэтому я не могу связать страницы с переведенными страницами.
Кажется, это возможно, если я добавлю их вручную в папку просмотра. Но я не знаю, как это исправить в CMS.
Просмотр страниц
Кроме того, если ваши страницы используют представления и есть языковое значение, заданное пользователем с использованием Fuel_language, сначала будет искать файл вида в папке views/language/{language}/, и если он его не найдет, он по умолчанию будет только папка views.
РЕДАКТИРОВАТЬ:
Я использовал другой метод для его решения. Только не импортировано в CMS.
Я создал в представлениях следующую структуру:
язык /
язык/фр/
язык/фр/home.php
язык/фр/company.php
-
язык/нл/
язык/нл /home.php
язык/нл /company.php
И на карте глобальных просмотров я добавил home & company.php.
И для правильного меню у меня есть этот код в views/_variables/nav.php
if($this->fuel->language->selected() == "nl"){
$nav['home'] = 'Home';
$nav['contact'] = 'Contact';
$nav['company'] = 'Over ons';
}
if($this->fuel->language->selected() == "en"){
$nav['home'] = 'Home';
$nav['contact'] = 'Contact';
$nav['company'] = 'About us';
}
if($this->fuel->language->selected() == "fr"){
$nav['home'] = 'Accueil';
$nav['contact'] = 'Contact';
$nav['company'] = 'Société';
}