Page 1 of 1
Konqueror 瀏覽器的國家和語言設定在哪設?
Posted: Tue Jan 27, 2004 8:06 am
by Si
我每次到那種會偵測語言的網頁都會把我的 Konqueror 誤判成簡體中文............
我找不到在哪可以設。瀏覽器的辨識加了語言也沒用........
Re: Konqueror 瀏覽器的國家和語言設定在哪設?
Posted: Tue Jan 27, 2004 7:26 pm
by paar
Si wrote:我每次到那種會偵測語言的網頁都會把我的 Konqueror 誤判成簡體中文............
我找不到在哪可以設。瀏覽器的辨識加了語言也沒用........
設定->設定Konqueror->字型->預設編碼
謝謝收看.
Posted: Wed Jan 28, 2004 7:01 am
by Si
謝謝 paar!
可是沒有用耶........
還是判斷錯誤。
我正好幫朋友找 WinXP 開機片製作程式,到這網頁才發現了這問題,老是誤判成簡體中文。Mozilla 就沒這問題。
http://support.microsoft.com/?kbid=310994
Posted: Wed Jan 28, 2004 9:48 am
by scsi
我剛剛也試了一下,果然是有問題的,我想問題應該是出在“瀏灠器識別吧”,我猜,我看mozilla是送出zh-tw,但是Konqueror 是送出 zh_TW, zh_TW.Big5, zh的樣子
Posted: Wed Jan 28, 2004 12:11 pm
by Si
我試了一下用 wget 加 User-agent。怎麼弄都是英文網頁.......
真不曉得那網站是以什麼來判段語言......
Posted: Mon May 14, 2007 4:18 pm
by Si
今天不知怎麼一看到 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
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 的開發人員反應這問題,看他們認為應該要如何解決。
Posted: Mon May 14, 2007 4:43 pm
by scsi
讚!
我之前用Konqueror上google也是這樣讓我很吐血
希望等你版應後,就能澈底的解決了
Posted: Mon May 14, 2007 4:58 pm
by Si
Posted: Tue May 15, 2007 11:25 am
by Victor
關於這個問題,我昨天試了一下這邊有的三臺機器,
三臺環境都差不多,但是沒有自動轉簡體中文的問題耶..Orz
我是在進KDE前在.xinitrc下export LC_ALL=zh_TW.UTF-8
Posted: Tue May 15, 2007 11:36 am
by Si
試試將 Konqueror cookies 清掉,然後輸入
http://www.google.com/ (用 Konqueror Google search bar 不準) 或
http://www.emule-project.org/。這兩個網站在我這都會誤判。
Posted: Tue May 15, 2007 11:59 am
by Victor
我剛把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
Posted: Tue May 15, 2007 12:29 pm
by Si
你有裝 KDE I18N TW 嗎?只有用了這個才會有問題。
Posted: Tue May 15, 2007 1:08 pm
by Victor
呃..我確實是沒有裝..對不起..
我是來亂的(跑)
Posted: Sat Jun 02, 2007 7:26 pm
by Si
真抱歉,解決方案 2 是錯的...
那段程式是針對環境變數處理,我加那三行並沒用。又研究了好久,實在是不知道到底是哪裡把 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
{