我有下面的QML文档(为了简化)-
Item {
Label { // Label1
text: qsTr("Label1")
}
Label { //Label2
text: qsTr("Label2")
}
}
我有一个C++类,它搜索翻译QM文件,并在用户更改应用程序语言时调用installTranslator。翻译工作正常。
要求是,如果当前语言是韩语或中文,我需要更改Label1
的字体,但Label2
的字体不应更改。如果语言不是这两种语言之一,则Label1
和Label2
的字体应该相同。
你能告诉我,我如何检测当前的语言是韩语还是汉语,当发生这种情况时,我们如何才能得到语言已经改变的信号?
1条答案
按热度按时间ecbunoof1#
我们可以用
qsTr()
来解决这个问题。例如,我们可以引入
qsTr("western")
,默认为"western"
。对于中文,(日语)和韩语,您可以使用Linguist将qsTr("western")
更改为,比方说,"cjk"
。然后,我们可以使用它来帮助在默认font.family
和亚洲字体家族之间切换,仅针对Label1而不是Label2。如果你想在多个地方应用这个逻辑,你可以重构一些你可以绑定到的属性:
[编辑]
根据您最近的评论,另一个解决方案是您可以有一个LocalizedLabel,例如:
然后,您可以在需要时使用
LocalizedLabel
。这意味着,你可以默认为“Arial”或选择一个特定的字体家族,并通过以下方式管理它:(1)一个可重用的LocalizedLabel组件,(2)通过Linguist管理字体家族。