From 1aa7ec4539170739986bcbb4d542f5432f98bea5 Mon Sep 17 00:00:00 2001 From: garder500 Date: Thu, 1 May 2025 17:25:14 +0200 Subject: Ajout de la gestion des traductions et des messages d'erreur en plusieurs langues, suppression des fichiers de traduction obsolètes. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot/include/utils.hpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'bot/include/utils.hpp') diff --git a/bot/include/utils.hpp b/bot/include/utils.hpp index 820fd01..801006a 100644 --- a/bot/include/utils.hpp +++ b/bot/include/utils.hpp @@ -11,6 +11,9 @@ #include #include using namespace dpp; + +enum class Lang { en, fr }; + namespace app { @@ -81,6 +84,25 @@ namespace app */ std::string string_from_json(const nlohmann::json &j); + /** + * @brief Gets the available locale for a given locale string + * + * @param locale The locale string to check + * @return std::string The available locale or "en" if not found + */ + std::string get_available_locale(std::string locale); + + /** + * @brienf translate a string from a locale, optionnal parameters and a default value + * @param str The string to translate to found in an Array of translations + * @param locale The locale to use for translation + * @param array_translations The array of translations + * @param args The optional parameters to replace in the string + * @return std::string The translated string + */ + std::string translate(const std::string &str, const std::string &locale, const std::map> &array_translations, const std::unordered_map &args = {}); + + } // namespace dpp #endif // UTILS_HPP -- cgit v1.2.3 From 43e9b83e1f812300fa5d0d7d4e38ec175652ea9c Mon Sep 17 00:00:00 2001 From: garder500 Date: Thu, 1 May 2025 17:34:02 +0200 Subject: Refactor la gestion des locales : mise à jour de la fonction get_available_locale pour retourner un enum Lang et simplification de la logique de vérification des locales. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot/include/utils.hpp | 7 +++++-- bot/src/actions/delete.cpp | 2 +- bot/src/utils.cpp | 22 +++++++++------------- 3 files changed, 15 insertions(+), 16 deletions(-) (limited to 'bot/include/utils.hpp') diff --git a/bot/include/utils.hpp b/bot/include/utils.hpp index 801006a..b0482dd 100644 --- a/bot/include/utils.hpp +++ b/bot/include/utils.hpp @@ -12,7 +12,10 @@ #include using namespace dpp; -enum class Lang { en, fr }; +enum class Lang { + en, + fr, +}; namespace app { @@ -90,7 +93,7 @@ namespace app * @param locale The locale string to check * @return std::string The available locale or "en" if not found */ - std::string get_available_locale(std::string locale); + Lang get_available_locale(std::string locale); /** * @brienf translate a string from a locale, optionnal parameters and a default value diff --git a/bot/src/actions/delete.cpp b/bot/src/actions/delete.cpp index 22dbc80..dbd9efe 100644 --- a/bot/src/actions/delete.cpp +++ b/bot/src/actions/delete.cpp @@ -21,7 +21,7 @@ dpp::task delete_action(const dpp::slashcommand_t &event, const nlohmann:: dpp::user &user_ptr, dpp::cluster *cluster) { // setup locale for gettext - std::string locale = app::get_available_locale(event.command.locale); + std::string locale = event.command.locale; const dpp::channel *channel_ptr = &event.command.get_channel(); const auto &guild_ptr = event.command.get_guild(); diff --git a/bot/src/utils.cpp b/bot/src/utils.cpp index 18c43b5..3ad1bad 100644 --- a/bot/src/utils.cpp +++ b/bot/src/utils.cpp @@ -207,25 +207,21 @@ namespace app return str; } - std::string get_available_locale(std::string locale) + Lang get_available_locale(std::string locale) { - std::vector available_locales = {"en", "fr"}; - std::string lang = locale.substr(0, 2); - std::transform(lang.begin(), lang.end(), lang.begin(), ::tolower); - if (std::find(available_locales.begin(), available_locales.end(), lang) != available_locales.end()) - { - return lang; - } + std::transform(locale.begin(), locale.end(), locale.begin(), ::tolower); + if (locale == "fr" || locale == "fr-fr") + return Lang::fr; + else if (locale == "en" || locale == "en-us") + return Lang::en; else - { - return "en"; // Default to English if not found - } + return Lang::en; // Default to English if no match is found } std::string translate(const std::string &str, const std::string &locale, const std::map> &array_translations, const std::unordered_map &args) { - std::string lang = get_available_locale(locale); - auto it = array_translations.find(Lang::en); + Lang lang = get_available_locale(locale); + auto it = array_translations.find(lang); if (it != array_translations.end()) { auto it2 = it->second.find(str); -- cgit v1.2.3 From 83298ee3aec687ba1c5f41fb7135e465869d4fe8 Mon Sep 17 00:00:00 2001 From: garder500 Date: Fri, 2 May 2025 00:10:43 +0200 Subject: Refactor la gestion des traductions : remplacement des maps par des unordered_maps pour améliorer les performances dans la fonction translate. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot/include/utils.hpp | 5 +---- bot/src/actions/delete.cpp | 2 +- bot/src/utils.cpp | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) (limited to 'bot/include/utils.hpp') diff --git a/bot/include/utils.hpp b/bot/include/utils.hpp index b0482dd..7008dec 100644 --- a/bot/include/utils.hpp +++ b/bot/include/utils.hpp @@ -1,7 +1,5 @@ // utils.hpp #pragma once -#ifndef UTILS_HPP -#define UTILS_HPP #include #include @@ -103,10 +101,9 @@ namespace app * @param args The optional parameters to replace in the string * @return std::string The translated string */ - std::string translate(const std::string &str, const std::string &locale, const std::map> &array_translations, const std::unordered_map &args = {}); + std::string translate(const std::string &str, const std::string &locale, const std::unordered_map> &array_translations, const std::unordered_map &args = {}); } // namespace dpp -#endif // UTILS_HPP // utils.hpp diff --git a/bot/src/actions/delete.cpp b/bot/src/actions/delete.cpp index dbd9efe..da74bbf 100644 --- a/bot/src/actions/delete.cpp +++ b/bot/src/actions/delete.cpp @@ -1,7 +1,7 @@ #include "../../include/utils.hpp" -const std::map> error_messages_map = { +const std::unordered_map> error_messages_map = { {Lang::en, { {"error_no_messages", "No message to delete."}, {"error", "You need to wait a bit before deleting messages."}, diff --git a/bot/src/utils.cpp b/bot/src/utils.cpp index 3ad1bad..a2ce928 100644 --- a/bot/src/utils.cpp +++ b/bot/src/utils.cpp @@ -218,7 +218,7 @@ namespace app return Lang::en; // Default to English if no match is found } - std::string translate(const std::string &str, const std::string &locale, const std::map> &array_translations, const std::unordered_map &args) + std::string translate(const std::string &str, const std::string &locale, const std::unordered_map> &array_translations, const std::unordered_map &args) { Lang lang = get_available_locale(locale); auto it = array_translations.find(lang); -- cgit v1.2.3