diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-06-03 23:56:43 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-06-03 23:56:43 -0400 |
commit | 91cec58fdbd699380aa2714acf1c1981ccde7dff (patch) | |
tree | 4a9d74d96d3575b026f64f7fdf444942d32f431e /src/StardewModdingAPI | |
parent | f8718e044bae89a96431c19e3f3dc11637bad426 (diff) | |
download | SMAPI-91cec58fdbd699380aa2714acf1c1981ccde7dff.tar.gz SMAPI-91cec58fdbd699380aa2714acf1c1981ccde7dff.tar.bz2 SMAPI-91cec58fdbd699380aa2714acf1c1981ccde7dff.zip |
tweak translation API to always return translations (#303)
Diffstat (limited to 'src/StardewModdingAPI')
-rw-r--r-- | src/StardewModdingAPI/Framework/TranslationHelper.cs | 15 | ||||
-rw-r--r-- | src/StardewModdingAPI/ITranslationHelper.cs | 2 | ||||
-rw-r--r-- | src/StardewModdingAPI/Translation.cs | 10 |
3 files changed, 16 insertions, 11 deletions
diff --git a/src/StardewModdingAPI/Framework/TranslationHelper.cs b/src/StardewModdingAPI/Framework/TranslationHelper.cs index 1e73c425..fe387789 100644 --- a/src/StardewModdingAPI/Framework/TranslationHelper.cs +++ b/src/StardewModdingAPI/Framework/TranslationHelper.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using StardewValley; namespace StardewModdingAPI.Framework @@ -17,7 +18,7 @@ namespace StardewModdingAPI.Framework private readonly IDictionary<string, IDictionary<string, string>> All = new Dictionary<string, IDictionary<string, string>>(StringComparer.InvariantCultureIgnoreCase); /// <summary>The translations for the current locale, with locale fallback taken into account.</summary> - private IDictionary<string, string> ForLocale; + private IDictionary<string, Translation> ForLocale; /********* @@ -47,17 +48,17 @@ namespace StardewModdingAPI.Framework } /// <summary>Get all translations for the current locale.</summary> - public IDictionary<string, string> GetTranslations() + public IEnumerable<Translation> GetTranslations() { - return new Dictionary<string, string>(this.ForLocale, StringComparer.InvariantCultureIgnoreCase); + return this.ForLocale.Values.ToArray(); } /// <summary>Get a translation for the current locale.</summary> /// <param name="key">The translation key.</param> public Translation Get(string key) { - this.ForLocale.TryGetValue(key, out string text); - return new Translation(this.ModName, this.Locale, key, text); + this.ForLocale.TryGetValue(key, out Translation translation); + return translation ?? new Translation(this.ModName, this.Locale, key, null); } /// <summary>Get a translation for the current locale.</summary> @@ -91,7 +92,7 @@ namespace StardewModdingAPI.Framework this.Locale = locale.ToLower().Trim(); this.LocaleEnum = localeEnum; - this.ForLocale = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase); + this.ForLocale = new Dictionary<string, Translation>(StringComparer.InvariantCultureIgnoreCase); foreach (string next in this.GetRelevantLocales(this.Locale)) { // skip if locale not defined @@ -102,7 +103,7 @@ namespace StardewModdingAPI.Framework foreach (var pair in translations) { if (!this.ForLocale.ContainsKey(pair.Key)) - this.ForLocale.Add(pair); + this.ForLocale.Add(pair.Key, new Translation(this.ModName, this.Locale, pair.Key, pair.Value)); } } } diff --git a/src/StardewModdingAPI/ITranslationHelper.cs b/src/StardewModdingAPI/ITranslationHelper.cs index 15f6b3c8..dac83025 100644 --- a/src/StardewModdingAPI/ITranslationHelper.cs +++ b/src/StardewModdingAPI/ITranslationHelper.cs @@ -20,7 +20,7 @@ namespace StardewModdingAPI ** Public methods *********/ /// <summary>Get all translations for the current locale.</summary> - IDictionary<string, string> GetTranslations(); + IEnumerable<Translation> GetTranslations(); /// <summary>Get a translation for the current locale.</summary> /// <param name="key">The translation key.</param> diff --git a/src/StardewModdingAPI/Translation.cs b/src/StardewModdingAPI/Translation.cs index 764145ea..ce344f81 100644 --- a/src/StardewModdingAPI/Translation.cs +++ b/src/StardewModdingAPI/Translation.cs @@ -21,9 +21,6 @@ namespace StardewModdingAPI /// <summary>The locale for which the translation was fetched.</summary> private readonly string Locale; - /// <summary>The translation key.</summary> - private readonly string Key; - /// <summary>The underlying translation text.</summary> private readonly string Text; @@ -32,6 +29,13 @@ namespace StardewModdingAPI /********* + ** Accessors + *********/ + /// <summary>The original translation key.</summary> + public string Key { get; } + + + /********* ** Public methods *********/ /// <summary>Construct an isntance.</summary> |