2009-07-30 4 views
23

Ich weiß, diese Frage answered before gewesen ist, aber die Antwort gegeben ist nicht die ganze Geschichte:Wie bekomme ich die Firefox-Spracheinstellung? (Wirklich)

Ich ging in Firefox Optionen-> Inhalt und entfernt alle Sprachen außer Deutsch/Deutschland, und navigator.language hasn‘ t geändert - es ist immer noch en-GB (ich bin in Großbritannien).

Mir wurde gesagt, wenn ich den deutschen Firefox INSTALL bekomme, wird es funktionieren, aber ich sollte das nicht tun müssen, oder?

Die Useragent-Zeichenfolge enthält immer noch en-GB; aber die Accept-Sprache in HTTP-Headern ist korrekt eingestellt. Also das scheint ein Bug in Firefox zu sein, ich habe ein bisschen Zeit damit verbracht, durch ihren Bugzilla zu waten, aber ich kann nicht sehen, dass dieser genaue Fehler protokolliert wird, obwohl es für mich ein ziemlich großes Versehen zu sein scheint?

Antwort

9

Ich würde empfehlen, ein Firefox-Add-on für diese Aufgabe zu verwenden. Simple Locale Switcher, Locale Switcher oder Quick Locale Switcher usw. (* Vorsicht einige dieser Add-ons können Ad-Ware enthalten oder funktionieren möglicherweise nicht, wenn Sie gerade Firefox aktualisiert haben).

* Eine andere Lösung ist das Herunterladen einer anderen alten Firefox-Version mit der Sprache/Gebietsschema. (Achtung) Sie benötigen und installieren es in einem anderen Ordner, damit Sie Ihre vorhandene Version nicht überschreiben. Download here Ich benutze Firefox 28 in Spanisch. Ich habe Updates deaktiviert und abgelehnt, sie als Standardbrowser zu verwenden. In diesem Fall sollte nur eine Firefox-Version gleichzeitig ausgeführt werden.

+0

Vielen Dank für Ihren Vorschlag - das würde wahrscheinlich den Fehler in dieser Version von Firefox umgehen, aber als ich zurückging, um das zu testen, scheint es, als hätten sie es behoben, jetzt (Version 12.0)! Entfernen des Add-ons und Ändern der Sprache funktioniert jetzt wie erwartet. Ich werde deine Antwort akzeptieren, weil es nützlich gewesen wäre, wenn das Problem nicht verschwunden wäre. –

+0

Vorsicht, die neueste Version enthält Adware/Bloatware – SyntaxRules

+0

funktioniert nicht auf Firefox ≥57 –

2

Ich würde davon ausgehen, dass navigator.language gibt es die Sprache der Benutzeroberfläche (ich nehme an GB Englisch), nicht, dass es Dokumente will. User-Agent Zeichenfolge zu berichten, welche Version von Firefox wurde heruntergeladen.

Akzeptierte Sprache sollte der Zielserver überprüfen.

Ich halte dieses Verhalten seiner ganz richtig (vorausgesetzt, dass es Schnittstelle (Menüs und solche) sind wirklich in GB Englisch).

+0

Ich verstehe nicht, warum es gut ist, eine zu ändern (die accept_language in Kopfzeilen) und nichts anderes mit locale zu tun? –

+1

@Ian: Wenn ich Ihre Frage richtig verstanden habe, lautet die Antwort, dass die Sprache und Sprache der Benutzeroberfläche, in der Sie Ihre Websites anzeigen möchten, unterschiedlich sein kann. Beispiel: Wenn ich in einem Internetcafe in Deutschland bin, wird höchstwahrscheinlich die deutsche Version von Firefox installiert.Ich kann wahrscheinlich keinen anderen Browser installieren, aber ich möchte, dass meine Websites auf Englisch gerendert werden. Ich ändere die Accept-Sprache und kann jetzt Websites in der Sprache meiner Wahl anzeigen, obwohl die Benutzeroberfläche in einer anderen Sprache ist. –

+1

@Grant: Genau. Das ist genau das Problem, das wir haben. Der Benutzer kann die "akzeptierte Sprache" nur ändern, wenn er sich in einem Firefox befindet, der nicht in der Sprache lokalisiert ist, die er verwenden möchte. Und Sie können nicht in Javascript von Firefox kommen (Sie können von IE). –

0

Wenn Sie den Wert Accept-Language möchten, können Sie nicht abrufen, wenn Sie clientseitiges JavaScript verwenden. Sie müssen es von Ihrem Server bekommen.

Wenn Sie wirklich diesen Wert in der clientseitige JavaScript wollen, es dann auf dem Server lesen und es zurück an den Client schreiben:

<script type="text/javascript"> 
// setting the accept language HTTP header value 
// in client-side JavaScript from PHP 
var acceptLanguage = '<?php echo $_SERVER["HTTP_ACCEPT_LANGUAGE"]; ?>'; 
</script> 
+2

Ich weiß. Dies ist die aktuelle Problemumgehung (unter Verwendung von ASP.NET): System.Web.HttpContext.Current.Request.UserLangauges. Das mag ein bisschen "religiös" klingen, aber ich denke, wir sollten das nicht tun müssen! –

14

Sowohl navigator.language und die HTTP-User-Agent-Header verwenden, die Wert der Präferenz "general.useragent.locale", die in intl.properties zu dem Ort des Firefox bauen Sie heruntergeladen hartcodiert ist: http://mxr.mozilla.org/mozilla-central/source/toolkit/locales/en-US/chrome/global/intl.properties#8

Oder für Ihr en-GB bauen: http://hg.mozilla.org/l10n-central/en-GB/file/88dd673c01f1/toolkit/chrome/global/intl.properties#l8

Wenn Sie es für Ihren Build ändern möchten, laden Sie einfach über: config, suchen Sie general.useragent.locale, doppelklicken Sie darauf und ändern Sie den Wert.

+1

@Ted: 'navigator.language' kann' general.useragent.locale' verwenden (ich habe es nicht getestet), aber 'Accept-Language' scheint hier nicht den Wert' general.useragent.locale' zu ​​verwenden. Es scheint 'intl.accept_languages' zu verwenden. Ich habe 'intl.accept_languages' manuell geändert (d. H. - nicht über Extras> Optionen ...> Inhalt> Sprachen) und Live HTTP-Header zeigt Firefox mit dem neuen Wert an. –

+0

@Ted: 'phpinfo()' meldet auch den neuen Wert von 'intl.accept_languages' im' Accept-Language' HTTP-Header, so dass es sich nicht um ein seltsames lokales Phänomen handelt. –

+0

Oh hoppla, ich meinte dort den "User-Agent" -Header, aber ich glaube, ich war verwirrt, als ich deine vorherige Antwort sah. Es tut uns leid! –

-1

in firefore, über: config, ändern Sie den Wert von "intl.accept_languages", zu Ihrem gewünschten Gebietsschema, sagen wir, de-DE wird tun.

+0

Sorry, aber meine Frage ist, sobald ein Endbenutzer diese Einstellung in der Benutzeroberfläche geändert hat - wie soll mein JavaScript dazu kommen? - einfache Antwort: es kann nicht. –

+0

Ich denke, JS sollte in der Lage sein, diese Informationen von Benutzeranforderung zu erhalten. accept_language ist einer der Standardanforderungsparameter. – lwpro2