Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

Probleme beim themen von i18n-Language Switcher

Eingetragen von bsiegel (52)
am 06.11.2007 - 14:16 Uhr in
  • Module

Hallo, hab mal wieder eine kleine Verständnisfrage..

Ich will den Language Switcher des i18n Moduls so gestalten, dass er nicht in einer Liste untereinander, sondern lediglich die Flaggen nebeneinander angezeigt werden. Nun hab ich ewig gesucht, wie und wo das i18n-Modul auf die entsprechende CSS-Klasse zugreift und dies gefunden:

 
$blocks['subject'] = t('Languages');
$query = drupal_query_string_encode($_GET, array('q'));
$blocks['content'] = theme('item_list', i18n_get_links($_GET['q'], empty($query) ? NULL : $query));

Hab angenommen, dass das Modul auf die CSS-Klasse "item_list" zugreift, es gibt aber lediglich die Klasse "item-list" (also Bindestrich statt Unterstrich). Hab probehalber das Modul auf eine neue Klasse "item_lang" zugreifen lassen, die ich zuvor im CSS als "item-lang" definiert habe - hat aber erwartungsgemäß nicht funktioniert.

Hat jemand ne Idee, wo ich nun die richtige CSS-Klasse ansprechen kann? Ich find mich nicht mehr raus...

Vielen Dank schonmal vorneweg!
Beate

‹ Gallery2 in Nodeprofile einbinden? Flashvideo Modul: KEIN fullscreen? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hast Du Dir mal die Funktion

Eingetragen von quiptime (4972)
am 06.11.2007 - 15:23 Uhr

Die Loesung Deines Problemes ist nicht nur eine Frage von CSS.

Mittels Template bringst Du den Block dazu, nur die Flaggen anzuzeigen. Mitt CSS formatierst Du die Liste, in der sich die Flaggen befinden, so, dass die Flaggen nebeneinander stehen und keine List-bullits angezeigt werden.

In der Datei "i18n.module" gibt es 2 theme Funktionen: function theme_i18n_link() und function theme_i18n_language_icon(). Bei denen koennte man ansetzen.

Wenn Du online entwickelst poste bitte den Link. Ich muesste den Block mal sehen. Habe gerade keine LangInstallation zur Verfuegung.

PS
Ich glaube, zumindest war es mal so, es gibt 2 versch. Bloecke zum Sprache umschalten. Und,
genau das was Du moechtest habe ich schon mal realisiert.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Link

Eingetragen von bsiegel (52)
am 06.11.2007 - 15:29 Uhr

Hallo quiptime,
danke für die schnelle Antwort. Hier der Link zur Seite: http://ocp.uni-passau.de/sprachportal/. Ich hab momentan den Ursprungszustand des Blocks wiederhergestellt, da sie sonst ziemlich zerhauen aussah. Der Block soll irgendwann in die "Breadcrumbzeile", also rechts unter das Suchfeld.

Danke für den Tipp mit der Funktion, da hab ich wohl zu einfach gedacht.

LG, Beate

*edit: Wo finde ich die Funktion?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hier kommst Du an die Links

Eingetragen von quiptime (4972)
am 06.11.2007 - 16:31 Uhr

Hier kommst Du an die Links mt den Flaggen ran. Datei "i18n.module":

/**
* Produces a language link with the right flag
*/
function theme_i18n_link($text, $target, $lang, $query= NULL, $fragment = NULL){
  $output = '<span class="i18n-link">';
  $attributes = ($lang == i18n_get_lang()) ? array('class' => 'active') : NULL;
  $output .= l(theme('i18n_language_icon', $lang), $target, $attributes, $query, $fragment, FALSE, TRUE);
  $output .= "&nbsp;";
  $output .= l($text, $target, $attributes, $query, $fragment, FALSE, TRUE);
  $output .= '</span>';
  return $output;
}

Text an den Flaggen entfernen

In der Datei "template.php" diesen Code neu einfuegen:

function phptemplate_i18n_link($text, $target, $lang, $query= NULL, $fragment = NULL){
  return _phptemplate_callback('i18n_link', array('text' => $text, 'target' => $target, 'lang' => $lang, 'query' => $query, 'fragment' => $fragment));
}

Der Code in der neu zu erstellenden Template-Datei "i18n_link.tpl.php" (im Themeordner) wuerde so aussehen:

<?php
/* $Id: i18n_link.tpl.php, v 1.0 2007/11/06 quiptime Exp $ */
/**
* Produces a language link with only the right flag
*/
function theme_i18n_link($text, $target, $lang, $query= NULL, $fragment = NULL){
 
$output = '';
 
$output = '<span class="i18n-link">';
 
$attributes = ($lang == i18n_get_lang()) ? array('class' => 'active') : NULL;
 
$output .= l(theme('i18n_language_icon', $lang), $target, $attributes, $query, $fragment, FALSE, TRUE);
 
$output .= '</span>';
  print
$output;
}
?>

Durch die hier vorgenommene Aenderung gegenueber der theme Funktion ist der Text weg und nur die Flaggen werden ausgegeben.

Flaggen formatieren

In der CSS Deines Themes noch folgende Formatierung.

#block-i18n-0 .item-list ul li {
  background-image: none;
  display: inline;
  margin: 0 12px 0 0;
}

Die 12px musst Du noch anpassen wegen dem Abstand der Flaggen nebeneinander.
Da Du die Flaggen spaeter rechts positionieren willst waere es besser mit margin: 0 0 0 12px;. Damit hast Du bei der rechten Flagge am rechten Seitenrand kein Abstandsproblem.

An dieser Stelle stehen nun die Flaggen nebeneinander ohne Text im Block mit dem Blocktitel "Languages".

Block, Titel entfernen

Um den Blocktitel "Languages" zu entfernen gehst du in die Administration -> Bloecke. In der Konfiguration des Blockes Language Switcher gibst Du als Blocktitel <none> ein. Damit ist der Titel inclusive h3 Tag bei der Anzeige weg.

Flaggen im Layout positionieren

Nun soll der "gecleante" Block Language Switcher noch an die Stelle unterhalb des Suchfeldes.

Um dies zu realisieren erstellst Du Dir am besten eine neue Region. Diese Region ist im Layout so positioniert das sie sich unmittelbar unterhalb des Suchfeldes befindet. Dieser Region wird in der Administration -> Bloecke nur der Block Language Switcher zugewiesen.

Wenn Du noch wissen willst wie Du die eigene Region erstellst dann frage. Dazu brauche ich den Namen des verwendeten Themes und den Code der "page.tpl.php".
Ausserdem muss ich noch die Namen der im Theme bereits verwendeten Regionen wissen. Ergibt sich meist bereits aus der "page.tpl.php".

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

WOW!

Eingetragen von bsiegel (52)
am 06.11.2007 - 17:32 Uhr

Vielen Dank für die Mühe! Funktioniert super! Ich würd gern noch wissen, wie ich eine eigene Region erstelle - aber du hast schon soviel Zeit in mein Problem investiert... Gibts irgendwo eine Anleitung dazu? Ich konnte in den Handbüchern keine finden.

Ich hab der "Einfachheit halber" YAML verwendet, Regionen gibts bei mir bisher nur left sidebar, content, header und footer. Die page.tpl.php sieht wie folgt aus:

<?php print $xml_prolog ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language ?>" lang="<?php print $language ?>">

<head>
  <title><?php print $head_title ?></title>
  <?php print $head ?>
  <?php print $styles ?>
  <?php print $scripts ?>
</head>

<body>
<?php print $fontsize_init ?>

<div id="page_margins">
  <div id="page">

    <div id="header" class="clearfix">
      <div id="topnav">
        <a class="skip" href="#navigation" title="<?php print t('Skip to the navigation') ?>"><?php print t('Skip to the navigation') ?></a><span class="hideme">.</span>
        <a class="skip" href="#content" title="<?php print t('Skip to the content') ?>"><?php print t('Skip to the content') ?></a><span class="hideme">.</span>
        <?php if (isset($secondary_links)) { ?><span><?php print theme('links_secondary', $secondary_links) ?></span><?php } ?>
      </div>
      <?php print $header ?>
      <?php if ($logo) { ?><a href="<?php print $base_path ?>" title="<?php print t('Home') ?>"><img id="site-logo" class="_trans" src="<?php print $logo ?>" alt="<?php print t('Home') ?>" /></a><?php } ?>
      <?php if ($site_name) { ?><h1 id="site-name"><a href="<?php print $base_path ?>" title="<?php print t('Home') ?>"><?php print $site_name ?></a></h1><?php } ?>
      <?php if ($site_slogan) { ?><div id="site-slogan"><?php print $site_slogan ?></div><?php } ?>
      <?php print $search_box ?>
    </div>

    <!-- begin: main navigation #nav -->
    <div id="nav"> <a id="navigation" name="navigation"></a> <!-- skip anchor: navigation -->
      <?php if (isset($primary_links)) { ?>
      <div id="nav_main">
        <?php print theme('links_primary', $primary_links) ?>
      </div>
      <?php } ?>
    </div>
    <div id="nav-bar" class="clearfix">
      <?php print $breadcrumb ?>
      <?php print $fontsize_links ?>
    </div>
    <!-- end: main navigation -->

    <!-- begin: main content area #main -->
    <div id="main">

      <?php if ($mission) { ?>
      <!-- #mission: between main navigation and content -->
      <div id="mission" class="clearfix">
        <?php print $mission ?>
      </div>
      <?php } ?>

      <!-- begin: #col1 - first float column -->
      <div id="col1">
        <div id="col1_content" class="clearfix">
          <?php print $sidebar_left ?>
        </div>
      </div>
      <!-- end: #col1 -->

      <!-- begin: #col3 static column -->
      <div id="col3">
        <div id="col3_content" class="clearfix"> <a id="content" name="content"></a> <!-- skip anchor: content -->
          <div id="col3_inside" class="floatbox">
            <?php if ($title) { ?><h2 class="title"><?php print $title ?></h2><?php } ?>
            <?php if ($tabs) { ?><div class="tabs"><?php print $tabs ?></div><?php } ?>
            <?php print $help ?>
            <?php print $messages ?>
            <?php print $content ?>
          </div>
        </div>
        <!-- begin: IE column clearing -->
        <div id="ie_clearing">&nbsp;</div>
        <!-- end: IE column clearing -->
      </div>
      <!-- end: #col3 -->

    </div>
    <!-- end: #main -->

    <!-- begin: #footer -->
    <div id="footer">
      <!--
      GERMAN:
      Diese Rückverlinkung darf nur entfernt werden,
      wenn Sie eine YAML-Framework und YAML für Drupal Lizenz besitzen.
      :: Lizenzbedingungen: http://www.yaml.de und http://www.yaml-fuer-drupal.de

      ENGLISH:
      This back linking maybe only removed,
      if you possess a YAML Framework and YAML for Drupal license.
      :: License conditions: http://www.yaml.de and http://www.yaml-for-drupal.com
      -->
      <?php print theme('footer_message', $footer_message) ?>
    </div>
    <!-- end: #footer -->

  </div>
</div>
<?php print $closure ?>
</body>
</html>

Ich verwende nur das zweispaltige Layout, daher ist der div-Bereich col3 irrelevant.

Nochmals vielen Dank für deine Hilfe - und wie gesagt, der Link zu einer guten Anleitung würde mir auch schon ausreichen, damit ich auch noch was zu tun habe ;-)

LG, Beate

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hier 'ne Handvoll

Eingetragen von quiptime (4972)
am 06.11.2007 - 18:13 Uhr

Hier 'ne Handvoll Anleitungen:

http://drupal.org/node/29139
http://www.theartlab.net/drupal-school-adding-block-regions (Screencast)
http://www.nicklewis.org/node/846
http://mydrupalblog.lhmdesign.com/creating-custom-regions
 

Wichtig bei der Funktionsdefinition fuer die Regionen in der Datei "template.php" bei der function mytheme_regions()

Die Bezeichnung "mytheme" muss dem Namen des verwendeten Themes entsprechen. In Deinem Falle

function yaml_regions() {
  return array(
       'left' => t('left sidebar'),
       'content' => t('content'),
       'header' => t('header'),
       'footer' => t('footer'),
       'languages' => t('language navigation')
  );
}

Die Bezeichnungen bei 'languages' => t('language navigation') kannst Du frei waehlen. Musst dabei lediglich auf die Uebereinstimmung in der "page.tpl.php" achten. Soll heissen, wenn der Array-Key "languages" heisst ist die zugehoerige Variable $languages.

 

Die Aenderung der "page.tpl.php" koennte so funktionieren:

    <!-- begin: main navigation #nav -->
    <div id="nav"> <a id="navigation" name="navigation"></a> <!-- skip anchor: navigation -->
      <?php if (isset($primary_links)) { ?>
      <div id="nav_main">
        <?php print theme('links_primary', $primary_links) ?>
      </div>
      <?php } ?>
    </div>

    <?php if (isset($languages)) { ?>
      <div id="nav_languages">
        <?php print $languages; ?>
      </div>
    <?php } ?>

    <div id="nav-bar" class="clearfix">
      <?php print $breadcrumb ?>
      <?php print $fontsize_links ?>
    </div>
    <!-- end: main navigation -->

 
Nun den den Textstring "language navigation" uebersetzen und den Block Language Switcher der neuen Region zuweisen.
 

PS
Was lustiges am Rande bei diesem YAML Theme, "base.css" Zeile 70

fieldset, img
  border: 0 solid;
}

Wenn der Border 0 ist muss er nicht solid sein. Ist aber als Formatierung kein Problem. Lediglich der 2. Parameter ueberfluessig.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das nenn ich mal ne Hilfe!

Eingetragen von bsiegel (52)
am 06.11.2007 - 19:07 Uhr

Das nenn ich mal ne Hilfe! Ich bastel jetzt schon seit zwei Tagen an der Sache rum - und nun funktionierts! Und sieht toll aus!
Das hat mir mal wieder gezeigt, dass ich auch nach drei Monaten Arbeit mit Drupal immer noch nicht so tief in der Materie stecke, wie ich mir das gewünscht hätte..

Tausend Dank!
Beate

  • Anmelden oder Registrieren um Kommentare zu schreiben

Super, freue mich auch.

Eingetragen von quiptime (4972)
am 06.11.2007 - 19:19 Uhr

Super, freue mich auch.

Vor allem bei Usern wie Dir macht Helfen auch Spass. Man mus nicht jeden Kleinkram erklaeren.
 

PS
In der Zeile mit den Flaggen, ganz links, ist ein ">" durchgerutscht.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Die Flaggen-Navigation abrunden

Eingetragen von quiptime (4972)
am 06.11.2007 - 20:39 Uhr

Wenn Du willst kann man noch Einen drauf setzen. Damit ist dann die Flaggen-Navigation absolut rund.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

quiptime wrote: In der

Eingetragen von bsiegel (52)
am 07.11.2007 - 10:30 Uhr
quiptime schrieb

In der Zeile mit den Flaggen, ganz links, ist ein ">" durchgerutscht.

Ja, das ">" hab ich gesehen, nur noch nicht "gefunden" - hatte gestern keine Zeit mehr dazu. Was meinst du damit, wie man die Flaggennavigation noch verbessern kann? Bin für jeden Tipp offen!

Beate

  • Anmelden oder Registrieren um Kommentare zu schreiben

Man sollte den a href title

Eingetragen von quiptime (4972)
am 07.11.2007 - 10:57 Uhr

Man sollte den a href title verwenden. Damit in der jeweiligen Sprache bei Mouseover eine sinnvolle Info wie "Sprache umschalten" oder so ausgeben.
Dieser Text in jeweiliger Sprache ist fest mit der entsprechenden Flagge verbunden und aendert sich an den einzelnen Flaggen bei Sprachumschaltung nicht. D. h., egal welche Sprache - der Text an einer Flagge ist immer in der dazugehoerigen Sprache.

Ich betone das deswegen, weil dies sehr oft falsch gehandhabt wird. Es macht keinen Sinn an einer Flagge auch den Infotext "Sprache" mit einer Sprachaenderung zu aendern. Denn ausgehend von der gerade eingestellten Sprache koennen Andersprachige ja dann den Text ihrer Flagge nicht verstehen weil er nicht in ihrer Sprache (die Flagge) ist.

Das hoert sich jetzt gewaltig an, ist am Ende ganz Simpel und gegenueber dem Besucher der Website eine nette Geste.

(Und, obwohl die Flaggen eindeutige Symbole sind muss man auch an solchen Stellen vom DAU ausgehen.)

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Korrektur für die Templatedatei "i18n_link.tpl.php"

Eingetragen von quiptime (4972)
am 08.11.2007 - 02:38 Uhr

Ein kleiner Fehler
hat sich eingeschlichen. Bitte den Code der Datei "i18n_link.tpl.php" korrigieren.

function theme_i18n_link($text, $target, $lang, $query= NULL, $fragment = NULL){
  $output = '';
  $attributes .= ($lang == i18n_get_lang()) ? array('class' => 'active') : NULL;

Die Korrektur ist der Punkt vor dem Gleich.

Siehe auch im Handbuch: http://www.drupalcenter.de/handbuch/6325

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

Da geht noch was.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Seite auf Xamp wird nicht geladen
  • [simplenews_stats] [D10] Keine Öffnungen/Ansichten der Newsletter werden gezählt
  • Theme Olivero - Rand entfernen?
  • Olivero veraendern
  • Upgrade Drupal 9 auf 10
  • Matomo(?) in Seite, aber Deinstalliert!
  • Upgrade Drupal 7 auf Drupal 9 / Inhalt erstellen zeigt nur Fehler an
  • Fehlermeldung nach Update auf Drupal 10
  • Wie Button erstellen?
  • footnotes bei D10 und CKE5
  • ckeditor Bilder skalieren
  • Bild in welcher Form die Beschriftung!
Weiter

Neue Kommentare

  • Wie plötzlich passierte
    vor 9 Stunden 9 Minuten
  • Sowas geht immer mit
    vor 2 Tagen 8 Stunden
  • vielen Dank fuer Deine Tipps.
    vor 2 Tagen 14 Stunden
  • Routinefrage: Kann es ein
    vor 3 Tagen 8 Stunden
  • @onkel Bob,Erst mal
    vor 1 Woche 3 Tagen
  • Prinzipiell geht das schon.
    vor 1 Woche 3 Tagen
  • Rubi_2021 schriebWie genau
    vor 2 Wochen 1 Tag
  • Ok, war ein Versuch. ;-) Kann
    vor 2 Wochen 2 Tagen
  • Danke
    vor 2 Wochen 2 Tagen
  • Redest Du von dem
    vor 2 Wochen 2 Tagen

Statistik

Beiträge im Forum: 248803
Registrierte User: 19832

Neue User:

  • elkb
  • J. Berten
  • vohome

» Alle User anzeigen

User nach Punkten sortiert:
wla9333
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3845
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 6 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association