aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Backend/Data/Models/TranslatedString.cs
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2026-03-19 18:56:34 +0100
committerAriel Costas Guerrero <ariel@costas.dev>2026-03-19 18:56:34 +0100
commitbee85bf92aab84087798ffa9f3f16336acef2fce (patch)
tree4fc8e2907e6618940cd9bdeb3da1a81172aab459 /src/Enmarcha.Backend/Data/Models/TranslatedString.cs
parentfed5d57b9e5d3df7c34bccb7a120bfa274b2039a (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.cs26
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;
+ }
+}