< Summary - Jellyfin

Information
Class: MediaBrowser.Providers.Manager.MetadataLanguageUtils
Assembly: MediaBrowser.Providers
File(s): /srv/git/jellyfin/MediaBrowser.Providers/Manager/MetadataLanguageUtils.cs
Line coverage
100%
Covered lines: 7
Uncovered lines: 0
Coverable lines: 7
Total lines: 44
Line coverage: 100%
Branch coverage
100%
Covered branches: 8
Total branches: 8
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 10/29/2026 - 12:17:11 AM Line coverage: 100% (7/7) Branch coverage: 100% (8/8) Total lines: 44 10/29/2026 - 12:17:11 AM Line coverage: 100% (7/7) Branch coverage: 100% (8/8) Total lines: 44

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
GetLanguageSubtag(...)100%44100%
MatchesPreferredLanguage(...)100%44100%

File(s)

/srv/git/jellyfin/MediaBrowser.Providers/Manager/MetadataLanguageUtils.cs

#LineLine coverage
 1using System;
 2
 3namespace MediaBrowser.Providers.Manager;
 4
 5/// <summary>
 6/// Helpers for comparing the language of fetched metadata with the language that was requested.
 7/// </summary>
 8internal static class MetadataLanguageUtils
 9{
 10    /// <summary>
 11    /// Gets the language subtag of a language tag, e.g. "es" for "es-ES".
 12    /// </summary>
 13    /// <param name="language">The language tag.</param>
 14    /// <returns>The language subtag, lowercased, or <c>null</c> if none was given.</returns>
 15    public static string? GetLanguageSubtag(string? language)
 16    {
 2017        if (string.IsNullOrEmpty(language))
 18        {
 219            return null;
 20        }
 21
 1822        var separator = language.IndexOf('-', StringComparison.Ordinal);
 23
 1824        return (separator == -1 ? language : language[..separator]).ToLowerInvariant();
 25    }
 26
 27    /// <summary>
 28    /// Determines whether a provider result can be considered to be in the requested language.
 29    /// </summary>
 30    /// <param name="resultLanguage">The language the provider reported for its result, if any.</param>
 31    /// <param name="preferredLanguage">The language that was requested, if any.</param>
 32    /// <returns><c>true</c> if the result is in the requested language or either language is unknown.</returns>
 33    public static bool MatchesPreferredLanguage(string? resultLanguage, string? preferredLanguage)
 34    {
 35        // A provider that doesn't report a language cannot be judged, assume it honored the request
 1836        if (string.IsNullOrEmpty(resultLanguage) || string.IsNullOrEmpty(preferredLanguage))
 37        {
 1138            return true;
 39        }
 40
 41        // Compare on the language subtag only so that e.g. "es" matches "es-ES"
 742        return string.Equals(GetLanguageSubtag(resultLanguage), GetLanguageSubtag(preferredLanguage), StringComparison.O
 43    }
 44}