From d6cf4fddcb82fadb804166c5331271d97822343d Mon Sep 17 00:00:00 2001 From: Vaxry Date: Sun, 9 Nov 2025 19:37:02 +0000 Subject: [PATCH 1/4] i18n: init translation engine --- src/config/ConfigManager.cpp | 2 ++ src/i18n/Engine.cpp | 32 ++++++++++++++++++++++++++++++++ src/i18n/Engine.hpp | 15 +++++++++++++++ src/main.cpp | 3 +++ src/ui/UI.cpp | 3 ++- 5 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/i18n/Engine.cpp create mode 100644 src/i18n/Engine.hpp diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index f4a8808..138f080 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -12,6 +12,8 @@ CConfigManager::CConfigManager() : m_inotifyFd(inotify_init()) { m_config->addConfigValue("general:grab_focus", Hyprlang::INT{1}); + m_config->addConfigValue("locale:override", Hyprlang::STRING{""}); + m_config->addConfigValue("cache:enabled", Hyprlang::INT{1}); m_config->addConfigValue("finders:default_finder", Hyprlang::STRING{"desktop"}); diff --git a/src/i18n/Engine.cpp b/src/i18n/Engine.cpp new file mode 100644 index 0000000..ebe7f11 --- /dev/null +++ b/src/i18n/Engine.cpp @@ -0,0 +1,32 @@ +#include "Engine.hpp" +#include "../config/ConfigManager.hpp" + +static Hyprutils::I18n::CI18nEngine engine; + +// +void I18n::initEngine() { + engine.setFallbackLocale("en_US"); + + // en_US (English) + engine.registerEntry("en_US", TXT_KEY_SEARCH_SOMETHING, "Search..."); + + // pl_PL (Polish) + engine.registerEntry("pl_PL", TXT_KEY_SEARCH_SOMETHING, "Szukaj..."); + + // ja_JP (Japanese) + engine.registerEntry("ja_JP", TXT_KEY_SEARCH_SOMETHING, "検索..."); + + // zh (Simplified Chinese) + engine.registerEntry("zh", TXT_KEY_SEARCH_SOMETHING, "搜索..."); + + // zh_Hant (Traditional Chinese) + engine.registerEntry("zh_Hant", TXT_KEY_SEARCH_SOMETHING, "搜尋..."); +} + +std::string I18n::localize(eTextKeys key, const Hyprutils::I18n::translationVarMap& vars) { + static auto POVERRIDELOCALE = Hyprlang::CSimpleConfigValue(g_configManager->m_config.get(), "locale:override"); + + const auto LOCALE = std::string_view{*POVERRIDELOCALE}.empty() ? engine.getSystemLocale().locale() : std::string{*POVERRIDELOCALE}; + + return engine.localizeEntry(LOCALE, key, vars); +} \ No newline at end of file diff --git a/src/i18n/Engine.hpp b/src/i18n/Engine.hpp new file mode 100644 index 0000000..2381bac --- /dev/null +++ b/src/i18n/Engine.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include +#include +#include + +namespace I18n { + //NOLINTNEXTLINE + enum eTextKeys : uint64_t { + TXT_KEY_SEARCH_SOMETHING = 0, + }; + + void initEngine(); + std::string localize(eTextKeys key, const Hyprutils::I18n::translationVarMap& vars); +}; diff --git a/src/main.cpp b/src/main.cpp index fcc085c..2a0c11c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -8,6 +8,7 @@ #include "socket/ServerSocket.hpp" #include "query/QueryProcessor.hpp" #include "config/ConfigManager.hpp" +#include "i18n/Engine.hpp" #include @@ -112,6 +113,8 @@ int main(int argc, char** argv, char** envp) { socket.reset(); + I18n::initEngine(); + if (!explicitOptions.empty()) { g_ipcFinder->setData(explicitOptions); g_queryProcessor->overrideQueryProvider(g_ipcFinder); diff --git a/src/ui/UI.cpp b/src/ui/UI.cpp index b3a7620..4414804 100644 --- a/src/ui/UI.cpp +++ b/src/ui/UI.cpp @@ -6,6 +6,7 @@ #include "../socket/ServerSocket.hpp" #include "../helpers/Log.hpp" #include "../config/ConfigManager.hpp" +#include "../i18n/Engine.hpp" #include #include @@ -33,7 +34,7 @@ CUI::CUI(bool open) : m_openByDefault(open) { m_layout->setMargin(4); m_inputBox = Hyprtoolkit::CTextboxBuilder::begin() - ->placeholder("Search something...") + ->placeholder(I18n::localize(I18n::TXT_KEY_SEARCH_SOMETHING, {})) ->onTextEdited([](SP, const std::string& query) { g_queryProcessor->scheduleQueryUpdate(query); }) ->size({Hyprtoolkit::CDynamicSize::HT_SIZE_PERCENT, Hyprtoolkit::CDynamicSize::HT_SIZE_ABSOLUTE, {1.F, 28.F}}) ->multiline(false) From ceb757bf70d62821778a753d9611a56c730ecf61 Mon Sep 17 00:00:00 2001 From: Mihai Fufezan Date: Sun, 9 Nov 2025 21:41:34 +0200 Subject: [PATCH 2/4] flake.lock: update --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 486af98..c4de077 100644 --- a/flake.lock +++ b/flake.lock @@ -16,11 +16,11 @@ ] }, "locked": { - "lastModified": 1761420899, - "narHash": "sha256-kxGCip6GNbcbNWKu4J2iKbNYfFTS8Zbjg9CWp0zmFoM=", + "lastModified": 1762356719, + "narHash": "sha256-qwd/xdoOya1m8FENle+4hWnydCtlXUWLAW/Auk6WL7s=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "62479232aae42c1ef09c2c027c8cfd91df060897", + "rev": "6d0b3567584691bf9d8fedb5d0093309e2f979c7", "type": "github" }, "original": { @@ -42,11 +42,11 @@ ] }, "locked": { - "lastModified": 1760445448, - "narHash": "sha256-fXGjL6dw31FPFRrmIemzGiNSlfvEJTJNsmadZi+qNhI=", + "lastModified": 1762462052, + "narHash": "sha256-6roLYzcDf4V38RUMSqycsOwAnqfodL6BmhRkUtwIgdA=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "50fb9f069219f338a11cf0bcccb9e58357d67757", + "rev": "ffc999d980c7b3bca85d3ebd0a9fbadf984a8162", "type": "github" }, "original": { @@ -133,11 +133,11 @@ ] }, "locked": { - "lastModified": 1761571427, - "narHash": "sha256-SJUAzAquggt4EJu68PhLcUQJQYz/lW9vqOkHxoR5cgo=", + "lastModified": 1762619073, + "narHash": "sha256-1+Xu7qUqqfSetaa1nhlUJTQ2GCEGoGN5XUN4FoPL610=", "owner": "hyprwm", "repo": "hyprtoolkit", - "rev": "6f922b21767d3ce50210e9af8a280312550645b3", + "rev": "83ed855598b532360a6f7a878224cb66115cf0a1", "type": "github" }, "original": { @@ -156,11 +156,11 @@ ] }, "locked": { - "lastModified": 1759619523, - "narHash": "sha256-r1ed7AR2ZEb2U8gy321/Xcp1ho2tzn+gG1te/Wxsj1A=", + "lastModified": 1762711501, + "narHash": "sha256-80UJ5GWro6HTse7tq91DIhRqKS/pP0oHVoM3Ivf7/Ag=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "3df7bde01efb3a3e8e678d1155f2aa3f19e177ef", + "rev": "01afe9245b54f090886720df908a9a4c58a4a63b", "type": "github" }, "original": { @@ -205,11 +205,11 @@ ] }, "locked": { - "lastModified": 1761304096, - "narHash": "sha256-YSGRoxr+BuRJ2sHecc2guPmbZYtkr6219lRN+lrqoJ8=", + "lastModified": 1761653508, + "narHash": "sha256-EoLyrxFJVr7igDhhVNRk2rRpEEOJllRWvYg5XZ3J5y0=", "owner": "hyprwm", "repo": "hyprwire", - "rev": "c968b37580a4db22ea183958ef40d411aab0ffc2", + "rev": "a5946085ab7705d7b75b77a91ce8fca7faf0dc34", "type": "github" }, "original": { @@ -220,11 +220,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1761373498, - "narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=", + "lastModified": 1762596750, + "narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce", + "rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e", "type": "github" }, "original": { From 73f1a358b78ce8b78976cdb01c411de9daa4f4b7 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Mon, 10 Nov 2025 13:37:59 +0000 Subject: [PATCH 3/4] cmake: bump hu --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7723ddd..3734bfe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ pkg_check_modules( hyprtoolkit pixman-1 libdrm - hyprutils + hyprutils>=0.10.2 hyprwire icu-uc hyprlang From 40775c6af353bfd8e512cc4ecfdd3ca856f79fc1 Mon Sep 17 00:00:00 2001 From: Mihai Fufezan Date: Tue, 11 Nov 2025 01:14:17 +0200 Subject: [PATCH 4/4] flake.lock: update --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index c4de077..d478df4 100644 --- a/flake.lock +++ b/flake.lock @@ -133,11 +133,11 @@ ] }, "locked": { - "lastModified": 1762619073, - "narHash": "sha256-1+Xu7qUqqfSetaa1nhlUJTQ2GCEGoGN5XUN4FoPL610=", + "lastModified": 1762779491, + "narHash": "sha256-M+mlYKvzqW+TSoJ4MH9U+HcFoUmWc1etiXehyLEVB2M=", "owner": "hyprwm", "repo": "hyprtoolkit", - "rev": "83ed855598b532360a6f7a878224cb66115cf0a1", + "rev": "2af07d3fd4d165caee160aab96810c54d81e88c2", "type": "github" }, "original": { @@ -156,11 +156,11 @@ ] }, "locked": { - "lastModified": 1762711501, - "narHash": "sha256-80UJ5GWro6HTse7tq91DIhRqKS/pP0oHVoM3Ivf7/Ag=", + "lastModified": 1762812168, + "narHash": "sha256-pY+dUqi2AYpH0HHT2JFzt1qWoJQBWtBdzzcL1ZK5Mwo=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "01afe9245b54f090886720df908a9a4c58a4a63b", + "rev": "cb3e797fde5c748164eb70d9859336141136a166", "type": "github" }, "original": {