diff options
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; + } +} |
