我正在 Eclipse/Linux 中使用 Qt 做一个多语言应用程序。在泰语中,我的控制器似乎不太支持换行符(我仍然不确定为什么)。无论如何,以下算法会在每个泰语字符之间插入一个零宽度空格 (\u200b)(字符及其重音符号之间除外),因此可能会出现换行符。但是,我的控制器现在需要 12 分钟才能以泰语启动(在显示打开 QString 消息之前 12 分钟)。该函数覆盖 Qt 中的 QTranslator::translate,因此我可以在每个已翻译的 QString 中添加零宽度空格。
我的问题如下:你们能告诉我我是否正确操作 QString 中的 Unicode 和 Utf-8 字符吗?编辑:泰语符号的渲染是 Qt 问题吗?非常感谢!
QString EditTranslation::translate(const char *context, const char *sourceText, const char *disambiguation) const{
QString translatedString = QTranslator::translate(context, sourceText, disambiguation);
if (SystemSettingsService->getLanguageType() != ISystemSettingsService::Thai )
return translatedString;
// Important block starts here*********************
QString translatedStringModified;
for(QString::const_iterator i(translatedString.begin()); i != translatedString.end(); ++i){
translatedStringModified.append(i->unicode());
int unicode = (i+1)->unicode();
if(((unicode > 3584 && unicode < 3634 && unicode != 3633) || (unicode > 3646 && unicode < 3655) || (unicode > 3662 && unicode < 3676))){
translatedStringModified.append(QString::fromUtf8("\u200b")); // Zero-width space is added
}
}
// ************************************
return translatedStringModified;
}