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

Главные вкладки

Аватар пользователя Лампочка Лампочка 29 мая 2009 в 23:33

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

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

Комментарии

Аватар пользователя Лампочка Лампочка 29 мая 2009 в 23:55

На хостинге нет поддержки чистых УРЛ. Поэтому УРЛ выглядит так: 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 без ничего, язык был другим, а когда язык уже выбран, или пользователь зашел на внутреннюю страницу, то контент показывался бы уже на выбранном языке. Как это проверить в ПХП? Т.е. как проверить, что пользователь зашел на главную страницу и ничего не выбрал?

Аватар пользователя Fanny@drupal.org Fanny@drupal.org 30 мая 2009 в 0:04

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

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

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

Аватар пользователя Лампочка Лампочка 30 мая 2009 в 0:23

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

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

Аватар пользователя Лампочка Лампочка 30 мая 2009 в 0:36

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

<?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 все равно открывается русский.

Аватар пользователя Fanny@drupal.org Fanny@drupal.org 30 мая 2009 в 0:44

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

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

Аватар пользователя Лампочка Лампочка 30 мая 2009 в 0:54

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

Аватар пользователя compawa compawa 30 мая 2009 в 10:05

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

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

Аватар пользователя Лампочка Лампочка 30 мая 2009 в 22:34

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

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

Аватар пользователя Лампочка Лампочка 30 мая 2009 в 22:49

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

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

Аватар пользователя compawa compawa 31 мая 2009 в 9:37

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

Аватар пользователя compawa compawa 31 мая 2009 в 11:59

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

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

Аватар пользователя PVasili PVasili 31 мая 2009 в 9:53

"Лампочка" wrote:
Все-таки, я решила не менять дефолтный язык, слишком много переводить по новой. Может все же есть способ автоматом переправить анонима на иврит?...
- с чем проблемы в переводах то?
Давайте я добавлю иврит на сервер локализации, существующий в списке проект - мертвый Sad

"Лампочка" wrote:
Как проверить, аноним это или нет?
$logged_in - False для анонимов, $is_front - True для главной, $language - свойства языка (посмотрите их print_r($language))

Аватар пользователя Лампочка Лампочка 31 мая 2009 в 10:37

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

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

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

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

Аватар пользователя Лампочка Лампочка 31 мая 2009 в 10:49

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

Аватар пользователя compawa compawa 31 мая 2009 в 14:42

Лампочка wrote:
"compawa" wrote:
Все равно не позволит :(, термины придется переименовывать.
Жуть...

Ссылочку здесь приведу, может кому пригодится на будущее 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.

Аватар пользователя Лампочка Лампочка 31 мая 2009 в 15:56

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

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

Аватар пользователя burn burn 8 июля 2009 в 2:14

а что

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

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

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

Аватар пользователя Лампочка Лампочка 8 июля 2009 в 10:59

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

Аватар пользователя burn burn 8 июля 2009 в 22:28

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

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

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

Аватар пользователя volocuga volocuga 9 июля 2009 в 2:20

"compawa" wrote:
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)