- Channels
+ @MainLayoutLoc["ButtonChannels"]
-
+
@@ -45,29 +48,29 @@
- Number
+ @Loc["LabelNumber"]
- Logo
+ @Loc["LabelLogo"]
- Name
+ @Loc["LabelName"]
- Language
- Mode
- FFmpeg Profile
+ @Loc["LabelLanguage"]
+ @Loc["LabelStreamingMode"]
+ @Loc["LabelFFmpegProfile"]
-
+
@if (!context.IsEnabled)
{
-
- @($"(D) {context.Number}")
+
+ @($"({Loc["LabelChannelDisabledAbbreviation"]}) {context.Number}")
}
else if (!context.ShowInEpg)
{
-
- @($"(H) {context.Number}")
+
+ @($"({Loc["LabelChannelHiddenAbbreviation"]}) {context.Number}")
}
else
@@ -75,7 +78,7 @@
@context.Number
}
-
+
@if (!string.IsNullOrWhiteSpace(context.Logo?.Path))
{
@@ -85,10 +88,10 @@
}
- @context.Name
- @context.PreferredAudioLanguageCode
- @GetStreamingMode(context.StreamingMode)
-
+ @context.Name
+ @context.PreferredAudioLanguageCode
+ @GetStreamingMode(context.StreamingMode)
+
@if (context.StreamingMode != StreamingMode.HttpLiveStreamingDirect)
{
@_ffmpegProfiles.Find(p => p.Id == context.FFmpegProfileId)?.Name
@@ -102,7 +105,7 @@
bool notNormalizing = maybeProfile.Any(p => !p.NormalizeVideo || !p.NormalizeAudio);
if (notNormalizing)
{
-
+
@@ -111,7 +114,7 @@
}
else
{
-
+
@@ -120,7 +123,7 @@
}
else if (CanPreviewChannel(context) && _ffmpegProfilesThatCanPreview.ContainsKey(context.FFmpegProfileId) && !_ffmpegProfilesThatCanPreview[context.FFmpegProfileId])
{
-
+
@@ -130,14 +133,14 @@
}
else
{
-
+
}
@if (SegmenterService.IsActive(context.Number))
{
-
+
@@ -147,14 +150,14 @@
{
}
-
+
@if (context.PlayoutCount > 0 && context.IsEnabled)
{
-
+
@@ -164,7 +167,7 @@
{
}
-
+
@@ -173,7 +176,7 @@
-
+
diff --git a/ErsatzTV/Pages/Settings/UISettings.razor b/ErsatzTV/Pages/Settings/UISettings.razor
index e6fa9d409..9815d0c1c 100644
--- a/ErsatzTV/Pages/Settings/UISettings.razor
+++ b/ErsatzTV/Pages/Settings/UISettings.razor
@@ -29,9 +29,10 @@
Language
- English
- Polski
- Português (Brasil)
+ @foreach (Localization.CultureLanguage cultureLanguage in Localization.SupportedLanguages)
+ {
+ @cultureLanguage.Language
+ }
diff --git a/ErsatzTV/Shared/MainLayout.razor b/ErsatzTV/Shared/MainLayout.razor
index 81a3e175b..49c9b360d 100644
--- a/ErsatzTV/Shared/MainLayout.razor
+++ b/ErsatzTV/Shared/MainLayout.razor
@@ -8,7 +8,6 @@
@using ErsatzTV.Core.Notifications
@using ErsatzTV.Extensions
@using MediatR.Courier
-@using Microsoft.Extensions.Localization
@implements IDisposable
@inject NavigationManager NavigationManager
@inject IMediator Mediator
diff --git a/ErsatzTV/Startup.cs b/ErsatzTV/Startup.cs
index b18631538..09dedf951 100644
--- a/ErsatzTV/Startup.cs
+++ b/ErsatzTV/Startup.cs
@@ -605,10 +605,9 @@ public class Startup
{
CultureInfo[] cinfo = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures);
string[] supportedCultures = cinfo.Select(t => t.Name).Distinct().ToArray();
- string[] supportedUiCultures = ["en-us", "pl", "pt-br"];
options.AddSupportedCultures(supportedCultures)
- .AddSupportedUICultures(supportedUiCultures)
- .SetDefaultCulture("en-us");
+ .AddSupportedUICultures(Localization.UiCultures)
+ .SetDefaultCulture(Localization.DefaultCulture);
options.AddInitialRequestCultureProvider(
new DatabaseRequestCultureProvider(
new AcceptLanguageHeaderRequestCultureProvider()));
diff --git a/ErsatzTV/_Imports.razor b/ErsatzTV/_Imports.razor
index 8b536efdf..bbe1c8cab 100644
--- a/ErsatzTV/_Imports.razor
+++ b/ErsatzTV/_Imports.razor
@@ -11,6 +11,7 @@
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.Data.Sqlite
@using Microsoft.EntityFrameworkCore
+@using Microsoft.Extensions.Localization
@using Microsoft.Extensions.Logging
@using Microsoft.JSInterop
@using Blazored.FluentValidation