Fixed: Localization for two part language dialects

Fixes #999
pull/1001/head
Qstick 2 years ago
parent 5207527716
commit 166038a3b8

@ -45,14 +45,14 @@ namespace NzbDrone.Core.Localization
public Dictionary<string, string> 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<string, string> GetLocalizationDictionary(string language)
{
if (string.IsNullOrEmpty(language))
@ -109,9 +122,17 @@ namespace NzbDrone.Core.Localization
var dictionary = new Dictionary<string, string>(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
{

Loading…
Cancel
Save