From bee85bf92aab84087798ffa9f3f16336acef2fce Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Thu, 19 Mar 2026 18:56:34 +0100 Subject: Basic backoffice for alert management --- .../Data/Models/TranslatedString.cs | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/Enmarcha.Backend/Data/Models/TranslatedString.cs (limited to 'src/Enmarcha.Backend/Data/Models/TranslatedString.cs') 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; + +/// +/// 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"). +/// +public class TranslatedString : Dictionary +{ + public TranslatedString() : base() { } + + public TranslatedString(IDictionary dictionary) : base(dictionary) { } + + /// + /// Gets the translation for the specified language, or a fallback if not found. + /// + 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; + } +} -- cgit v1.3