Konqueror 瀏覽器的國家和語言設定在哪設?
Moderator: Forums Team
Konqueror 瀏覽器的國家和語言設定在哪設?
我每次到那種會偵測語言的網頁都會把我的 Konqueror 誤判成簡體中文............
我找不到在哪可以設。瀏覽器的辨識加了語言也沒用........
我找不到在哪可以設。瀏覽器的辨識加了語言也沒用........
Re: Konqueror 瀏覽器的國家和語言設定在哪設?
設定->設定Konqueror->字型->預設編碼Si wrote:我每次到那種會偵測語言的網頁都會把我的 Konqueror 誤判成簡體中文............
我找不到在哪可以設。瀏覽器的辨識加了語言也沒用........
謝謝收看.
叫我老帕好了!


謝謝 paar!
可是沒有用耶........
還是判斷錯誤。
我正好幫朋友找 WinXP 開機片製作程式,到這網頁才發現了這問題,老是誤判成簡體中文。Mozilla 就沒這問題。
http://support.microsoft.com/?kbid=310994
可是沒有用耶........
還是判斷錯誤。
我正好幫朋友找 WinXP 開機片製作程式,到這網頁才發現了這問題,老是誤判成簡體中文。Mozilla 就沒這問題。
http://support.microsoft.com/?kbid=310994
我剛剛也試了一下,果然是有問題的,我想問題應該是出在“瀏灠器識別吧”,我猜,我看mozilla是送出zh-tw,但是Konqueror 是送出 zh_TW, zh_TW.Big5, zh的樣子Si wrote:謝謝 paar!
可是沒有用耶........
還是判斷錯誤。
我正好幫朋友找 WinXP 開機片製作程式,到這網頁才發現了這問題,老是誤判成簡體中文。Mozilla 就沒這問題。
http://support.microsoft.com/?kbid=310994
今天不知怎麼一看到 Konqueror 開的網頁又誤判為簡體中文就火大,於是我開始對 KDE 程式研究。現在對這問題的結論是 KLocale 這個 class 的關係。不過我先來說說整個問題的來龍去脈。
假設我要連 www.google.com,當 Konqueror 對 google 發出 http 請求的時候會有這一段:
Accept-language: zh, en
這是問題的開始,Google 看到 zh 時會認為 Konqueror 在請求簡體中文的網頁。相反的用 Firefox:
Accept-language: zh-tw, en
那為何 Konqueror 不用 zh-tw 呢?經過一段時間的研究,我發現在 kio_http 這個 kio slave 在 http 封包裡加上語言,而語言是由 KLocale 這個 class 告訴 kio_http,但 KLocale 給的是 zh 而不是 zh-tw。
再繼續找下去找問題的根源,KLocale 裡有一個 splitLocale() function。這個 function 會把 locale 拆成「語言」、「地區」、「編碼」。例如 zh_TW.UTF-8 就會被拆成:
語言=zh
地區=TW
編碼=UTF-8
當 kio_http 拿到語言時就成了 zh。
解決辦法有二:
1. 修改 kde-i18n-zh_tw 的檔案,所有檔案名稱和目錄只要是 zh_TW 就要改成 zh-tw_TW
2. 修改 kdelibs/kdecore/klocale.cpp
我準備向 KDE 的開發人員反應這問題,看他們認為應該要如何解決。
假設我要連 www.google.com,當 Konqueror 對 google 發出 http 請求的時候會有這一段:
Accept-language: zh, en
這是問題的開始,Google 看到 zh 時會認為 Konqueror 在請求簡體中文的網頁。相反的用 Firefox:
Accept-language: zh-tw, en
那為何 Konqueror 不用 zh-tw 呢?經過一段時間的研究,我發現在 kio_http 這個 kio slave 在 http 封包裡加上語言,而語言是由 KLocale 這個 class 告訴 kio_http,但 KLocale 給的是 zh 而不是 zh-tw。
再繼續找下去找問題的根源,KLocale 裡有一個 splitLocale() function。這個 function 會把 locale 拆成「語言」、「地區」、「編碼」。例如 zh_TW.UTF-8 就會被拆成:
語言=zh
地區=TW
編碼=UTF-8
當 kio_http 拿到語言時就成了 zh。
解決辦法有二:
1. 修改 kde-i18n-zh_tw 的檔案,所有檔案名稱和目錄只要是 zh_TW 就要改成 zh-tw_TW
2. 修改 kdelibs/kdecore/klocale.cpp
Code: Select all
--- klocale.cpp.orig 2007-05-14 19:33:10.000000000 +1200
+++ klocale.cpp 2007-05-14 19:36:09.000000000 +1200
@@ -533,6 +533,9 @@
}
language = str;
+ if (language == QString::fromLatin1("zh") &&
+ country == QString::fromLatin1("TW"))
+ language += QString::fromLatin1("-tw");
}
QString KLocale::language() const
KDE Bug report:
http://bugs.kde.org/show_bug.cgi?id=145407
http://bugs.kde.org/show_bug.cgi?id=145407
試試將 Konqueror cookies 清掉,然後輸入 http://www.google.com/ (用 Konqueror Google search bar 不準) 或 http://www.emule-project.org/。這兩個網站在我這都會誤判。
我剛把cookie跟cache、history清掉,關掉重開,
然後在URL line打上www.google.com,會自動轉至繁中
www.emule-project.org則會顯示英文
btw, 我有裝FireFox 2.0.0.3,這兩個都沒有裝google search bar
我只安裝kdebase,版本為3.5.5-r4
然後在URL line打上www.google.com,會自動轉至繁中
www.emule-project.org則會顯示英文
btw, 我有裝FireFox 2.0.0.3,這兩個都沒有裝google search bar
我只安裝kdebase,版本為3.5.5-r4
真抱歉,解決方案 2 是錯的...
那段程式是針對環境變數處理,我加那三行並沒用。又研究了好久,實在是不知道到底是哪裡把 zh_TW 變成 zh
另外在這看到的解決方法本來試了一下沒用,但後來再試不知為何又有用了。應該只要 Languages=zh-tw, en 這一行就夠了。不過這不是解決問題的根本。應該是只要用了 zh_TW 語言就應該自動設 zh-tw。
不過目前看來好像就只有 kio_http 受影響,而我一時又看不出哪裡把 zh_TW 變成 zh,所以就先修改了 kio_http。我試了一下,沒問題,有興趣的朋友可以試試這個 patch:
那段程式是針對環境變數處理,我加那三行並沒用。又研究了好久,實在是不知道到底是哪裡把 zh_TW 變成 zh
另外在這看到的解決方法本來試了一下沒用,但後來再試不知為何又有用了。應該只要 Languages=zh-tw, en 這一行就夠了。不過這不是解決問題的根本。應該是只要用了 zh_TW 語言就應該自動設 zh-tw。
不過目前看來好像就只有 kio_http 受影響,而我一時又看不出哪裡把 zh_TW 變成 zh,所以就先修改了 kio_http。我試了一下,沒問題,有興趣的朋友可以試試這個 patch:
Code: Select all
--- kioslave/http/http.cc.orig 2007-06-02 23:10:47.000000000 +1200
+++ kioslave/http/http.cc 2007-06-02 23:07:43.000000000 +1200
@@ -356,6 +356,13 @@
m_request.charsets += DEFAULT_PARTIAL_CHARSET_HEADER;
m_request.languages = config()->readEntry( "Languages", DEFAULT_LANGUAGE_HEADER );
+
+ int f = m_request.languages.find(QString::fromLatin1("zh"));
+ if ( f >=0 )
+ {
+ if ( KGlobal::locale()->country() == QString::fromLatin1("tw") )
+ m_request.languages.insert(f + 2, QString::fromLatin1("-tw"));
+ }
}
else
{