Nyelv váltáskor fejléc váltás

hafefe képe

Sziasztok,
csináltam nem rég a kutatócsoportunknak ( http://edu.u-szeged.hu/kkcs ) egy drupal 7-es oldalt, minden rendben is van vele, működik a nyelv váltás is, de sehogy se bírom megoldani, hogy a fejléc is átváltson angol nyelvűre amikor valaki arra a nyelvre vált az oldalon ( Ha számít akkor Danland sminket használok ). Ebben kérnék segítséget Tőletek. Drupal 6-os alá találtam megoldásokat/modulokat, de ezek nincsenek d7 alá, vagy nem működőképesek. Sajnos nem vagyok egy php guru, pedig úgy biztosan sokkal egyszerűbb lenne a megoldás.
Előre is köszönöm ha valakinek lesz ideje a bajomra!

Drupal verzió: 
mapdesign15 képe

Talán próbáld meg a $language változóval és egy feltétellel a design-ben.

<?php
switch ($language->language) {
   case 'hu': // Magyar
      $output = '<div class="fejlec-hu"></div>';
   break;
   case 'en': // Angol
      $output = '<div class="fejlec-en"></div>';
   break;
   default: // Ha se magyar se angol
      $output = '<div class="fejlec"></div>';
   break;
}
print $output;

Ezt a page.tpl.php-ban kéne elhelyezni amely a fejléc elemét megjeleníti.

Ha így rosszul működik, akkor tegyél még esetleg a page.tpl.php fájl tetejére egy globals-t.

<?php
global $language;
//[...]

Elégé "hack" megoldás, de nekem bevált.

A $language változó lehetséges értékei:

    'language' => 'en',
    'name' => 'English',
    'native' => 'English',
    'direction' => 0,
    'enabled' => 1,
    'plurals' => 0,
    'formula' => '',
    'domain' => '',
    'prefix' => '',
    'weight' => 0,
    'javascript' => ''
2
0
pp képe

Az ilyenek a preprocess-be valóak. Ha az egész body-nak akarsz adni egy class-t akkor a preprocess_html-be kell tenni, ha a fejléc képet amit a page.tpl.php-ban íratsz ki akkor meg a preprocess_page-ben kell ezt a kódot használni.

pp

3
0
pp képe

Nem kell ide class, meg preprocess, meg semmi se, csak ismerni kéne a css-t. :)
http://twitter.com/#!/gaborhojtsy/status/100508831389450240

3
0
hosszu.kalman képe

Arra az esetre ha IE7 alatt is szeretnénk hogy működjön, elérhető a body tag-ben az i18n-hu és az i18n-en stb. osztály, úgyhogy preprocess nélkül is lehet rá hivatkozni css-ben, a mostani kódból kiindulva kb így:

#header {
  height: 171px;
  margin: 0 auto;
  position: relative;
  width: 1000px;
}
 
body.i18n-hu #header {
  background-image: url("images/header_kkcs.png");
}
 
body.i18n-en #header {
  background-image: url("images/angol_kep_elerese.png");
}
3
0
Geva képe

ez a lehető legfrappánsabb megoldás erre a problémára szvsz :-)
+ az i18 bekapcs. előtt is működik a header, ha adunk hátteret a #header-nek is - hosszu.kalman meghatározásában, ezzel minden eshetőségre felkészültünk

egy korábbi drupal 6-os honlapon ezt még úgy oldottam meg, hogy a page.tpl.php fájlban a header div-jének adtam-, a $language változó tartalmával megegyező class-t(adhattam volna a body-nak is):
<div id="header" class="<?php print $language; ?>">
css-ben pedig a megfelelő background-image-t, minden lehetséges nyelvhez...
mostantól a 7-es drupalban ez is egyszerű, nem kell sem a page-be belenyúlni, sem preprocess, sem egyéb trükk nem kell :-)

0
0
pp képe

Valami rosszat linkeltem volna?

Valaki elolvasta amit küldtem? (vagyis Goba twittelte)

Sima css szelektorral megoldható a dolog, nem kell itten semmi class, meg semmi bűvészkedés.

0
-1
Balogh Zoltán képe

Igen, van aki elolvasta :)

0
0
Geva képe

+1 valaki :-)

0
0
hosszu.kalman képe

És amit én írtam? :)

„IE7 does not support :lang at all (but IE8 does).”

3
0
mapdesign15 képe

Őszintén szólva a preprocess-es megoldás a jó szerintem. Én nem javaslom a nyelv megállapítását CSS-el, mivel pár böngészőnél lehetnek vele problémák (sőt ha a böngésző nyelve netán Angol, de a használója Magyar, akkor már eltér az oldal nyelve a fejléctől - mivel legtöbbször a böngésző telepítési nyelve definiálja a CCS-nek a nyelvi értéket -).

Ha mindenképp CSS, akkor 2 rétegben érdemes:
1.-ik ami akkor is megjelenik, ha nincs nyelv megállapítási támogatás (ez lehet a magyar),
2.-ik pedig a CSS által betöltött (ami lehet a felhasználó nyelve és az 1-es felé kerül).

PS: Lehet JavaScript erre praktikusabb lenne, habár nem érdemes túlbonyolítani.

0
0
nevergone képe

„ha a böngésző nyelve netán Angol, de a használója Magyar, akkor már eltér az oldal nyelve a fejléctől - mivel legtöbbször a böngésző telepítési nyelve definiálja a CCS-nek a nyelvi értéket”

Szerinted azt ott a böngésző állítja be?

0
0
mapdesign15 képe

Ha jól értelmeztem, az alább rész definiálja ezt:

<html lang="hu" xml:lang="hu" xmlns= "http://www.w3.org/1999/xhtml">
0
0
Geva képe

szerintem az i18n modul bekapcsolásakor kerül a $classes változóba, amit aztán a html.tpl.php irat ki:

<body class="<?php print $classes; ?>" <?php print $attributes;?>>

és a fent jelzett honlap body-jában is benne van a Kálmán által emletegett class, a nyelvválasztásnak megfelelően, az én csupasz, magyar nyelvű - nem többnyelvűsített - 7-es honlapoméban nincs :-)...

0
0