[QLang] 如何在用户更改语言时变更动态添加内容的值

我们知道,QLang 可以承担绝大多数情况下的自动翻译任务,但是,如果您的有些内容是动态添加的,那么很显然,QLang 就需要您的人工干予以实现准确的翻译。

比如,我们在窗体上放置一个 TLabel,在 Form 的 OnCreate 里为其动态赋值,示例代码如下:

procedure TForm1.FormCreate(Sender:TObject);
begin
...
Label1.Caption:=_('Hello,world');
...
end;

这样子,程序在启动时,设置了 Label1 的标题为 Hello,world 的当前语言翻译,如果用户变更了语言,我们这里有两个选择:

  1. 让用户重启程序,以便使用新的语言显示内容;
  2. 使用 LangManager.AddListener 添加一个语言变更事件的响应,在其中加入响应代码:
    ...
    LangManager.AddListener(DoLanguageChanged);
    ...
    
    procedure TForm1.DoLanguageChanged(ASender:TObject);
    begin
    Label1.Caption:=_('Hello,world');
    end;
    ...

    注意一点,在当前窗体释放前,应调用 LangManager.RemoveListener来移除对语言变更事件的响应。

经过上述的处理,你的程序已经能完美的应对用户语言切换操作了。

 

分享到: