Мультиязычный логотип

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

Аватар пользователя zmicer zmicer 1 февраля 2011 в 19:43

Доброго дня,

Имеется мультиязычный сайт на 2-х языках. При переключении языка на английский и при клике на логотип переход осуществляется на главную русскоязычную страницу, как поправить?

Так же имеются ссылки встроенные в шаблон (домой, контакты, карта сайта) как и их сделать мультиязычными?

Спасибо.

Комментарии

Аватар пользователя zmicer zmicer 11 февраля 2011 в 18:42

"Dan" wrote:
global $language;

пробовал вот так:

<a href="<?php
  global $language;
  $lang = $language->language;
  if($lang == ru) {
     print '/ru/';
  } elseif($lang == en) {
     print '/en/';
  }
?>" />  

но у меня в шаблоне еще такой код:

<?php  // this is copy&paste from locale_block in locale.module
  
$languages language_list('enabled');
  
$links = array();
  foreach (
$languages[1] as $language) {
    if (
$language->language != $current) {
      
$links[$language->language] = array(
        
'href'       => $_GET['q'],
        
'title'      => $language->native,
        
'language'   => $language,
        
'attributes' => array('class' => 'language-link'),
      );
    }
  }

  

// this adds the real paths, i.e. if we are on a german page,
  // the british flag will point to en/english_alias instead of
  // en/node_with_german_content
  
translation_translation_link_alter($links$_GET['q']);

  

// This one adds extended languages, i.e. those that are not enabled.
  // Disable if you want only flags for enabled languages.
  
i18n_translation_link_alter($links$_GET['q']);

  

// now add or replace text links by flags, according to your i18n settings.
  
if (function_exists('languageicons_translation_link_alter'))
    
languageicons_translation_link_alter($links$_GET['q']);

  

// Or do your own stuff, e.g. set the flags and no lang names,
  // no matter what the i18n icon settings say.
  //if ($icon = theme('languageicons_icon', $language, NULL)) {
  //   $links[$language->language]['title'] = theme('languageicons_place', $link['title'], $icon);
  //   $links[$language->language]['html'] = TRUE;         
  //}

  // remove the current language again. We cannot do that
  // earlier because i18n_translation_link_alter would add it
  // again, thinking it was an extendeg language because it
  // was not yet contained in $links. If you don't use
  // i18n_translation_link_alter, you can also make a case distinction
  // in the foreach loop
  

$current i18n_get_lang();
  unset(
$links[$current]);

  

// format as you like, e.g.
  
echo theme('links'$links, array());
?>

и после вставки первого кода, перестает работать переключатель.

Аватар пользователя Dan Dan 11 февраля 2011 в 22:51

Перепишите первый блок по-другому как-нить.
Например так:

<a href="/<?php print $GLOBALS['language']->language; ?>/" />

PS: за вставку кода в шаблоны бъют по рукам, не злоупотребляйте Smile

Аватар пользователя iryston iryston 12 февраля 2011 в 14:12

Поскольку сайт всего двуязычный, возможно подойдет и такой вариант в page.tpl.php

<?php if ((i18n_get_lang() != 'en')) { ?>
<a href="<?php print check_url($front_page); ?>" title="<?php print $site_name; ?>"><img src="<?php print check_url($logo); ?>" alt="<?php print $site_name; ?>" /></a>
<?php } else { ?>
<a href="<?php print check_url($front_page); ?>" title="<?php print $site_name; ?>"><?php print '<img src="'. $base_path . $directory . '/images/logo_en.png" alt="<?php print $site_name; ?>" />' ?></a>
<?php } ?>
Аватар пользователя zmicer zmicer 14 февраля 2011 в 12:09

"Dan" wrote:
Перепишите первый блок по-другому как-нить.
Например так:

language; ?>/" />

спасибо, кэп Wink

"Dan" wrote:
PS: за вставку кода в шаблоны бъют по рукам, не злоупотребляйте :)

Если очень осторожно и никто не знает - то можно)

Аватар пользователя Dan Dan 14 февраля 2011 в 13:22

"zmicer" wrote:
спасибо, кэп ;)

С чего бы сарказм? Smile В этом коде $language не вытаскивается из глобальной области видимости в локальную. Имхо в этом проблема нерабочей второй части кода. Если вы сами знаете решение, то зачем спрашиваете? Smile

Аватар пользователя Antoniy Antoniy 27 декабря 2012 в 22:32

"eagle" wrote:
Поскольку сайт всего двуязычный, возможно подойдет и такой вариант в page.tpl.php

Спасибо! Для Drupal 7 сделал так (выбор языка на сайте происходит по подстановке префикса в URL):

<?php if ($language_url == en) { ?>
    <a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>" id="logo"> <img
    src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>" /> </a>
  <?php } else { ?>
    <a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>" id="logo"> <img  
    src="/sites/all/themes/mytheme/logo_ru.png" alt="<?php print t('Home'); ?>" /> </a>
<?php } ?>

Но я не пойму, как задать "если лого, если язык". Только "если язык" получилось.

UPD: кеш почистил, крон запустил и вышло в Warning, что переменной en для $language_url нет.. как это?

Забил. Использую модуль Variable, дает возможность для каждого языка настроить свой logo, свой site_mame, site_slogan и т .д.

Только если тема мудреная и там themename_form_system_theme_settings_submit($form, &$form_state) то придется копировать функцию и обзывать ее themename_form_variable_realm_variable_theme_form_submit