Qt——“\r\n“回车换行符在Linguist里不奏效(无效果)?

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加


提示:


前言

有天饭后决定更新一下翻译代码,主要是tr()部分的翻译,没想到,tr(“English\r\nEnglish”) 显示正常,如下:
“英文
英文”
而用linguist.exe翻译成中文 “英文\r\n英文”,显示错误:
“英文\r\n英文”
在网上搜,查看相关资料,一直找不到任何能提供解决办法的文章,而第二天突然解决了这个问题,所以在此,由我提供一个思路。

环境

开发环境
Windows10 操作系统
Qt 5.15.2 C++GUI框架
Desktop Qt 5.15.2 MinGW 64-bit 编译器
qmake 构建系统
Qt Creator 8.0.0 编辑器

问题

代码如下:

QMessageBox::critical(this, tr("Error Warning"), tr("Opening failed!!!\r\nThe serial port may be occupied.\r\nOr, the device is not enabled.\r\nPlease check the device!!!"));

显示英文时:
在这里插入图片描述
显示中文时:
在这里插入图片描述
在这里插入图片描述
如上图对比可得:
无论使用哪种符号“\r\n”、“\n\r”、“\n”,都会被识别成“字符串”,所以,在Linguist语言家中,翻译部分加上“回车符、换行符”是无效的。

解决

1、简单粗暴——直接在Linguist的翻译里按下“Enter”回车键

我将“\r\n”选中,按下“Enter”回车键,Linguist自动识别,显示成程序独有的“回车”图标(即,回车符号)。
请添加图片描述
请添加图片描述

2、绕远路——改代码

代码如下:

QMessageBox::critical(this, tr("Error Warning"), tr("Opening failed!!!\r\nThe serial port may be occupied.\r\nOr, the device is not enabled.\r\nPlease check the device!!!"));
 ||
 ||||
\||/
QMessageBox::critical(this, tr("Error Warning"), tr("Opening failed!!!") + "\r\n" + tr("The serial port may be occupied.") + "\r\n" + tr("Or, the device is not enabled.") + "\r\n" + tr("Please check the device!!!"));

把一个“tr()”改成多个“tr()”,让“\r\n”不干扰翻译。


总结

1、不要把问题复杂化,先用最简单的方法解决,不行再想想,绕远路也能实现的话,亦可。

特别是 对有工作的人来说,时间很宝贵,为了不加班,需要紧急完成工作任务,所以其工作重心不可偏,否则后果不堪设想;
另外,研究是否有其他好的解决方案,则需要业余时间去做,而不是占用工作时间,这是每个作为工具人/社畜该有的自觉,除非你有大把时间不着急,那你当我在这说废话。

2、tr()自动识别“\r\n”符,但是利用Linguist工具,则需要直接按“Enter”回车键,由工具自动处理“回车”符。

这涉及tr()的翻译机制,翻译部分的回车并不是由tr()直接处理的,而是通过什么,我没有细究,若有新的思路,将在这进行补充。

3、这跟编码“QApplication::UnicodeUTF8等”、改用“QObject::trUtf8()、QApplication::translate()”都无关(不治标更不治本)。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yvette_QIU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值