diff --git a/ErsatzTV/ErsatzTV.csproj b/ErsatzTV/ErsatzTV.csproj index 67e2b4313..2a9268bcb 100644 --- a/ErsatzTV/ErsatzTV.csproj +++ b/ErsatzTV/ErsatzTV.csproj @@ -14,6 +14,7 @@ latest-Recommended true true + en-US @@ -106,6 +107,10 @@ + + ResXFileCodeGenerator + MainLayout.Designer.cs + @@ -127,6 +132,14 @@ <_ContentIncludedByDefault Remove="wwwroot\css\open-iconic\README.md" /> + + + True + True + MainLayout.resx + + + diff --git a/ErsatzTV/Locals/Resources.pt-br.resx b/ErsatzTV/Locals/Resources.pt-br.resx deleted file mode 100644 index 25e61049c..000000000 --- a/ErsatzTV/Locals/Resources.pt-br.resx +++ /dev/null @@ -1,35 +0,0 @@ - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Canais - - - Perfis FFmpeg - - - Marcas d'água - - - Fontes de mídia - - - Mídias - - - Listas - - - Definições - - \ No newline at end of file diff --git a/ErsatzTV/Locals/Resources.resx b/ErsatzTV/Locals/Resources.resx index c88411598..125decc2e 100644 --- a/ErsatzTV/Locals/Resources.resx +++ b/ErsatzTV/Locals/Resources.resx @@ -1,24 +1,3 @@ - - Channels - - - FFmpeg Profiles - - - Watermarks - - - Media Sources - - - Media - - - Lists - - - Settings - diff --git a/ErsatzTV/Locals/Shared/MainLayout.Designer.cs b/ErsatzTV/Locals/Shared/MainLayout.Designer.cs new file mode 100644 index 000000000..660572191 --- /dev/null +++ b/ErsatzTV/Locals/Shared/MainLayout.Designer.cs @@ -0,0 +1,414 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ErsatzTV.Locals.Shared { + using System; + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class MainLayout { + + private static System.Resources.ResourceManager resourceMan; + + private static System.Globalization.CultureInfo resourceCulture; + + [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal MainLayout() { + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + internal static System.Resources.ResourceManager ResourceManager { + get { + if (object.Equals(null, resourceMan)) { + System.Resources.ResourceManager temp = new System.Resources.ResourceManager("ErsatzTV.Locals.Shared.MainLayout", typeof(MainLayout).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + internal static System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + internal static string ButtonChannels { + get { + return ResourceManager.GetString("ButtonChannels", resourceCulture); + } + } + + internal static string ButtonFFmpegProfiles { + get { + return ResourceManager.GetString("ButtonFFmpegProfiles", resourceCulture); + } + } + + internal static string ButtonWatermarks { + get { + return ResourceManager.GetString("ButtonWatermarks", resourceCulture); + } + } + + internal static string ButtonMediaSources { + get { + return ResourceManager.GetString("ButtonMediaSources", resourceCulture); + } + } + + internal static string ButtonMedia { + get { + return ResourceManager.GetString("ButtonMedia", resourceCulture); + } + } + + internal static string ButtonLists { + get { + return ResourceManager.GetString("ButtonLists", resourceCulture); + } + } + + internal static string ButtonSettings { + get { + return ResourceManager.GetString("ButtonSettings", resourceCulture); + } + } + + internal static string ButtonMediaSourcesLocal { + get { + return ResourceManager.GetString("ButtonMediaSourcesLocal", resourceCulture); + } + } + + internal static string ButtonMediaSourcesEmby { + get { + return ResourceManager.GetString("ButtonMediaSourcesEmby", resourceCulture); + } + } + + internal static string ButtonMediaSourcesJellyfin { + get { + return ResourceManager.GetString("ButtonMediaSourcesJellyfin", resourceCulture); + } + } + + internal static string ButtonMediaSourcesPlex { + get { + return ResourceManager.GetString("ButtonMediaSourcesPlex", resourceCulture); + } + } + + internal static string ButtonMediaLibraries { + get { + return ResourceManager.GetString("ButtonMediaLibraries", resourceCulture); + } + } + + internal static string ButtonMediaTrash { + get { + return ResourceManager.GetString("ButtonMediaTrash", resourceCulture); + } + } + + internal static string ButtonMediaTvShows { + get { + return ResourceManager.GetString("ButtonMediaTvShows", resourceCulture); + } + } + + internal static string ButtonMediaMovies { + get { + return ResourceManager.GetString("ButtonMediaMovies", resourceCulture); + } + } + + internal static string ButtonMediaMusic { + get { + return ResourceManager.GetString("ButtonMediaMusic", resourceCulture); + } + } + + internal static string ButtonMediaOtherVideos { + get { + return ResourceManager.GetString("ButtonMediaOtherVideos", resourceCulture); + } + } + + internal static string ButtonMediaSongs { + get { + return ResourceManager.GetString("ButtonMediaSongs", resourceCulture); + } + } + + internal static string ButtonMediaImages { + get { + return ResourceManager.GetString("ButtonMediaImages", resourceCulture); + } + } + + internal static string ButtonMediaRemoteStreams { + get { + return ResourceManager.GetString("ButtonMediaRemoteStreams", resourceCulture); + } + } + + internal static string ButtonListsManualCollections { + get { + return ResourceManager.GetString("ButtonListsManualCollections", resourceCulture); + } + } + + internal static string ButtonListsSmartCollections { + get { + return ResourceManager.GetString("ButtonListsSmartCollections", resourceCulture); + } + } + + internal static string ButtonListsMultiCollections { + get { + return ResourceManager.GetString("ButtonListsMultiCollections", resourceCulture); + } + } + + internal static string ButtonListsRerunCollections { + get { + return ResourceManager.GetString("ButtonListsRerunCollections", resourceCulture); + } + } + + internal static string ButtonListsPlaylists { + get { + return ResourceManager.GetString("ButtonListsPlaylists", resourceCulture); + } + } + + internal static string ButtonListsTraktLists { + get { + return ResourceManager.GetString("ButtonListsTraktLists", resourceCulture); + } + } + + internal static string ButtonListsFillerPresets { + get { + return ResourceManager.GetString("ButtonListsFillerPresets", resourceCulture); + } + } + + internal static string ButtonScheduling { + get { + return ResourceManager.GetString("ButtonScheduling", resourceCulture); + } + } + + internal static string ButtonSchedulingSchedules { + get { + return ResourceManager.GetString("ButtonSchedulingSchedules", resourceCulture); + } + } + + internal static string ButtonSchedulingBlocks { + get { + return ResourceManager.GetString("ButtonSchedulingBlocks", resourceCulture); + } + } + + internal static string ButtonSchedulingTemplates { + get { + return ResourceManager.GetString("ButtonSchedulingTemplates", resourceCulture); + } + } + + internal static string ButtonSchedulingDecos { + get { + return ResourceManager.GetString("ButtonSchedulingDecos", resourceCulture); + } + } + + internal static string ButtonSchedulingDecoTemplates { + get { + return ResourceManager.GetString("ButtonSchedulingDecoTemplates", resourceCulture); + } + } + + internal static string ButtonSchedulingPlayouts { + get { + return ResourceManager.GetString("ButtonSchedulingPlayouts", resourceCulture); + } + } + + internal static string ButtonSettingsFFmpeg { + get { + return ResourceManager.GetString("ButtonSettingsFFmpeg", resourceCulture); + } + } + + internal static string ButtonSettingsLogging { + get { + return ResourceManager.GetString("ButtonSettingsLogging", resourceCulture); + } + } + + internal static string ButtonSettingsHdHomeRun { + get { + return ResourceManager.GetString("ButtonSettingsHdHomeRun", resourceCulture); + } + } + + internal static string ButtonSettingsScanner { + get { + return ResourceManager.GetString("ButtonSettingsScanner", resourceCulture); + } + } + + internal static string ButtonSettingsPlayout { + get { + return ResourceManager.GetString("ButtonSettingsPlayout", resourceCulture); + } + } + + internal static string ButtonSettingsUi { + get { + return ResourceManager.GetString("ButtonSettingsUi", resourceCulture); + } + } + + internal static string ButtonSettingsXmltv { + get { + return ResourceManager.GetString("ButtonSettingsXmltv", resourceCulture); + } + } + + internal static string ButtonSupport { + get { + return ResourceManager.GetString("ButtonSupport", resourceCulture); + } + } + + internal static string ButtonSupportHealthChecks { + get { + return ResourceManager.GetString("ButtonSupportHealthChecks", resourceCulture); + } + } + + internal static string ButtonSupportLogs { + get { + return ResourceManager.GetString("ButtonSupportLogs", resourceCulture); + } + } + + internal static string ButtonSupportTroubleshooting { + get { + return ResourceManager.GetString("ButtonSupportTroubleshooting", resourceCulture); + } + } + + internal static string LabelErsatzTVVersion { + get { + return ResourceManager.GetString("LabelErsatzTVVersion", resourceCulture); + } + } + + internal static string LabelSearchTargetChannel { + get { + return ResourceManager.GetString("LabelSearchTargetChannel", resourceCulture); + } + } + + internal static string LabelSearchTargetFFmpegProfile { + get { + return ResourceManager.GetString("LabelSearchTargetFFmpegProfile", resourceCulture); + } + } + + internal static string LabelSearchTargetChannelWatermark { + get { + return ResourceManager.GetString("LabelSearchTargetChannelWatermark", resourceCulture); + } + } + + internal static string LabelSearchTargetCollection { + get { + return ResourceManager.GetString("LabelSearchTargetCollection", resourceCulture); + } + } + + internal static string LabelSearchTargetMultiCollection { + get { + return ResourceManager.GetString("LabelSearchTargetMultiCollection", resourceCulture); + } + } + + internal static string LabelSearchTargetSmartCollection { + get { + return ResourceManager.GetString("LabelSearchTargetSmartCollection", resourceCulture); + } + } + + internal static string LabelSearchTargetSchedule { + get { + return ResourceManager.GetString("LabelSearchTargetSchedule", resourceCulture); + } + } + + internal static string LabelSearchTargetScheduleItems { + get { + return ResourceManager.GetString("LabelSearchTargetScheduleItems", resourceCulture); + } + } + + internal static string ButtonM3U { + get { + return ResourceManager.GetString("ButtonM3U", resourceCulture); + } + } + + internal static string ButtonXmltv { + get { + return ResourceManager.GetString("ButtonXmltv", resourceCulture); + } + } + + internal static string ButtonApi { + get { + return ResourceManager.GetString("ButtonApi", resourceCulture); + } + } + + internal static string ButtonDocumentation { + get { + return ResourceManager.GetString("ButtonDocumentation", resourceCulture); + } + } + + internal static string ButtonDiscord { + get { + return ResourceManager.GetString("ButtonDiscord", resourceCulture); + } + } + + internal static string ButtonGitHub { + get { + return ResourceManager.GetString("ButtonGitHub", resourceCulture); + } + } + + internal static string ButtonLogout { + get { + return ResourceManager.GetString("ButtonLogout", resourceCulture); + } + } + } +} diff --git a/ErsatzTV/Locals/Shared/MainLayout.pt-br.resx b/ErsatzTV/Locals/Shared/MainLayout.pt-br.resx new file mode 100644 index 000000000..5991e2984 --- /dev/null +++ b/ErsatzTV/Locals/Shared/MainLayout.pt-br.resx @@ -0,0 +1,59 @@ + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Canais + + + Perfis FFmpeg + + + Marcas d'água + + + Fontes de mídia + + + Mídias + + + Listas + + + Definições + + + Séries + + + Lixo + + + Filmes + + + Vídeos de música + + + Bibliotecas + + + Horários + + + Predefinições de preenchimento + + + Listas Trakt + + diff --git a/ErsatzTV/Locals/Shared/MainLayout.resx b/ErsatzTV/Locals/Shared/MainLayout.resx new file mode 100644 index 000000000..65616f806 --- /dev/null +++ b/ErsatzTV/Locals/Shared/MainLayout.resx @@ -0,0 +1,204 @@ + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Channels + + + FFmpeg Profiles + + + Watermarks + + + Media Sources + + + Media + + + Lists + + + Settings + + + Local + + + Emby + + + Jellyfin + + + Plex + + + Libraries + + + Trash + + + TV Shows + + + Movies + + + Music + + + Other Videos + + + Songs + + + Images + + + Remote Streams + + + Manual Collections + + + Smart Collections + + + Multi Collections + + + Rerun Collections + + + Playlists + + + Trakt Lists + + + Filler Presets + + + Scheduling + + + Schedules + + + Blocks + + + Templates + + + Decos + + + Deco Templates + + + Playouts + + + FFmpeg + + + Logging + + + HDHomeRun + + + Scanner + + + Playout + + + UI + + + XMLTV + + + Support + + + Health Checks + + + Logs + + + Troubleshooting + + + ErsatzTV Version + + + Channel + + + FFmpeg Profile + + + Channel Watermark + + + Collection + + + Multi Collection + + + Smart Collection + + + Schedule + + + Schedule Items + + + M3U + + + XMLTV + + + API + + + Documentation + + + Discord + + + GitHub + + + Logout + + diff --git a/ErsatzTV/Shared/MainLayout.razor b/ErsatzTV/Shared/MainLayout.razor index 4d8596d55..81a3e175b 100644 --- a/ErsatzTV/Shared/MainLayout.razor +++ b/ErsatzTV/Shared/MainLayout.razor @@ -16,7 +16,7 @@ @inject ISearchTargets SearchTargets; @inject ICourier Courier @inject IHealthCheckService HealthCheckService; -@inject IStringLocalizer StringLocalizer; +@inject IStringLocalizer StringLocalizer; @@ -63,14 +63,14 @@ @( searchTarget.Kind switch { - SearchTargetKind.Channel => "Channel", - SearchTargetKind.FFmpegProfile => "FFmpeg Profile", - SearchTargetKind.ChannelWatermark => "Channel Watermark", - SearchTargetKind.Collection => "Collection", - SearchTargetKind.MultiCollection => "Multi Collection", - SearchTargetKind.SmartCollection => "Smart Collection", - SearchTargetKind.Schedule => "Schedule", - SearchTargetKind.ScheduleItems => "Schedule Items", + SearchTargetKind.Channel => StringLocalizer["LabelSearchTargetChannel"], + SearchTargetKind.FFmpegProfile => StringLocalizer["LabelSearchTargetFFmpegProfile"], + SearchTargetKind.ChannelWatermark => StringLocalizer["LabelSearchTargetChannelWatermark"], + SearchTargetKind.Collection => StringLocalizer["LabelSearchTargetCollection"], + SearchTargetKind.MultiCollection => StringLocalizer["LabelSearchTargetMultiCollection"], + SearchTargetKind.SmartCollection => StringLocalizer["LabelSearchTargetSmartCollection"], + SearchTargetKind.Schedule => StringLocalizer["LabelSearchTargetSchedule"], + SearchTargetKind.ScheduleItems => StringLocalizer["LabelSearchTargetScheduleItems"], _ => string.Empty }) @@ -91,23 +91,23 @@ { @System.Environment.MachineName } - M3U - XMLTV - API + @StringLocalizer["ButtonM3U"] + @StringLocalizer["ButtonXmltv"] + @StringLocalizer["ButtonApi"] } @* API *@ - + - + - + - + @@ -118,55 +118,55 @@ { - @StringLocalizer["ButtonMainMenuChannels"] - @StringLocalizer["ButtonMainMenuFFmpegProfiles"] - @StringLocalizer["ButtonMainMenuWatermarks"] - - Local - Emby - Jellyfin - Plex + @StringLocalizer["ButtonChannels"] + @StringLocalizer["ButtonFFmpegProfiles"] + @StringLocalizer["ButtonWatermarks"] + + @StringLocalizer["ButtonMediaSourcesLocal"] + @StringLocalizer["ButtonMediaSourcesEmby"] + @StringLocalizer["ButtonMediaSourcesJellyfin"] + @StringLocalizer["ButtonMediaSourcesPlex"] - - Libraries - Trash - TV Shows - Movies - Music - Other Videos - Songs - Images - Remote Streams + + @StringLocalizer["ButtonMediaLibraries"] + @StringLocalizer["ButtonMediaTrash"] + @StringLocalizer["ButtonMediaTvShows"] + @StringLocalizer["ButtonMediaMovies"] + @StringLocalizer["ButtonMediaMusic"] + @StringLocalizer["ButtonMediaOtherVideos"] + @StringLocalizer["ButtonMediaSongs"] + @StringLocalizer["ButtonMediaImages"] + @StringLocalizer["ButtonMediaRemoteStreams"] - - Manual Collections - Smart Collections - Multi Collections - Rerun Collections - Playlists - Trakt Lists - Filler Presets + + @StringLocalizer["ButtonListsManualCollections"] + @StringLocalizer["ButtonListsSmartCollections"] + @StringLocalizer["ButtonListsMultiCollections"] + @StringLocalizer["ButtonListsRerunCollections"] + @StringLocalizer["ButtonListsPlaylists"] + @StringLocalizer["ButtonListsTraktLists"] + @StringLocalizer["ButtonListsFillerPresets"] @if (_playoutWarnings > 0) { - Scheduling + @StringLocalizer["ButtonScheduling"] } else { - @:Scheduling + @StringLocalizer["ButtonScheduling"] } - Schedules - Blocks - Templates - Decos - Deco Templates + @StringLocalizer["ButtonSchedulingSchedules"] + @StringLocalizer["ButtonSchedulingBlocks"] + @StringLocalizer["ButtonSchedulingTemplates"] + @StringLocalizer["ButtonSchedulingDecos"] + @StringLocalizer["ButtonSchedulingDecoTemplates"] @if (_playoutWarnings > 0) { @@ -174,44 +174,44 @@ Color="Color.Warning" Origin="Origin.CenterRight" BadgeClass="mx-3"> - Playouts + @StringLocalizer["ButtonSchedulingPlayouts"] } else { - @:Playouts + @StringLocalizer["ButtonSchedulingPlayouts"] } - - FFmpeg - Logging - HDHomeRun - Scanner - Playout - UI - XMLTV + + @StringLocalizer["ButtonSettingsFFmpeg"] + @StringLocalizer["ButtonSettingsLogging"] + @StringLocalizer["ButtonSettingsHdHomeRun"] + @StringLocalizer["ButtonSettingsScanner"] + @StringLocalizer["ButtonSettingsPlayout"] + @StringLocalizer["ButtonSettingsUi"] + @StringLocalizer["ButtonSettingsXmltv"] @if (_errors > 0) { - Support + @StringLocalizer["ButtonSupport"] } else if (_warnings > 0) { - Support + @StringLocalizer["ButtonSupport"] } else { - @:Support + @StringLocalizer["ButtonSupport"] } @@ -222,7 +222,7 @@ Color="Color.Error" Origin="Origin.CenterRight" BadgeClass="mx-3"> - Health Checks + @StringLocalizer["ButtonSupportHealthChecks"] } else if (_warnings > 0) @@ -231,21 +231,21 @@ Color="Color.Warning" Origin="Origin.CenterRight" BadgeClass="mx-3"> - Health Checks + @StringLocalizer["ButtonSupportHealthChecks"] } else { - @:Health Checks + @StringLocalizer["ButtonSupportHealthChecks"] } - Logs - Troubleshooting + @StringLocalizer["ButtonSupportLogs"] + @StringLocalizer["ButtonSupportTroubleshooting"] - ErsatzTV Version + @StringLocalizer["LabelErsatzTVVersion"] @InfoVersion @if (BuildConfiguration != "release") {