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

Любая помощь по установке/настройке/модификации concrete5

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

Сообщение Nikolay » 27 май 2013, 21:05 ,  »  Сообщение:#1

Здравствуйте!

Возникла проблема с моим первым сайтом на 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. Очень неудобно и не оптимально, но суть не в этом, а в том что я понимаю, как теперь настроить отдельное меню навигации для русского раздела. Сейчас в нем естественно показывается английское меню. Посоветуйте, пожалуйста, как быть.
Nikolay
 
Сообщения: 2
Зарегистрирован: 27 май 2013, 20:58

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

Сообщение karlo » 28 май 2013, 12:21 ,  »  Сообщение:#2

скиньте скрин настройки модуля мультиязычности
Аватара пользователя
karlo
 
Сообщения: 24
Зарегистрирован: 13 апр 2013, 14:04

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

Сообщение MonoStas » 28 май 2013, 13:54 ,  »  Сообщение:#3

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

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

Я так делаю, мне удобно. Может кто удобнее и практичнее знает метод. Опишите его.
Пользую: CentOS 6.5, Ubuntu, Nginx, PHP, MySQL, Python, Sublime Text 3, CSS3, HTML5, jQuery...... Concrete5 (-;
Аватара пользователя
MonoStas
 
Сообщения: 80
Зарегистрирован: 11 окт 2012, 19:21
Откуда: Москва

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

Сообщение Nikolay » 28 май 2013, 18:25 ,  »  Сообщение:#4

karlo писал(а):скиньте скрин настройки модуля мультиязычности

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

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

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

К сожалению не представляю, как сделать меню самостоятельно. У меня проблема в том что блок с меню помещается в area которая включена в шаблон и автоматически помещается на каждую страницу сайта. Как сделать так, чтобы для половины страниц там показывался один блок, а для половины другой, я пока не знаю.
Nikolay
 
Сообщения: 2
Зарегистрирован: 27 май 2013, 20:58

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

Сообщение cmsservice » 28 май 2013, 23:01 ,  »  Сообщение:#5

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

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

Я бы еще сделал отдельные типы страниц для русской и английской части сайтов.
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

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

Сообщение Kiskenbassker » 29 май 2013, 17:13 ,  »  Сообщение:#6

Хотел задать еще вопросы касательно мультиязычности.

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. А если я хочу, к примеру, сделать его ссылками? Может есть какой-то альтернативный вариант переключателя (на оф сайте что-то не нашел), или надо самому писать код?
CONCRETE cold face cased in steel... (King Crimson)
Аватара пользователя
Kiskenbassker
 
Сообщения: 35
Зарегистрирован: 19 апр 2013, 10:13

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

Сообщение Count_Raven » 29 май 2013, 17:51 ,  »  Сообщение:#7

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

Не знаю насчет наличия альтернативных переключателей. Но, опять же, чего искать? Больше времени потратите на поиски. Там немножко работы и будет у вас собственный переключатель, какой захотите.
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

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

Сообщение Kiskenbassker » 29 май 2013, 17:57 ,  »  Сообщение:#8

Count_Raven

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

А что значит «Закодить в основном шаблоне сайта»?
CONCRETE cold face cased in steel... (King Crimson)
Аватара пользователя
Kiskenbassker
 
Сообщения: 35
Зарегистрирован: 19 апр 2013, 10:13

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

Сообщение cmsservice » 29 май 2013, 18:04 ,  »  Сообщение:#9

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 для модуля переключений на основе вьюшки вообще нет никакой проблемы.
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

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

Сообщение Kiskenbassker » 29 май 2013, 18:33 ,  »  Сообщение:#10

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

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



Но все равно непонятно, где именно указано значение этого Read More для разных языковых версий сайта?
CONCRETE cold face cased in steel... (King Crimson)
Аватара пользователя
Kiskenbassker
 
Сообщения: 35
Зарегистрирован: 19 апр 2013, 10:13

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

Сообщение Count_Raven » 29 май 2013, 18:41 ,  »  Сообщение:#11

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

Ясно, тогда да. Но опять же, если Kiskenbassker'у использовать данный подход, то для сторонних дополнений ему придется делать файлы локализации.
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant

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

Сообщение Count_Raven » 29 май 2013, 18:46 ,  »  Сообщение:#12

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

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

Пакеты дополнений могут таскать с собой свои файлы локализации. Тогда они лежат в /packages/НАЗВАНИЕ_ДОПОЛНЕНИЯ/languages/ а структура такая же, как и в основной /languages
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant


Вернуться в Помощь по concrete5

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron