陳海燕 ,郭云輝, 錢開源
(1.北京文思海輝軟件技術有限公司,北京100085;2.無錫文思海輝信息技術有限公司,江蘇 無錫214135)
近年來,隨著國內經濟發展和經濟全球化日益加深,以及國家“一帶一路”戰略布局的實施,國內越來越多的企業不再局限于國內市場,而是主動走出國門,進入全球市場。尤其在信息技術、計算機領域,涌現了一批優秀的企業在海外市場大放異彩,例如小米、字節跳動、華為等公司在海外市場布局了從消費電子、社交應用到網絡通信硬件設備的各類產品。對于這些出海產品而言,首先面臨的阻礙就是不同語言文化隔閡。因此,除了產品本身的優秀設計以外,一個易于當地民眾理解的操作界面就顯得至關重要。同時,在激烈的市場競爭格局下,各軟件產品往往快速迭代更新,推陳出新,以不斷貼合用戶需求。這就需要一個高效敏捷的軟件本地化流程為其保駕護航。
控件是用戶界面(User Interface,UI)上的一切元素,例如窗口標題、標簽(Label)、文本框、列表框、下拉列表框、組合下拉列表框、復選框、單選框、按鈕等等。在軟件開發中,部分用戶界面控件大小通常受限于用戶界面面積和布局。例如,控件中文本內容過長,將會導致文本超出控件的文本顯示范圍而造成文本截斷或互相遮蓋的問題。下圖所示的是正常用戶界面和存在截斷問題的用戶界面。

正常的用戶界面

字串截斷的用戶界面
傳統技術中,通常在軟件開發中就會安排對這類問題進行檢測的質量保證流程。但是,當對已開發成熟的軟件進行本地化制作時,例如將原始英文版本的軟件制作成對應的中文版時,通常并不會對軟件從頭開始開發,而是采用翻譯原始版本的字串的方式。由于語言特性,譯文可能會存在長于原文的情況。因此,當譯文導入到軟件界面的控件中時,同樣會產生文本截斷或互相遮蓋的問題。針對此問題,通常在本地化制作的語言驗證測試(Lingustic Verify Test,LVT)階段來檢測該問題,如測試確定存在超限情況,則將退回給譯員進行修改調整。例如譯員可以通過減少文本內容的字符數量等來避免這類問題的產生。然而,由于譯員無法獲取含有該文本內容的實際軟件的用戶界面,以及不同語言的顯示格式或顯示效果可能不同,使得譯員無法準確評估文本內容所占實際的空間大小,通常需要在多個檢測-更改回合之后才能解決問題,降低了工作效率。因而在傳統的軟件本地化過程中,面對出現大量的界面字串截斷問題,需要花費大量時間和成本來發現并修復這些問題,從而延后了產品發布日期和推高了產品開發費用。為此,有必要針對上述技術問題,提供一種能夠高效檢查 UI字串截斷問題的方法。
經過分析,為了有效減少 LVT 階段退回率,需要在翻譯階段攔截大部分截斷問題。即不用等到 LVT 階段查看軟件界面實際顯示效果,而是提前到翻譯階段通過模擬實際控件顯示效果,直觀展示截斷情形,以利于譯員準確評估譯文所占實際空間大小,選用合適長度的譯文,從而避免出現截斷問題。我們采用HTML DIV 元素來模擬界面控件的顯示效果。
一是獲取檢查條件。從翻譯要求或字串表文件中提取出檢查條件。軟件產品中,控件的文本顯示區域寬高尺寸一般由像素值定義,此時可以直接取用該數值。有時客戶(軟件開發商)會以字符數和行數來限定文本顯示區域大小。對于字符數寬度而言,因為(各語言的)各字母寬度不一,所以實踐中轉用相應數量字符 A 所占的像素寬度。二是占位定限層。此層用于確定所模擬控件的顯示區域尺寸。如果檢測條件采用像素值寬度和高度,則可直接作為占位定限層的寬度和高度使用。如果檢測條件采用字符數寬度和/或行數高度,則需要通過文本填充以確定顯示區域的像素尺寸。因為文字占據空間大小受文本格式(字體、字號、行距等)影響,為了獲得正確的尺寸,需要設置字體格式為模擬控件使用的實際字體格式;同時為了確保正常顯示各類白字符,還需設置折行方式為 pre-wrap,以便保留空白。例如,若指定了字符數寬度,則在此層中填充指定數量的字符 A;若指定了行數高度,則在此層中再填充 指定行數-1 個回車符。此時,獲取此 DIV 的寬高像素值即為所模擬控件的最大顯示區域尺寸。例如,檢測條件 28 字符 X 5 行:

此時,此層的寬高像素值即為對應檢測條件所允許的顯示區域尺寸。三是實際填充層。此層用于填充實際文本,用于確定是否超出顯示區域,即是否出現截斷問題。設置寬度為占位定限層的寬度,高度自適應文本。因為文本格式(字體、字號、行距等)會影響文字大小。同樣,為了正確獲得實際文本占用區域,需要設置字體格式為模擬控件所使用的實際字體格式;還需設置折行方式為 pre-wrap。例如:
為了突出顯示超限范圍,可另設背景色為警告色,例如紅色。
比較實際填充層和占位定限層的高度,若前者大于后者,則可判定超限。四是友好參照層。此層作為可視參照標準,可向譯員直觀展示超限程度。設置寬度為占位定限層的寬度,高度自適應文本;設置高度為占位定限層的高度,并將其疊加于實際填充層上方。若存在超限問題,即實際填充層高度大于占位定限層高度。那么實際填充層超限部分就會露出,其警告色將引起譯員的明顯注意。因為參照層的遮蓋,譯文顯示不再完整,甚至字符本身也不完整。為改進此不良的閱讀體驗,將填充實際文本以展現完整內容。未超限的內容將與實際填充層重合;而超限部分,仍然會露出。在視覺上,兩者會組合成完成的字符,以完整呈現文本內容。超限部分仍然會具有警告背景色,向譯員提示超限范圍。
方案示意圖如圖所示:

依據檢查條件的高寬定義的不同方式,共有四種組合方式:一是像素寬度 * 像素高度:

二是像素寬度 * 行數高度:

三是字符數寬度 * 像素高度:

四是字符數寬度 * 行數高度:

本方案的優勢表現為基于 HTML DIV 元素模擬控件的顯示效果。所見即所得的方式直觀呈現超限程度,便于譯員調整譯文以符合要求。支持像素值或字符數/行數定義檢查區域大小,靈活性強,適應絕大多數控件的截斷檢查要求,可應用于多種軟件的本地化服務。基于 HTML 的解決方案,天然適用于各在線翻譯云平臺,具有易于移植的特點,可配合在線翻譯編輯器使用,可實現隨翻隨檢的即時檢查模式。采用 HTML DIV 元素模擬控件,借助瀏覽器渲染實現所見及所得的顯示效果。避免了自行實現渲染字體格式,計算折行位置等功能。有效降低了開發難度和復雜度,利于實施。本方案的效果表現為在若干個實際軟件本地化項目中,應用此方案后,我們發現 LVT 階段因截斷問題而退回的字串·次數下降了 95%,從而大幅減少了相關的 bug 修復和測試時間,大大縮短了整個軟件本地化的周期,有效降低了軟件本地化成本,促進了敏捷本地化的實施。本方案的不足表現為對 5% 仍出現截斷問題的字串進行分析后,我們發現最主要的原因是軟件本身使用了其非他 HTML 技術渲染文本,與 HTML 模擬結果不一致:文本占用區域會有一定的細微偏差(±2% 以內)。而這些字串在 HTML 模擬結果中往往臨界,沒有被檢出截斷問題,但在實際軟件界面中,因為多出1-5 個像素而被檢出。其次為字體版本不同。設計文檔注明的字體與軟件實際使用的字體不符。