Mark's Place

A place for Mark's murmuring, blah, blah, blah, ...

Mark's Place
Watch Timeline

在 UTF8 編碼下的網頁簡繁互轉

Mark Wu 發表於 2006/10/27 02:07 · 靜態連結網址

最近在考慮把 lifetype.org.cn 透過 mod_rewrite 的方式,把網址轉換到 lifetype.org.tw,這樣可以讓更多的大陸朋友能夠來認識 LifeType。但是,首先要解決的問題是,如何做到線上簡繁互換,讓大陸網友能夠使用他們熟悉的簡體環境。

目前有幾個解決的方式:

  • 透過瀏覽器的外掛程式幫忙,做到及時的簡繁互換。例如,IE 下的 Alibabar 與 Firefox 下的新同文堂
  • 透過 Server Side Script 如 PHP,寫一支簡繁轉換的 Gateway,例如在 Jerry 網頁所說的方式。
  • 透過 Client Side Script 如 JavaScript 來作線上轉換,並且透過 Cookie 紀錄是否需要自動轉換成繁體或簡體。如 Joomla AutoIt! 這裡所說的方式。

第一個方式需要使用者自行安裝這些外掛程式,其實不是很方便。第二個方式要改的還不少,而且沒辦法直接使用到 blog, wiki 與 forum 上面。所以決定採用第三種方式,因為唯一的修改就是改模版。

原本很高興以為下載之後就能用,結果在繁體的環境下好像有 Bug。所以把整個程式Debug 並且 Refactoring 了一下,應該可以用在繁體了。有興趣的人請依照下列方式安裝:

<a id="translateLink">簡體</a>

  • 然後,網頁的 </body> 標籤前面加上

<script type="text/javascript" src="http://your-site/tw_cn.js"></script>
<script type="text/javascript">
var defaultEncoding = 1;
var translateDelay = 0;
var cookieDomain = "http://your-site";
var msgToTraditionalChinese = "繁體";
var msgToSimplifiedChinese = "简体";
var translateButtonId = "translateLink";
translateInitilization();
</Script>

共有五個參數可以設定:

  • defaultEncoding:網頁預設語系:1 是繁體中文,2是簡體中文。預設值為 1。
  • translateDelay:延遲翻譯的時間:如果你不是放在 </body> 之前,請設定延遲翻譯時間。如 100 代表 100ms。預設值為 0。
  • cookieDomain:Cookie 網址。這個請務必要設定,沒有預設值。
  • msgToTraditionalChinese:切換至繁體中文的訊息。預設值為 "繁體"。
  • msgToSimplifiedChinese:切換至簡體中文的訊息。預設值為 "簡體"。
  • translateButtonId:簡繁互換連結的 Id。預設值為 "translateLink"。

這樣應該就可以了。不過,要是使用者的瀏覽器不支援 Javascript,那就沒輒了。

PS. 這支程式看起來流傳已久,所以不知道原始作者的釋出版權為何。所以我也沒有加上版權標示。

真實引用網址:

http://blog.markplace.net/trackback.php?id=150

迴響 (34) · 引用 (2) 文章分類: 生活形態?LifeType?

迴響 ↓

  • 回覆: 在 UTF8 編碼下的網頁簡繁互轉
    Autoit  發表於 27/10/2006, 05:20

    thanks for your fixed!

    最近打算使用LifeType, 有问题还请多多关照丫!

  • 回覆: 在 UTF8 編碼下的網頁簡繁互轉
    龍~HSBCHK  發表於 27/10/2006, 08:20

    Mark老大你這個js除了能用在LT裡,
    還能在不修改內部的前提下用於其他的網站上嗎?

  • 這是 generic solution
    Mark  發表於 27/10/2006, 08:40

    Hi 龍:

    這是 generic solution,所以可以用在任何網頁。但是,唯一的前提是,使用者的瀏覽器要支援 javascript。 :)

    Mark

  • 還有一個bug
    parrot5  發表於 03/11/2006, 01:38

    謝謝你對這個原始碼的修改,尤其是cookies呢部份,真係好好用,我安裝左。 我發現左一個bug,就係我係用UTF繁體既discuz論壇,我set呢個javascript做默認繁體,但一開出黎果時d簡體字都係冇轉到… (但如果默認為簡體,則一開出黎就會轉左d繁體字做簡體,即係work)… 請問如何修改? 演示:http://test.joey-fans.net (頁內「測試」兩個係簡體字,但唔會一load頁就轉做繁體)。 謝謝。

  • 預設是不轉換的!
    Mark  發表於 03/11/2006, 03:20

    mmm ... 目前的預設是,只要 Page Encoding 與 Target Encoding 是一樣的,我就不轉換。

    因為這樣才能減少一些錯字發生。

    Mark

  • 明白了
    parrot5  發表於 03/11/2006, 04:41

    明白了… 謝謝。這個插件真是超級好用!

  • 太好用了!!
    山丘  發表於 06/11/2006, 05:10

    Hi Mark
    好棒的Solution..
    我的網站也升級了. 感謝!

  • 你沒嫌棄啦!
    Mark  發表於 06/11/2006, 06:46

    Hi Kent:

    照顧廣大的簡體用戶,是台灣網路創業家的下一階段的目標啊!

    Mark

  • 謝謝,我也升級了!
    nchild  發表於 06/11/2006, 14:27

    第三種方式對於一般使用者的確是方便。

    不過第一種方式,像是新同文堂plug-in能夠編輯辭彙轉換的部份,對於繁簡互通還是有好處的。

  • 回覆: 在 UTF8 編碼下的網頁簡繁互轉
    mickey9801  發表於 23/11/2006, 11:44

    您好!

    昨天試了把這個javascript放在Blog上,卻發現如果頁面上有Blog Pet的話Firefox就會彈出too much recursion的警告,而轉換就停在那裡。細仔測試過後才發現跟Flash有關,不知道可以怎麼修改呢?

  • 支持
    阿飘  發表於 27/11/2006, 13:41

    支持啊
    看繁体很别扭啊

  • 回覆: 在 UTF8 編碼下的網頁簡繁互轉
    Steven  發表於 05/03/2007, 05:21

    Hi Mark:

    使用它後,我這網站現在可以照顧廣大的簡體用戶。

  • 我的榮幸
    Mark  發表於 06/03/2007, 14:44

    很高興你能用的上。

    Mark

  • 詞彙問題
    永麒  發表於 10/05/2007, 03:34

    外匯的"匯"字
    詞彙的"彙"字

    "匯"和"彙"的簡體字都是"汇"

    結果"外汇"就轉成"外彙"了...
    簡體字的"于"字, 也不能成功轉成"於"字...

    請問如何能手動修改字庫?
    謝謝~

    Wikipedia:简繁一多对应校验表/汇→匯彙
    http://zh.wikipedia.org/wiki/Wikipedia:%E7%AE%80%E7%B9%81%E4%B8%80%E5%A4%9A%E5%AF%B9%E5%BA%94%E6%A0%A1%E9%AA%8C%E8%A1%A8/%E6%B1%87%E2%86%92%E5%8C%AF%E5%BD%99

  • markwu

    這個無解
    markwu  發表於 10/05/2007, 07:21

    可能無解!因為目前的作法是簡體 繁體一對一的轉換,而你的問題是在詞的轉換上。如果真的要解決,要改寫程式與詞庫。


  •  發表於 10/05/2007, 09:35

    發表发表测试

  • 刷新页面又变回简体了
    bgzh  發表於 04/08/2007, 03:17

    刷新页面又变回简体了,,我的页面原先是简体来的,想转换为繁体

  • 我的网站怎转不过来。。
    codi  發表於 04/08/2007, 18:39

    不知道是不是那里做错。。
    没有效。。

    http://www.codi.net.cn

  • 請問可以預設是轉換成ie 的iso呢?
    水中人  發表於 24/08/2007, 17:35

    請問可以預設是轉換成ie 的iso呢?

  • 沒辦法
    Mark  發表於 25/08/2007, 02:12

    這要改程式 .. mmm .. 至少要改程式裡面的 mapping table。