Страница 1 из 1

Мультиязычный сайт

СообщениеДобавлено: 27 май 2013, 21:05
Nikolay
Здравствуйте!

Возникла проблема с моим первым сайтом на concrete5. Изначально сайт был на английском, понадобилось добавить русский язык. Я поставил модуль Мультиязычность и сделал следующую структуру сайта:

Home
-eng
--page1e
--page2e
--page3e
-rus
--page1r
--page2r
--page3r

В результате сломалось навигационное меню. До добавления второго языка оно выглядело как Home|page1e|page2e|page3, добиться аналогичного результата с новой структурой не удалось. Пришлось поменять ее таким вот образом:

Home
-eng
--Home_e
--page1e
--page2e
--page3e
-rus
--Home_r
--page1r
--page2r
--page3r

Для меню указал включать страницы под "eng" и все заработало. С Home модуль Мультиязычность сделал редирект на eng а с eng я настроил редирект на Home_e. Очень неудобно и не оптимально, но суть не в этом, а в том что я понимаю, как теперь настроить отдельное меню навигации для русского раздела. Сейчас в нем естественно показывается английское меню. Посоветуйте, пожалуйста, как быть.

Re: Мультиязычный сайт

СообщениеДобавлено: 28 май 2013, 12:21
karlo
скиньте скрин настройки модуля мультиязычности

Re: Мультиязычный сайт

СообщениеДобавлено: 28 май 2013, 13:54
MonoStas
Я лично делаю меню вручную. Редко когда бывают случаи, чтобы ссылок нужно было over 9000. А вот когда все необходимо перекроить, добавить иконку, стиль, поменять местами - зачастую. Хорошее меню - самопальное меню. Рекомендую попробовать в директории themes/your_theme создать директорию типа /inc и туда вынести менюшку в виде файлика menu.php, а в нужном шаблоне страницы, например full.php подключить его

Код: Выделить всё
<? $this->inc('inc/menu.php'); ?>

Я так делаю, мне удобно. Может кто удобнее и практичнее знает метод. Опишите его.

Re: Мультиязычный сайт

СообщениеДобавлено: 28 май 2013, 18:25
Nikolay
karlo писал(а):скиньте скрин настройки модуля мультиязычности

Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку
- этот? Есть еще страница Page Report, но я честно говоря пока не разобрался, как она работает.
MonoStas писал(а):Я лично делаю меню вручную. Редко когда бывают случаи, чтобы ссылок нужно было over 9000. А вот когда все необходимо перекроить, добавить иконку, стиль, поменять местами - зачастую. Хорошее меню - самопальное меню. Рекомендую попробовать в директории themes/your_theme создать директорию типа /inc и туда вынести менюшку в виде файлика menu.php, а в нужном шаблоне страницы, например full.php подключить его

Код: Выделить всё
<? $this->inc('inc/menu.php'); ?>

Я так делаю, мне удобно. Может кто удобнее и практичнее знает метод. Опишите его.

К сожалению не представляю, как сделать меню самостоятельно. У меня проблема в том что блок с меню помещается в area которая включена в шаблон и автоматически помещается на каждую страницу сайта. Как сделать так, чтобы для половины страниц там показывался один блок, а для половины другой, я пока не знаю.

Re: Мультиязычный сайт

СообщениеДобавлено: 28 май 2013, 23:01
cmsservice
Nikolay писал(а):У меня проблема в том что блок с меню помещается в area которая включена в шаблон и автоматически помещается на каждую страницу сайта. Как сделать так, чтобы для половины страниц там показывался один блок, а для половины другой, я пока не знаю.

Так там эта область создается как GlobalArea наверное, а сделайте просто Area, модуль русского меню поместите в стек с названием что-то вроде "Меню (рус.)", с английским по аналогии.

Я бы еще сделал отдельные типы страниц для русской и английской части сайтов.

Re: Мультиязычный сайт

СообщениеДобавлено: 29 май 2013, 17:13
Kiskenbassker
Хотел задать еще вопросы касательно мультиязычности.

1. Мне нужно вывести список страниц со ссылкой «Подробнее» на разных языках, т.е. чтобы в русской версии эта ссылка была «Подробнее», в английской — Read More и т.п. Насколько я понимаю, код будет примерно такой:
Код: Выделить всё
      <h3 class="ccm-page-list-title"><?php  echo $title ?></h3>
      <div class="ccm-page-list-description">
         <?php  echo $description ?>
      </div>
           <a href="<?php  echo $url ?>" target="<?php  echo $target ?>"><?php echo 'Подробнее' ?></a>

Вопрос такой: можно ли в <?php echo 'Подробнее' ?> поставить какую-то переменную, которая будет определена и будет меняться в зависимости от того, какой язык выбран (типа как в Joomla, где эти вещи прописаны в языковых файлах), или нужно для каждой языковой версии создавать свой шаблон, в котором слово «Подробнее» будет написано на нужном мне языке?

2. Установил модуль Multilingual, но он предлагает всего один вариант вида переключателя языков — это Select List. А если я хочу, к примеру, сделать его ссылками? Может есть какой-то альтернативный вариант переключателя (на оф сайте что-то не нашел), или надо самому писать код?

Re: Мультиязычный сайт

СообщениеДобавлено: 29 май 2013, 17:51
Count_Raven
Kiskenbassker писал(а):1. Мне нужно вывести список страниц со ссылкой «Подробнее» на разных языках, т.е. чтобы в русской версии эта ссылка была «Подробнее», в английской — Read More и т.п. Насколько я понимаю, код будет примерно такой:
Код: Выделить всё
      <h3 class="ccm-page-list-title"><?php  echo $title ?></h3>
      <div class="ccm-page-list-description">
         <?php  echo $description ?>
      </div>
           <a href="<?php  echo $url ?>" target="<?php  echo $target ?>"><?php echo 'Подробнее' ?></a>

Вопрос такой: можно ли в <?php echo 'Подробнее' ?> поставить какую-то переменную, которая будет определена и будет меняться в зависимости от того, какой язык выбран (типа как в Joomla, где эти вещи прописаны в языковых файлах), или нужно для каждой языковой версии создавать свой шаблон, в котором слово «Подробнее» будет написано на нужном мне языке?

Просто когда вы создаете многоязычную структуру сайта, то вы фактически не меняете никакой язык для системы. Просто сделали разные версии страниц для разных языков.
Можете закодить это в основном шаблоне сайта.
Можете сделать для каждого языка шаблончик для блока "Список страниц".
Там дел-то по сути 5 минут. Сделал и забыл.

Kiskenbassker писал(а):2. Установил модуль Multilingual, но он предлагает всего один вариант вида переключателя языков — это Select List. А если я хочу, к примеру, сделать его ссылками? Может есть какой-то альтернативный вариант переключателя (на оф сайте что-то не нашел), или надо самому писать код?

Не знаю насчет наличия альтернативных переключателей. Но, опять же, чего искать? Больше времени потратите на поиски. Там немножко работы и будет у вас собственный переключатель, какой захотите.

Re: Мультиязычный сайт

СообщениеДобавлено: 29 май 2013, 17:57
Kiskenbassker
Count_Raven

Ну кому 5 минут... а мне гораздо больше. Если вообще получится.

А что значит «Закодить в основном шаблоне сайта»?

Re: Мультиязычный сайт

СообщениеДобавлено: 29 май 2013, 18:04
cmsservice
Count_Raven писал(а):Просто когда вы создаете многоязычную структуру сайта, то вы фактически не меняете никакой язык для системы. Просто сделали разные версии страниц для разных языков.

Не не, если использовать их Internationalization, то там как раз язык переключается.
Чтобы транслировать строки внутри модуля нужно делать так:
Код: Выделить всё
$mlh = Loader::helper("section", 'multilingual');
$loc = Localization::getInstance();
$loc->setLocale($mlh->getLanguage());
echo t('Read More...');


Kiskenbassker писал(а):2. Установил модуль Multilingual, но он предлагает всего один вариант вида переключателя языков — это Select List. А если я хочу, к примеру, сделать его ссылками? Может есть какой-то альтернативный вариант переключателя (на оф сайте что-то не нашел), или надо самому писать код?

Сделать template для модуля переключений на основе вьюшки вообще нет никакой проблемы.

Re: Мультиязычный сайт

СообщениеДобавлено: 29 май 2013, 18:33
Kiskenbassker
cmsservice писал(а):
Count_Raven писал(а):Просто когда вы создаете многоязычную структуру сайта, то вы фактически не меняете никакой язык для системы. Просто сделали разные версии страниц для разных языков.

Не не, если использовать их Internationalization, то там как раз язык переключается.
Чтобы транслировать строки внутри модуля нужно делать так:
Код: Выделить всё
$mlh = Loader::helper("section", 'multilingual');
$loc = Localization::getInstance();
$loc->setLocale($mlh->getLanguage());
echo t('Read More...');



Но все равно непонятно, где именно указано значение этого Read More для разных языковых версий сайта?

Re: Мультиязычный сайт

СообщениеДобавлено: 29 май 2013, 18:41
Count_Raven
[quote="cmsservice"]Не не, если использовать их Internationalization, то там как раз язык переключается.
Чтобы транслировать строки внутри модуля нужно делать так:
Код: Выделить всё
$mlh = Loader::helper("section", 'multilingual');
$loc = Localization::getInstance();
$loc->setLocale($mlh->getLanguage());
echo t('Read More...');

Ясно, тогда да. Но опять же, если Kiskenbassker'у использовать данный подход, то для сторонних дополнений ему придется делать файлы локализации.

Re: Мультиязычный сайт

СообщениеДобавлено: 29 май 2013, 18:46
Count_Raven
Kiskenbassker писал(а):Но все равно непонятно, где именно указано значение этого Read More для разных языковых версий сайта?

Основные файлы локализации лежат в /languages и там соответствующие подпапки для языков.
Они лежат в скомпилированном формате GetText (*.mo), исходная информация в *.po файлах. Для редактирования исходных файлов нужно использовать программу, к примеру POEdit.

Пакеты дополнений могут таскать с собой свои файлы локализации. Тогда они лежат в /packages/НАЗВАНИЕ_ДОПОЛНЕНИЯ/languages/ а структура такая же, как и в основной /languages