translating.wml 11.8 KB
Newer Older
1
#use wml::debian::template title="翻譯 Debian 網頁" BARETITLE=true
2
#use wml::fmt::verbatim
Kanru Chen's avatar
Kanru Chen committed
3
#use wml::debian::translation-check translation="1.50"
4

5
<P>為了讓翻譯人員的工作更加容易,在這些頁面的生成方式和您過去所熟知的之間存在
6
一些差異。實際上這些網頁是通過由 <a
7
href="http://www.engelschall.com/sw/wml/"><tt>wml</tt></a> 標記的源代碼自動生
8
成的。每一門語種都有各自對應的目錄。
9

10 11
<p>如果您計劃為 Debian 網頁開創一個新的語種的翻譯工作,請查閱 <a
href="#completenew">開創一個新語種</a> 一節。
12

13
<h2><a name="singlepages">翻譯單獨的頁面</a></h2>
14

15 16
<p>我們使用 WML 區分一個頁面關鍵的內容和多個頁面共通的元素。意思就是唯一需要編輯
的是 WML 源代碼,而不是 HTML 文件。請 <a href="using_cvs">使用CVS</a> 獲取當前的
17
源代碼。您將需要簽出 (check out) 至少兩個目錄: <tt>webwml/english/</tt> 和
18 19
<tt>webwml/<var>&lt;language&gt;</var>/</tt>.</p> 

20 21
<p>要將一個單獨的頁面從英語翻譯成您所用的語言,原始的 .wml 文件需要被翻譯
並放置在那個語言對應的目錄。文件的相對路徑以及名稱需要和英語目錄中的保持一致,
22
以便鏈接能夠正常工作。</p>
23

24
<h3>翻譯頁頭</h3>
25 26
<p>強烈建議翻譯人員在頁頭的最後一個 <code>#usr</code> 語句之後追加一行,
用於記錄該被翻譯的原始文件的修訂版本號,這樣的話 <a href="uptodate">便於更新</a>。
27
這一行看上去應該像這樣:
28 29
<kbd>#use wml::debian::translation-check translation="<var>x.y</var>"</kbd>

30 31 32
<p>另外某些翻譯小組還會用這一行給每個網頁標記一位官方的翻譯人員。這樣,當您所
維護的這個頁面在英語目錄中相應位置發生更新時,您將會自動收到郵件通知,提醒您
更新這個翻譯工作。為此,只要在剛才 <code>#use</code> 一行的最後簡單的加上您的
33
名字作為維護者使它看起來像這樣:
34 35 36
<kbd>#use wml::debian::translation-check translation="<var>x.y</var>" maintainer="<var>your name</var>"</kbd>
</p>

37
<p>您還需要向機器人說明您的身份,以及自動接收郵件通知的週期。為此,編輯 (或者
38
乾脆讓您的協調人編輯) CVS 中的這個文件
39
webwml/<var>language</var>/international/<var>language</var>/translator.db.pl
40 41
。它的語法是十分簡明的,而且如果在您所用的語言中還不存在該文件的話,你可以使用
法語小組的文件作為模板。所謂的機器人能夠傳遞幾種信息,對於其中的任何一種,
42
您可以選擇接收它們的週期。這些不同種類的信息有:
43 44 45
</p>

<ul>
46
 <li><b>summary</b>: 過期了的文件一覽</li>
47 48 49 50 51 52
 <li><b>log</b>: the "cvs log" between the translated and current versions</li>
 <li><b>diff</b>: "cvs diff"</li>
 <li><b>tdiff</b>: the script will try to find the part of the translated text modified by the English patch</li>
 <li><b>file</b>: add the current version of the file to translate</li>
</ul>

53
<p>然後它們每一項的取值應該是: 0 (從不),1 (每月),2 (每週),3 (每日) 其中的一個。</p>
54

55
<p>例如:
56 57 58 59 60 61 62 63 64 65 66 67 68
</p>

<verbatim>
                'Martin Quinson' => {
                        email       => 'martin.quinson@tuxfamily.org',
                        summary     => 3,
                        logs        => 3,
                        diff        => 3,
                        tdiff       => 0,
                        file        => 0
                },
</verbatim>

69
<p>通過使用 webwml 根目錄中的 <tt>copypage.pl</tt> 腳本可以很容易的產生一個
70
網頁的頁頭信息。這個腳本將複製頁面到合適的位置,在必要時創建目錄以及生成
71 72
makefile,並且自動添加所需的頁頭信息。
您可能會收到警告該頁面已經存在倉庫中,表示該頁面可能曾經翻譯過但過期太久而被移除,
73
或是因為已經有人在您之前提交新的翻譯。</p>
74

75 76 77
<p>當您執行過 <kbd>./copypage.pl <var>file</var>.wml</kbd> 之後,便可以對這個
文件中的原始內容進行翻譯了。文件中的注釋用於標示一些不需要被翻譯的條目,請保留
它們。不要作任何有關格式方面的多餘改動,如果真有需要的話,改動或許應該在
78
原始文件中完成。</p>
79

80
<h3>頁面的編譯和發佈</h3>
81

82 83 84 85
<p>自從我們使用 <a href="content_negotiation">內容協商</a> 以來,HTML 文件的命
名規則就不是 <tt><var>file</var>.html</tt> 而是
<tt><var>file</var>.<var>&lt;lang&gt;</var>.html</tt>,這裡
<var>&lt;lang&gt;</var> 指的是由兩個字符代表的語種,遵循 <a
86
href="https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO 639</a> (例
87
如 <tt>zh</tt> 代表中文)。</p>
88

89 90
<p>您通過執行 <kbd>make <var>file</var>.<var>&lt;lang&gt;</var>.html</kbd>
可以從 WML 編譯得到 HTML。成功的話,使用 <kbd>weblint
91
<var>file</var>.<var>&lt;lang&gt;</var>.html</kbd> 檢查語法是否完全正確。</p>
92

93
<p>網頁將會從 www-master 服務器上的 CVS 中重新編譯得到,大多數零散的錯誤在這個
94
過程中都將被屏蔽。但是,如果您提交了一個有問題的文件到您翻譯工作的頂級目錄中
95
(例如頂級目錄中的 index.wml 文件),那麼不僅編譯過程將被中斷,還將連累整個網站
96
的更新。請密切留意這些文件。</p>
97

98
<p>一旦一個頁面準備好,您就可以將它提交到 CVS。如果您自己有這個權限的話,運行
99
<kbd>cvs commit</kbd>。否則,請把這個頁面發送給
100
<a href="translation_coordinators">有權限寫入軟件倉庫的人</a>。</p>
101

102
<h2><a name="completenew">開創一個新的語種</a></h2>
103

104
<p>如果您希望為 Debian 網頁開創一個新的語種,請發送電子郵件 (請用英語) 給我們 <a
105
href="mailto:webmaster@debian.org">webmaster@debian.org</a>。
106

107
<p>首先,確認您已經適宜的簽出了我們的源碼樹,請參考 <a href="using_cvs">我們
108
介紹 CVS 的頁面</a>。</p>
109

110 111
<p>當您簽出了 webwml/ 和 webwml/english/ 目錄(至少)之後,一切都從為您的語種
創建一個目錄開始,然後進入 english/ 或其他目錄。為新語種所創建的目錄的名稱,
112
必須完全使用小寫英文(例如用 "chinese" 而不是 "中文")。</p>
113

114 115
<p>從 english/ 目錄複製 <tt>Make.lang</tt> 和 <tt>.wmlrc</tt> 這兩個文件到
新語種的目錄。這些文件對於從 WML 文件中編譯出您的翻譯工作發揮著重要作用。
116
當您複製它們到新語種目錄之後,您只需要修改這些東西:</p>
117 118

<ol>
119
  <li><tt>Make.lang</tt> 文件中的 LANGUAGE 變量必須作修改。
120

121 122
  <li><tt>.wmlrc</tt> 文件中的 CUR_LANG、CUR_ISO_LANG 和 CHARSET
  變量必須作修改。如果您還需要進行排序的話,請添加 CUR_LOCALE。
123

124 125
  <li>有些語種需要對字符進行額外處理。通過傳遞 --prolog 和 --epilog 參數給 wml
      的方式可以滿足這種要求。請在 <tt>Make.lang</tt> 文件中使用 WMLPROLOG 和
126
      WMLEPILOG 變量實現此功能。
127

128 129 130
  <li>頂層 <tt>webwml/Makefile</tt> 文件中的 LANGUAGES 變量必須作修改,
      只有這樣您的語種才能和其它語種一同在 www.debian.org 上得到編譯。
      我們更願意看到的是您把這部分工作留給網站管理員,
131
      因為您可能沒意識到由於您的新語種可能存在的錯誤將導致我們其它語種的網頁無法得到有效處理。
132 133
</ol>

134
<p>當以上工作都完成後,在剛才的目錄中新建一個名為 "Makefile" 的文件,寫入下面的這一行:
135 136 137 138 139

<pre>
<protect>include $(subst webwml/<var>yourlanguagedir</var>,webwml/english,$(CURDIR))/Makefile</protect>
</pre>

140
<p>(請用您的語種目錄的名字替換 <var>yourlanguagedir</var>)</p>
141

142
<p>現在請在您的語種目錄下創建一個名為 "po" 的子目錄,並且把同樣的 Makefile 複製
143
到該目錄 (<kbd>cp ../Makefile .</kbd>)。</p>
144

145
<p>在 po/ 目錄中,運行 <kbd>make init-po</kbd> 產生初始的一系列 *.po 文件。</p>
146

147 148
<p>現在您已經搭建好了框架,通過使用公用的 WML 模板您可以開始添加您的翻譯了。
您最先翻譯的模板應該是那些在所有網頁中都出現的內容,比如頁頭關鍵字,導航條上的
149
條目,還有頁腳。</p>
150 151 152

# The page on <a href="using_wml">using WML</a> has more information on this.

153 154
<p>開始在 <code>po/templates.<var>xy</var>.po</code> 文件 (這裡 <var>xy</var> 
指的是由兩個字符代表的您的語種) 中進行翻譯吧。每一個 <code>msgid
155
"<var>something</var>"</code> 都原配一個 <code>msgstr ""</code>,您應該在
156
<code>msgstr</code> 後面的雙引號內填入翻譯條目。</p>
157

158 159 160
<p>您不必翻譯所有 .po 文件中的每個條目,除了那些你當前翻譯的頁面確實需要的。
判斷一個條目是否需要被翻譯,請留意 .po 文件中在每個 <code>msgid</code> 條目
上方的注釋。如果該注釋中提及了 <tt>english/template/debian</tt> 文件,那麼您多半
161
需要翻譯它。否則,您可以延緩翻譯直到您實際翻譯的頁面需要該條目為止。</p>
Kanru Chen's avatar
Kanru Chen committed
162

163
<p>這些在 po/ 目錄底下的檔案的用意是讓翻譯人員方便工作,讓他們幾乎不需要自己編輯 <tt>english/template/debian</tt> 目錄底下的東西。
164
如果你發現任何模板目錄內的錯誤,請確定該問題的修正是一般化的 (您也可以請別人幫你作這件事),而不是把真正的翻譯提交到模板中,這會通常帶來更嚴重的問題。</p>
165

166
<p>如果您不能確定您的某些操作是否合適,在簽入代碼之前請先在 debian-www 郵件列表上
167
進行詢問。</p>
168

169
<p>備註: 如果您發現您需要作任何其它改動,請發送電子郵件至 debian-www 說明您要
170
改動的內容以及原因,這個問題便會得到解決。
171

172 173 174
<p>當模板框架完成之後,您就可以開始前端頁面和其它 *.wml 文件的翻譯工作了。那些
應當被優先翻譯的文件列表,請看 <a href="translation_hints">指點頁面</a>。*.wml
頁面的翻譯事項就像 <a href="#singlepages">本頁面開頭</a> 描述過的那樣。
175

176
<h3>重建過期的翻譯</h3>
Kanru Chen's avatar
Kanru Chen committed
177

178 179
<p>如前面<a href="uptodate">保持翻譯的時效性</a>所說,過期的翻譯可能在很長一段時間
沒有更新之後,自動被系統回收。</p>
Kanru Chen's avatar
Kanru Chen committed
180

181 182 183
<p>如果您使用 <tt>copypage.pl</tt> 腳本來開始某個曾經被移除過的頁面,它會提示您
使用舊有的資料來開始。您可以檢查為何該頁會被移除,如透過對此檔案下 <tt>cvs log</tt>
命令或是使用網頁介面,曾被刪除的檔案存放在 "Attic" 子目錄下。
Kanru Chen's avatar
Kanru Chen committed
184 185
</p>

186 187
<p>為了取回這個過期的翻譯,先使用 <tt>cvs status</tt>
(或是 <tt>cvs log</tt>) 來取得被刪除檔案的修訂號碼,然後進行<q>反方向的合併</q>。</p>
Kanru Chen's avatar
Kanru Chen committed
188

189 190
<p>例如,如果被刪除的檔案名為 "deleted.wml",而被刪除時的修訂號碼是 1.7,則被刪除前的
修訂號碼則是 1.6 (減一)。您可以用以下命令來取回:
Kanru Chen's avatar
Kanru Chen committed
191 192 193 194 195

<verbatim>
   cvs update -j 1.7 -j 1.6 deleted.wml
</verbatim>

196
<p>在這之後,您就必須先更新這個頁面才能提交了。否則它還是會被系統移除的。</p>
Kanru Chen's avatar
Kanru Chen committed
197 198


199
<h3>剩下來的故事</h3>
200

201
<p>上述內容或許已經足夠讓您躍躍欲試了。
202
之後,您可能想參考下列這些提供了更多詳盡說明和附加信息的文檔。</p>
203 204

<ul>
205 206 207 208
<li>若干 <a href="examples">示例</a> 向您清楚的展示怎樣開始。
<li>若干常見問答和指點迷津可以在 <a href="translation_hints">指點頁面</a> 中找到。
<li>我們有一套機制幫助 <a href="uptodate">保持翻譯的時效性</a>。
<li>您與其它語種在已翻譯文件總數方面的對比,請看 <a href="stats/">統計報表</a>。
209 210
</ul>

211
<P>我們衷心的希望您認識到我們所做的努力使得翻譯頁面的工作變得更加容易。
212
就像已經說過的,如果您有任何問題,您可以在
213
<a href="mailto:debian-www@lists.debian.org">debian-www</a> 郵件列表上詢問我們。