是否有任何人从用户的语言环境推断出正确的布局方向(右边和右边)。
我对阿拉伯语(沙特阿拉伯)的当地应用感到麻烦。 现场检测,并装载和安装适当的电梯,两者都是工作罚款。 (案文看上去的是北草坪!) 我提出的问题是,没有从当地制度中推断出全球布局方向。
The documentation for QApplication:layoutDirection states (with mylight):
该财产对这项申请持有缺省指示。 在系统启动方面,缺省布局取决于应用<_em>。
然而,情况并非如此:布局定在<>。 Qt:LeftToRight,不论当地制度如何。 我提出了一个显示问题的试验方案。 其主要职能是:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslator translator;
translator.load(":/layoutDirection.qm");
a.installTranslator(&translator);
Window w;
w.show();
return a.exec();
}
它还有一个资源档案,其中载有必要的图像和翻译档案。 定义如下:
<RCC>
<!-- Arabic resources. The arrow points to the left. -->
<qresource prefix="/" lang="ar">
<file alias="arrow.png">images/arrow-rtl.png</file>
<file alias="layoutDirection.qm">translations/layoutDirection_ar.qm</file>
</qresource>
<!-- English resources. The arrow points to the right. -->
<qresource prefix="/" lang="en">
<file alias="arrow.png">images/arrow-ltr.png</file>
<file alias="layoutDirection.qm">translations/layoutDirection_en.qm</file>
</qresource>
</RCC>
温得阶级的源代码为三维,相应的档案为not规定了任何植被的布局。 窗口在英语(美国)地方运行时,认为:
在阿拉伯语(沙特阿拉伯)地方,它喜欢:
你可以看到,对座标的翻译是正确的,arrow的图像正确,这意味着正确的资源被装上。 布局方向是错误的:它应当反映英文布局。
<>说明>。 自2006年以来 我不知道阿拉伯语,例如谷歌译。 如果不正确,我会抱歉。
Solution
https://stackoverflow.com/users/66522/artyom> Artyom 答案是正确的,最终导致我发现高层次的植被如何从QApplication案确定其布局。 https://doc.qt.io/qt-5/internationalization.html>rel=“nofollow noreferer”>Internationalization with Qt 手册说:
盖特本身包含数千条插图,还需要翻译成你所针对的语言。 您将在翻译库找到一些翻译文件。
QApplication Code也有有趣的方法:
static bool qt_detectRTLLanguage()
{
return force_reverse ^
(QGuiApplication::tr("QT_LAYOUT_DIRECTION",
"Translate this string to the string LTR in left-to-right"
" languages or to RTL in right-to-left languages (such as Hebrew"
" and Arabic) to get proper widget layout.") == QLatin1String("RTL"));
}
在翻译“QT_LAYOUT_DIRECTION”号时,申请将自动发现其布局方向,所有工作都只是罚款: