在Mac上使用Qt 4.7.4。
使用我编写的perl脚本生成我的* .TS文件并使用UTF-8。传统依赖的长篇故事。我们有13种语言需要支持,包括一些异国语言。从中生成* .QM文件似乎运行良好。您可以将* .QM文件加载到Qt Linguist中,一切看起来都很健康。
由于遗留原因,我的系统语言是“Enums”。也就是说,我这样做:
QString label = tr("APP_STRINGS_MYLABEL_TEXT"); // this translates to 13 langauges...
所以,英文.TS文件的摘录如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="en">
<defaultcodec>UTF-8</defaultcodec>
<context>
<name>MyApp</name>
<message>
<source>APP_STRINGS_MYLABEL_TEXT/source>
<translation>My Label Text In English</translation>
</message>
..
..
..
</context>
我的项目文件包含以下内容:
CODECFORTR = UTF-8
我的主要方法的测试代码如下所示:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTranslator translator;
bool empty = translator.isEmpty(); // Returns TRUE
bool loaded = translator.load("myApp_en","/Users/user/Dev/myApp/translation");
empty = translator.isEmpty(); // returns FALSE
// install the translator.
MyApp->installTranslator(&translator);
// Here comes my problem...
QString test = MyApp->trUtf8("APP_STRINGS_MYLABEL_TEXT"); // returns "APP_STRINGS_MYLABEL_TEXT"
QString test2 = MyApp->tr("APP_STRINGS_MYLABEL_TEXT"); // returns "APP_STRINGS_MYLABEL_TEXT"
正如您所看到的,我的所有字符串都被翻译回原始值。没有真正的翻译。如果你知道为什么会发生这种情况,我会很感激你的帮助。我现在不知所措。
答案 0 :(得分:0)
罪魁祸首是背景。由于我使用来自第三方源的生成字符串,因此上下文总是错误的。一旦我开始在翻译API中明确使用“MyApp”上下文,它就开始工作了。
感谢所有回复的人。