W3C home > Mailing lists > Public > public-html-ig-zh@w3.org > October 2010

Re: 我也贡献一个话题:关于lang()伪类选择器的问题

From: Ethan Chen <chief@ethantw.net>
Date: Sun, 24 Oct 2010 03:33:11 +0800
Cc: 中文HTML5同樂會ML <public-html-ig-zh@w3.org>
Message-Id: <2B78413C-53ED-41F0-B8B1-735039BF056B@ethantw.net>
To: John Hax <johnhax@gmail.com>
先謝謝John的整理。

> 按照新的语言tag,zh属于macrolang(语族?),而具体的语言如:
> cmn(普通话、国语)
> yue(粤语)
> wuu(吴语)
> 
> 按照BCP47,zh-cmn这种写法是冗余的,尽量用cmn直接表示。
> 此外还有Hans/Hant表示简体和繁体。加上地区code,完整的写法是:
> 
> 台湾用繁体中文写的国语 cmn-Hant-TW
> 大陆用简体中文写的普通话 cmn-Hans-CN
> 香港用繁体中文写的粤语 yue-Hant-HK
> 
> 问题是,如果一个文档的lang被标记为上述tag,则前述书名号的CSS样式就无法匹配。


中文標點符號是地域性的,而非語種性的。也就是說,在台灣,只要是漢字文章,無論是用閩南語、國語、客家話來寫作,都是套用台灣教育部的標點符號標準;在中國就用中國的標準。

網頁如果使用大陸標準的「繁體字」(hant-cn,GB),一樣得用大陸的《書名號》。所以只寫cmn、wuu、yue、hoklo可能還不夠,應該也要標註網頁是以何種標準的繁、簡體寫作的。也方便瀏覽器及設計師宣染正確的中文字型。這無法以unicode分區解決,因為同一個glyph可能在不同國家有不同寫法。像是大陸繁體也會用放在左下的句號以及如下的繁體字:

台灣則用:



所以<cite>標籤預設樣式可以寫成:
> cite:lang(-hans-CN|-hant-CN|zh):not(:lang(zh-latn)) {
> 	font-style: normal;
> 	quotes: '《' '》' '〈' '〉';
> }
> cite:lang(-hans-CN|-hant-CN|zh):not(:lang(zh-latn)):before {
> 	content: open-quote;
> }
> cite:lang(-hans-CN|-hant-CN|zh):not(:lang(zh-latn)):after {
> 	content: close-quote;
> }
> cite:lang(-hant-TW|zh-tw) {
>     quotes: none;
>     text-decoration: wave underline;
> }


如此一來不同標準的書名號就可以分別套用於不同標準的漢字,除了不影響拉丁化的中文外,也能去除冗餘的zh-前綴。


再請問一下普通話的cmn是common的縮寫嗎?因為台灣都用Mandarin,大陸也是,感覺用mdr會比較好。

我一直覺得很怪,之前如果台灣有人用閩南語寫作,可能得標成「zh(-Hant)-TW」。但zh這縮寫本身就不中性,它代表「中文」的「普通話」漢語拼音(zhongwen)。所以說zh是個語族也不太對吧,因為zh是「等於」cmn(普通話)的呀。像日文、韓文都是用英語慣用的ja和ko,中文跳過ch(Chinese)改用zh不曉得有沒有什麼歷史因素呢?還有一點,「yue」應該是普通話拼音,剛剛查了字典,粵語中「粵」字唸作「jyut」[1]。吳語是用吳語自己的拼音「wuu」;客家話、閩南語也都用自己的拼音。所以這個language tag好像有欠準則呀!

但說實話,採用zh對我們來說其實很方便。由於字母排序(alphabetical)的關係,查多國語言資料的時候(如《維基百科》)拉到最下面就可以找到中文普通話。不曉得可不可以保留zh作為普通話、讓ch作為中文語族呢?

http://humanum.arts.cuhk.edu.hk/Lexis/lexi-can/search.php?q=%B8f






在 Oct 23, 2010 5:27 PM 時, John Hax 寫到:

> 
> lang()伪类选择器用于选择语言,比如我们之前提到过的书名号问题:
> 
> 
> cite:lang(zh) {
> 	font-style: normal;
> 	quotes: '《' '》' '〈' '〉';
> }
> cite:lang(zh):before {
> 	content: open-quote;
> }
> cite:lang(zh):after {
> 	content: close-quote;
> }
> cite:lang(zh-Hant-TW) {
>     quotes: none;
>     text-decoration: wave underline;
> }
> 
> 
> lang()匹配的规则同[att|=val],即lang(C)匹配值等于C,或以C开头跟一个 - 。
> 
> 
> 问题出在新的BCP47(http://www.ietf.org/rfc/bcp/bcp47.txt)上。

> 
> 按照新的语言tag,zh属于macrolang(语族?),而具体的语言如:
> cmn(普通话、国语)
> yue(粤语)
> wuu(吴语)
> 
> 按照BCP47,zh-cmn这种写法是冗余的,尽量用cmn直接表示。
> 
> 此外还有Hans/Hant表示简体和繁体。加上地区code,完整的写法是:
> 
> 台湾用繁体中文写的国语 cmn-Hant-TW
> 大陆用简体中文写的普通话 cmn-Hans-CN
> 香港用繁体中文写的粤语 yue-Hant-HK
> 
> 问题是,如果一个文档的lang被标记为上述tag,则前述书名号的CSS样式就无法匹配。
> 
> 当然,根据W3C国际化工作组的选择语言Tag的FAQ(http://www.w3.org/International/questions/qa-choosing-language-tags),为了向后兼容,可以继续用zh。
> 
> 这样就是
> 
> 台湾用繁体中文写的国语 zh-cmn-Hant-TW
> 大陆用简体中文写的普通话 zh-cmn-Hans-CN
> 香港用繁体中文写的粤语 zh-yue-Hant-HK
> 
> 问题在于,这样可以匹配前述《》,但是仍然无法匹配zh-Hant-TW所写的浪线规则。
> 
> 
> 在这个case里,首先:
> 
> 样式表的语言选择器的值,是没有问题的。因为书名号规则与是国语还是粤语并无关系,标点符号规则只与所用文字,还有国家地区的标准和习惯有关。
> 
> 如果说有什么问题,那只有
> cite:lang(zh) {
> 	font-style: normal;
> 	quotes: '《' '》' '〈' '〉';
> }
> 这里写得过于宽泛。如zh-Latn-pinyin或zh-Latn-wadegile(威妥瑪拼音)是不用书名号的。但是这里表示的是绝大多数被标记为zh-*的都用书名号。然后可用进一步的lang()规则来override。
> 
> 
> 其次:
> 
> 文档的语言tag,也是没有问题的。因为文档可能包含语言相关因素。如粤语(yue)的书面语可能包含特殊的汉字。比如文档的语言标记为zh-gan-Hant,表示这是一个繁体中文写的赣语文章。而标记为zh-wuu-Hans表示这是一个简体中文写的吴语文章。
> 
> 
> 所以只能说是lang()选择器有所不足。
> 
> 对于 cite:lang(zh-Hant-TW) 实际上我们希望匹配 zh-*-Hant-TW ,例如 zh-nan-Hant-TW ,用繁体中文写的闽南语文章。
> 
> 
> 
> 
> 提议的解决方案
> 
> 扩展lang()选择器及[att|=val]选择器
> 
> 
> 方案一:
> 
> 允许用*匹配。比如可写:
> cite:lang(zh-*-Hant-TW) {...}
> 
> 该选择器应该匹配以下tag
> zh-Hant-TW
> zh-cmn-Hant-TW
> zh-nan-Hant-TW
> ...
> 
> 
> 方案二:
> 
> 允许匹配部分subtag【前提是不同用途的subtag不会重复】。比如可写:
> 
> cite:lang(zh):lang(Hant-TW)
> 或
> cite:lang(zh):lang(Hant):lang(TW)
> 
> 也可以达到上述目标。
> 
> 
> 
> 
> 以上。
> 
> 
> 

Received on Saturday, 23 October 2010 19:33:56 UTC

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