Qt 翻译文件 (qm) 信息

标签 qt translation

我的应用程序有一些 qm 文件。 (pr_en.qm,pr_ru.qm)。我可以加载它们

translator.load(fileName, '.');
qApp->installTranslator(translator);

我想建立动态菜单(英语、俄语)来选择语言。但是,我怎样才能从 qm 文件中提取这样的常量(英语、俄语)而不是它的名称(pr_en.qm、pr_ru.qm)。谢谢。

最佳答案

我会建议两种方法:

首先是声明特殊的翻译器字段,如:
tr("__LANGNAME__")这将在每个翻译文件中填充正确的语言名称(甚至是母语)。然后你可以列出所有可用的翻译,一一加载并使用 QTranslator::translate(const char * context, const char * sourceText, const char * disambiguation = 0)方法。

例子:

QStringList availableLanguages;
QDirIterator qmIt(pathToQm, QStringList() << "*.qm", QDir::Files);
while(qmIt.hasNext())
{
    qmIt.next();
    QFileInfo finfo = qmIt.fileInfo();
    QTranslator translator;
    translator.load(finfo.baseName(), pathToQm);
    availableLanguages << translator.translate("__LANGNAME__");
}

qDebug() << availableLanguages;

我的第二个方法是使用 QLocale 和 QLocale::Language。我会在 qm 目录中为每个文件的基本名称创建 QLocale 对象,然后使用 QLocale::Language 枚举来获取带有 QLocale::languageToString 的语言名称方法。

关于Qt 翻译文件 (qm) 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10585652/

相关文章:

qt - 当我将窗口移动到具有不同 DPI 的屏幕时,为什么我的 QML 项目没有被缩放?

c++ - 使小部件在 Qt 布局中部分重叠

c++ - QApplication : How to shutdown gracefully on Ctrl-C

c++ - 旋转,通过头文件在opengl中翻译?

java - 在 Java 应用程序中使用 C 源代码的最简单方法是什么?

Javascript 和翻译

qt - 如何将 GNU Gettext .po 文件转换为 Qt 的 .ts 文件?

c++ - fatal error : QtGui/QApplication: No such file or directory

android - Google Play 控制台中翻译服务的 CSV 示例

kendo-ui - Kendo Grid - 如何翻译列标题中的文本 "is true"、 "is false"?