Как сделать главную страницу на определенном языке?

Пт, 29/05/2009 - 19:33

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

Вопрос: как, не меняя ничего в настройках, сделать так, чтобы ТОЛЬКО главная страница по умолчанию открывалась НЕ НА дефолтном языке?
Пробовала проверить главная ли это страница в page.tpl.php, но там, даже если в УРЛ нет никаких намеков на язык, все равно сразу присутствует переменная языка...

0 Спасибо

Комментарии

Аватар пользователя Fanny@drupal.org
6 лет 11 months назад Fanny@drupal.org #

Что за переменная языка? Дайте коду.

0 Спасибо
Аватар пользователя Лампочка
6 лет 11 months назад Лампочка #

На хостинге нет поддержки чистых УРЛ. Поэтому УРЛ выглядит так: mysite.com/?q=ru/frontpage
В источнике сайте написано
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
в page.tpl.php это записано так:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>">

Так вот, даже когда в адресной строке стоит только название стайта, т.е. mysite.com, все равно сразу $language->language - это "ru". Мне надо, чтобы ТОЛЬКО при условии, что в адресной строке стоит mysite.com без ничего, язык был другим, а когда язык уже выбран, или пользователь зашел на внутреннюю страницу, то контент показывался бы уже на выбранном языке. Как это проверить в ПХП? Т.е. как проверить, что пользователь зашел на главную страницу и ничего не выбрал?

0 Спасибо
Аватар пользователя Fanny@drupal.org
6 лет 11 months назад Fanny@drupal.org #

таки как то так

<?php
if (!drupal_is_front_page())
{
тут выводим заголовок НЕ для главной
}
тут выводим заголовок для главной
?>

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

0 Спасибо
Аватар пользователя Лампочка
6 лет 11 months назад Лампочка #

Fanny@drupal.org, спасибо, сейчас попробую

Если if (!drupal_is_front_page()) - это проверка именно на то, что страница является главной без всяких переменных ГЕТ, то не проблема изменить не только название, но и все остальное только для главной.

0 Спасибо
Аватар пользователя Лампочка
6 лет 11 months назад Лампочка #

Не работает. Сделала просто проверку

<?php
if (!drupal_is_front_page())
{
print 
"notfront";
}
print 
"front";
?>

Пишет front и в том случае, если в адресной строке mysite.com/?q=ru и если просто mysite.com, и даже если стоит mysite.com/?q=he

Причина, скорее всего, кроется в том, что в Главная › Настройка сайта › О сайте
в поле "Главная страница по умолчанию: *"
стоит http://mysite.com/?q=ru?q=, и только после этого можно вставить название главной страницы (в моем случае frontpage)
поэтому mysite.com/?q=ru?q= у меня уже является главной страницей, и я не могу изменить язык. Странность в том, что при переходе на иврит, в главной странице по умолчанию стоит уже http://mysite.com/?q=he?q=, но при наборе mysite.com все равно открывается русский.

0 Спасибо
Аватар пользователя Fanny@drupal.org
6 лет 11 months назад Fanny@drupal.org #

Кхм... Ну да, такая проверка не поможет... Главная есть главная, вне зависимости от языка...

Простите, обьясните еще раз задачу, чтото я путаться начинаю...

0 Спасибо
Аватар пользователя Лампочка
6 лет 11 months назад Лампочка #

Спасибо за участие!
Есть два языка, русский и иврит. Дефолтным у меня поставлен русский (и изменить это уже невозможно, т.к. переводы портятся), но надо, чтобы главная страница открывалась на иврите, если язык не выбран. Чтобы при наборе в адресной строке mysite.com - открывалась главная на иврите.

0 Спасибо
Аватар пользователя Лампочка
6 лет 11 months назад Лампочка #

Использую модуль i18n для мультиязычности.

0 Спасибо
Аватар пользователя PVasili
6 лет 11 months назад PVasili #

Версия какая? Почему переводы портятся?

0 Спасибо
Аватар пользователя compawa
6 лет 11 months назад compawa #

Если речь идет о сайте dolgof.com из Вашего профиля, то он открывается на иврите для анонимного пользователя...
Для зарегистрированного пользователя сайт скорее всего открывается на том языке который указан в профиле пользователя My account/Edit, это можно изменить на странице admin/settings/language/configure поставив значение Path prefix only или Path prefix with language fallback.
Ну и если перевод ломается, то думаю поможет повторный импорт перевода, после смены дефолтного языка (видимо излишне добавлять что базу забекапить надо перед экспериментами).

PS, Не внимательно прочитал, речь о терминах, а не о переводе, термины, по новой переводить придется при смене дефолтного языка

0 Спасибо
Аватар пользователя Лампочка
6 лет 11 months назад Лампочка #

compawa, нет, свой сайт (долгоф) я писала вручную, без всяких друпалов.

Но вы-таки разрешили мою проблему - когда я в прошлый раз меняла дефолтный язык, то заходила не как аноним, а от своего имени, и поэтому сайт открывался по-русски. Даже не подумала, что надо зайти анонимом. Теперь все нормально. Только термины надо по новой (кошмар, я их уже раз по двадцать переводила по новой по разным причинам...)

0 Спасибо
Аватар пользователя Лампочка
6 лет 11 months назад Лампочка #

Все-таки, я решила не менять дефолтный язык, слишком много переводить по новой. Может все же есть способ автоматом переправить анонима на иврит?...

Как проверить, аноним это или нет?

0 Спасибо
Аватар пользователя compawa
6 лет 11 months назад compawa #

Тут смогу посоветовать только одно: Установить надстройку Translation table к модулю i18 и всеж таки на раз сделать нормальный перевод для терминов. Это позволит в дальнейшем безболезненно переключать дефолтный язык, ну и избавит от возможных проблем и путаницы при добавлении новых терминов и переводов по мере развития сайта.

0 Спасибо
Аватар пользователя compawa
6 лет 11 months назад compawa #

Это позволит в дальнейшем безболезненно переключать дефолтный язык

Все равно не позволит :(, термины придется переименовывать.

0 Спасибо
Аватар пользователя PVasili
6 лет 11 months назад PVasili #
Лампочка написал:
Все-таки, я решила не менять дефолтный язык, слишком много переводить по новой. Может все же есть способ автоматом переправить анонима на иврит?...

- с чем проблемы в переводах то?
Давайте я добавлю иврит на сервер локализации, существующий в списке проект - мертвый :(

Лампочка написал:
Как проверить, аноним это или нет?

$logged_in - False для анонимов, $is_front - True для главной, $language - свойства языка (посмотрите их print_r($language))

0 Спасибо
Аватар пользователя Лампочка
6 лет 11 months назад Лампочка #

compawa, не знала о таком модуле :(((
В следующий раз воспользуюсь, в этом проекте нет уже никаких сил...

PVasili, основной перевод друпала есть на сайте израильского сообщества - drupal.org.il, но на иврит все равно переводов процентов на 60 меньше, чем на русский, и с темизациями куча проблем, и с направлениями. ПРишлось очнь многое править.

Спасибо за переменные, попробую что-то с ними сделать. ТОЛько все равно невозможно проверить, переключился аноним на другой язык, или нет. Потому что когда он впервые заходит на главную страницу, переменная языка в $language уже есть, и это "ru". Скажем, я сделаю, чтобы при заходе на главную для анонима страница всегда показывалась на иврите, тогда он вообще не сможет переключиться на русский :(

А как выудить переменную языка именно из адресной строки?... Там все переменные ?q=...

0 Спасибо
Аватар пользователя Лампочка
6 лет 11 months назад Лампочка #

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

0 Спасибо
Аватар пользователя Лампочка
6 лет 11 months назад Лампочка #
compawa написал:
Все равно не позволит :(, термины придется переименовывать.

Жуть...

0 Спасибо
Аватар пользователя compawa
6 лет 11 months назад compawa #
Лампочка написал:
compawa написал:
Все равно не позволит :(, термины придется переименовывать.

Жуть...

Ссылочку здесь приведу, может кому пригодится на будущее Translating user defined strings и выдержку из текста:

Warning: Whenever you change the default language, you'll need to manually recreate all the source strings so they are defined in that language. This means you may need to edit all your menu items, (localizable) taxonomy terms, etc.. The translations for other languages will be kept though.
Thus you need to decide your default language early on, when setting up your site. Changing the default language back and forth is unsupported and strongly discouraged.

0 Спасибо
Аватар пользователя Лампочка
6 лет 11 months назад Лампочка #

compawa, да я нашла это вчера на друпал.орг, где эту проблему обсуждали.

Так все же, как выудить переменную языка именно из адресной строки?... Там все переменные ?q=

0 Спасибо
Аватар пользователя burn
6 лет 10 months назад burn #

а что

<?php
if ($_SERVER['QUERY_STRING']) { 
  ... 
} else { 
  ...
?>

разве не поможет?

ну или там самостоятельно распарсить QUERY_STRING раз уж такой исключительный случай надо обработать...

0 Спасибо
Аватар пользователя Лампочка
6 лет 10 months назад Лампочка #

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

0 Спасибо
Аватар пользователя burn
6 лет 10 months назад burn #

а, так дело в этом было?

кстати с этой функцией связан интересный момент с которым я столкнулся -

если для дефолтного языка не задан path-префикс (что по умолчанию обычно так и есть) то при включенном автодеткте языка и если язык у пользователя в браузере не совпадает с дефолтным переключится на дефолтный язык через меню не получается - без префикса показывает всегда страницы на авто-продетектированном языке. Для исправления достаточно в настройках дефолтного языка указать path-префикс для него.

0 Спасибо
Аватар пользователя Лампочка
6 лет 10 months назад Лампочка #

У меня указан :)

0 Спасибо
Аватар пользователя volocuga
6 лет 10 months назад volocuga #
compawa написал:
Warning: Whenever you change the default language, you'll need to manually recreate all the source strings so they are defined in that language.

Я так понял это только для 6-ки? Вроде в 5-й таких траблов не было (с i18n)

0 Спасибо
Аватар пользователя Alexmelin
5 лет 3 months назад Alexmelin #

Спасибо, burn, помогло.

0 Спасибо