Lazarus:i18n 不翻译应用程序
Lazarus: i18n doesn't translate the application
我已经用德语编写了一个 Lazarus 应用程序,现在我想把它运行slate 成英语。所以我在项目设置中激活了 i18n 并选中了“更新 .po 文件...”。然后,我创建了一个单元 uTranslationStrings
并将 resourcestring example = 'Beispiel';
放在 implementation
之前。我确保在我的主单元中 use
uTranslationStrings, DefaultTranslator, LCLTranslator
。然后,我 运行 应用程序并在 Poedit 中打开 projectXY.po
文件。我运行将所有内容翻译成英文并保存为projectXY.en.po
。我为德语语言环境做了同样的事情。此外,我添加了一个语言菜单条目,让用户可以在德语和英语之间切换。
procedure TMainForm.MenuDeutschClick(Sender: TObject);
begin
SetDefaultLang('de');
end;
procedure TMainForm.MenuEnglischClick(Sender: TObject);
begin
SetDefaultLang('en');
end;
但是当我尝试实际切换语言时,没有任何反应。我认为原因可能是所有的 t运行slation 字符串只是标签的标题所以我在 uMain
:
中添加了以下代码
Application.MessageBox(PChar(i18nWarning),PChar(i18nError),MB_ICONERROR);
和 uTranslationStrings
中的以下代码:
resourcestring
// other strings
i18nWarning = 'Warnung! Deine Eingabe ist inkorrekt!';
i18nError = 'Fehler';
但是 MessageBox
始终以德语显示,即使我使用 program.exe --lang en
启动我的程序(但请注意德语文本 是 显示).
为什么会这样,如何解决?
谢谢!
以下是我“解决”问题的方法:我完全删除了 i18n 并重新执行了所有操作(以完全相同的方式)。出于某种原因,它现在确实有效。
我已经用德语编写了一个 Lazarus 应用程序,现在我想把它运行slate 成英语。所以我在项目设置中激活了 i18n 并选中了“更新 .po 文件...”。然后,我创建了一个单元 uTranslationStrings
并将 resourcestring example = 'Beispiel';
放在 implementation
之前。我确保在我的主单元中 use
uTranslationStrings, DefaultTranslator, LCLTranslator
。然后,我 运行 应用程序并在 Poedit 中打开 projectXY.po
文件。我运行将所有内容翻译成英文并保存为projectXY.en.po
。我为德语语言环境做了同样的事情。此外,我添加了一个语言菜单条目,让用户可以在德语和英语之间切换。
procedure TMainForm.MenuDeutschClick(Sender: TObject);
begin
SetDefaultLang('de');
end;
procedure TMainForm.MenuEnglischClick(Sender: TObject);
begin
SetDefaultLang('en');
end;
但是当我尝试实际切换语言时,没有任何反应。我认为原因可能是所有的 t运行slation 字符串只是标签的标题所以我在 uMain
:
Application.MessageBox(PChar(i18nWarning),PChar(i18nError),MB_ICONERROR);
和 uTranslationStrings
中的以下代码:
resourcestring
// other strings
i18nWarning = 'Warnung! Deine Eingabe ist inkorrekt!';
i18nError = 'Fehler';
但是 MessageBox
始终以德语显示,即使我使用 program.exe --lang en
启动我的程序(但请注意德语文本 是 显示).
为什么会这样,如何解决?
谢谢!
以下是我“解决”问题的方法:我完全删除了 i18n 并重新执行了所有操作(以完全相同的方式)。出于某种原因,它现在确实有效。