添加時(shí)間:2007-4-22
簡(jiǎn)介:
我們將網(wǎng)頁(yè)或HTML應(yīng)用程序國(guó)際化時(shí),需要將它們翻譯成多種語(yǔ)言版本。如何做到文本在轉(zhuǎn)化后,自動(dòng)調(diào)整頁(yè)面中各個(gè)單元位置,間距和尺寸呢?這聽(tīng)起來(lái)似乎很難,但是如果按照本文講述的幾條法則去建立HTML頁(yè)面,你就會(huì)相信這是事實(shí),這幾條法則能夠省去本地化工作人員的很多麻煩。
注:本文中的對(duì)話框是指包含基本交互控件的WEB頁(yè)面,由于其風(fēng)格與WIN32的對(duì)話框非常相似所以也稱之為對(duì)話框。
引言:
不久前大多數(shù)在Windows平臺(tái)上的用戶界面使用的還是WIN32的或其他可視化編程工具做出的彈出式窗口,但是目前很多開(kāi)發(fā)人員利用HTML強(qiáng)大的功能來(lái)創(chuàng)建應(yīng)用程序的用戶界面。這是一種新的思路和方法,它易學(xué)易懂,編寫方便,利于開(kāi)發(fā)。但由于頁(yè)面中的文本在轉(zhuǎn)化為其它語(yǔ)言版本時(shí)會(huì)出現(xiàn)許多調(diào)整大小和位置的問(wèn)題,這就給本地化工作帶來(lái)很大的困難。對(duì)于整體采用層疊式表單(CSS)的普通Web頁(yè)面,這種轉(zhuǎn)化也絕對(duì)是一場(chǎng)噩夢(mèng)。但如果所有的HTML用戶界面元素都使用正確的編碼標(biāo)準(zhǔn)構(gòu)建,那么留給本地化工作人員可做的事情就微乎其微了。HAL(即HTML自動(dòng)排版)的編碼標(biāo)準(zhǔn)給我們提供了HTML國(guó)際化應(yīng)用時(shí)避免調(diào)整的一種方法。本文就此列舉了一系列法則和法則的主要依據(jù)。法則后附有編碼樣例。
備注:HAL兼容大部分HTML對(duì)話框,特別是對(duì)于可以調(diào)整大小的對(duì)話框或窗口。
HAL幾大優(yōu)點(diǎn):
1、本地化工作人員只需翻譯文本部分。用戶界面會(huì)自動(dòng)調(diào)整所有控件來(lái)匹配它的大小。
2、準(zhǔn)備工作在最初的版本中做一次(通常為英語(yǔ))即可,不需要為多種語(yǔ)言版本重復(fù)做多次。
3、完全省略了本地化過(guò)程中設(shè)定對(duì)話框尺寸的步驟,也省略了其它易出錯(cuò)的步驟,如試圖從產(chǎn)品的前一版本或其它語(yǔ)言中重復(fù)使用對(duì)話框尺寸。
4、不會(huì)產(chǎn)生顯示方面的錯(cuò)誤,從而使本地化的對(duì)話框質(zhì)量與原英文版本無(wú)異。
5、本地化工作人員不必修改由于對(duì)話框尺寸重新調(diào)整而引起的錯(cuò)誤。如果在轉(zhuǎn)換用戶界面時(shí)出現(xiàn)任何問(wèn)題,應(yīng)交給開(kāi)發(fā)人員修改這些錯(cuò)誤,修改完的結(jié)果就會(huì)應(yīng)用到所有其它語(yǔ)言上。這就避免了在其它語(yǔ)言上重新出現(xiàn)這些錯(cuò)誤,即使在最壞的情況下,本地化工作人員也僅僅需要重新翻譯一遍。
6、因?yàn)樽址淖儠r(shí)本地化工作人員要調(diào)整對(duì)話框,所以做的調(diào)整工作可能比直接設(shè)置大小花的的時(shí)間還要多。 如果處理不當(dāng),也易添加新的錯(cuò)誤。HAL完全解決了這個(gè)問(wèn)題。
7、由于無(wú)需調(diào)整其它控件就可以給對(duì)話框快速加入新的控件,因此對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),對(duì)話框變得更易于管理。HAL法則特別適用于創(chuàng)建可重新調(diào)整大小的對(duì)話框。如果對(duì)話框規(guī)格需要改變,只需在一個(gè)地方改動(dòng)(一個(gè)全局樣式表單),而不需在每個(gè)對(duì)話框上都做改動(dòng)。對(duì)話框尺寸的全局控制保證了產(chǎn)品用戶界面的整齊和一致性。
HAL的不足之處:
當(dāng)然,沒(méi)有什么是十全十美的,采用HAL法則也會(huì)帶來(lái)一些其它問(wèn)題。
1、頁(yè)面/對(duì)話框的構(gòu)建變得有些復(fù)雜,因此原始對(duì)話框很有可能比以前有更多的初始化錯(cuò)誤。
2、在頁(yè)面的加載處理過(guò)程中需要一些額外的代碼(調(diào)整按鈕的大?。?,這會(huì)使加載速度降低,但用戶對(duì)此并不會(huì)太敏感。
3、控件的對(duì)齊不一定會(huì)很一致,并且當(dāng)對(duì)話框大小改變時(shí)它們的大小也會(huì)隨之改變。
HAL法則:
法則一:不使用絕對(duì)位置
不要在CSS屬性中設(shè)置為絕對(duì)位置。最不當(dāng)之處的是設(shè)置成絕對(duì)位置的同時(shí)也把左上角設(shè)置為固定值。
對(duì)頁(yè)面中元素使用絕對(duì)位置將使其不能夠自動(dòng)定位和確定尺寸。絕對(duì)位置只適用于層疊式表單(CSS)。position,left和top是層疊式表單中控制位置的關(guān)鍵屬性。
以下代碼是絕對(duì)不允許的:
<DIV id = idFindWhatLabel style = "position: absolute; left: 0.98em; top: 1.2168em; width: 4.8em; height: 1.2168em;">
Fi<U>n</U>d what:
</DIV>
絕對(duì)位置的使用特例:
所有HAL法則都有特例。如果用表達(dá)式表示的絕對(duì)位置就可以使用,可以參考法則二。
法則二:對(duì)話框應(yīng)當(dāng)匹配最大可用寬度和高度
使用最大可用寬度和高度設(shè)計(jì)對(duì)話框。這有兩種方法:
1、用width=100%的表格來(lái)構(gòu)建對(duì)話框。
代碼樣例如下:
<body>
<table width=100%>
<… can contain other tables …>
</table>
</body>
2、使用基于表達(dá)式的位置和基于對(duì)話框大小的尺寸(即body.clientHeight)。
代碼樣例如下:
<div style='position:absolute; height:
expression(document.body.clientHeight / 2); width:
expression(document.body.clientWidth / 2); '>
</div>
當(dāng)表里嵌有多個(gè)表格時(shí),最好的解決方法是正確設(shè)置元素的大小再放入表中,并且維持它們的相對(duì)位置。
在操作過(guò)程中需要考慮:
哪些控件有相同的尺寸。它們必須位于相同的表格單元中,可以不在一行。
哪些控件有相同的對(duì)齊方式。
哪些控件會(huì)將其它控件擠到右邊。
哪些控件有固定的尺寸。
多數(shù)情況下本地化人員只允許給對(duì)話框設(shè)置初始化的寬度和高度。只有非常必要時(shí)才使用固定的對(duì)話框?qū)挾龋ɡ鐚?duì)話框必須匹配其它對(duì)話框的制表符)
法則三:每個(gè)控件都應(yīng)位于分離的表格單元中
盡量使每個(gè)控件位于分離的表格單元中。這樣做文本可以單獨(dú)換行,并且在中東語(yǔ)言環(huán)境下也可以進(jìn)行翻轉(zhuǎn)和定位調(diào)整的工作。
有些情況下可以忽略這條法則:
多行按鈕有相同尺寸。
上下緊鄰的標(biāo)簽。
法則四:允許文本換行
在包含文本的表格單元中不要用"nowrap"屬性(如<td nowrap>),否則文本變長(zhǎng)時(shí)就不能換行。當(dāng)想讓文本占用一行并保證為翻譯成其它語(yǔ)言留有足夠的空間時(shí),才能使用這一屬性。
有時(shí)為了保持對(duì)話框整體比例平衡,需要用到"nowrap"屬性。
錯(cuò)誤的換行方法:
<td nowrap>
Fi<U>n</U>d what:
</td>
最好的辦法是給表格設(shè)置一個(gè)初始化尺寸,如下:
<td width=20%>
Fi<U>n</U>d what:
</td>
另一種方法是在詞間使用不中斷的空格符( )。
<td>
Fi<U>n</U>d what:
</td>
相關(guān)文章
Html:詳細(xì)了解Anchor標(biāo)記Html:HEAD元素使用集錦HTML編寫小經(jīng)驗(yàn)實(shí)現(xiàn)HTML自動(dòng)排版的法則2什么是Dynamic HTML動(dòng)態(tài)HTML的問(wèn)答 收藏: