From 833774aafc702a82c87f2037ac4e04987c942a46 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Sat, 25 Feb 2017 10:52:10 +0100 Subject: [PATCH] Don't complain about missing en dialects --- ArchiSteamFarm/Program.cs | 15 +++++++++++++-- GUI/Program.cs | 27 +++++++++++++++++++++------ 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/ArchiSteamFarm/Program.cs b/ArchiSteamFarm/Program.cs index 13ac54ec1..c136144c0 100644 --- a/ArchiSteamFarm/Program.cs +++ b/ArchiSteamFarm/Program.cs @@ -252,8 +252,19 @@ namespace ArchiSteamFarm { } if (currentResourceSetCount < defaultResourceSetCount) { - float translationCompleteness = currentResourceSetCount / (float) defaultResourceSetCount; - ASF.ArchiLogger.LogGenericInfo(string.Format(Strings.TranslationIncomplete, CultureInfo.CurrentCulture.Name, translationCompleteness.ToString("P1"))); + // We don't want to report "en-AU" as 0.00% only because we don't have it as a dialect, if "en" is available and translated + // This typically will work only for English, as e.g. "nl-BE" doesn't fallback to "nl-NL", but "nl", and "nl" will be empty + CultureInfo neutralCulture = CultureInfo.CurrentCulture.Parent; + ushort neutralResourceSetCount = 0; + ResourceSet neutralResourceSet = Strings.ResourceManager.GetResourceSet(neutralCulture, true, false); + if (neutralResourceSet != null) { + neutralResourceSetCount = (ushort) neutralResourceSet.Cast().Count(); + } + + if (neutralResourceSetCount < defaultResourceSetCount) { + float translationCompleteness = currentResourceSetCount / (float) defaultResourceSetCount; + ASF.ArchiLogger.LogGenericInfo(string.Format(Strings.TranslationIncomplete, CultureInfo.CurrentCulture.Name, translationCompleteness.ToString("P1"))); + } } } diff --git a/GUI/Program.cs b/GUI/Program.cs index d7e8afba0..d02120f3a 100644 --- a/GUI/Program.cs +++ b/GUI/Program.cs @@ -141,21 +141,36 @@ namespace ArchiSteamFarm { } } - int defaultResourceSetCount = 0; + ushort defaultResourceSetCount = 0; ResourceSet defaultResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.GetCultureInfo("en-US"), true, true); if (defaultResourceSet != null) { - defaultResourceSetCount = defaultResourceSet.Cast().Count(); + defaultResourceSetCount = (ushort) defaultResourceSet.Cast().Count(); } - int currentResourceSetCount = 0; + if (defaultResourceSetCount == 0) { + return; + } + + ushort currentResourceSetCount = 0; ResourceSet currentResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, false); if (currentResourceSet != null) { - currentResourceSetCount = currentResourceSet.Cast().Count(); + currentResourceSetCount = (ushort) currentResourceSet.Cast().Count(); } if (currentResourceSetCount < defaultResourceSetCount) { - float translationCompleteness = currentResourceSetCount / (float) defaultResourceSetCount; - ASF.ArchiLogger.LogGenericInfo(string.Format(Strings.TranslationIncomplete, CultureInfo.CurrentCulture.Name, translationCompleteness.ToString("P1"))); + // We don't want to report "en-AU" as 0.00% only because we don't have it as a dialect, if "en" is available and translated + // This typically will work only for English, as e.g. "nl-BE" doesn't fallback to "nl-NL", but "nl", and "nl" will be empty + CultureInfo neutralCulture = CultureInfo.CurrentCulture.Parent; + ushort neutralResourceSetCount = 0; + ResourceSet neutralResourceSet = Strings.ResourceManager.GetResourceSet(neutralCulture, true, false); + if (neutralResourceSet != null) { + neutralResourceSetCount = (ushort) neutralResourceSet.Cast().Count(); + } + + if (neutralResourceSetCount < defaultResourceSetCount) { + float translationCompleteness = currentResourceSetCount / (float) defaultResourceSetCount; + ASF.ArchiLogger.LogGenericInfo(string.Format(Strings.TranslationIncomplete, CultureInfo.CurrentCulture.Name, translationCompleteness.ToString("P1"))); + } } }