i18n: integrate translations to packaging

This commit adds internationalization support
We interface with Transifex as our web translation platform.

Two new scripts:
- generate-strings.sh: generates source files in English.
We need one source file by UI file
(Apple's law) + one Localizable.strings for strings in code.

- update-translations.sh: pulls translations completes at 75% at least
from transifex, and cleanup the files (UTF-16LE to UTF-8 encoding,
and remove first line with corrupted char)

Issue: #80347
Change-Id: Iefd297e424aaacefe6e867192e10dabd21bfb8d2
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3c00835..ec841d5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -201,6 +201,31 @@
                 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
     SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
                 "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
+ENDFOREACH()
+
+# Check which translations are found for the client
+FILE(GLOB LPROJ_LIST ui/*.lproj)
+
+FOREACH(LPROJ ${LPROJ_LIST})
+    # Extract country code from <lang>.lproj folder name
+    GET_FILENAME_COMPONENT(LANG ${LPROJ} NAME_WE)
+    IF(EXISTS "${LPROJ}/Localizable.strings")
+        MESSAGE("Localizable:" ${LANG})
+        SET_SOURCE_FILES_PROPERTIES(${LPROJ}/Localizable.strings
+                        PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj/)
+
+        SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
+                        ${LPROJ}/Localizable.strings)
+    ENDIF()
+    FOREACH(xib ${ringclient_XIBS})
+       IF(EXISTS "${LPROJ}/${xib}.strings")
+            SET_SOURCE_FILES_PROPERTIES(${LPROJ}/${xib}.strings
+                        PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj/)
+
+        SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
+                        ${LPROJ}/${xib}.strings)
+        ENDIF()
+    ENDFOREACH()
 
     # Regroup those files under a .lproj folder
     SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
@@ -211,7 +236,7 @@
 
 # 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)
+  SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/Base.lproj/${xib}.xib)
 ENDFOREACH()
 
 SET(TO_ADD
@@ -288,9 +313,9 @@
 FOREACH(xib ${ringclient_XIBS})
   ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
                       COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
-                              --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/${xib}.nib
-                             ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib
-                      COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib")
+                              --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/Base.lproj/${xib}.nib
+                             ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib
+                      COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib")
 
 ENDFOREACH()