From 3fa2a001c7275737e4ff4011c23ca9dc359d721d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 31 Jul 2014 20:37:06 -0400 Subject: add error handling to dlna channel support --- .../Localization/JavaScript/tr.json | 323 +++++++++++++++++++++ 1 file changed, 323 insertions(+) create mode 100644 MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json (limited to 'MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json') diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json new file mode 100644 index 000000000..03a4ff2ce --- /dev/null +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json @@ -0,0 +1,323 @@ +{ + "SettingsSaved": "Ayarlar Kaydedildi", + "AddUser": "Kullan\u0131c\u0131 Ekle", + "Users": "Kullan\u0131c\u0131lar", + "Delete": "Sil", + "Administrator": "Y\u00f6netici", + "Password": "\u015eifre", + "DeleteImage": "Resmi Sil", + "DeleteImageConfirmation": "Bu G\u00f6r\u00fcnt\u00fcy\u00fc Silmek \u0130stedi\u011finizden Eminmisiniz?", + "FileReadCancelled": "Dosya Okuma \u0130ptal Edildi", + "FileNotFound": "Dosya Bulunamad\u0131", + "FileReadError": "Dosya Okunurken Bir Hata Olu\u015ftu", + "DeleteUser": "Kullan\u0131c\u0131 Sil", + "DeleteUserConfirmation": "Silmek \u0130stedi\u011finizden Eminmisiniz {0} ?", + "PasswordResetHeader": "\u015eifre S\u0131f\u0131rland\u0131", + "PasswordResetComplete": "Parolan\u0131z S\u0131f\u0131rlanm\u0131\u015ft\u0131r.", + "PasswordResetConfirmation": "\u015eifrenizi S\u0131f\u0131rlamak \u0130stesi\u011finizden Eminmisiniz?", + "PasswordSaved": "\u015eifre Kaydedildi", + "PasswordMatchError": "Parola ve \u015eifre E\u015fle\u015fmelidir.", + "OptionRelease": "Resmi Yay\u0131n", + "OptionBeta": "Beta", + "OptionDev": "Dev (Unstable)", + "UninstallPluginHeader": "Uninstall Plugin", + "UninstallPluginConfirmation": "Kald\u0131rmak \u0130stedi\u011finizden Eminmisiniz {0} ?", + "NoPluginConfigurationMessage": "This plugin has nothing to configure.", + "NoPluginsInstalledMessage": "Eklentiler Y\u00fckl\u00fc De\u011fil", + "BrowsePluginCatalogMessage": "Mevcut Eklentileri G\u00f6rebilmek \u0130\u00e7in Eklenti Kato\u011funa G\u00f6z At\u0131n.", + "MessageKeyEmailedTo": "Key emailed to {0}.", + "MessageKeysLinked": "Keys linked.", + "HeaderConfirmation": "Confirmation", + "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", + "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "HeaderSearch": "Search", + "LabelArtist": "Artist", + "LabelMovie": "Movie", + "LabelMusicVideo": "Music Video", + "LabelEpisode": "Episode", + "LabelSeries": "Series", + "LabelStopping": "Stopping", + "LabelCancelled": "(cancelled)", + "LabelFailed": "(failed)", + "LabelAbortedByServerShutdown": "(Aborted by server shutdown)", + "LabelScheduledTaskLastRan": "Last ran {0}, taking {1}.", + "HeaderDeleteTaskTrigger": "Delete Task Trigger", + "HeaderTaskTriggers": "Task Triggers", + "MessageDeleteTaskTrigger": "Are you sure you wish to delete this task trigger?", + "MessageNoPluginsInstalled": "You have no plugins installed.", + "LabelVersionInstalled": "{0} installed", + "LabelNumberReviews": "{0} Reviews", + "LabelFree": "Free", + "HeaderSelectAudio": "Select Audio", + "HeaderSelectSubtitles": "Select Subtitles", + "LabelDefaultStream": "(Default)", + "LabelForcedStream": "(Forced)", + "LabelDefaultForcedStream": "(Default\/Forced)", + "LabelUnknownLanguage": "Unknown language", + "ButtonMute": "Mute", + "ButtonUnmute": "Unmute", + "ButtonStop": "Stop", + "ButtonNextTrack": "Next Track", + "ButtonPause": "Pause", + "ButtonPlay": "\u00c7al", + "ButtonEdit": "D\u00fczenle", + "ButtonQueue": "Queue", + "ButtonPlayTrailer": "Play trailer", + "ButtonPlaylist": "Playlist", + "ButtonPreviousTrack": "Previous Track", + "LabelEnabled": "Enabled", + "LabelDisabled": "Disabled", + "ButtonMoreInformation": "More Information", + "LabelNoUnreadNotifications": "No unread notifications.", + "ButtonViewNotifications": "View notifications", + "ButtonMarkTheseRead": "Mark these read", + "ButtonClose": "Close", + "LabelAllPlaysSentToPlayer": "All plays will be sent to the selected player.", + "MessageInvalidUser": "Invalid user or password.", + "HeaderAllRecordings": "T\u00fcm Kay\u0131tlar", + "RecommendationBecauseYouLike": "Because you like {0}", + "RecommendationBecauseYouWatched": "Because you watched {0}", + "RecommendationDirectedBy": "Directed by {0}", + "RecommendationStarring": "Starring {0}", + "HeaderConfirmRecordingCancellation": "Confirm Recording Cancellation", + "MessageConfirmRecordingCancellation": "Are you sure you wish to cancel this recording?", + "MessageRecordingCancelled": "Recording cancelled.", + "HeaderConfirmSeriesCancellation": "Confirm Series Cancellation", + "MessageConfirmSeriesCancellation": "Are you sure you wish to cancel this series?", + "MessageSeriesCancelled": "Series cancelled.", + "HeaderConfirmRecordingDeletion": "Confirm Recording Deletion", + "MessageConfirmRecordingDeletion": "Are you sure you wish to delete this recording?", + "MessageRecordingDeleted": "Recording deleted.", + "ButonCancelRecording": "Cancel Recording", + "MessageRecordingSaved": "Recording saved.", + "OptionSunday": "Pazar", + "OptionMonday": "Pazartesi", + "OptionTuesday": "Sal\u0131", + "OptionWednesday": "\u00c7ar\u015famba", + "OptionThursday": "Per\u015fembe", + "OptionFriday": "Cuma", + "OptionSaturday": "Cumartesi", + "HeaderConfirmDeletion": "Confirm Deletion", + "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", + "LiveTvUpdateAvailable": "(Update available)", + "LabelVersionUpToDate": "Up to date!", + "ButtonResetTuner": "Reset tuner", + "HeaderResetTuner": "Reset Tuner", + "MessageConfirmResetTuner": "Are you sure you wish to reset this tuner? Any active players or recordings will be abruptly stopped.", + "ButtonCancelSeries": "Cancel Series", + "HeaderSeriesRecordings": "Series Recordings", + "LabelAnytime": "Any time", + "StatusRecording": "Recording", + "StatusWatching": "Watching", + "StatusRecordingProgram": "Recording {0}", + "StatusWatchingProgram": "Watching {0}", + "HeaderSplitMedia": "Split Media Apart", + "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", + "HeaderError": "Error", + "MessagePleaseSelectOneItem": "Please select at least one item.", + "MessagePleaseSelectTwoItems": "Please select at least two items.", + "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", + "MessageConfirmItemGrouping": "Media Browser clients will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", + "HeaderResume": "Devam", + "HeaderMyViews": "My Views", + "HeaderLibraryFolders": "Media Folders", + "HeaderLatestMedia": "Latest Media", + "ButtonMore": "More...", + "HeaderFavoriteMovies": "Favorite Movies", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteGames": "Favorite Games", + "HeaderRatingsDownloads": "Rating \/ Downloads", + "HeaderConfirmProfileDeletion": "Confirm Profile Deletion", + "MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?", + "HeaderSelectServerCachePath": "Select Server Cache Path", + "HeaderSelectTranscodingPath": "Select Transcoding Temporary Path", + "HeaderSelectImagesByNamePath": "Select Images By Name Path", + "HeaderSelectMetadataPath": "Select Metadata Path", + "HeaderSelectServerCachePathHelp": "Browse or enter the path to use for server cache files. The folder must be writeable. The location of this folder will directly impact server performance and should ideally be placed on a solid state drive.", + "HeaderSelectTranscodingPathHelp": "Browse or enter the path to use for transcoding temporary files. The folder must be writeable.", + "HeaderSelectImagesByNamePathHelp": "Browse or enter the path to your items by name folder. The folder must be writeable.", + "HeaderSelectMetadataPathHelp": "Browse or enter the path you'd like to store metadata within. The folder must be writeable.", + "HeaderSelectChannelDownloadPath": "Select Channel Download Path", + "HeaderSelectChannelDownloadPathHelp": "Browse or enter the path to use for storing channel cache files. The folder must be writeable.", + "OptionNewCollection": "New...", + "ButtonAdd": "Ekle", + "ButtonRemove": "Sil", + "LabelChapterDownloaders": "Chapter downloaders:", + "LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderLatestChannelMedia": "Latest Channel Items", + "ButtonOrganizeFile": "Organize File", + "ButtonDeleteFile": "Delete File", + "HeaderOrganizeFile": "Organize File", + "HeaderDeleteFile": "Delete File", + "StatusSkipped": "Skipped", + "StatusFailed": "Failed", + "StatusSuccess": "Success", + "MessageFileWillBeDeleted": "The following file will be deleted:", + "MessageSureYouWishToProceed": "Are you sure you wish to proceed?", + "MessageDuplicatesWillBeDeleted": "In addition the following dupliates will be deleted:", + "MessageFollowingFileWillBeMovedFrom": "The following file will be moved from:", + "MessageDestinationTo": "to:", + "HeaderSelectWatchFolder": "Select Watch Folder", + "HeaderSelectWatchFolderHelp": "Browse or enter the path to your watch folder. The folder must be writeable.", + "OrganizePatternResult": "Result: {0}", + "HeaderRestart": "Restart", + "HeaderShutdown": "Shutdown", + "MessageConfirmRestart": "Are you sure you wish to restart Media Browser Server?", + "MessageConfirmShutdown": "Are you sure you wish to shutdown Media Browser Server?", + "ButtonUpdateNow": "Update Now", + "NewVersionOfSomethingAvailable": "A new version of {0} is available!", + "VersionXIsAvailableForDownload": "Version {0} is now available for download.", + "LabelVersionNumber": "Version {0}", + "LabelPlayMethodTranscoding": "Transcoding", + "LabelPlayMethodDirectStream": "Direct Streaming", + "LabelPlayMethodDirectPlay": "Direct Playing", + "LabelAudioCodec": "Audio: {0}", + "LabelVideoCodec": "Video: {0}", + "LabelRemoteAccessUrl": "Remote access: {0}", + "LabelRunningOnPort": "Running on port {0}.", + "LabelRunningOnPorts": "Running on ports {0} and {1}.", + "HeaderLatestFromChannel": "Latest from {0}", + "ButtonDownload": "Download", + "LabelUnknownLanaguage": "Unknown language", + "HeaderCurrentSubtitles": "Current Subtitles", + "MessageDownloadQueued": "The download has been queued.", + "MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?", + "ButtonRemoteControl": "Remote Control", + "HeaderLatestTvRecordings": "Latest Recordings", + "ButtonOk": "Tamam", + "ButtonCancel": "\u0130ptal", + "ButtonRefresh": "Refresh", + "LabelCurrentPath": "Current path:", + "HeaderSelectMediaPath": "Select Media Path", + "ButtonNetwork": "Network", + "MessageDirectoryPickerInstruction": "Network paths can be entered manually in the event the Network button fails to locate your devices. For example, {0} or {1}.", + "HeaderMenu": "Menu", + "ButtonOpen": "Open", + "ButtonOpenInNewTab": "Open in new tab", + "ButtonShuffle": "Shuffle", + "ButtonInstantMix": "Instant mix", + "ButtonResume": "Resume", + "HeaderScenes": "Diziler", + "HeaderAudioTracks": "Audio Tracks", + "HeaderSubtitles": "Subtitles", + "HeaderVideoQuality": "Video Quality", + "MessageErrorPlayingVideo": "There was an error playing the video.", + "MessageEnsureOpenTuner": "Please ensure there is an open tuner availalble.", + "ButtonHome": "Home", + "ButtonDashboard": "Dashboard", + "ButtonReports": "Reports", + "ButtonMetadataManager": "Metadata Manager", + "HeaderTime": "Time", + "HeaderName": "Name", + "HeaderAlbum": "Album", + "HeaderAlbumArtist": "Album Artist", + "HeaderArtist": "Artist", + "LabelAddedOnDate": "Added {0}", + "ButtonStart": "Start", + "HeaderChannels": "Kanallar", + "HeaderMediaFolders": "Media Klas\u00f6rleri", + "HeaderBlockItemsWithNoRating": "Block items with no rating information:", + "OptionBlockOthers": "Others", + "OptionBlockTvShows": "TV Shows", + "OptionBlockTrailers": "Trailers", + "OptionBlockMusic": "Music", + "OptionBlockMovies": "Movies", + "OptionBlockBooks": "Books", + "OptionBlockGames": "Games", + "OptionBlockLiveTvPrograms": "Live TV Programs", + "OptionBlockLiveTvChannels": "Live TV Channels", + "OptionBlockChannelContent": "Internet Channel Content", + "ButtonRevoke": "Revoke", + "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Media Browser will be abruptly terminated.", + "HeaderConfirmRevokeApiKey": "Revoke Api Key", + "ValueContainer": "Container: {0}", + "ValueAudioCodec": "Audio Codec: {0}", + "ValueVideoCodec": "Video Codec: {0}", + "ValueCodec": "Codec: {0}", + "ValueConditions": "Conditions: {0}", + "LabelAll": "All", + "HeaderDeleteImage": "Delete Image", + "MessageFileNotFound": "File not found.", + "MessageFileReadError": "An error occurred reading this file.", + "ButtonNextPage": "Next Page", + "ButtonPreviousPage": "Previous Page", + "ButtonMoveLeft": "Move left", + "ButtonMoveRight": "Move right", + "ButtonBrowseOnlineImages": "Browse online images", + "HeaderDeleteItem": "Delete Item", + "ConfirmDeleteItem": "Are you sure you wish to delete this item from your library?", + "MessagePleaseEnterNameOrId": "Please enter a name or an external Id.", + "MessageValueNotCorrect": "The value entered is not correct. Please try again.", + "MessageItemSaved": "Item saved.", + "OptionEnded": "Bitmi\u015f", + "OptionContinuing": "Continuing", + "OptionOff": "Off", + "OptionOn": "On", + "HeaderFields": "Fields", + "HeaderFieldsHelp": "Slide a field to 'off' to lock it and prevent it's data from being changed.", + "HeaderLiveTV": "Live TV", + "MissingLocalTrailer": "Missing local trailer.", + "MissingPrimaryImage": "Missing primary image.", + "MissingBackdropImage": "Missing backdrop image.", + "MissingLogoImage": "Missing logo image.", + "MissingEpisode": "Missing episode.", + "OptionScreenshots": "Screenshots", + "OptionBackdrops": "Backdrops", + "OptionImages": "Images", + "OptionKeywords": "Keywords", + "OptionTags": "Tags", + "OptionStudios": "Studios", + "OptionName": "Name", + "OptionOverview": "Overview", + "OptionGenres": "Genres", + "OptionParentalRating": "Parental Rating", + "OptionPeople": "People", + "OptionRuntime": "Runtime", + "OptionProductionLocations": "Production Locations", + "OptionBirthLocation": "Birth Location", + "LabelAllChannels": "All channels", + "LabelLiveProgram": "LIVE", + "LabelNewProgram": "NEW", + "LabelPremiereProgram": "PREMIERE", + "HeaderChangeFolderType": "Change Folder Type", + "HeaderChangeFolderTypeHelp": "To change the folder type, please remove and rebuild the collection with the new type.", + "HeaderAlert": "Alert", + "MessagePleaseRestart": "Please restart to finish updating.", + "ButtonRestart": "Restart", + "MessagePleaseRefreshPage": "Please refresh this page to receive new updates from the server.", + "ButtonHide": "Hide", + "MessageSettingsSaved": "Settings saved.", + "ButtonSignOut": "Sign Out", + "ButtonMyProfile": "My Profile", + "ButtonMyPreferences": "My Preferences", + "MessageBrowserDoesNotSupportWebSockets": "This browser does not support web sockets. For a better experience, try a newer browser such as Chrome, Firefox, IE10+, Safari (iOS) or Opera.", + "LabelInstallingPackage": "Installing {0}", + "LabelPackageInstallCompleted": "{0} installation completed.", + "LabelPackageInstallFailed": "{0} installation failed.", + "LabelPackageInstallCancelled": "{0} installation cancelled.", + "TabServer": "Server", + "TabUsers": "Users", + "TabLibrary": "Library", + "TabMetadata": "Metadata", + "TabDLNA": "DLNA", + "TabLiveTV": "Live TV", + "TabAutoOrganize": "Auto-Organize", + "TabPlugins": "Plugins", + "TabAdvanced": "Geli\u015fmi\u015f", + "TabHelp": "Help", + "TabScheduledTasks": "Scheduled Tasks", + "ButtonFullscreen": "Fullscreen", + "ButtonAudioTracks": "Audio Tracks", + "ButtonSubtitles": "Subtitles", + "ButtonScenes": "Scenes", + "ButtonQuality": "Quality", + "HeaderNotifications": "Notifications", + "HeaderSelectPlayer": "Select Player:", + "ButtonSelect": "Se\u00e7im", + "ButtonNew": "Yeni", + "MessageInternetExplorerWebm": "For best results with Internet Explorer please install the WebM plugin for IE.", + "HeaderVideoError": "Video Error" +} \ No newline at end of file -- cgit v1.2.3 From 148261a48c1d6058cfa5833f5278e7b0ccdba2fc Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 1 Aug 2014 08:13:24 -0400 Subject: update translations --- MediaBrowser.Controller/Entities/UserView.cs | 4 - .../ContentDirectory/ControlHandler.cs | 2 +- MediaBrowser.Model/Dlna/StreamInfo.cs | 2 +- .../Localization/JavaScript/pt_BR.json | 2 +- .../Localization/JavaScript/ru.json | 4 +- .../Localization/JavaScript/tr.json | 58 ++--- .../Localization/Server/pt_BR.json | 2 +- .../Localization/Server/tr.json | 236 ++++++++++----------- 8 files changed, 153 insertions(+), 157 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json') diff --git a/MediaBrowser.Controller/Entities/UserView.cs b/MediaBrowser.Controller/Entities/UserView.cs index be426d99e..f8ca56fa8 100644 --- a/MediaBrowser.Controller/Entities/UserView.cs +++ b/MediaBrowser.Controller/Entities/UserView.cs @@ -30,10 +30,6 @@ namespace MediaBrowser.Controller.Entities case CollectionType.Trailers: return mediaFolders.SelectMany(i => i.GetRecursiveChildren(user, includeLinkedChildren)) .OfType(); - case CollectionType.Movies: - return mediaFolders.SelectMany(i => i.GetRecursiveChildren(user, includeLinkedChildren)) - .Where(i => i is Movie || i is BoxSet) - .DistinctBy(i => i.Id); default: return mediaFolders.SelectMany(i => i.GetChildren(user, includeLinkedChildren)); } diff --git a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs index 826777841..aced2009d 100644 --- a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs +++ b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs @@ -446,7 +446,7 @@ namespace MediaBrowser.Dlna.ContentDirectory } if (string.Equals(folder.ViewType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase)) { - return GetPlainFolderChildrenSorted(folder, user, sort); + return SortItems(folder.GetRecursiveChildren(user, true).OfType(), user, sort); } if (string.Equals(folder.ViewType, CollectionType.Music, StringComparison.OrdinalIgnoreCase)) { diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs index 96aa2167f..8bf9f2a04 100644 --- a/MediaBrowser.Model/Dlna/StreamInfo.cs +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -272,7 +272,7 @@ namespace MediaBrowser.Model.Dlna return MaxAudioChannels.HasValue && !IsDirectStream ? (streamChannels.HasValue ? Math.Min(MaxAudioChannels.Value, streamChannels.Value) : MaxAudioChannels.Value) - : stream == null ? null : streamChannels; + : streamChannels; } } diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json index 622ad2c05..5e667f3d0 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json @@ -315,7 +315,7 @@ "ButtonScenes": "Cenas", "ButtonQuality": "Qualidade", "HeaderNotifications": "Avisos", - "HeaderSelectPlayer": "Selecione onde executar:", + "HeaderSelectPlayer": "Selecione onde reproduzir:", "ButtonSelect": "Selecionar", "ButtonNew": "Nova", "MessageInternetExplorerWebm": "Para melhores resultados com o Internet Explorer, por favor instale o plugin WebM para IE.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json index 2e71def61..3fd62bed5 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json @@ -227,8 +227,8 @@ "OptionBlockMovies": "\u0424\u0438\u043b\u044c\u043c\u044b", "OptionBlockBooks": "\u041a\u043d\u0438\u0433\u0438", "OptionBlockGames": "\u0418\u0433\u0440\u044b", - "OptionBlockLiveTvPrograms": "\u042d\u0444\u0438\u0440\u043d\u044b\u0435 \u0442\u0435\u043b\u0435\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438", - "OptionBlockLiveTvChannels": "\u042d\u0444\u0438\u0440\u043d\u044b\u0435 \u0422\u0412-\u043a\u0430\u043d\u0430\u043b\u044b", + "OptionBlockLiveTvPrograms": "\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u044d\u0444\u0438\u0440\u043d\u043e\u0433\u043e \u0422\u0412", + "OptionBlockLiveTvChannels": "\u041a\u0430\u043d\u0430\u043b\u044b \u044d\u0444\u0438\u0440\u043d\u043e\u0433\u043e \u0422\u0412", "OptionBlockChannelContent": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043a\u0430\u043d\u0430\u043b\u043e\u0432", "ButtonRevoke": "\u041e\u0442\u043e\u0437\u0432\u0430\u0442\u044c", "MessageConfirmRevokeApiKey": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043e\u0437\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 API? \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a Media Browser \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0437\u043a\u043e \u043e\u0431\u043e\u0440\u0432\u0430\u043d\u043e.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json index 03a4ff2ce..b65d112e1 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json @@ -4,7 +4,7 @@ "Users": "Kullan\u0131c\u0131lar", "Delete": "Sil", "Administrator": "Y\u00f6netici", - "Password": "\u015eifre", + "Password": "Sifre", "DeleteImage": "Resmi Sil", "DeleteImageConfirmation": "Bu G\u00f6r\u00fcnt\u00fcy\u00fc Silmek \u0130stedi\u011finizden Eminmisiniz?", "FileReadCancelled": "Dosya Okuma \u0130ptal Edildi", @@ -12,19 +12,19 @@ "FileReadError": "Dosya Okunurken Bir Hata Olu\u015ftu", "DeleteUser": "Kullan\u0131c\u0131 Sil", "DeleteUserConfirmation": "Silmek \u0130stedi\u011finizden Eminmisiniz {0} ?", - "PasswordResetHeader": "\u015eifre S\u0131f\u0131rland\u0131", - "PasswordResetComplete": "Parolan\u0131z S\u0131f\u0131rlanm\u0131\u015ft\u0131r.", - "PasswordResetConfirmation": "\u015eifrenizi S\u0131f\u0131rlamak \u0130stesi\u011finizden Eminmisiniz?", - "PasswordSaved": "\u015eifre Kaydedildi", - "PasswordMatchError": "Parola ve \u015eifre E\u015fle\u015fmelidir.", + "PasswordResetHeader": "Sifre S\u0131f\u0131rland\u0131", + "PasswordResetComplete": "Parolan\u0131z S\u0131f\u0131rlanm\u0131st\u0131r.", + "PasswordResetConfirmation": "Sifrenizi S\u0131f\u0131rlamak \u0130stediginizden Eminmisiniz?", + "PasswordSaved": "Sifre Kaydedildi", + "PasswordMatchError": "Parola ve Sifre Eslesmelidir.", "OptionRelease": "Resmi Yay\u0131n", - "OptionBeta": "Beta", - "OptionDev": "Dev (Unstable)", - "UninstallPluginHeader": "Uninstall Plugin", - "UninstallPluginConfirmation": "Kald\u0131rmak \u0130stedi\u011finizden Eminmisiniz {0} ?", - "NoPluginConfigurationMessage": "This plugin has nothing to configure.", + "OptionBeta": "Deneme", + "OptionDev": "Gelistirici", + "UninstallPluginHeader": "Eklenti Kald\u0131r", + "UninstallPluginConfirmation": "Kald\u0131rmak \u0130stediginizden Eminmisiniz {0} ?", + "NoPluginConfigurationMessage": "Eklenti \u0130cin Ayar Yok", "NoPluginsInstalledMessage": "Eklentiler Y\u00fckl\u00fc De\u011fil", - "BrowsePluginCatalogMessage": "Mevcut Eklentileri G\u00f6rebilmek \u0130\u00e7in Eklenti Kato\u011funa G\u00f6z At\u0131n.", + "BrowsePluginCatalogMessage": "Mevcut Eklentileri G\u00f6rebilmek \u0130\u00e7in Eklenti Katologuna G\u00f6z At\u0131n.", "MessageKeyEmailedTo": "Key emailed to {0}.", "MessageKeysLinked": "Keys linked.", "HeaderConfirmation": "Confirmation", @@ -55,17 +55,17 @@ "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", "LabelUnknownLanguage": "Unknown language", - "ButtonMute": "Mute", + "ButtonMute": "Sessiz", "ButtonUnmute": "Unmute", - "ButtonStop": "Stop", - "ButtonNextTrack": "Next Track", - "ButtonPause": "Pause", + "ButtonStop": "Durdur", + "ButtonNextTrack": "Sonraki Par\u00e7a", + "ButtonPause": "Duraklat", "ButtonPlay": "\u00c7al", "ButtonEdit": "D\u00fczenle", "ButtonQueue": "Queue", "ButtonPlayTrailer": "Play trailer", "ButtonPlaylist": "Playlist", - "ButtonPreviousTrack": "Previous Track", + "ButtonPreviousTrack": "\u00d6nceki Par\u00e7a", "LabelEnabled": "Enabled", "LabelDisabled": "Disabled", "ButtonMoreInformation": "More Information", @@ -121,13 +121,13 @@ "MessageConfirmItemGrouping": "Media Browser clients will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", "HeaderResume": "Devam", "HeaderMyViews": "My Views", - "HeaderLibraryFolders": "Media Folders", - "HeaderLatestMedia": "Latest Media", + "HeaderLibraryFolders": "Media Klas\u00f6rleri", + "HeaderLatestMedia": "En Son G\u00f6r\u00fcnt\u00fclemeler", "ButtonMore": "More...", - "HeaderFavoriteMovies": "Favorite Movies", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteGames": "Favorite Games", + "HeaderFavoriteMovies": "Favori Filmler", + "HeaderFavoriteShows": "Favori Showlar", + "HeaderFavoriteEpisodes": "Favori B\u00f6l\u00fcmler", + "HeaderFavoriteGames": "Favori Oyunlar", "HeaderRatingsDownloads": "Rating \/ Downloads", "HeaderConfirmProfileDeletion": "Confirm Profile Deletion", "MessageConfirmProfileDeletion": "Are you sure you wish to delete this profile?", @@ -146,7 +146,7 @@ "ButtonRemove": "Sil", "LabelChapterDownloaders": "Chapter downloaders:", "LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", - "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteAlbums": "Favori Albumler", "HeaderLatestChannelMedia": "Latest Channel Items", "ButtonOrganizeFile": "Organize File", "ButtonDeleteFile": "Delete File", @@ -206,7 +206,7 @@ "HeaderVideoQuality": "Video Quality", "MessageErrorPlayingVideo": "There was an error playing the video.", "MessageEnsureOpenTuner": "Please ensure there is an open tuner availalble.", - "ButtonHome": "Home", + "ButtonHome": "Anasayfa", "ButtonDashboard": "Dashboard", "ButtonReports": "Reports", "ButtonMetadataManager": "Metadata Manager", @@ -275,7 +275,7 @@ "OptionGenres": "Genres", "OptionParentalRating": "Parental Rating", "OptionPeople": "People", - "OptionRuntime": "Runtime", + "OptionRuntime": "\u00c7al\u0131\u015fma s\u00fcresi", "OptionProductionLocations": "Production Locations", "OptionBirthLocation": "Birth Location", "LabelAllChannels": "All channels", @@ -298,7 +298,7 @@ "LabelPackageInstallCompleted": "{0} installation completed.", "LabelPackageInstallFailed": "{0} installation failed.", "LabelPackageInstallCancelled": "{0} installation cancelled.", - "TabServer": "Server", + "TabServer": "Sunucu", "TabUsers": "Users", "TabLibrary": "Library", "TabMetadata": "Metadata", @@ -311,8 +311,8 @@ "TabScheduledTasks": "Scheduled Tasks", "ButtonFullscreen": "Fullscreen", "ButtonAudioTracks": "Audio Tracks", - "ButtonSubtitles": "Subtitles", - "ButtonScenes": "Scenes", + "ButtonSubtitles": "Altyaz\u0131lar", + "ButtonScenes": "Sahneler", "ButtonQuality": "Quality", "HeaderNotifications": "Notifications", "HeaderSelectPlayer": "Select Player:", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json index d3091c8e2..beaf8aba9 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json @@ -519,7 +519,7 @@ "OptionCopy": "Copiar", "OptionMove": "Mover", "LabelTransferMethodHelp": "Copiar ou mover arquivos da pasta de monitora\u00e7\u00e3o", - "HeaderLatestNews": "Novidades Recentes", + "HeaderLatestNews": "Not\u00edcias Recentes", "HeaderHelpImproveMediaBrowser": "Ajude a Melhorar o Media Browser", "HeaderRunningTasks": "Tarefas em Execu\u00e7\u00e3o", "HeaderActiveDevices": "Dispositivos Ativos", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/tr.json b/MediaBrowser.Server.Implementations/Localization/Server/tr.json index af2b0b031..c2498b575 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/tr.json @@ -1,20 +1,20 @@ { - "LabelExit": "\u00c7\u0131k\u0131\u015f", + "LabelExit": "Cikis", "LabelVisitCommunity": "Bizi Ziyaret Edin", "LabelGithubWiki": "Github Wiki", "LabelSwagger": "Swagger", "LabelStandard": "Standart", - "LabelViewApiDocumentation": "Api D\u00f6k\u00fcman\u0131", + "LabelViewApiDocumentation": "Api D\u00f6k\u00fcman\u0131 Goruntule", "LabelBrowseLibrary": "K\u00fct\u00fcphane", "LabelConfigureMediaBrowser": "Media Taray\u0131c\u0131 Konfig\u00fcrasyon", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Server Yeniden Ba\u015flat", - "LabelShowLogWindow": "Show Log Window", + "LabelOpenLibraryViewer": "K\u00fct\u00fcphane G\u00f6r\u00fcnt\u00fcleyici", + "LabelRestartServer": "Server Yeniden Baslat", + "LabelShowLogWindow": "Log Ekran\u0131n\u0131 G\u00f6r\u00fcnt\u00fcle", "LabelPrevious": "\u00d6nceki", "LabelFinish": "Bitir", "LabelNext": "Sonraki", - "LabelYoureDone": "You're Done!", - "WelcomeToMediaBrowser": "Media Taray\u0131c\u0131ya Ho\u015fgeldiniz !", + "LabelYoureDone": "Haz\u0131rs\u0131n!", + "WelcomeToMediaBrowser": "Media Taray\u0131c\u0131ya Hosgeldiniz !", "TitleMediaBrowser": "Media Taray\u0131c\u0131", "ThisWizardWillGuideYou": "Bu sihirbaz kurulum i\u015flemi boyunca size yard\u0131mc\u0131 olacakt\u0131r. Ba\u015flamak i\u00e7in, tercih etti\u011finiz dili se\u00e7iniz.", "TellUsAboutYourself": "Kendinizden Bahsedin", @@ -22,11 +22,11 @@ "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", "LabelWindowsService": "Windows Servis", - "AWindowsServiceHasBeenInstalled": "Windows Servisi Y\u00fcklenmi\u015ftir.", - "WindowsServiceIntro1": "Medya Taray\u0131c\u0131 Sunucu normalde bir tepsi simgesi ile bir masa\u00fcst\u00fc uygulamas\u0131 olarak \u00e7al\u0131\u015f\u0131r, ancak bir arka plan servisi olarak \u00e7al\u0131\u015ft\u0131rmak isterseniz, bunun yerine windows servisleri kontrol panelinden ba\u015flat\u0131labilirsiniz.", - "WindowsServiceIntro2": "Windows hizmeti kullan\u0131yorsan\u0131z, o tepsi simgesi olarak ayn\u0131 anda \u00e7al\u0131\u015ft\u0131rabilirsiniz unutmay\u0131n, b\u00f6ylece hizmetini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in tepsiyi \u00e7\u0131kmak gerekir l\u00fctfen. Hizmeti de kontrol paneli \u00fczerinden y\u00f6netim ayr\u0131cal\u0131klar\u0131yla yap\u0131land\u0131r\u0131lm\u0131\u015f olmas\u0131 gerekir. \u015eu anda hizmet kendine g\u00fcncelleme m\u00fcmk\u00fcn oldu\u011funu unutmay\u0131n, bu y\u00fczden yeni s\u00fcr\u00fcmleri manuel etkile\u015fimi gerektirir.", + "AWindowsServiceHasBeenInstalled": "Windows Servisi Y\u00fcklenmistir.", + "WindowsServiceIntro1": "Medya Taray\u0131c\u0131 Sunucu normalde bir tepsi simgesi ile bir masa\u00fcst\u00fc uygulamas\u0131 olarak cal\u0131s\u0131r, ancak bir arka plan servisi olarak \u00e7al\u0131\u015ft\u0131rmak isterseniz, bunun yerine windows servisleri kontrol panelinden baslat\u0131labilirsiniz.", + "WindowsServiceIntro2": "Windows hizmeti kullan\u0131yorsan\u0131z, o tepsi simgesi olarak ayn\u0131 anda cal\u0131st\u0131rabilirsiniz unutmay\u0131n, b\u00f6ylece hizmetini cal\u0131st\u0131rmak i\u00e7in tepsiyi \u00e7\u0131kmak gerekir l\u00fctfen. Hizmeti de kontrol paneli \u00fczerinden y\u00f6netim ayr\u0131cal\u0131klar\u0131yla yap\u0131land\u0131r\u0131lm\u0131\u015f olmas\u0131 gerekir. Su anda hizmet kendine g\u00fcncelleme m\u00fcmk\u00fcn oldugunu unutmay\u0131n, bu y\u00fczden yeni s\u00fcr\u00fcmleri manuel etkilesimi gerektirir.", "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Dashboard<\/b>.", - "LabelConfigureSettings": "Ayarlar\u0131 De\u011fi\u015ftir", + "LabelConfigureSettings": "Ayarlar\u0131 Degistir", "LabelEnableVideoImageExtraction": "Enable video image extraction", "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", @@ -36,7 +36,7 @@ "ButtonOk": "Tamam", "ButtonCancel": "\u0130ptal", "ButtonNew": "Yeni", - "HeaderSetupLibrary": "Setup your media library", + "HeaderSetupLibrary": "Medya k\u00fct\u00fcphaneni kur", "ButtonAddMediaFolder": "Yeni Media Klas\u00f6r\u00fc", "LabelFolderType": "Klas\u00f6r T\u00fcr\u00fc:", "MediaFolderHelpPluginRequired": "* Requires the use of a plugin, e.g. GameBrowser or MB Bookshelf.", @@ -44,7 +44,7 @@ "LabelCountry": "\u00dclke", "LabelLanguage": "Dil", "HeaderPreferredMetadataLanguage": "Tercih edilen Meta Dili:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadata": "Medya meta dosyalar\u0131n\u0131 ayn\u0131 klas\u00f6rlere i\u015fle", "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", "LabelDownloadInternetMetadata": "\u0130nternetten \u0130\u00e7erik Y\u00fckleyin", "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", @@ -57,7 +57,7 @@ "TabImages": "Resimler", "TabNotifications": "Notifications", "TabCollectionTitles": "Titles", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelDisplayMissingEpisodesWithinSeasons": "Sezondaki kay\u0131p b\u00f6l\u00fcmleri g\u00f6ster", "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", "HeaderVideoPlaybackSettings": "Video Oynatma Ayarlar\u0131", "HeaderPlaybackSettings": "Playback Settings", @@ -66,7 +66,7 @@ "OptionDefaultSubtitles": "Default", "OptionOnlyForcedSubtitles": "Only forced subtitles", "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", + "OptionNoSubtitles": "Altyaz\u0131 Yok", "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", @@ -88,7 +88,7 @@ "LabelSelectUsers": "Select users:", "ButtonUpload": "Y\u00fckle", "HeaderUploadNewImage": "Yeni Resim Y\u00fckle", - "LabelDropImageHere": "Drop Image Here", + "LabelDropImageHere": "Resmi buraya s\u00fcr\u00fckle", "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", @@ -107,12 +107,12 @@ "OptionLikes": "Be\u011feniler", "OptionDislikes": "Be\u011fenmeyenler", "OptionActors": "Akt\u00f6rler", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", + "OptionGuestStars": "Konuk oylar\u0131", + "OptionDirectors": "Y\u00f6netmenler", + "OptionWriters": "Yazarlar", + "OptionProducers": "\u00dcreticiler", "HeaderResume": "Devam", - "HeaderNextUp": "Sonraki", + "HeaderNextUp": "Sonraki hafta", "NoNextUpItemsMessage": "None found. Start watching your shows!", "HeaderLatestEpisodes": "Latest Episodes", "HeaderPersonTypes": "Person Types:", @@ -121,18 +121,18 @@ "TabArtists": "Sanat\u00e7\u0131", "TabAlbumArtists": "Sanat\u00e7\u0131 Alb\u00fcm\u00fc", "TabMusicVideos": "Klipler", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", + "ButtonSort": "S\u0131rala", + "HeaderSortBy": "\u015euna g\u00f6re s\u0131rala", + "HeaderSortOrder": "Sipari\u015fe g\u00f6re s\u0131rala", "OptionPlayed": "\u00c7al\u0131n\u0131yor", "OptionUnplayed": "\u00c7al\u0131nm\u0131yor", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", + "OptionAscending": "Y\u00fckselen", + "OptionDescending": "D\u00fc\u015fen", + "OptionRuntime": "\u00c7al\u0131\u015fma s\u00fcresi", + "OptionReleaseDate": "Yay\u0131nlanma Tarihi", + "OptionPlayCount": "Oynatma sayac\u0131", + "OptionDatePlayed": "Oynatma Tarihi", + "OptionDateAdded": "Eklenme Tarihi", "OptionAlbumArtist": "Sanat\u00e7\u0131 Alb\u00fcm\u00fc", "OptionArtist": "Sanat\u00e7\u0131", "OptionAlbum": "Alb\u00fcm", @@ -157,9 +157,9 @@ "PluginsTitle": "Eklentiler", "HeaderAutomaticUpdates": "Otomatik G\u00fcncelleme", "HeaderNowPlaying": "\u015eimdi \u00c7al\u0131n\u0131yor", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", + "HeaderLatestAlbums": "Son Alb\u00fcmler", + "HeaderLatestSongs": "Son Par\u00e7alar", + "HeaderRecentlyPlayed": "Son oynat\u0131lan", "HeaderFrequentlyPlayed": "Frequently Played", "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", "LabelVideoType": "Video Tipi", @@ -168,7 +168,7 @@ "OptionIso": "\u0130so", "Option3D": "3D", "LabelFeatures": "Features:", - "LabelService": "Service:", + "LabelService": "Servis:", "LabelStatus": "Status:", "LabelVersion": "Version:", "LabelLastResult": "Last result:", @@ -206,7 +206,7 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "Genel", "TitleSupport": "Destek", - "TabLog": "Log", + "TabLog": "Kay\u0131t", "TabAbout": "Hakk\u0131nda", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", @@ -242,13 +242,13 @@ "PleaseSupportOtherProduces": "Please support other free products we utilize:", "VersionNumber": "Versiyon {0}", "TabPaths": "Paths", - "TabServer": "Server", + "TabServer": "Sunucu", "TabTranscoding": "Kodlay\u0131c\u0131", "TitleAdvanced": "Geli\u015fmi\u015f", "LabelAutomaticUpdateLevel": "Otomatik G\u00fcncelleme seviyesi", "OptionRelease": "Resmi Yay\u0131n", - "OptionBeta": "Beta", - "OptionDev": "Dev (Unstable)", + "OptionBeta": "Deneme", + "OptionDev": "Gelistirici", "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", "LabelEnableDebugLogging": "Enable debug logging", @@ -294,14 +294,14 @@ "LabelPassword": "\u015eifre", "ButtonManualLogin": "Manuel Giri\u015f", "PasswordLocalhostMessage": "Passwords are not required when logging in from localhost.", - "TabGuide": "Guide", + "TabGuide": "K\u0131lavuz", "TabChannels": "Kanallar", "TabCollections": "Collections", "HeaderChannels": "Kanallar", "TabRecordings": "Kay\u0131tlar", "TabScheduled": "G\u00f6revler", "TabSeries": "Seriler", - "TabFavorites": "Favorites", + "TabFavorites": "Favoriler", "TabMyLibrary": "My Library", "ButtonCancelRecording": "Kay\u0131t \u0130ptal", "HeaderPrePostPadding": "Pre\/Post Padding", @@ -310,14 +310,14 @@ "LabelPostPaddingMinutes": "Post-padding minutes:", "OptionPostPaddingRequired": "Post-padding is required in order to record.", "HeaderWhatsOnTV": "What's On", - "HeaderUpcomingTV": "Upcoming TV", + "HeaderUpcomingTV": "Yak\u0131nda TV'de", "TabStatus": "Durum", "TabSettings": "Ayarlar", - "ButtonRefreshGuideData": "Refresh Guide Data", - "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", - "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "ButtonRefreshGuideData": "K\u0131lavuzu Yinele", + "OptionPriority": "\u00d6ncelik", + "OptionRecordOnAllChannels": "T\u00fcm kanallardaki program\u0131 kaydet", + "OptionRecordAnytime": "Program\u0131 herhangi bir zamanda kaydet", + "OptionRecordOnlyNewEpisodes": "Sadece yeni b\u00f6l\u00fcmleri kaydet", "HeaderDays": "G\u00fcnler", "HeaderActiveRecordings": "Aktif Kay\u0131tlar", "HeaderLatestRecordings": "Ge\u00e7mi\u015f Kay\u0131tlar", @@ -342,7 +342,7 @@ "OptionDownloadMenuImage": "Men\u00fc", "OptionDownloadLogoImage": "Logo", "OptionDownloadBoxImage": "Kutu", - "OptionDownloadDiscImage": "Disc", + "OptionDownloadDiscImage": "Disk", "OptionDownloadBannerImage": "Banner", "OptionDownloadBackImage": "Geri", "OptionDownloadArtImage": "Galeri", @@ -380,7 +380,7 @@ "LabelEnableRealtimeMonitor": "Enable real time monitoring", "LabelEnableRealtimeMonitorHelp": "Changes will be processed immediately, on supported file systems.", "ButtonScanLibrary": "K\u00fct\u00fcphaneyi Tara", - "HeaderNumberOfPlayers": "Players:", + "HeaderNumberOfPlayers": "Oyuncular", "OptionAnyNumberOfPlayers": "Hepsi", "Option1Player": "1+", "Option2Player": "2+", @@ -390,25 +390,25 @@ "HeaderThemeVideos": "Video Temalar\u0131", "HeaderThemeSongs": "Tema \u015eark\u0131lar", "HeaderScenes": "Diziler", - "HeaderAwardsAndReviews": "Awards and Reviews", - "HeaderSoundtracks": "Soundtracks", - "HeaderMusicVideos": "Music Videos", + "HeaderAwardsAndReviews": "\u00d6d\u00fcller ve ilk bak\u0131\u015f", + "HeaderSoundtracks": "Film m\u00fczikleri", + "HeaderMusicVideos": "M\u00fczik vidyolar\u0131", "HeaderSpecialFeatures": "Special Features", "HeaderCastCrew": "Cast & Crew", "HeaderAdditionalParts": "Additional Parts", "ButtonSplitVersionsApart": "Split Versions Apart", "ButtonPlayTrailer": "Trailer", - "LabelMissing": "Missing", - "LabelOffline": "Offline", + "LabelMissing": "Kay\u0131p", + "LabelOffline": "\u00c7evrimd\u0131\u015f\u0131", "PathSubstitutionHelp": "Path substitutions are used for mapping a path on the server to a path that clients are able to access. By allowing clients direct access to media on the server they may be able to play them directly over the network and avoid using server resources to stream and transcode them.", - "HeaderFrom": "From", - "HeaderTo": "To", - "LabelFrom": "From:", - "LabelFromHelp": "Example: D:\\Movies (on the server)", - "LabelTo": "To:", + "HeaderFrom": "Buradan", + "HeaderTo": "Buraya", + "LabelFrom": "Buradan", + "LabelFromHelp": "\u00d6rnek: D:\\Movies (sunucu \u00fczerinde)", + "LabelTo": "Buraya", "LabelToHelp": "Example: \\\\MyServer\\Movies (a path clients can access)", "ButtonAddPathSubstitution": "Add Substitution", - "OptionSpecialEpisode": "Specials", + "OptionSpecialEpisode": "\u00d6zel", "OptionMissingEpisode": "Missing Episodes", "OptionUnairedEpisode": "Unaired Episodes", "OptionEpisodeSortName": "Episode Sort Name", @@ -531,7 +531,7 @@ "ButtonUpdateNow": "Update Now", "PleaseUpdateManually": "Please shutdown the server and update manually.", "NewServerVersionAvailable": "A new version of Media Browser Server is available!", - "ServerUpToDate": "Media Browser Server is up to date", + "ServerUpToDate": "Media Browser Server G\u00fcncel", "ErrorConnectingToMediaBrowserRepository": "There was an error connecting to the remote Media Browser repository.", "LabelComponentsUpdated": "The following components have been installed or updated:", "MessagePleaseRestartServerToFinishUpdating": "Please restart the server to finish applying updates.", @@ -554,7 +554,7 @@ "ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be a Media Browser Supporter. Please donate and support the continued development of the core product. Thank you.", "HeaderDisplaySettings": "Display Settings", "TabPlayTo": "Play To", - "LabelEnableDlnaServer": "Enable Dlna server", + "LabelEnableDlnaServer": "DLNA Sunucusu etkin", "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Media Browser content.", "LabelEnableBlastAliveMessages": "Blast alive messages", "LabelEnableBlastAliveMessagesHelp": "Enable this if the server is not detected reliably by other UPnP devices on your network.", @@ -564,7 +564,7 @@ "LabelDefaultUserHelp": "Determines which user library should be displayed on connected devices. This can be overridden for each device using profiles.", "TitleDlna": "DLNA", "TitleChannels": "Channels", - "HeaderServerSettings": "Server Settings", + "HeaderServerSettings": "Sunucu ayarlar\u0131", "LabelWeatherDisplayLocation": "Weather display location:", "LabelWeatherDisplayLocationHelp": "US zip code \/ City, State, Country \/ City, Country", "LabelWeatherDisplayUnit": "Weather display unit:", @@ -591,7 +591,7 @@ "NotificationOptionNewLibraryContent": "New content added", "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", "SendNotificationHelp": "By default, notifications are delivered to the dashboard inbox. Browse the plugin catalog to install additional notification options.", - "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionServerRestartRequired": "Sunucu yeniden ba\u015flat\u0131lmal\u0131", "LabelNotificationEnabled": "Enable this notification", "LabelMonitorUsers": "Monitor activity from:", "LabelSendNotificationToUsers": "Send the notification to:", @@ -599,8 +599,8 @@ "LabelUseNotificationServices": "Use the following services:", "CategoryUser": "User", "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", + "CategoryApplication": "Uygulamalar", + "CategoryPlugin": "Eklenti", "LabelMessageTitle": "Message title:", "LabelAvailableTokens": "Available tokens:", "AdditionalNotificationServices": "Browse the plugin catalog to install additional notification services.", @@ -610,59 +610,59 @@ "ButtonArrowUp": "Up", "ButtonArrowDown": "Down", "ButtonArrowLeft": "Left", - "ButtonArrowRight": "Right", - "ButtonBack": "Back", - "ButtonInfo": "Info", + "ButtonArrowRight": "Sa\u011f", + "ButtonBack": "Geri", + "ButtonInfo": "Bilgi", "ButtonOsd": "On screen display", - "ButtonPageUp": "Page Up", - "ButtonPageDown": "Page Down", + "ButtonPageUp": "Sayfa Ba\u015f\u0131", + "ButtonPageDown": "Sayfa Sonu", "PageAbbreviation": "PG", - "ButtonHome": "Home", - "ButtonSettings": "Settings", - "ButtonTakeScreenshot": "Capture Screenshot", + "ButtonHome": "Anasayfa", + "ButtonSettings": "Ayarlar", + "ButtonTakeScreenshot": "Ekran G\u00f6r\u00fcnt\u00fcs\u00fc Al", "ButtonLetterUp": "Letter Up", "ButtonLetterDown": "Letter Down", "PageButtonAbbreviation": "PG", "LetterButtonAbbreviation": "A", - "TabNowPlaying": "Now Playing", - "TabNavigation": "Navigation", - "TabControls": "Controls", + "TabNowPlaying": "\u015eimdi \u00c7al\u0131n\u0131yor", + "TabNavigation": "Navigasyon", + "TabControls": "Kontrol", "ButtonFullscreen": "Toggle fullscreen", - "ButtonScenes": "Scenes", - "ButtonSubtitles": "Subtitles", + "ButtonScenes": "Sahneler", + "ButtonSubtitles": "Altyaz\u0131lar", "ButtonAudioTracks": "Audio tracks", "ButtonPreviousTrack": "Previous track", "ButtonNextTrack": "Next track", - "ButtonStop": "Stop", - "ButtonPause": "Pause", + "ButtonStop": "Durdur", + "ButtonPause": "Duraklat", "LabelGroupMoviesIntoCollections": "Group movies into collections", "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.", - "NotificationOptionPluginError": "Plugin failure", - "ButtonVolumeUp": "Volume up", - "ButtonVolumeDown": "Volume down", - "ButtonMute": "Mute", - "HeaderLatestMedia": "Latest Media", + "NotificationOptionPluginError": "Eklenti Ba\u015far\u0131s\u0131z", + "ButtonVolumeUp": "Ses A\u00e7", + "ButtonVolumeDown": "Ses Azalt", + "ButtonMute": "Sessiz", + "HeaderLatestMedia": "En Son G\u00f6r\u00fcnt\u00fclemeler", "OptionSpecialFeatures": "Special Features", - "HeaderCollections": "Collections", + "HeaderCollections": "Koleksiyon", "LabelProfileCodecsHelp": "Separated by comma. This can be left empty to apply to all codecs.", "LabelProfileContainersHelp": "Separated by comma. This can be left empty to apply to all containers.", - "HeaderResponseProfile": "Response Profile", - "LabelType": "Type:", + "HeaderResponseProfile": "Profil G\u00f6r\u00fcnt\u00fcleme", + "LabelType": "T\u00fcr", "LabelProfileContainer": "Container:", - "LabelProfileVideoCodecs": "Video codecs:", - "LabelProfileAudioCodecs": "Audio codecs:", - "LabelProfileCodecs": "Codecs:", + "LabelProfileVideoCodecs": "Video Codec", + "LabelProfileAudioCodecs": "Ses Codec", + "LabelProfileCodecs": "Codecler", "HeaderDirectPlayProfile": "Direct Play Profile", - "HeaderTranscodingProfile": "Transcoding Profile", - "HeaderCodecProfile": "Codec Profile", + "HeaderTranscodingProfile": "Kodlama Profili", + "HeaderCodecProfile": "Codec Profili", "HeaderCodecProfileHelp": "Codec profiles indicate the limitations of a device when playing specific codecs. If a limitation applies then the media will be transcoded, even if the codec is configured for direct play.", "HeaderContainerProfile": "Container Profile", "HeaderContainerProfileHelp": "Container profiles indicate the limitations of a device when playing specific formats. If a limitation applies then the media will be transcoded, even if the format is configured for direct play.", - "OptionProfileVideo": "Video", - "OptionProfileAudio": "Audio", - "OptionProfileVideoAudio": "Video Audio", - "OptionProfilePhoto": "Photo", - "LabelUserLibrary": "User library:", + "OptionProfileVideo": "Vidyo", + "OptionProfileAudio": "Ses", + "OptionProfileVideoAudio": "Video Sesi", + "OptionProfilePhoto": "Foto\u011fraf", + "LabelUserLibrary": "Kullan\u0131c\u0131 K\u00fct\u00fcphanesi:", "LabelUserLibraryHelp": "Select which user library to display to the device. Leave empty to inherit the default setting.", "OptionPlainStorageFolders": "Display all folders as plain storage folders", "OptionPlainStorageFoldersHelp": "If enabled, all folders are represented in DIDL as \"object.container.storageFolder\" instead of a more specific type, such as \"object.container.person.musicArtist\".", @@ -672,7 +672,7 @@ "TabIdentification": "Identification", "TabDirectPlay": "Direct Play", "TabContainers": "Containers", - "TabCodecs": "Codecs", + "TabCodecs": "Codecler", "TabResponses": "Responses", "HeaderProfileInformation": "Profile Information", "LabelEmbedAlbumArtDidl": "Embed album art in Didl", @@ -683,9 +683,9 @@ "LabelAlbumArtMaxWidthHelp": "Max resolution of album art exposed via upnp:albumArtURI.", "LabelAlbumArtMaxHeight": "Album art max height:", "LabelAlbumArtMaxHeightHelp": "Max resolution of album art exposed via upnp:albumArtURI.", - "LabelIconMaxWidth": "Icon max width:", + "LabelIconMaxWidth": "ikon Max Y\u00fckseklik:", "LabelIconMaxWidthHelp": "Max resolution of icons exposed via upnp:icon.", - "LabelIconMaxHeight": "Icon max height:", + "LabelIconMaxHeight": "\u0130kon Max Geni\u015flik:", "LabelIconMaxHeightHelp": "Max resolution of icons exposed via upnp:icon.", "LabelIdentificationFieldHelp": "A case-insensitive substring or regex expression.", "HeaderProfileServerSettingsHelp": "These values control how Media Browser will present itself to the device.", @@ -698,13 +698,13 @@ "OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests", "OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honored but will ignore the byte range header.", "LabelFriendlyName": "Friendly name", - "LabelManufacturer": "Manufacturer", + "LabelManufacturer": "\u00dcretici", "LabelManufacturerUrl": "Manufacturer url", "LabelModelName": "Model name", "LabelModelNumber": "Model number", "LabelModelDescription": "Model description", "LabelModelUrl": "Model url", - "LabelSerialNumber": "Serial number", + "LabelSerialNumber": "Seri Numaras\u0131", "LabelDeviceDescription": "Device description", "HeaderIdentificationCriteriaHelp": "Enter at least one identification criteria.", "HeaderDirectPlayProfileHelp": "Add direct play profiles to indicate which formats the device can handle natively.", @@ -730,7 +730,7 @@ "MessageNoChapterProviders": "Install a chapter provider plugin such as ChapterDb to enable additional chapter options.", "LabelSkipIfGraphicalSubsPresent": "Skip if the video already contains graphical subtitles", "LabelSkipIfGraphicalSubsPresentHelp": "Keeping text versions of subtitles will result in more efficient delivery to mobile clients.", - "TabSubtitles": "Subtitles", + "TabSubtitles": "Altyaz\u0131lar", "TabChapters": "Chapters", "HeaderDownloadChaptersFor": "Download chapter names for:", "LabelOpenSubtitlesUsername": "Open Subtitles username:", @@ -739,12 +739,12 @@ "LabelPlayDefaultAudioTrack": "Play default audio track regardless of language", "LabelSubtitlePlaybackMode": "Subtitle mode:", "LabelDownloadLanguages": "Download languages:", - "ButtonRegister": "Register", + "ButtonRegister": "Kay\u0131t", "LabelSkipIfAudioTrackPresent": "Skip if the default audio track matches the download language", "LabelSkipIfAudioTrackPresentHelp": "Uncheck this to ensure all videos have subtitles, regardless of audio language.", - "HeaderSendMessage": "Send Message", - "ButtonSend": "Send", - "LabelMessageText": "Message text:", + "HeaderSendMessage": "Mesaj G\u00f6nder", + "ButtonSend": "G\u00f6nder", + "LabelMessageText": "Mesaj Metni:", "MessageNoAvailablePlugins": "No available plugins.", "LabelDisplayPluginsFor": "Display plugins for:", "PluginTabMediaBrowserClassic": "MB Classic", @@ -766,20 +766,20 @@ "LabelEnableBackdrops": "Enable backdrops", "LabelEnableThemeSongsHelp": "If enabled, theme songs will be played in the background while browsing the library.", "LabelEnableBackdropsHelp": "If enabled, backdrops will be displayed in the background of some pages while browsing the library.", - "HeaderHomePage": "Home Page", + "HeaderHomePage": "Anasayfa", "HeaderSettingsForThisDevice": "Settings for This Device", "OptionAuto": "Auto", "OptionYes": "Yes", "OptionNo": "No", - "LabelHomePageSection1": "Home page section 1:", - "LabelHomePageSection2": "Home page section 2:", - "LabelHomePageSection3": "Home page section 3:", - "LabelHomePageSection4": "Home page section 4:", + "LabelHomePageSection1": "Anasayfa Secenek 1:", + "LabelHomePageSection2": "Anasayfa Secenek 2:", + "LabelHomePageSection3": "Anasayfa Secenek 3:", + "LabelHomePageSection4": "Anasayfa Secenek 4:", "OptionMyViewsButtons": "My views (buttons)", "OptionMyViews": "My views", "OptionMyViewsSmall": "My views (small)", "OptionResumablemedia": "Resume", - "OptionLatestMedia": "Latest media", + "OptionLatestMedia": "En Son G\u00f6r\u00fcnt\u00fclemeler", "OptionLatestChannelMedia": "Latest channel items", "HeaderLatestChannelItems": "Latest Channel Items", "OptionNone": "None", @@ -791,7 +791,7 @@ "ButtonMarkRead": "Mark Read", "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", - "TabNextUp": "Next Up", + "TabNextUp": "Sonraki hafta", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the New button to start creating Collections.", "HeaderWelcomeToMediaBrowserWebClient": "Welcome to the Media Browser Web Client", @@ -821,7 +821,7 @@ "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", "OptionDisplayAdultContent": "Display adult content", - "OptionLibraryFolders": "Media folders", + "OptionLibraryFolders": "Media Klas\u00f6rleri", "TitleRemoteControl": "Remote Control", "OptionLatestTvRecordings": "Latest recordings", "LabelProtocolInfo": "Protocol info:", @@ -853,7 +853,7 @@ "LabelAutomaticallyDonateHelp": "You can cancel at any time via your PayPal account.", "OptionList": "List", "TabDashboard": "Dashboard", - "TitleServer": "Server", + "TitleServer": "Sunucu", "LabelCache": "Cache:", "LabelLogs": "Logs:", "LabelMetadata": "Metadata:", -- cgit v1.2.3 From c5319bb4ae9606e07d62525a022e5a67f85a7d43 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 4 Aug 2014 23:41:56 -0400 Subject: update playlist xml saving --- .../DefaultTheme/DefaultThemeService.cs | 673 --------------------- MediaBrowser.Api/DefaultTheme/Models.cs | 83 --- MediaBrowser.Api/Library/LibraryService.cs | 5 + MediaBrowser.Api/MediaBrowser.Api.csproj | 2 - .../Serialization/JsonSerializer.cs | 20 - .../Serialization/XmlSerializer.cs | 15 - .../Configuration/ConfigurationHelper.cs | 28 +- MediaBrowser.Controller/Entities/BaseItem.cs | 7 - MediaBrowser.Controller/Entities/LinkedChild.cs | 8 +- MediaBrowser.Controller/Library/TVUtils.cs | 2 - .../Providers/BaseItemXmlParser.cs | 23 +- MediaBrowser.Dlna/Didl/DidlBuilder.cs | 2 +- .../MediaBrowser.LocalMetadata.csproj | 2 + .../Parsers/BoxSetXmlParser.cs | 9 +- .../Parsers/PlaylistXmlParser.cs | 72 +++ .../Providers/BoxSetXmlProvider.cs | 6 +- .../Providers/PlaylistXmlProvider.cs | 31 + .../Providers/TrailerXmlProvider.cs | 8 +- .../Savers/PlaylistXmlSaver.cs | 6 +- .../Savers/XmlSaverHelpers.cs | 6 +- .../Serialization/IJsonSerializer.cs | 8 - MediaBrowser.Model/Serialization/IXmlSerializer.cs | 7 - .../HttpServer/HttpListenerHost.cs | 2 +- .../Localization/JavaScript/ar.json | 15 +- .../Localization/JavaScript/ca.json | 15 +- .../Localization/JavaScript/cs.json | 15 +- .../Localization/JavaScript/da.json | 15 +- .../Localization/JavaScript/de.json | 15 +- .../Localization/JavaScript/el.json | 15 +- .../Localization/JavaScript/en_GB.json | 15 +- .../Localization/JavaScript/en_US.json | 15 +- .../Localization/JavaScript/es.json | 15 +- .../Localization/JavaScript/es_MX.json | 13 +- .../Localization/JavaScript/fr.json | 13 +- .../Localization/JavaScript/he.json | 15 +- .../Localization/JavaScript/it.json | 13 +- .../Localization/JavaScript/javascript.json | 7 +- .../Localization/JavaScript/kk.json | 15 +- .../Localization/JavaScript/ms.json | 15 +- .../Localization/JavaScript/nb.json | 15 +- .../Localization/JavaScript/nl.json | 13 +- .../Localization/JavaScript/pl.json | 15 +- .../Localization/JavaScript/pt_BR.json | 15 +- .../Localization/JavaScript/pt_PT.json | 15 +- .../Localization/JavaScript/ru.json | 19 +- .../Localization/JavaScript/sv.json | 13 +- .../Localization/JavaScript/tr.json | 19 +- .../Localization/JavaScript/vi.json | 15 +- .../Localization/JavaScript/zh_TW.json | 15 +- .../Localization/Server/ar.json | 48 +- .../Localization/Server/ca.json | 50 +- .../Localization/Server/cs.json | 48 +- .../Localization/Server/da.json | 48 +- .../Localization/Server/de.json | 48 +- .../Localization/Server/el.json | 48 +- .../Localization/Server/en_GB.json | 50 +- .../Localization/Server/en_US.json | 50 +- .../Localization/Server/es.json | 48 +- .../Localization/Server/es_MX.json | 48 +- .../Localization/Server/fr.json | 48 +- .../Localization/Server/he.json | 48 +- .../Localization/Server/it.json | 50 +- .../Localization/Server/kk.json | 52 +- .../Localization/Server/ko.json | 50 +- .../Localization/Server/ms.json | 50 +- .../Localization/Server/nb.json | 48 +- .../Localization/Server/nl.json | 50 +- .../Localization/Server/pl.json | 48 +- .../Localization/Server/pt_BR.json | 50 +- .../Localization/Server/pt_PT.json | 48 +- .../Localization/Server/ru.json | 58 +- .../Localization/Server/server.json | 47 +- .../Localization/Server/sv.json | 48 +- .../Localization/Server/tr.json | 66 +- .../Localization/Server/vi.json | 48 +- .../Localization/Server/zh_TW.json | 48 +- .../Persistence/SqliteExtensions.cs | 22 + 77 files changed, 1768 insertions(+), 1002 deletions(-) delete mode 100644 MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs delete mode 100644 MediaBrowser.Api/DefaultTheme/Models.cs create mode 100644 MediaBrowser.LocalMetadata/Parsers/PlaylistXmlParser.cs create mode 100644 MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs (limited to 'MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json') diff --git a/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs b/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs deleted file mode 100644 index 21ba47bd4..000000000 --- a/MediaBrowser.Api/DefaultTheme/DefaultThemeService.cs +++ /dev/null @@ -1,673 +0,0 @@ -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Dto; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Entities.Movies; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Net; -using MediaBrowser.Controller.Persistence; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; -using MediaBrowser.Model.Querying; -using ServiceStack; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace MediaBrowser.Api.DefaultTheme -{ - [Route("/MBT/DefaultTheme/Games", "GET")] - public class GetGamesView : IReturn - { - [ApiMember(Name = "UserId", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid UserId { get; set; } - - [ApiMember(Name = "RecentlyPlayedGamesLimit", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int RecentlyPlayedGamesLimit { get; set; } - - public string ParentId { get; set; } - } - - [Route("/MBT/DefaultTheme/TV", "GET")] - public class GetTvView : IReturn - { - [ApiMember(Name = "UserId", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid UserId { get; set; } - - [ApiMember(Name = "ComedyGenre", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] - public string ComedyGenre { get; set; } - - [ApiMember(Name = "RomanceGenre", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] - public string RomanceGenre { get; set; } - - [ApiMember(Name = "TopCommunityRating", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public double TopCommunityRating { get; set; } - - [ApiMember(Name = "NextUpEpisodeLimit", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int NextUpEpisodeLimit { get; set; } - - [ApiMember(Name = "ResumableEpisodeLimit", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int ResumableEpisodeLimit { get; set; } - - [ApiMember(Name = "LatestEpisodeLimit", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int LatestEpisodeLimit { get; set; } - - public string ParentId { get; set; } - } - - [Route("/MBT/DefaultTheme/Movies", "GET")] - public class GetMovieView : IReturn - { - [ApiMember(Name = "UserId", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid UserId { get; set; } - - [ApiMember(Name = "FamilyGenre", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] - public string FamilyGenre { get; set; } - - [ApiMember(Name = "ComedyGenre", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] - public string ComedyGenre { get; set; } - - [ApiMember(Name = "RomanceGenre", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] - public string RomanceGenre { get; set; } - - [ApiMember(Name = "LatestMoviesLimit", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int LatestMoviesLimit { get; set; } - - [ApiMember(Name = "LatestTrailersLimit", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] - public int LatestTrailersLimit { get; set; } - - public string ParentId { get; set; } - } - - [Route("/MBT/DefaultTheme/Favorites", "GET")] - public class GetFavoritesView : IReturn - { - [ApiMember(Name = "UserId", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")] - public Guid UserId { get; set; } - } - - [Authenticated] - public class DefaultThemeService : BaseApiService - { - private readonly IUserManager _userManager; - private readonly IDtoService _dtoService; - private readonly ILogger _logger; - private readonly ILibraryManager _libraryManager; - private readonly IUserDataManager _userDataManager; - - private readonly IImageProcessor _imageProcessor; - private readonly IItemRepository _itemRepo; - - public DefaultThemeService(IUserManager userManager, IDtoService dtoService, ILogger logger, ILibraryManager libraryManager, IImageProcessor imageProcessor, IUserDataManager userDataManager, IItemRepository itemRepo) - { - _userManager = userManager; - _dtoService = dtoService; - _logger = logger; - _libraryManager = libraryManager; - _imageProcessor = imageProcessor; - _userDataManager = userDataManager; - _itemRepo = itemRepo; - } - - public object Get(GetFavoritesView request) - { - var user = _userManager.GetUserById(request.UserId); - - var allItems = user.RootFolder.GetRecursiveChildren(user) - .ToList(); - - var allFavoriteItems = allItems.Where(i => _userDataManager.GetUserData(user.Id, i.GetUserDataKey()).IsFavorite) - .ToList(); - - var itemsWithImages = allFavoriteItems.Where(i => !string.IsNullOrEmpty(i.PrimaryImagePath)) - .ToList(); - - var itemsWithBackdrops = allFavoriteItems.Where(i => i.GetImages(ImageType.Backdrop).Any()) - .ToList(); - - var view = new FavoritesView(); - - var fields = new List(); - - view.BackdropItems = FilterItemsForBackdropDisplay(itemsWithBackdrops) - .Randomize("backdrop") - .Take(10) - .Select(i => _dtoService.GetBaseItemDto(i, fields, user)) - .ToList(); - - var spotlightItems = itemsWithBackdrops.Randomize("spotlight") - .Take(10) - .ToList(); - - view.SpotlightItems = spotlightItems - .Select(i => _dtoService.GetBaseItemDto(i, fields, user)) - .ToList(); - - fields.Add(ItemFields.PrimaryImageAspectRatio); - - view.Albums = itemsWithImages - .OfType() - .Randomize() - .Take(4) - .Select(i => _dtoService.GetBaseItemDto(i, fields, user)) - .ToList(); - - view.Books = itemsWithImages - .OfType() - .Randomize() - .Take(6) - .Select(i => _dtoService.GetBaseItemDto(i, fields, user)) - .ToList(); - - view.Episodes = itemsWithImages - .OfType() - .Randomize() - .Take(6) - .Select(i => _dtoService.GetBaseItemDto(i, fields, user)) - .ToList(); - - view.Games = itemsWithImages - .OfType() - .Randomize() - .Take(6) - .Select(i => _dtoService.GetBaseItemDto(i, fields, user)) - .ToList(); - - view.Movies = itemsWithImages - .OfType() - .Randomize() - .Take(6) - .Select(i => _dtoService.GetBaseItemDto(i, fields, user)) - .ToList(); - - view.Series = itemsWithImages - .OfType() - .Randomize() - .Take(6) - .Select(i => _dtoService.GetBaseItemDto(i, fields, user)) - .ToList(); - - view.Songs = itemsWithImages - .OfType