Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
UseLanguage ('RU');
Retranslatecomponent(self);
Прозрачно более некуда и здесь — аж один юнит кода. Тут может его больше чем у Вас, но и возможностей больше. Те же домены, множественное число и т.д.//**************************************************
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;
s:=_('Apple');
2. Перевод не может менять шрифт, это всего лишь перевод, текст на входе — текст на выходе. Как выводить переведенный текст должно быть реализовано уже в Вашем приложении, потому как это уж очень кастомизировано у каждого
Но по крайней мере в gorme данные из строк подобных (s:=('Apple'); ) не показывались. И соответственно не переводились.
Менять структуру программы особой возможности нет.
DxGetText — GNU Gettext for Delphi and C++ Builder