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);
}