2009-07-30 51 views
23

我知道这个问题已经answered before,但给出的答案是不完整的故事:如何获得Firefox的语言设置? (真的)

我走进Firefox的选项 - >内容,并删除了所有语言,除了德国/德国和navigator.language不是招”没有改变 - 它仍然是EN-GB(我在英国)。

我被告知如果我得到德国的Firefox安装它会工作,但我不应该这样做,对吧?

useragent字符串仍然包含en-GB;但HTTP头上的接受语言是正确设置的。所以这似乎是Firefox中的一个错误,我花了一些时间浏览他们的bugzilla,但是我看不到这个确切的bug,尽管对我来说这似乎是一个相当大的疏忽?

回答

9

我建议使用Firefox插件来完成此任务。 Simple Locale Switcher,Locale SwitcherQuick Locale Switcher等。(*注意某些附加组件可能包含广告软件,或者如果您刚刚更新了Firefox,则可能无法使用)。

*另一种解决方案是使用语言/语言环境下载不同的旧版Firefox。 (小心)您需要将其安装在不同的文件夹中,以免覆盖现有版本。 Download here我在西班牙语中使用firefox 28。我禁用了更新,并拒绝将其用作我的默认浏览器。如果你这样做,只有一个firefox版本应该同时运行。

2

我会假设navigator.language返回它的界面语言(我认为是GB英语),而不是一个它需要文档。用户代理字符串也报告下载了哪个版本的Firefox。

Accept-language是目标服务器应检查的内容。

我认为他的这种行为非常正确(假设它的界面(菜单和这样的)确实在GB英语中)。

+0

我不明白为什么更改一个(标头中的accept_language)而不是与locale相关的其他东西? – 2009-07-30 13:59:28

+1

@Ian:如果我正确理解您的问题,答案是您想要查看您的网站的UI语言和语言可能会有所不同。例如:如果我在德国的一家网吧,很可能会安装德语版的Firefox。我可能无法安装其他浏览器,但我希望我的网站以英文呈现。我改变了Accept-Language,现在我可以用我选择的语言浏览网站,即使UI是用另一种语言编写的。 – 2009-07-30 16:42:09

+1

@Grant:的确如此。这正是我们的问题。如果用户使用的Firefox本地化为他们想使用的语言,则用户只能更改“接受语言”。而你不能从Firefox的JavaScript(你可以从IE浏览器)获得。 – 2009-07-31 08:11:38

0

如果您需要Accept-Language值,则无法检索使用客户端JavaScript的情况。你必须从你的服务器获取它。

如果你真的想在客户端JavaScript这个值,然后读取它的服务器上,并把它写回客户端:

<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

我知道。这是我们目前的解决方法(使用ASP.NET): System.Web.HttpContext.Current.Request.UserLangauges。 这听起来有点'宗教',但我认为我们不应该这样做,但! – 2009-07-31 08:10:00

14

两个navigator.language和HTTP User-Agent头使用 http://mxr.mozilla.org/mozilla-central/source/toolkit/locales/en-US/chrome/global/intl.properties#8

或者您的EN-GB建设: http://hg.mozilla.org/l10n-central/en-GB/file/88dd673c01f1/toolkit/chrome/global/intl.properties#l8

偏好“general.useragent.locale”,这是在intl.properties硬编码打造您下载火狐的区域设置的值

如果您想要为您的构建更改它,只需加载about:config,找到general.useragent.locale,双击它并更改该值。

+1

@Ted:`navigator.language`可以使用`general.useragent.locale`(我没有测试过),但是`Accept-Language`似乎并没有在这里使用'general.useragent.locale`值。它似乎使用`intl.accept_languages`。我手动更改了`intl.accept_languages`(即 - 不通过工具>选项...>内容>语言),并且Live HTTP标头使用新值显示Firefox。 – 2009-07-30 17:51:42

-1

在firefore,about:config中,将“intl.accept_languages”的值修改为您所需的语言环境,让我们假设DE DE会这样做。