using System.Collections.Generic;
using System.Linq;
using Flow.Launcher.Plugin.WindowsSettings.Classes;
using Flow.Launcher.Plugin.WindowsSettings.Properties;
namespace Flow.Launcher.Plugin.WindowsSettings.Helper
{
///
/// Helper class to easier work with translations.
///
internal static class TranslationHelper
{
///
/// Translate all settings of the given list with .
///
/// The list that contains to translate.
internal static IEnumerable TranslateAllSettings(in IEnumerable? settingsList)
{
var translatedSettings = new List();
if (settingsList is null)
return new List();
foreach (var settings in settingsList)
{
var area = Resources.ResourceManager.GetString($"Area{settings.Area}");
var name = Resources.ResourceManager.GetString(settings.Name);
var type = Resources.ResourceManager.GetString(settings.Type);
if (string.IsNullOrEmpty(area))
{
Log.Warn($"Resource string for [Area{settings.Area}] not found", typeof(Main));
}
if (string.IsNullOrEmpty(name))
{
Log.Warn($"Resource string for [{settings.Name}] not found", typeof(Main));
}
if (string.IsNullOrEmpty(type))
{
Log.Warn($"Resource string for [{settings.Type}] not found", typeof(Main));
}
if (!string.IsNullOrEmpty(settings.Note))
{
var note = Resources.ResourceManager.GetString(settings.Note);
settings.Note = note ?? settings.Note ?? string.Empty;
}
List? translatedAltNames = null;
if (settings.AltNames is not null && settings.AltNames.Any())
{
translatedAltNames = new List();
foreach (var altName in settings.AltNames)
{
if (string.IsNullOrWhiteSpace(altName))
{
continue;
}
var translatedAltName = Resources.ResourceManager.GetString(altName);
translatedAltNames.Add(translatedAltName ?? altName);
}
}
var translatedSetting = settings with
{
Area = area ?? settings.Area,
Name = name ?? settings.Name,
DisplayType = type ?? settings.Type,
AltNames = translatedAltNames
};
translatedSettings.Add(translatedSetting);
}
return translatedSettings;
}
}
}