今天繼續由SAP成都研究院非典型程式猿, 菜園子小哥王聰給大家帶來分享。
關于這個很長的定語的由來,請參考這篇文章,裡面有王聰的背景介紹,包括他種菜的特長:當我用UI5診斷工具時我用些什麼。
秋天到了,娃娃們開學了,又是一個收獲的季節。雖然過去的8月,成都雨水偏少,但是對于王聰來說這些都不是事,他的莊稼一樣獲得了豐收。有圖為證:

下面是王聰的正文。
我身邊的朋友中追求個性的人很多,但我最佩服的是我表弟小周。他的人生處處都把“酷”作為唯一的行事準則,甚至反映在了聯考報考這種人生大事上。
“我要學最酷的專業。”
深知他個性的我明白這事擋不住,隻能順着。于是給他推薦長沙民政職業技術學院的殡儀學院,裡面的專業随便說一個出來都是讓人目瞪口呆。何止是酷,簡直酷到口吐白沫!
他爸媽聽了我的建議恨不得打死我,隻有小周眼放金光,作勢就要把志願填了且不服從調劑。全家人一緻決定剝奪我提出建議的權利,并通過各種威逼利誘、恐吓威脅終于把小周的殡儀夢想扼殺于搖籃之中。
可強權暴政鎮壓不住一顆紅彤彤的向往個性的心,最終小周還是報考了一個極其冷門的專業——北外的豪薩語專業。
“先不說這個專業多冷門,就這個名字,說出來,酷不酷?”
“酷酷酷!”我連聲附和。
可後來我才知道這真的是一門極其冷門極其古老的語言,甚至古老到了仍在大量使用象聲詞的程度。比如鴨子就叫“啊呱呱”(agwagwa),兩隻鴨子就叫“啊呱呱啊呱呱”。感歎這孩子真有個性之餘,我也在内心暗暗替小周祈禱,畢業千萬别去了當地的養鴨場工作。實在無法想象他用豪薩語驕傲地給客戶介紹“我們公司年産50萬隻鴨子”會是怎樣磅礴的景象。
今天的文章跟鴨子無關,我隻想談一談語言。
文章目錄
愛TA,就給TA足夠的空間
拼接文本是把雙刃劍!
也許……您寫死了标點符号 囧
即便您的客戶是馮紹峰,也不要随便把人家的名字倒過來寫
小心使用大小寫轉換
語言的複雜性,遠遠不止如此
不要過度限制使用者的輸入
你真的了解搜尋和排序嗎?
好的注釋是i18n檔案的靈魂
據統計世界上已存在的語言多達5000多種,即便不考慮豪薩語這種冷門語言,被廣泛使用的語言也有幾十種。把溫暖(chǎn pǐn)灑滿人間是每一個程式員的夢想,可又不能指望每一個客戶都使用英語,這時便産生了軟體Globalization這一概念。
作為SAP九大Product Standards(産品标準)之一的Globalization,不單單是指文本的翻譯,還包含支援多貨币、支援各國相關法律、支援不同國家業務流程等要求。為了滿足這一系列的标準,不但需要開發人員有過硬的業務知識,有時還需要花大把精力實作一些枯燥複雜的功能(比如為滿足阿拉伯語,需要UI支援從右向左的排布)。
但是在産品的設計和開發初期,如果開發人員願意花費一些精力去留心一些方面,那麼就可以大大降低未來出現Globalization問題的機率。下面我們就列舉SAP UI5開發的幾個和Globalization相關的例子,特别感謝Ray Ding和Vicky Chen同學對文中部分内容的研究。
在UX設計UI布局的初期,就應該将Globalization納入考慮,而這時最容易引發的問題就是空間不夠。一套布局在英文環境看上去美輪美奂,并不代表在其他語言環境中也有很好的使用者體驗,有時甚至會影響到可用性。比方說下面這個“添加”按鈕,在英文環境下看起來還不錯,但是切換到了德語就會讓人完全看不懂。
大多數情況下,一個英文單詞的長度是短于其他語言相同意義的單詞。而我們大多數的産品都是以英語作為第一版語言進行開發的。當使用者已經習慣了英語的布局之後,這時再因為引入其他語言而大幅度更改頁面布局,将會是非常痛苦的事情。是以,請永遠記得給文本足夠的空間。
可是多大才算足夠呢?幸運的是我們有一個工具叫做Text Space Calculator。它能夠根據您提供的英文文本來推薦出一個能夠滿足90%以上情況的長度。感興趣的同學可以看一下它的說明文檔,也許您會發現它背後的邏輯非常簡單粗暴,但是的确能夠幫助到我們。同時它還有一個Bridge的版本,您可以在Bridge中搜尋“UI text space calculator”然後把它添加進您的應用。
在很多的應用場景下我們會使用到大小寫轉換,比如字元串對比、字元串排序等,偶爾也會用在拼接文本中。而不恰當的使用大小寫轉換則會引起潛在的Globalization問題。下面我們通過一個例子加以說明。
假設我們現在有一個客戶維護頁面,使用者可以建立或更改客戶的基本資訊,比如姓名,電話号碼,郵箱等。頁面上會對每個字段的格式加以校驗,當校驗不通過時則會對彈出類似這樣的警告:“The field email does not match the format.”
我們當然可以給每一個字段都維護這樣一條極其類似的警告,但這時“聰明”的我們發現在i18n檔案中已經維護了各個字段的标簽,是以我們是不是可以隻維護一條警告,然後将這些标簽通過參數傳進去呢?想一想還真是有點小激動呢,于是說幹就幹。
作為嚴謹的工程師,我們當然考慮到了把字段标簽傳入Error Message的時候,要轉換成小寫,這樣才符合英語的文法!可是卻不知道這樣卻為日後引入Globalization埋下了隐患。并不是所有的語言都與英語有着相同的大小寫規範,比方說在德語中任何名詞在任何情況下都要保持首字母的大寫,上面這段代碼在德語環境下無疑成了畫蛇添足。
還是從一個案例開始,假設産品經理叫我們實作一個購物車,當使用者之前添加的某種屬性的某種商品被下架了之後,提醒使用者商品不可用。
有了上面的種種教訓,我們終于學會了要把文本中的标點以及順序資訊統統寫入i18n檔案,也不能随意更換大小寫。是以我們想出了這樣的提示資訊:
您在實際工作中,是否也才踩過一些和Globalization相關的坑呢?歡迎留言,說出您的故事。感謝閱讀。
更多閱讀