您在這裡

localizer-5.x 多國語言模組自動偵測語系的修改

yelban's 的頭像
yelban 在 2007-02-04 (周日) 00:43 發表

localizer 好像比 international 模組功能上有所增強
在資料庫的操作效能好像也高一些
安裝了是是看發現自動偵測瀏覽器的功能沒效果
trace 了一下發現是使用兩個字母做比對, 但是咱們台灣 zh-tw 跟中國的 zh-cn 語系編碼卻有五位
所以 Yelban 給做了一下小修改
不知道這樣改合不合適, 會不會有其他後遺症

localizer-5.x-1.x-dev.tar.gz/localizer.module
大約 1190 行的位置
<?php

/**
* Get the language of the browser
*/

function localizer_get_browser_lang() {
$languages = localizer_available_uilocales();
$exploded_server = explode(";",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
$accept=explode(',',array_shift($exploded_server)); ;
foreach ($accept as $lang) {
$lang=substr($lang,0,2);
if (!empty($lang) && array_key_exists($lang,$languages)) {
return $lang;
}
}
return localizer_get_defaultuilocale();
}
?>

改成這樣
<?php

/**
* Get the language of the browser
*/
function localizer_get_browser_lang() {
$languages = localizer_available_uilocales();
//$exploded_server = explode(";",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
//$accept=explode(',',array_shift($exploded_server)); ;
//foreach ($accept as $lang) {
// $lang=substr($lang,0,2);
$lang = split(",", $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
if (!empty($lang[0]) && array_key_exists($lang[0],$languages)) {
return $lang[0];
}
//}
return localizer_get_defaultuilocale();
}
?>

或者可以有其他更好的改法呢?

如果有更好的改法也可以在下面連結提供給原作者
這樣以後就不用自己 hack了!
http://drupal.org/node/114338

ps. 這樣要在安裝drupal前修改 ./includes/locale.inc
把 zh-hant 改成 zh-tw, zh-hans 改成 zh-cn
要是已經安裝了就只好直接修改 資料庫表格的值

看來 zh-hant 還是 zh-tw 的選擇也真是......
前者適用性比較廣, zh-開頭的漢字"繁/簡"體, 沒有牽涉地區的問題這樣香港的也能適用
但是後者卻有著 瀏覽器的國際性支援, 真是有一好沒兩好呀!!

一直對安裝雙語網站的問題有興趣。請教一下 yelban ,所謂「localizer 好像比 international 模組功能上有所增強,在資料庫的操作效能好像也高一些」有沒有比較具體的感覺。

因為TKY升級5.0時,依然使用i18n這個模組,當時在搜尋5.0模組時也有看到localizer。看它的說明,不曉得和i18n有什麼太大的差別。下載回來試用,卻一試就當機(網站變空白頁)。所以就沒用了。

能不能請yelban做個評估呢?

i18n用到現在,只發現一個小bug。就是自動偵測瀏覽器語言的選項,一旦開啟,不管在中文站還是英文站,只要登出就會跑到英文站去,蠻麻煩的。但開啟的好處就是,進預設語言站的時後,網址不會出現en或zh-hand的文字。
有一好沒兩好,唉~~。

另外就是分類詞翻譯,用起來比較像以新增分類詞的方式在做翻譯,而非一一對應的翻譯。

5.0裡頭就不賴了,選單也可以做雙語設定,試用的效果非常好。

TKY

tky

是的 Yelban 也是發現 localizer 在 drupal 5.1 的選單可以直接翻譯
主要會想試用 localizer 是因為這一段話:
Now Localizer is far superior to i18n
http://drupal.org/node/107573#comment-193306

A few weeks ago I'd say that you should use i18n, but newest versions of localizer are improving a lot, and now, for me, this module is the clear winner in the internazionalizing of Drupal, at least if i18n don't change the way the it translates the taxonomy...

I mean, among other issues, i18n duplicates the taxonomy !!! That is a really bad thing that Localizer has resolved, although localizer has to improve a little... I think that in a few weeks we'll have a real choice to insert into Drupal Core !!!

"i18n duplicates the taxonomy" 好像容易會導致資料庫的額外負擔, 所以才想拿 localizer 來試試看, 雖然還是有部分問題

除了自動偵測瀏覽器無效, 怎樣都會進入英文網頁之外
就是 multilang block 還試不出來
不知道是不是自己設定的問題

至於 drupal 的「白屏」(套用對岸的簡明說法), 真的是很傷腦筋
好像任何情形下都有可能出現, 對付「白屏」的主要方式就是直接觀察 apache 的 error log,
通常會有錯誤的相關資訊出現在 log檔裡

比如曾幫友人用drupal架個小站, 起初都ok
逐漸有越來越多人反應網頁都打不開
是「逐漸」,而不是一下就出現問題
糟糕的是我自己開都沒遇到空白畫面
這就傷腦筋了
後來還是把 drupal 4.x 後台的 cache 通通關閉, 才解決問題

不知道是不是快取的程式碼有bug
還是快取功能需要 apache的特殊調校這就不得而知了

選擇老牌的 international 還是新生代 localizer
我也是舉足不定

希望有更多人分享使用多語言的心得
可以更客觀的比較兩者功能的長處與適用環境^^

> 比如曾幫友人用drupal架個小站, 起初都ok
> 逐漸有越來越多人反應網頁都打不開
> 是「逐漸」,而不是一下就出現問題
> 糟糕的是我自己開都沒遇到空白畫面
> 這就傷腦筋了
> 後來還是把 drupal 4.x 後台的 cache 通通關閉, 才解決問題

4.6的cache有問題,不過是session的問題
聽說這個問題4.7解決了
不是loading的關係

--
from open mind to open source~

TKY是知道說「白屏」大部分都是因為伺服器記憶體用光了,要不就是裝了不合版本的模組。TKY想說yelban提到的「逐漸」出現問題,應該是網站內容越來越多,或者模組越加越多,伺服器相關的負擔越來越重造成的吧?

關掉cache可以解決問題,這倒是TKY第一次聽過,以後可以試試。

TKY目前是因為一裝localizer,網站就掛掉,所以沒有試過localizer是否比較好用。

倒是yelban的multilang block多語區塊,TKY在i18n之中,也從來沒成功過。很奇怪。多了好幾個meta區塊,卻沒有相映的翻譯區塊,吐血!更慘的是,又刪不掉,噴血~~。

不過還好5.0之後可以翻譯選單,可算是彌補了這塊。多語區塊的功能乾脆關掉比較簡單。

至於多語分類的部分,雖然不滿意,但可以接受。如果有天也出了yelban說的問題,可以會再試試看localizer。

官網上好像也有人提到這兩個模組的比較,但目前看不出所以然來。

謝謝yelban

TKY

tky

有的时候白屏是IE的问题,我遇到的问题是,用IE第一次访问没有问题,再次回到之前访问过的页面就一片空白。

但此时页面实际上已经载入,因为你可以选择查看页面源代码,会看到完整无误的代码。而且如果这个时候选择查看->编码->自动选择,页面就出现了。

这说明是IE不能自动识别当前页面的编码,问题的原因还可能是我们多数用drupal的站点都使用utf8编码,烂ie好像对这样编码的页面不能象firefox一样很好地识别。

是的的確是IE的Bug(唉, IE Bug 多不勝數, 怎麼啥東西讓 M$一搞就只能越便越爛? foxpro這樣, frontpage也是這樣, 要不是有 firefox出來, 恐怕現在都還只能用 IE5, 所以很多寫CSS的書裡頭指的新式瀏覽器, 是指不包含IE6在內的其他瀏覽器)

如果你的 httpd 服務器是apache1.3
可以試一下這個
edit .htaccess
-------------------------
AddDefaultCharset UTF-8
BrowserMatch "MSIE" force-no-vary
-------------------------

i18n 的多語區塊倒是沒有問題
只要先建立一般的區塊 例如建立 英文, 日文 中文 三個區塊
然後再建立多語區塊
這時候可以選擇對應語言要顯示那個區塊(就是之前的中文日文英文等區塊)
逐一選好對應的區塊即可

印象中好像是這樣, 可能最近心臟循環有點老化所以導致記憶力變差(最近正在看"You: THE OWNER'S MANUAL", 當然是中意版, 才發現原來記憶力減退跟性功能障礙以及中風都可能是源於同一個原因, 就是 心臟動脈循環障礙, 所以除了健康飲食, 運動是很重要的, 所以老是做待在電腦前的 oTaKu(御宅族) 很可能正是慢性自殺的行為^_^)
不過確定設定過 i18n 是沒問題的, TKY 可以放心再試試看 ^^

今天你運動了沒? ^_^

可以從i18n聊到運動,再回去講i18n,這個轉折也太令人噴飯了吧?

i18n區塊的部分,在4.7下面的測試,總是不成。但在5.0下面則還沒試過;會試看看的。

運動啊?那是什麼啊?一個電視節目還是吃的東西?
等等....我想起來了....又記不太清楚,啊,好像是小時候常做的一件事情...。

TKY

tky

yelban,問你一下。
最近趁著重裝5.1版網站,試了一下localizer,感覺挺讚的。
自動偵測瀏覽器語言果然不行;就先關掉了。不過你說要改的部分,TKY不是很清楚,因為你後面註解說:
[quote]
ps. 這樣要在安裝drupal前修改 ./includes/locale.inc
把 zh-hant 改成 zh-tw, zh-hans 改成 zh-cn
要是已經安裝了就只好直接修改 資料庫表格的值
[/quote]

TKY卡在這兒。因為資料庫已經裝好了,要改資料庫的話,要改哪個資料表呢?locale有好幾個ㄟ。另外,這樣改除了讓瀏覽器能自動偵測之外,有沒有其他副作用啊?會不會影響到日後匯入po檔?
(如果這是一個蠢問題,請原諒TKY)

還有就是,localizer中選單翻譯的部分,TKY試了一下,不曉得為什麼,不會隨著切換語系而變化ㄟ。
localizer翻選單的方式和i18n不一樣;i18n是直接建立兩個選單項目,只是設定語言不同。localizer卻是新增一個選單,但有個翻譯的欄位,可以輸入中英文兩邊的名稱與說明。

不過TKY輸入了一切該填的資料了,切換語系時卻發現選單不動如山,仍保持中文或英文。這個,是設定的問題還是TKY的問題啊?

tky

tky

f1207bill's 的頭像

看來 zh-hant 還是 zh-tw 的選擇也真是......
前者適用性比較廣, zh-開頭的漢字"繁/簡"體, 沒有牽涉地區的問題這樣香港的也能適用
但是後者卻有著 瀏覽器的國際性支援, 真是有一好沒兩好呀!!

不過使用zh-tw比較具有通用性吧

有沒有人想用用看
http://www.google.com/language_tools
不過非通用用語翻得真是令人Orz