cloudcompare汉化包制作

继续接着上面一篇文章---cloudcompare源码编译遇到的问题,这篇文章介绍怎么制作汉化包(需说明的是,我是cmake小白,我下面的教程虽然能得到结果,但不一定是最好的)。

原理很简单,就是cmake创建Qt的翻译文件,试了Qt安装目录D:\Qt\Qt5.8.0\5.8\msvc2015_64\lib\cmake\Qt5LinguistTools中的文件

Qt5LinguistToolsMacros.cmake中的函数QT5_CREATE_TRANSLATION,想用它创建.ts文件,然后通过Qt的linguist进行翻译并发布,但是一直不能生成.ts文件,不知道什么原因,后面搜索才发现这是Qt的一个bug, 因此在Qt5LinguistToolsMacros.cmake中的函数QT5_CREATE_TRANSLATION后面新增了一个函数QT5_UPDATE_TRANSLATION(用法和QT5_CREATE_TRANSLATION是一样的):

function(QT5_UPDATE_TRANSLATION_qm_files)

    set(options)

    set(oneValueArgs) #compared toQT5_CREATE_TRANSLATION we are also looking for a target need

    set(multiValueArgs OPTIONS)

 

    cmake_parse_arguments(_LUPDATE "${options}""${oneValueArgs}" "${multiValueArgs}" ${ARGN})

    set(_lupdate_files${_LUPDATE_UNPARSED_ARGUMENTS})

    set(_lupdate_options ${_LUPDATE_OPTIONS})

    #message("files: ${_lupdate_files}\n\n")

    #message("options: ${_lupdate_options}\n\n")

   

    set(_my_sources)

    set(_my_tsfiles)

    set(_lupdate_target) #here the target to use for the customcommand will be stored

    foreach(_file ${_lupdate_files})

        get_filename_component(_ext ${_file}EXT)

        get_filename_component(_abs_FILE${_file} ABSOLUTE)

       if(TARGET ${_file}) #gets the target that should be added

           set(_lupdate_target ${_file}) #store the target we'll usefor the custom command

       elseif(_ext MATCHES "ts")

            list(APPEND _my_tsfiles${_abs_FILE})

        else()

            list(APPEND _my_sources ${_abs_FILE})

        endif()

    endforeach()

    foreach(_ts_file ${_my_tsfiles})

        if(_my_sources)

          # make a list file to call lupdateon, so we don't make our commands too

          # long for some systems

          get_filename_component(_ts_name${_ts_file} NAME_WE)

          set(_ts_lst_file"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lst_file")

          set(_lst_file_srcs)

          foreach(_lst_file_src ${_my_sources})

              set(_lst_file_srcs"${_lst_file_src}\n${_lst_file_srcs}")

          endforeach()

 

          get_directory_property(_inc_DIRSINCLUDE_DIRECTORIES)

          foreach(_pro_include ${_inc_DIRS})

             get_filename_component(_abs_include "${_pro_include}"ABSOLUTE)

              set(_lst_file_srcs"-I${_pro_include}\n${_lst_file_srcs}")

          endforeach()

 

          file(WRITE ${_ts_lst_file}"${_lst_file_srcs}")

        endif()

      

       add_custom_command(TARGET ${_lupdate_target} # make the customcommand depend on the given target

           PRE_BUILD # I thinkit's a good idea to let this execute early

           COMMAND${Qt5_LUPDATE_EXECUTABLE}

            ARGS ${_lupdate_options}"@${_ts_lst_file}" -ts ${_ts_file}

           VERBATIM)

    endforeach()

    qt5_add_translation(${_qm_files} ${_my_tsfiles})

    set(${_qm_files} ${${_qm_files}}PARENT_SCOPE)

endfunction()

有了这个之后,就能生成新的.ts文件啦.

如果想要自己编译的cloudcompare双击就加载语言包(.qm文件),那么需要修改源码,即修改CloudCompare的main函数(在CloudCompare-master-CC\qCC下的main.cpp中),其中有下面这两句:

    QTranslator translator;

    if (commandLine)

可以在if (commandLine)后面加个else,在不是从命令行启动的时候就加载当前目录下的CloudCompare.qm文档,如下:

    else {// If not command line mode, search CloudCompare.qm file inprogram directory

       QString fullFilePath = QCoreApplication::applicationDirPath()+ QObject::tr("/CloudCompare.qm");

       QFileInfo fiInfo(fullFilePath);

       if (fiInfo.exists())

       {

           translator.load(fullFilePath);

           app.installTranslator(&translator);

       }

       else

       {

           ccLog::Print(QObject::tr("Unable to find translationfile CloudCompare.qm in the program directory!"));

       }

    }

在上面步骤结束后,修改CloudCompare-master\qCC下的CMakeLists.txt文件(要先改main函数,然后再编译),从第45行开始(如果你对cmake很熟悉,应该可以随便选择从哪添加,我是cmake小白。这里提一下,我用的是CloudCompare v2.9的源码编译的,如果后面更新了,可能对应的行数也得变,自己灵机应变吧)

qt5_wrap_ui(generated_ui_list ${ui_list} )#这是第45行

qt5_add_resources(generated_qrc_list ${qrc_list} )

# 自己添加下面两行

find_package(Qt5CoreREQUIRED)

find_package(Qt5LinguistToolsREQUIRED)

 

if( MSVC )

    # App icon with MSVC

    set( rc_list images/icon/cc_icon.rc )

 

    #to get rid of the (system) console

    add_executable( ${PROJECT_NAME} WIN32 ${header_list}${source_list} ${generated_ui_list} ${generated_qrc_list} ${rc_list}${txt_list} )

    #自己添加下面两行

    qt5_use_modules(CloudCompare Core)

   qt5_update_translation(QMs CloudCompare${header_list} ${source_list} ${generated_ui_list} CloudCompare.ts)

后面就只剩下用cmake编译了,网上很多教程,这里就不啰嗦了!如果遇到难解决的问题,可以看看是不是我之前遇到的问题(点这里)。

这里附上我已经做好的.ts文件(点击跳转到下载页),通过Qt的linguist进行翻译并发布并发布!

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
CloudCompare提供了中文翻译文件,可以使用这个文件将CloudCompare软件汉化成中文。该文件位于CloudCompare源码的路径...\CloudCompare-2.6.3.1\qCC\tr\translation_chinese.ts中。 如果您需要CloudCompare汉化包,可以自行下载。需要注意的是,上传的是QLinguist的ts文件,不是发布版的qm文件。您可以下载后使用QLinguist进行翻译,然后发布即可。 如果您想继续上面提到的文章,了解如何制作CloudCompare汉化包,可以继续阅读下一篇文章。这篇文章将介绍如何制作汉化包,但请注意,作者是CMake的初学者,所以文章中提供的方法可能不是最佳的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [CloudCompare汉化](https://blog.csdn.net/xinjiang666/article/details/100353669)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [cloudcompare汉化包](https://download.csdn.net/download/hehe549124/10188981)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [cloudcompare汉化包制作](https://blog.csdn.net/hehe549124/article/details/78975517)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值