i18n: add lrc translation

We package what is found in the cmake install prefix for LRC translation
files. All .qm files are place in the final app Bundle under
Resources/QtTranslations.

When app starts a QTranslator loads matching .qm file based on system
language.

Issue: #80347
Change-Id: I078d058b961ce35ecd16a03411e4d19fa2a50173
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1bd5b6a..3c00835 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -187,17 +187,40 @@
 SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
        MACOSX_PACKAGE_LOCATION Resources)
 
+
+# Check which translations are found for LRC
+SET(LRC_TRANSLATIONS_PATH ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
+FILE(GLOB QM_LIST ${LRC_TRANSLATIONS_PATH}/*.qm)
+
+FOREACH(QM_FILE ${QM_LIST})
+    # Extract country code from filename
+    GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE)
+    STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME})
+
+    SET_SOURCE_FILES_PROPERTIES(${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm
+                PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
+    SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
+                "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
+
+    # Regroup those files under a .lproj folder
+    SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
+                                    ${LOCALIZED_${LANG}})
+    # Add them to the list of files to package
+    SET(LOCALIZABLE_FILES ${LOCALIZABLE_FILES} ${LOCALIZED_${LANG}})
+ENDFOREACH()
+
 # append '.xib' extension before linking xib files in executable
 FOREACH(xib ${ringclient_XIBS})
   SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/${xib}.xib)
 ENDFOREACH()
 
-SET(TO_ADD 
+SET(TO_ADD
    ${ringclient_CONTROLLERS}
    ${ringclient_BACKENDS}
    ${ringclient_VIEWS}
    ${ringclient_OTHERS}
    ${ringclient_XIBS_FOR_EXECUTABLE}
+   ${LOCALIZABLE_FILES}
    ${myApp_ICON}
    Credits.rtf
    ${ring_ICONS})
@@ -213,7 +236,8 @@
 SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
 SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
 SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
-SOURCE_GROUP("Resources\\Interface Builder" FILES ${ringclient_XIBS_FOR_EXECUTABLE})
+SOURCE_GROUP("Resources\\Interface Builder" FILES
+                                    ${ringclient_XIBS_FOR_EXECUTABLE})
 
 IF(ENABLE_SPARKLE)
     SOURCE_GROUP("Frameworks" FILES ${SPARKLE_FRAMEWORK})