diff options
| author | Shadowghost <Ghost_of_Stone@web.de> | 2026-10-24 09:56:04 +0200 |
|---|---|---|
| committer | Shadowghost <Ghost_of_Stone@web.de> | 2026-10-24 09:56:04 +0200 |
| commit | d95c2e1425d0d902e8191260ba9151f686aa2650 (patch) | |
| tree | 3bc937664dcf9fe8d7659b00d92fc3a6c61be805 /Emby.Server.Implementations/Localization | |
| parent | d3a92c69f8c1c5d1cda803a35f03175d6ba3b091 (diff) | |
| parent | c7ce6a1b56ee7dcc1896250df0f2f9deaa828a81 (diff) | |
Merge branch 'master' into port-async-migration-routines
# Conflicts:
# Jellyfin.Server/Migrations/Routines/20260915120000_MigrateRatingLevels.cs
Diffstat (limited to 'Emby.Server.Implementations/Localization')
28 files changed, 332 insertions, 160 deletions
diff --git a/Emby.Server.Implementations/Localization/Core/bs.json b/Emby.Server.Implementations/Localization/Core/bs.json index 5686807d9a..98dcc68ed1 100644 --- a/Emby.Server.Implementations/Localization/Core/bs.json +++ b/Emby.Server.Implementations/Localization/Core/bs.json @@ -118,5 +118,8 @@ "NameExtraShort": "Kratko", "NameExtraThemeSong": "Tema", "NameExtraThemeVideo": "Tematski video", - "NameExtraTrailer": "Najava" + "NameExtraTrailer": "Najava", + "LyricDownloadFailureFromForItem": "Tekstovi nisu uspješno preuzeti sa {0} za {1}", + "NameExtraUnknown": "Ekstra", + "Original": "Original" } diff --git a/Emby.Server.Implementations/Localization/Core/cs.json b/Emby.Server.Implementations/Localization/Core/cs.json index 033002d2b2..cfc16d553c 100644 --- a/Emby.Server.Implementations/Localization/Core/cs.json +++ b/Emby.Server.Implementations/Localization/Core/cs.json @@ -1,6 +1,6 @@ { "AppDeviceValues": "Aplikace: {0}, Zařízení: {1}", - "Artists": "Umělci", + "Artists": "Interpreti", "AuthenticationSucceededWithUserName": "{0} úspěšně ověřen", "Books": "Knihy", "ChapterNameValue": "Kapitola {0}", diff --git a/Emby.Server.Implementations/Localization/Core/da.json b/Emby.Server.Implementations/Localization/Core/da.json index 6e5532ead9..4c7d16a9a7 100644 --- a/Emby.Server.Implementations/Localization/Core/da.json +++ b/Emby.Server.Implementations/Localization/Core/da.json @@ -10,7 +10,7 @@ "Folders": "Mapper", "Genres": "Genrer", "HeaderContinueWatching": "Fortsæt med at se", - "HeaderFavoriteEpisodes": "Yndlingsafsnit", + "HeaderFavoriteEpisodes": "Favoritepisoder", "HeaderFavoriteShows": "Yndlingsserier", "HeaderLiveTV": "Live-TV", "HeaderNextUp": "Næste", diff --git a/Emby.Server.Implementations/Localization/Core/et.json b/Emby.Server.Implementations/Localization/Core/et.json index a7afcf5b77..10e0e6c3b3 100644 --- a/Emby.Server.Implementations/Localization/Core/et.json +++ b/Emby.Server.Implementations/Localization/Core/et.json @@ -95,16 +95,16 @@ "HearingImpaired": "Kuulmispuudega", "TaskKeyframeExtractorDescription": "Eraldab videofailidest võtmekaadrid, et luua täpsemaid HLS-i esitusloendeid. See võib kesta pikka aega.", "TaskKeyframeExtractor": "Eralda võtmekaadrid", - "TaskRefreshTrickplayImages": "Loo trickplay pildid", - "TaskRefreshTrickplayImagesDescription": "Loob trickplay eelvaated videotele lubatud meediakogudes.", + "TaskRefreshTrickplayImages": "Loo kerimispildid (trickplay)", + "TaskRefreshTrickplayImagesDescription": "Loob kerimispidid videotele lubatud meediakogudes.", "TaskAudioNormalization": "Normaliseeri helitugevus", "TaskAudioNormalizationDescription": "Otsib failidest helitugevuse normaliseerimise teavet.", "TaskDownloadMissingLyrics": "Hangi puuduvad laulusõnad", "TaskDownloadMissingLyricsDescription": "Laulusõnade allalaadimine", - "TaskMoveTrickplayImagesDescription": "Liigutab trickplay pildid meediakogu sätete kohaselt.", + "TaskMoveTrickplayImagesDescription": "Teisaldab kerimispildid meediakogu sätete kohaselt.", "TaskExtractMediaSegments": "Skaneeri meedialõike", "TaskExtractMediaSegmentsDescription": "Eraldab või võtab meedialõigud MediaSegment'i toega pluginatest.", - "TaskMoveTrickplayImages": "Muuda trickplay piltide asukoht", + "TaskMoveTrickplayImages": "Muuda kerimispiltide asukoht", "CleanupUserDataTask": "Puhasta kasutajaandmed", "CleanupUserDataTaskDescription": "Puhastab kõik kasutajaandmed (vaatamise olek, lemmikute olek jne) meediast, mida pole enam vähemalt 90 päeva saadaval olnud.", "LyricDownloadFailureFromForItem": "Laulusõnade hankimine teenusest {0} loole {1} nurjus", diff --git a/Emby.Server.Implementations/Localization/Core/fi.json b/Emby.Server.Implementations/Localization/Core/fi.json index 9a453120dd..12d50cf89a 100644 --- a/Emby.Server.Implementations/Localization/Core/fi.json +++ b/Emby.Server.Implementations/Localization/Core/fi.json @@ -120,5 +120,6 @@ "NameExtraShort": "Lyhytfilmi", "NameExtraThemeSong": "Tunnusmusiikki", "NameExtraThemeVideo": "Tunnusvideo", - "NameExtraTrailer": "Traileri" + "NameExtraTrailer": "Traileri", + "NameExtraUnknown": "Lisät" } diff --git a/Emby.Server.Implementations/Localization/Core/fo.json b/Emby.Server.Implementations/Localization/Core/fo.json index 023ed6ec5e..b9964b02b8 100644 --- a/Emby.Server.Implementations/Localization/Core/fo.json +++ b/Emby.Server.Implementations/Localization/Core/fo.json @@ -7,7 +7,7 @@ "AppDeviceValues": "App: {0}, Eind: {1}", "Books": "Bøkur", "ChapterNameValue": "Kapittul {0}", - "Favorites": "Yndislista", + "Favorites": "Yndislisti", "Folders": "Skjáttur", "Forced": "Kravt", "FailedLoginAttemptWithUserName": "Miseydnað innritanarroynd frá {0}", @@ -25,7 +25,7 @@ "NewVersionIsAvailable": "Ein nýggj útgáva av Jellyfin ambætaranum er tøk.", "NotificationOptionNewLibraryContent": "Nýtt tilfar innlagt", "NotificationOptionPluginInstalled": "Ískoytisforrit innlagt", - "NotificationOptionPluginUninstalled": "Ískoytisforrit strikað", + "NotificationOptionPluginUninstalled": "Ískoytisforrit er strikað", "NotificationOptionPluginUpdateInstalled": "Ískoytisforrit dagført", "NotificationOptionUserLockedOut": "Brúkari útihýstur", "Photos": "Ljósmyndir", @@ -49,7 +49,7 @@ "Movies": "Filmar", "MixedContent": "Blandað innihald", "Music": "Tónleikur", - "UserStartedPlayingItemWithValues": "{0} spælur {1} á {2}", + "UserStartedPlayingItemWithValues": "{0} spælir {1} á {2}", "HeaderContinueWatching": "Hald áfram at hyggja", "MusicVideos": "Sjónbandaløg", "TaskUpdatePluginsDescription": "Niðurtekur og innleggur dagføringar til ískoytisforrit ið eru stillaði til at dagførast sjálvvirkandi.", @@ -69,7 +69,7 @@ "TasksApplicationCategory": "Nýtsluskipan", "NotificationOptionApplicationUpdateAvailable": "Skipanardagføring er tøk", "NotificationOptionApplicationUpdateInstalled": "Skipanardagføring var innløgd", - "UserStoppedPlayingItemWithValues": "{0} er liðugur at spæla {1} á {2}", + "UserStoppedPlayingItemWithValues": "{0} gavst at spæla {1} á {2}", "HomeVideos": "Heimaupptøkur", "StartupEmbyServerIsLoading": "Jellyfin-ambætarin er undir byrjanarinnlesing. Vinaliga royn aftur um eitt bil.", "UserOfflineFromDevice": "{0} breyt av frá {1}", @@ -96,9 +96,9 @@ "TaskRefreshChapterImagesDescription": "Ger smámyndir fyri kykmyndir ið hava kapitlar.", "TaskRefreshChapterImages": "Kapitlamyndaúttøkur", "NotificationOptionVideoPlayback": "Kykmyndaspæl byrjað", - "NotificationOptionVideoPlaybackStopped": "Kykmyndaspæl steðgað", + "NotificationOptionVideoPlaybackStopped": "Kykmyndaspæl er steðgað", "NotificationOptionAudioPlayback": "Ljóðspæl byrjað", - "NotificationOptionAudioPlaybackStopped": "Ljóðspæl steðgað", + "NotificationOptionAudioPlaybackStopped": "Ljóðspæl er steðgað", "TaskExtractMediaSegments": "Leita eftir margmiðlabrotum", "TaskExtractMediaSegmentsDescription": "Framleiður upplýsingar um brot í margmiðlum, við hjálp frá MediaSegment-virktum ískoytisforritum.", "NotificationOptionCameraImageUploaded": "Ljósmynd uppsend", diff --git a/Emby.Server.Implementations/Localization/Core/he.json b/Emby.Server.Implementations/Localization/Core/he.json index 0ca7c6aa08..04877b18a7 100644 --- a/Emby.Server.Implementations/Localization/Core/he.json +++ b/Emby.Server.Implementations/Localization/Core/he.json @@ -112,8 +112,14 @@ "NameExtraBehindTheScenes": "מאחורי הקלעים", "NameExtraClip": "קליפ", "NameExtraDeletedScene": "סצנה שנמחקה", - "NameExtraFeaturette": "סרט קצר", + "NameExtraFeaturette": "סרט עלילה קצר", "NameExtraInterview": "ריאיון", "NameExtraSample": "דגימה", - "NameExtraScene": "סצנה" + "NameExtraScene": "סצנה", + "NameExtraThemeSong": "שיר נושא", + "NameExtraThemeVideo": "סרטון נושא", + "NameExtraTrailer": "קדימון", + "NameExtraUnknown": "נוסף", + "NameExtraNumbered": "{0} {1}", + "NameExtraShort": "סרט קצר" } diff --git a/Emby.Server.Implementations/Localization/Core/hi.json b/Emby.Server.Implementations/Localization/Core/hi.json index f4b1f86d1d..766a09ffc9 100644 --- a/Emby.Server.Implementations/Localization/Core/hi.json +++ b/Emby.Server.Implementations/Localization/Core/hi.json @@ -1,106 +1,106 @@ { - "HeaderNextUp": "इसके बाद", + "HeaderNextUp": "इसके आगे", "HeaderLiveTV": "लाइव टीवी", "HeaderFavoriteShows": "पसंदीदा शो", - "HeaderFavoriteEpisodes": "पसंदीदा प्रकरण", - "HeaderContinueWatching": "देखना जारी रखें", + "HeaderFavoriteEpisodes": "पसंदीदा भाग", + "HeaderContinueWatching": "देखते रहें", "Genres": "शैलियां", - "Forced": "बलपूर्वक", + "Forced": "ज़रूरी", "Folders": "फ़ोल्डर", "Favorites": "पसंदीदा", "FailedLoginAttemptWithUserName": "{0} से संप्रवेश असफल हुआ", - "Default": "प्राथमिक", + "Default": "मूल", "Collections": "संग्रह", "ChapterNameValue": "अध्याय {0}", - "Books": "पुस्तकें", - "AuthenticationSucceededWithUserName": "{0} सफलतापूर्वक प्रमाणित किया गया", + "Books": "किताबें", + "AuthenticationSucceededWithUserName": "{0} प्रमाणीकरण सफल हुआ", "Artists": "कलाकार", "AppDeviceValues": "एप: {0}, उपकरण: {1}", "NotificationOptionPluginUninstalled": "प्लगइन अनइंस्टाल हो गया", "NotificationOptionPluginInstalled": "प्लगइन इनस्टॉल हो गया", - "NotificationOptionPluginError": "प्लगइन फ़ैल हो गया", - "NotificationOptionInstallationFailed": "इंस्टालेशन फ़ैल हो गया", + "NotificationOptionPluginError": "प्लगिन असफल", + "NotificationOptionInstallationFailed": "इंस्टालेशन असफल", "NotificationOptionAudioPlaybackStopped": "संगीत बंद कर दिया गया", - "NotificationOptionAudioPlayback": "संगीत शुरू कर दिया गया", - "NotificationOptionCameraImageUploaded": "कैमरा फोटो अपलोड किया गया", - "NotificationOptionApplicationUpdateInstalled": "एप्लीकेशन अपडेट इनस्टॉल कर दिया है", - "NotificationOptionApplicationUpdateAvailable": "एप्लीकेशन अपडेट उपलभ्द है", + "NotificationOptionAudioPlayback": "आवाज़ चलनी शुरू हो गई", + "NotificationOptionCameraImageUploaded": "कैमरा फोटो अपलोड हो गई", + "NotificationOptionApplicationUpdateInstalled": "एप्लीकेशन अपडेट इनस्टॉल हो गया", + "NotificationOptionApplicationUpdateAvailable": "एप्लीकेशन अपडेट उपलब्ध है", "NewVersionIsAvailable": "जेलीफिन सर्वर का एक नया वर्जन डाउनलोड के लिए उपलब्ध है।", - "NameSeasonUnknown": "अनजान भाग", - "NameSeasonNumber": "भाग {0}", - "NameInstallFailed": "{0} इनस्टॉल करते समय फेल हो गया है", + "NameSeasonUnknown": "अनजान कड़ी", + "NameSeasonNumber": "कड़ी {0}", + "NameInstallFailed": "{0} इंस्टॉलेशन असफल रहा", "MusicVideos": "संगीत वीडियो", "Music": "संगीत", - "Movies": "फ़िल्म", + "Movies": "फ़िल्में", "MixedContent": "मिला-जुला कंटेंट", "Latest": "सबसे नया", "LabelIpAddressValue": "आई पी एड्रेस: {0}", - "HomeVideos": "होम चलचित्र", - "NotificationOptionVideoPlayback": "वीडियो प्लेबैक शुरू हुआ", - "NotificationOptionUserLockedOut": "उपयोगकर्ता लॉक हो गया", - "NotificationOptionTaskFailed": "निर्धारित कार्य विफलता", - "NotificationOptionServerRestartRequired": "सर्वर पुनरारंभ आवश्यक है", - "NotificationOptionPluginUpdateInstalled": "प्लगइन अद्यतन स्थापित", - "NotificationOptionNewLibraryContent": "नई सामग्री जोड़ी गई", - "LabelRunningTimeValue": "चलने का समय: {0}", - "Inherit": "इनहेरिट", - "NotificationOptionVideoPlaybackStopped": "चलचित्र रुका हुआ", - "PluginUninstalledWithName": "{0} अनइंस्टॉल हुए", - "PluginInstalledWithName": "{0} इंस्टॉल हुए", + "HomeVideos": "घर के वीडियो", + "NotificationOptionVideoPlayback": "वीडियो चल गया", + "NotificationOptionUserLockedOut": "यूज़र लॉक हो गया", + "NotificationOptionTaskFailed": "निर्धारित कार्य विफल रहा", + "NotificationOptionServerRestartRequired": "सर्वर रिस्टार्ट की ज़रूरत है", + "NotificationOptionPluginUpdateInstalled": "प्लगिन अपडेट इंस्टॉल हो गया है", + "NotificationOptionNewLibraryContent": "नई चीजें जोड़ी गई", + "LabelRunningTimeValue": "अवधि : {0}", + "Inherit": "ऊपर से लागू", + "NotificationOptionVideoPlaybackStopped": "वीडियो बंद हो गया", + "PluginUninstalledWithName": "{0} अनइंस्टॉल हो गए", + "PluginInstalledWithName": "{0} इंस्टॉल हो गए", "Photos": "तस्वीरें", "External": "बाहरी", "PluginUpdatedWithName": "{0} अपडेट हुए", - "UserStartedPlayingItemWithValues": "{0} {2} पर {1} खेल रहे हैं", - "UserStoppedPlayingItemWithValues": "{0} ने {2} पर {1} खेलना खत्म किया", - "StartupEmbyServerIsLoading": "जेलीफ़िन सर्वर लोड हो रहा है। कृपया शीघ्र ही पुन: प्रयास करें।", - "UserCreatedWithName": "उपयोगकर्ता {0} बनाया गया", + "UserStartedPlayingItemWithValues": "{0} {2} पर {1} चला रहे हैं", + "UserStoppedPlayingItemWithValues": "{0} ने {2} पर {1} ख़त्म कर दिया", + "StartupEmbyServerIsLoading": "जेलीफ़िन सर्वर लोड हो रहा है। कृपया थोड़ी देर में दोबारा कोशिश करें।", + "UserCreatedWithName": "यूज़र {0} बनाया गया", "UserDownloadingItemWithValues": "{0} डाउनलोड हो रहा है", "UserOfflineFromDevice": "{0} {1} से डिस्कनेक्ट हो गया है", "Undefined": "अनिर्धारित", "UserOnlineFromDevice": "{0} {1} से ऑनलाइन है", "Shows": "शो", - "UserPasswordChangedWithName": "उपयोगकर्ता {0} के लिए पासवर्ड बदल दिया गया है", - "UserDeletedWithName": "उपयोगकर्ता {0} हटा दिया गया", - "SubtitleDownloadFailureFromForItem": "{1} के लिए {0} से उपशीर्षक डाउनलोड करने में विफल", + "UserPasswordChangedWithName": "{0} यूज़र का पासवर्ड बदल दिया गया है", + "UserDeletedWithName": "यूज़र {0} हटा दिया गया", + "SubtitleDownloadFailureFromForItem": "{1} के लिए {0} से सबटाइटल डाउनलोड करने में विफल", "ScheduledTaskFailedWithName": "{0}असफल", - "UserLockedOutWithName": "उपयोगकर्ता {0} को लॉक आउट कर दिया गया है", + "UserLockedOutWithName": "यूज़र {0} को बाहर लॉक कर दिया गया है", "TvShows": "टीवी शो", "HearingImpaired": "मूक बधिर", "TasksMaintenanceCategory": "रखरखाव", "VersionNumber": "{0} पाठान्तर", - "TasksLibraryCategory": "संग्रहालय", - "TaskOptimizeDatabase": "जानकारी प्रवृद्धि", - "TaskDownloadMissingSubtitles": "लापता अनुलेख डाउनलोड करें", - "TaskRefreshLibrary": "माध्यम संग्राहत को छाने", - "TaskCleanActivityLog": "क्रियाकलाप लॉग साफ करें", - "TasksChannelsCategory": "इंटरनेट प्रणाली", - "TasksApplicationCategory": "अनुप्रयोग", - "TaskRefreshPeople": "लोगोकी जानकारी ताज़ी करें", + "TasksLibraryCategory": "लाइब्रेरी", + "TaskOptimizeDatabase": "डेटाबेस ट्यून करें", + "TaskDownloadMissingSubtitles": "बाक़ी सबटाइटल डाउनलोड करें", + "TaskRefreshLibrary": "मीडिया लाइब्रेरी को छानें", + "TaskCleanActivityLog": "एक्टिविटी लॉग हटायें", + "TasksChannelsCategory": "इंटरनेट चैनल", + "TasksApplicationCategory": "ऐप्लिकेशन", + "TaskRefreshPeople": "लोगों की जानकारी ताज़ा करें", "TaskKeyframeExtractor": "कीफ़्रेम एक्सट्रैक्टर", "TaskCleanActivityLogDescription": "कॉन्फ़िगर की गई आयु से पुरानी गतिविधि लॉग प्रविष्टियां हटाता है।", - "TaskRefreshChapterImagesDescription": "अध्याय वाले वीडियो के लिए थंबनेल बनाता है।", + "TaskRefreshChapterImagesDescription": "अध्याय वाले वीडियो के लिए झलकें बनाता है।", "TaskRefreshLibraryDescription": "नई फ़ाइलों के लिए आपकी मीडिया लाइब्रेरी को स्कैन करता है और मेटाडेटा को ताज़ा करता है।", - "TaskCleanLogs": "स्वच्छ लॉग निर्देशिका", - "TaskUpdatePluginsDescription": "प्लगइन्स के लिए अपडेट डाउनलोड और इंस्टॉल करें जो स्वचालित रूप से अपडेट करने के लिए कॉन्फ़िगर किए गए हैं।", - "TaskCleanTranscode": "स्वच्छ ट्रांसकोड निर्देशिका", - "TaskCleanTranscodeDescription": "एक दिन से अधिक पुरानी ट्रांसकोड फ़ाइलें हटाता है.", + "TaskCleanLogs": "लॉग डाइरेक्टरी ख़ाली करें", + "TaskUpdatePluginsDescription": "अपने आप अपडेट होने वाले निर्धारित प्लगिंस के लिए अपडेट डाउनलोड और इंस्टॉल करता है।", + "TaskCleanTranscode": "ट्रांसकोड डाइरेक्टरी ख़ाली करें", + "TaskCleanTranscodeDescription": "एक दिन से ज़्यादा पुरानी ट्रांसकोड फ़ाइलें हटाता है।", "TaskRefreshChannelsDescription": "इंटरनेट चैनल की जानकारी को ताज़ा करता है।", - "TaskOptimizeDatabaseDescription": "डेटाबेस को कॉम्पैक्ट करता है और मुक्त स्थान को छोटा करता है। लाइब्रेरी को स्कैन करने के बाद इस कार्य को चलाने या अन्य परिवर्तन करने से जो डेटाबेस संशोधनों को लागू करते हैं, प्रदर्शन में सुधार कर सकते हैं।", - "TaskRefreshChannels": "इंटरनेट चैनल की जानकारी को ताज़ा करता है", - "TaskRefreshChapterImages": "अध्याय छवियाँ निकालें", + "TaskOptimizeDatabaseDescription": "डेटाबेस को छोटा करके जगह ख़ाली करता है। लाइब्रेरी का निरीक्षण या डेटाबेस में बदलाव के बाद इस कार्य को चलाने से कार्यकुशलता बढ़ सकती है।", + "TaskRefreshChannels": "चैनल ताज़ा करें", + "TaskRefreshChapterImages": "अध्याय की तस्वीरें निकालें", "TaskCleanLogsDescription": "{0} दिन से अधिक पुरानी लॉग फ़ाइलें हटाता है।", - "TaskCleanCacheDescription": "उन कैश फ़ाइलों को हटाता है जिनकी अब सिस्टम को आवश्यकता नहीं है।", - "TaskUpdatePlugins": "अद्यतन प्लगइन्स", + "TaskCleanCacheDescription": "अनावश्यक अस्थायी डेटा फ़ाइलों को हटाता है।", + "TaskUpdatePlugins": "प्लगिन अपडेट करें", "TaskRefreshPeopleDescription": "आपकी मीडिया लाइब्रेरी में अभिनेताओं और निर्देशकों के लिए मेटाडेटा अपडेट करता है।", - "TaskCleanCache": "स्वच्छ कैश निर्देशिका", - "TaskDownloadMissingSubtitlesDescription": "मेटाडेटा कॉन्फ़िगरेशन के आधार पर लापता उपशीर्षक के लिए इंटरनेट खोजता है।", + "TaskCleanCache": "अस्थायी डेटा डाइरेक्टरी ख़ाली करें", + "TaskDownloadMissingSubtitlesDescription": "मेटाडेटा कॉन्फ़िगरेशन के आधार पर लापता सबटाइटल की इंटरनेट पर खोज करता है।", "TaskKeyframeExtractorDescription": "अधिक सटीक एचएलएस प्लेलिस्ट बनाने के लिए वीडियो फ़ाइलों से मुख्य-फ़्रेम निकालता है। यह कार्य लंबे समय तक चल सकता है।", - "TaskRefreshTrickplayImages": "ट्रिकप्लै चित्रों को सृजन करे", - "TaskRefreshTrickplayImagesDescription": "नियत संग्रहों में चलचित्रों का ट्रीकप्लै दर्शनों को सृजन करे.", - "TaskAudioNormalization": "श्रव्य सामान्यीकरण", - "TaskAudioNormalizationDescription": "श्रव्य सामान्यीकरण के लिए फाइलें अन्वेषण करें।", - "TaskDownloadMissingLyrics": "लापता गानों के बोल डाउनलोड करेँ", - "TaskDownloadMissingLyricsDescription": "गानों के बोल डाउनलोड करता है", + "TaskRefreshTrickplayImages": "ट्रिकप्ले तस्वीरें बनायें", + "TaskRefreshTrickplayImagesDescription": "चुनिंदा लाइब्रेरी के वीडियो के लिए ट्रिकप्ले तस्वीरें (सीन झलकियां) बनाता है।", + "TaskAudioNormalization": "ध्वनि सामान्यीकरण", + "TaskAudioNormalizationDescription": "ध्वनि सामान्यीकरण के लिए फाइलें छानें।", + "TaskDownloadMissingLyrics": "बाकी बोल डाउनलोड करें", + "TaskDownloadMissingLyricsDescription": "गीत के बोल डाउनलोड करें", "TaskExtractMediaSegments": "मीडिया सेगमेंट स्कैन", "TaskExtractMediaSegmentsDescription": "मीडियासेगमेंट सक्षम प्लगइन्स से मीडिया सेगमेंट निकालता है या प्राप्त करता है।", "TaskMoveTrickplayImages": "ट्रिकप्ले छवि स्थान माइग्रेट करें", @@ -108,18 +108,18 @@ "CleanupUserDataTask": "यूज़र डेटा सफाई कार्य", "Original": "असली", "LyricDownloadFailureFromForItem": "{0} के लिए {1} से बोल (Lyrics) डाउनलोड करने में विफल रहा", - "NameExtraBehindTheScenes": "परदे के पीछे", + "NameExtraBehindTheScenes": "पर्दे के पीछे", "NameExtraClip": "क्लिप", - "NameExtraDeletedScene": "हटाया गया दृश्य", + "NameExtraDeletedScene": "काटे गए सीन", "NameExtraFeaturette": "फीचरेट", "NameExtraInterview": "साक्षात्कार", "NameExtraNumbered": "{0} {1}", "NameExtraSample": "नमूना", - "NameExtraScene": "दृश्य", + "NameExtraScene": "सीन", "NameExtraShort": "शॉर्ट", - "NameExtraThemeSong": "थीम सॉन्ग", - "NameExtraThemeVideo": "थीम वीडियो", + "NameExtraThemeSong": "विशेष गीत", + "NameExtraThemeVideo": "विशेष वीडियो", "NameExtraTrailer": "ट्रेलर", - "NameExtraUnknown": "अतिरिक्त", - "CleanupUserDataTaskDescription": "कम से कम 90 दिनों से अनुपस्थित मीडिया से सभी उपयोगकर्ता डेटा (देखने की स्थिति, पसंदीदा स्थिति आदि) को साफ़ करता है।" + "NameExtraUnknown": "और भी", + "CleanupUserDataTaskDescription": "९० दिन या उससे ज़्यादा से ग़ायब मीडिया से सभी यूज़र डेटा (देखें गए, पसंदीदा आदि) को हटाता है।" } diff --git a/Emby.Server.Implementations/Localization/Core/hr.json b/Emby.Server.Implementations/Localization/Core/hr.json index 2d38c173f0..c7e2b5f5e9 100644 --- a/Emby.Server.Implementations/Localization/Core/hr.json +++ b/Emby.Server.Implementations/Localization/Core/hr.json @@ -120,5 +120,6 @@ "NameExtraShort": "Kratki film", "NameExtraThemeSong": "Glavna Pjesma", "NameExtraThemeVideo": "Tema videa", - "NameExtraTrailer": "Trailer" + "NameExtraTrailer": "Trailer", + "NameExtraUnknown": "Dodatno" } diff --git a/Emby.Server.Implementations/Localization/Core/hy.json b/Emby.Server.Implementations/Localization/Core/hy.json index 80be71ed70..09f1bfe79c 100644 --- a/Emby.Server.Implementations/Localization/Core/hy.json +++ b/Emby.Server.Implementations/Localization/Core/hy.json @@ -29,5 +29,15 @@ "Default": "Լռելյայն", "Favorites": "Ընտրյալ", "Forced": "Ստիպուած", - "Genres": "Ոճ" + "Genres": "Ոճ", + "HeaderFavoriteEpisodes": "Սիրելի դրվագներ", + "HeaderFavoriteShows": "Սիրելի հաղորդումներ", + "HeaderLiveTV": "Ուղիղ եթեր", + "HeaderNextUp": "Հաջորդը", + "HomeVideos": "Տնային տեսանյութեր", + "LabelRunningTimeValue": "Տևողությունը: {0}", + "Latest": "Վերջինը", + "LyricDownloadFailureFromForItem": "Չհաջողվեց ներբեռնել {1}-ի երգի բառերը {0}-ից", + "MixedContent": "Խառը բովանդակություն", + "CleanupUserDataTaskDescription": "Մաքրում է օգտատիրոջ բոլոր տվյալները (դիտման կարգավիճակ, «սիրելի» նշում և այլն) այն մեդիաֆայլերից, որոնք առնվազն 90 օր է՝ առկա չեն։" } diff --git a/Emby.Server.Implementations/Localization/Core/ja.json b/Emby.Server.Implementations/Localization/Core/ja.json index 78b7ec744b..4181ebe13b 100644 --- a/Emby.Server.Implementations/Localization/Core/ja.json +++ b/Emby.Server.Implementations/Localization/Core/ja.json @@ -2,18 +2,18 @@ "AppDeviceValues": "アプリ: {0}, デバイス: {1}", "Artists": "アーティスト", "AuthenticationSucceededWithUserName": "{0} 認証に成功しました", - "Books": "ブック", + "Books": "書籍", "ChapterNameValue": "チャプター {0}", "Collections": "コレクション", "FailedLoginAttemptWithUserName": "{0} からのログインに失敗しました", "Favorites": "お気に入り", "Folders": "フォルダー", "Genres": "ジャンル", - "HeaderContinueWatching": "再生を続ける", + "HeaderContinueWatching": "視聴をつづける", "HeaderFavoriteEpisodes": "お気に入りのエピソード", "HeaderFavoriteShows": "お気に入りの番組", - "HeaderLiveTV": "ライブTV", - "HeaderNextUp": "次", + "HeaderLiveTV": "テレビ放送", + "HeaderNextUp": "次に再生", "HomeVideos": "ホームビデオ", "Inherit": "継承", "LabelIpAddressValue": "IPアドレス: {0}", @@ -41,7 +41,7 @@ "NotificationOptionServerRestartRequired": "サーバーを再起動してください", "NotificationOptionTaskFailed": "スケジュールされていたタスクの失敗", "NotificationOptionUserLockedOut": "ユーザーはロックされています", - "NotificationOptionVideoPlayback": "ビデオの再生を開始", + "NotificationOptionVideoPlayback": "動画の再生を開始", "NotificationOptionVideoPlaybackStopped": "ビデオの再生を停止", "Photos": "フォト", "PluginInstalledWithName": "{0} をインストールしました", @@ -80,10 +80,10 @@ "TaskUpdatePlugins": "プラグインの更新", "TaskRefreshPeopleDescription": "メディアライブラリー内の俳優や監督のメタデータを更新します。", "TaskRefreshPeople": "俳優や監督のデータの更新", - "TaskDownloadMissingSubtitlesDescription": "メタデータ構成に基づいて、欠落している字幕をインターネットで検索する。", - "TaskRefreshChapterImagesDescription": "チャプターのあるビデオのサムネイルを作成します。", + "TaskDownloadMissingSubtitlesDescription": "メタデータ設定をもとに、欠落している字幕をインターネットで検索します。", + "TaskRefreshChapterImagesDescription": "チャプターのあるビデオのサムネールを作成します。", "TaskRefreshChapterImages": "チャプター画像を抽出する", - "TaskDownloadMissingSubtitles": "不足している字幕をダウンロードする", + "TaskDownloadMissingSubtitles": "欠けている字幕をダウンロード", "TaskCleanActivityLogDescription": "設定された期間よりも古いアクティビティの履歴を削除します。", "TaskCleanActivityLog": "アクティビティの履歴を消去", "Undefined": "未定義", @@ -91,7 +91,7 @@ "Default": "デフォルト", "TaskOptimizeDatabaseDescription": "データベースをコンパクトにして、空き領域を切り詰めます。メディアライブラリーのスキャンやその他のデータベースの更新を伴う変更の後でこのタスクを実行すると、パフォーマンスが向上します。", "TaskOptimizeDatabase": "データベースの最適化", - "TaskKeyframeExtractorDescription": "より正確なHLSプレイリストを作成するため、動画ファイルからキーフレームを抽出する。この処理には時間がかかる場合があります。", + "TaskKeyframeExtractorDescription": "動画ファイルからキーフレームを抽出し、より正確な HLS プレーリストを作成します。この処理には時間がかかる場合があります。", "TaskKeyframeExtractor": "キーフレーム抽出", "External": "外部", "HearingImpaired": "聴覚障害の方", @@ -103,10 +103,23 @@ "TaskExtractMediaSegments": "メディアセグメントを読み取る", "TaskMoveTrickplayImages": "Trickplayの画像を移動", "TaskMoveTrickplayImagesDescription": "ライブラリ設定によりTrickplayのファイルを移動。", - "TaskDownloadMissingLyrics": "失われた歌詞をダウンロード", + "TaskDownloadMissingLyrics": "欠けている歌詞をダウンロード", "TaskExtractMediaSegmentsDescription": "MediaSegment 対応プラグインからメディア セグメントを抽出または取得します。", "CleanupUserDataTask": "ユーザーデータのクリーンアップタスク", "CleanupUserDataTaskDescription": "90日以上存在しないメディアに対して、視聴状態やお気に入り状態などのユーザーデータをすべて削除します。", "LyricDownloadFailureFromForItem": "歌詞", - "Original": "オリジナル" + "Original": "オリジナル", + "NameExtraThemeVideo": "テーマビデオ", + "NameExtraBehindTheScenes": "舞台裏", + "NameExtraClip": "クリップ", + "NameExtraDeletedScene": "未公開シーン", + "NameExtraFeaturette": "短編", + "NameExtraInterview": "インタビュー", + "NameExtraNumbered": "{0} {1}", + "NameExtraSample": "サンプル", + "NameExtraScene": "シーン", + "NameExtraShort": "ショート", + "NameExtraThemeSong": "テーマ曲", + "NameExtraTrailer": "予告編", + "NameExtraUnknown": "特典" } diff --git a/Emby.Server.Implementations/Localization/Core/ko.json b/Emby.Server.Implementations/Localization/Core/ko.json index 1f16a90842..72a521743e 100644 --- a/Emby.Server.Implementations/Localization/Core/ko.json +++ b/Emby.Server.Implementations/Localization/Core/ko.json @@ -111,5 +111,15 @@ "Original": "원본", "NameExtraClip": "클립", "NameExtraDeletedScene": "삭제된 장면", - "NameExtraInterview": "인터뷰" + "NameExtraInterview": "인터뷰", + "NameExtraNumbered": "{0} {1}", + "NameExtraSample": "샘플", + "NameExtraScene": "장면", + "NameExtraTrailer": "예고편", + "NameExtraUnknown": "부가영상", + "NameExtraThemeSong": "주제가", + "NameExtraBehindTheScenes": "비하인드 영상", + "NameExtraFeaturette": "피처렛", + "NameExtraShort": "단편", + "NameExtraThemeVideo": "테마 영상" } diff --git a/Emby.Server.Implementations/Localization/Core/lb.json b/Emby.Server.Implementations/Localization/Core/lb.json index 21d31c5fbf..1e64a130eb 100644 --- a/Emby.Server.Implementations/Localization/Core/lb.json +++ b/Emby.Server.Implementations/Localization/Core/lb.json @@ -83,7 +83,7 @@ "NewVersionIsAvailable": "Nei Versioun fir Jellyfin Server ass verfügbar.", "PluginInstalledWithName": "{0} installéiert", "TaskMoveTrickplayImagesDescription": "Verschëfft existent Trickplay-Dateien no de Bibliothéik-Astellungen.", - "AppDeviceValues": "App: {0}, Geräter: {1}", + "AppDeviceValues": "App: {0}, Apparater: {1}", "FailedLoginAttemptWithUserName": "Net Gelongen Umeldung {0}", "HeaderLiveTV": "LiveTV", "NotificationOptionServerRestartRequired": "Server Restart Erfuerderlech", diff --git a/Emby.Server.Implementations/Localization/Core/nb.json b/Emby.Server.Implementations/Localization/Core/nb.json index 735bc2c793..6da32f56a0 100644 --- a/Emby.Server.Implementations/Localization/Core/nb.json +++ b/Emby.Server.Implementations/Localization/Core/nb.json @@ -116,5 +116,8 @@ "NameExtraScene": "Scene", "NameExtraThemeSong": "Tema-låt", "NameExtraThemeVideo": "Tema-video", - "NameExtraTrailer": "Trailer" + "NameExtraTrailer": "Trailer", + "LyricDownloadFailureFromForItem": "Kunne ikke laste ned sangtekster fra {0} for {1}", + "NameExtraClip": "Klipp", + "NameExtraShort": "Kortfilm" } diff --git a/Emby.Server.Implementations/Localization/Core/ro.json b/Emby.Server.Implementations/Localization/Core/ro.json index dccec8067d..6baaeca524 100644 --- a/Emby.Server.Implementations/Localization/Core/ro.json +++ b/Emby.Server.Implementations/Localization/Core/ro.json @@ -120,5 +120,6 @@ "NameExtraShort": "Scurt", "NameExtraThemeSong": "Audio de Fundal", "NameExtraThemeVideo": "Video de Fundal", - "NameExtraTrailer": "Trailer" + "NameExtraTrailer": "Trailer", + "NameExtraUnknown": "Extra" } diff --git a/Emby.Server.Implementations/Localization/Core/tr.json b/Emby.Server.Implementations/Localization/Core/tr.json index 67f4ecc4d5..87f49ae80d 100644 --- a/Emby.Server.Implementations/Localization/Core/tr.json +++ b/Emby.Server.Implementations/Localization/Core/tr.json @@ -81,8 +81,8 @@ "TaskCleanLogs": "Günlük Dizinini Temizle", "TaskRefreshLibraryDescription": "Medya kütüphanenize eklenen yeni dosyaları arar ve ortam bilgilerini yeniler.", "TaskRefreshLibrary": "Medya Kütüphanesini Tara", - "TaskRefreshChapterImagesDescription": "Bölümlere ayrılmış videolar için küçük resimler oluştur.", - "TaskRefreshChapterImages": "Bölüm Resimlerini Çıkar", + "TaskRefreshChapterImagesDescription": "Video bölümleri için küçük görseller oluştur.", + "TaskRefreshChapterImages": "Bölüm görsellerini çıkar", "TaskCleanCacheDescription": "Sistem tarafından artık ihtiyaç duyulmayan önbellek dosyalarını siler.", "TaskCleanActivityLog": "Etkinlik Günlüğünü Temizle", "TaskCleanActivityLogDescription": "Yapılandırılan tarihten daha eski olan etkinlik günlüğü girişlerini siler.", diff --git a/Emby.Server.Implementations/Localization/Core/ur_PK.json b/Emby.Server.Implementations/Localization/Core/ur_PK.json index b3f24a31e3..a8ec31aed4 100644 --- a/Emby.Server.Implementations/Localization/Core/ur_PK.json +++ b/Emby.Server.Implementations/Localization/Core/ur_PK.json @@ -98,5 +98,28 @@ "TaskDownloadMissingLyrics": "غائب بول ڈاؤن لوڈ کریں", "TaskDownloadMissingLyricsDescription": "گانے کے غائب بول ڈاؤن لوڈ کریں", "TaskAudioNormalization": "آڈیو نارملائزیشن", - "TaskAudioNormalizationDescription": "آڈیو نارملائزیشن ڈیٹا کے لیے فائلوں کو سکین کرتا ہے۔" + "TaskAudioNormalizationDescription": "آڈیو نارملائزیشن ڈیٹا کے لیے فائلوں کو سکین کرتا ہے۔", + "LyricDownloadFailureFromForItem": "{1} کے لیے {0} سے دھن ڈاؤن لوڈ کرنے میں ناکامی", + "Original": "اصل", + "TaskRefreshTrickplayImages": "Trickplay تصاویر بنائیں", + "TaskRefreshTrickplayImagesDescription": "فعال لائبریریوں میں ویڈیوز کے لیے Trickplay پیش منظر بناتا ہے۔", + "TaskExtractMediaSegments": "میڈیا سیگمنٹ اسکین", + "TaskExtractMediaSegmentsDescription": "MediaSegment فعال پلگ انز سے میڈیا سیگمنٹس اخذ یا حاصل کرتا ہے۔", + "TaskMoveTrickplayImages": "Trickplay تصاویر کا مقام منتقل کریں", + "TaskMoveTrickplayImagesDescription": "لائبریری کی ترتیبات کے مطابق موجودہ Trickplay فائلیں منتقل کرتا ہے۔", + "CleanupUserDataTask": "صارف ڈیٹا صفائی کا ٹاسک", + "CleanupUserDataTaskDescription": "کم از کم 90 دن سے موجود نہ ہونے والے میڈیا سے تمام صارف ڈیٹا (دیکھنے کی حالت، پسندیدہ حیثیت وغیرہ) صاف کرتا ہے۔", + "NameExtraBehindTheScenes": "پسِ پردہ", + "NameExtraClip": "کلپ", + "NameExtraDeletedScene": "حذف شدہ منظر", + "NameExtraFeaturette": "فیچریٹ", + "NameExtraInterview": "انٹرویو", + "NameExtraNumbered": "{0} {1}", + "NameExtraSample": "نمونہ", + "NameExtraScene": "منظر", + "NameExtraShort": "مختصر", + "NameExtraThemeSong": "تھیم سونگ", + "NameExtraThemeVideo": "تھیم ویڈیو", + "NameExtraTrailer": "ٹریلر", + "NameExtraUnknown": "اضافی" } diff --git a/Emby.Server.Implementations/Localization/Core/zh-CN.json b/Emby.Server.Implementations/Localization/Core/zh-CN.json index 9590d9c1c9..7c61ce6f17 100644 --- a/Emby.Server.Implementations/Localization/Core/zh-CN.json +++ b/Emby.Server.Implementations/Localization/Core/zh-CN.json @@ -22,7 +22,7 @@ "MixedContent": "混合内容", "Movies": "电影", "Music": "音乐", - "MusicVideos": "MV", + "MusicVideos": "音乐视频", "NameInstallFailed": "{0} 安装失败", "NameSeasonNumber": "第 {0} 季", "NameSeasonUnknown": "未知季", diff --git a/Emby.Server.Implementations/Localization/LocalizationManager.cs b/Emby.Server.Implementations/Localization/LocalizationManager.cs index 0331ec39e5..7af545c550 100644 --- a/Emby.Server.Implementations/Localization/LocalizationManager.cs +++ b/Emby.Server.Implementations/Localization/LocalizationManager.cs @@ -139,7 +139,8 @@ namespace Emby.Server.Implementations.Localization var ratingSystem = await JsonSerializer.DeserializeAsync<ParentalRatingSystem>(stream, _jsonOptions).ConfigureAwait(false) ?? throw new InvalidOperationException($"Invalid resource path: '{CountriesPath}'"); - var dict = new Dictionary<string, ParentalRatingScore?>(); + // Rating strings are compared case insensitively, providers are not consistent about casing (e.g. "VM18" vs "vm18") + var dict = new Dictionary<string, ParentalRatingScore?>(StringComparer.OrdinalIgnoreCase); if (ratingSystem.Ratings is not null) { foreach (var ratingEntry in ratingSystem.Ratings) @@ -374,33 +375,71 @@ namespace Emby.Server.Implementations.Localization { ArgumentException.ThrowIfNullOrEmpty(rating); + // Handle unrated content. This has to happen before the split below, + // because some of the unrated values contain a '/' themselves (e.g. "n/a"). + if (IsUnrated(rating)) + { + return null; + } + + // Several rating systems contain a '/' inside a single rating (e.g. "M/12" in PT, + // "U/A 13+" in IN, "7/i/fig" in ES), so the value as a whole always wins over the split below. + var wholeValueScore = GetSingleRatingScore(rating, countryCode); + if (wholeValueScore is not null) + { + return wholeValueScore; + } + // Some providers may list multiple ratings separated by '/' (e.g. "SE:15 / SE:15+ / SE:Från 15 år"). // Try each one in order and use the first that resolves. var ratingValues = rating.Split('/', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); + if (ratingValues.Length == 1) + { + return null; + } + var hasUnknownRating = false; foreach (var ratingValue in ratingValues) { - var score = GetSingleRatingScore(ratingValue, countryCode); + // A single entry of such a list may be unrated while a later one still resolves + if (IsUnrated(ratingValue)) + { + continue; + } + + // An unknown entry is not worth a warning of its own as long as another entry still resolves + var score = GetSingleRatingScore(ratingValue, countryCode, logUnknownRating: false); if (score is not null) { return score; } + + hasUnknownRating = true; + } + + if (hasUnknownRating) + { + _logger.LogWarning( + "None of the ratings in '{Rating}' were found in a known rating system, treating as unrated", + rating); } return null; } /// <summary> + /// Checks whether a rating value marks the content as unrated. + /// </summary> + /// <param name="rating">Rating value to check.</param> + /// <returns>Returns true if the value is an unrated marker.</returns> + private static bool IsUnrated(ReadOnlySpan<char> rating) + => _unratedValues.Contains(rating.Trim(), StringComparison.OrdinalIgnoreCase); + + /// <summary> /// Resolves a single rating value to a score. /// </summary> - private ParentalRatingScore? GetSingleRatingScore(string rating, string? countryCode) + private ParentalRatingScore? GetSingleRatingScore(string rating, string? countryCode, bool logUnknownRating = true) { - // Handle unrated content - if (_unratedValues.Contains(rating.AsSpan(), StringComparison.OrdinalIgnoreCase)) - { - return null; - } - // Convert ints directly // This may override some of the locale specific age ratings (but those always map to the same age) if (TryParseRatingAsScore(rating, out var ratingAge)) @@ -455,9 +494,11 @@ namespace Emby.Server.Implementations.Localization } } - // Try splitting by country prefix separator to handle "US:PG-13", "Germany: FSK-18", "DE-FSK-18" - if (TryGetRatingScoreBySeparator(rating, ':', out var result) - || TryGetRatingScoreBySeparator(rating, '-', out result)) + // Try splitting by country prefix separator to handle "US:PG-13", "Germany: FSK-18", "DE-FSK-18". + // A '/' marks a list of ratings, which this would split into the first entry's country and the last entry's rating + if (!rating.Contains('/', StringComparison.Ordinal) + && (TryGetRatingScoreBySeparator(rating, ':', logUnknownRating, out var result) + || TryGetRatingScoreBySeparator(rating, '-', logUnknownRating, out result))) { return result; } @@ -465,7 +506,7 @@ namespace Emby.Server.Implementations.Localization return null; } - private bool TryGetRatingScoreBySeparator(string rating, char separator, out ParentalRatingScore? result) + private bool TryGetRatingScoreBySeparator(string rating, char separator, bool logUnknownRating, out ParentalRatingScore? result) { result = null; @@ -512,10 +553,19 @@ namespace Emby.Server.Implementations.Localization return true; } - _logger.LogWarning( - "Rating '{Rating}' not found in the '{CountryCode}' rating system, treating as unrated", - rating, - resolvedCountryCode); + // Explicitly unrated content (e.g. "IT-NR") is unrated by definition, not a lookup failure + if (IsUnrated(ratingPart)) + { + return true; + } + + if (logUnknownRating) + { + _logger.LogWarning( + "Rating '{Rating}' not found in the '{CountryCode}' rating system, treating as unrated", + rating, + resolvedCountryCode); + } return true; } @@ -527,14 +577,16 @@ namespace Emby.Server.Implementations.Localization } /// <summary> - /// Tries to parse a rating as a number, allowing an optional trailing '+' (e.g. "16" or "18+"). + /// Tries to parse a rating as a number, allowing an optional trailing '+' (e.g. "16" or "18+") + /// or a leading '-' (e.g. the French "-12"). /// </summary> /// <param name="ratingValue">Rating value to parse.</param> /// <param name="score">Parsed score.</param> /// <returns>Returns true if parsing was successful.</returns> private static bool TryParseRatingAsScore(ReadOnlySpan<char> ratingValue, out int score) { - var trimmed = ratingValue.TrimEnd('+'); + // A leading '-' marks a minimum age ("-12" is French for "not for under 12s"), never a negative score + var trimmed = ratingValue.TrimStart('-').TrimEnd('+'); return int.TryParse(trimmed, out score); } diff --git a/Emby.Server.Implementations/Localization/Ratings/0-prefer.json b/Emby.Server.Implementations/Localization/Ratings/0-prefer.json index b390151611..dd88b35363 100644 --- a/Emby.Server.Implementations/Localization/Ratings/0-prefer.json +++ b/Emby.Server.Implementations/Localization/Ratings/0-prefer.json @@ -24,7 +24,7 @@ } }, { - "ratingStrings": ["X", "XX", "XXX", "XXXX"], + "ratingStrings": ["X", "XX", "XXX", "XXXX", "P"], "ratingScore": { "score": 1000, "subScore": null diff --git a/Emby.Server.Implementations/Localization/Ratings/ar.json b/Emby.Server.Implementations/Localization/Ratings/ar.json index 73dfd2c7c9..20053fe575 100644 --- a/Emby.Server.Implementations/Localization/Ratings/ar.json +++ b/Emby.Server.Implementations/Localization/Ratings/ar.json @@ -3,35 +3,49 @@ "supportsSubScores": false, "ratings": [ { - "ratingStrings": ["ATP"], + "ratingStrings": ["ATP", "Apta para todo público", "G"], "ratingScore": { "score": 0, "subScore": null } }, { - "ratingStrings": ["+13"], + "ratingStrings": ["SP"], + "ratingScore": { + "score": 10, + "subScore": null + } + }, + { + "ratingStrings": ["+13", "SAM 13", "SAM13", "R-13"], "ratingScore": { "score": 13, "subScore": null } }, { - "ratingStrings": ["+16"], + "ratingStrings": ["+16", "SAM 16", "SAM16"], "ratingScore": { "score": 16, "subScore": null } }, { - "ratingStrings": ["+18"], + "ratingStrings": ["R-17"], + "ratingScore": { + "score": 17, + "subScore": null + } + }, + { + "ratingStrings": ["+18", "SAM 18", "SAM18"], "ratingScore": { "score": 18, "subScore": null } }, { - "ratingStrings": ["C"], + "ratingStrings": ["C", "+18 C", "SAM 18 C", "SAM 18C", "SAM18C"], "ratingScore": { "score": 1001, "subScore": null diff --git a/Emby.Server.Implementations/Localization/Ratings/au.json b/Emby.Server.Implementations/Localization/Ratings/au.json index a563df899d..c5d4c97443 100644 --- a/Emby.Server.Implementations/Localization/Ratings/au.json +++ b/Emby.Server.Implementations/Localization/Ratings/au.json @@ -52,7 +52,7 @@ } }, { - "ratingStrings": ["X", "X18", "X 18"], + "ratingStrings": ["X", "X18", "X 18", "X18+", "X 18+"], "ratingScore": { "score": 1000, "subScore": 0 diff --git a/Emby.Server.Implementations/Localization/Ratings/de.json b/Emby.Server.Implementations/Localization/Ratings/de.json index 30c34b230c..2a925f999f 100644 --- a/Emby.Server.Implementations/Localization/Ratings/de.json +++ b/Emby.Server.Implementations/Localization/Ratings/de.json @@ -3,35 +3,35 @@ "supportsSubScores": false, "ratings": [ { - "ratingStrings": ["0", "FSK 0", "FSK-0", "Educational", "Infoprogramm"], + "ratingStrings": ["0", "FSK 0", "FSK-0", "FSK0", "ab 0", "Educational", "Infoprogramm"], "ratingScore": { "score": 0, "subScore": null } }, { - "ratingStrings": ["6", "FSK 6", "FSK-6"], + "ratingStrings": ["6", "FSK 6", "FSK-6", "FSK6", "ab 6"], "ratingScore": { "score": 6, "subScore": null } }, { - "ratingStrings": ["12", "FSK 12", "FSK-12"], + "ratingStrings": ["12", "FSK 12", "FSK-12", "FSK12", "ab 12"], "ratingScore": { "score": 12, "subScore": null } }, { - "ratingStrings": ["16", "FSK 16", "FSK-16"], + "ratingStrings": ["16", "FSK 16", "FSK-16", "FSK16", "ab 16"], "ratingScore": { "score": 16, "subScore": null } }, { - "ratingStrings": ["18", "FSK 18", "FSK-18"], + "ratingStrings": ["18", "FSK 18", "FSK-18", "FSK18", "ab 18"], "ratingScore": { "score": 18, "subScore": null diff --git a/Emby.Server.Implementations/Localization/Ratings/fr.json b/Emby.Server.Implementations/Localization/Ratings/fr.json index e8bafd6b87..333e467a08 100644 --- a/Emby.Server.Implementations/Localization/Ratings/fr.json +++ b/Emby.Server.Implementations/Localization/Ratings/fr.json @@ -24,14 +24,14 @@ } }, { - "ratingStrings": ["10"], + "ratingStrings": ["10", "Interdit aux moins de 10 ans"], "ratingScore": { "score": 10, "subScore": null } }, { - "ratingStrings": ["12"], + "ratingStrings": ["12", "–12", "Interdit aux moins de 12 ans"], "ratingScore": { "score": 12, "subScore": null @@ -45,14 +45,14 @@ } }, { - "ratingStrings": ["16"], + "ratingStrings": ["16", "–16", "Interdit aux moins de 16 ans"], "ratingScore": { "score": 16, "subScore": null } }, { - "ratingStrings": ["18"], + "ratingStrings": ["18", "–18", "Interdit aux moins de 18 ans"], "ratingScore": { "score": 18, "subScore": null diff --git a/Emby.Server.Implementations/Localization/Ratings/id.json b/Emby.Server.Implementations/Localization/Ratings/id.json index 8c687c2320..f55e4e4333 100644 --- a/Emby.Server.Implementations/Localization/Ratings/id.json +++ b/Emby.Server.Implementations/Localization/Ratings/id.json @@ -3,14 +3,28 @@ "supportsSubScores": false, "ratings": [ { - "ratingStrings": ["SU"], + "ratingStrings": ["SU", "SU-BO", "Semua Umur"], "ratingScore": { "score": 0, "subScore": null } }, { - "ratingStrings": ["13+"], + "ratingStrings": ["P", "P2+", "P-BO", "Prasekolah"], + "ratingScore": { + "score": 2, + "subScore": null + } + }, + { + "ratingStrings": ["A", "A7+", "A-BO", "Anak"], + "ratingScore": { + "score": 7, + "subScore": null + } + }, + { + "ratingStrings": ["13+", "R", "R13+", "R-BO", "Remaja"], "ratingScore": { "score": 13, "subScore": null @@ -24,6 +38,13 @@ } }, { + "ratingStrings": ["D", "D18+", "Dewasa"], + "ratingScore": { + "score": 18, + "subScore": null + } + }, + { "ratingStrings": ["21+"], "ratingScore": { "score": 21, diff --git a/Emby.Server.Implementations/Localization/Ratings/it.json b/Emby.Server.Implementations/Localization/Ratings/it.json index f2889bf82c..c1d716a46c 100644 --- a/Emby.Server.Implementations/Localization/Ratings/it.json +++ b/Emby.Server.Implementations/Localization/Ratings/it.json @@ -3,28 +3,42 @@ "supportsSubScores": false, "ratings": [ { - "ratingStrings": ["T"], + "ratingStrings": ["T", "PT", "Per tutti"], "ratingScore": { "score": 0, "subScore": null } }, { - "ratingStrings": ["6+"], + "ratingStrings": ["6+", "VM6", "VM 6", "VM-6", "Vietato ai minori di 6 anni"], "ratingScore": { "score": 6, "subScore": null } }, { - "ratingStrings": ["14+"], + "ratingStrings": ["10+", "VM10", "VM 10", "VM-10", "Vietato ai minori di 10 anni"], + "ratingScore": { + "score": 10, + "subScore": null + } + }, + { + "ratingStrings": ["12+", "VM12", "VM 12", "VM-12", "Vietato ai minori di 12 anni"], + "ratingScore": { + "score": 12, + "subScore": null + } + }, + { + "ratingStrings": ["14+", "VM14", "VM 14", "VM-14", "Vietato ai minori di 14 anni"], "ratingScore": { "score": 14, "subScore": null } }, { - "ratingStrings": ["18+"], + "ratingStrings": ["18+", "VM18", "VM 18", "VM-18", "Vietato ai minori di 18 anni"], "ratingScore": { "score": 18, "subScore": null diff --git a/Emby.Server.Implementations/Localization/Ratings/no.json b/Emby.Server.Implementations/Localization/Ratings/no.json index a5e9523163..40c66e3956 100644 --- a/Emby.Server.Implementations/Localization/Ratings/no.json +++ b/Emby.Server.Implementations/Localization/Ratings/no.json @@ -10,49 +10,49 @@ } }, { - "ratingStrings": ["6"], + "ratingStrings": ["6", "6 år"], "ratingScore": { "score": 6, "subScore": null } }, { - "ratingStrings": ["7"], + "ratingStrings": ["7", "7 år"], "ratingScore": { "score": 7, "subScore": null } }, { - "ratingStrings": ["9"], + "ratingStrings": ["9", "9 år"], "ratingScore": { "score": 9, "subScore": null } }, { - "ratingStrings": ["11"], + "ratingStrings": ["11", "11 år"], "ratingScore": { "score": 11, "subScore": null } }, { - "ratingStrings": ["12"], + "ratingStrings": ["12", "12 år"], "ratingScore": { "score": 12, "subScore": null } }, { - "ratingStrings": ["15"], + "ratingStrings": ["15", "15 år"], "ratingScore": { "score": 15, "subScore": null } }, { - "ratingStrings": ["18"], + "ratingStrings": ["18", "18 år"], "ratingScore": { "score": 18, "subScore": null diff --git a/Emby.Server.Implementations/Localization/Ratings/tw.json b/Emby.Server.Implementations/Localization/Ratings/tw.json index a7869c1221..9af7dd3128 100644 --- a/Emby.Server.Implementations/Localization/Ratings/tw.json +++ b/Emby.Server.Implementations/Localization/Ratings/tw.json @@ -3,35 +3,35 @@ "supportsSubScores": false, "ratings": [ { - "ratingStrings": ["0+"], + "ratingStrings": ["0+", "普遍級", "普"], "ratingScore": { "score": 0, "subScore": null } }, { - "ratingStrings": ["6+"], + "ratingStrings": ["6+", "保護級", "護"], "ratingScore": { "score": 6, "subScore": null } }, { - "ratingStrings": ["12+"], + "ratingStrings": ["12+", "輔12級", "輔導12歲級", "輔導級"], "ratingScore": { "score": 12, "subScore": null } }, { - "ratingStrings": ["15+"], + "ratingStrings": ["15+", "輔15級", "輔導15歲級"], "ratingScore": { "score": 15, "subScore": null } }, { - "ratingStrings": ["18+"], + "ratingStrings": ["18+", "限制級", "限"], "ratingScore": { "score": 18, "subScore": null |
