mirror of
https://github.com/Sonarr/Sonarr
synced 2026-04-29 08:31:24 +02:00
New: Georgian language
This commit is contained in:
parent
d6f265c7b5
commit
309b55fe38
7 changed files with 42 additions and 4 deletions
|
|
@ -60,7 +60,8 @@ public class LanguageFixture : CoreTest
|
|||
new object[] { 48, Language.Uzbek },
|
||||
new object[] { 49, Language.Malay },
|
||||
new object[] { 50, Language.Urdu },
|
||||
new object[] { 51, Language.Romansh }
|
||||
new object[] { 51, Language.Romansh },
|
||||
new object[] { 52, Language.Georgian }
|
||||
};
|
||||
|
||||
public static object[] ToIntCases =
|
||||
|
|
@ -115,7 +116,8 @@ public class LanguageFixture : CoreTest
|
|||
new object[] { Language.Uzbek, 48 },
|
||||
new object[] { Language.Malay, 49 },
|
||||
new object[] { Language.Urdu, 50 },
|
||||
new object[] { Language.Romansh, 51 }
|
||||
new object[] { Language.Romansh, 51 },
|
||||
new object[] { Language.Georgian, 52 }
|
||||
};
|
||||
|
||||
[Test]
|
||||
|
|
|
|||
|
|
@ -580,6 +580,8 @@ public void should_format_mediainfo_properly()
|
|||
[TestCase("ice", "IS")]
|
||||
[TestCase("dut", "NL")]
|
||||
[TestCase("nor", "NO")]
|
||||
[TestCase("geo", "KA")]
|
||||
[TestCase("kat", "KA")]
|
||||
public void should_format_languagecodes_properly(string language, string code)
|
||||
{
|
||||
_namingConfig.StandardEpisodeFormat = "{Series.Title}.S{season:00}E{episode:00}.{Episode.Title}.{MEDIAINFO.FULL}";
|
||||
|
|
|
|||
|
|
@ -69,5 +69,15 @@ public void should_return_romansh(string isoCode)
|
|||
var result = IsoLanguages.Find(isoCode);
|
||||
result.Language.Should().Be(Language.Romansh);
|
||||
}
|
||||
|
||||
[TestCase("ka")]
|
||||
[TestCase("geo")]
|
||||
[TestCase("kat")]
|
||||
[TestCase("ka-GE")]
|
||||
public void should_return_georgian(string isoCode)
|
||||
{
|
||||
var result = IsoLanguages.Find(isoCode);
|
||||
result.Language.Should().Be(Language.Georgian);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -529,6 +529,22 @@ public void should_parse_language_romansh(string postTitle)
|
|||
result.Should().Contain(Language.Romansh);
|
||||
}
|
||||
|
||||
[TestCase("Title.the.Series.2025.S01.Georgian.1080p.WEB-DL.h264-RlsGrp")]
|
||||
[TestCase("Title.the.Series.2025.S01.Geo.1080p.WEB-DL.h264-RlsGrp")]
|
||||
[TestCase("Title.the.Series.2025.S01.KA.1080p.WEB-DL.h264-RlsGrp")]
|
||||
public void should_parse_language_georgian(string postTitle)
|
||||
{
|
||||
var result = LanguageParser.ParseLanguages(postTitle);
|
||||
result.Should().Contain(Language.Georgian);
|
||||
}
|
||||
|
||||
[TestCase("Title.the.Series.2025.S01.RU-KA.1080p.WEB-DL.h264-RlsGrp")]
|
||||
public void should_parse_language_russian_and_georgian(string postTitle)
|
||||
{
|
||||
var result = LanguageParser.ParseLanguages(postTitle);
|
||||
result.Should().BeEquivalentTo(new[] { Language.Russian, Language.Georgian });
|
||||
}
|
||||
|
||||
[TestCase("Name (2020) - S01E20 - [AAC 2.0].testtitle.default.eng.forced.ass", new[] { "default", "forced" }, "testtitle", "English")]
|
||||
[TestCase("Name (2020) - S01E20 - [AAC 2.0].eng.default.testtitle.forced.ass", new[] { "default", "forced" }, "testtitle", "English")]
|
||||
[TestCase("Name (2020) - S01E20 - [AAC 2.0].default.eng.testtitle.forced.ass", new[] { "default", "forced" }, "testtitle", "English")]
|
||||
|
|
|
|||
|
|
@ -122,6 +122,7 @@ public override bool Equals(object obj)
|
|||
public static Language Malay => new Language(49, "Malay");
|
||||
public static Language Urdu => new Language(50, "Urdu");
|
||||
public static Language Romansh => new Language(51, "Romansh");
|
||||
public static Language Georgian => new Language(52, "Georgian");
|
||||
public static Language Original => new Language(-2, "Original");
|
||||
|
||||
public static List<Language> All
|
||||
|
|
@ -182,6 +183,7 @@ public static List<Language> All
|
|||
Malay,
|
||||
Urdu,
|
||||
Romansh,
|
||||
Georgian,
|
||||
Original
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,7 +61,8 @@ public static class IsoLanguages
|
|||
new IsoLanguage("uz", "", "uzb", Language.Uzbek),
|
||||
new IsoLanguage("ms", "", "msa", Language.Malay),
|
||||
new IsoLanguage("ur", "", "urd", Language.Urdu),
|
||||
new IsoLanguage("rm", "", "roh", Language.Romansh)
|
||||
new IsoLanguage("rm", "", "roh", Language.Romansh),
|
||||
new IsoLanguage("ka", "", "kat", Language.Georgian)
|
||||
};
|
||||
|
||||
private static readonly Dictionary<string, Language> AlternateIsoCodeMappings = new Dictionary<string, Language>
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ public static class LanguageParser
|
|||
new RegexReplace(@".*?[_. ](S\d{2}(?:E\d{2,4})*[_. ].*)", "$1", RegexOptions.Compiled | RegexOptions.IgnoreCase)
|
||||
};
|
||||
|
||||
private static readonly Regex LanguageRegex = new Regex(@"(?<english>\b(?:ing|eng)\b)|(?<italian>\b(?:ita|italian)\b)|(?<german>(?:swiss)?german\b|videomann|ger[. ]dub|\bger\b)|(?<flemish>flemish)|(?<greek>greek)|(?<french>(?:\W|_|\b)(?:FR|VF|VF2|VFF|VFI|VFQ|TRUEFRENCH|FRENCH|FRE|FRA)(?:\W|_|\b))|(?<russian>\b(?:rus|ru)\b)|(?<hungarian>\b(?:HUNDUB|HUN)\b)|(?<hebrew>\bHebDub\b)|(?<polish>\b(?:PL\W?DUB|DUB\W?PL|LEK\W?PL|PL\W?LEK)\b)|(?<chinese>\[(?:CH[ST]|BIG5|GB)\]|简|繁|字幕)|(?<bulgarian>\bbgaudio\b)|(?<spanish>\b(?:español|castellano|esp|spa(?!\(Latino\)))\b)|(?<ukrainian>\b(?:\dx?)?(?:ukr))|(?<thai>\b(?:THAI)\b)|(?<romanian>\b(?:RoDubbed|ROMANIAN)\b)|(?<catalan>[-,. ]cat[. ](?:DD|subs)|\b(?:catalan|catalán)\b)|(?<latvian>\b(?:lat|lav|lv)\b)|(?<turkish>\b(?:tur)\b)|(?<urdu>\burdu\b)|(?<romansh>\b(?:romansh|rumantsch|romansch)\b)|(?<japanese>\(JA\))|(?<original>\b(?:orig|original)\b)",
|
||||
private static readonly Regex LanguageRegex = new Regex(@"(?<english>\b(?:ing|eng)\b)|(?<italian>\b(?:ita|italian)\b)|(?<german>(?:swiss)?german\b|videomann|ger[. ]dub|\bger\b)|(?<flemish>flemish)|(?<greek>greek)|(?<french>(?:\W|_|\b)(?:FR|VF|VF2|VFF|VFI|VFQ|TRUEFRENCH|FRENCH|FRE|FRA)(?:\W|_|\b))|(?<russian>\b(?:rus|ru)\b)|(?<hungarian>\b(?:HUNDUB|HUN)\b)|(?<hebrew>\bHebDub\b)|(?<polish>\b(?:PL\W?DUB|DUB\W?PL|LEK\W?PL|PL\W?LEK)\b)|(?<chinese>\[(?:CH[ST]|BIG5|GB)\]|简|繁|字幕)|(?<bulgarian>\bbgaudio\b)|(?<spanish>\b(?:español|castellano|esp|spa(?!\(Latino\)))\b)|(?<ukrainian>\b(?:\dx?)?(?:ukr))|(?<thai>\b(?:THAI)\b)|(?<romanian>\b(?:RoDubbed|ROMANIAN)\b)|(?<catalan>[-,. ]cat[. ](?:DD|subs)|\b(?:catalan|catalán)\b)|(?<latvian>\b(?:lat|lav|lv)\b)|(?<turkish>\b(?:tur)\b)|(?<urdu>\burdu\b)|(?<romansh>\b(?:romansh|rumantsch|romansch)\b)|(?<georgian>\b(?:geo|ka|kat|georgian)\b)|(?<japanese>\(JA\))|(?<original>\b(?:orig|original)\b)",
|
||||
RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
||||
|
||||
private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?<!SUB[\W|_|^]))(?:(?<lithuanian>\bLT\b)|(?<czech>\bCZ\b)|(?<polish>\bPL\b)|(?<bulgarian>\bBG\b)|(?<slovak>\bSK\b)|(?<german>\bDE\b))(?:(?i)(?![\W|_|^]SUB))",
|
||||
|
|
@ -496,6 +496,11 @@ private static List<Language> RegexLanguage(string title)
|
|||
languages.Add(Language.Romansh);
|
||||
}
|
||||
|
||||
if (match.Groups["georgian"].Success)
|
||||
{
|
||||
languages.Add(Language.Georgian);
|
||||
}
|
||||
|
||||
if (match.Groups["japanese"].Success)
|
||||
{
|
||||
languages.Add(Language.Japanese);
|
||||
|
|
|
|||
Loading…
Reference in a new issue