Linuchs: Ermitteln der Sprache des Browsers

Hallo,

ich ermittle die erste Sprache des Browsers und erwarte so eine Angabe:
ru,en;q=0.9,es;q=0.8,de;q=0.7

$bia_lg      =( $_REQUEST['lg'] ) ? $_REQUEST['lg'] : strtolower( $_SERVER['HTTP_ACCEPT_LANGUAGE'] );  
  
// 2010-01-09 AUSDRUECKLICH VERLANGTE SPRACHE HAT VORRANG VOR USER-EINSTELLUNG  
// 1.Projektsprache, 2.Browsersprache, 3.Usersprache, 4.GET/POST sprache (hoechste Prioritaet)  
$arr_bia_lg  = explode( ',', $bia_lg ); // ru,en;q=0.9,es;q=0.8,de;q=0.7  
if ( $arr_bia_lg[0] ) $bia_lg = $arr_bia_lg[0];  
  
if ( $bia_lg[2]<'a' || $bia_lg[2]>'z' ) $bia_lg = substr( $bia_lg, 0, 2 );  

Nun meldet aber der Firefox de-de, eine Sprache, die es nach ISO 639 nicht gibt. Bei unbekannter Sprache liefere ich englisch aus, das wurde moniert.

Habe gesucht und den Artikel Sprache des Browsers gefunden, aber sehr kompliziert und ohne Jahresangabe. Blicke nicht durch, ob der de-de auflösen kann.

Welche Seltsamkeiten sind den noch zu erwarten ausserhalb der ISO-Norm?

Linuchs

  1. Welche Seltsamkeiten sind den noch zu erwarten ausserhalb der ISO-Norm?

    Dass jemand sich nicht um Spracheinstellungen kümmert, eine .de URL aufruft, DE erwartet und englisch oder sonst was angeboten bekommt.
    Ich glaube es ist nur in wenigen Fällen sinnvoll sich mit solchen Mechanismen zu beschäftigen. In allen anderen Fällen ist die TLD sinnvoller.

    Beispiel: Ich rufe Google mit fr, ru und sonst was auf und erhalte immer Deutsch. Warum? Das halte ich für keine Hilfe sondern eine Krankheit.

    1. Hallo,

      Ich glaube es ist nur in wenigen Fällen sinnvoll sich mit solchen Mechanismen zu beschäftigen. In allen anderen Fällen ist die TLD sinnvoller.

      das glaube ich nicht, denn erstens gibt es zahllose nicht-länderspezifische TLDs (com, net, org, info, biz, um nur ein paar zu nennen), zweitens ist die TLD einem Land und nicht einer Sprache zugeordnet (was für eine Sprache erwartest du unter .be?), und drittens bezeichnet die ccTLD normalerweise vor allem das Land des Anbieters.

      Beispiel: Ich rufe Google mit fr, ru und sonst was auf und erhalte immer Deutsch. Warum?

      Weil dein Browser sagt, dass er Deutsch haben möchte. Mit mir spricht Google generell Englisch, egal unter welcher TLD, weil ich das als bevorzugte Sprache eingestellt habe.

      Gleiche Inhalte unter verschiedenen TLDs anzubieten, ist vor allem ein Entgegenkommen an die Gewohnheiten der Nutzer: Deutsche sind es gewöhnt, .de einzugeben, Niederländer geben reflexartig .nl ein, Franzosen sind auf .fr "geeicht". Mit der zu erwartenden Sprache sollte das aber IMO nichts zu tun haben.

      Ciao,
       Martin

      --
      Soso, der Klügere gibt nach.
      Aber warum sollen sich immer nur die Dummen durchsetzen?  .oO(?)
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Gleiche Inhalte unter verschiedenen TLDs anzubieten, ist vor allem ein Entgegenkommen an die Gewohnheiten der Nutzer: Deutsche sind es gewöhnt, .de einzugeben, Niederländer geben reflexartig .nl ein, Franzosen sind auf .fr "geeicht". Mit der zu erwartenden Sprache sollte das aber IMO nichts zu tun haben.

        Stell dir vor du bist irgendwo im Ausland, setzt dich in ein Internetcafe, rufst example.de auf und kriegst example in NICHT de. Das ist doch Unsinn.
        Die Diskussion gabs hier schon mal vor nicht sehr lange.

        1. Stell dir vor du bist irgendwo im Ausland, setzt dich in ein Internetcafe, rufst example.de auf und kriegst example in NICHT de. Das ist doch Unsinn.
          Die Diskussion gabs hier schon mal vor nicht sehr lange.

          Wurde da nicht auch favorisiert, dass es trotz language negotiation immer noch ein Auswahlmenü zur Korrigierung der Sprache geben sollte, wobei die Auswahl dann die höhste Priorität hat?

          MfG
          bubble

          --
          If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
          1. Wurde da nicht auch favorisiert, dass es trotz language negotiation immer noch ein Auswahlmenü zur Korrigierung der Sprache geben sollte, wobei die Auswahl dann die höhste Priorität hat?

            Ich glaube schon. Ich würds auf jeden Fall tun denn sowohl die Angabe in der URL (ich will die Seite xy in de) als auch eine Auswahlmöglichkeit sind Eingaben des Nutzers. Man sollte nicht glauben der Browser wüsste besser als der Nutzer, was der grade sehen will.

            Es gibt leider immer mehr Webseiten die man in Google mit englischer Vorschau findet (technische Dinge), die dann beim draufklicken in unlesbares, höchstens lächerliches aber kein bisschen hilfreiches Möchtegern Deutsch übersetzt sind. Sowas sollte man nicht tun. Man kann anhand der Browsersprache einen Übersetzungslink anbieten, aber alles sonst halte ich für einen (gut gemeinten) Fehler.

            1. Es gibt leider immer mehr Webseiten die man in Google mit englischer Vorschau findet (technische Dinge), die dann beim draufklicken in unlesbares, höchstens lächerliches aber kein bisschen hilfreiches Möchtegern Deutsch übersetzt sind. Sowas sollte man nicht tun. Man kann anhand der Browsersprache einen Übersetzungslink anbieten, aber alles sonst halte ich für einen (gut gemeinten) Fehler.

              Eine grotten-schlecht übersetzte Variante des inhaltes würde ich generell nicht anbieten.
              Dann kommt für mich zuerst die vom Browser bevorzugte Sprache[*], wenn diese Variante in ausreichend guter Qualität vorhanden ist, ansonsten würde ich bei Seiten mit internationaler Zielgruppe wohl wie du sagst, die Sprache anhand der TLD auswählen, ansonsten englisch ausgeben.

              Den Rest macht dann die Sprachauswahl des Menüs.

              [*] Es ist ja nun mal so, dass die mobilen Endgeräte im kommen sind, diese werden dann bestimmt auch in Internet-Cafés benutzt werden können. (Reine Vermutung, das letzte mal war ich in einem Internet-Café, da stand zuhause noch ein 28.8k-Modem)

              MfG
              bubble

              --
              If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
            2. Moin,

              Wurde da nicht auch favorisiert, dass es trotz language negotiation immer noch ein Auswahlmenü zur Korrigierung der Sprache geben sollte, wobei die Auswahl dann die höhste Priorität hat?
              Ich glaube schon. Ich würds auf jeden Fall tun ...

              natürlein, das halte ich für so zwingend selbstverständlich, dass ich es nicht weiter erwähnt habe.

              Es gibt leider immer mehr Webseiten die man in Google mit englischer Vorschau findet (technische Dinge)

              Oder in Chinesisch (oder einer anderen asiatischen Schrift und Sprache, die ich ebensowenig verstehe).

              die dann beim draufklicken in unlesbares, höchstens lächerliches aber kein bisschen hilfreiches Möchtegern Deutsch übersetzt sind.

              Ja. So wie die Microsoft Knowledge Base. Allerdings bieten die einem Nutzer, der nach der IP-Adresse zu urteilen *vermutlich* aus DE kommt, bevorzugt Seiten in "Deutsch" an. Und das war (oder ist noch?) oft so grottig übersetzt, dass ich nicht verstanden habe, was der eine oder andere Satz aussagen sollten, und stattdessen lieber die englische Fassung gelesen habe.

              Ciao,
               Martin

              --
              Man gewöhnt sich an allem, sogar am Dativ.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Hallo

                Ja. So wie die Microsoft Knowledge Base. Allerdings bieten die einem Nutzer, der nach der IP-Adresse zu urteilen *vermutlich* aus DE kommt, bevorzugt Seiten in "Deutsch" an. Und das war (oder ist noch?) oft so grottig übersetzt, dass ich nicht verstanden habe, was der eine oder andere Satz aussagen sollten, und stattdessen lieber die englische Fassung gelesen habe.

                Da ich in den letzten Monaten oft in der KB zu lesen habe, ein paar Erfahrungen dazu. Die Artikel sind, wie du schon schriebst, maschinell übersetzt. Bei Artikeln zu nicht mehr gepflegter Software sieht man das, speziell am oft verkorksten Satzbau, auch überdeutlich [1].

                Für Artikel zu von MS noch gepflegter Software können Entwickler mit MS-Account satzweise Verbesserungsvorschläge für die Übersetzung einreichen. Mit aktiviertem JS wird, wenn man mit der Maus über einen Satz fährt, per JS-Tooltip das englischsprachige Original eingeblendet. Das ist manchmal etwas störend, z.B. wenn man mit dem Mauszeiger über einen Text hinweg zu einem Link will, lässt aber Sofortvergleiche der Texte zu. Zudem sind die Texte typischerweise wesentlich besser übersetzt als die zu veralteter Software, was vermuten lässt, dass das Verbesserungsvorschlagswesen funktioniert.

                [1] Als ich noch in der Veranstaltungsbranche gearbeitet habe, haben wir uns im Kollegenkreis an den Übersetzungen von Bandinfos via Google-Translator erfreut. Die dabei auftretenden Stilblüten waren zu jenen in der MS-KB für veraltete Software, z.B. für MS-Access-97, meist noch harmlos. Hätten wir das damals gewusst, hätte es uns vielleicht den Spaß verdorben.

                Tschö, Auge

                --
                Seit Fünf Uhr Fünfundvierzig wird Verantwortung übernommen.
                ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                Veranstaltungsdatenbank Vdb 0.3
                1. Hi,

                  [1] Als ich noch in der Veranstaltungsbranche gearbeitet habe, haben wir uns im Kollegenkreis an den Übersetzungen von Bandinfos via Google-Translator erfreut. Die dabei auftretenden Stilblüten waren zu jenen in der MS-KB für veraltete Software, z.B. für MS-Access-97, meist noch harmlos. Hätten wir das damals gewusst, hätte es uns vielleicht den Spaß verdorben.

                  das erinnert mich an einen Fall, wo mein Kollege eine bestimmte elektrotechnische Norm gesucht hat. Ist gute 10 Jahre her. Klar, man hätte die entsprechende Norm für über 100EU$ beim Beuth-Verlag kaufen können.

                  Aber man kann ja auch mal suchen gehen, ob man sie nicht irgendwo "halblegal" im Internet findet. Und tatsächlich, Treffer. Allerdings nur in französischer Sprache. Dann kam jemand auf die Idee: Probier doch mal Google Translate!

                  Was haben wir gelacht! Wir wussten hinterher immer noch nicht, was uns der Text eigentlich sagen wollte, ich erinnere mich nur noch konkret an die Phrase "System der elektrischen Eimer zur Ernährung an Ernst".
                  Übrigens hieß unser Chef mit Vornamen Ernst. Nicht dass wir mit ihm per "Du" waren, aber man assoziiert doch unbewusst einiges. ;-)

                  Zur Ehrenrettung von Google Translate muss man aber auch erwähnen, dass die Qualität dieser Übersetzungen im Lauf der Jahre beeindruckend besser geworden ist.

                  So long,
                   Martin

                  --
                  "Wie geht eigentlich dein neues Auto?"
                  "Es geht nicht, es fährt!"
                  "Äh, ja. Und wie fährt es?"
                  "Och, es geht."
                  Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Hi,

    $bia_lg      =( $_REQUEST['lg'] ) ? $_REQUEST['lg'] : strtolower( $_SERVER['HTTP_ACCEPT_LANGUAGE'] );

    // 2010-01-09 AUSDRUECKLICH VERLANGTE SPRACHE HAT VORRANG VOR USER-EINSTELLUNG
    // 1.Projektsprache, 2.Browsersprache, 3.Usersprache, 4.GET/POST sprache (hoechste Prioritaet)
    $arr_bia_lg  = explode( ',', $bia_lg ); // ru,en;q=0.9,es;q=0.8,de;q=0.7
    if ( $arr_bia_lg[0] ) $bia_lg = $arr_bia_lg[0];

      
    diese Abfrage ist unnötig - explode() liefert, wenn man es so benutzt, immer ein Array. Selbst wenn kein Komma vorkommt, liefert explode() ein Array mit \*einem\* Element. $arr\_bia\_lg[0] existiert also in jedem Fall.  
      
    
    > `if ( $bia_lg[2]<'a' || $bia_lg[2]>'z' ) $bia_lg = substr( $bia_lg, 0, 2 );`{:.language-php}  
      
    Was'n das? "Wenn an dritter Stelle im String kein Kleinbuchstabe steht, nimm nur die ersten zwei Zeichen."  
      
    
    > Nun meldet aber der Firefox de-de, eine Sprache, die es nach ISO 639 nicht gibt.  
      
    Dafür aber de-DE. Aber das bügelst du ja ganz oben mit strtolower() platt. Außerdem müsste aufgrund der letzten Abfrage, die ich eben noch hinterfragt habe, ein "de-de" automatisch auf "de" gekürzt werden. Also?  
      
    
    > Bei unbekannter Sprache liefere ich englisch aus, das wurde moniert.  
      
    Wenn du internationales Publikum erwartest, okay. Wenn du hauptsächlich deutschsprachiges Publikum erwartest, würde ich als Fallback stattdessen Deutsch ausliefern.  
      
    
    > Welche Seltsamkeiten sind den noch zu erwarten ausserhalb der ISO-Norm?  
      
    Wieso außerhalb? ;-)  
      
    Ciao,  
     Martin  
    
    -- 
    Das Leben ist lebensgefährlich und endet meistens tödlich.  
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    
    1. @@Der Martin:

      nuqneH

      Nun meldet aber der Firefox de-de, eine Sprache, die es nach ISO 639 nicht gibt.

      Dafür aber de-DE.

      Es ist eine Konvention, Sprachkürzel klein (z.B. 'de'), Länderkürzel groß (z.B. 'DE'), Schriftkürzel gemischt (z.B. 'Latn') zu schreiben.

      Bei der Verarbeitung sind Sprachkennzeichnungen aber grundsätzlich NICHT case-sensitiv. [BCP 47 §2.1.1]

      de-de = de-DE = dE-De

      Qapla'

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
  3. hi,

    ich ermittle die erste Sprache des Browsers und erwarte so eine Angabe:
    ru,en;q=0.9,es;q=0.8,de;q=0.7

    Ja, sehr schön. Reichen Dir die ersten beiden Buchstaben nicht, frage ich mich, was Du mit dem Rest dieser Zeichenkette vorhast.

    de-de

    [0,1] => de
    de-kurpfalz => [0,1] => de

    und gut isses.

    Horst

    --
    Handschuhsheim, Bergstraße: Händ'schesse ;)
  4. @@Linuchs:

    nuqneH

    Nun meldet aber der Firefox de-de, eine Sprache, die es nach ISO 639 nicht gibt.

    ISO 369 beschreibt Sprachkürzel. Sprachkennzeichnungen umfassen mehr. Relevant dafür sind BCP 47 und das IANA-Register.

    Zur Unterscheidung der Begriffe s.a. meine Anmerkung des Übersetzers in der Seitenspalte.

    Bei unbekannter Sprache liefere ich englisch aus, das wurde moniert.

    Ein Browser sollte auch nicht ausschließlich 'de-DE' für Deutsch als bevorzugte Sprache angeben, sondern auf jeden Fall auch 'de'.

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
  5. @@Linuchs:

    nuqneH

    ich ermittle die erste Sprache des Browsers und erwarte so eine Angabe:
    ru,en;q=0.9,es;q=0.8,de;q=0.7

    $_SERVER['HTTP_ACCEPT_LANGUAGE'] liefert nicht die Sprache des _Browsers_, sondern die bevorzugte(n) Sprache(n) des _Nutzers_.

    Die Sprache des Browsers (dessen UI) liefert navigator.language in JavaScript. [molily]

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)