Kalle_B: Sprachen innerhalb einer HTML Seite wechseln

Hallöle,

wie kann ich Container zeigen und verbergen? Ich habe dieses versucht:

<div class='de'>... deutsche Beschreibung ... </div>
<div class='en'>... english description ... </div>
...
<div class='de'>... deutscher Fusstext ... </div>
<div class='en'>... english footer ... </div>

In Javascript durchläuft Opera mit

  for ( i=0; i<document.getElementsByClassName('fr').length; i++ )  
  document.getElementsByClassName('de')[i].style.display = 'inline';  

die Tags einer Klasse. IE6 kann das nicht und ich vermisse getElementsByClassName bei http://de.selfhtml.org/javascript/objekte/document.htm@title=SelfHTML. Also weg damit.

Da die CSS- Klassen gebraucht werden, ergänze ich
<div name='de' class='de'>... deutsche Beschreibung ... </div>

Nun motzt aber der Validator:
there is no attribute "NAME"

Wie kann ich mehrere divs als "deutsch" markieren? getElementsByLanguage gibt's ja auch nicht.

Kalle

  1. Wie kann ich mehrere divs als "deutsch" markieren? getElementsByLanguage gibt's ja auch nicht.

    Suchmaschine meiner Wahl "javascript get elements by attribute": http://snipplr.com/view/1853/get-elements-by-attribute/

    Es gibt sicher bessere Lösungen, aber das soll zeigen wie einfach du auch selbst etwas finden könntest :)

    Ich würde an deiner Stelle aber in jedem Fall das lang-Attribute verwenden.

    1. Hallo, suit,

      Suchmaschine meiner Wahl "javascript get elements by attribute": http://snipplr.com/view/1853/get-elements-by-attribute/

      Es gibt sicher bessere Lösungen, aber das soll zeigen wie einfach du auch selbst etwas finden könntest :)

      Wahrscheinlich steht alles irgendwo im Web, also darf ich nie wieder fragen ?

      Aber danke für den Link. Kannst du mir noch verraten, was der Parameter oElm sein mag?

      Ich vermute document, aber genau dadurch passieren Fehler, dass Vermutungen die fehlende Dokumentation ersetzen müssen.

      Kalle

      1. Wahrscheinlich steht alles irgendwo im Web, also darf ich nie wieder fragen ?

        Das nicht, aber du sparst dir (und anderen) eine Menge zeigt, wenn du vorher selbst suchst - Suchmaschinen sind dafür besonders gut geeignet

        Mit dem Absenden eines Postings stimmst du der Carta zu. Dort ist folgendes zu lesen:

        "Als Fragesteller solltest Du zuerst versuchen, Dein Problem mit Hilfe der  SELFHTML-Dokumentation, der SELFHTML-Suche im reichhaltigen Forumsarchiv und natürlich mittels Suchen im Internet selbst zu lösen."

        Aber danke für den Link. Kannst du mir noch verraten, was der Parameter oElm sein mag?

        Vermutlich das Wurzelelement von dem abwärts die Suche startet, wenn ich das richtig lese.

        Ich vermute document, aber genau dadurch passieren Fehler, dass Vermutungen die fehlende Dokumentation ersetzen müssen.

        Darum kannst du dir ggf. auch andere Lösungen suchen - mit den genannten Stichworten finden sich sicher einige, auch dokumentierte, Lösungen.

        Falls alle Stricke reissen kannst du immer noch eine Selektor-Engine wie etwa Sizzle oder ein Framework wie jQuery verwenden.

  2. @@Kalle_B:

    nuqneH

    <div class='de'>... deutsche Beschreibung ... </div>
    <div class='en'>... english description ... </div>
    ...
    <div class='de'>... deutscher Fusstext ... </div>
    <div class='en'>... english footer ... </div>

    Wie suit schon sagte: Zur Kennzeichnung der Sprache eines Abschnitts dient @lang (@xml:lang):

    <div lang='de'>... deutsche Beschreibung ... </div>  
    <div lang='en'>... english description ... </div>  
    ...  
    <div lang='de'>... deutscher Fusstext ... </div>  
    <div lang='en'>... english footer ... </div>
    

    In Javascript durchläuft Opera mit

    for ( i=0; i<document.getElementsByClassName('fr').length; i++ )

    document.getElementsByClassName('de')[i].style.display = 'inline';

    
    > die Tags einer Klasse.  
      
    Wozu??  
      
    Den Nachfahrenselektor kennst du?  
      
    Also schaltest du mit JavaScript lediglich die Klasse des body um: `document.body.className = 'de';`{:.language-javascript}  
      
    (Wenn body noch andere Klassenzugehörigkeiten als die Sprachangabe hat, ist etwas mehr Gehirnschmalz reinzustecken, damit diese erhalten bleiben.)  
      
      
    Im Stylesheet dann:  
      
    ~~~css
    body.de div:not([lang|='de']) { display: none }  
    body.en div:not([lang|='en']) { display: none }
    

    Zu schön um wahr zu sein. Für Browser, die :not() nicht verstehen, eben so:

    div[lang] { display: none }  
    body.de div[lang|='de'] { display: block }  
    body.en div[lang|='en'] { display: block }
    

    IE6 kann das nicht

    Der kann auch keine Attributselektoren. So what? Dann wird eben alles angezeigt. Willst du für die allerletzten IE-6-Nutzer noch großartig Aufwand betreiben? IE 6 ist so gut wie tot.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hallo,

      IE6 kann das nicht
      IE 6 ist so gut wie tot.

      Das dachte ich auch immer, aber dem ist anscheinend nicht so. Erst kürtlich hatte ich ein Gespräch mit einem Mitarbeiter einer großen (wirklich großen) Firma und musste erfahren: Mit Software-Updates ist man da seeehr langsam, da u.U. immer mehrere tausend Rechner betroffen sind und die einzelnen User keine Rechte haben, Updates zu installieren. Soll man die alle mit schlechten oder gar nicht funktionierenden Webseiten bedienen, nur weil jedes Kind heute mit IE8 oder Google Chrome surft?

      Gruß, Don P

      1. Mahlzeit Don P,

        Erst kürtlich hatte ich ein Gespräch mit einem Mitarbeiter einer großen (wirklich großen) Firma und musste erfahren: Mit Software-Updates ist man da seeehr langsam, da u.U. immer mehrere tausend Rechner betroffen sind und die einzelnen User keine Rechte haben, Updates zu installieren.

        Sooooo seeeeehr groß ist "mein" Unternehmen nicht, aber wir (also die Standard-Benutzer) öckeln auch noch mit dem IE6 durch die Gegend. U.a. deshalb, weil bestimmte im Haus genutzte Software mit moderneren IEs (und was anderes kommt natürlich nicht in die Tüte!) nicht klarkommt.

        Es gibt schon diverse mehr oder weniger gute Gründe, warum z.B. im Intranet noch IE6 als Standard-Browser gilt.

        "In the wild" (also im Internet) würde ich persönlich aber auf derart antiquierte Gammelware keine Rücksicht mehr nehmen ...

        Soll man die alle mit schlechten oder gar nicht funktionierenden Webseiten bedienen, nur weil jedes Kind heute mit IE8 oder Google Chrome surft?

        Nö ... aber was surfen die ganzen Arbeitnehmer auch - die sollen arbeiten! ;-)

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hallo,

          Soll man die alle mit schlechten oder gar nicht funktionierenden Webseiten bedienen, nur weil jedes Kind heute mit IE8 oder Google Chrome surft?

          Nö ... aber was surfen die ganzen Arbeitnehmer auch - die sollen arbeiten! ;-)

          LOL – so denken die Arbeitgeber vermutlich auch und deshalb haben Browser-Updates keine hohe Priorität. Trotzdem haben die Leute ja auch mal Pause oder surfen nach der regulären Arbeitszeit noch ein bischen herum. Da sie nicht von Hartz IV leben müssen könnten sie gute Kunden sein bzw. werden... wenn, ja wenn, der tolle Shop auch im IE6 richtig funktionieren würde...

          Gruß, Don P

          1. @@Don P:

            nuqneH

            LOL – so denken die Arbeitgeber vermutlich auch und deshalb haben Browser-Updates keine hohe Priorität.

            Da sollte doch mal jemand eine Sicherheitslücke des IE 6 ausnutzen … Dann werden die Prioritäten vielleicht neu bewertet. Schaden macht klug.

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
          2. Hi,

            Nö ... aber was surfen die ganzen Arbeitnehmer auch - die sollen arbeiten! ;-)
            LOL – so denken die Arbeitgeber vermutlich auch und deshalb haben Browser-Updates keine hohe Priorität. Trotzdem haben die Leute ja auch mal Pause oder surfen nach der regulären Arbeitszeit noch ein bischen herum.

            und dabei sollten sie sich in einigen Betrieben vorsehen, dass sie nicht erwischt werden. "Private Nutzung des Internet" am Arbeitsplatz ist oftmals -auch während der Pausen oder nach Feierabend- nicht erlaubt.

            Ciao,
             Martin

            --
            Die späteren Ehen sind oft glücklicher als die erste, weil das natürliche Ende bereits absehbar ist.
              (George Bernhard Shaw)
      2. @@Don P:

        nuqneH

        Soll man die [Nutzer des IE 6] alle mit schlechten […]

        Ja. Das erhöht den Druck auf die Systemadmins, den Nutzern endlich vernünftige Browseer zu installieren.

        oder gar nicht funktionierenden Webseiten bedienen

        Nein.

        Außerdem fragte ich ja, ob der Aufwand für IE 6 noch lohnt. Wenn die Antwort für die jeweilige Zielgruppe ja ist, dann ist sowas wie

        * html div { display: expression( [code lang=javascript]!this.lang || this.lang == body.className ? 'block' : 'none' ) }[/code]

        auch schnell notiert.

        Oder man geht mit JavaScript einmalig(!) alle Elemente durch und setzt if (foo.lang) foo.className += " " + foo.lang;

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
    2. Willst du für die allerletzten IE-6-Nutzer noch großartig Aufwand betreiben? IE 6 ist so gut wie tot.

      Also erstens habe ich für IE nur die Version 6. Version 7 ließ sich auf Win200 nicht installieren, mit 8 habe ich es garnicht erst probiert.

      Neue Rechner haben bei mir Linux, ich stecke kein Geld mehr in Microsoft- Technologie. Kostet nicht nur Geld, auch noch Zeit um die "spezielle" Sichtweise von Normen zu überlisten. Das honoriert mir keiner.

      Dennoch - den IE6 nutze ich manchmal, um mein HTML zu testen. Andere Browser sind zu gutmütig. Wenn's beim IE6 ungefähr hinkommt ist's okay, die alten Nutzer kennen das ja nicht anders.

      Muss immer schmunzeln, wenn hier Fäden aufgemacht werden, weil irgendein IE das Bild um zwei Pixel verrückt. Wirklich verrückt.

      Aber wenn die Seite nicht funktionsfähig ist, muss ich reagieren. Heute war so ein Reaktionstag, den ich dem Gott IE geopfert habe. Auch die kleinen Götter wollen beachtet werden.

      Kalle

  3. @@Kalle_B:

    nuqneH

    Mal ganz dumm (lies: klug) nachgefragt: Warum hast du die Inhalte in allen Sprachversionen in dem Dokument (und musst diese übertragen), wenn du den Inhalt doch lediglich in einer Sprach anzeigen willst?

    Warum hast du nicht für jede Sprache ein Dokument? Und setzt Sprachvereinbarung (language negotiation) ein?

    Oder wenn schon in einem Dokument: Warum filterst du nicht serverseitig und überträgst nur den Inhalt in der gewünschten Sprache?

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Mal ganz dumm (lies: klug) nachgefragt: Warum hast du die Inhalte in allen Sprachversionen in dem Dokument (und musst diese übertragen), wenn du den Inhalt doch lediglich in einer Sprach anzeigen willst?

      Möglicherweise sollen auch beide Sprachen gleichzeitig angezeigt werden, nur eben eine Prominierter.

      Wie auf wellstyled.com.

      1. @@suit:

        nuqneH

        Möglicherweise sollen auch beide Sprachen gleichzeitig angezeigt werden

        Es mag Anwendungesfälle geben, wo dies sinnvoll ist. Wie auf http://cechomor.de/songs/MeziHorami.

        Wie auf wellstyled.com.

        Dieser gehört nicht dazu. Man will den Inhalt lesen – in der Sprache, die man (besser) versteht. Der Text in der anderen Sprache erfüllt keinerlei Zweck. Er lenkt nur ab.

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Es mag Anwendungesfälle geben, wo dies sinnvoll ist.

          Ich sagte nicht, das die Sache bei wellstyled.com sinnvoll ist - ich sagte nur, dass es solch einen Andwendungsfall gibt :p

    2. Halo, Qapla,

      ... Warum hast du die Inhalte in allen Sprachversionen in dem Dokument (und musst diese übertragen), wenn du den Inhalt doch lediglich in einer Sprach anzeigen willst?

      Testversion. Es geht um vier Sprachen. Vier Dokumente gleichzeitig zu pflegen übersteigt den Aufwand für Testdaten.

      Warum hast du nicht für jede Sprache ein Dokument?

      Ist eine Option, die ich in einem anderen Projekt (gleiches Sprachkonzept) anwende. The english site hinkt der deutschen immer hinterher, was das Layout und besondere Effekte angeht.

      Oder wenn schon in einem Dokument: Warum filterst du nicht serverseitig und überträgst nur den Inhalt in der gewünschten Sprache?

      So ist das. Das Programm kann vier Sprachen. Die mit Platzhaltern versehene HTML- Datei filtert sich raus, was sie braucht. Die Testdatei nimmt alles.

      Ist so wie den Gen- Gärtnern. Auf einem Versuchsfeld gibts alle Varianten. Später in der Wirklichkeit dann ein großes Feld mit einer Sorte.

      Gruß,
      Kalle