From d36a3dba4239da8989f29cc37f14f1cc27240cf8 Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Fri, 11 Jul 2025 14:20:13 +0200 Subject: [PATCH] Update LanguageService.cs (#1000) --- .../Services/LanguageService.cs | 71 ++++++++++++++----- 1 file changed, 55 insertions(+), 16 deletions(-) diff --git a/apps/server/AliasVault.Client/Services/LanguageService.cs b/apps/server/AliasVault.Client/Services/LanguageService.cs index c894aa773..91481d26d 100644 --- a/apps/server/AliasVault.Client/Services/LanguageService.cs +++ b/apps/server/AliasVault.Client/Services/LanguageService.cs @@ -23,6 +23,22 @@ public class LanguageService( DbService dbService) { private const string AppLanguageKey = "AppLanguage"; + + /// + /// Language configuration containing all supported languages. + /// To add a new language, simply add a new entry to this list. + /// + private static readonly List SupportedLanguages = new() + { + new LanguageConfig("en", "English", "๐Ÿ‡บ๐Ÿ‡ธ"), + new LanguageConfig("nl", "Nederlands", "๐Ÿ‡ณ๐Ÿ‡ฑ"), + + // Add new languages here: + // new LanguageConfig("de", "Deutsch", "๐Ÿ‡ฉ๐Ÿ‡ช"), + // new LanguageConfig("fr", "Franรงais", "๐Ÿ‡ซ๐Ÿ‡ท"), + // new LanguageConfig("es", "Espaรฑol", "๐Ÿ‡ช๐Ÿ‡ธ"), + }; + private readonly ILocalStorageService _localStorage = localStorage; private readonly IJSRuntime _jsRuntime = jsRuntime; private readonly AuthenticationStateProvider _authenticationStateProvider = authenticationStateProvider; @@ -39,11 +55,7 @@ public class LanguageService( /// Dictionary of language codes and display names. public static Dictionary GetSupportedLanguages() { - return new Dictionary - { - ["en"] = "English", - ["nl"] = "Nederlands", - }; + return SupportedLanguages.ToDictionary(lang => lang.Code, lang => lang.DisplayName); } /// @@ -52,11 +64,7 @@ public class LanguageService( /// Dictionary of language codes and display names with flag emojis. public static Dictionary GetSupportedLanguagesWithFlags() { - return new Dictionary - { - ["en"] = "๐Ÿ‡บ๐Ÿ‡ธ English", - ["nl"] = "๐Ÿ‡ณ๐Ÿ‡ฑ Nederlands", - }; + return SupportedLanguages.ToDictionary(lang => lang.Code, lang => $"{lang.FlagEmoji} {lang.DisplayName}"); } /// @@ -66,12 +74,38 @@ public class LanguageService( /// Flag emoji string. public static string GetLanguageFlag(string languageCode) { - return languageCode switch - { - "en" => "๐Ÿ‡บ๐Ÿ‡ธ", - "nl" => "๐Ÿ‡ณ๐Ÿ‡ฑ", - _ => "๐ŸŒ", - }; + var language = SupportedLanguages.FirstOrDefault(lang => lang.Code == languageCode); + return language?.FlagEmoji ?? "๐ŸŒ"; + } + + /// + /// Gets the display name for a specific language code. + /// + /// The language code. + /// Display name string. + public static string GetLanguageDisplayName(string languageCode) + { + var language = SupportedLanguages.FirstOrDefault(lang => lang.Code == languageCode); + return language?.DisplayName ?? languageCode; + } + + /// + /// Checks if a language code is supported. + /// + /// The language code to check. + /// True if the language is supported, false otherwise. + public static bool IsLanguageSupported(string languageCode) + { + return SupportedLanguages.Any(lang => lang.Code == languageCode); + } + + /// + /// Gets the default language code. + /// + /// Default language code. + public static string GetDefaultLanguage() + { + return SupportedLanguages.FirstOrDefault()?.Code ?? "en"; } /// @@ -251,4 +285,9 @@ public class LanguageService( // Ignore if blazorCulture is not available yet } } + + /// + /// Configuration for a supported language. + /// + private record LanguageConfig(string Code, string DisplayName, string FlagEmoji); }