diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index ca0f7a5fe..cbce372bb 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -47,33 +47,37 @@ set(QRC_RESOURCES
)
set(LANGUAGES_DIRECTORY languages)
+set(I18N_FILENAME i18n.qrc)
set(LANGUAGES en fr)
# --------------------------------------------------------------------
+function (PREPEND list prefix)
+ set(new_list "")
+
+ foreach (elem ${${list}})
+ list(APPEND new_list "${prefix}${elem}")
+ endforeach ()
+
+ set(${list} ${new_list} PARENT_SCOPE)
+endfunction ()
+
+# Force absolute paths.
+PREPEND(SOURCES "${CMAKE_SOURCE_DIR}/")
+PREPEND(HEADERS "${CMAKE_SOURCE_DIR}/")
+
+# --------------------------------------------------------------------
+
find_package(Qt5 COMPONENTS ${QT5_PACKAGES})
-# Build languages resource file.
-set(TS_FILES)
-set(I18N_CONTENT "\n\n \n")
-foreach (lang ${LANGUAGES})
- list(APPEND TS_FILES "${LANGUAGES_DIRECTORY}/${lang}.ts")
-
- # Note: the below `languages/` path is not the same as the `${LANGUAGES_DIRECTORY}` value.
- # It's the symbolic path used by the linphone binary in the qrc model.
- set(I18N_CONTENT "${I18N_CONTENT} ${lang}.qm\n")
-endforeach ()
-set(I18N_CONTENT "${I18N_CONTENT} \n\n")
-
-set(I18N_RESOURCE i18n.qrc)
-file(WRITE "${CMAKE_BINARY_DIR}/${I18N_RESOURCE}" "${I18N_CONTENT}")
-
-# Create `qm` files from `ts` files.
-qt5_create_translation(QM_FILES ${TS_FILES} src ui)
+# Add languages support.
+add_subdirectory(${LANGUAGES_DIRECTORY})
+list(APPEND QRC_RESOURCES "${CMAKE_BINARY_DIR}/${LANGUAGES_DIRECTORY}/${I18N_FILENAME}")
# Add qrc. (images, qml, translations...)
-qt5_add_resources(RESOURCES ${QRC_RESOURCES} "${CMAKE_BINARY_DIR}/${I18N_RESOURCE}")
+qt5_add_resources(RESOURCES ${QRC_RESOURCES})
# Build.
add_executable(${LINPHONE_EXEC} ${SOURCES} ${HEADERS} ${RESOURCES})
+add_dependencies(${LINPHONE_EXEC} update_translations)
target_link_libraries(${LINPHONE_EXEC} ${LIBS})
diff --git a/tests/languages/CMakeLists.txt b/tests/languages/CMakeLists.txt
new file mode 100644
index 000000000..ec7580a55
--- /dev/null
+++ b/tests/languages/CMakeLists.txt
@@ -0,0 +1,27 @@
+# Build languages resource file.
+set(TS_FILES)
+set(I18N_CONTENT "\n\n \n")
+foreach (lang ${LANGUAGES})
+ list(APPEND TS_FILES "${CMAKE_SOURCE_DIR}/${LANGUAGES_DIRECTORY}/${lang}.ts")
+
+ # Note: the below `languages/` path is not the same as the `${LANGUAGES_DIRECTORY}` value.
+ # It's the symbolic path used by the linphone binary in the qrc model.
+ # This path is used in `app.cpp`.
+ set(I18N_CONTENT "${I18N_CONTENT} ${lang}.qm\n")
+endforeach ()
+set(I18N_CONTENT "${I18N_CONTENT} \n\n")
+
+file(WRITE "${CMAKE_BINARY_DIR}/${LANGUAGES_DIRECTORY}/${I18N_FILENAME}" "${I18N_CONTENT}")
+
+# --------------------------------------------------------------------
+
+# Prevent `.ts` files deletion.
+# See: https://bugreports.qt.io/browse/QTBUG-31860
+#
+# On October 17, 2016, this issue is marked `invalid` but it's a
+# bullshit. It's not tolerated to remove sources files.
+set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM true)
+
+# Create `qm` files from `ts` files.
+qt5_create_translation(QM_FILES ${TS_FILES} ${SOURCES} ${HEADERS})
+add_custom_target(update_translations DEPENDS ${QM_FILES})
diff --git a/tests/ui/views/MainWindow/MainWindow.qml b/tests/ui/views/MainWindow/MainWindow.qml
index dfe897e6a..6d558acea 100644
--- a/tests/ui/views/MainWindow/MainWindow.qml
+++ b/tests/ui/views/MainWindow/MainWindow.qml
@@ -207,6 +207,7 @@ ApplicationWindow {
Layout.fillWidth: true
Layout.preferredHeight: 80
color: '#EAEAEA'
+ //a: qsTr("ooo")
}
}