Skip navigation.

MyOpera 中文区

[ advanced search ]

繁简转换 Userjs 之同文堂修改版

Forums » 中文论坛 » 主版

Lost password?

Friday, 30. June 2006, 09:46:19

繁简转换 Userjs 之同文堂修改版

这是用来将网页文字在简体与繁体之间相互转换的脚本。这里是原始出处,这里是 Mark 的介绍,包含对应的按钮。

使用了一段时间,发现这位台湾朋友的繁简对照表不是很好,经常出来 深唿吸 註释 这样的东西,虽然勉强可读,但是不大顺畅。

费了些力气从 新同文堂 0.2.9.5b 中提取出繁简对照表优化了一下这个脚本,用起来爽多了,需要的朋友可以从附件里下载。


说明:同文堂中繁转简和简转繁使用不同的对照表,台湾朋友的脚本使用同一个表相互转换。我使用同文堂的工作方式修改了这个脚本,对双向转换分别优化,相信可以使两岸的朋友都获得更好的效果。

transform_V2.js

update:
使用 UTF-8 另存了一下,避免在论坛中出乱码。

Friday, 30. June 2006, 10:08:27

yumumao

avatar

Posts: 518

支持一下,立刻下载来试用一下。

Friday, 30. June 2006, 10:17:14

yumumao

avatar

Posts: 518

如果能有词转换就好了……
硬碟,作業系統……

Friday, 30. June 2006, 11:59:51

我也希望有这个功能,不过偶写不出几句像样的代码,期待高人了。

Friday, 30. June 2006, 13:01:06

我之前已經用了,現在換這個新的,需要做什麼設定嗎?還是它倆可以並存?
toolbar那個按鈕"繁"還可以用嗎?

Friday, 30. June 2006, 13:15:50

yumumao

avatar

Posts: 518

Originally posted by chenbatu91:

我之前已经用了,现在换这个新的,需要做什么设定吗?还是它俩可以并存?toolbar那个按钮"繁"还可以用吗?


按钮还可以用,先前的那个可以删掉了。

Friday, 30. June 2006, 13:23:32

说实话我对同文堂这种双向不同对照表的方法不是十分理解,但愿有我希望的那么好。

Friday, 30. June 2006, 21:36:38

idleNewbie

avatar

Posts: 83

TW

String.prototype.s2t = function() {//Simplified to Traditional
var s2t_s = "\u00B7\u2015\u2016...下略2K+字";//Chinese Simplified
var s2t_t = "\u2027\u2500\u2225...下略2K+字";//Chinese Traditional
var n = '', idx;
for (var i=0; i < this.length; i++) {
idx = s2t_s.indexOf(this.charAt(i));
n += idx > -1 ? s2t_t.charAt(idx) : this.charAt(i);
}
return n;
}

String.prototype.t2s = function() {//Traditional to Simplified
var t2s_t = "\u00AF\u2025\u2027...下略2K+字";//Chinese Traditional
var t2s_s = "\u02C9\u00A8\u00B7...下略2K+字";//Chinese Simplified
var n = '', idx;
for (var i=0; i < this.length; i++) {
idx = t2s_t.indexOf(this.charAt(i));
n += idx > -1 ? t2s_s.charAt(idx) : this.charAt(i);
}
return n;
}
我改成這樣.
1.String.indexOf()的index保存起來, 這樣每個字可以少一次查表動作.
2.直接使用\uxxxx格式定義字元, 對照表建立時可以少一次unescape.
3.因為兩支轉換所用的表各不相同, 我將對照表拉進函式裡, 不必每頁都初始化對照表, 有需要轉換時再做初始化. 因為O裡每個頁面都會重新編譯userJS, 整體變數似乎沒啥意義.
理論上應該可以省一些時間, 不過JS的效率.... 似乎也沒啥必要改...
照一般的邏輯的話, 依出現頻率重新調整對照表字元順序"或許"還能再省一些...

Saturday, 1. July 2006, 03:57:25

能否上传改好的文件?我这里测试总是出错。

Saturday, 1. July 2006, 11:49:32

或许理论上可以省一点吧,实际的测试是差不多。

http://dzh.mop.com/topic/readSub_6545392_-2_1.html

我这段时间一直追着看的连载,标题党不过内容还可以。点击只看楼主后得到的页面超长,用两个脚本转换都是第一次 30 秒,之后每次 20 秒,差别很小。

Saturday, 22. July 2006, 06:24:49

kinnik

avatar

Posts: 227

有沒有高手可以弄一個能自動轉換繁體中文就更好?

Saturday, 22. July 2006, 08:09:23

mark_poleon

Darkstar

avatar

Posts: 5108

China

我写的介绍在这里 http://my.opera.com/mark_poleon/blog/show.dml/285089
链接有变

Originally posted by kinnik:

有沒有高手可以弄一個能自動轉換繁體中文就更好?


应该可以自动转换,不过前面的判断不知道怎么做

Saturday, 22. July 2006, 19:25:35

kinnik

avatar

Posts: 227

Originally posted by mark_poleon:

我写的介绍在这里 http://my.opera.com/mark_poleon/blog/show.dml/285089
链接有变

Originally posted by kinnik:

有沒有高手可以弄一個能自動轉換繁體中文就更好?


应该可以自动转换,不过前面的判断不知道怎么做


我也是看了你的介紹才發現這userjs,實在非常方便繁體用家
我把javascript檔打開來看,也覺得稍作修改應該可以自動轉換,只可惜我對javascript語言一竅不通
如有高手可以代勞,在此多謝

Thursday, 27. July 2006, 06:52:46

kinnik

avatar

Posts: 227

Originally posted by kinnik:

我也是看了你的介紹才發現這userjs,實在非常方便繁體用家我把javascript檔打開來看,也覺得稍作修改應該可以自動轉換,只可惜我對javascript語言一竅不通如有高手可以代勞,在此多謝




再請求一遍

Sunday, 6. August 2006, 01:10:30 (edited)

kinnik

avatar

Posts: 227

另一版的朋友Stoen替我做了這個

Add the following to the start of the script
// ==UserScript==
document.addEventListener('DOMContentLoaded',function() {
var body;
if( body = document.body ) {

and this to the end
body.innerHTML = body.innerHTML.s2t();
}},false);


經測試後,發現google.com的搜尋會產生問題
http://www.google.com/search?hl=en&q=1&btnG=Google+Search
在上面頁面再搜尋時,會自動跳至google首頁
可disable google.com的javascript就能解決

Saturday, 5. August 2006, 18:27:03

idleNewbie

avatar

Posts: 83

TW

串onload是可以啦, 醬的話直接簡繁分拆成兩部分再直接轉換即可, 而不要用prototype的方式(負擔較重). 再搭配上@include/@exclue來使用(去userjs.org抓兩支回來看就大概知道怎加)就不用關js.
自動轉其實很浪費時間, 有需要時再轉即可... JS自動轉...累...Lag...
或者以button來切換加script為某網域加上某個cookie(類似那支highlight那樣把關鍵字塞進去), 然後串onload之前先判讀cookie的設定值來決定是否轉換.

Sunday, 6. August 2006, 01:05:12 (edited)

kinnik

avatar

Posts: 227

Originally posted by idle.newbie:

串onload是可以啦, 醬的話直接簡繁分拆成兩部分再直接轉換即可, 而不要用prototype的方式(負擔較重). 再搭配上@include/@exclue來使用(去userjs.org抓兩支回來看就大概知道怎加)就不用關js.
自動轉其實很浪費時間, 有需要時再轉即可... JS自動轉...累...Lag...
或者以button來切換加script為某網域加上某個cookie(類似那支highlight那樣把關鍵字塞進去), 然後串onload之前先判讀cookie的設定值來決定是否轉換.



國外用家替我做了這個自動簡體轉繁體

我把繁轉簡的碼去除

http://my.opera.com/kinnik/homes/files/transform_s2t_auto.js

解決了google的問題
執行效率也有相當的提升


根據stoen的版本弄了個簡轉繁的,方便中國大陸的用家
http://my.opera.com/kinnik/homes/files/transform_t2s_auto.js

Sunday, 6. August 2006, 17:13:53

superdodo

avatar

Posts: 3

謝謝kinnik的js,對opera的用戶的幫助實在很大
有了這個對一般用戶來說,opera跟firefox已經沒什麼區別了 :D

請問一下kinnik,這個js可不可以在擴充一下,讓轉換後的輸出內容
可以強制以微軟正黑體或雅黑體顯示(或其他自己習慣的字型)?.?
謝謝你

Sunday, 6. August 2006, 23:15:35

idleNewbie

avatar

Posts: 83

TW

Beata的寫法比較好, 僅用textnode來處理, 醬是拆分成小字串做strcat時比原先直接拿innerHTML來用有效率得多.
唯一的缺憾是attribute裡的中文字並沒有轉換到, 像是title(tooltip)之類的, 進起點書目指到任一VIP章節就可發現.
當然Beata的寫法比較好, tooltip之類算是輔助可以忽略, 也避免掉url裡含中文字時的錯誤(像是這邊的blog), 即便是on demand的情景下也建議拆textnode轉換.

Monday, 7. August 2006, 01:06:54

kinnik

avatar

Posts: 227

Originally posted by superdodo:

謝謝kinnik的js,對opera的用戶的幫助實在很大
有了這個對一般用戶來說,opera跟firefox已經沒什麼區別了 :D

請問一下kinnik,這個js可不可以在擴充一下,讓轉換後的輸出內容
可以強制以微軟正黑體或雅黑體顯示(或其他自己習慣的字型)?.?
謝謝你



字型可在 工具>功能設定>網頁>一般字型內設定

若果只想針對繁體文字設置 ,工具>功能設定>進階>字型>多國語言設定>中文(繁體)>一般語言 內自行選擇

Monday, 7. August 2006, 09:26:54

superdodo

avatar

Posts: 3

謝謝kinnik的回答,您說的那些選項我都已經調整過了,
在大部分網頁裡也都能顯示我自己所設定的字型,
不過有些網頁不知到是不是他本身就有設定字型的關係,
就算我把樣式中的作者模式和使用者模式中的網頁字型與文字取消,
還是無法使用自己所設定字型?.?
像是 http://www.cmfu.com/readchapter.asp?bu_id=1806574&bl_id=67583
始終無法出現我設定的正黑體,在這裡則沒有問題
請問能幫幫我嗎?
謝謝你

Tuesday, 8. August 2006, 03:42:36

kinnik

avatar

Posts: 227

Originally posted by superdodo:

謝謝kinnik的回答,您說的那些選項我都已經調整過了,
在大部分網頁裡也都能顯示我自己所設定的字型,
不過有些網頁不知到是不是他本身就有設定字型的關係,
就算我把樣式中的作者模式和使用者模式中的網頁字型與文字取消,
還是無法使用自己所設定字型?.?
像是 http://www.cmfu.com/readchapter.asp?bu_id=1806574&bl_id=67583
始終無法出現我設定的正黑體,在這裡則沒有問題
請問能幫幫我嗎?
謝謝你



費了一番功夫,下載了正黑體一試
你可先在工具>功能設定>進階>字型>多國語言設定>中文(簡體)>一般語言
選正黑體
以後每次瀏覽相關網頁時,再在檢視>編碼,選簡體中文即可
1ScreenHunter_001.jpg

Tuesday, 8. August 2006, 11:45:04

superdodo

avatar

Posts: 3

謝謝kinnik,問題解決了,謝謝您的幫忙:cheers:

Forums » 中文论坛 » 主版

Moderated by: Langeline musiccow Thruth mark_poleon