From 6298932c7fae36e6812c3b65aa384e34071d4da3 Mon Sep 17 00:00:00 2001 From: kkostiuk <kateryna.kostiuk@savoirfairelinux.com> Date: Wed, 9 Feb 2022 13:34:33 -0500 Subject: [PATCH] translations: fix on macOS - fix translations path - generate .lproj folders for supported languages to be recognized by QLocale. https://bugreports.qt.io/browse/QTBUG-72491 Gitlab: #578 Change-Id: Ic4c3b74c654a1c00de71c31c9debe397990870f7 --- CMakeLists.txt | 21 ++++++++++++--------- src/appsettingsmanager.cpp | 6 +++++- src/utilsadapter.cpp | 4 ++++ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b5ff3ee74..679c861f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -635,24 +635,27 @@ else() # translations if(Qt${QT_VERSION_MAJOR}LinguistTools_FOUND) - message("Releasing and copying translation files") - file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/share/ring/translations/") - file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/share/libringclient/translations/") + set(LRC ${PROJECT_SOURCE_DIR}/../lrc) + set(APP_CONTAINER "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app/Contents") file(GLOB TS_CLIENT_FILES ${PROJECT_SOURCE_DIR}/translations/*.ts) file(GLOB TS_LRC_FILES ${LRC}/translations/*.ts) + + # generate lproj folders + FOREACH(QM_FILE ${TS_LRC_FILES}) + # Extract language code from filename + GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE) + STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME}) + file(MAKE_DIRECTORY ${APP_CONTAINER}/Resources/${LANG}.lproj) + ENDFOREACH() set_source_files_properties(${TS_CLIENT_FILES} PROPERTIES OUTPUT_LOCATION - "${CMAKE_BINARY_DIR}/share/ring/translations") + "${APP_CONTAINER}/Resources/share/ring/translations") set_source_files_properties(${TS_LRC_FILES} PROPERTIES OUTPUT_LOCATION - "${CMAKE_BINARY_DIR}/share/libringclient/translations") + "${APP_CONTAINER}/Resources/share/libringclient/translations") qt_add_translation(QM_CLIENT_FILES ${TS_CLIENT_FILES}) qt_add_translation(QM_LRC_FILES ${TS_LRC_FILES}) target_sources(${PROJECT_NAME} PRIVATE ${QM_CLIENT_FILES}) target_sources(${PROJECT_NAME} PRIVATE ${QM_LRC_FILES}) - install(DIRECTORY "${CMAKE_BINARY_DIR}/share/ring/translations/" - DESTINATION ${CMAKE_INSTALL_PREFIX}/share/ring/translations) - install(DIRECTORY "${CMAKE_BINARY_DIR}/share/libringclient/translations/" - DESTINATION ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations) endif() set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE TRUE diff --git a/src/appsettingsmanager.cpp b/src/appsettingsmanager.cpp index b115dd3e1..0b6bef5a7 100644 --- a/src/appsettingsmanager.cpp +++ b/src/appsettingsmanager.cpp @@ -62,6 +62,10 @@ AppSettingsManager::loadTranslations() { #if defined(Q_OS_LINUX) && defined(JAMI_INSTALL_PREFIX) QString appDir = JAMI_INSTALL_PREFIX; +#elif defined(Q_OS_MACOS) + QDir dir(qApp->applicationDirPath()); + dir.cdUp(); + QString appDir = dir.absolutePath() + "/Resources/share"; #else QString appDir = qApp->applicationDirPath() + QDir::separator() + "share"; #endif @@ -125,4 +129,4 @@ AppSettingsManager::loadTranslations() } Q_EMIT retranslate(); -} \ No newline at end of file +} diff --git a/src/utilsadapter.cpp b/src/utilsadapter.cpp index 274a90cc4..6d2058a97 100644 --- a/src/utilsadapter.cpp +++ b/src/utilsadapter.cpp @@ -425,6 +425,10 @@ UtilsAdapter::supportedLang() { #if defined(Q_OS_LINUX) && defined(JAMI_INSTALL_PREFIX) QString appDir = JAMI_INSTALL_PREFIX; +#elif defined(Q_OS_MACOS) + QDir dir(qApp->applicationDirPath()); + dir.cdUp(); + QString appDir = dir.absolutePath() + "/Resources/share"; #else QString appDir = qApp->applicationDirPath() + QDir::separator() + "share"; #endif -- GitLab