Lazarus:i18n 不翻译应用程序

Posted

技术标签:

【中文标题】Lazarus:i18n 不翻译应用程序【英文标题】:Lazarus: i18n doesn't translate the application 【发布时间】:2021-07-05 13:18:12 【问题描述】:

我用德语编写了一个 Lazarus 应用程序,现在我想将它翻译成英语。所以我在项目设置中激活了 i18n 并检查了“更新 .po 文件...”。然后,我创建了一个单元uTranslationStrings 并将resourcestring example = 'Beispiel'; 放在implementation 之前。我确保在我的主机中useuTranslationStrings, 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;

但是当我尝试实际切换语言时,什么也没有发生。我认为原因可能是所有翻译字符串都只是标签的标题,所以我在uMain中添加了以下代码:

Application.MessageBox(PChar(i18nWarning),PChar(i18nError),MB_ICONERROR);

以及uTranslationStrings中的以下代码:

resourcestring
  // other strings
  i18nWarning = 'Warnung! Deine Eingabe ist inkorrekt!';
  i18nError = 'Fehler';

但即使我以program.exe --lang en 启动程序,MessageBox 也始终以德语显示(但请注意,德语文本 显示)。 p>

为什么会这样以及如何解决?

谢谢!

【问题讨论】:

【参考方案1】:

这是我“解决”问题的方法:我完全删除了 i18n 并再次执行所有操作(以完全相同的方式)。出于某种原因,它现在确实有效。

【讨论】:

以上是关于Lazarus:i18n 不翻译应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Aggrid vue i18n:更改语言后不刷新网格标题名称未翻译

无法在无法使用i18n的角度7中进行文件本地化/翻译

使用 App Engine 进行 Go 的 I18n 策略

由于架构不匹配,将静态库从 Xcode 链接到 Lazarus 应用程序失败

如何使用 i18n 和 rails 配置语言环境别名?

Django / i18n:如何在模板中转换方法结果?