cmake,qt,不同的库和可执行文件。本土化?

时间:2015-12-18 08:42:10

标签: c++ qt localization internationalization cmake

我有一个由我自己构建的项目,由不同的可执行文件和不同的库构建。

这个想法就像:

/Src/
     ExecA/CMakeLists.txt
     ExecB/CMakeLists.txt
     LibC/CMakeLists.txt
     LibD/CMakeLists.txt

ExecA使用LibC和LibD, ExecB仅使用LibC 或者......让我说...并非所有可执行文件都使用所有库。

我已经在每个CMakeLists.txt中写了这句话,允许我生成ts和qm文件:

SET(LANGUAGES ${SUPPORTED_LANGUAGES)
SET(LANGUAGE_TS_FILES)
FOREACH(LANGUAGE ${LANGUAGES})
    SET(TS_FILE      "${CMAKE_CURRENT_SOURCE_DIR}/${LIBRARY_NAME}_${LANGUAGE}.ts")
    SET(LANGUAGE_TS_FILES ${LANGUAGE_TS_FILES} ${TS_FILE})
    SET_SOURCE_FILES_PROPERTIES(${TS_FILE} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}")
 ENDFOREACH(LANGUAGE ${LANGUAGES})
 IF(LANGUAGE_TS_FILES) 
     QT4_CREATE_TRANSLATION(qm_files ${FILES} ${QMLFILES}      ${LANGUAGE_TS_FILES})
 ENDIF(LANGUAGE_TS_FILES)

然后将qm文件加载到随附的qrc文件中。 库:

set(RESOURCES
    ${CMAKE_CURRENT_BINARY_DIR}/translations_${LIBRARY_NAME}.qrc
)

可执行:

set(RESOURCES
    ${CMAKE_CURRENT_BINARY_DIR}/translations_${EXECUTABLE_NAME}.qrc
 )

创建库时,我有一个像

这样的句子
add_library(${LIBRARY_NAME} ${FILES} ${HEADERS} ${HEADERS_MOC}   {RESOURCES} ${qm_files})

和可执行文件:

add_executable(${EXECUTABLE_NAME} ${FILES} ${HEADERS} ${HEADERS_MOC} ${RESOURCES} ${qm_files} LibA LibB)

使用此代码我能够生成ts文件,我编辑它们然后我可以生成qm文件,以便在应用程序启动时加载。 我面临的问题是只有应用程序中存在的代码是本地化的。该库的代码未本地化。

我读到我必须直接加载库的翻译,但是,无论我在哪里尝试从qrc加载qm文件:

myappTranslator.load(langstr);

我收到了一个假的回复库的所有qm文件。 它适用于可执行文件。

有关调查如何对库进行本地化的任何提示?

0 个答案:

没有答案