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

Language Switcher / Sprachumschalter anpassen (Modul I18N)

Eingetragen von gravima (9)
am 26.02.2009 - 19:01 Uhr in
  • Module
  • Drupal 6.x

Hallo,

ich bin hier solangsam am Verzweifeln beim Versuch den Sprachumschalter auf der Seite ganz oben zu plazieren. Ich arbeite mit der Version 6.9 und dem Theme "A3 Atlantis".

Die Vorgeschichte (die sich kürzer liest als sie war):

  • Modul I18N ist installiert und funktioniert soweit ich beurteilen kann
  • Die Einarbeitung war nicht einfach, denn die Doku auf drupal.org ist aktuell zerschossen (siehe http://drupal.org/node/133977)
  • Deshalb bin ich auch nicht sicher, ob mir ein Block von I18N fehlt. Man liest von zwei Blöcken: a) Language Switcher (Admin-Oberfläche / aus dem Core-Modul?) b) Content Switcher ... ich finde bei mir nur Block a :( ... fehlt hier ein Block?
  • Für den Sprachumschalter habe ich eine neue Region definiert (top_header)
  • Die Region funktioniert mit Dummy-Text. Angepasst hierfür habe ich CSS und eine neue "block-top_header.tpl.php" im Theme eingestellt
  • Durch den PHP Code des folgenden Foren-Beitrags kann ich nun auch schon den Sprachumschalter anzeigen lassen: http://drupal.org/node/242646#comment-832367

Und nun zu meinem eigentlichen Problem an dem ich einfach nicht weiterkomme. :(

Nun möchte ich noch die HTML "li-Elemente" richtig anpassen. An die komme ich jedoch einfach nicht ran. Die li´s sollen NICHT als Aufzählung sondern die Sprachen nebeneinander (also: Englisch Español) darstellen, sprich "display: inline". Bin nach Stunden rumprobieren mit meinem Latein am Ende. Wahrscheinlich übersehe ich was ganz einfaches!?

Weitere Hintergrundinfos

Seht es euch an auf meinem Testsystem: http://wp1133270.wp171.webpack.hosteurope.de/drupal6
(Gerade ist mir noch aufgefallen, dass man im IE den Sprachumschalter oben rechts überhaupt nicht sieht. Im Firefox ist er zu sehen. Woran kann das nun wieder liegen??? Wahrscheinlich durch mein rum-experimentiertes CSS)


Das PHP-Skript vom Block "Custom language switcher"
(1:1 übernommen aus dem o.g. Forenbeitrag)

<?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());
?>

style.css (Auszug):

#top-header {
  position: absolute;
  top: 0px;
  left: 40px;
  width: 700px;
  height: 20px;
  margin: 0px;
  padding: 3px;
  text-align: right;
  font-size: 10px;
}

#top-header ul li a li.first li.last li.en li.es li.de {
  margin: 0px;
  padding: 3px;
  display: inline; 
  list-style: none;
}


Beispiel generiertes HTML (Auszug):

<div id="top-header">
   <ul>
     <li class="en first"><a href="/drupal6/en/home" class="language-link">English</a></li>
     <li class="es last"><a href="/drupal6/es/homa" class="language-link">Español</a></li>
   </ul>
</div>

Bitte um Hilfe! Gerne reiche ich auch noch weitere Hintergrundinfos wenn nötig nach.

Danke :)

‹ Problem mit Panels Kein Bild ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

hat sich das problem

Eingetragen von reggaefish (190)
am 27.02.2009 - 00:38 Uhr

hat sich das problem erledigt?

ansonsten wärs mit
float:left
z.b. gegangen... ;-)

noch n tip:
modul: languageicons

dann kannst du statt dem wort die fähnchen einblenden... sieht auch ganz hübsch aus find ich... ;-)

grüße
-------------------------------------------------
arguing on the internet is like competing in the special olympics
- even if you win, you are still retarded.

-------------------------------------------------
arguing on the internet is like competing in the special olympics
- even if you win, you are still retarded.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Problem erledigt! Kleinigkeit bleibt noch

Eingetragen von gravima (9)
am 27.02.2009 - 01:12 Uhr
reggaefish schrieb

hat sich das problem erledigt?

Ja. Trotzdem vielen Dank für den schnellen Feedback. Es waren dann tatsächlich nur noch ein paar Feinheiten im CSS-File.

Eine Kleinigkeit bleibt noch zurück, vor allem dann wenn man (noch) nicht alle Inhalte übersetzt hat.

Die Sprach-Links werden auch angezeigt, wenn eine Seite (bspw. intern node1) bisher noch keine Übersetzungen hat. Klickt man dann auf eine Sprache (bspw. en) kommt man auf "/en/node/1". Inhalt ist natürlich immer noch deutsch. Adminoberfläche wird auf englisch umgestellt.

Für mich ist das Verhalten noch nicht ganz klar. Wenn ich es auf die Schnelle richtig gesehen habe, gibt es hierzu einen Thread auf drupal.org inkl. erstem Lösungsversuch (hack):
http://drupal.org/node/250124

Der Vollständigkeit halber anbei der funktionierende CSS-Auszug:

#top-header {
  top: 0;
  left: 0;
  height: 20px;
  width: 700px;
  margin: 0px;
  padding: 6px 0 0 0;
  text-align: right;
  font-size: 10px;
}

#top-header ul {
  margin: 0;
  padding: 0;
  display: inline;
}

#top-header li {
  margin: 0;
  padding: 0;
  display: inline;
  font-size: 10px;
}

#top-header a {
  text-decoration: none;
  color: #fff;
}
#top-header a:hover { text-decoration: underline;}

  • Anmelden oder Registrieren um Kommentare zu schreiben

also mit den sprachen ist

Eingetragen von reggaefish (190)
am 27.02.2009 - 09:03 Uhr

also mit den sprachen ist das bissle kompliziert, das hab ich auch schon gemerkt ;-)
aber wiedrum auch ganz logisch... ;-)

wenn du für ne seite noch keine übersetzung angelegt hast, dann wird halt die version angezeigt, die schon da is... in dem fall halt die un-übersetzte...

und dein css:
soll jetzt nicht klugscheisserisch rüberkommen, aber du könntest teile von deinem css etwas "komprimieren" was es dan natürlich schlanker und übersichtlicher macht. macht jetzt in dem fall nicht viel, aber wenn dus öfter in der css machst, dann bringts schon bissle was...

so z.b.

<---- Code alt ---->

#top-header ul {
  margin: 0;
  padding: 0;
  display: inline;
}

#top-header li {
  margin: 0;
  padding: 0;
  display: inline;
  font-size: 10px;
}

<---- Code neu ---->

#top-header ul,
#top-header li {
  margin: 0;
  padding: 0;
  display: inline;
}

#top-header li {
  font-size: 10px;
}

spart hier zwar nur 3 zeilen, aber immerhin... ;-)

wichtig is das " , " nach dem ersten #top-header. sonst gehts nicht.
sprich wenn klassen oder ids sachen gemeinsam haben, kannst du sie durch ein " , " getrennt aufzählen und musst den kram nur einmal hinschreiben...

naja... so far... schön dass es geklappt hat :-)

grüße

-------------------------------------------------
arguing on the internet is like competing in the special olympics
- even if you win, you are still retarded.

-------------------------------------------------
arguing on the internet is like competing in the special olympics
- even if you win, you are still retarded.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nicht übersetzte Seiten

Eingetragen von gravima (9)
am 27.02.2009 - 10:36 Uhr
reggaefish schrieb

wenn du für ne seite noch keine übersetzung angelegt hast, dann wird halt die version angezeigt, die schon da is... in dem fall halt die un-übersetzte...

Naja das ist für mich nur mehr oder weniger nachvollziehbar. Problematisch bleibt es ... folgende Anmerkungen hierzu:

  • Meine "sauberen URLs" werden dadurch gebrochen
  • Das System wechselt (bspw. Sprache de auf en) auf den Pfad "/en/node/1"
  • Node1 ist also die deutsche Seite, jedoch mit falscher Pfadangabe (schön wäre dann ein Wechsel auf "/home"
  • Wenn ich jetzt auf ein anderen Menüpunkt klicke, bleibe ich in diesem falschen Pfad
  • Also auch für bereits übersetzte Seiten (wie Home) lande ich auf "/en/node/4" und nicht wie es eigentlich sein sollte auf "/en/home" oder von mir aus auch noch "/home"

Den Punkt finde ich deshalb störend, weil man die Seitenbesucher verwirrt und sich dadurch auch die Statistiken verhaut (wenn man saubere URLs nutzt)

Vielleicht hat ja jemand eine Lösung oder eine Optimierung für das o.g. PHP-Skript!?

reggaefish schrieb

soll jetzt nicht klugscheisserisch rüberkommen, aber du könntest teile von deinem css etwas "komprimieren" was es dan natürlich schlanker und übersichtlicher macht. macht jetzt in dem fall nicht viel, aber wenn dus öfter in der css machst, dann bringts schon bissle was...

Nur von Klugscheissern ;-) kann ich was lernen. Vielen Dank für den Hinweis!

  • Anmelden oder Registrieren um Kommentare zu schreiben

eine einfache lösung wäre

Eingetragen von reggaefish (190)
am 27.02.2009 - 10:57 Uhr

eine einfache lösung wäre z.b. die unübersetzten seiten "proforma" zu übersetzen.

d.h. wenn du als admin drin bist, gehst du auf die seite und klickst "übersetzen".
den inhalt einfach lassen, nur eine entsprechende URL anlegen.

z.b. "home" anstatt "startseite" oder so ähnlich halt...

dann hast du zwar keine übersetzte seite in dem sinn, aber auf jeden fall ne saubere url.

überhaupt ist dieses übersetzungsgedöns ne kunst für sich bis man das mal einigermaßen auf der kette hat... ;-)

ergänzend würd ich dir noch raten trenne die sprachen.

soll heissen: bau für jede sprache ein eigenes menü in einem eigenen block.
das macht es zumindest aus meinen augen sehr viel strukturierter als wenn du jetzt alle menüpunkte in einem menü hast und dauernd schauen musst "äääh... blend ich den jetzt bei einer sprache ein oder bei beiden oder wie..."

ich hab auch 2 menüs gemacht (bzw. bin dran), und das is doch irgendwie klarer. is zwar arbeit, aber ich finds besser so.. ;-)

-------------------------------------------------
arguing on the internet is like competing in the special olympics
- even if you win, you are still retarded.

-------------------------------------------------
arguing on the internet is like competing in the special olympics
- even if you win, you are still retarded.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Content Ex-/Import
  • Meldung zu Token im Statusbericht
  • RESTful Path request will nicht
  • Modulupdate per Webinterace scheitert an authorize.php und access denied für Admin-User
  • Wer ist online Block
  • Doppelte Anzeige von Node im View
  • URL-Alias von bestehendem Link wird gelöscht und auf -0 gesetzt 404 Fehler entsteht
  • Ausblenden von Taxonomy wenn diese keinen Inhalt haben
  • Image als Anhang
  • [gelöst] Benutzer erstellen ohne Berechtigung zum ändern von E-Mail oder Passwort
  • HTTP ERROR 500, wenn der Node eines bestimmten Typs gespeichert wird oder ein neuer Inhalt dieses Typs erzeugt werden soll
  • Module modifizieren zb Statuses
Weiter

Neue Kommentare

  • Genau das habe ich auch
    vor 17 Stunden 18 Minuten
  • Tja, das kann ich wirklich
    vor 17 Stunden 30 Minuten
  • Irgendwie scheint Drupal
    vor 17 Stunden 34 Minuten
  • *HEUREKA* Ich habe das Modul
    vor 17 Stunden 50 Minuten
  • SaarlandToday schrieb Wenn es
    vor 18 Stunden 39 Minuten
  • Wenn es sich um eine
    vor 19 Stunden 38 Minuten
  • Vielleicht hilft #5 bzw. #13
    vor 1 Tag 8 Stunden
  • War das eine saubere Drupal 9
    vor 1 Tag 8 Stunden
  • Ich hab das Modul wie auch
    vor 1 Tag 11 Stunden
  • Wie installierst Du das
    vor 1 Tag 12 Stunden

Statistik

Beiträge im Forum: 245956
Registrierte User: 18825

Neue User:

  • Damian1802
  • MrWebMV
  • kiba

» Alle User anzeigen

User nach Punkten sortiert:
wla9008
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3916
ronald3829
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 2 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