Forum Doku Wiki Blog

Forumsarchiv 2010, Januar
Sprachkennung (HTTP_ACCEPT_LANGUAGE)

archivierte Beiträge lesen

  1. (PROJEKTVERWALTUNG) Sprachkennung (HTTP_ACCEPT_LANGUAGE) von Kalle_B, 13. 01. 2010, 14:23

Sprachkennung (HTTP_ACCEPT_LANGUAGE)

Der folgende Beitrag wurde am 13. 01. 2010, 14:23 Uhr von Kalle_B veröffentlicht.

Hallöle,

möchte die vom Browser akzeptierte Sprache ermitteln. Meine Opera sendet dieses an den Server:
de,pl;q=0.9,fr;q=0.8,en;q=0.7,ru;q=0.6,es;q=0.5

mein IExplorer 6 dies:
de

Kann ich nun den einzigen Wert bzw. den vor dem ersten Komma nehmen?

Oder gibt's auch sowas:
ru;q=0.8,es;q=0.9,de;q=1.0

oder andere Versionen?

Mein PHP-Zweizeiler:
$arr_lg  = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] ); // ru,en;q=0.9,es;q=0.8,de;q=0.7
if ( $arr_lg[0] ) echo $arr_lg[0];



Gruß,
Kalle

Sprachkennung (HTTP_ACCEPT_LANGUAGE)

Der folgende Beitrag wurde am 13. 01. 2010, 14:39 Uhr von suit veröffentlicht.

> Kann ich nun den einzigen Wert bzw. den vor dem ersten Komma nehmen?

Nein - es ist nicht zwangsläufig so, dass jene werte mit Hoher Priorität auch vorne stehen.

> Oder gibt's auch sowas:
> ru;q=0.8,es;q=0.9,de;q=1.0

Ja.

aber auch de;q=0,en=q=0.5 wäre möglich - in diesem Fall gilt en, weil alles > 0 gültig ist.

> oder andere Versionen?

Ja, auch Leerzeichen nach den Kommas sind z.B. erlaubt.

> Mein PHP-Zweizeiler:
> $arr_lg  = explode( ',', $_SERVER['HTTP_ACCEPT_LANGUAGE'] ); // ru,en;q=0.9,es;q=0.8,de;q=0.7
> if ( $arr_lg[0] ) echo $arr_lg[0];
>


Funzt nicht, da dir die Quality verloren geht

Du hättest dann

ru
en;q=0.9
es;q=0.8
de;q=0.7

Jetzt musst du dafür sorgen, dass du ein key=>value-Paar mit Sprache und Quality hast (Reihenfolge nicht verändern):

ru=>
en=>0.9
es=>0.8
de=>0.7

Jetzt musst du erst rausfinden, welche quality "ru" hat (bzw. alle, die keinen Wert haben) - damit musst du dich durchs Array hangeln und beim nächsten Eintrag nachsehen, ob da eine vorhanden ist - wenn ja, nimmst du diese, wenn nein schaust du bei der übernächsten nach usw bis du einen findest oder am Ende des Arrays bist - wenn alle keine Quality haben.

ru=>0.9
en=>0.9
es=>0.8
de=>0.7

Jetzt nimmst du die verfügbaren Sprachen deiner Seite  - z.B de und en - und wirfst aus dem gelieferten Array alles Raus, was dem sowieso nicht entspricht

en=>0.9
de=>0.7

Jetzt nimmst du jenen Eintrag mit der höchsten Priorität, bei gleicher Priorität jenen der zuerst aufscheint - alternativ nimmst du den, der in deiner Priorität der verfügbaren Sprachen zuerst aufscheint.

Sprachkennung (HTTP_ACCEPT_LANGUAGE)

Der folgende Beitrag wurde am 13. 01. 2010, 15:01 Uhr von suit veröffentlicht.

> Jetzt musst du erst rausfinden, welche quality "ru" hat (bzw. alle, die keinen Wert haben) - damit musst du dich durchs Array hangeln und beim nächsten Eintrag nachsehen, ob da eine vorhanden ist - wenn ja, nimmst du diese, wenn nein schaust du bei der übernächsten nach usw bis du einen findest oder am Ende des Arrays bist - wenn alle keine Quality haben.
r verfügbaren Sprachen zuerst aufscheint.

Das ist natürlich Unsinn, ist keine Quality angegeben wird pauschal 1 angegeben: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Sprachkennung (HTTP_ACCEPT_LANGUAGE)

Der folgende Beitrag wurde am 13. 01. 2010, 14:54 Uhr von hotti veröffentlicht.

h1 Kalle,

Guck ma:

http://aktuell.de.selfhtml.org/artikel/php/httpsprache/

hat Hotti extra für Dich rausgesucht ;-P

Hotti
--
Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.

Sprachkennung (HTTP_ACCEPT_LANGUAGE)

Der folgende Beitrag wurde am 13. 01. 2010, 14:56 Uhr von Gunnar Bittersmann veröffentlicht.

@@Kalle_B:

nuqneH

> möchte die vom Browser akzeptierte Sprache ermitteln.

http_negotiate_language()

Qapla'
--
Volumen einer Pizza mit Radius z und Dicke a: pi z z a

Konzept

Der folgende Beitrag wurde am 13. 01. 2010, 15:28 Uhr von Kalle_B veröffentlicht.

was haltet ihr von diesem Konzept der Sprachenhirarchie im Projekt?

Kalle

Konzept

Der folgende Beitrag wurde am 13. 01. 2010, 16:10 Uhr von Beat veröffentlicht.

Mich stört folgendes:

"Beispiel: Im Veranstaltungskalender remso.de ist deutsch die Projektsprache. Wenn versucht wird, das System japanisch aufzurufen, scheitert das mangels japanischer Sprachdateien. Es wird in deutsch angezeigt:www.remso.de/?lg=jp "

Ich rufe auf:

  http://www.remso.de/?lg=fr

Ich bekommen den Inhalt in Deutsch.
Ich sollte aber eine Umleitung erhalten, so dass die deutsche Sprache im Link sichtbar wird.

Persönlich halte ich automatisierte Content-Negotiation für komplett überflüssig.

mfg Beat
--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische

Konzept

Der folgende Beitrag wurde am 13. 01. 2010, 16:42 Uhr von Kalle_B veröffentlicht.

> Ich rufe auf:
>
>   http://www.remso.de/?lg=fr
>
> Ich bekommen den Inhalt in Deutsch.
> Ich sollte aber eine Umleitung erhalten, so dass die deutsche Sprache im Link sichtbar wird.

Du versuchst, eine Sprache aufzurufen, die zumindest das Startprogramm nicht kann, also fällt es zurück auf de. Gibt die verlangte Sprache aber weiter an das nächste Programm.

Klicke mal einen Städtenamen an, es erscheinen die Events dieser Stadt. Oben rechts mit gelbem Hintergrund siehst du, dass fr gefordert ist. Leider hat auch dieses Programm keine fr-Datei.

Jetzt  klicke mal ein Einzelevent an, die Detailseite kommt. Oben rechts wieder wieder fr als gewünschte Sprache.

Und nun habe ich schnell für dich eine französiche Datei gemacht und die Wochentage schon mal übersetzt.

> Persönlich halte ich automatisierte Content-Negotiation für komplett überflüssig.

Ja, dann kannst du persönlich gerne deine Lieblingssprache angeben und der Browser bleibt aussen vor. Manuell immer vor automatisch, auch meine Devise.

Kalle

Konzept

Der folgende Beitrag wurde am 13. 01. 2010, 17:01 Uhr von Beat veröffentlicht.

> Und nun habe ich schnell für dich eine französiche Datei gemacht und die Wochentage schon mal übersetzt.

Hmm ich bekomme eine mehrheitlich deutsche Seite, die das Wort "Samedi" enthält und der <meta> content-language behauptet "en".

Wenn du schon Sprachen querfeldein wechselst, solltest du dies durch lang Attribute kennzeichnen. Aber Achtung, dieses Gebiet ist extrem aufwändig.

mfg Beat
--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische

Konzept

Der folgende Beitrag wurde am 13. 01. 2010, 17:22 Uhr von Kalle_B veröffentlicht.

> > Und nun habe ich schnell für dich eine französiche Datei gemacht und die Wochentage schon mal übersetzt.
>
> Hmm ich bekomme eine mehrheitlich deutsche Seite, die das Wort "Samedi" enthält

ja, habe nur die Wochentage übersetzt - war ja ein Schnellschuss, um das Konzept zu zeigen

> und der <meta> content-language behauptet "en".

Danke für den Hinweis, den sollte man natürlich zuerst anpassen. Da habe ich schon gepennt, als ich en zu de kopiert habe.

Gruß, Kalle

Konzept

Der folgende Beitrag wurde am 13. 01. 2010, 22:28 Uhr von hotti veröffentlicht.

h1,

> was haltet ihr von diesem Konzept der Sprachenhirarchie im Projekt?

Das ist schonmal OK, denke ich. Siehe auch meine Anm. im anderen Fred. Und nicht vergessen: Do not break the backbutton, damit ein Besucher zu seiner Muttersprache zurückfindet, falls er sich in der Sprachauswahl verklickert hat ;-)

Hotti
--
Mist, was heißt 'deutsche Sprache' auf по русский??? немецкий язык???
Backbutton!

Konzept

Der folgende Beitrag wurde am 13. 01. 2010, 22:47 Uhr von Gunnar Bittersmann veröffentlicht.

@@hotti:

nuqneH

> Mist, was heißt 'deutsche Sprache' auf по русский??? немецкий язык???

Ja. Ist aber egal, da die Links zu anderssprachigen Versionen immer in der Zielsprache beschriftet sein sollten. Auf der russischen Seite steht „deutsch“; auf der deutschen „русский“.

Qapla'
--
Volumen einer Pizza mit Radius z und Dicke a: pi z z a

Konzept

Der folgende Beitrag wurde am 13. 01. 2010, 23:22 Uhr von hotti veröffentlicht.

h1,

> Ja. Ist aber egal, da die Links zu anderssprachigen Versionen immer in der Zielsprache beschriftet sein sollten. Auf der russischen Seite steht „deutsch“; auf der deutschen „русский“.

Da kommt ein kleiner Italiener des Wegs und klickt aus Versehen eine russische Seite aus der bunten Welt der Vielfalt. Auf der russischen Seite steht "deutsch" ... ciao bello ;-)

Buenos noches,
Orst Ombre

</nachti>


Konzept

Der folgende Beitrag wurde am 13. 01. 2010, 23:43 Uhr von Der Martin veröffentlicht.

Hallo,

> Da kommt ein kleiner Italiener des Wegs und klickt aus Versehen eine russische Seite aus der bunten Welt der Vielfalt. Auf der russischen Seite steht "deutsch" ... ciao bello ;-)

auf der russischen Seite steht aber hoffentlich auch "Italiano", also muss er "Deutsch" nur wählen, wenn er es unbedingt will.

> Buenos noches,
> Orst Ombre

Bouna notte,
 Martin

--
Success should be measured not so much by the position that one has reached in life,
but by the obstacles one has overcome while trying to succeed.

Konzept

Der folgende Beitrag wurde am 14. 01. 2010, 00:28 Uhr von Beat veröffentlicht.

> auf der russischen Seite steht aber hoffentlich auch "Italiano", also muss er "Deutsch" nur wählen, wenn er es unbedingt will.

Und wenn da nicht it-Latn steht sondern Italienisch in kyrilischer Schrift?

mfg Beat
--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische

Konzept

Der folgende Beitrag wurde am 14. 01. 2010, 00:45 Uhr von Gunnar Bittersmann veröffentlicht.

@@Beat:

nuqneH

> Und wenn da nicht it-Latn steht sondern Italienisch in kyrilischer Schrift?

Dann zeugt dies von einem unfähigen Seitenautor und die Website ist vermutlich eh nicht lesenswert.

Qapla'
--
Volumen einer Pizza mit Radius z und Dicke a: pi z z a

Konzept

Der folgende Beitrag wurde am 14. 01. 2010, 00:50 Uhr von Beat veröffentlicht.

> > Und wenn da nicht it-Latn steht sondern Italienisch in kyrilischer Schrift?
> Dann zeugt dies von einem unfähigen Seitenautor und die Website ist vermutlich eh nicht lesenswert.

OK.
Wir finden da oft Selektionsboxen.
Wenn du die aufklappst, steht da vielleicht irgendwo iraliano.
Aber das label der Box ist angeschrieben mit "Andere Sprache" auf Hinterindisch natürlich.
Oder man heisst Wikipedia, und legt für die Sprachwahl gleich eine ganze Spalte hin.

mfg Beat
--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische

Konzept

Der folgende Beitrag wurde am 14. 01. 2010, 01:56 Uhr von Kalle_B veröffentlicht.

> Oder man heisst Wikipedia, und legt für die Sprachwahl gleich eine ganze Spalte hin.

Finde ich sehr nützlich für mein Projekt. Da rufst du ein deutsches Stichwort auf und hast es in drei dutzend Sprachen, nur jeweils einen Klick entfernt.

Und manchmal ook up platt, endlich verständlich.

Kalle

Konzept

Der folgende Beitrag wurde am 14. 01. 2010, 09:32 Uhr von Gunnar Bittersmann veröffentlicht.

@@Beat:

nuqneH

> > > Und wenn da nicht it-Latn steht sondern Italienisch in kyrilischer Schrift?
> > Dann zeugt dies von einem unfähigen Seitenautor und die Website ist vermutlich eh nicht lesenswert.
>
> OK.
> Wir finden da oft Selektionsboxen.

Dann zeugt dies von einem unfähigen Seitenautor, wenn diese nicht zumindest durch ein verständliches Icon (Globus?) erkennen lassen, dass sie zur Sprachauswahl dienen. Selektionsboxen zur Sprachauswahl sind problematisch und sollten dafür besser nicht eingesetzt werden. [NAVIGATION-SELECT]

Grmpf, meine Übersetzung dieses Artikels liegt immer noch halbfertig auf Halde.

Qapla'
--
Volumen einer Pizza mit Radius z und Dicke a: pi z z a

Konzept

Der folgende Beitrag wurde am 14. 01. 2010, 00:12 Uhr von Gunnar Bittersmann veröffentlicht.

@@hotti:

nuqneH

> Da kommt ein kleiner Italiener des Wegs und klickt aus Versehen eine russische Seite aus der bunten Welt der Vielfalt. Auf der russischen Seite steht "deutsch"

Ja und? Wenn er russisch kann, versteht er den Inhalt. Wenn er deutsch kann, versteht er den Link zur deutschsprachigen Seite und kann dort den Inhalt lesen. Kann er weder deutsch noch russisch, kann er mit der Website nichts anfangen – es sei den, sie hält auch eine italienische Sprachversion bereit. Dann ist es egal ob er ursprünglich auf der russischen oder deutschen Seite gelandet ist, er versteht den Link zu seiner Sprachversion, wenn dieser mit „Italiano“ beschriftet ist.

Qapla'
--
Volumen einer Pizza mit Radius z und Dicke a: pi z z a

Konzept

Der folgende Beitrag wurde am 14. 01. 2010, 16:24 Uhr von hotti veröffentlicht.

> was haltet ihr von diesem Konzept der Sprachenhirarchie im Projekt?

Falls Du vorhast, HTTP_ACCEPT_LANGUAGE auszuwerten, mach keine Umleitung per Status 301,2 sondern nutze Rewrite, das ist suchmaschinenfreundlicher.

Beispiel:
RewriteRule ^.*.html$   /cgi-bin/show.cgi?q=html

show.cgi oder ein PHP-Script wertet HTTP_ACCEPT_LANGUAGE aus und holt die Datei in der entsprechenden Sprache aus der DB (Datenquelle).

Ein Request auf /index.html zeigt so automatisch eine passende )dynamisch erzeugte) Seite _ohne_ dass der Browser zu einer anderen Location umgeleitet werden muss.

Nur mal so nebenbei ...

Horst Spitz

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4