2021-10-19 00:39:07 +08:00
|
|
|
set(languages de en fr pl pt_BR sv zh_CN)
|
2017-11-16 21:33:35 +08:00
|
|
|
|
2020-03-15 07:11:35 +08:00
|
|
|
include(FeatureSummary)
|
2017-11-16 21:33:35 +08:00
|
|
|
|
2020-03-15 07:11:35 +08:00
|
|
|
option(WITH_GETTEXT "translate messages if gettext is available" ON)
|
|
|
|
if(WITH_GETTEXT)
|
2022-03-26 21:51:42 +08:00
|
|
|
if(APPLE)
|
|
|
|
# Fix for https://github.com/fish-shell/fish-shell/issues/5244
|
|
|
|
# via https://gitlab.kitware.com/cmake/cmake/-/issues/18921
|
|
|
|
set(CMAKE_FIND_FRAMEWORK_OLD ${CMAKE_FIND_FRAMEWORK})
|
|
|
|
set(CMAKE_FIND_FRAMEWORK NEVER)
|
|
|
|
endif()
|
2020-06-07 09:56:37 +08:00
|
|
|
find_package(Intl QUIET)
|
2020-03-15 07:11:35 +08:00
|
|
|
find_package(Gettext)
|
|
|
|
if(GETTEXT_FOUND)
|
|
|
|
set(HAVE_GETTEXT 1)
|
|
|
|
include_directories(${Intl_INCLUDE_DIR})
|
|
|
|
endif()
|
2022-03-26 21:51:42 +08:00
|
|
|
if(APPLE)
|
|
|
|
set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_OLD})
|
|
|
|
unset(CMAKE_FIND_FRAMEWORK_OLD)
|
|
|
|
endif()
|
2020-03-15 07:11:35 +08:00
|
|
|
endif()
|
|
|
|
add_feature_info(gettext GETTEXT_FOUND "translate messages with gettext")
|
2017-11-16 21:33:35 +08:00
|
|
|
|
|
|
|
# Define translations
|
2020-03-15 07:11:35 +08:00
|
|
|
if(GETTEXT_FOUND)
|
2021-03-22 04:29:41 +08:00
|
|
|
# Group pofile targets into their own folder, as there's a lot of them.
|
|
|
|
set(CMAKE_FOLDER pofiles)
|
2020-03-15 07:11:35 +08:00
|
|
|
foreach(lang ${languages})
|
2018-01-22 14:30:36 +08:00
|
|
|
# Our translations aren't set up entirely as CMake expects, so installation is done in
|
|
|
|
# cmake/Install.cmake instead of using INSTALL_DESTINATION
|
2020-03-15 07:11:35 +08:00
|
|
|
gettext_process_po_files(${lang} ALL
|
2017-11-16 21:33:35 +08:00
|
|
|
PO_FILES po/${lang}.po)
|
2020-03-15 07:11:35 +08:00
|
|
|
endforeach()
|
2021-03-22 04:29:41 +08:00
|
|
|
set(CMAKE_FOLDER)
|
2020-03-15 07:11:35 +08:00
|
|
|
endif()
|
2017-11-16 22:13:45 +08:00
|
|
|
|
2020-03-15 07:11:35 +08:00
|
|
|
cmake_push_check_state()
|
|
|
|
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${Intl_INCLUDE_DIR})
|
|
|
|
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${Intl_LIBRARIES})
|
2017-11-16 22:13:45 +08:00
|
|
|
# libintl.h can be compiled into the stdlib on some GLibC systems
|
2020-03-15 07:11:35 +08:00
|
|
|
if(Intl_FOUND AND Intl_LIBRARIES)
|
|
|
|
set(LIBINTL_INCLUDE "#include <libintl.h>")
|
|
|
|
endif()
|
|
|
|
check_cxx_source_compiles("
|
2017-11-16 22:13:45 +08:00
|
|
|
${LIBINTL_INCLUDE}
|
|
|
|
#include <stdlib.h>
|
|
|
|
int main () {
|
|
|
|
extern int _nl_msg_cat_cntr;
|
|
|
|
int tmp = _nl_msg_cat_cntr;
|
|
|
|
exit(tmp);
|
|
|
|
}
|
|
|
|
"
|
|
|
|
HAVE__NL_MSG_CAT_CNTR)
|
2020-03-15 07:11:35 +08:00
|
|
|
cmake_pop_check_state()
|