Detection of US/GB English - thx Johan :)

git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@1061 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
niksedk 2012-03-20 17:24:59 +00:00
parent 8f953c029a
commit 30fae74b88

View File

@ -931,7 +931,7 @@ namespace Nikse.SubtitleEdit.Logic
{
int bestCount = subtitle.Paragraphs.Count / 14;
StringBuilder sb = new StringBuilder();
var sb = new StringBuilder();
foreach (Paragraph p in subtitle.Paragraphs)
sb.AppendLine(p.Text);
string text = sb.ToString();
@ -950,21 +950,21 @@ namespace Nikse.SubtitleEdit.Logic
languageName = "en_US";
int bestCount = subtitle.Paragraphs.Count / 14;
StringBuilder sb = new StringBuilder();
var sb = new StringBuilder();
foreach (Paragraph p in subtitle.Paragraphs)
sb.AppendLine(p.Text);
string text = sb.ToString();
List<string> dictionaryNames = GetDictionaryLanguages();
bool containsEnGB = false;
bool containsEnUS = false;
bool containsEnGb = false;
bool containsEnUs = false;
foreach (string name in dictionaryNames)
{
if (name.Contains("[en_GB]"))
containsEnGB = true;
containsEnGb = true;
if (name.Contains("[en_US]"))
containsEnUS = true;
containsEnUs = true;
}
foreach (string name in dictionaryNames)
@ -1003,42 +1003,10 @@ namespace Nikse.SubtitleEdit.Logic
count = GetCount(text, "we", "are", "and", "you", "your", "what");
if (count > bestCount)
{
if (!string.IsNullOrEmpty(languageName) && languageName.StartsWith("en_"))
if (containsEnGb)
{
//keep existing english language
}
else
{
if (containsEnGB)
{
int usCount = GetCount("color", "flavor", "ass", "humor", "neighbor", "honor", "airplane");
int gbCount = GetCount("colour", "flavour", "arse", "humour", "neighbour", "honour", "aeroplane");
if (usCount >= gbCount)
languageName = shortName;
else
languageName = "en_GB";
}
else
{
languageName = shortName;
}
}
}
break;
case "en_GB":
count = GetCount(text, "we", "are", "and", "you", "your", "what");
if (count > bestCount)
{
if (!string.IsNullOrEmpty(languageName) && languageName.StartsWith("en_"))
{
//keep existing english language
}
else
{
if (containsEnUS)
{
int usCount = GetCount("color", "flavor", "ass", "humor", "neighbor", "honor", "airplane");
int gbCount = GetCount("colour", "flavour", "arse", "humour", "neighbour", "honour", "aeroplane");
int usCount = GetCount(text, "color", "flavor", "honor", "humor", "neighbor", "honor");
int gbCount = GetCount(text, "colour", "flavour", "honour", "humour", "neighbour", "honour");
if (usCount >= gbCount)
languageName = "en_US";
else
@ -1049,6 +1017,20 @@ namespace Nikse.SubtitleEdit.Logic
languageName = shortName;
}
}
break;
case "en_GB":
count = GetCount(text, "we", "are", "and", "you", "your", "what");
if (count > bestCount)
{
if (containsEnUs)
{
int usCount = GetCount(text, "color", "flavor", "honor", "humor", "neighbor", "honor");
int gbCount = GetCount(text, "colour", "flavour", "honour", "humour", "neighbour", "honour");
if (usCount >= gbCount)
languageName = "en_US";
else
languageName = "en_GB";
}
}
break;
case "sv_SE":
@ -1135,7 +1117,6 @@ namespace Nikse.SubtitleEdit.Logic
if (count > bestCount)
languageName = shortName;
break;
default:
break;
}