Add language defaults for first-run experience and introduce Qt tool command wrapper
This commit sets default languages to English for the application unless the user specifies a different language, ensuring a consistent first-run experience across different system locales. Additionally, a wrapper for Qt tools is introduced in the CMake configuration for non-Windows platforms to filter out non-actionable output during builds.
This commit is contained in:
@@ -1530,6 +1530,13 @@ endif()
|
|||||||
|
|
||||||
if(HAVE_TRANSLATIONS)
|
if(HAVE_TRANSLATIONS)
|
||||||
option(TRANSLATIONS_VERBOSE "Show verbose output while generating .qm translation files" OFF)
|
option(TRANSLATIONS_VERBOSE "Show verbose output while generating .qm translation files" OFF)
|
||||||
|
# On non-Windows platforms Qt doesn't need a PATH-setup wrapper for tools, but we can
|
||||||
|
# provide a wrapper to filter non-actionable lrelease noise during normal builds.
|
||||||
|
if(NOT CMAKE_HOST_WIN32)
|
||||||
|
set(QT_TOOL_COMMAND_WRAPPER_PATH "${CMAKE_SOURCE_DIR}/cmake/qt_tool_wrapper.sh"
|
||||||
|
CACHE INTERNAL "Wrapper used when invoking Qt tools from CMake" FORCE
|
||||||
|
)
|
||||||
|
endif()
|
||||||
qt_add_lupdate(strawberry_lib TS_FILES "${CMAKE_SOURCE_DIR}/src/translations/strawberry_en_US.ts" OPTIONS -locations none -no-ui-lines -no-obsolete)
|
qt_add_lupdate(strawberry_lib TS_FILES "${CMAKE_SOURCE_DIR}/src/translations/strawberry_en_US.ts" OPTIONS -locations none -no-ui-lines -no-obsolete)
|
||||||
file(GLOB_RECURSE ts_files ${CMAKE_SOURCE_DIR}/src/translations/*.ts)
|
file(GLOB_RECURSE ts_files ${CMAKE_SOURCE_DIR}/src/translations/*.ts)
|
||||||
set_source_files_properties(${ts_files} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/data")
|
set_source_files_properties(${ts_files} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/data")
|
||||||
|
|||||||
25
cmake/qt_tool_wrapper.sh
Executable file
25
cmake/qt_tool_wrapper.sh
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
tool="${1:-}"
|
||||||
|
shift || true
|
||||||
|
|
||||||
|
if [[ -z "$tool" ]]; then
|
||||||
|
echo "qt_tool_wrapper.sh: missing tool argument" >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
base="$(basename "$tool")"
|
||||||
|
|
||||||
|
# Qt LinguistTools (lrelease) prints some noisy informational lines to stderr that
|
||||||
|
# are not actionable during normal builds (e.g. "Removed plural forms...").
|
||||||
|
# We filter only those specific messages.
|
||||||
|
if [[ "$base" == "lrelease" ]]; then
|
||||||
|
"$tool" "$@" 2>&1 | sed \
|
||||||
|
-e '/^Removed plural forms as the target language has less forms\.$/d' \
|
||||||
|
-e '/^If this sounds wrong, possibly the target language is not set or recognized\.$/d'
|
||||||
|
exit "${PIPESTATUS[0]}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec "$tool" "$@"
|
||||||
|
|
||||||
@@ -283,6 +283,13 @@ int main(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Default to English unless the user explicitly selected a language (CLI or settings).
|
||||||
|
// This makes the first-run experience deterministic across system locales.
|
||||||
|
if (languages.isEmpty()) {
|
||||||
|
languages << u"en_US"_s;
|
||||||
|
languages << u"en"_s;
|
||||||
|
}
|
||||||
|
|
||||||
// Use system UI languages
|
// Use system UI languages
|
||||||
if (languages.isEmpty()) {
|
if (languages.isEmpty()) {
|
||||||
# if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
|
# if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user