首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTranslator和UTF-8组合给我带来了麻烦

QTranslator和UTF-8组合给我带来了麻烦
EN

Stack Overflow用户
提问于 2012-05-05 00:30:01
回答 1查看 790关注 0票数 1

在Mac上使用Qt 4.7.4。

我的*.TS文件是使用我编写的perl脚本生成的,并且是UTF-8格式的。对于遗留依赖来说,说来话长。我们有13种语言需要支持,包括一些奇异的语言。从它们生成*.QM文件似乎工作得很好。您可以将*.QM文件加载到Qt Linguist中,一切看起来都很正常。

由于遗留原因,我的系统语言是“枚举”。也就是说,我这样做:

代码语言:javascript
复制
QString label = tr("APP_STRINGS_MYLABEL_TEXT"); // this translates to 13 langauges...

因此,例如,英文.TS文件的摘录为:

代码语言:javascript
复制
<?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>

我的项目文件包含以下内容:

代码语言:javascript
复制
CODECFORTR = UTF-8

我的main方法有如下所示的测试代码:

代码语言:javascript
复制
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"

正如您所看到的,我的所有字符串都被转换回它们的原始值。不会发生真正的转换。如果你知道为什么会发生这样的事情,我将非常感谢你的帮助。我现在手足无措。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 05:09:25

罪魁祸首是上下文。因为我使用的是第三方生成的字符串,所以上下文总是错误的。我一开始在translate API中显式地使用"MyApp“上下文,它就开始工作了。

感谢所有回复的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10452717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档