summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgarder500 <jeremy27.clara22@gmail.com>2025-05-01 17:34:02 +0200
committergarder500 <jeremy27.clara22@gmail.com>2025-05-01 17:34:02 +0200
commit43e9b83e1f812300fa5d0d7d4e38ec175652ea9c (patch)
tree8dd08d641e9c763cca5e41001d5d5e83d2949a2b
parent1aa7ec4539170739986bcbb4d542f5432f98bea5 (diff)
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.
-rw-r--r--bot/include/utils.hpp7
-rw-r--r--bot/src/actions/delete.cpp2
-rw-r--r--bot/src/utils.cpp22
3 files changed, 15 insertions, 16 deletions
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 <algorithm>
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<bool> 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<std::string> 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<Lang, std::map<std::string, std::string>> &array_translations, const std::unordered_map<std::string, std::string> &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);