google code-beautifer

星期日, 1月 21, 2007

程式介面翻譯reusability的問題跟解決聯合方案

* 背景:
某人今天在Mandriva Linux 上的Gnome桌面用了某英文介面程式,覺的不錯想把他中文化,可是他對各個開發社群並不很瞭解。

態度一:管他的,自己翻譯PO檔自己爽就好。(結果一堆使用者作重複的事)
態度二:管他的,先作再說。找個地方發表PO檔就算功德圓滿(結果進不了上游,下一版還是英文)
態度三:我用Ubuntu,上Rosetta把PO檔發表回溯上游啊 (結果跟上游衝突,見http://www.ubuntu.org.tw/modules/newbb/viewtopic.php?viewmode=flat&topic_id=403&forum=8)
態度四: XXX,我來找有心的社群朋友們一起來解決這個問題(這篇要討論的)

直接去Rosetta 改不是Ubuntu only但上游已經有人作的軟體,會出一些問題,
Rosetta https://launchpad.net/rosetta是專為 Ubuntu 服務
不提供像是 CVS 或 SVN 等傳統的管理機制。建議直接至上游 upstream 聯繫。

問題1:這個軟體的上游到底在哪裡?
Adacity -> 獨立 (雖然我是在 Mandriva/Gnome下跑)
xmms -> 獨立(可是Mandriva 上翻譯有列xmms 耶!,那Ubuntu Linux或其他XYZ Linux的使用者又該上游到哪去?)
denemo -> 獨立 (用了 Gnome project 下的gtk,但不是 Gnome project 下的)
Gmorgan -> 獨立 (有G 字頭的但不是Gnome project 下的)
Amarok/rosegarden ->KDE (雖然我是在 Mandriva/Gnome下跑)
Krusader -> 是KDE 嗎?(不見得,沒有G 字頭的也可能是Gnome project 下的)
其他軟體-> ?
比如說 Rosegarden
http://www.rosegardenmusic.com/resources/documents/i18n.shtml
是屬於誰呢?


問題2: 我在XYZ Linux 上看到 LMN 軟體的訊息"ABC"沒有翻譯,到哪找其他UVW Linux 上的OPQ 軟體對"ABC"這個詞的翻譯?

* 解決方案

我要作的跟鄭原真先生的"KDE PO 資料庫"(註一)有一點類似,不過我不想
被綁在KDE或Web上,我希望能有更大的彈性。真正的用意不是在只搜尋一個計劃
的PO翻譯,而是去看多個計劃的PO翻譯情況。所以打算先建個好的local PO/MO
查詢環境作基礎,往後再慢慢往上加其他的東西(作firefox search plugin,...
之類的加強。)以及合併其他格式翻譯對照。
作的彈性一點,可以先下載PO檔資料,在離線的時候也可以用local databae 來
查詢,或是查詢local機器上的商用翻譯軟體。

最簡單的應用例子:要知道某軟體的上游在哪,就去database 裡搜尋哪個計劃的
網站索引是有存這個軟體PO檔...一下就可以知道 urpmi的上游在 Mandriva。
當然還可以看哪個人對哪個詞是怎樣翻譯的。比如同樣是正體中文,我對
process 不會翻"進程"而會翻"程序";要認領翻譯某個程式想知道有沒有人已經
開始動手了,....都可以用這個來解決查詢

然而撇開對個人翻譯查詢單詞的效率提升之外,這個計劃的成功還是得基於在社群互助的善意上。假如所有人都持上面的態度一或態度二,那還是成不了大氣候。
套用我對美國社群的說法: "Help me so that I can help you!"
除了請能寫程式的朋友幫忙寫,也需要不懂程式但參與各個不同翻譯的朋友有機會看到其他的翻譯時,能幫忙宣揚這個機制,務使所有的翻譯成果都能儘量的累積回收。

我有把雛議送給幾個zh-TW 翻譯社群領袖,目前mozTW領頭的趙柏強,BOINC
的Jose Sun,tug的Pake ,openoffice的黃沛霖,還有一些其
他獨立翻譯人,已經表示支持我這個聯合翻譯參考資料庫的想法。

我對PO 的詳細格式不熟,得先參考看看別人作的查詢環境來寫我的Perl code。
但我想作系統分析,跟公眾關係還可以。各個計劃(如openoffice)的翻譯資料格式長的不太一樣,希望不同社群朋友能來幫忙一起作。

* 各計劃翻譯索引

** GNU正體中文翻譯
GNU正體中文翻譯官方索引
http://www.iro.umontreal.ca/translation/registry.cgi?team=zh_TW
有兩個表格

其中第二個表格欄位
Domain 程式名(連結指到各種語言的翻譯資料)
Assigned translator 翻譯人英文名(連結指到翻譯人的Email/網站)
Version (最後)翻譯版本
Translated 中文翻譯項目數量/該版本PO項目總數
Current Version 最新版本(假如翻譯版本比較舊)
Translated 中文翻譯項目數/最新版本PO項目總數


從Domain連結指到各種語言的翻譯資料的檔案中
其中第二個表格欄位,
第一欄是語言,比較可能為台灣翻譯者參考的資料有
zh_HK
zh_CN
zh_TW
ja
第三欄是指到實際的翻譯PO檔的不同版本(連結指到其URL)

我想在server 用at 或 cron table 每半天抓一次最新的PO檔
把msgid,跟對應的msgstr 讀到database 去
我們就可以用database query 來看某人/某程式/某版本/的某message 是如何翻譯
但是msgid跟msgstr裡會有夾雜引數用法,比如說
msgid "This program is running as process number $pid."
msgstr "本程式正在執行中,進程編號為 $pid。"
$pid 要考慮分開處理。
基本上用笨方法字串全文檢索,就可以搜尋"process",而得到一堆
msgid 包含 "process"跟他們對應的msgstr
(我還沒想到要怎樣把對應的詞從字串中找出來,註二),不過先這樣應該夠了,
以後再去fine tune。



以下我還沒時間分析,待續
** Gnome
http://l10n-status.gnome.org/HEAD/zh_TW/index.html
http://l10n-status.gnome.org/gnome-2.18/zh_TW/index.html
http://linuxhall.org/~deaddog/evolution-po/

** KDE
http://i18n.kde.org/stats/gui/HEAD/zh_TW/index.php
http://i18n.kde.org/stats/gui/KDE_3_5_BRANCH/zh_TW/index.php
http://i18n.kde.org/stats/gui/KOFFICE_1_3_BRANCH/zh_TW/index.php

** Openoffice

用到特殊格式,解讀message 檔需要特殊軟體(SunTrans),所以只能由OOo member 作message 檔格式轉換。

jose > 如果可以的話,Openoffice 或許可以用rosetta這個模式修改之後一併送給 Sun

** Mozilla

有關於 Mozilla 相關程式的部份,Mozilla 未來也有打算改採 po 格式的locale,這樣就會省事些。現在還沒。

字詞資料庫的部份,moztw 能作的就是分享給大家moztw的翻譯表(定點,跟經常更新)
一但有更動格式或地點,要跟我們說一聲

定期從 source 抓資料的話,可以直接連到 CVS tree 抓,但是格式需要轉換一下。
database server 端這邊需要知道 CVS tree checkout 的詳細程序跟檔案URL,
格式可以在database server 端這邊轉換,但需要moztw提供格式詳細資料
moztw 的 Jose sun 已提供了CVS 的資料。

** Mandriva
http://www.mandrakelinux.com/l10n/zh_TW.php3

** Ubuntu

** Fedora

** Suse

** Debian

** Gentoo

** zaurus(linux)

** 其他計劃

除了提到的那些大部頭軟體/distro 還有很多獨立軟體。這些是也要慢慢建立認
領翻譯的索引。假如哪為朋友有為哪個獨立開放軟體作中文化的工作而願意跟我們分
享,請跟我們聯絡

*** BOINC
也是 PO 格式,locale owner: Jose Sun



* 資源

** server 可以放在 http://l10n.fsftw.org/ 上面有database
** 開發的code 我可以建一個google code project,要參與而需要gmail 邀請函的可以
跟我說一聲

註一:
鄭原真先生在
[Zh-l10n] KDE PO 資料庫 update !!
http://www.linux.org.tw/pipermail/zh-l10n/2004-December/003500.html
上說到
C / Script / php code 在
http://rt.openfoundry.org/Foundry/Project/index.html?Queue=65

其中
http://words.2share.net/podb/已經離線了
不過
http://words.2share.net/index.php/%E9%A6%96%E9%A0%81
還在

原先他這個東西主要是綁 mysql. kde 在他的 sql schema 只是一個欄位,
web 對他來講, 也不過是因為有一個 php 可以快速的 query mysql / provide
service.

原始碼在
http://rt.openfoundry.org/Foundry/Project/index.html?Queue=65
http://svn.openfoundry.org/zhi18nmisc/
在trunk/podb/下
trunk/stcc/下是簡正中文互換的程式

註二:
也許可以把所有包含"process"msgid對應的msgstr去找最大共同中文字串
(不過萬一同一個人有不同譯法還是會有誤,這裡要如何去猜才好,我可能會寫
一篇小論文來討論...)

註三

Bob Chao建議:

>提供「參考」比意圖「統一」來得好些,一則同樣的字詞用在不同軟體可能用詞
> 也不同,二則感覺上除了專有名詞不應分歧擾亂視聽之外、一些日常用語本來就
> 可以有不同面目(例如「郵件」與「信件」可能都是不錯的詞)。
>
> 如果除了譯詞的查詢之外,也同時能提供相關的討論串,或許也不錯。每個人選
> 用某詞應有理由,大家也常花了很多時間討論,除了「結果」(譯詞)之外若此
> 計畫也能兼以集中過去各項討論,對查詢者來說應該會方便許多、決定使用某詞
> 時也更能了解緣由而不僅是「依個人喜好/習慣」。

你說的"針對不同上下文,詞可以有不同的翻譯"這我完全同意,提供某詞在某語
境,不同的翻譯考量的相關的討論也是很對,
但是這已經不容易用程式自動收集,而需要大量人工。但我們可以做到的是,按我
的計劃去跑database,然後給個別計劃(如mozTW)
一份翻譯對照表,你們再用這份翻譯對照表去自己網站搜尋相關討論。用人工作摘
要。要跨計劃作也是有機會,不過不是三兩下就作的出來的。這先列為中期計劃,
先把基本詞查詢對照表做出來再說,不過以其他Linux 上遵照 PO/MO 模式的軟體
翻譯格式有列翻譯者,你可以搜尋不同翻譯者對某詞的不同翻法(假定他們都維持
同一風格)

jose sun 建議:

> 目前看起來僅在「參考」用,而非像 Rosetta 一樣能修改翻譯,
> > 雖然 Rosetta 有關起門來自己搞的問題,但是他的集中管理想法很不錯,或許
> > 可以和各個 zh-TW
> > 的翻譯者協調好後,可以線上修改,這樣想翻譯的人就不需要從上游翻譯,而
> > translator
> > 則可以對每個詞審核!

Rosetta 走的方向是個理想,但有賴於跨社群的合作,很多人甚至不知道上游的問題。真要作的話要有完善的 locking 機制,免的給上游翻譯造成不一致。這先列為中期計劃,

註四:
介紹要如何使用 KBabel 來做 KDE 應用程式界面與文件的翻譯工具。
http://kde.linux.org.tw/index.php?pagename=KBabel
* 先將 template 與 po 檔 checkout 下來。
$ mkdir -p kde/translate
$ cd kde/translate
$ svn co "svn://anonsvn.kde.org/home/kde/branches/stable/l10n/templates"
$ svn co "svn://anonsvn.kde.org/home/kde/branches/stable/l10n/zh_TW"