W3C home > Mailing lists > Public > public-html-ig-zh@w3.org > November 2011

Re: [moztw-general] 請幫忙檢查 HTML Parser 錯誤訊息的翻譯

From: Kang-Hao (Kenny) Lu <kennyluck@w3.org>
Date: Thu, 03 Nov 2011 14:24:35 +0800
Message-ID: <4EB233A3.7050002@w3.org>
To: 火狐俱樂部 <moztw-general@googlegroups.com>
CC: Peter Pin-Guang Chen <petercpg@mail.moztw.org>, 中文HTML5同樂會ML <public-html-ig-zh@w3.org>
幫 Peter 補充一下,原文應該是:http://hg.mozilla.org/mozilla-central
/file/b8dd6f6f4207/dom/locales/en-US/chrome/layout/htmlparser.properties
目前的翻譯在:https://etherpad.mozilla.org/dom-htmlparser-properties-zh-tw

(11/11/02 9:50), Peter Chen wrote:
> Dears,
> 
> 昨天 l10n repo 上突然多出了一百多句字串處理 HTML Parser 輸出錯誤訊息的部分[1],
> 我剛剛翻完了第一個版本,不過我預期應該會有一些翻譯錯誤或是翻的不夠好的地方,
> 所以想請各位 (我想尤其是 Kenny 懂得應該比我多很多?) 來幫忙抓錯誤。

既然被點名了就給一些評論吧(大家都知道我意見很多了吧),首先回答這個問題:

(11/11/02 14:40), Peter Chen wrote:
> 我沒猜錯的話這東西應該會出現在錯誤主控台裡面....。
>
> 今明天等原本那個 bug 被編進 -central 裡面可以測試看看?

這是在「檢視原始碼」的時候,Firefox 幫忙找的 HTML 語法錯誤,它會給你紅字
然後你把游標懸浮在上面就會看到這些提示訊息。目前沒看到錯誤主控台裡有出現
這部份。翻譯的部份...

首先是常用字

character — 翻字符好像是新趨勢?還是大陸用法?(我是蠻習慣講字符就是了)
reference — 我會翻「引用」,不過沒太強烈的意見。


> errLtSlashGt=發現「</>」。可能造成的原因: 未跳脫的「<」(應該要跳脫成
>「&lt;」) 或是不對應的結尾標籤。

這裡「不對應」原文是 mistyped,翻成「或是結尾標籤打錯了」怎麼樣?畢竟嚴
格上這不是對應不對應的問題。你打 </abc> 就不會出現這個錯了。

> errCharRefLacksSemicolon=字元參引未由半形分號結束。

我會覺得「半形」是多餘的,尤其檢視原始碼本來就是給開發者看的。

> errNoDigitsInNCR=字元參引當中沒有數字。

這裡原文是 "No digits in numeric character reference"。現在興趣小組規範
翻譯目前是用「數字型字符引用」。畢竟是專有名詞,最好一致一點,有不太同意
的意見的話一起討論一下。

> errNamelessDoctype=文件型別沒有名稱。

規範翻譯 QQ 群的意見是說這邊說「Doctype」不要翻了。順道一提,這是
<!Doctype > 的狀況。

> errBogusComment=偽造的註解。

這真的很難,不過畢竟有人看不懂還是改一下吧。這是 <!- a --> <? ?> <!-&
--> 等等各種狀況的集合,功能上來講的話我建議翻成「註解語法不正確」就好
了。話說回來,HTML5 規範把這個詞當作名詞來用,所以的確可能需要一個專有名
詞...

「不正註解」怎麼樣?(很想直接翻「搞笑註解」之類的...)

這個詞喔,一般是用在比較「惡搞」 的地方,像是 <!-- 漏結尾就太不像惡搞
了,沒有 bogus 的感覺。一般是說 <meta charset=abc> 這種感覺。我不知道一
般會不會用「假」或是「擬」描述這種情形耶?

> errUnquotedAttributeLt=在一個沒有被引號包起來的屬性值當中發現「<」。可
> 能造成的原因: 前面缺少「>」。

這是 <meta charset=utf-8<style>...</style> 的情形,從功能來看,與其寫
「缺少」,用「少打了」怎麼樣?後面類推。

> errUnquotedAttributeGrave=在一個沒有被引號包起來的屬性值當中發現
>「`」。可能造成的原因: 使用了不正確的符號作為註解。

這是 <meta charset=`utf-8`> 的情形,「使用不正確的引號字符」可能比較容易懂?

> errUnquotedAttributeStartEquals=在一個沒有被引號包起來的屬性值的開頭發
> 現「=」。可能造成的原因: 雜亂且重複的等號。

這是 <meta charset==utf-8> 或是 <mata charset= =utf-8> 的情形。怎麼形
容?我看說「多餘的等號」就好了。「雜亂」這個字...

> errLtGt=發現了「>」。可能造成的原因: 未跳脫的「<」(應該要跳脫為
>「&lt;」)或是把起始標籤打錯了。

這裡是「<>」才對,Peter 可能漏看了。這沒什麼爭議我就 Etherpad 先改了。

> errUnescapedAmpersandInterpretedAsCharacterReference=在「&」後面的字串
> 被解譯為字元參引。(也許應該把「&」跳脫為「&amp;」。)
> errNotSemicolonTerminated=附名的字元參引並未由分號結束。(也許應該把
>「&」跳脫為「&amp;」。)
> errNoNamedCharacterMatch=「&」並未起始一個字元參引。(也許應該把「&」
> 跳脫為「&amp;」。)

這三個我花了很長的時間理解差異,到目前為止還不是很確定我知道哪個場合要用
哪個。不管怎麼樣 1) 建議把「附名的」拿掉,一般講字符引用如果沒特別提都是
講 &amp; 這種,數字型的那種(&#23;)再多加一個形容詞說明就好。2) 建議把
「在」拿掉「被解釋」改成「已被解釋為」,但是這裡靠這些字也解釋不清,請看
下面。

我講幾個... 有點恐怖的例子,大家可以想想看這裡要怎麼幫助使用者:

如果你在位址條打:"data:text/html,&abc;" 你會看到螢幕出現 "&abc;" 基本上
就是「這個『&』並未起始一個字符引用」,這大概沒什麼問題。

如果你在位址條打:"data:text/html,&lta;" 你會看到螢幕出現 "<a;" 這是因為
"&lt"(注意!沒有 ";" )被取代成 "<a;" 。但是這是極端...不容易理解的行
為。這個應該對應到「『&』後面的字串已被解譯為字符引用。」(雖然目前的逐
日建製版怪怪的)。這裡應該最好把被取代的字串 "&lt" 直接寫上來... 另外,
目前劃紅色的地方也怪怪的。總之祈禱開發者不要碰到這種狀況好了。另外一種想
法就是在這個時候給開發者「這個『&』並未起始一個字符引用」就好了。

更可怕的事,如果 "&lta;" 出現在屬性值裡,這就不會變成剛剛 "<a;" 而是
"&lta;"!這裡目前是回到「這個『&』並未起始一個字元參引」,我想沒有問題。

如果屬性值只有 "&lt",會出現「字符引用並未由分號結束。」,我想這個可以理
解。中間那種狀況真的是問題比較多一點,不曉得各位有什麼想法?(要不我看全
部寫成「這個『&』並未起始一個字符引用」好了...何況目前還有 bug)

> errBogusDoctype=假造的文件型別。

同上,目前我想到最好的就是「文件型別語法不對」了。

> maybeErrSlashInEndTag=在結束標籤的結尾發現了雜散的「/」。

</b /> 的情形,「在結束標籤的結尾發現了多餘的『/』」?

> errNcrNonCharacter=字元參引被擴充到非字元範圍。

直接寫成「引用非字元字符」怎麼樣?其他類比。

> errAstralNonCharacter=字元參引被擴充到非字元星光範圍。

嗚,我真的不知道怎麼形容 U+FFFF 以上的字符了,假如大家說是星光那就星光
吧。(放心,我想碰到這個東西的機率太低了)

> errNcrSurrogate=字元參引擴充到代理範圍。

不知道怎麼形容代理對的其中一個,代理代碼點?

> errNcrCr=數值字元參引擴充到換行符號。

U+000D 或是俗稱 '\r',我不曉得有沒有跟 '\n' 區隔的中文名字啦...

> errEofInPublicId=公用識別符當中出現了檔案結束符號。

「檔案結束造成公用辨識符的解析中斷」或是類似的句子,不用講「檔案結束符
號」之類的了吧?下面類推

> errNcrUnassigned=字元參引擴充到一個永久未指派的程式點。

「程式點」→「代碼點」

> errNcrZero=字元參引擴充到零。

「零」→「空字符」(一般怎麼稱呼 U+0000 NULL?)


嗚,我先弄到這裡剛好一半好了。後面樹建構的部份大家也可以一起幫忙想一
想...這裡的確是跟規範用語相同比較好...


(11/11/02 13:06), CQD wrote:
> http://www.w3.org/TR/html5/tokenization.html#bogus-comment-state
> 稍微看了一下,這個似乎跟 HTML5 規範 Parse 的狀態機如何切換處理輸入資料
的狀態有關。
>
> 發生 Parser Error 時會切換入 Bogus comment
> state,從當字元到第一個「>」的全部字元都會被吃掉,如果沒有「>」的話就
一路吃到 EOF。
>
> 我猜在這個模式吃掉的字元會被 browser 丟掉,雖然不確定。

歡迎大家比較一下

data:text/html,<!--a--><script>alert(document.childNodes[0].textContent)</script>

跟

data:text/html,<!-a--><script>alert(document.childNodes[0].textContent)</script>

的不同。結論是未被吃掉,規範的句子是:

[[

Emit a comment token whose data is the concatenation of all the
characters starting from and including the character that caused the
state machine to switch into the bogus comment state, up to and
including the character immediately before the last consumed character

]]


(11/11/02 13:30), Bob Chao wrote:
> 有疑問且在規範裡的東西或許可以丟 html5中文興趣小組討論一下

感謝引介,所以我直接 Cc 給中文興趣小組了 xd
Received on Thursday, 3 November 2011 06:25:11 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:43:49 UTC