diff --git a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs index b3c61daacd..4ac7d7fcd7 100644 --- a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs +++ b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs @@ -66,7 +66,8 @@ public class LanguageFixture : CoreTest new object[] { 51, Language.Afrikaans }, new object[] { 52, Language.Marathi }, new object[] { 53, Language.Tagalog }, - new object[] { 54, Language.Urdu } + new object[] { 54, Language.Urdu }, + new object[] { 55, Language.Romansh } }; public static object[] ToIntCases = @@ -127,7 +128,8 @@ public class LanguageFixture : CoreTest new object[] { Language.Afrikaans, 51 }, new object[] { Language.Marathi, 52 }, new object[] { Language.Tagalog, 53 }, - new object[] { Language.Urdu, 54 } + new object[] { Language.Urdu, 54 }, + new object[] { Language.Romansh, 55 } }; [Test] diff --git a/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs b/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs index f4d94715c8..bba285573b 100644 --- a/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs @@ -89,5 +89,14 @@ public void should_return_urdu(string isoCode) var result = IsoLanguages.Find(isoCode); result.Language.Should().Be(Language.Urdu); } + + [TestCase("rm")] + [TestCase("roh")] + [TestCase("rm-CH")] + public void should_return_romansh(string isoCode) + { + var result = IsoLanguages.Find(isoCode); + result.Language.Should().Be(Language.Romansh); + } } } diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index bfa2e58e7b..de178ea9f8 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -503,6 +503,15 @@ public void should_parse_language_urdu(string postTitle) result.Should().Contain(Language.Urdu); } + [TestCase("The.Movie.Name.2016.Romansh.WEB-DL.h264-RlsGrp")] + [TestCase("The.Movie.Name.2016.Rumantsch.WEB.DL.h264-RlsGrp")] + [TestCase("The Movie Name 2016 Romansch WEB DL h264-RlsGrp")] + public void should_parse_language_romansh(string postTitle) + { + var result = LanguageParser.ParseLanguages(postTitle); + result.Should().Contain(Language.Romansh); + } + [TestCase("Movie.Title.en.sub")] [TestCase("Movie Title.eng.sub")] [TestCase("Movie.Title.eng.forced.sub")] diff --git a/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs b/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs index 1802728f82..3c4e2e5d55 100644 --- a/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs +++ b/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs @@ -71,6 +71,8 @@ public enum TMDbLanguageCodes [FieldOption(Hint = "Tagalog")] tl, [FieldOption(Hint = "Urdu")] - ur + ur, + [FieldOption(Hint = "Raeto-Romance")] + rm } } diff --git a/src/NzbDrone.Core/Languages/Language.cs b/src/NzbDrone.Core/Languages/Language.cs index fcfae27803..b778758f8a 100644 --- a/src/NzbDrone.Core/Languages/Language.cs +++ b/src/NzbDrone.Core/Languages/Language.cs @@ -125,6 +125,7 @@ public override bool Equals(object obj) public static Language Marathi => new Language(52, "Marathi"); public static Language Tagalog => new Language(53, "Tagalog"); public static Language Urdu => new Language(54, "Urdu"); + public static Language Romansh => new Language(55, "Romansh"); public static Language Any => new Language(-1, "Any"); public static Language Original => new Language(-2, "Original"); @@ -189,6 +190,7 @@ public static List All Marathi, Tagalog, Urdu, + Romansh, Any, Original }; diff --git a/src/NzbDrone.Core/Parser/IsoLanguages.cs b/src/NzbDrone.Core/Parser/IsoLanguages.cs index 8dd9a1357e..aa0eaabfeb 100644 --- a/src/NzbDrone.Core/Parser/IsoLanguages.cs +++ b/src/NzbDrone.Core/Parser/IsoLanguages.cs @@ -63,7 +63,8 @@ public static class IsoLanguages new IsoLanguage("af", "", "afr", "Afrikaans", Language.Afrikaans), new IsoLanguage("mr", "", "mar", "Marathi", Language.Marathi), new IsoLanguage("tl", "", "tgl", "Tagalog", Language.Tagalog), - new IsoLanguage("ur", "", "urd", "Urdu", Language.Urdu) + new IsoLanguage("ur", "", "urd", "Urdu", Language.Urdu), + new IsoLanguage("rm", "", "roh", "Romansh", Language.Romansh) }; private static readonly Dictionary AlternateIsoCodeMappings = new () diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs index d6b2da45b9..b193a7bb15 100644 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ b/src/NzbDrone.Core/Parser/LanguageParser.cs @@ -38,6 +38,7 @@ public static class LanguageParser (?\bJAP\b)| (?\bKOR\b)| (?\burdu\b)| + (?\b(?:romansh|rumantsch|romansch)\b)| (?\b(?:orig|original)\b)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace); @@ -426,6 +427,11 @@ public static List ParseLanguages(string title) languages.Add(Language.Urdu); } + if (match.Groups["romansh"].Success) + { + languages.Add(Language.Romansh); + } + if (match.Groups["original"].Success) { languages.Add(Language.Original);