2009-07-30 47 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會這樣做。