自由軟體國際化與在地化:
Frank從遊戲切入,指出過去的軟體,遊戲,和程式,要能顯示中文,必須處理非常多的事情,包含訊息的修改,字體的解析度,與編碼的問題...等等
除了中英文的訊息之外,還有
- 數字表示法: 歐洲的1000是"1.000" ,1是"1,000"
- 年分表示法: 西元年, 民國年....
- 日期表示法: dd/mm/yyyy, mm/dd/yyyy, yyyy/mm/dd
- 以及不同的度量衡與貨幣...等等
為了處理上述的問題,發展了多國語言化的概念
- 將原始程式與訊息分開,獨立出訊息編成索引後存成一個檔案
- 翻譯不同語言的時候只要將該語言加入檔案的索引
- 原始程式只要根據某個語言的索引來顯示相對應的訊息即可
將程式中的語言,文化,區域環境相關的部分獨立出來,因此程式撰寫的時候不需考慮各個地區的細節,而是在執行期的時候根據當時的環境呈現
Linux中文化始祖 - CLE
Chinese Linux Extension
延伸: 修改程式內容,加入中文支援,重新編譯
自由軟體很重要的文化,就是可以與原始開發團隊溝通,將自己做的東西貢獻回去,因此CLE與原始程式的開發團隊合作,加入國際化的架構
自由軟體的國際化 - Gettext
- 原理: 利用對訊息的包裝,將訊息抽出來集中在一個檔案裡
- printf(gettext("My name is %s.\n", my_name);
- 取出來的原始訊息檔稱為pot
- 翻譯者只需要將pot檔的訊息翻譯成不同的語言,每個語言存成一個po檔
po檔分成檔頭與條目兩個部分
- 檔頭存放po檔與相對應的pot檔的相關訊息,包含產生時間,最後翻譯者等等,還包含一個很重要的資訊: 複數形的定義( plural-forms),不同國家的複數形都不一樣,有些國家的複數形很複雜
- 條目分成幾個部分:
- 旗標
- 註解: 用來區分相同訊息但不同意義,以彈珠台舉例"left"可以翻為左側或是剩餘
- 原始訊息
- 翻譯訊息
ezgo 打包技術:
ezgo的目標客群是針對沒有接觸過自由軟體的人,經由ezgo來了解自由軟體世界的面貌
ezgo是一個客製化的distribution,擁有自己的品牌,卻不是一個獨立的distribution
目前的做法:
- 盡可能遵循標準機制,並進行自動化: 例如選單
- 採用外加設定檔的方式,不覆蓋現有的檔案
- 做成package: deb, rpm, ...
- 遵循Debian規範,遵循規範可以省下很多工作
ezgo12分成三個版本,
A版: All in one,包含所有東西,以推廣為主
B版: Basic,只有基本的桌面,其他軟體依自己需求安裝
C版: Classroom,包含許多教學軟體,並移除遊戲,提供給老師使用
沒有留言:
張貼留言