Библиотека, позволяющая внедрять качественную локализацию в продукт общепринятым способом, работает так:
пишем код, почти как обычно;
запускаем приложение, сканирующее исходники на предмет текста, который нужно перевести;
генерим РО файлы;
переводим их в любом удобном редакторе;
компилим РО файлы в МО файлы;
на выбор либо внедряем перевод прямо в ЕХЕ либо кладём МО файлы рядом;
наслаждаемся результатом — язык приложения можно менять даже без перезапуска.
Чем этот способ крут:
минимум изменений в коде приложения;
никаких DLL и сторонних компонентов, всё OpenSource;
РО файлы — достаточно распространенный инструмент перевода, что значит перевод можно даже отдать на аутсорс, и переводчик знает что с этим делать;
перевод всего — формы, фреймы, месседжбоксы, и всё что угодно;
корректный перевод слов в множественном числе в любом языке;
полная поддержка Unicode.
Подробное описание установки работы с пакетом
Перевод надо запускать по событию OnShow главной формы, а не OnCreate.
Тогда можно перебором всех форм всех их перевести.
Как-то так для Дельфи
Code: Select all
//**************************************************
procedure LangIni();
var
i: integer;
begin
for i := 0 to Application.ComponentCount - 1 do
begin
if (Application.Components[i] is TForm)
then translatecomponent(application.Components[i]);;
end;
end;
//**************************************************
procedure LangChange();
var
i: integer;
begin
for i := 0 to Application.ComponentCount - 1 do
begin
if (Application.Components[i] is TForm)
then Retranslatecomponent(application.Components[i]);;
end;
end;
procedure TForm0.FormShow(Sender: TObject);
var
i: integer;
begin
if RadioGroup1.ItemIndex=0 then
begin
LangC:='EN';
UseLanguage ('EN');
end
else
begin
LangC:='RU';
UseLanguage ('RU');
end;
LangIni();
end;
Языков можно добавить сколько угодно.