Gracias por el tutorial.
Yo para mis proyectos me he creado una minilibrería de funciones que me hace la función de traductor en unicode.
Aquí os dejo una función de autodetecta los ficheros .ini que sean de idioma que haya en un directorio determinado de la aplicación.
Código Delphi
[-]
type
TIDI_omas=record
idioma:widestring; ID:widestring; fichero:widestring; end;
var
IDI_numero:word=0; IDI_idioma_actual:word=0; IDI_idiomas:array of TIDI_omas;
var
CH_directorio:widestring; IDI_cual_def:integer=0;
procedure IDI_pre_carga_idiomas;
var
f:tinifile;
sr: TSearchRec;
FileAttrs: Integer;
st,st1,st2:string;
sw
widechar;
p
ointer;
begin
IDI_numero:=0;
setlength(IDI_idiomas,0);
if fileexists(CH_directorio+'LANG\IDI_esp.ini')=false then
begin
f:=tinifile.Create(CH_directorio+'LANG\esp.ini');
try
f.WriteString('GENERAL','IDG','IDENTIFICADOR_APP');
f.WriteString('GENERAL','ID1','Español');
f.WriteString('GENERAL','ID2','ESP');
finally
f.Destroy;
end;
end;
st:=CH_directorio+'LANG\IDI_*.ini';
fileattrs:=faReadOnly+faHidden+faSysFile+faArchive+faAnyFile;
FindFirst(st,fileattrs,sr);
repeat
sw:=pchar(CH_directorio+'LANG\'+sr.Name);
f:=tinifile.Create(sw);
try
st:=f.ReadString('GENERAL','IDG','');
st1:=f.ReadString('GENERAL','ID1','');
st2:=f.ReadString('GENERAL','ID2','');
finally
f.Destroy;
end;
if (st='IDENTIFICADOR_APP')and(st1<>'')and(st2<>'') then
begin
IDI_numero:=IDI_numero+1;
setlength(IDI_idiomas,IDI_numero);
IDI_idiomas[IDI_numero-1].idioma:=st1;
IDI_idiomas[IDI_numero-1].ID:=st2;
IDI_idiomas[IDI_numero-1].fichero:=sw;
end;
until FindNext(sr)<>0;
FindClose(sr);
IDI_pre_carga_menuitem;
if IDI_cual_def>=0 then
begin
IDI_cambia_idioma(IDI_cual_def);
end;
end;
Espero que os sirva. Luego solo hay que crear el procedimiento "IDI_cambia_idioma" y leer las cadenas del fichero de idioma asignado y cambiarla a los componentes y cadenas del programa.