mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 22:42:38 +01:00
parent
6246629b22
commit
8b545d845b
37
src/Test/Logic/NetflixHelperTest.cs
Normal file
37
src/Test/Logic/NetflixHelperTest.cs
Normal file
@ -0,0 +1,37 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Nikse.SubtitleEdit.Core.NetflixQualityCheck;
|
||||
|
||||
namespace Test.Logic
|
||||
{
|
||||
[TestClass]
|
||||
public class NetflixHelperTest
|
||||
{
|
||||
[TestMethod]
|
||||
public void ConvertNumberToString1()
|
||||
{
|
||||
var result = NetflixHelper.ConvertNumberToString("5", false, "da");
|
||||
Assert.AreEqual("fem", result);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ConvertNumberToString2()
|
||||
{
|
||||
var result = NetflixHelper.ConvertNumberToString("5", false, "en");
|
||||
Assert.AreEqual("five", result);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ConvertNumberToString3()
|
||||
{
|
||||
var result = NetflixHelper.ConvertNumberToString("5", true, "en");
|
||||
Assert.AreEqual("Five", result);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void ConvertNumberToString4()
|
||||
{
|
||||
var result = NetflixHelper.ConvertNumberToString("50000", true, "en");
|
||||
Assert.AreEqual("50000", result);
|
||||
}
|
||||
}
|
||||
}
|
@ -65,6 +65,7 @@
|
||||
<Compile Include="Assa\ResamplerTest.cs" />
|
||||
<Compile Include="Dictionaries\StringWithoutSpaceSplitToWordsTest.cs" />
|
||||
<Compile Include="LanguageFiles\LanguageFileTest.cs" />
|
||||
<Compile Include="Logic\NetflixHelperTest.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\PacTest.cs" />
|
||||
<Compile Include="Core\UUEncodingTest.cs" />
|
||||
<Compile Include="Core\CharUtilsTest.cs" />
|
||||
|
@ -14,14 +14,14 @@ namespace Nikse.SubtitleEdit.Core.NetflixQualityCheck
|
||||
|
||||
public void Check(Subtitle subtitle, NetflixQualityController controller)
|
||||
{
|
||||
foreach (Paragraph p in subtitle.Paragraphs)
|
||||
foreach (var p in subtitle.Paragraphs)
|
||||
{
|
||||
string newText = p.Text;
|
||||
var newText = p.Text;
|
||||
|
||||
var m = NumberStart.Match(newText);
|
||||
while (m.Success)
|
||||
{
|
||||
int length = m.Length - 2;
|
||||
var length = m.Length - 2;
|
||||
newText = newText.Remove(m.Index, length).Insert(m.Index, NetflixHelper.ConvertNumberToString(m.Value.Substring(0, length), true, controller.Language));
|
||||
m = NumberStart.Match(newText, m.Index + 1);
|
||||
}
|
||||
@ -29,7 +29,7 @@ namespace Nikse.SubtitleEdit.Core.NetflixQualityCheck
|
||||
m = NumberStartInside.Match(newText);
|
||||
while (m.Success)
|
||||
{
|
||||
int length = m.Length - 4;
|
||||
var length = m.Length - 4;
|
||||
newText = newText.Remove(m.Index + 2, length).Insert(m.Index + 2, NetflixHelper.ConvertNumberToString(m.Value.Substring(2, length), true, controller.Language));
|
||||
m = NumberStartInside.Match(newText, m.Index + 1);
|
||||
}
|
||||
@ -37,7 +37,7 @@ namespace Nikse.SubtitleEdit.Core.NetflixQualityCheck
|
||||
m = NumberStartInside2.Match(newText);
|
||||
while (m.Success)
|
||||
{
|
||||
int length = m.Length - 5;
|
||||
var length = m.Length - 5;
|
||||
newText = newText.Remove(m.Index + 3, length).Insert(m.Index + 3, NetflixHelper.ConvertNumberToString(m.Value.Substring(3, length), true, controller.Language));
|
||||
m = NumberStartInside2.Match(newText, m.Index + 1);
|
||||
}
|
||||
@ -45,7 +45,7 @@ namespace Nikse.SubtitleEdit.Core.NetflixQualityCheck
|
||||
if (newText != p.Text)
|
||||
{
|
||||
var fixedParagraph = new Paragraph(p, false) { Text = newText };
|
||||
string comment = "When a number begins a sentence, it should always be spelled out";
|
||||
var comment = "When a number begins a sentence, it should always be spelled out";
|
||||
controller.AddRecord(p, fixedParagraph, comment);
|
||||
}
|
||||
}
|
||||
|
@ -1,461 +1,141 @@
|
||||
using Nikse.SubtitleEdit.Core.Common;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Nikse.SubtitleEdit.Core.NetflixQualityCheck
|
||||
{
|
||||
internal static class NetflixHelper
|
||||
{
|
||||
internal static string ConvertNumberToString(string input, bool startWithUppercase, string language)
|
||||
public static string ConvertNumberToString(string input, bool startWithUppercase, string language)
|
||||
{
|
||||
var value = input.Trim();
|
||||
|
||||
Dictionary<string, string> dictionary = null;
|
||||
if (language == "en")
|
||||
{
|
||||
if (value.Equals("0", StringComparison.Ordinal))
|
||||
dictionary = new Dictionary<string, string>
|
||||
{
|
||||
value = "zero";
|
||||
}
|
||||
|
||||
if (value.Equals("1", StringComparison.Ordinal))
|
||||
{
|
||||
value = "one";
|
||||
}
|
||||
|
||||
if (value.Equals("2", StringComparison.Ordinal))
|
||||
{
|
||||
value = "two";
|
||||
}
|
||||
|
||||
if (value.Equals("3", StringComparison.Ordinal))
|
||||
{
|
||||
value = "three";
|
||||
}
|
||||
|
||||
if (value.Equals("4", StringComparison.Ordinal))
|
||||
{
|
||||
value = "four";
|
||||
}
|
||||
|
||||
if (value.Equals("5", StringComparison.Ordinal))
|
||||
{
|
||||
value = "five";
|
||||
}
|
||||
|
||||
if (value.Equals("6", StringComparison.Ordinal))
|
||||
{
|
||||
value = "six";
|
||||
}
|
||||
|
||||
if (value.Equals("7", StringComparison.Ordinal))
|
||||
{
|
||||
value = "seven";
|
||||
}
|
||||
|
||||
if (value.Equals("8", StringComparison.Ordinal))
|
||||
{
|
||||
value = "eight";
|
||||
}
|
||||
|
||||
if (value.Equals("9", StringComparison.Ordinal))
|
||||
{
|
||||
value = "nine";
|
||||
}
|
||||
|
||||
if (value.Equals("10", StringComparison.Ordinal))
|
||||
{
|
||||
value = "ten";
|
||||
}
|
||||
|
||||
if (value.Equals("11", StringComparison.Ordinal))
|
||||
{
|
||||
value = "eleven";
|
||||
}
|
||||
|
||||
if (value.StartsWith("12", StringComparison.Ordinal))
|
||||
{
|
||||
value = "twelve";
|
||||
}
|
||||
|
||||
if (value.StartsWith("13", StringComparison.Ordinal))
|
||||
{
|
||||
value = "thirteen";
|
||||
}
|
||||
|
||||
if (value.StartsWith("14", StringComparison.Ordinal))
|
||||
{
|
||||
value = "fourteen";
|
||||
}
|
||||
|
||||
if (value.StartsWith("15", StringComparison.Ordinal))
|
||||
{
|
||||
value = "fifteen";
|
||||
}
|
||||
|
||||
if (value.StartsWith("16", StringComparison.Ordinal))
|
||||
{
|
||||
value = "sixteen";
|
||||
}
|
||||
|
||||
if (value.StartsWith("17", StringComparison.Ordinal))
|
||||
{
|
||||
value = "seventeen";
|
||||
}
|
||||
|
||||
if (value.StartsWith("18", StringComparison.Ordinal))
|
||||
{
|
||||
value = "eighteen";
|
||||
}
|
||||
|
||||
if (value.StartsWith("19", StringComparison.Ordinal))
|
||||
{
|
||||
value = "nineteen";
|
||||
}
|
||||
|
||||
if (value.StartsWith("20", StringComparison.Ordinal))
|
||||
{
|
||||
value = "twenty";
|
||||
}
|
||||
|
||||
if (value.StartsWith("30", StringComparison.Ordinal))
|
||||
{
|
||||
value = "thirty";
|
||||
}
|
||||
|
||||
if (value.StartsWith("40", StringComparison.Ordinal))
|
||||
{
|
||||
value = "forty";
|
||||
}
|
||||
|
||||
if (value.StartsWith("50", StringComparison.Ordinal))
|
||||
{
|
||||
value = "fifty";
|
||||
}
|
||||
|
||||
if (value.StartsWith("60", StringComparison.Ordinal))
|
||||
{
|
||||
value = "sixty";
|
||||
}
|
||||
|
||||
if (value.StartsWith("70", StringComparison.Ordinal))
|
||||
{
|
||||
value = "seventy";
|
||||
}
|
||||
|
||||
if (value.StartsWith("80", StringComparison.Ordinal))
|
||||
{
|
||||
value = "eighty";
|
||||
}
|
||||
|
||||
if (value.StartsWith("90", StringComparison.Ordinal))
|
||||
{
|
||||
value = "ninety";
|
||||
}
|
||||
|
||||
if (value.StartsWith("100", StringComparison.Ordinal))
|
||||
{
|
||||
value = "one hundred";
|
||||
}
|
||||
{ "0", "zero" },
|
||||
{ "1", "one" },
|
||||
{ "2", "two" },
|
||||
{ "3", "three" },
|
||||
{ "4", "four" },
|
||||
{ "5", "five" },
|
||||
{ "6", "six" },
|
||||
{ "7", "seven" },
|
||||
{ "8", "eight" },
|
||||
{ "9", "nine" },
|
||||
{ "10", "ten" },
|
||||
{ "11", "eleven" },
|
||||
{ "12", "twelve" },
|
||||
{ "13", "thirteen" },
|
||||
{ "14", "fourteen" },
|
||||
{ "15", "fifteen" },
|
||||
{ "16", "sixteen" },
|
||||
{ "17", "seventeen" },
|
||||
{ "18", "eighteen" },
|
||||
{ "19", "nineteen" },
|
||||
{ "20", "twenty" },
|
||||
{ "30", "thirty" },
|
||||
{ "40", "forty" },
|
||||
{ "50", "fifty" },
|
||||
{ "60", "sixty" },
|
||||
{ "70", "seventy" },
|
||||
{ "80", "eighty" },
|
||||
{ "90", "ninety" },
|
||||
{ "100", "one hundred" },
|
||||
};
|
||||
}
|
||||
if (language == "da")
|
||||
else if (language == "da")
|
||||
{
|
||||
if (value.Equals("0", StringComparison.Ordinal))
|
||||
dictionary = new Dictionary<string, string>
|
||||
{
|
||||
value = "nul";
|
||||
}
|
||||
|
||||
if (value.Equals("1", StringComparison.Ordinal))
|
||||
{
|
||||
value = "en";
|
||||
}
|
||||
|
||||
if (value.Equals("2", StringComparison.Ordinal))
|
||||
{
|
||||
value = "to";
|
||||
}
|
||||
|
||||
if (value.Equals("3", StringComparison.Ordinal))
|
||||
{
|
||||
value = "tre";
|
||||
}
|
||||
|
||||
if (value.Equals("4", StringComparison.Ordinal))
|
||||
{
|
||||
value = "fire";
|
||||
}
|
||||
|
||||
if (value.Equals("5", StringComparison.Ordinal))
|
||||
{
|
||||
value = "fem";
|
||||
}
|
||||
|
||||
if (value.Equals("6", StringComparison.Ordinal))
|
||||
{
|
||||
value = "seks";
|
||||
}
|
||||
|
||||
if (value.Equals("7", StringComparison.Ordinal))
|
||||
{
|
||||
value = "syv";
|
||||
}
|
||||
|
||||
if (value.Equals("8", StringComparison.Ordinal))
|
||||
{
|
||||
value = "otte";
|
||||
}
|
||||
|
||||
if (value.Equals("9", StringComparison.Ordinal))
|
||||
{
|
||||
value = "ni";
|
||||
}
|
||||
|
||||
if (value.Equals("10", StringComparison.Ordinal))
|
||||
{
|
||||
value = "ti";
|
||||
}
|
||||
|
||||
if (value.Equals("11", StringComparison.Ordinal))
|
||||
{
|
||||
value = "elve";
|
||||
}
|
||||
|
||||
if (value.StartsWith("12", StringComparison.Ordinal))
|
||||
{
|
||||
value = "tolv";
|
||||
}
|
||||
|
||||
if (value.StartsWith("13", StringComparison.Ordinal))
|
||||
{
|
||||
value = "tretten";
|
||||
}
|
||||
|
||||
if (value.StartsWith("14", StringComparison.Ordinal))
|
||||
{
|
||||
value = "fjorten";
|
||||
}
|
||||
|
||||
if (value.StartsWith("15", StringComparison.Ordinal))
|
||||
{
|
||||
value = "femten";
|
||||
}
|
||||
|
||||
if (value.StartsWith("16", StringComparison.Ordinal))
|
||||
{
|
||||
value = "seksten";
|
||||
}
|
||||
|
||||
if (value.StartsWith("17", StringComparison.Ordinal))
|
||||
{
|
||||
value = "sytten";
|
||||
}
|
||||
|
||||
if (value.StartsWith("18", StringComparison.Ordinal))
|
||||
{
|
||||
value = "atten";
|
||||
}
|
||||
|
||||
if (value.StartsWith("19", StringComparison.Ordinal))
|
||||
{
|
||||
value = "nitten";
|
||||
}
|
||||
|
||||
if (value.StartsWith("20", StringComparison.Ordinal))
|
||||
{
|
||||
value = "tyve";
|
||||
}
|
||||
|
||||
if (value.StartsWith("30", StringComparison.Ordinal))
|
||||
{
|
||||
value = "tredieve";
|
||||
}
|
||||
|
||||
if (value.StartsWith("40", StringComparison.Ordinal))
|
||||
{
|
||||
value = "fyrre";
|
||||
}
|
||||
|
||||
if (value.StartsWith("50", StringComparison.Ordinal))
|
||||
{
|
||||
value = "halvtreds";
|
||||
}
|
||||
|
||||
if (value.StartsWith("60", StringComparison.Ordinal))
|
||||
{
|
||||
value = "treds";
|
||||
}
|
||||
|
||||
if (value.StartsWith("70", StringComparison.Ordinal))
|
||||
{
|
||||
value = "halvfjerds";
|
||||
}
|
||||
|
||||
if (value.StartsWith("80", StringComparison.Ordinal))
|
||||
{
|
||||
value = "first";
|
||||
}
|
||||
|
||||
if (value.StartsWith("90", StringComparison.Ordinal))
|
||||
{
|
||||
value = "halvfems";
|
||||
}
|
||||
|
||||
if (value.StartsWith("100", StringComparison.Ordinal))
|
||||
{
|
||||
value = "ethunderede";
|
||||
}
|
||||
{ "0", "nul" },
|
||||
{ "1", "en" },
|
||||
{ "2", "to" },
|
||||
{ "3", "tre" },
|
||||
{ "4", "fire" },
|
||||
{ "5", "fem" },
|
||||
{ "6", "seks" },
|
||||
{ "7", "syv" },
|
||||
{ "8", "otte" },
|
||||
{ "9", "ni" },
|
||||
{ "10", "ti" },
|
||||
{ "11", "elleve" },
|
||||
{ "12", "tolv" },
|
||||
{ "13", "tretten" },
|
||||
{ "14", "fjorten" },
|
||||
{ "15", "femten" },
|
||||
{ "16", "seksten" },
|
||||
{ "17", "sytten" },
|
||||
{ "18", "atten" },
|
||||
{ "19", "nitten" },
|
||||
{ "20", "tyve" },
|
||||
{ "30", "tredieve" },
|
||||
{ "40", "fyrre" },
|
||||
{ "50", "halvtreds" },
|
||||
{ "60", "treds" },
|
||||
{ "70", "halvfjerds" },
|
||||
{ "80", "firs" },
|
||||
{ "90", "halvfems" },
|
||||
{ "100", "ethunderede" },
|
||||
};
|
||||
}
|
||||
if (language == "pt")
|
||||
else if (language == "pt")
|
||||
{
|
||||
if (value.Equals("0", StringComparison.Ordinal))
|
||||
dictionary = new Dictionary<string, string>
|
||||
{
|
||||
value = "zero";
|
||||
}
|
||||
|
||||
if (value.Equals("1", StringComparison.Ordinal))
|
||||
{
|
||||
value = "um";
|
||||
}
|
||||
|
||||
if (value.Equals("2", StringComparison.Ordinal))
|
||||
{
|
||||
value = "dois";
|
||||
}
|
||||
|
||||
if (value.Equals("3", StringComparison.Ordinal))
|
||||
{
|
||||
value = "três";
|
||||
}
|
||||
|
||||
if (value.Equals("4", StringComparison.Ordinal))
|
||||
{
|
||||
value = "quatro";
|
||||
}
|
||||
|
||||
if (value.Equals("5", StringComparison.Ordinal))
|
||||
{
|
||||
value = "cinco";
|
||||
}
|
||||
|
||||
if (value.Equals("6", StringComparison.Ordinal))
|
||||
{
|
||||
value = "seis";
|
||||
}
|
||||
|
||||
if (value.Equals("7", StringComparison.Ordinal))
|
||||
{
|
||||
value = "sete";
|
||||
}
|
||||
|
||||
if (value.Equals("8", StringComparison.Ordinal))
|
||||
{
|
||||
value = "oito";
|
||||
}
|
||||
|
||||
if (value.Equals("9", StringComparison.Ordinal))
|
||||
{
|
||||
value = "nove";
|
||||
}
|
||||
|
||||
if (value.Equals("10", StringComparison.Ordinal))
|
||||
{
|
||||
value = "dez";
|
||||
}
|
||||
|
||||
if (value.Equals("11", StringComparison.Ordinal))
|
||||
{
|
||||
value = "onze";
|
||||
}
|
||||
|
||||
if (value.StartsWith("12", StringComparison.Ordinal))
|
||||
{
|
||||
value = "doze";
|
||||
}
|
||||
|
||||
if (value.StartsWith("13", StringComparison.Ordinal))
|
||||
{
|
||||
value = "treze";
|
||||
}
|
||||
|
||||
if (value.StartsWith("14", StringComparison.Ordinal))
|
||||
{
|
||||
value = "quatorze";
|
||||
}
|
||||
|
||||
if (value.StartsWith("15", StringComparison.Ordinal))
|
||||
{
|
||||
value = "quinze";
|
||||
}
|
||||
|
||||
if (value.StartsWith("16", StringComparison.Ordinal))
|
||||
{
|
||||
value = "dezesseis";
|
||||
}
|
||||
|
||||
if (value.StartsWith("17", StringComparison.Ordinal))
|
||||
{
|
||||
value = "dezessete";
|
||||
}
|
||||
|
||||
if (value.StartsWith("18", StringComparison.Ordinal))
|
||||
{
|
||||
value = "dezoito";
|
||||
}
|
||||
|
||||
if (value.StartsWith("19", StringComparison.Ordinal))
|
||||
{
|
||||
value = "dezenove";
|
||||
}
|
||||
|
||||
if (value.StartsWith("20", StringComparison.Ordinal))
|
||||
{
|
||||
value = "vinte";
|
||||
}
|
||||
|
||||
if (value.StartsWith("30", StringComparison.Ordinal))
|
||||
{
|
||||
value = "trinta";
|
||||
}
|
||||
|
||||
if (value.StartsWith("40", StringComparison.Ordinal))
|
||||
{
|
||||
value = "quarenta";
|
||||
}
|
||||
|
||||
if (value.StartsWith("50", StringComparison.Ordinal))
|
||||
{
|
||||
value = "cinquenta";
|
||||
}
|
||||
|
||||
if (value.StartsWith("60", StringComparison.Ordinal))
|
||||
{
|
||||
value = "sessenta";
|
||||
}
|
||||
|
||||
if (value.StartsWith("70", StringComparison.Ordinal))
|
||||
{
|
||||
value = "setenta";
|
||||
}
|
||||
|
||||
if (value.StartsWith("80", StringComparison.Ordinal))
|
||||
{
|
||||
value = "oitenta";
|
||||
}
|
||||
|
||||
if (value.StartsWith("90", StringComparison.Ordinal))
|
||||
{
|
||||
value = "noventa";
|
||||
}
|
||||
|
||||
if (value.StartsWith("100", StringComparison.Ordinal))
|
||||
{
|
||||
value = "cem";
|
||||
}
|
||||
{ "0", "zero" },
|
||||
{ "1", "um" },
|
||||
{ "2", "dois" },
|
||||
{ "3", "três" },
|
||||
{ "4", "quatro" },
|
||||
{ "5", "cinco" },
|
||||
{ "6", "seis" },
|
||||
{ "7", "sete" },
|
||||
{ "8", "oito" },
|
||||
{ "9", "nove" },
|
||||
{ "10", "dez" },
|
||||
{ "11", "onze" },
|
||||
{ "12", "doze" },
|
||||
{ "13", "treze" },
|
||||
{ "14", "quatorze" },
|
||||
{ "15", "quinze" },
|
||||
{ "16", "dezesseis" },
|
||||
{ "17", "dezessete" },
|
||||
{ "18", "dezoito" },
|
||||
{ "19", "dezenove" },
|
||||
{ "20", "vinte" },
|
||||
{ "30", "trinta" },
|
||||
{ "40", "quarenta" },
|
||||
{ "50", "cinquenta" },
|
||||
{ "60", "sessenta" },
|
||||
{ "70", "setenta" },
|
||||
{ "80", "oitenta" },
|
||||
{ "90", "noventa" },
|
||||
{ "100", "cem" },
|
||||
};
|
||||
}
|
||||
|
||||
var post = string.Empty;
|
||||
if (value.EndsWith('.') || value.EndsWith(',') || value.EndsWith('?'))
|
||||
{
|
||||
post = value.Substring(value.Length - 1);
|
||||
value = value.Substring(0, value.Length - 1);
|
||||
}
|
||||
|
||||
if (dictionary != null && dictionary.TryGetValue(value, out var result))
|
||||
{
|
||||
value = result;
|
||||
}
|
||||
|
||||
value += post;
|
||||
|
||||
if (startWithUppercase && value.Length > 0)
|
||||
{
|
||||
return value.CapitalizeFirstLetter();
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user