ist es eine Methode, die Sprache des Benutzers i i sein Land zuerst wissen müssen denken, zu wissen, und die Sprache entsprechend esWie kann ich feststellen, welches Land/welche Sprache das bevorzugte Land ist?
Antwort
Gibt es Gründe, $_SERVER["HTTP_ACCEPT_LANGUAGE"]
wird nicht funktionieren detemine?
Inhalt der Accept-Language: Header aus der aktuellen Anfrage, falls es eine gibt. Beispiel: 'en'.
Hinweis zu finden, die Accept-Language * * eine Liste von gewichteten Werten ist.Es ist also nicht unbedingt nur ein Wert und der erste Wert ist nicht unbedingt der am meisten bevorzugte Wert. – Gumbo
wird es als die Google-Bots erscheinen –
@moustafa: Der Google Bot sendet keine * Accept-Language * Header-Feld überhaupt, wenn das ist, was Sie verlangen. Das heißt, es akzeptiert jede Sprache. In diesem Fall sollten Sie eine Seite mit Links zu allen verfügbaren Sprachvarianten zurückgeben. – Gumbo
Es gibt mehrere Ansätze. Ich würde jedoch empfehlen, zuerst Accept-Language zu betrachten.
Nur wenn das abwesend ist, sollten Sie in Betracht ziehen, auf den Ansatz zurückzugreifen, den Sie gegeben haben. Das ist im Grunde mit Geolocation, um das Land oder die Region zu bekommen, dann die Sprache zu erraten.
Letzteres ist ziemlich fehlerhaft, weil viele Länder und sogar Regionen sehr vielsprachig sind.
Die meisten Browser senden ihr Standardgebietsschema mit der Anfrage. können Sie diese Informationen durch
$userLang = $_SERVER['HTTP_ACCEPT_LANGUAGE']
prüfen Abrufen dieses aus
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
Auch
Kontrolle dieses link
Wenn $_SERVER['HTTP_ACCEPT_LANGUAGE']
nicht hilfreich genug ist, können Sie diesen Dienst versuchen
Zunächst einmal: Es gibt einen Unterschied zwischen dem geografischen Standort und der bevorzugten Sprache eines Benutzers, und Sie können nicht eine Information basierend auf dem Wissen des anderen implizieren.
Der geografische Standort eines Benutzers kann durch Geolokalisierung der IP-Adresse bestimmt werden. Und die beste Lösung ist, den Benutzer einfach nach seiner bevorzugten Sprache zu fragen.
Obwohl der Browser in der Regel einige Spracheinstellungen zusammen mit der Anfrage sendet (siehe Accept-Language header field und my answer on Detect Browser Language in PHP), sind dies nicht die aktuellen Spracheinstellungen des aktuellen Benutzers, der den Browser verwendet.
Natürlich können Sie die beste Auswahl (falls vorhanden) von "Accept-Language" als Standard verwenden und es dem Benutzer dann leicht machen, eine Alternative auszuwählen. –
@Matthew Flaschen: Ja, Sie können diese Information als Anfangswert verwenden. Aber es ist immer besser, den Benutzer zu fragen. – Gumbo
Was ist der Grund für die Down-Abstimmung? Stimmt etwas nicht mit meiner Antwort? – Gumbo
Im Fall, dass Sie die vollständigen Sprachnamen anstelle der Abkürzungen (en, fr, etc.) versuchen, diese Grundfunktion:
function parse_language($languages = '') {
$translation = array('en' => 'English', 'fr' => 'French', 'es' => 'Spanish', 'de' => 'German', 'ja' => 'Japanese');
if($languages == '') { //Default to HTTP accept language header
$languages = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
}
$languages = explode(',', strtolower($languages)); //Separate individual languages
foreach($languages as &$language) { //Filter out any county codes like -US
if(strpos($language, '-') !== false) {
list($language,) = explode('-', $language, 2);
}
}
//Find the intersections between the translation keys and the language values
return(array_values(array_intersect_key($translation, array_combine($languages, array_fill(0, count($languages), '')))));
}
//Sample usage
print_r(parse_language('en-US,de-GR,fr,es'));
Wenn Sie mehr Sprachunterstützung benötigen, einfach mehr Schlüssel/Wert-Paare hinzufügen zum Übersetzungs-Array.
- 1. Schienen: Welches ist das bevorzugte Mailchimp Juwel?
- 2. Wie kann ich feststellen, welches iOS SDK ich habe?
- 3. Wie kann ich feststellen, welches Element beim Laden der Seite den Fokus hat? Ist das möglich?
- 4. Wie kann ich feststellen, welches iOS-Gerät mein Benutzer verwendet?
- 5. Wie kann ich feststellen, welches Programm gestartet wurde?
- 6. Wie kann ich feststellen, auf welches Kontrollkästchen geklickt wurde?
- 7. Wie kann ich feststellen, welches Service Pack Visual Studio ausführt?
- 8. Wie kann ich feststellen, ob das Master-Volume stummgeschaltet ist?
- 9. Wie kann ich feststellen, ob das cURL-Handle abgelaufen ist?
- 10. Wie kann ich feststellen, welches Layout von Android in meiner Anwendung ausgewählt wurde?
- 11. Wie bekomme ich Sprache ohne Land von CultureInfo
- 12. Wie kann ich feststellen, welches signierte jar das maven-shade-plugin zum scheitern bringt?
- 13. nodejs - Welches "das" ist das?
- 14. Welches Designmuster ist das?
- 15. Welches Designmuster ist das?
- 16. Welches Zeitformat ist das?
- 17. Wie kann ich feststellen, ob eine Sprache kontextfrei ist oder nicht?
- 18. jQuery-Land auswählen, wenn das Land bereits gespeichert ist?
- 19. Welches Datumsformat ist das?
- 20. Welches Datumsformat ist das?
- 21. Welches Datenformat ist das?
- 22. Wie kann ich feststellen, in welchem Land ein iPhone gekauft wurde?
- 23. Welches ist das bevorzugte Muster für die Verwendung von Qt Model-View Architecture?
- 24. ASP.NET MVC2-Lokalisierung: Wie formatiert Sprache/Land abhängiger Text?
- 25. Emacs: Welches Plugin ist das?
- 26. Entwurfsmuster - Welches Muster ist das?
- 27. Wie kann ich clientseitig feststellen, wenn das Laden einer Seite das Ergebnis eines AJAX-Verlaufspunkts ist?
- 28. Wie kann ich feststellen, wie stark eine Datei fragmentiert ist?
- 29. Wie kann ich feststellen, dass das Gerät geladen wird?
- 30. Welches ist das einfachste Registrierungsformular?
verwenden, können Sie Apache verwenden geo_ip mod das Land –