[英]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.