簡體   English   中英

Lazarus:i18n 不翻譯應用程序

[英]Lazarus: i18n doesn't translate the application

我用德語編寫了一個 Lazarus 應用程序,現在我想把它翻譯成英語。 所以我在項目設置中激活了 i18n 並檢查了“update.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;

但是當我嘗試實際切換語言時,什么也沒有發生。 我認為原因可能是所有翻譯字符串都只是標簽的標題,所以我在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也始終以德語顯示(但請注意,顯示的德語文本)。

為什么會這樣以及如何解決?

謝謝!

以下是我“解決”問題的方法:我完全刪除了 i18n 並再次執行所有操作(以完全相同的方式)。 出於某種原因,它現在確實有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM