最近專案處理多語系滿困擾的,想請教各位前輩
我是寫 Java,所以多語系是用 ResourceBundle 讀取 .properties 檔案
不過這應該影響不大?
key 通常是小寫英文,所以會遇到以下困難
雖然這些情形可以解決,但會讓 key 變得又長又不直觀
label.Today_Price=Today Price
label.Today_price=Today price
label.today_price=today price
label.Today_Price_Dollar=Today Price $
label.Monday1=星期一
label.Monday2=週一
label.Price1=價格
label.Price2=價錢
有意義的話,內容改 key 也必須跟著改否則會越來越困惑
而改 key 就意味著要改程式
label.column.today=Yesterday
無意義的話則是同樣的詞在不同地方都要定義
如果改動要改很多地方
label.sectionA=Today
label.sectionB=Today
label.sectionC=Today
例如時間會有:上線時間、啟用時間、執行時間...
一旦「時間」改為「日期」也是一堆地方要改
當然也可以拆分為單詞再合併,但那也是另外一種工
.properties 檔案
我好像也只能忽視,繼續新增我的...
總結來說
會希望程式能更好維護、更好擴展
但多語系這塊似乎是個難解的障礙
其實這跟「多語系」沒什麼關係
而是跟「Scope」比較有關係
以程式裡宣告變數為例
目前的scope是「整套系統」,就像是 global variable,自然會有很多困擾
只要找到適合的scope
,把 key 區隔開來即可
舉最簡單的例子來說:用 page id/function id
首頁的 weekday 顯示為「星期一」-定義為 P000_Weekday
訂單頁的 weekday 顯示為「週一」-定義為 P001_Weekday
匯出訂單的 weekday 顯示為「周一」-定義為 F001_Weekday
這樣子就不用管以後她媽媽要嫁給誰了
還有另一種寫法提供參考
P000_MENU_ITEM1
P000_MENU_ITEM1-1
P000_MENU_ITEM2
P000_MENU_ITEM2-1
P000_MENU_ITEM2-2
P001_LABEL_01
P001_LABEL_02
P001_BUTTON_01
P001_BUTTON_02
團隊開發或接手前人維護的程式是這樣子的,初期為了趕進度,溝通時間不足或省時間各作各的,最後這個樣子很正常。
不知道這系統的生命週期到那裡了?如果已在維護階段而且離大改版還有一段時間,來作這件事就還滿有意義的。如果您們團隊有例會,建議您可以在會議中提出來,由主管來判斷是否有需要去作這部份的改善。