1. 程式人生 > >遊戲實現多語言版本(國際化)

遊戲實現多語言版本(國際化)

公司從今天開始放假,希望抽年假的時間,把這在新專案中所做的,分模組做個整理。
此時我正在G1152次高鐵上,寫這篇部落格,回去也沒有網,要等年後來了才能發。


自從換了專案組之後一直都很忙,沒什麼時間寫blog了,目前這個專案是自己挑的,希望多花點時間,把它做好。
因為專案還沒有對外公開,關於專案就不透露資訊,只能說一些實現方式。


到新專案之後第一個著手做的就是多語言版本,也就是國際化。
多語言的實現最基本的實現方式就是根據id去讀語言配置,不同的語言新建一個語言配置表。
細分下來,分了如下三個部分:


一 UI
UI是指在UI編輯器中的一些文字,比如最常用的按鈕上面的文字,標籤上面的提示等等。
我的做法是:
1 根據UI檔名和空間名,配置對應的語言ID;
2 然後在根據ID去讀對應的文字;
3 在介面建立完成之後將控制元件中的內容設定成2中讀取到的文字。


二 配置表
配置表主要是指道具表,裝備表等,其中含有的一些文字,如裝備名稱,裝備名稱等。
這個也可以用上面類似的方法實現,在需要多語言的專案配ID,然後就根據ID再去讀文字。
但策劃認為這樣不直觀,我們換了另一種方式。
1 在配表中需要做多語言的相中加一個標記,如*;
2 讀表時如果是中文版本就直接取對應的值;
3 如果是其它語言則將取出來的中文作為key,然後去語言表中取值。


個人覺得這種做法不好,這樣不僅讓多語言的流程不同意,而且在其它語言中,必須有中文在裡面。
另外還可能導致key重複,因為在同樣的中文,在不同的語言中可能翻譯不一樣,比如成功,可能是success,也可能是successful,另外動詞還有不同時態。
所以不推薦上面這種做法。


三 錯誤資訊
錯誤資訊就是客戶端隊使用者操作的一些提示,如角色名不能為空,或者服務端返回的一些資訊,如登陸成功或者密碼錯誤等。
這種處理就是配置一個錯誤碼錶,在互動的過程中都使用錯誤碼,在最終顯示的時候再去讀表就可以了。


因為現在的多語言並沒有實際的做起來,只是把框架做了,具體效果還未知,如果將來有改動再來更新。

換乘有點時間,找了個咖啡廳,把這個發了,附照片兩張: