我们知道,QLang 可以承担绝大多数情况下的自动翻译任务,但是,如果您的有些内容是动态添加的,那么很显然,QLang 就需要您的人工干予以实现准确的翻译。
比如,我们在窗体上放置一个 TLabel,在 Form 的 OnCreate 里为其动态赋值,示例代码如下:
procedure TForm1.FormCreate(Sender:TObject); begin ... Label1.Caption:=_('Hello,world'); ... end;
这样子,程序在启动时,设置了 Label1 的标题为 Hello,world 的当前语言翻译,如果用户变更了语言,我们这里有两个选择:
- 让用户重启程序,以便使用新的语言显示内容;
- 使用 LangManager.AddListener 添加一个语言变更事件的响应,在其中加入响应代码:
... LangManager.AddListener(DoLanguageChanged); ... procedure TForm1.DoLanguageChanged(ASender:TObject); begin Label1.Caption:=_('Hello,world'); end; ...
注意一点,在当前窗体释放前,应调用 LangManager.RemoveListener来移除对语言变更事件的响应。
经过上述的处理,你的程序已经能完美的应对用户语言切换操作了。