• macOS平台下Qt应用程序菜单翻译及调整


    一、翻译    

    在macOS平台上,系统会为应用程序菜单添加一些额外的菜单项。先来看一些典型的例子:

    这个是Qt Creator的菜单,系统为应用程序菜单添加了一些桌面显示操作相关的菜单项;

    这个是Qt Designer的应用程序菜单,也添加了一些额外的菜单项。并且我们可以注意到,这些菜单项在中文语言环境是翻译好的。那么我们自己的应用程序,怎么去让它们也翻译好呢?

    Qt应用程序的国际化都是通过ts文件来做翻译的。通过lupdate程序扫描源代码中被tr()宏包裹的字符串,得到需要翻译的字符串。但是这些系统添加的字符串,并没有存在我们的源码当中。这个应该如何处理嗯?通过网上的一番搜寻发现,有一个直接且简单的方法,直接在ts文件里面添加这些字符串并做好翻译即可。如下所示:

      1 <?xml version="1.0" encoding="utf-8"?>
      2 <!DOCTYPE TS>
      3 <TS version="2.1" language="zh_CN">
      4 <context>
      5     <name>demoMainWindow</name>
      6     <message>
      7         <location filename="../mainwindow.ui" line="14"/>
      8         <source>MainWindow</source>
      9         <translation>主窗口</translation>
     10     </message>
     11     <message>
     12         <location filename="../mainwindow.ui" line="28"/>
     13         <source>File</source>
     14         <translation>文件</translation>
     15     </message>
     16     <message>
     17         <location filename="../mainwindow.ui" line="40"/>
     18         <source>Edit</source>
     19         <translation>编辑</translation>
     20     </message>
     21     <message>
     22         <location filename="../mainwindow.ui" line="50"/>
     23         <source>View</source>
     24         <translation>视图</translation>
     25     </message>
     26     <message>
     27         <location filename="../mainwindow.ui" line="57"/>
     28         <source>Settings</source>
     29         <translation>设置</translation>
     30     </message>
     31     <message>
     32         <location filename="../mainwindow.ui" line="65"/>
     33         <source>Help</source>
     34         <translation>帮助</translation>
     35     </message>
     36     <message>
     37         <location filename="../mainwindow.ui" line="81"/>
     38         <source>Open File</source>
     39         <translation>打开文件</translation>
     40     </message>
     41     <message>
     42         <location filename="../mainwindow.ui" line="86"/>
     43         <source>Open Project</source>
     44         <translation>打开工程</translation>
     45     </message>
     46     <message>
     47         <location filename="../mainwindow.ui" line="91"/>
     48         <source>Open Folder</source>
     49         <translation>打开文件夹</translation>
     50     </message>
     51     <message>
     52         <location filename="../mainwindow.ui" line="96"/>
     53         <source>Recent</source>
     54         <translation>最近文件</translation>
     55     </message>
     56     <message>
     57         <location filename="../mainwindow.ui" line="101"/>
     58         <source>Save</source>
     59         <translation>保存</translation>
     60     </message>
     61     <message>
     62         <location filename="../mainwindow.ui" line="106"/>
     63         <source>Quit</source>
     64         <translation>退出</translation>
     65     </message>
     66     <message>
     67         <location filename="../mainwindow.ui" line="111"/>
     68         <source>Redo</source>
     69         <translation>重做</translation>
     70     </message>
     71     <message>
     72         <location filename="../mainwindow.ui" line="116"/>
     73         <source>Undo</source>
     74         <translation>撤销</translation>
     75     </message>
     76     <message>
     77         <location filename="../mainwindow.ui" line="121"/>
     78         <source>Cut</source>
     79         <translation>剪切</translation>
     80     </message>
     81     <message>
     82         <location filename="../mainwindow.ui" line="126"/>
     83         <source>Paste</source>
     84         <translation>粘贴</translation>
     85     </message>
     86     <message>
     87         <location filename="../mainwindow.ui" line="131"/>
     88         <source>Delete</source>
     89         <translation>删除</translation>
     90     </message>
     91     <message>
     92         <location filename="../mainwindow.ui" line="136"/>
     93         <source>Tile</source>
     94         <translation>平铺</translation>
     95     </message>
     96     <message>
     97         <location filename="../mainwindow.ui" line="141"/>
     98         <source>Stack</source>
     99         <translation>堆叠</translation>
    100     </message>
    101     <message>
    102         <location filename="../mainwindow.ui" line="146"/>
    103         <source>Preference</source>
    104         <translation>偏好设置</translation>
    105     </message>
    106     <message>
    107         <location filename="../mainwindow.ui" line="151"/>
    108         <source>Log</source>
    109         <translation>日志</translation>
    110     </message>
    111     <message>
    112         <location filename="../mainwindow.ui" line="156"/>
    113         <source>Tools</source>
    114         <translation>工具</translation>
    115     </message>
    116     <message>
    117         <location filename="../mainwindow.ui" line="161"/>
    118         <source>About Demo</source>
    119         <translation>关于Demo</translation>
    120     </message>
    121     <message>
    122         <location filename="../mainwindow.ui" line="166"/>
    123         <source>Check for updates</source>
    124         <translation>检查更新</translation>
    125     </message>
    126     <message>
    127         <location filename="../mainwindow.ui" line="171"/>
    128         <source>Website</source>
    129         <translation>官网</translation>
    130     </message>
    131     <message>
    132         <location filename="../mainwindow.ui" line="176"/>
    133         <source>Tutorial</source>
    134         <translation>教程</translation>
    135     </message>
    136 </context>
    137 <context>
    138     <name>MAC_APPLICATION_MENU</name>
    139     <message>
    140         <source>Services</source>
    141         <translation>服务</translation>
    142     </message>
    143     <message>
    144         <source>Hide %1</source>
    145         <translation>隐藏 %1</translation>
    146     </message>
    147     <message>
    148         <source>Hide Others</source>
    149         <translation>隐藏其他</translation>
    150     </message>
    151     <message>
    152         <source>Show All</source>
    153         <translation>显示所有</translation>
    154     </message>
    155     <message>
    156         <source>Preferences...</source>
    157         <translation>偏好设置…</translation>
    158     </message>
    159     <message>
    160         <source>Quit %1</source>
    161         <translation>退出 %1</translation>
    162     </message>
    163     <message>
    164         <source>About %1</source>
    165         <translation>关于 %1</translation>
    166     </message>
    167 </context>
    168 
    169 </TS>
    View Code

    手动添加一个context,并在该context下面添加翻译。然后用lupdate更新ts文件即可。这样,我们自己的应用程序也可以翻译好了:

    二、菜单项重排

    为了契合不同平台的使用习惯,Qt给菜单添加了Menu Role这样一个定义。通过定义不同的Menu Role,mac系统会调整应用程序的位置,以保证平台习惯的统一。Qt库本身已经定义了几个常用的Role:

    这些Role类型的菜单项都会被系统重新调整位置到应用菜单里。如果我们还有一些其他的菜单项,也想放到应用菜单里面,应该怎么做呢?其实也非常简单,直接将菜单的Role设置为ApplicationSpecificRole即可。按照设置顺序,各个菜单项将依次出现在应用菜单中。比如说上面截图中的Check for Updates菜单项,就是通过设置ApplicationSpecificRole定义来实现的。

  • 相关阅读:
    cudnn的下载地址
    rbg大神的主页
    ubuntu16.04上安装深度学习基本框架caffe2 pytorch tensorflow opencv
    linux sublime python
    ubuntu打开终端多开标签的快捷键是ctrl+ shift+ T 对比ctrl+ alt+ T 另外窗口打开一个终端
    在ubuntu1604上使用aria2下载coco数据集效率非常高
    MS coco数据集下载
    qtav----ffmeg在ubuntu和win10上的编译和运行
    论文预印版本的网站 https://arxiv.org/
    pip或者anacnda安装opencv以及opencv-contrib
  • 原文地址:https://www.cnblogs.com/csuftzzk/p/11468797.html
Copyright © 2020-2023  润新知