diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2026-03-19 18:56:34 +0100 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2026-03-19 18:56:34 +0100 |
| commit | bee85bf92aab84087798ffa9f3f16336acef2fce (patch) | |
| tree | 4fc8e2907e6618940cd9bdeb3da1a81172aab459 /src/Enmarcha.Backend/Data/Models/TranslatedString.cs | |
| parent | fed5d57b9e5d3df7c34bccb7a120bfa274b2039a (diff) | |
Basic backoffice for alert management
Diffstat (limited to 'src/Enmarcha.Backend/Data/Models/TranslatedString.cs')
| -rw-r--r-- | src/Enmarcha.Backend/Data/Models/TranslatedString.cs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/Enmarcha.Backend/Data/Models/TranslatedString.cs b/src/Enmarcha.Backend/Data/Models/TranslatedString.cs new file mode 100644 index 0000000..7bce8ea --- /dev/null +++ b/src/Enmarcha.Backend/Data/Models/TranslatedString.cs @@ -0,0 +1,26 @@ +namespace Enmarcha.Backend.Data.Models; + +/// <summary> +/// A translatable string that can be stored in the database as a single JSON column. +/// Keys are ISO language codes (e.g., "es", "gl", "en"). +/// </summary> +public class TranslatedString : Dictionary<string, string> +{ + public TranslatedString() : base() { } + + public TranslatedString(IDictionary<string, string> dictionary) : base(dictionary) { } + + /// <summary> + /// Gets the translation for the specified language, or a fallback if not found. + /// </summary> + public string Get(string lang, string fallback = "es") + { + if (TryGetValue(lang, out var value)) + return value; + + if (TryGetValue(fallback, out var fallbackValue)) + return fallbackValue; + + return Values.FirstOrDefault() ?? string.Empty; + } +} |
