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