Linuchs: bitte prüfen: Vom Browser angeforderte Sprachen erkennen

problematische Seite

Moin,

aufgrund des Fadens „Dropdown-Menu zur Sprachenerweiterung“ habe ich nochmal meine eigene Sprachverwaltung kritisch beäugt.

Ich empfinde Webseiten befremdlich, die fast leer sind und nach der gewünschten Sprache fragen. Die hat der Browser ja schon beim Anfordern mitgeliefert.

Ich hatte bisher nur die erste Sprache von sowas wie ru,en;q=0.9,es;q=0.8,de;q=0.7 aus $_SERVER['HTTP_ACCEPT_LANGUAGE'] ausgewertet.

Bitte checked mal, ob das Durchlaufen der Browser-Sprachen so korrekt ist. Ich suche im Startprogramm nach de, en oder nl, die ich anbieten kann:

***********************
 * 2020-08-02
 * Sprache fuer dieses Programm p510 festlegen
 * ******************************************** */
echo "<p class=em08>";
if ( $_REQUEST['lg'] ) {
  // User-Auswahl hat Vorrang
  $bia_lg = $_REQUEST['lg'];

} else if ( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) {
  // Prioritaet 2: Browser-Angaben auswerten
  // Trenne die Sprachen voneinander
  $arr_bia_lg  = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] ); // ru,en;q=0.9,es;q=0.8,de;q=0.7
  // q= eliminieren, die erste UEbereinstimmung zaehlt
  echo "Checking your Browser-Languages ...";
  for ( $i=0; $i<count( $arr_bia_lg ); $i++ ) {
    $arr_mist = explode( ";", $arr_bia_lg[$i] );
    echo " " . $arr_mist[0];
         if ( $arr_mist[0] == 'de' )  { echo '*'; $bia_lg = 'de'; break; }
    else if ( $arr_mist[0] == 'en' )  { echo '*'; $bia_lg = 'en'; break; }
    else if ( $arr_mist[0] == 'nl' )  { echo '*'; $bia_lg = 'nl'; break; }
  }
}
     if ( $bia_lg == 'de' ) { $p000_lg = 'de';  $lg_ndx = 1; }
else if ( $bia_lg == 'en' ) { $p000_lg = 'en';  $lg_ndx = 2; }
else if ( $bia_lg == 'nl' ) { $p000_lg = 'nl';  $lg_ndx = 3; }
else                        { $p000_lg = 'de';  $lg_ndx = 1; echo ". remso-languages (de en nl) missed, 'de' delivered"; }
echo "</p>";

Wenn überhaupt nichts zutrifft (Google kommt sprachlos daher) nehme ich de, weil mit Abstand die meisten Termine in deutscher Sprache eingegeben werden.

Falls der Leser - aus welchem Grund auch immer - einen abweichenden Parameter, z.B. lg=fr, beim Aufruf mitgibt, wird dieser bei Programmwechsel weitergereicht.

$bia_lg ist die vom Menschen (nicht vom Browser) gewünschte Sprache, $p000_lg die vom einzelnen Programm ermittelte.

Falls irgendwann ein Folgeprogramm französisch kann, voila ...

In den Platzhalter-Dateien sind die Sprachen im Text wie ein Array gelistet:

<p class=hinweis>###Keine Veranstaltung für diese Auswahl gefunden###No event found for this selection###Geen evenement gevonden voor deze selectie###</p>

und $lg_ndx verweist auf das n-te Element.

Gruß, Linuchs

  1. problematische Seite

    Hi,

    ***********************
     * 2020-08-02
     * Sprache fuer dieses Programm p510 festlegen
     * ******************************************** */
    echo "<p class=em08>";
    if ( $_REQUEST['lg'] ) {
      // User-Auswahl hat Vorrang
      $bia_lg = $_REQUEST['lg'];
    
    } else if ( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) {
      // Prioritaet 2: Browser-Angaben auswerten
      // Trenne die Sprachen voneinander
      $arr_bia_lg  = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] ); // ru,en;q=0.9,es;q=0.8,de;q=0.7
      // q= eliminieren, die erste UEbereinstimmung zaehlt
      echo "Checking your Browser-Languages ...";
      for ( $i=0; $i<count( $arr_bia_lg ); $i++ ) {
        $arr_mist = explode( ";", $arr_bia_lg[$i] );
        echo " " . $arr_mist[0];
             if ( $arr_mist[0] == 'de' )  { echo '*'; $bia_lg = 'de'; break; }
        else if ( $arr_mist[0] == 'en' )  { echo '*'; $bia_lg = 'en'; break; }
        else if ( $arr_mist[0] == 'nl' )  { echo '*'; $bia_lg = 'nl'; break; }
      }
    }
         if ( $bia_lg == 'de' ) { $p000_lg = 'de';  $lg_ndx = 1; }
    else if ( $bia_lg == 'en' ) { $p000_lg = 'en';  $lg_ndx = 2; }
    else if ( $bia_lg == 'nl' ) { $p000_lg = 'nl';  $lg_ndx = 3; }
    else                        { $p000_lg = 'de';  $lg_ndx = 1; echo ". remso-languages (de en nl) missed, 'de' delivered"; }
    echo "</p>";
    

    Hm. Ich sehe da nix für die Aufteilung von Sprache-Subsprache. Also z.B. en-us, en-uk, de-at usw.

    cu,
    Andreas a/k/a MudGuard

    1. problematische Seite

      Hallo,

      Hm. Ich sehe da nix für die Aufteilung von Sprache-Subsprache. Also z.B. en-us, en-uk, de-at usw.

      Was genau möchtest du mitteilen? Wertest du Subsprachen in deinen Programmen aus, so nach dem Motto:

      de-de: Sehr geehrte Damen,

      de-at: Küss die Hand, gnä' Frau,

      de-nds: Moin, mien Deerns,

      Ich weiß nicht, was das bedeuten soll, ist doch eher ein Hinweis auf das Tastatur-Layout?

      Für die bewusste Sprachen-Auswahl bei wenigen Sprachen biete ich Nationalflaggen an. Wenn ich Deutschland virtuell betrete, muss ich mit deutscher Sprache rechnen und nicht mit Türkisch.

      Wenn ein Mensch, der englisch versteht, mit der Great Britain Flagge nichts anzufangen weiß, ist er wohl auch zu blöd für das Internet überhaupt. Wer keine Ahnung hat von englisch, dem sei es erspart.

      Linuchs

      1. problematische Seite

        Hallo,

        $bia_lg == 'de' passt auf 'de', nicht aber auf 'de-at'.

        Gruß
        Jürgen

      2. problematische Seite

        Hi,

        Hm. Ich sehe da nix für die Aufteilung von Sprache-Subsprache. Also z.B. en-us, en-uk, de-at usw.

        Was genau möchtest du mitteilen? Wertest du Subsprachen in deinen Programmen aus, so nach dem Motto:

        Mein Browser könnte z.B. en-us, de-de, nl in dieser Reihenfolge akzeptieren.

        Du vergleichst auf Gleichheit mit en und de. Kein Treffer, mir wird niederländisch vorgesetzt, obwohl ich Englisch bzw. Deutsch bevorzuge ...

        cu,
        Andreas a/k/a MudGuard

        1. problematische Seite

          Hallo Andreas,

          Du vergleichst auf Gleichheit mit en und de. Kein Treffer,

          Uups, auf die Idee bin ich gar nicht gekommen, habe noch eine Explosion hinzugefügt. So sollte es richtig sein:

          } else if ( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) {
            // Prioritaet 2: Browser-Angaben auswerten
            echo "Checking your Browser-Languages ...";
          
            // Trenne die Sprachen voneinander  ru,en;q=0.9,es;q=0.8,de-at;q=0.7
            $arr_bia_lg  = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
          
            for ( $i=0; $i<count( $arr_bia_lg ); $i++ ) {
              // q= eliminieren, enthaelt noch de-at
              $arr_de_at  = explode( ";", $arr_bia_lg[$i] );
              
              // nimmt die erste Sprache bei de-at
              $arr_de     = explode( "-", $arr_de_at[0] );
              echo " " . $arr_de[0];
                   if ( $arr_de[0] == 'de' )  { echo '*'; $bia_lg = 'de'; break; }
              else if ( $arr_de[0] == 'en' )  { echo '*'; $bia_lg = 'en'; break; }
              else if ( $arr_de[0] == 'nl' )  { echo '*'; $bia_lg = 'nl'; break; }
            }
          }
          switch ( $bia_lg ) {
            case  "de": { $bia_lg == 'de';  $p000_lg = 'de';  $lg_ndx = 1; break; }
            case  "en": { $bia_lg == 'en';  $p000_lg = 'en';  $lg_ndx = 2; break; }
            case  "nl": { $bia_lg == 'nl';  $p000_lg = 'nl';  $lg_ndx = 3; break; }
            default:    { $bia_lg == 'de';  $p000_lg = 'de';  $lg_ndx = 1; echo ". remso-languages (de en nl) missed, 'de' delivered"; break; }
          }
          

          Linuchs

          1. problematische Seite

            Hi,

            Du vergleichst auf Gleichheit mit en und de. Kein Treffer,

            Uups, auf die Idee bin ich gar nicht gekommen, habe noch eine Explosion hinzugefügt. So sollte es richtig sein:

            genau diese Sprengung hatte ich vermißt.

            cu,
            Andreas a/k/a MudGuard

        2. problematische Seite

          Hallo,

          Mein Browser könnte z.B. en-us, de-de, nl in dieser Reihenfolge akzeptieren.

          Du vergleichst auf Gleichheit mit en und de. Kein Treffer, mir wird niederländisch vorgesetzt, obwohl ich Englisch bzw. Deutsch bevorzuge ...

          um sowas zu vermeiden, habe ich die generischen Sprachangaben noch mit in der Liste:
          en-US, en, de-DE, de, nl
          Also bevorzugt US-Englisch; wenn's das nicht gibt, dann halt irgendein anderes Englisch.

          Live long and pros healthy,
           Martin

          --
          Home is where my beer is.
      3. problematische Seite

        @@Linuchs

        Wenn ein Mensch, der englisch versteht, mit der Great Britain Flagge nichts anzufangen weiß, ist er wohl auch zu blöd für das Internet überhaupt.

        Wie ich vor kurzem erst sagte: Wenn jemand eine Webseite nicht benutzen kann, ist nicht der Nutzer der Dumme, sondern der Seitenersteller/-betreiber.

        Hat Great Britain ein Flagge? Wenn ja, wie sieht die aus?

        Und für welche der in UK gesprochenen Sprachen sollte der Union Jack stehen?

        🖖 Stay hard! Stay hungry! Stay alive! Stay home!

        --
        “Turn off CSS. If the page makes no sense, fix your markup.” —fantasai
        1. problematische Seite

          Hallo Gunnar,

          Wie ich vor kurzem erst sagte: Wenn jemand eine Webseite nicht benutzen kann, ist nicht der Nutzer der Dumme, sondern der Seitenersteller/-betreiber.

          Naja, du schrubest. Aber aus dem ganzen langen Faden konnte ich keine Anregung gewinnen, wie eine Sprache per Icon darzustellen wäre. Wollte heute noch einn Pluspunkt vergeben, aber an wen?

          Und für drei Sprachen werde ich keinen Klappkasten anbieten als User-Beschäftigungstherapie.

          Solange keine anerkannte Lösung besteht, nehme ich bewusst (falsche) Nationalflaggen, unsere deutsche Sprache lügt doch sonst auch ganz ungeniert:

          Ist ein Walfisch ein Fisch, eine Weintraube eine Traube, haben Rosen Dornen?

          Wenn du ein Schiff oder eine Botschaft / Konsulat betrittst, das mit dem Union Jack markiert ist, tja dann bist du wohl als Einziger ratlos, welche Sprache da wohl gesprochen und geschrieben wird.

          Linuchs

          1. problematische Seite

            Hallo,

            Und für drei Sprachen werde ich keinen Klappkasten anbieten als User-Beschäftigungstherapie.

            für wenige Sprachen brauchst du auch kein Menü. da reichen drei Links mit

            Deutsch Englisch Nederlands

            Bei diesen Sprachen würde wohl auch

            de en nl

            gehen. Wobei man die aktuelle Sprache auch ohne Verlinkung anzeigen kann, oder ganz weglässt.

            Erst wenn die Liste der Sprachen zu groß wird, lohnt sich ein Sprachmenü mit dem Problem, dass es kein in der Breite und international bekanntes Sprachwahlicon gibt.

            Gruß
            Jürgen

            1. problematische Seite

              Hallo Jürgen,

              habe heute zum wiederholten Male nach einem icon_sprachauswahl gesucht und wurde fündig:

              icon_sprachauswahl

              Die flache Erde in einer Sprechblase, das verstehen sogar die Flacherdler.

              Aber wir Web-Schaffenden müssen das zum Standard machen und nicht wie ein aufgescheuchter Hühnerhaufen ratlos diskutieren.

              Gruß, Linuchs

              1. problematische Seite

                habe heute zum wiederholten Male nach einem icon_sprachauswahl gesucht und wurde fündig:

                icon_sprachauswahl

                Die flache Erde in einer Sprechblase,

                Oder der Link zum Basketball-Chat.

                Aber wir Web-Schaffenden müssen das zum Standard machen

                Das sehe ich nur mit einer richtig breit, groß und teuer angelegten Kampagne. Bis dahin: Flaggen sind zwar inhaltlich oft falsch, aber funktionieren aktuell noch am besten. Bevor jemand meckert: soweit es nicht nur wenige Sprachen sind ;-)

                1. problematische Seite

                  Hallo,

                  Oder der Link zum Basketball-Chat.

                  Offensichtlich ist es 2 bis drei Tage her, dass du einen Basketball in der Hand gehalten hast (wenn überhaupt). Service: Basketball

                  Gruß
                  Kalk

              2. problematische Seite

                Hallo Linuchs,

                du findest viele Sprachwahlicons, sehr viele, zu viele.

                Ich wollte ja das Wiki-Tutorial ergänzen, weiß aber im Moment nicht, welches Icon ich nehmen soll. Ich habe bei der Testseite schon einen Button eingebaut, mit dem ich das Icon ändern kann, damit ich in meinem Umfeld mal mehrere zeigen kann.

                Hast du die Weltkugel in der Sprechblase schon mal jemanden ohne Vorwarnung gezeigt und gefragt, was er/sie dahinter vermutet?

                Gruß
                Jürgen

                1. problematische Seite

                  Hallo JürgenB,

                  Ich wollte ja das Wiki-Tutorial ergänzen, weiß aber im Moment nicht, welches Icon ich nehmen soll.

                  Ich habe das „offizielle“ Logo schon mal erwähnt. Vielleicht sollte man aus Gründen der Konsistenz dann auch dieses verwenden?

                  Bis demnächst
                  Matthias

                  --
                  Du kannst das Projekt SELFHTML unterstützen,
                  indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
                  1. problematische Seite

                    Hallo Matthias,

                    das offizielle Logo habe ich ja auch eingebaut, allerdings konnten meine Frau und einer meiner Söhne damit nichts anfangen. Meinst du, ich soll es trotzdem nehmen?

                    Gruß
                    Jürgen

                    1. problematische Seite

                      Hallo JürgenB,

                      Meinst du, ich soll es trotzdem nehmen?

                      ich würde sagen, ja.

                      Bis demnächst
                      Matthias

                      --
                      Du kannst das Projekt SELFHTML unterstützen,
                      indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
                2. problematische Seite

                  Hallo Jürgen,

                  Hast du die Weltkugel in der Sprechblase schon mal jemanden ohne Vorwarnung gezeigt und gefragt, was er/sie dahinter vermutet?

                  Nein.

                  Jetzt kommen wir zur Frage, wer die Deutungshoheit übernimmt. Stell dir vor, in den 1980er (vielleicht auch noch in den 1990er) Jahren hättest du eine Zigarettenschachtel gezeigt und rumgefragt, wie man einen Computer dieser Größe nennen sollte. Ich denke, er würde heute „Du Spinnst“ heißen.

                  Und meinst du, ein unvollständiges E im Quadrat

                  Menü

                  hätte irgendjemand als Einladung verstanden, eine Linkliste aufzuklappen?

                  Wer in Deutschland - wenn nicht selfHTML - sollte Pflöcke einschlagen für Begriffe, die noch nicht belegt sind?

                  Ich wollte ja das Wiki-Tutorial ergänzen, weiß aber im Moment nicht, welches Icon ich nehmen soll.

                  Wir alle werden verunsichert durch die unüberschaubare Zahl von Möglichkeiten, aber wir müssen (sollten) uns entscheiden.

                  Vor einer Woche wollte ich einfach mal schnell ein Mikrofon bestellen, um bei Corona-Chorproben im Web dabei zu sein. Allein Thomann hat hunderte und jedes ist ganz toll und für irgend einen Zweck geeignet. Ich habe nichts bestellt, weil Ramsch und Qualität überhaupt nicht unterschieden wird.

                  Linuchs

              3. problematische Seite

                @@Linuchs

                icon_sprachauswahl

                Kann mir jemand sagen, wie man diese Erde mit HTML/CSS baut? Mit wenig HTML/CSS? Frage für einen Freund.

                Meine gegenwärtig beste Lösung dafür braucht 67 Zeichen mehr als der Rekord, meh.

                🖖 Stay hard! Stay hungry! Stay alive! Stay home!

                --
                “Turn off CSS. If the page makes no sense, fix your markup.” —fantasai
                1. problematische Seite

                  Servus!

                  @@Linuchs

                  icon_sprachauswahl

                  Kann mir jemand sagen, wie man diese Erde mit HTML/CSS baut? Mit wenig HTML/CSS? Frage für einen Freund.

                  mit Unicode: 'GLOBE WITH MERIDIANS' (U+1F310)

                  BTW: Wollte mal gucken, wie's die Schweizer so machen:

                  [Update]

                  Herzliche Grüße

                  Matthias Scharwies

                  --
                  Einfach mal was von der ToDo-Liste auf die Was-Solls-Liste setzen.“
                  1. problematische Seite

                    @@Matthias Scharwies

                    Kann mir jemand sagen, wie man diese Erde mit HTML/CSS baut? Mit wenig HTML/CSS? Frage für einen Freund.

                    mit Unicode: 'GLOBE WITH MERIDIANS' (U+1F310)

                    Das wäre ja der Hammer, wenn die Glyphe für dieses Zeichen in der im Backend verwendeten Schriftart (nur das zählt für die Übereinstimmung, nicht wie’s im eigenen Browser aussieht) genau übereinstimmen würde. Es gibt aber gar keine Glyphe für U+1F310; in diesem Tool wird für &#x1F310; (Nicht-ASCII-Zeichen sind nicht erlaubt) ein Rechteck angezeigt.


                    BTW: Wollte mal gucken, wie's die Schweizer so machen:

                    • SNB Sprachkürzel

                    Wer kein Deutsch kann (die Deutsch können, brauchen das Sprachmenü ja nicht) und wem das Kürzel DE nichts sagt, findet keinerlei Hinweis, dass es sich um ein Sprachauswahlmenü handelt. Fail.

                    (Das hatten wir im anderen Thread schon.)

                    Dito. Wer kein Deutsch kann, dem nutzt auch die Sprachbezeichnung „Deutsch“ in Deutsch nichts. Fail.

                    🖖 Stay hard! Stay hungry! Stay alive! Stay home!

                    --
                    “Turn off CSS. If the page makes no sense, fix your markup.” —fantasai
                    1. problematische Seite

                      Servus!

                      BTW: Wollte mal gucken, wie's die Schweizer so machen:

                      • SNB Sprachkürzel

                      Wer kein Deutsch kann (die Deutsch können, brauchen das Sprachmenü ja nicht) und wem das Kürzel DE nichts sagt, findet keinerlei Hinweis, dass es sich um ein Sprachauswahlmenü handelt. Fail.

                      Also die 3 (oder 4) Sprachvarianten nebeneinander? Mehr gibt's nur bei der EU.


                      Mal ganz allgemein: Wie würdet ihr so etwas gestalten?

                      <p>Bitte wählen Sie in der folgenden Auswahlliste einen Professor</p>
                      
                      <label id="professorLabel" for="professor">Professor:</label>
                      <select id="professor">
                        <option value="--">Bitte wählen:</option>
                        <option value="p23">Albers, Alfred</option>
                        <option value="p24">Braun, Berta</option>
                        <option value="p25">Drachenzaun, Doris</option>
                        <option value="p26">Müller, Stephan</option>
                        <option value="p27">Meier, Manfred</option>
                      </select>
                      

                      Das p ist ja eigentlich auch schon eine Erklärung, soll man das mit einem aria-label auszeichen?

                      Das label "Professor" find ich ok so, die Variante mit dem ersten option-Element aber eher unlogisch. Wie würdet ihr das elegant lösen?

                      Herzliche Grüße

                      Matthias Scharwies

                      --
                      Einfach mal was von der ToDo-Liste auf die Was-Solls-Liste setzen.“
                      1. problematische Seite

                        @@Matthias Scharwies

                        <p>Bitte wählen Sie in der folgenden Auswahlliste einen Professor</p>
                        
                        <label id="professorLabel" for="professor">Professor:</label>
                        <select id="professor">
                          <option value="--">Bitte wählen:</option>
                          <option value="p23">Albers, Alfred</option>
                          <option value="p24">Braun, Berta</option>
                          <option value="p25">Drachenzaun, Doris</option>
                          <option value="p26">Müller, Stephan</option>
                          <option value="p27">Meier, Manfred</option>
                        </select>
                        

                        Das p ist ja eigentlich auch schon eine Erklärung, soll man das mit einem aria-label auszeichen?

                        aria-hidden="true" böte sich an. 😉

                        Es macht keinen Sinn, ein Auswahlfeld (das schon als solches angesagt wird) mit „Bitte wählen Sie …“ zu beschriften. Analog:

                        • auch nicht „Bitte geben Sie … ein“ bei einem Eingabefeld; das Label genügt (und wenn nicht, ist der Labeltext schlecht gewählt)
                        • nicht alt="Bild eines Einhorns", sondern alt="Einhorn".

                        Es macht auch für Sehende keinen Sinn; also weg mit dem Absatz!

                        🖖 Stay hard! Stay hungry! Stay alive! Stay home!

                        --
                        “Turn off CSS. If the page makes no sense, fix your markup.” —fantasai
          2. problematische Seite

            Hallo

            Wenn du ein Schiff oder eine Botschaft / Konsulat betrittst, das mit dem Union Jack markiert ist, tja dann bist du wohl als Einziger ratlos, welche Sprache da wohl gesprochen und geschrieben wird.

            Schau'n wir mal in die Wikipedia. Was finden wir unter Amtssprachen: Englisch sowie regional Kornisch, Irisch, Schottisch-Gälisch, Scots, Ulster-Scots und Walisisch. Welche hätten's den gern?

            Natürlich wird man auf den Inseln mit Englisch überall problemlos zurecht kommen. Jedoch der Umkehrschluss, es gäbe dort nur die englische Sprache, die somit mit den Union Jack gleichsetzbar wäre, ist falsch.

            Für die drei von dir angebotenen Sprachen halte ich, wie Jürgen, eine ausgeschriebene Auflistung für die beste und zugänglichste Lösung.

            Tschö, Auge

            --
            Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
            Hohle Köpfe von Terry Pratchett