aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Backend/Data/Models/TranslatedString.cs
diff options
context:
space:
mode:
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;
+ }
+}