diff --git a/src/NzbDrone.Core/Localization/LocalizationService.cs b/src/NzbDrone.Core/Localization/LocalizationService.cs index beba6aff9..66fda0b60 100644 --- a/src/NzbDrone.Core/Localization/LocalizationService.cs +++ b/src/NzbDrone.Core/Localization/LocalizationService.cs @@ -45,14 +45,14 @@ namespace NzbDrone.Core.Localization public Dictionary GetLocalizationDictionary() { - var language = IsoLanguages.Get((Language)_configService.UILanguage).TwoLetterCode; + var language = GetSetLanguageFileName(); return GetLocalizationDictionary(language); } public string GetLocalizedString(string phrase) { - var language = IsoLanguages.Get((Language)_configService.UILanguage).TwoLetterCode; + var language = GetSetLanguageFileName(); return GetLocalizedString(phrase, language); } @@ -66,7 +66,7 @@ namespace NzbDrone.Core.Localization if (language.IsNullOrWhiteSpace()) { - language = IsoLanguages.Get((Language)_configService.UILanguage).TwoLetterCode; + language = GetSetLanguageFileName(); } if (language == null) @@ -84,6 +84,19 @@ namespace NzbDrone.Core.Localization return phrase; } + private string GetSetLanguageFileName() + { + var isoLanguage = IsoLanguages.Get((Language)_configService.UILanguage); + var language = isoLanguage.TwoLetterCode; + + if (isoLanguage.CountryCode.IsNotNullOrWhiteSpace()) + { + language = string.Format("{0}_{1}", language, isoLanguage.CountryCode); + } + + return language; + } + private Dictionary GetLocalizationDictionary(string language) { if (string.IsNullOrEmpty(language)) @@ -109,9 +122,17 @@ namespace NzbDrone.Core.Localization var dictionary = new Dictionary(StringComparer.OrdinalIgnoreCase); var baseFilenamePath = Path.Combine(prefix, baseFilename); + var alternativeFilenamePath = Path.Combine(prefix, GetResourceFilename(culture)); await CopyInto(dictionary, baseFilenamePath).ConfigureAwait(false); + + if (culture.Contains("_")) + { + var languageBaseFilenamePath = Path.Combine(prefix, GetResourceFilename(culture.Split('_')[0])); + await CopyInto(dictionary, languageBaseFilenamePath).ConfigureAwait(false); + } + await CopyInto(dictionary, alternativeFilenamePath).ConfigureAwait(false); return dictionary; @@ -145,11 +166,11 @@ namespace NzbDrone.Core.Localization private static string GetResourceFilename(string culture) { - var parts = culture.Split('-'); + var parts = culture.Split('_'); if (parts.Length == 2) { - culture = parts[0].ToLowerInvariant() + "-" + parts[1].ToUpperInvariant(); + culture = parts[0].ToLowerInvariant() + "_" + parts[1].ToUpperInvariant(); } else {