mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-31 21:08:27 +01:00
support track selection before playback
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"Latest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438",
|
||||
"ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u043d\u0438 - {0}",
|
||||
"Inherit": "Inherit",
|
||||
"Inherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u044f\u0432\u0430\u043d\u0435",
|
||||
"Books": "\u041a\u043d\u0438\u0433\u0438",
|
||||
"Music": "\u041c\u0443\u0437\u0438\u043a\u0430",
|
||||
"Games": "\u0418\u0433\u0440\u0438",
|
||||
@@ -35,7 +35,7 @@
|
||||
"UserDownloadingItemWithValues": "{0} is downloading {1}",
|
||||
"HeaderLiveTV": "\u0422\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u044f \u043d\u0430 \u0436\u0438\u0432\u043e",
|
||||
"ChapterNameValue": "\u0413\u043b\u0430\u0432\u0430 {0}",
|
||||
"ScheduledTaskFailedWithName": "{0} failed",
|
||||
"ScheduledTaskFailedWithName": "{0} \u0441\u0435 \u043f\u0440\u043e\u0432\u0430\u043b\u0438",
|
||||
"LabelRunningTimeValue": "Running time: {0}",
|
||||
"ScheduledTaskStartedWithName": "{0} \u0437\u0430\u043f\u043e\u0447\u043d\u0430",
|
||||
"VersionNumber": "\u0412\u0435\u0440\u0441\u0438\u044f {0}",
|
||||
@@ -49,40 +49,40 @@
|
||||
"DeviceOnlineWithName": "{0} \u0435 \u0441\u0432\u044a\u0440\u0437\u0430\u043d",
|
||||
"UserOnlineFromDevice": "{0} \u0435 \u043d\u0430 \u043b\u0438\u043d\u0438\u044f \u043e\u0442 {1}",
|
||||
"ProviderValue": "\u0414\u043e\u0441\u0442\u0430\u0432\u0447\u0438\u043a: {0}",
|
||||
"SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
|
||||
"UserCreatedWithName": "User {0} has been created",
|
||||
"UserPasswordChangedWithName": "Password has been changed for user {0}",
|
||||
"UserDeletedWithName": "User {0} has been deleted",
|
||||
"SubtitlesDownloadedForItem": "\u0418\u0437\u0442\u0435\u0433\u043b\u0435\u043d\u0438 \u0441\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u0437\u0430 {0}",
|
||||
"UserCreatedWithName": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u0442 {0} \u0435 \u0441\u044a\u0437\u0434\u0430\u0434\u0435\u043d",
|
||||
"UserPasswordChangedWithName": "\u041f\u0430\u0440\u043e\u043b\u0430\u0442\u0430 \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f {0} \u0435 \u043f\u0440\u043e\u043c\u0435\u043d\u0435\u043d\u0430",
|
||||
"UserDeletedWithName": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u0442 {0} \u0435 \u0438\u0437\u0442\u0440\u0438\u0442",
|
||||
"UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
|
||||
"MessageServerConfigurationUpdated": "Server configuration has been updated",
|
||||
"MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
|
||||
"MessageApplicationUpdated": "Emby Server has been updated",
|
||||
"MessageApplicationUpdated": "\u0421\u044a\u0440\u0432\u044a\u0440\u044a\u0442 \u0435 \u043e\u0431\u043d\u043e\u0432\u0435\u043d",
|
||||
"FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
|
||||
"AuthenticationSucceededWithUserName": "{0} successfully authenticated",
|
||||
"UserOfflineFromDevice": "{0} has disconnected from {1}",
|
||||
"DeviceOfflineWithName": "{0} has disconnected",
|
||||
"AuthenticationSucceededWithUserName": "{0} \u0441\u0435 \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e",
|
||||
"UserOfflineFromDevice": "{0} \u0441\u0435 \u0440\u0430\u0437\u043a\u0430\u0447\u0438 \u043e\u0442 {1}",
|
||||
"DeviceOfflineWithName": "{0} \u0441\u0435 \u0440\u0430\u0437\u043a\u0430\u0447\u0438",
|
||||
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
|
||||
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
|
||||
"NotificationOptionPluginError": "Plugin failure",
|
||||
"NotificationOptionApplicationUpdateAvailable": "Application update available",
|
||||
"NotificationOptionApplicationUpdateInstalled": "Application update installed",
|
||||
"NotificationOptionPluginError": "\u0413\u0440\u0435\u0448\u043a\u0430 \u0432 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0430",
|
||||
"NotificationOptionApplicationUpdateAvailable": "\u041d\u0430\u043b\u0438\u0447\u043d\u043e \u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0430\u0442\u0430",
|
||||
"NotificationOptionApplicationUpdateInstalled": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0430\u0442\u0430 \u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u043e",
|
||||
"NotificationOptionPluginUpdateInstalled": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0430\u0442\u0430 \u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u043e",
|
||||
"NotificationOptionPluginInstalled": "\u041f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0430\u0442\u0430 \u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0430",
|
||||
"NotificationOptionPluginUninstalled": "\u041f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0430\u0442\u0430 \u0435 \u0434\u0435\u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0430",
|
||||
"NotificationOptionVideoPlayback": "Video playback started",
|
||||
"NotificationOptionAudioPlayback": "Audio playback started",
|
||||
"NotificationOptionGamePlayback": "Game playback started",
|
||||
"NotificationOptionVideoPlaybackStopped": "Video playback stopped",
|
||||
"NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
|
||||
"NotificationOptionGamePlaybackStopped": "Game playback stopped",
|
||||
"NotificationOptionTaskFailed": "Scheduled task failure",
|
||||
"NotificationOptionInstallationFailed": "Installation failure",
|
||||
"NotificationOptionVideoPlayback": "\u0412\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u0437\u0430\u043f\u043e\u0447\u043d\u0430",
|
||||
"NotificationOptionAudioPlayback": "\u0412\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0437\u0432\u0443\u043a \u0437\u0430\u043f\u043e\u0447\u043d\u0430",
|
||||
"NotificationOptionGamePlayback": "\u0412\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0438\u0433\u0440\u0430\u0442\u0430 \u0437\u0430\u043f\u043e\u0447\u043d\u0430",
|
||||
"NotificationOptionVideoPlaybackStopped": "\u0412\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u0435 \u0441\u043f\u0440\u044f\u043d\u043e",
|
||||
"NotificationOptionAudioPlaybackStopped": "\u0412\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0437\u0432\u0443\u043a \u0435 \u0441\u043f\u0440\u044f\u043d\u043e",
|
||||
"NotificationOptionGamePlaybackStopped": "\u0412\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0438\u0433\u0440\u0430\u0442\u0430 \u0435 \u0441\u043f\u0440\u044f\u043d\u0430",
|
||||
"NotificationOptionTaskFailed": "\u0413\u0440\u0435\u0448\u043a\u0430 \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u0430\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430",
|
||||
"NotificationOptionInstallationFailed": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0435",
|
||||
"NotificationOptionNewLibraryContent": "\u0414\u043e\u0431\u0430\u0432\u0435\u043d\u043e \u0435 \u043d\u043e\u0432\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435",
|
||||
"NotificationOptionCameraImageUploaded": "Camera image uploaded",
|
||||
"NotificationOptionCameraImageUploaded": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u043e\u0442 \u0444\u043e\u0442\u043e\u0430\u043f\u0430\u0440\u0430\u0442\u0430 \u0435 \u043a\u0430\u0447\u0435\u043d\u043e",
|
||||
"NotificationOptionUserLockedOut": "User locked out",
|
||||
"NotificationOptionServerRestartRequired": "\u041d\u0443\u0436\u043d\u043e \u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u0443\u0441\u043a\u0430\u043d\u0435 \u043d\u0430 \u0441\u044a\u0440\u0432\u044a\u0440\u0430",
|
||||
"UserLockedOutWithName": "User {0} has been locked out",
|
||||
"SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
|
||||
"SubtitleDownloadFailureForItem": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0435 \u043d\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u0437\u0430 {0}",
|
||||
"Sync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0430\u043d\u0435",
|
||||
"User": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b",
|
||||
"System": "\u0421\u0438\u0441\u0442\u0435\u043c\u0430",
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
"Latest": "Latest",
|
||||
"ValueSpecialEpisodeName": "Special - {0}",
|
||||
"Inherit": "Inherit",
|
||||
"Books": "Books",
|
||||
"Music": "Music",
|
||||
"Games": "Games",
|
||||
"Photos": "Photos",
|
||||
"MixedContent": "Mixed content",
|
||||
"MusicVideos": "Music videos",
|
||||
"HomeVideos": "Home videos",
|
||||
"Books": "Knihy",
|
||||
"Music": "Hudba",
|
||||
"Games": "Hry",
|
||||
"Photos": "Fotky",
|
||||
"MixedContent": "Zmie\u0161an\u00fd obsah",
|
||||
"MusicVideos": "Hudobn\u00e9 vide\u00e1",
|
||||
"HomeVideos": "Dom\u00e1ce vide\u00e1",
|
||||
"Playlists": "Playlists",
|
||||
"HeaderRecordingGroups": "Recording Groups",
|
||||
"HeaderContinueWatching": "Continue Watching",
|
||||
@@ -16,20 +16,20 @@
|
||||
"HeaderFavoriteSongs": "Ob\u013e\u00faben\u00e9 pesni\u010dky",
|
||||
"HeaderAlbumArtists": "Album Artists",
|
||||
"HeaderFavoriteAlbums": "Favorite Albums",
|
||||
"HeaderFavoriteEpisodes": "Favorite Episodes",
|
||||
"HeaderFavoriteEpisodes": "Ob\u013e\u00faben\u00e9 epiz\u00f3dy",
|
||||
"HeaderFavoriteShows": "Ob\u013e\u00faben\u00e9 seri\u00e1ly",
|
||||
"HeaderNextUp": "Next Up",
|
||||
"HeaderNextUp": "Nasleduje",
|
||||
"Favorites": "Ob\u013e\u00faben\u00e9",
|
||||
"Collections": "Collections",
|
||||
"Channels": "Channels",
|
||||
"Movies": "Movies",
|
||||
"Albums": "Albums",
|
||||
"Artists": "Artists",
|
||||
"Folders": "Folders",
|
||||
"Songs": "Songs",
|
||||
"Collections": "Zbierky",
|
||||
"Channels": "Kan\u00e1ly",
|
||||
"Movies": "Filmy",
|
||||
"Albums": "Albumy",
|
||||
"Artists": "Umelci",
|
||||
"Folders": "Prie\u010dinky",
|
||||
"Songs": "Skladby",
|
||||
"TvShows": "TV Shows",
|
||||
"Shows": "Series",
|
||||
"Genres": "Genres",
|
||||
"Genres": "\u017d\u00e1nre",
|
||||
"NameSeasonNumber": "Season {0}",
|
||||
"AppDeviceValues": "App: {0}, Device: {1}",
|
||||
"UserDownloadingItemWithValues": "{0} is downloading {1}",
|
||||
@@ -86,6 +86,6 @@
|
||||
"Sync": "Sync",
|
||||
"User": "User",
|
||||
"System": "System",
|
||||
"Application": "Application",
|
||||
"Application": "Aplik\u00e1cia",
|
||||
"Plugin": "Plugin"
|
||||
}
|
||||
@@ -27,7 +27,7 @@
|
||||
"Artists": "Artister",
|
||||
"Folders": "Mappar",
|
||||
"Songs": "L\u00e5tar",
|
||||
"TvShows": "TV Shows",
|
||||
"TvShows": "TV-serier",
|
||||
"Shows": "Serier",
|
||||
"Genres": "Genrer",
|
||||
"NameSeasonNumber": "S\u00e4song {0}",
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace Emby.Server.Implementations.Localization
|
||||
|
||||
var localizationPath = LocalizationPath;
|
||||
|
||||
_fileSystem.CreateDirectory(localizationPath);
|
||||
_fileSystem.CreateDirectory(localizationPath);
|
||||
|
||||
var existingFiles = GetRatingsFiles(localizationPath)
|
||||
.Select(Path.GetFileName)
|
||||
@@ -91,7 +91,7 @@ namespace Emby.Server.Implementations.Localization
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
foreach (var file in GetRatingsFiles(localizationPath))
|
||||
{
|
||||
LoadRatings(file);
|
||||
@@ -128,12 +128,20 @@ namespace Emby.Server.Implementations.Localization
|
||||
return _textLocalizer.NormalizeFormKD(text);
|
||||
}
|
||||
|
||||
private CultureDto[] _cultures;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the cultures.
|
||||
/// </summary>
|
||||
/// <returns>IEnumerable{CultureDto}.</returns>
|
||||
public CultureDto[] GetCultures()
|
||||
{
|
||||
var result = _cultures;
|
||||
if (result != null)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
var type = GetType();
|
||||
var path = type.Namespace + ".iso6392.txt";
|
||||
|
||||
@@ -166,10 +174,14 @@ namespace Emby.Server.Implementations.Localization
|
||||
}
|
||||
}
|
||||
|
||||
return list.Where(i => !string.IsNullOrWhiteSpace(i.Name) &&
|
||||
!string.IsNullOrWhiteSpace(i.DisplayName) &&
|
||||
!string.IsNullOrWhiteSpace(i.ThreeLetterISOLanguageName) &&
|
||||
!string.IsNullOrWhiteSpace(i.TwoLetterISOLanguageName)).ToArray();
|
||||
result = list.Where(i => !string.IsNullOrWhiteSpace(i.Name) &&
|
||||
!string.IsNullOrWhiteSpace(i.DisplayName) &&
|
||||
!string.IsNullOrWhiteSpace(i.ThreeLetterISOLanguageName) &&
|
||||
!string.IsNullOrWhiteSpace(i.TwoLetterISOLanguageName)).ToArray();
|
||||
|
||||
_cultures = result;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -239,7 +251,7 @@ namespace Emby.Server.Implementations.Localization
|
||||
/// <returns>Dictionary{System.StringParentalRating}.</returns>
|
||||
private void LoadRatings(string file)
|
||||
{
|
||||
var dict = _fileSystem.ReadAllLines(file).Select(i =>
|
||||
var dict = _fileSystem.ReadAllLines(file).Select(i =>
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(i))
|
||||
{
|
||||
@@ -269,7 +281,7 @@ namespace Emby.Server.Implementations.Localization
|
||||
_allParentalRatings.TryAdd(countryCode, dict);
|
||||
}
|
||||
|
||||
private readonly string[] _unratedValues = {"n/a", "unrated", "not rated"};
|
||||
private readonly string[] _unratedValues = { "n/a", "unrated", "not rated" };
|
||||
|
||||
/// <summary>
|
||||
/// Gets the rating level.
|
||||
|
||||
Reference in New Issue
Block a user