1. 程式人生 > >HTML5中的新國際化標籤及屬性

HTML5中的新國際化標籤及屬性

H5問世其實也有很長一段時間了,時至今日,大部分瀏覽器都號稱對其進行了支援,但效果如何呢?隨便找個前端問問,標準答案一般會是——呵呵~~~雖然H5對視訊、音訊、圖象、動畫,以及同電腦的互動都已經標準化,但要論及完美,不得不說H5還有很長的路要走。

閒言少敘,本文就來談談HTML5 + CSS3中的新國際化標籤及其使用情況,以及可能帶來的風險分析吧。

<lang>

一定會有人驚呼,lang一直都有啊!對!不過寫法略有不同,參考如下示意程式碼。更加簡潔,不是麼?

<!DOCTYPEHTML>
<htmllang="zh-cn">
<head>
<metacharset="utf-8">
</head>
<body>
<p>表ポあA中Œé鷗停B逍Üßàùªñ</p>
<p>這是一個測試!</p>
</body>
</html>

反覆切換lang為zh-cn,en-us,ja-jp,ko-kr,發現除了字型發生了些許變化外,沒有其他效果。莫非該標籤也屬於尸位素餐型的?其實不然,部分瀏覽器會根據這個屬性來提供自動翻譯建議,也會自行判斷網頁語言搜尋。特別是網頁中包含其他語言的內容,例如比如在某個標籤中引用了一段西班牙語內容,或是在網頁中插入了一段其他語言的音訊、視訊,則應該在這些單獨的標籤上再單獨使用lang註明內容使用的語言,從而確保使用者接收到本地化的音訊或視訊。

<charset>

這也不是新標籤啊!……確實,不過相比於之前拖沓冗長,如今的寫法確實清爽。

<head>
<metacharset="utf-8">
</head>

而html文件中指定charset也只有當HTTP頭部中未包含編碼資訊時才有效,如果HTTP頭部中包含了編碼資訊,則優先使用HTTP頭部指定的編碼而忽略HTML文件中指定的編碼(如果兩者不同的話)。另外的利好訊息是H5中的預設charset即utf-8,再也不用擔心明示charset問題了!所以用H5再也不會出現亂碼了,對不對?呃……好傻好天真哦,你把當前html另存為ANSI再試試。

<bdi>

<bdi> 標籤允許您設定一段文字,使其脫離其父元素的文字方向設定,這點在Clarity一文中已經提到過啦。

<number>

該標籤強制使用者輸入數字,但對於千分位以及小數點顯示仍不提供原生支援。

<label>數字:<input type="number"  name="points" min="1"max="100" step="0.1"/></label>


Date Pickers

目前只有Chrome對該標籤集提供支援,在前段直接顯示localtime,FF,IE無任何效果。

date - 選取日、月、年

month - 選取月、年

week - 選取周和年

time - 選取時間(小時和分鐘)

datetime - 選取時間、日、月、年(UTC 時間)

datetime-local -選取時間、日、月、年(本地時間)

<label>date日月年:<input type="date" name="user_date"/></label>
<label>month月,年:<input type="month"name="user_month"></label>
<label>time小時,分鐘:<input type="time"name="user_time"></label>
<label>datetime時間,日,月,年(UTC時間)<inputtype="datetime" name="user_datetime"></label>

另外,H5還用CSS代替了不少標籤,另外廢除了一些只有個別瀏覽器支援的標籤,例如marquee這樣的走馬燈效果,考慮到都是純功能涉及,本文就不多累述。

捎帶腳,我們也一併來看看通常與H5配套使用的CSS3,雖然其新增的特性也夠寫一本書了,但與國際化相關的內容不外乎以下幾點。

Font-face

通過載入字型樣式,它還能夠載入伺服器端的字型檔案,讓客戶端顯示並未安裝的字型。

Word-wrap

設定word-wrap: break-word的話,在單詞換行的情況下,用來保持單詞的完整性。一定程度上可以減少L10n測試中的truncation問題。

Text-overflow

與 word-wrap 是協同合作,word-wrap設定或檢索噹噹前行超過指定容器的邊界時是否斷開轉行,而 text-overflow 則設定或檢索噹噹前行超過指定容器的邊界時如何顯示。我們在父容器設定overflow: hidden, 然後設定“text-overflow”屬性,有“clip”和“ellipsis”兩種可供選擇。"clip"表示直接切割,"ellipsis"表示用省略號代替。而一旦涉及文字溢位,國際化字元的截斷問題又勢必將會扎堆出現。

據筆者個人觀察,靜態頁面部分大抵就是如此了,動態的JS則會在後續文章中慢慢跟大家聊。