mero
3rd July 2014, 01:59
Hello,
I switched from Qt 4 to Qt 5 and everything is working, but all buttons from QDialogButtonBox are not translating
This is my cmake:
set (TRANSLATION_SRCS
qt_pl.ts
scc_pl.ts
)
set (TRANSLATION_QM
qt_pl.qm
scc_pl.qm
)
# translation
qt5_add_translation (TRANSLATION_FILES ${TRANSLATION_SRCS})
add_custom_target (translations DEPENDS ${TRANSLATION_FILES})
# translations
add_dependencies (scc translations)
# install
if (UNIX AND NOT APPLE)
install (FILES ${TRANSLATION_QM} DESTINATION ${SCC_DATA_DIR}/translations)
endif (UNIX AND NOT APPLE)
how I load translate (with debug)
// load translate
QString q = QString("qt_%1").arg(strLanguage);
qDebug() << "path:" << q;
bool load = qtTranslator.load(q, QLibraryInfo::location(QLibraryInfo::TranslationsP ath));
qDebug() << "load:" << load;
if (load)
qApp->installTranslator(&qtTranslator);
if (sccTranslator.load(QString("%1/translations/scc_%2").arg(path, strLanguage)))
qApp->installTranslator(&sccTranslator);
debug result:
path: "qt_pl"
load: true
Normal load translate:
// load translate
if (qtTranslator.load(QString("%1/translations/qt_%2").arg(path, strLanguage)))
qApp->installTranslator(&qtTranslator);
if (sccTranslator.load(QString("%1/translations/scc_%2").arg(path, strLanguage)))
qApp->installTranslator(&sccTranslator);
main cmake:
# Tell CMake to run moc when necessary:
set(CMAKE_AUTOMOC ON)
# As moc files are generated in the binary dir, tell CMake
# to always look for includes there:
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# qt
find_package(Qt5Widgets)
find_package(Qt5Multimedia)
find_package(Qt5Network)
#find_package(Qt5LinguistTools)
find_package(Qt5WebKit)
find_package(Qt5WebKitWidgets)
find_package(Qt5Xml)
# include qt qtnetwork
include_directories (
${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/common
${CMAKE_CURRENT_SOURCE_DIR}/core
${CMAKE_CURRENT_SOURCE_DIR}/gui
${CMAKE_CURRENT_SOURCE_DIR}/models
${CMAKE_CURRENT_SOURCE_DIR}/onet
${CMAKE_CURRENT_SOURCE_DIR}/tab
${CMAKE_CURRENT_SOURCE_DIR}/widgets
)
# resources
set (scc_QRC ../scc.qrc)
qt5_add_resources (scc_QRC_SRCS ${scc_QRC})
# ui
qt5_wrap_ui (scc_UIS_H ${scc_UIS})
# moc
qt5_generate_moc (scc MOC_FILES ${scc_MOC_HDRS})
# resource
set (scc_RESOURCE ../scc_mingw.rc)
include_directories (${CMAKE_SOURCE_DIR}/ui)
# link
if (MINGW) # mingw
add_executable (scc ${scc_SRCS} ${MOC_FILES} ${scc_HDRS} ${scc_QRC_SRCS} ${scc_UIS_H} ${scc_RESOURCE})
else (MINGW) # linux
add_executable (scc ${scc_SRCS} ${MOC_FILES} ${scc_HDRS} ${scc_QRC_SRCS} ${scc_UIS_H})
endif (MINGW)
target_link_libraries (scc Qt5::Widgets Qt5::Multimedia Qt5::Network Qt5::WebKit Qt5::WebKitWidgets Qt5::Xml ${QCA2_LIBRARIES})
# install
if (UNIX AND NOT APPLE)
install (TARGETS scc DESTINATION ${SCC_BIN_DIR})
endif (UNIX AND NOT APPLE)
How it looks in qt creator: (good-translated)
10498
and how it looks in application: (wrong-not translated)
10499
so, what I do wrong ?
and why load returns true and button is not translated ?
I'm using Qt 5.3.1 mingw
I switched from Qt 4 to Qt 5 and everything is working, but all buttons from QDialogButtonBox are not translating
This is my cmake:
set (TRANSLATION_SRCS
qt_pl.ts
scc_pl.ts
)
set (TRANSLATION_QM
qt_pl.qm
scc_pl.qm
)
# translation
qt5_add_translation (TRANSLATION_FILES ${TRANSLATION_SRCS})
add_custom_target (translations DEPENDS ${TRANSLATION_FILES})
# translations
add_dependencies (scc translations)
# install
if (UNIX AND NOT APPLE)
install (FILES ${TRANSLATION_QM} DESTINATION ${SCC_DATA_DIR}/translations)
endif (UNIX AND NOT APPLE)
how I load translate (with debug)
// load translate
QString q = QString("qt_%1").arg(strLanguage);
qDebug() << "path:" << q;
bool load = qtTranslator.load(q, QLibraryInfo::location(QLibraryInfo::TranslationsP ath));
qDebug() << "load:" << load;
if (load)
qApp->installTranslator(&qtTranslator);
if (sccTranslator.load(QString("%1/translations/scc_%2").arg(path, strLanguage)))
qApp->installTranslator(&sccTranslator);
debug result:
path: "qt_pl"
load: true
Normal load translate:
// load translate
if (qtTranslator.load(QString("%1/translations/qt_%2").arg(path, strLanguage)))
qApp->installTranslator(&qtTranslator);
if (sccTranslator.load(QString("%1/translations/scc_%2").arg(path, strLanguage)))
qApp->installTranslator(&sccTranslator);
main cmake:
# Tell CMake to run moc when necessary:
set(CMAKE_AUTOMOC ON)
# As moc files are generated in the binary dir, tell CMake
# to always look for includes there:
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# qt
find_package(Qt5Widgets)
find_package(Qt5Multimedia)
find_package(Qt5Network)
#find_package(Qt5LinguistTools)
find_package(Qt5WebKit)
find_package(Qt5WebKitWidgets)
find_package(Qt5Xml)
# include qt qtnetwork
include_directories (
${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/common
${CMAKE_CURRENT_SOURCE_DIR}/core
${CMAKE_CURRENT_SOURCE_DIR}/gui
${CMAKE_CURRENT_SOURCE_DIR}/models
${CMAKE_CURRENT_SOURCE_DIR}/onet
${CMAKE_CURRENT_SOURCE_DIR}/tab
${CMAKE_CURRENT_SOURCE_DIR}/widgets
)
# resources
set (scc_QRC ../scc.qrc)
qt5_add_resources (scc_QRC_SRCS ${scc_QRC})
# ui
qt5_wrap_ui (scc_UIS_H ${scc_UIS})
# moc
qt5_generate_moc (scc MOC_FILES ${scc_MOC_HDRS})
# resource
set (scc_RESOURCE ../scc_mingw.rc)
include_directories (${CMAKE_SOURCE_DIR}/ui)
# link
if (MINGW) # mingw
add_executable (scc ${scc_SRCS} ${MOC_FILES} ${scc_HDRS} ${scc_QRC_SRCS} ${scc_UIS_H} ${scc_RESOURCE})
else (MINGW) # linux
add_executable (scc ${scc_SRCS} ${MOC_FILES} ${scc_HDRS} ${scc_QRC_SRCS} ${scc_UIS_H})
endif (MINGW)
target_link_libraries (scc Qt5::Widgets Qt5::Multimedia Qt5::Network Qt5::WebKit Qt5::WebKitWidgets Qt5::Xml ${QCA2_LIBRARIES})
# install
if (UNIX AND NOT APPLE)
install (TARGETS scc DESTINATION ${SCC_BIN_DIR})
endif (UNIX AND NOT APPLE)
How it looks in qt creator: (good-translated)
10498
and how it looks in application: (wrong-not translated)
10499
so, what I do wrong ?
and why load returns true and button is not translated ?
I'm using Qt 5.3.1 mingw