餐飲控菜系統遇到的多國語系問題

 

 

支援多國語言有許多方法,像是透過ini或是直接在資料庫。

昨天搞了餐廳用的廚房控菜系統後,今天再讓它支援多國語系。因為介面上不多,所以使用ini方式,不過如果使用Delphi7開發的朋友都會知道,遇到不是ansi編碼的ini file會掛掉。

XE後能使用TMemIniFile取代TIniFile,就能克服儲存成unicode讀不出來的問題了!

英 繁 簡

Delphi POS餐飲系統開發支援多國語言作法

開發餐飲POS或是其他系統,如果想打入國際市場的話,都會考量多國語系的問題,大部份就是使用mapping的方式。

在Delphi裡面的做法也很簡單~

先取得form上面的元件數(ComponentCount)

接下來用一個迴圈去比對即可。

資料表也可以開成一個

表單名稱、元件名稱、語言1、語言2、語言3的欄位…

不過因為裡面使用了infopower的wwdbgrid元件,寫在formcreate或formshow都抓不到值,後來是放到FormActivate才順利抓到

以下提供簡單的範例

 

var
  sFormName:String;
  i:integer;
begin
  sFormName:= Self.Name;  // 表單名稱
  for i:=0 to self.ComponentCount -1 do begin
    if Components[i] is TLabel then begin
        if (TLabel(components[i]).Caption <>'') then begin
          TLabel(components[i]).Caption := 取得語系....;
        end;
    end; 
    if Components[i] is TButton then begin
        if (TButton (components[i]).Caption <>'') then begin
          TButton (components[i]).Caption := 取得語系....;
        end;
    end; 
  end;
end;

wwDBGrid的話關鍵有:
s:= TwwDBGrid(Components[i]).DataSource.DataSet.Fields[j].FieldName;
TwwDBGrid(Components[i]).ColumnByName(s).DisplayLabel
TwwDBGrid(Components[i]).ColumnByName(s).GroupName