Delphi做多國語言

2021-06-01 13:11:54 字數 3912 閱讀 1052

傳說中的delphi做多國語言有很多種,

個人我只會這一種, 小弟的初學淺薄怕忘記。所以也就記下來了。

假設有語言檔案  multilingual.ini     內容如下:

[language]

current=4

[中文]

name=名字

time=時間

language=語言

china=中國

[繁體]

name=名字

time=時間

language=語言

china=中國

[english]

name=name

time=time

language=language

china=china

[japanese]

name=の名前

time=タイム

language=言語

china=中國の

[russian]

name=имя

time=время

language=язык

china=китай

然後只要讀出用英文對應的語言即可. delphi原始碼如下:

unit unit1;

inte***ce

uses

windows, messages, sysutils, variants, classes, graphics, controls, forms,

dialogs, stdctrls, db, adodb, grids, dbgrids, dbclient;

type

tform1 = class(tform)

combobox1: tcombobox;

label1: tlabel;

procedure formshow(sender: tobject);

procedure combobox1change(sender: tobject);

private

public

adoquery: tadoquery;

adoconnection:tadoconnection;

end;

varform1: tform1;

implementation

uses inifiles;//讀寫ini要加入的

//這是我寫的乙個讀寫ini 檔案的子函式  只要呼叫就行了

//關聯ini要用絕對路徑

function multilingual(rw:boolean; pathini:string;  titl:string;   keywords:string;  price:string ;method:string):string;//多國語言

var_ini:tinifile;

str:string;

tstrs:tstrings;

begin

if not fileexists(pathini) then

end  else

begin

//讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀讀

if  method = 'readstring' then

begin

str:=_ini.readstring(titl,keywords,price);

//得到指定小節名,關鍵字的指定值 最後乙個為預設值

endelse

begin

tstrs:=tstringlist.create;

if method = 'readsections' then

begin

_ini.readsections(tstrs);

//得到所有小節名

endelse if method = 'readsection' then

begin

_ini.readsection(titl,tstrs);

//得到指定小節中的所有關鍵字名

endelse if method = 'readsectionvalues' then

begin

_ini.readsectionvalues(titl,tstrs);

//指定小節的所有行(包括關鍵字、=、值)

end;

str:=tstrs.text;

tstrs.free;

//釋放

end;

endelse

//寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫寫

begin

if method='writestring' then

begin

_ini.writestring(titl,keywords,price);

endelse

if method='writeinteger' then

begin

// _ini.writeinteger(titl,keywords,變數或者整數數值);

endelse

if method='writenbool' then

begin

// _ini.writenbool(titl,keywords,變數或者true/false);

endelse

if method='deletekey' then

begin

_ini.deletekey(titl,keywords);

//刪除關鍵字

endelse

if method='erasesection' then

begin

_ini.erasesection(titl);

//刪除小節

end;

end;

result:=str;

_ini.free;

//釋放

//renamefile('multilingual.ini','multilingual.res');//原名->新名 

end;

end;

procedure tform1.formshow(sender: tobject);  

//在開始時讀入所對應的語言

varpaths:string;

languagestr:string;

i:integer;

for i:=1 to length('language') do

//刪單詞

languagestr[i]:=char(' ');

combobox1.items.text:=trim(languagestr);

//得到全部語言

combobox1.itemindex:=strtoint(multilingual(true,paths,'language','current','字元值預設','readstring'));

//得到當前語言

combobox1change(self);

end;

procedure tform1.combobox1change(sender: tobject);

//通過 combobox1 控制項可以選擇加入語言

varpaths:string;

label1.caption:=multilingual(true,paths,combobox1.text,'language','字元值預設','readstring');//得到所要的語言

multilingual(false,paths,'language','current', inttostr(combobox1.itemindex),'writestring');

//修改當前語言

end;

end.

個人認為這樣做的好處可以讓別人新增他們自己的語言,還可以加入我們中國不同的方言

用讀寫ini檔案來加入多國語言,方便,沒有抖動,沒有閃爍,簡單

移植多國語言

二 移植zi輸入法 1 開啟zi開關 1 檔案 make ztenc26 07b gprs.mak 修改輸入法為mmi zi input method mmi zi input methods none,mmi t9,or mmi zi 2 在mmi features.h裡面開啟相應的zi語言輸入法...

Rails多國語言

下載 zh tw.yml 到 config locale 下,就有預設的正體中文翻譯 config environment.rb 的 config.i18n.default locale zh tw 可以修改預設的語系 參考投影片 rails i18n 使用方法 i18n.t 在 view 中可以直...

Qt 多國語言

1 建立語言檔案 開啟.pro檔案,加入以下 translations cn.ts 工具 外部 qt語言家 更新翻譯,將生成翻譯檔案cn.ts 2 編輯翻譯檔案 啟動linguist qt語言家 開啟cn.ts,然後進行編輯,主要是將源文對應的譯文填寫上,最後儲存 3 部署翻譯檔案 工具 外部 qt...