Fixed: Localization for two part language dialects

Fixes #999
This commit is contained in:
Qstick
2022-05-13 17:49:27 -05:00
parent 5207527716
commit 166038a3b8

View File

@@ -45,14 +45,14 @@ namespace NzbDrone.Core.Localization
public Dictionary<string, string> GetLocalizationDictionary() public Dictionary<string, string> GetLocalizationDictionary()
{ {
var language = IsoLanguages.Get((Language)_configService.UILanguage).TwoLetterCode; var language = GetSetLanguageFileName();
return GetLocalizationDictionary(language); return GetLocalizationDictionary(language);
} }
public string GetLocalizedString(string phrase) public string GetLocalizedString(string phrase)
{ {
var language = IsoLanguages.Get((Language)_configService.UILanguage).TwoLetterCode; var language = GetSetLanguageFileName();
return GetLocalizedString(phrase, language); return GetLocalizedString(phrase, language);
} }
@@ -66,7 +66,7 @@ namespace NzbDrone.Core.Localization
if (language.IsNullOrWhiteSpace()) if (language.IsNullOrWhiteSpace())
{ {
language = IsoLanguages.Get((Language)_configService.UILanguage).TwoLetterCode; language = GetSetLanguageFileName();
} }
if (language == null) if (language == null)
@@ -84,6 +84,19 @@ namespace NzbDrone.Core.Localization
return phrase; 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<string, string> GetLocalizationDictionary(string language) private Dictionary<string, string> GetLocalizationDictionary(string language)
{ {
if (string.IsNullOrEmpty(language)) if (string.IsNullOrEmpty(language))
@@ -109,9 +122,17 @@ namespace NzbDrone.Core.Localization
var dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); var dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
var baseFilenamePath = Path.Combine(prefix, baseFilename); var baseFilenamePath = Path.Combine(prefix, baseFilename);
var alternativeFilenamePath = Path.Combine(prefix, GetResourceFilename(culture)); var alternativeFilenamePath = Path.Combine(prefix, GetResourceFilename(culture));
await CopyInto(dictionary, baseFilenamePath).ConfigureAwait(false); 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); await CopyInto(dictionary, alternativeFilenamePath).ConfigureAwait(false);
return dictionary; return dictionary;
@@ -145,11 +166,11 @@ namespace NzbDrone.Core.Localization
private static string GetResourceFilename(string culture) private static string GetResourceFilename(string culture)
{ {
var parts = culture.Split('-'); var parts = culture.Split('_');
if (parts.Length == 2) if (parts.Length == 2)
{ {
culture = parts[0].ToLowerInvariant() + "-" + parts[1].ToUpperInvariant(); culture = parts[0].ToLowerInvariant() + "_" + parts[1].ToUpperInvariant();
} }
else else
{ {