Browse Source

improve resource organization

pull/2810/head
Jason Dove 6 months ago
parent
commit
5686eb1c6e
No known key found for this signature in database
  1. 13
      ErsatzTV/ErsatzTV.csproj
  2. 35
      ErsatzTV/Locals/Resources.pt-br.resx
  3. 21
      ErsatzTV/Locals/Resources.resx
  4. 414
      ErsatzTV/Locals/Shared/MainLayout.Designer.cs
  5. 59
      ErsatzTV/Locals/Shared/MainLayout.pt-br.resx
  6. 204
      ErsatzTV/Locals/Shared/MainLayout.resx
  7. 136
      ErsatzTV/Shared/MainLayout.razor

13
ErsatzTV/ErsatzTV.csproj

@ -14,6 +14,7 @@
<AnalysisLevel>latest-Recommended</AnalysisLevel> <AnalysisLevel>latest-Recommended</AnalysisLevel>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors> <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<RequiresAspNetWebAssets>true</RequiresAspNetWebAssets> <RequiresAspNetWebAssets>true</RequiresAspNetWebAssets>
<NeutralLanguage>en-US</NeutralLanguage>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
@ -106,6 +107,10 @@
<EmbeddedResource Include="Resources\empty.sqlite3" /> <EmbeddedResource Include="Resources\empty.sqlite3" />
<EmbeddedResource Include="Resources\test.avs" /> <EmbeddedResource Include="Resources\test.avs" />
<EmbeddedResource Include="Resources\Templates\_remoteStream.sbntxt" /> <EmbeddedResource Include="Resources\Templates\_remoteStream.sbntxt" />
<EmbeddedResource Update="Locals\Shared\MainLayout.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>MainLayout.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -127,6 +132,14 @@
<_ContentIncludedByDefault Remove="wwwroot\css\open-iconic\README.md" /> <_ContentIncludedByDefault Remove="wwwroot\css\open-iconic\README.md" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Compile Update="Locals\Shared\MainLayout.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>MainLayout.resx</DependentUpon>
</Compile>
</ItemGroup>
<ProjectExtensions> <ProjectExtensions>
<VisualStudio> <VisualStudio>
<UserProperties client-app_4package_1json__JsonSchema="https://json.schemastore.org/phraseapp.json" /> <UserProperties client-app_4package_1json__JsonSchema="https://json.schemastore.org/phraseapp.json" />

35
ErsatzTV/Locals/Resources.pt-br.resx

@ -1,35 +0,0 @@
<root>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ButtonMainMenuChannels" xml:space="preserve">
<value>Canais</value>
</data>
<data name="ButtonMainMenuFFmpegProfiles" xml:space="preserve">
<value>Perfis FFmpeg</value>
</data>
<data name="ButtonMainMenuWatermarks" xml:space="preserve">
<value>Marcas d'água</value>
</data>
<data name="ButtonMainMenuMediaSources" xml:space="preserve">
<value>Fontes de mídia</value>
</data>
<data name="ButtonMainMenuMedia" xml:space="preserve">
<value>Mídias</value>
</data>
<data name="ButtonMainMenuLists" xml:space="preserve">
<value>Listas</value>
</data>
<data name="ButtonMainMenuSettings" xml:space="preserve">
<value>Definições</value>
</data>
</root>

21
ErsatzTV/Locals/Resources.resx

@ -1,24 +1,3 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<data name="ButtonMainMenuChannels" xml:space="preserve">
<value>Channels</value>
</data>
<data name="ButtonMainMenuFFmpegProfiles" xml:space="preserve">
<value>FFmpeg Profiles</value>
</data>
<data name="ButtonMainMenuWatermarks" xml:space="preserve">
<value>Watermarks</value>
</data>
<data name="ButtonMainMenuMediaSources" xml:space="preserve">
<value>Media Sources</value>
</data>
<data name="ButtonMainMenuMedia" xml:space="preserve">
<value>Media</value>
</data>
<data name="ButtonMainMenuLists" xml:space="preserve">
<value>Lists</value>
</data>
<data name="ButtonMainMenuSettings" xml:space="preserve">
<value>Settings</value>
</data>
</root> </root>

414
ErsatzTV/Locals/Shared/MainLayout.Designer.cs generated

@ -0,0 +1,414 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
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);
}
}
}
}

59
ErsatzTV/Locals/Shared/MainLayout.pt-br.resx

@ -0,0 +1,59 @@
<root>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ButtonChannels" xml:space="preserve">
<value>Canais</value>
</data>
<data name="ButtonFFmpegProfiles" xml:space="preserve">
<value>Perfis FFmpeg</value>
</data>
<data name="ButtonWatermarks" xml:space="preserve">
<value>Marcas d'água</value>
</data>
<data name="ButtonMediaSources" xml:space="preserve">
<value>Fontes de mídia</value>
</data>
<data name="ButtonMedia" xml:space="preserve">
<value>Mídias</value>
</data>
<data name="ButtonLists" xml:space="preserve">
<value>Listas</value>
</data>
<data name="ButtonSettings" xml:space="preserve">
<value>Definições</value>
</data>
<data name="ButtonMediaTvShows" xml:space="preserve">
<value>Séries</value>
</data>
<data name="ButtonMediaTrash" xml:space="preserve">
<value>Lixo</value>
</data>
<data name="ButtonMediaMovies" xml:space="preserve">
<value>Filmes</value>
</data>
<data name="ButtonMediaMusic" xml:space="preserve">
<value>Vídeos de música</value>
</data>
<data name="ButtonMediaLibraries" xml:space="preserve">
<value>Bibliotecas</value>
</data>
<data name="ButtonSchedulingSchedules" xml:space="preserve">
<value>Horários</value>
</data>
<data name="ButtonListsFillerPresets" xml:space="preserve">
<value>Predefinições de preenchimento</value>
</data>
<data name="ButtonListsTraktLists" xml:space="preserve">
<value>Listas Trakt</value>
</data>
</root>

204
ErsatzTV/Locals/Shared/MainLayout.resx

@ -0,0 +1,204 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ButtonChannels" xml:space="preserve">
<value>Channels</value>
</data>
<data name="ButtonFFmpegProfiles" xml:space="preserve">
<value>FFmpeg Profiles</value>
</data>
<data name="ButtonWatermarks" xml:space="preserve">
<value>Watermarks</value>
</data>
<data name="ButtonMediaSources" xml:space="preserve">
<value>Media Sources</value>
</data>
<data name="ButtonMedia" xml:space="preserve">
<value>Media</value>
</data>
<data name="ButtonLists" xml:space="preserve">
<value>Lists</value>
</data>
<data name="ButtonSettings" xml:space="preserve">
<value>Settings</value>
</data>
<data name="ButtonMediaSourcesLocal" xml:space="preserve">
<value>Local</value>
</data>
<data name="ButtonMediaSourcesEmby" xml:space="preserve">
<value>Emby</value>
</data>
<data name="ButtonMediaSourcesJellyfin" xml:space="preserve">
<value>Jellyfin</value>
</data>
<data name="ButtonMediaSourcesPlex" xml:space="preserve">
<value>Plex</value>
</data>
<data name="ButtonMediaLibraries" xml:space="preserve">
<value>Libraries</value>
</data>
<data name="ButtonMediaTrash" xml:space="preserve">
<value>Trash</value>
</data>
<data name="ButtonMediaTvShows" xml:space="preserve">
<value>TV Shows</value>
</data>
<data name="ButtonMediaMovies" xml:space="preserve">
<value>Movies</value>
</data>
<data name="ButtonMediaMusic" xml:space="preserve">
<value>Music</value>
</data>
<data name="ButtonMediaOtherVideos" xml:space="preserve">
<value>Other Videos</value>
</data>
<data name="ButtonMediaSongs" xml:space="preserve">
<value>Songs</value>
</data>
<data name="ButtonMediaImages" xml:space="preserve">
<value>Images</value>
</data>
<data name="ButtonMediaRemoteStreams" xml:space="preserve">
<value>Remote Streams</value>
</data>
<data name="ButtonListsManualCollections" xml:space="preserve">
<value>Manual Collections</value>
</data>
<data name="ButtonListsSmartCollections" xml:space="preserve">
<value>Smart Collections</value>
</data>
<data name="ButtonListsMultiCollections" xml:space="preserve">
<value>Multi Collections</value>
</data>
<data name="ButtonListsRerunCollections" xml:space="preserve">
<value>Rerun Collections</value>
</data>
<data name="ButtonListsPlaylists" xml:space="preserve">
<value>Playlists</value>
</data>
<data name="ButtonListsTraktLists" xml:space="preserve">
<value>Trakt Lists</value>
</data>
<data name="ButtonListsFillerPresets" xml:space="preserve">
<value>Filler Presets</value>
</data>
<data name="ButtonScheduling" xml:space="preserve">
<value>Scheduling</value>
</data>
<data name="ButtonSchedulingSchedules" xml:space="preserve">
<value>Schedules</value>
</data>
<data name="ButtonSchedulingBlocks" xml:space="preserve">
<value>Blocks</value>
</data>
<data name="ButtonSchedulingTemplates" xml:space="preserve">
<value>Templates</value>
</data>
<data name="ButtonSchedulingDecos" xml:space="preserve">
<value>Decos</value>
</data>
<data name="ButtonSchedulingDecoTemplates" xml:space="preserve">
<value>Deco Templates</value>
</data>
<data name="ButtonSchedulingPlayouts" xml:space="preserve">
<value>Playouts</value>
</data>
<data name="ButtonSettingsFFmpeg" xml:space="preserve">
<value>FFmpeg</value>
</data>
<data name="ButtonSettingsLogging" xml:space="preserve">
<value>Logging</value>
</data>
<data name="ButtonSettingsHdHomeRun" xml:space="preserve">
<value>HDHomeRun</value>
</data>
<data name="ButtonSettingsScanner" xml:space="preserve">
<value>Scanner</value>
</data>
<data name="ButtonSettingsPlayout" xml:space="preserve">
<value>Playout</value>
</data>
<data name="ButtonSettingsUi" xml:space="preserve">
<value>UI</value>
</data>
<data name="ButtonSettingsXmltv" xml:space="preserve">
<value>XMLTV</value>
</data>
<data name="ButtonSupport" xml:space="preserve">
<value>Support</value>
</data>
<data name="ButtonSupportHealthChecks" xml:space="preserve">
<value>Health Checks</value>
</data>
<data name="ButtonSupportLogs" xml:space="preserve">
<value>Logs</value>
</data>
<data name="ButtonSupportTroubleshooting" xml:space="preserve">
<value>Troubleshooting</value>
</data>
<data name="LabelErsatzTVVersion" xml:space="preserve">
<value>ErsatzTV Version</value>
</data>
<data name="LabelSearchTargetChannel" xml:space="preserve">
<value>Channel</value>
</data>
<data name="LabelSearchTargetFFmpegProfile" xml:space="preserve">
<value>FFmpeg Profile</value>
</data>
<data name="LabelSearchTargetChannelWatermark" xml:space="preserve">
<value>Channel Watermark</value>
</data>
<data name="LabelSearchTargetCollection" xml:space="preserve">
<value>Collection</value>
</data>
<data name="LabelSearchTargetMultiCollection" xml:space="preserve">
<value>Multi Collection</value>
</data>
<data name="LabelSearchTargetSmartCollection" xml:space="preserve">
<value>Smart Collection</value>
</data>
<data name="LabelSearchTargetSchedule" xml:space="preserve">
<value>Schedule</value>
</data>
<data name="LabelSearchTargetScheduleItems" xml:space="preserve">
<value>Schedule Items</value>
</data>
<data name="ButtonM3U" xml:space="preserve">
<value>M3U</value>
</data>
<data name="ButtonXmltv" xml:space="preserve">
<value>XMLTV</value>
</data>
<data name="ButtonApi" xml:space="preserve">
<value>API</value>
</data>
<data name="ButtonDocumentation" xml:space="preserve">
<value>Documentation</value>
</data>
<data name="ButtonDiscord" xml:space="preserve">
<value>Discord</value>
</data>
<data name="ButtonGitHub" xml:space="preserve">
<value>GitHub</value>
</data>
<data name="ButtonLogout" xml:space="preserve">
<value>Logout</value>
</data>
</root>

136
ErsatzTV/Shared/MainLayout.razor

@ -16,7 +16,7 @@
@inject ISearchTargets SearchTargets; @inject ISearchTargets SearchTargets;
@inject ICourier Courier @inject ICourier Courier
@inject IHealthCheckService HealthCheckService; @inject IHealthCheckService HealthCheckService;
@inject IStringLocalizer<Resources> StringLocalizer; @inject IStringLocalizer<ErsatzTV.Locals.Shared.MainLayout> StringLocalizer;
<MudThemeProvider Theme="ErsatzTvTheme" IsDarkMode="_isDarkMode"/> <MudThemeProvider Theme="ErsatzTvTheme" IsDarkMode="_isDarkMode"/>
<MudDialogProvider BackdropClick="false"/> <MudDialogProvider BackdropClick="false"/>
@ -63,14 +63,14 @@
@( @(
searchTarget.Kind switch searchTarget.Kind switch
{ {
SearchTargetKind.Channel => "Channel", SearchTargetKind.Channel => StringLocalizer["LabelSearchTargetChannel"],
SearchTargetKind.FFmpegProfile => "FFmpeg Profile", SearchTargetKind.FFmpegProfile => StringLocalizer["LabelSearchTargetFFmpegProfile"],
SearchTargetKind.ChannelWatermark => "Channel Watermark", SearchTargetKind.ChannelWatermark => StringLocalizer["LabelSearchTargetChannelWatermark"],
SearchTargetKind.Collection => "Collection", SearchTargetKind.Collection => StringLocalizer["LabelSearchTargetCollection"],
SearchTargetKind.MultiCollection => "Multi Collection", SearchTargetKind.MultiCollection => StringLocalizer["LabelSearchTargetMultiCollection"],
SearchTargetKind.SmartCollection => "Smart Collection", SearchTargetKind.SmartCollection => StringLocalizer["LabelSearchTargetSmartCollection"],
SearchTargetKind.Schedule => "Schedule", SearchTargetKind.Schedule => StringLocalizer["LabelSearchTargetSchedule"],
SearchTargetKind.ScheduleItems => "Schedule Items", SearchTargetKind.ScheduleItems => StringLocalizer["LabelSearchTargetScheduleItems"],
_ => string.Empty _ => string.Empty
}) })
</MudText> </MudText>
@ -91,23 +91,23 @@
{ {
<MudText Color="Color.Warning" Class="mx-4">@System.Environment.MachineName</MudText> <MudText Color="Color.Warning" Class="mx-4">@System.Environment.MachineName</MudText>
} }
<MudLink Color="Color.Info" Href="iptv/channels.m3u" Target="_blank" Underline="Underline.None">M3U</MudLink> <MudLink Color="Color.Info" Href="iptv/channels.m3u" Target="_blank" Underline="Underline.None">@StringLocalizer["ButtonM3U"]</MudLink>
<MudLink Color="Color.Info" Href="iptv/xmltv.xml" Target="_blank" Class="mx-4" Underline="Underline.None">XMLTV</MudLink> <MudLink Color="Color.Info" Href="iptv/xmltv.xml" Target="_blank" Class="mx-4" Underline="Underline.None">@StringLocalizer["ButtonXmltv"]</MudLink>
<MudLink Color="Color.Primary" Href="docs" Target="_blank" Underline="Underline.None" Style="font-weight: bold">API</MudLink> <MudLink Color="Color.Primary" Href="docs" Target="_blank" Underline="Underline.None" Style="font-weight: bold">@StringLocalizer["ButtonApi"]</MudLink>
} }
@* <MudLink Color="Color.Info" Href="/swagger" Target="_blank" Class="mr-4" Underline="Underline.None">API</MudLink> *@ @* <MudLink Color="Color.Info" Href="/swagger" Target="_blank" Class="mr-4" Underline="Underline.None">API</MudLink> *@
<MudTooltip Text="Documentation"> <MudTooltip Text="@StringLocalizer["ButtonDocumentation"]">
<MudIconButton Icon="@Icons.Material.Filled.Help" Color="Color.Primary" Href="https://ersatztv.org" Target="_blank"/> <MudIconButton Icon="@Icons.Material.Filled.Help" Color="Color.Primary" Href="https://ersatztv.org" Target="_blank"/>
</MudTooltip> </MudTooltip>
<MudTooltip Text="Discord"> <MudTooltip Text="@StringLocalizer["ButtonDiscord"]">
<MudIconButton Icon="@Icons.Custom.Brands.Discord" Color="Color.Primary" Href="https://discord.ersatztv.org" Target="_blank"/> <MudIconButton Icon="@Icons.Custom.Brands.Discord" Color="Color.Primary" Href="https://discord.ersatztv.org" Target="_blank"/>
</MudTooltip> </MudTooltip>
<MudTooltip Text="GitHub"> <MudTooltip Text="@StringLocalizer["ButtonGitHub"]">
<MudIconButton Icon="@Icons.Custom.Brands.GitHub" Color="Color.Primary" Href="https://github.com/ErsatzTV/ErsatzTV" Target="_blank"/> <MudIconButton Icon="@Icons.Custom.Brands.GitHub" Color="Color.Primary" Href="https://github.com/ErsatzTV/ErsatzTV" Target="_blank"/>
</MudTooltip> </MudTooltip>
<AuthorizeView> <AuthorizeView>
<form action="/account/logout" method="post"> <form action="/account/logout" method="post">
<MudTooltip Text="Logout"> <MudTooltip Text="@StringLocalizer["ButtonLogout"]">
<MudIconButton Icon="@Icons.Material.Filled.Logout" Color="Color.Secondary" ButtonType="ButtonType.Submit"/> <MudIconButton Icon="@Icons.Material.Filled.Logout" Color="Color.Secondary" ButtonType="ButtonType.Submit"/>
</MudTooltip> </MudTooltip>
</form> </form>
@ -118,55 +118,55 @@
{ {
<MudDrawer @bind-Open="@_drawerIsOpen" Elevation="2" ClipMode="DrawerClipMode.Always"> <MudDrawer @bind-Open="@_drawerIsOpen" Elevation="2" ClipMode="DrawerClipMode.Always">
<MudNavMenu> <MudNavMenu>
<MudNavLink Href="channels">@StringLocalizer["ButtonMainMenuChannels"]</MudNavLink> <MudNavLink Href="channels">@StringLocalizer["ButtonChannels"]</MudNavLink>
<MudNavLink Href="ffmpeg">@StringLocalizer["ButtonMainMenuFFmpegProfiles"]</MudNavLink> <MudNavLink Href="ffmpeg">@StringLocalizer["ButtonFFmpegProfiles"]</MudNavLink>
<MudNavLink Href="watermarks">@StringLocalizer["ButtonMainMenuWatermarks"]</MudNavLink> <MudNavLink Href="watermarks">@StringLocalizer["ButtonWatermarks"]</MudNavLink>
<MudNavGroup Title="@StringLocalizer["ButtonMainMenuMediaSources"]"> <MudNavGroup Title="@StringLocalizer["ButtonMediaSources"]">
<MudNavLink Href="media/sources/local">Local</MudNavLink> <MudNavLink Href="media/sources/local">@StringLocalizer["ButtonMediaSourcesLocal"]</MudNavLink>
<MudNavLink Href="media/sources/emby">Emby</MudNavLink> <MudNavLink Href="media/sources/emby">@StringLocalizer["ButtonMediaSourcesEmby"]</MudNavLink>
<MudNavLink Href="media/sources/jellyfin">Jellyfin</MudNavLink> <MudNavLink Href="media/sources/jellyfin">@StringLocalizer["ButtonMediaSourcesJellyfin"]</MudNavLink>
<MudNavLink Href="media/sources/plex">Plex</MudNavLink> <MudNavLink Href="media/sources/plex">@StringLocalizer["ButtonMediaSourcesPlex"]</MudNavLink>
</MudNavGroup> </MudNavGroup>
<MudNavGroup Title="@StringLocalizer["ButtonMainMenuMedia"]"> <MudNavGroup Title="@StringLocalizer["ButtonMedia"]">
<MudNavLink Href="media/libraries">Libraries</MudNavLink> <MudNavLink Href="media/libraries">@StringLocalizer["ButtonMediaLibraries"]</MudNavLink>
<MudNavLink Href="media/trash">Trash</MudNavLink> <MudNavLink Href="media/trash">@StringLocalizer["ButtonMediaTrash"]</MudNavLink>
<MudNavLink Href="media/tv/shows">TV Shows</MudNavLink> <MudNavLink Href="media/tv/shows">@StringLocalizer["ButtonMediaTvShows"]</MudNavLink>
<MudNavLink Href="media/movies">Movies</MudNavLink> <MudNavLink Href="media/movies">@StringLocalizer["ButtonMediaMovies"]</MudNavLink>
<MudNavLink Href="media/music/artists">Music</MudNavLink> <MudNavLink Href="media/music/artists">@StringLocalizer["ButtonMediaMusic"]</MudNavLink>
<MudNavLink Href="media/other/videos">Other Videos</MudNavLink> <MudNavLink Href="media/other/videos">@StringLocalizer["ButtonMediaOtherVideos"]</MudNavLink>
<MudNavLink Href="media/music/songs">Songs</MudNavLink> <MudNavLink Href="media/music/songs">@StringLocalizer["ButtonMediaSongs"]</MudNavLink>
<MudNavLink Href="media/browser/images">Images</MudNavLink> <MudNavLink Href="media/browser/images">@StringLocalizer["ButtonMediaImages"]</MudNavLink>
<MudNavLink Href="media/remote/streams">Remote Streams</MudNavLink> <MudNavLink Href="media/remote/streams">@StringLocalizer["ButtonMediaRemoteStreams"]</MudNavLink>
</MudNavGroup> </MudNavGroup>
<MudNavGroup Title="@StringLocalizer["ButtonMainMenuLists"]"> <MudNavGroup Title="@StringLocalizer["ButtonLists"]">
<MudNavLink Href="media/collections">Manual Collections</MudNavLink> <MudNavLink Href="media/collections">@StringLocalizer["ButtonListsManualCollections"]</MudNavLink>
<MudNavLink Href="media/smart-collections">Smart Collections</MudNavLink> <MudNavLink Href="media/smart-collections">@StringLocalizer["ButtonListsSmartCollections"]</MudNavLink>
<MudNavLink Href="media/multi-collections">Multi Collections</MudNavLink> <MudNavLink Href="media/multi-collections">@StringLocalizer["ButtonListsMultiCollections"]</MudNavLink>
<MudNavLink Href="media/rerun-collections">Rerun Collections</MudNavLink> <MudNavLink Href="media/rerun-collections">@StringLocalizer["ButtonListsRerunCollections"]</MudNavLink>
<MudNavLink Href="media/playlists">Playlists</MudNavLink> <MudNavLink Href="media/playlists">@StringLocalizer["ButtonListsPlaylists"]</MudNavLink>
<MudNavLink Href="media/trakt/lists">Trakt Lists</MudNavLink> <MudNavLink Href="media/trakt/lists">@StringLocalizer["ButtonListsTraktLists"]</MudNavLink>
<MudNavLink Href="media/filler/presets">Filler Presets</MudNavLink> <MudNavLink Href="media/filler/presets">@StringLocalizer["ButtonListsFillerPresets"]</MudNavLink>
</MudNavGroup> </MudNavGroup>
<MudNavGroup> <MudNavGroup>
<TitleContent> <TitleContent>
@if (_playoutWarnings > 0) @if (_playoutWarnings > 0)
{ {
<div style="align-items: center; display: flex"> <div style="align-items: center; display: flex">
Scheduling @StringLocalizer["ButtonScheduling"]
<MudIcon Color="@Color.Warning" Icon="@Icons.Material.Filled.Warning" Class="mx-2"/> <MudIcon Color="@Color.Warning" Icon="@Icons.Material.Filled.Warning" Class="mx-2"/>
</div> </div>
} }
else else
{ {
@:Scheduling @StringLocalizer["ButtonScheduling"]
} }
</TitleContent> </TitleContent>
<ChildContent> <ChildContent>
<MudNavLink Href="schedules">Schedules</MudNavLink> <MudNavLink Href="schedules">@StringLocalizer["ButtonSchedulingSchedules"]</MudNavLink>
<MudNavLink Href="blocks">Blocks</MudNavLink> <MudNavLink Href="blocks">@StringLocalizer["ButtonSchedulingBlocks"]</MudNavLink>
<MudNavLink Href="templates">Templates</MudNavLink> <MudNavLink Href="templates">@StringLocalizer["ButtonSchedulingTemplates"]</MudNavLink>
<MudNavLink Href="decos">Decos</MudNavLink> <MudNavLink Href="decos">@StringLocalizer["ButtonSchedulingDecos"]</MudNavLink>
<MudNavLink Href="deco-templates">Deco Templates</MudNavLink> <MudNavLink Href="deco-templates">@StringLocalizer["ButtonSchedulingDecoTemplates"]</MudNavLink>
<MudNavLink Href="playouts"> <MudNavLink Href="playouts">
@if (_playoutWarnings > 0) @if (_playoutWarnings > 0)
{ {
@ -174,44 +174,44 @@
Color="Color.Warning" Color="Color.Warning"
Origin="Origin.CenterRight" Origin="Origin.CenterRight"
BadgeClass="mx-3"> BadgeClass="mx-3">
Playouts @StringLocalizer["ButtonSchedulingPlayouts"]
</MudBadge> </MudBadge>
} }
else else
{ {
@:Playouts @StringLocalizer["ButtonSchedulingPlayouts"]
} }
</MudNavLink> </MudNavLink>
</ChildContent> </ChildContent>
</MudNavGroup> </MudNavGroup>
<MudNavGroup Title="@StringLocalizer["ButtonMainMenuSettings"]"> <MudNavGroup Title="@StringLocalizer["ButtonSettings"]">
<MudNavLink Href="settings/ffmpeg">FFmpeg</MudNavLink> <MudNavLink Href="settings/ffmpeg">@StringLocalizer["ButtonSettingsFFmpeg"]</MudNavLink>
<MudNavLink Href="settings/logging">Logging</MudNavLink> <MudNavLink Href="settings/logging">@StringLocalizer["ButtonSettingsLogging"]</MudNavLink>
<MudNavLink Href="settings/hdhr">HDHomeRun</MudNavLink> <MudNavLink Href="settings/hdhr">@StringLocalizer["ButtonSettingsHdHomeRun"]</MudNavLink>
<MudNavLink Href="settings/scanner">Scanner</MudNavLink> <MudNavLink Href="settings/scanner">@StringLocalizer["ButtonSettingsScanner"]</MudNavLink>
<MudNavLink Href="settings/playout">Playout</MudNavLink> <MudNavLink Href="settings/playout">@StringLocalizer["ButtonSettingsPlayout"]</MudNavLink>
<MudNavLink Href="settings/ui">UI</MudNavLink> <MudNavLink Href="settings/ui">@StringLocalizer["ButtonSettingsUi"]</MudNavLink>
<MudNavLink Href="settings/xmltv">XMLTV</MudNavLink> <MudNavLink Href="settings/xmltv">@StringLocalizer["ButtonSettingsXmltv"]</MudNavLink>
</MudNavGroup> </MudNavGroup>
<MudNavGroup Expanded="true"> <MudNavGroup Expanded="true">
<TitleContent> <TitleContent>
@if (_errors > 0) @if (_errors > 0)
{ {
<div style="align-items: center; display: flex"> <div style="align-items: center; display: flex">
Support @StringLocalizer["ButtonSupport"]
<MudIcon Color="@Color.Error" Icon="@Icons.Material.Filled.Error" Class="mx-2"/> <MudIcon Color="@Color.Error" Icon="@Icons.Material.Filled.Error" Class="mx-2"/>
</div> </div>
} }
else if (_warnings > 0) else if (_warnings > 0)
{ {
<div style="align-items: center; display: flex"> <div style="align-items: center; display: flex">
Support @StringLocalizer["ButtonSupport"]
<MudIcon Color="@Color.Warning" Icon="@Icons.Material.Filled.Warning" Class="mx-2"/> <MudIcon Color="@Color.Warning" Icon="@Icons.Material.Filled.Warning" Class="mx-2"/>
</div> </div>
} }
else else
{ {
@:Support @StringLocalizer["ButtonSupport"]
} }
</TitleContent> </TitleContent>
<ChildContent> <ChildContent>
@ -222,7 +222,7 @@
Color="Color.Error" Color="Color.Error"
Origin="Origin.CenterRight" Origin="Origin.CenterRight"
BadgeClass="mx-3"> BadgeClass="mx-3">
Health Checks @StringLocalizer["ButtonSupportHealthChecks"]
</MudBadge> </MudBadge>
} }
else if (_warnings > 0) else if (_warnings > 0)
@ -231,21 +231,21 @@
Color="Color.Warning" Color="Color.Warning"
Origin="Origin.CenterRight" Origin="Origin.CenterRight"
BadgeClass="mx-3"> BadgeClass="mx-3">
Health Checks @StringLocalizer["ButtonSupportHealthChecks"]
</MudBadge> </MudBadge>
} }
else else
{ {
@:Health Checks @StringLocalizer["ButtonSupportHealthChecks"]
} }
</MudNavLink> </MudNavLink>
<MudNavLink Href="system/logs">Logs</MudNavLink> <MudNavLink Href="system/logs">@StringLocalizer["ButtonSupportLogs"]</MudNavLink>
<MudNavLink Href="system/troubleshooting">Troubleshooting</MudNavLink> <MudNavLink Href="system/troubleshooting">@StringLocalizer["ButtonSupportTroubleshooting"]</MudNavLink>
</ChildContent> </ChildContent>
</MudNavGroup> </MudNavGroup>
<MudDivider Class="my-6" DividerType="DividerType.Middle"/> <MudDivider Class="my-6" DividerType="DividerType.Middle"/>
<MudContainer Style="text-align: right" Class="mr-6"> <MudContainer Style="text-align: right" Class="mr-6">
<MudText Typo="Typo.body2">ErsatzTV Version</MudText> <MudText Typo="Typo.body2">@StringLocalizer["LabelErsatzTVVersion"]</MudText>
<MudText Typo="Typo.body2" Color="Color.Info">@InfoVersion</MudText> <MudText Typo="Typo.body2" Color="Color.Info">@InfoVersion</MudText>
@if (BuildConfiguration != "release") @if (BuildConfiguration != "release")
{ {

Loading…
Cancel
Save