Я пытаюсь сделать мультиязычный сайт в 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())); ?>
Навигация похожа на:
по умолчанию en:
- около
- Продукты / producta
- Продукты / productb
И другой язык:
п:
- overons
- Продукты / producta
- Продукты / productb
Это показывает правильную навигацию. Но выбранный язык не «импортируется» в URL. Так что исчезает всегда.
Пример:
Если я на странице о (английский по умолчанию), и я меняю язык на nl. Это все еще показывает страницу о, но с правильной голландской навигацией. У меня есть несколько вопросов по этому поводу.
(Решено в этой части) Есть ли возможность, чтобы язык всегда был в URL? Я посмотрел в меню класс (http://docs.getfuelcms.com/libraries/menu) но не мог добавить это.
Могу ли я иметь 1 страницу в CMS с мультиязычностью? Если я поменяю язык, то он покажет правильный голландский текст?
Что-то вроде
{language=en}About the company{/language}
{language=nl}Over het bedrijf{/language}
Мне удалось решить одну часть моей проблемы.
Я добавил страницу «overons» (параметр языка для NL, местоположение overons)
А потом я вручную добавил навигацию для этой страницы с параметром местоположения nl / overons. Это работает.
Только если я меняю язык, пока я на английской странице, он остается на английском. Поэтому я не могу связать страницы с переведенными страницами.
Кажется возможным, если я добавлю их вручную в папке просмотра. Но я не знаю, как это исправить в CMS.
Просмотр страниц
Кроме того, если ваши страницы используют представления и есть язык
значение, установленное пользователем с помощью Fuel_language, он сначала будет искать
просмотреть файл в папке views / language / {language} /, и если это не так
найти его, по умолчанию будет только папка просмотров.
РЕДАКТИРОВАТЬ:
Я использовал другой метод, чтобы решить это. Только еще не импортированы в CMS.
Я создал следующая структура в представлениях:
язык /
язык / фр /
язык / фр / home.php
язык / фр / company.php
—
язык / нл /
язык / нл / home.php
язык / нл / company.php
И в карта глобальных видов, я добавлен дом & company.php.
И для правильного меню у меня есть этот код в
просмотров / _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é';
}
Других решений пока нет …