3 files changed
+58
-96
No files matched your search
+58
-10
@@ -2,12 +2,13 @@
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
cmake_minimum_required(VERSION 3.22)
|
||||
|
||||
set(input_variables
|
||||
PROJECT_SOURCE_DIR
|
||||
COPYRIGHT_HOLDERS
|
||||
LCONVERT_EXECUTABLE
|
||||
LUPDATE_EXECUTABLE
|
||||
PYTHON_EXECUTABLE
|
||||
XGETTEXT_EXECUTABLE
|
||||
)
|
||||
|
||||
@@ -17,6 +18,60 @@ foreach(var IN LISTS input_variables)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# Extract _("...") strings for translation and convert to Qt stringdefs so that
|
||||
# they can be picked up by Qt linguist.
|
||||
function(extract_strings output)
|
||||
execute_process(
|
||||
COMMAND ${XGETTEXT_EXECUTABLE}
|
||||
--output=bitcoinstrings.po
|
||||
--no-location
|
||||
--from-code=utf-8
|
||||
--keyword=_
|
||||
${ARGN}
|
||||
COMMAND_ERROR_IS_FATAL ANY
|
||||
)
|
||||
|
||||
file(STRINGS "bitcoinstrings.po" text ENCODING "UTF-8")
|
||||
|
||||
set(messages "${COPYRIGHT_HOLDERS}")
|
||||
foreach(line IN LISTS text)
|
||||
if(line MATCHES "^msgid \"(.*)\"$")
|
||||
set(msgid "${CMAKE_MATCH_1}")
|
||||
elseif(line MATCHES "^\"(.*)\"$")
|
||||
string(APPEND msgid "${CMAKE_MATCH_1}")
|
||||
elseif(line MATCHES "^msgstr .*$" AND NOT msgid STREQUAL "")
|
||||
# CMake uses ';' as a list separator.
|
||||
# We need to temporarily replace that in order to keep strings intact.
|
||||
string(REPLACE ";" "<cmake-semicolon>" msgid "${msgid}")
|
||||
list(APPEND messages "${msgid}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(content [[// Automatically generated by translate.cmake
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define UNUSED __attribute__((unused))
|
||||
#else
|
||||
#define UNUSED
|
||||
#endif
|
||||
|
||||
static const char UNUSED *bitcoin_strings[] = {
|
||||
]])
|
||||
|
||||
set(prefix "QT_TRANSLATE_NOOP(\"bitcoin-core\", \"")
|
||||
set(suffix "\"),\n")
|
||||
|
||||
list(SORT messages)
|
||||
list(JOIN messages "${suffix}${prefix}" messages_str)
|
||||
string(APPEND content "${prefix}${messages_str}${suffix}")
|
||||
string(APPEND content "};\n")
|
||||
string(REPLACE "<cmake-semicolon>" ";" content "${content}")
|
||||
|
||||
file(WRITE "${output}" "${content}")
|
||||
endfunction()
|
||||
|
||||
file(GLOB_RECURSE translatable_sources
|
||||
"${PROJECT_SOURCE_DIR}/src/*.h"
|
||||
"${PROJECT_SOURCE_DIR}/src/*.cpp"
|
||||
@@ -41,15 +96,8 @@ foreach(directory IN LISTS subtrees exclude_dirs)
|
||||
)
|
||||
endforeach()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E env
|
||||
XGETTEXT=${XGETTEXT_EXECUTABLE}
|
||||
COPYRIGHT_HOLDERS=${COPYRIGHT_HOLDERS}
|
||||
${PYTHON_EXECUTABLE}
|
||||
${CMAKE_CURRENT_LIST_DIR}/extract_strings_qt.py
|
||||
${translatable_sources}
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src
|
||||
COMMAND_ERROR_IS_FATAL ANY
|
||||
extract_strings("${PROJECT_SOURCE_DIR}/src/qt/bitcoinstrings.cpp"
|
||||
${translatable_sources}
|
||||
)
|
||||
|
||||
execute_process(
|
||||
|
||||
Reference in new issue
Block a user