i18n. Создание мультиязычного сайта, как?

Аватар пользователя digital_sword digital_sword 24 июля 2008 в 23:11

Поставил модуль, засунул в левую колонку, определение языка: Префикс пути с определением языка.
Как переводить интерфейс? Перехожу на русский, изменяю страницу, Язык в настройках страницы ставлю русский. Далее в блоке выбираю "English", тоже изменяю.
В итоге одно и то же на 2х языках.
На друпал.орг в "Read documentation" рассказывают о версии для пятерки. У меня шестая. Как правильно использовать этот модуль?

Комментарии

Аватар пользователя yugin yugin 25 июля 2008 в 6:12

смотрел модули i18n и localizer. но решил делать мультисайтингом: 2 базы, один двиг, одна тема оформления. контент строго разделен, нет заморочек с мультиязычными блоками, переводами, настройками модулей. вся "достройка" заняла минут 10: новая база, подключение нужных модулей на второй версии сайта (нужных оказалось меньше, чем на основном), несколько несложных настроек сайта. а переводить что в первом, что во втором случае - одинаково. хотя случаи бывают разные, может кому-то так и не подойдет.

Аватар пользователя yugin yugin 25 июля 2008 в 10:03

Не совсем понял вопрос про контент. Переводить как? Что в первом, что во втором случае, контент придется переводить вручную. При мультисайтинге получается второй сайт, где можно делать свою структуру и, соответственно, свои документы.

Сделать свой page.tpl.php тоже можно, но не обязательно. Он вам, так полагаю, нужен, чтобы делать разные главные страницы. Если будете делать с помощью i18n, понадобится вот что (вариант для версии 5, взято с друпал.орг. нужно вставить в settings.php. Далее можно будет, переключаясь между языками, менять заголовок сайта, слоган, главную страницу, информацию над контактной формой, и т.д).:

Quote:

/**
* Multilingual settings
*
* This is a collection of variables that can be set up for each language when i18n enabled.
* These are the basic ones for Drupal core, but you can add your own here.
*/
$conf['i18n_variables'] = array(
// Site configuration
'site_name',
'site_slogan',
'site_mission',
'site_footer',
'anonymous',
// Node help
'blog_help',
'story_help',
// User configuration
'user_registration_help',
'user_mail_welcome_subject',
'user_mail_welcome_body',
'user_mail_approval_subject',
'user_mail_approval_body',
'user_mail_pass_subject',
'user_mail_pass_body',
// Primary and secondary links
'menu_primary_menu',
'menu_secondary_menu';
// Theme settings. This is an 'all or nothing' for each theme
// This is for 'garland' theme, for other theme it would be 'theme_[themename]_settings'
'theme_garland_settings',
);

Аватар пользователя direqtor direqtor 25 июля 2008 в 9:58

Зависит от режима работы модуля. Можно делать контент независимым от языка, можно заводить для каждого языка свои страницы, а можно страницы переводить.

Аватар пользователя yugin yugin 25 июля 2008 в 10:01

Тоже верно. Опять же, все зависит от потребностей. В моем случае мультисайтинг оказался наиболее оптимальным вариантом.

Аватар пользователя anpal anpal 25 июля 2008 в 11:26

yugin!

Добрый день. Скажите пожалуйста для шестерки тоже нужно добавление в сетингс пхп и вообще можно ли обойтись без модуля i18n в шестерке. Как я понимаю этот модуль в шестерке нужен только для перевода пунктов меню, названия сайта и несколько иных пунктов, а затем его можно вообще убрать. Верно я понимаю или в чем-то ошибаюсь. Я продублирую мой запрос на который откликов не последовало и прошу Вашей помощи. Мне кажется Ваш вариант с дополнительной базой для другого языка на сегодняшний день самым верным, хотя есть и сомнения.
<<Строю сайт многоязычный на друпал 6.3. Дополнительные модули archive,token,switchlocale,nodetype,module_paths,fckeditor,
pathauto,admin_menu,il8n,submenutree.

По предложению форумчан 1)в самом конце файла settings.php добавил
/**
* Multilingual settings
*
* This is a collection of variables that can be set up for each language when i18n enabled.
* These are the basic ones for Drupal core, but you can add your own here.
*/
$conf['i18n_variables'] = array(
'site_name',
'site_slogan',
'site_mission',
'site_footer',
'anonymous',
'menu_primary_menu',
'menu_secondary_menu',
'contact_form_information',
);
2) В папку модуля pathauto добавил файл i18n-ascii.txt Текстовый документ 7 КБ

Однако в настройках http://andhost.net/ru/admin/build/path/pathauto# на Денвере, да и на хостинге anpal.net не могу проставить галочку для Transliterate prior to creating alias. В последнем предложении отмечено, что не установлен либо не установлен качественно модуль перевода.Transliterate prior to creating alias
When a pattern includes certain characters (such as those with accents) should Pathauto attempt to transliterate them into the ASCII-96 alphabet? Transliteration is handled by the Transliteration module. This option is disabled on your site because the Translation module either isn't installed, or isn't installed properly.

Подскажите пожалуйста где копать, сайт отлично переключается с английского на русский и естественно обратно. Прошу учесть в сайтостроении очень слаб, поиск не помог, моя Ася 413864841, заранее благодарю, с уважением Андрей Васильевич>>

Аватар пользователя yugin yugin 25 июля 2008 в 12:03

to anpal

Хммм, отвечу по пунктам:

1. Я пользуюсь 5-й версией, про 6-ку пока не могу сказать. i18n_variables, которые здесь выложил - тоже для 5-ки, но может и в 6-версии работать будут. В 6-ке же есть встроенная поддержка многоязычности, наверняка эти моменты тоже продуманы (разные заголовки сайта, слоганы, и т.д.) Но не уверен, так как нарекания на многоязычность в 6-ке тоже попадались.

2. Как я понял, проблема в pathauto, а с pathauto также не приходилось работать, за ненадобностью.

3. Мультисайтинг для разноязычного контента был выбран как наиболее подходящий, так как дополнительный сайт сильно отличается от основного. По крайней мере, пока. Не весь контент основного сайта нужен на дополнительном. Но самое главное - на основном есть регистрация пользователей, на дополнительном - нет. Хотя это тоже не проблема. Основная цель мультисайтинга и заключается в том, чтобы на разных сайтах могли регистрироваться и логиниться одни и те же пользователи.

Вот несколько интересных материалов, которые прочитал перед тем, как делать:
http://drupal.ru/node/1453
http://www.razgonka.ru/multisiting
http://drupal.ru/node/763
http://www.drupal.ru/node/100
http://www.drupal.ru/node/14935

Аватар пользователя anpal anpal 25 июля 2008 в 13:20

yugin!

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

Аватар пользователя digital_sword digital_sword 25 июля 2008 в 22:29

Еще раз, не совсем понял. В итоге у нас получается 1 сайт (1 папка со скриптами), и две базы (русская и английская), верно?
Зачем вообще нужен модуль i18n до сих пор загадка.
Еще вопрос: у меня меню прописано напрямую в файле page.tpl.php (Другой возможности нет). Значит ли это, что мне придется заводить две одинаковых папки со скриптами (с разными page.tpl.php) и две базы? Кстати с page-front.tpl.php такая же ситуация.

Аватар пользователя yugin yugin 26 июля 2008 в 5:18

to anpal

Да, все верно, но не так запутанно, как кажется. Под мультисайтингом обычно понимаются разные сайты на одном двиге. Но, например, пользователи могут быть общими. И для многоязычного сайта мультисайтинг тоже вполне подходит. Ведь в любом случае, второй язык - это вторая копия сайта, и я лично считаю, что ее лучше вынести отдельно. Но это у всех по разному. Кстати, ода из причин, почему выбрал такой способ - проще разбираться, если ошибка какая будет. Есть один небольшой недостаток при таком способе (хотя сложно его назвать недостатком, но все же) - при переключении языков, пользователь будет выходить каждый раз на главную страницу, тогда как при использовании i18n можно находиться на одной странице и переключаться между переводами. Возникает вопрос - а зачем? Пользователи разные, для каждого свой язык.

Аватар пользователя yugin yugin 26 июля 2008 в 5:31

to digital_sword

Один из способов (как у меня и сделано) - одна папка со скриптами, 2 базы. Английский сайт на поддомене как синоним. Но можно и одну базу использовать. Таблицы английского сайта сделать с префиксами, а если нужны общие пользователи, то оставить таблицы пользователей общими. Выше ссылки полезные есть, на Разгонке неплохо про это рассказано.

На счет меню: при мультисайтинге можно использовать свои темы и модули на разных сайтах. Делаем так: в папке sites делаем папку для второго сайта, например, sub.mysite.com (предварительно делаем синоним доменного имени на хостинге). В этой папке делаем modules для модулей второго сайта и themes для тем, которые будем использовать на втором сайте. Эти модули и темы будут доступны только на указанном сайте. Далее, делаем копию нужной темы, кладем в папку тем второго сайта, изменяем page.tpl.php, page-front.tpl.php как нам надо и если вообще надо, и получаем такую же тему на втором сайте. Пользователь разницы не увидит.

Аватар пользователя yugin yugin 26 июля 2008 в 5:42

Quote:

Один из способов (как у меня и сделано) - одна папка со скриптами, 2 базы. Английский сайт на поддомене как синоним. Но можно и одну базу использовать. Таблицы английского сайта сделать с префиксами, а если нужны общие пользователи, то оставить таблицы пользователей общими. Выше ссылки полезные есть, на Разгонке неплохо про это рассказано.
На счет меню: при мультисайтинге можно использовать свои темы и модули на разных сайтах. Делаем так: в папке sites делаем папку для второго сайта, например, sub.mysite.com (предварительно делаем синоним доменного имени на хостинге). В этой папке делаем modules для модулей второго сайта и themes для тем, которые будем использовать на втором сайте. Эти модули и темы будут доступны только на указанном сайте. Далее, делаем копию нужной темы, кладем в папку тем второго сайта, изменяем page.tpl.php, page-front.tpl.php как нам надо и если вообще надо, и получаем такую же тему на втором сайте. Пользователь разницы не увидит.

вот блин, выдал "сайт недоступен", а сообщение принял. а говорили Мастерхост хороший хостинг. не верю!

Аватар пользователя digital_sword digital_sword 26 июля 2008 в 8:34

yugin, объясните, а почему вы не пользуетесь i18n? Преимущества модуля вижу: не надо заводить 2 базы, копировать пользователей, кстати каждый раз, при переключении на ту же страницу. (правда пока не знаю как модулем правильно пользоваться, но эти плюсы точно есть). А недостатки в чем? Почему вы выбрали 2 базы?

Аватар пользователя yugin yugin 26 июля 2008 в 9:03

Выше уже писал почему: основная причина - на одном есть регистрация, разные роли, а на другом всего этого нет. И смешивать не хотелось. Хотелось сделать отдельную ветку. Также, не весь контент должен присутствовать на другой ветке.
Пользователей копировать не надо, да и 2 базы заводить тоже не обязательно. Внимательно почитайте вот это: http://www.razgonka.ru/multisiting и ссылки, что выше давал, станет все понятно про мультисайтинг и пользователей.
Сам же модуль i18n очень неплох. на мой взгляд, лучше localizerа.
Если говорить о переключении языков, то разницы между использованием модуля и второй базы почти нет. Человеку, не говорящему по-русски, нет надобности переключать страницу на русский или любой другой. Соответственно, и ветка сайта совсем другая, и просмотр можно начинать с главной страницы.
Да и в случае сбоя, куда проще разбираться с 2-мя разными ветками, чем с одной, где все в куче. Ну, это кому-как, на самом деле.