close

近來所開發的系統都需要面對來自五湖四海的用戶,所以系統都需要提供多語言的界面,讓用戶選擇他想要的。這裏我就簡單說個思路,讓大家考一下。

 

思路如下:

  1. 系統內所有文字都用英文,因為英文在各語言版本的 Windows、各種數據庫內的編碼都相對統一,不容易出現亂碼。
  2. 建一個作為字典數據表。
  3. 定義一個全局變量作為「目標語言」,讓用戶在登戶時選擇,或存到用戶設定表中。
  4. 以「目標語言」為主鍵,到字典表中找出對應的翻譯
  5. 替換控件上的文字

 

-- 數據表基本架構

create table dictonary (

language_id varchar(10),  -- e.g. 01:英文, 02:中文, 03:日文

source_text varchar(255), -- e.g. Sales Order、Create User

target_text varchar(255)  -- e.g. 銷售單、創建人

)

-- 數據例子

language_id source_text target_text
01 Sales Order Sales Order
02 Sales Order 銷售單
03 Sales Order 販売注文

 

 

程序步驟:

  1. for loop 讀取 This.Control[]  的每一個控件
  2. 以「control.text」 取得控件﹝e.g. 按鈕﹞上的文字
  3. 以文字到數據表裏找出對應的翻譯,如果用戶選了「02:中文」,就以按鈕上的「Sales Order」去找「 language_id = 02 and source_text = Sales Order
  4. 以上表為例,結果會找到「銷售單」,要是找不到就反饋原來的 「Sales Order」,進階一點還可以自動把這行插到字典表中,你偶而檢查一下就可以知道哪些翻譯沒做好,需要補充了。
  5. 把按鈕上的文字替換成「銷售單」,如此類推,把畫面上所有的控件都做一遍。

 

這方法其中一個好處就是翻譯部份可以交給別人去做,程序員專心寫代碼就好了,字典表可以交給文職人員去做,做好導入到數據庫中就可以直接使用了。當然,直接給用戶做個維護界面,以後你就可以放手不管了

另外,PowerBuilder 有繼承的概念,這些代碼你寫到「祖先」就好了,往後每個繼承出來的子窗體都可以直接引用,不必再寫一遍

 

 

 

 

 

arrow
arrow
    文章標籤
    PowerBuilder 程式開發
    全站熱搜
    創作者介紹
    創作者 過時程式員 的頭像
    過時程式員

    過時程式員的部落格

    過時程式員 發表在 痞客邦 留言(0) 人氣()