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

Прислано: Лампочка

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

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

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

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Опубликовано Fanny@drupal.org в Пт, 29/05/2009 - 19:34.

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


Опубликовано Лампочка в Пт, 29/05/2009 - 19: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 в Пт, 29/05/2009 - 20:04.

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

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

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


Опубликовано Лампочка в Пт, 29/05/2009 - 20:23.

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

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


Опубликовано Лампочка в Пт, 29/05/2009 - 20: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 в Пт, 29/05/2009 - 20:44.

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

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


Опубликовано Лампочка в Пт, 29/05/2009 - 20:54.

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


Опубликовано Лампочка в Пт, 29/05/2009 - 20:56.

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


Опубликовано PVasili в Пт, 29/05/2009 - 20:56.

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


Опубликовано compawa в Сб, 30/05/2009 - 06:05.

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

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


Опубликовано Лампочка в Сб, 30/05/2009 - 18:34.

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

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


Опубликовано Лампочка в Сб, 30/05/2009 - 18:49.

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

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


Опубликовано compawa в Вс, 31/05/2009 - 05:37.

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


Опубликовано PVasili в Вс, 31/05/2009 - 05:53.

"Лампочка" написал(а):

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

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

"Лампочка" написал(а):

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

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


Опубликовано Лампочка в Вс, 31/05/2009 - 06:37.

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

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

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

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


Опубликовано Лампочка в Вс, 31/05/2009 - 06:49.

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


Опубликовано compawa в Вс, 31/05/2009 - 07:59.

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


Опубликовано Лампочка в Вс, 31/05/2009 - 08:22.

"compawa" написал(а):

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

Жуть...


Опубликовано compawa в Вс, 31/05/2009 - 10:42.

Лампочка написал(а):
"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.


Опубликовано Лампочка в Вс, 31/05/2009 - 11:56.

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

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


Опубликовано burn в Втр, 07/07/2009 - 22:14.

а что

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

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

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


Опубликовано Лампочка в Ср, 08/07/2009 - 06:59.

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


Опубликовано burn в Ср, 08/07/2009 - 18:28.

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

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

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


Опубликовано Лампочка в Ср, 08/07/2009 - 19:18.

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


Опубликовано volocuga в Ср, 08/07/2009 - 22:20.

"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)


Опубликовано Alexmelin в Чт, 03/02/2011 - 13:12.

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


Новое на сайте

Ссылки партнёров