Use display-friendly language name in "Fix common errors" - thx Zoltan :)

This commit is contained in:
Nikolaj Olsson 2019-11-16 14:47:09 +01:00
parent 17b50734b4
commit b6da4414c5
3 changed files with 83 additions and 63 deletions

View File

@ -2645,6 +2645,8 @@
<Word from="z'housand" to="thousand" /> <Word from="z'housand" to="thousand" />
<Word from="zlPPING" to="ZIPPING" /> <Word from="zlPPING" to="ZIPPING" />
<Word from="ZSth" to="25th" /> <Word from="ZSth" to="25th" />
<Word from="d0n't" to="don't" />
<Word from="D0n't" to="Don't" />
</WholeWords> </WholeWords>
<PartialWordsAlways> <PartialWordsAlways>
<!-- Will be replaced always --> <!-- Will be replaced always -->

View File

@ -231,6 +231,7 @@ namespace Nikse.SubtitleEdit.Forms
this.columnHeader3}); this.columnHeader3});
this.listView1.FullRowSelect = true; this.listView1.FullRowSelect = true;
this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
this.listView1.HideSelection = false;
this.listView1.Location = new System.Drawing.Point(6, 48); this.listView1.Location = new System.Drawing.Point(6, 48);
this.listView1.Name = "listView1"; this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(810, 477); this.listView1.Size = new System.Drawing.Size(810, 477);
@ -416,6 +417,19 @@ namespace Nikse.SubtitleEdit.Forms
this.subtitleListView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.subtitleListView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.subtitleListView1.ColumnIndexActor = -1;
this.subtitleListView1.ColumnIndexCps = -1;
this.subtitleListView1.ColumnIndexDuration = 3;
this.subtitleListView1.ColumnIndexEnd = 2;
this.subtitleListView1.ColumnIndexExtra = -1;
this.subtitleListView1.ColumnIndexGap = -1;
this.subtitleListView1.ColumnIndexNetwork = -1;
this.subtitleListView1.ColumnIndexNumber = 0;
this.subtitleListView1.ColumnIndexRegion = -1;
this.subtitleListView1.ColumnIndexStart = 1;
this.subtitleListView1.ColumnIndexText = 4;
this.subtitleListView1.ColumnIndexTextAlternate = -1;
this.subtitleListView1.ColumnIndexWpm = -1;
this.subtitleListView1.ContextMenuStrip = this.contextMenuStripListview; this.subtitleListView1.ContextMenuStrip = this.contextMenuStripListview;
this.subtitleListView1.FirstVisibleIndex = -1; this.subtitleListView1.FirstVisibleIndex = -1;
this.subtitleListView1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.subtitleListView1.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
@ -694,8 +708,8 @@ namespace Nikse.SubtitleEdit.Forms
this.Controls.Add(this.buttonBack); this.Controls.Add(this.buttonBack);
this.Controls.Add(this.buttonCancel); this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonNextFinish); this.Controls.Add(this.buttonNextFinish);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBoxStep1); this.Controls.Add(this.groupBoxStep1);
this.Controls.Add(this.groupBox2);
this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.KeyPreview = true; this.KeyPreview = true;
this.MaximizeBox = false; this.MaximizeBox = false;

View File

@ -79,6 +79,23 @@ namespace Nikse.SubtitleEdit.Forms
} }
} }
public class LanguageItem
{
public CultureInfo Code { get; }
public string Name { get; }
public LanguageItem(CultureInfo code, string name)
{
Code = code;
Name = name;
}
public override string ToString()
{
return Name;
}
}
public Subtitle Subtitle; public Subtitle Subtitle;
private SubtitleFormat _format; private SubtitleFormat _format;
public Encoding Encoding { get; set; } public Encoding Encoding { get; set; }
@ -109,35 +126,45 @@ namespace Nikse.SubtitleEdit.Forms
public Subtitle FixedSubtitle { get; private set; } public Subtitle FixedSubtitle { get; private set; }
private void InitializeLanguageNames(LanguageItem firstItem = null)
{
comboBoxLanguage.BeginUpdate();
comboBoxLanguage.Items.Clear();
if (firstItem != null)
{
comboBoxLanguage.Items.Add(firstItem);
}
foreach (var x in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
{
if (!string.IsNullOrWhiteSpace(x.ToString()) && !x.EnglishName.Contains("("))
{
comboBoxLanguage.Items.Add(new LanguageItem(x, x.EnglishName));
}
}
comboBoxLanguage.Sorted = true;
comboBoxLanguage.EndUpdate();
}
public void RunBatchSettings(Subtitle subtitle, SubtitleFormat format, Encoding encoding, string language) public void RunBatchSettings(Subtitle subtitle, SubtitleFormat format, Encoding encoding, string language)
{ {
_autoDetectGoogleLanguage = language; _autoDetectGoogleLanguage = language;
var ci = CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage); var ci = CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage);
string threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName; string threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
comboBoxLanguage.Items.Clear(); InitializeLanguageNames(new LanguageItem(null, "-Auto-"));
comboBoxLanguage.Items.Add("-Auto-");
foreach (CultureInfo x in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
{
if (!string.IsNullOrWhiteSpace(x.ToString()))
{
comboBoxLanguage.Items.Add(x);
}
}
comboBoxLanguage.Sorted = true;
int languageIndex = 0; int languageIndex = 0;
int j = 0; int j = 0;
foreach (var x in comboBoxLanguage.Items) foreach (var x in comboBoxLanguage.Items)
{ {
var xci = x as CultureInfo; if (x is LanguageItem xci)
if (xci != null)
{ {
if (xci.TwoLetterISOLanguageName == ci.TwoLetterISOLanguageName) if (xci.Code != null && xci.Code.TwoLetterISOLanguageName == ci.TwoLetterISOLanguageName)
{ {
languageIndex = j; languageIndex = j;
break; break;
} }
if (xci.TwoLetterISOLanguageName == "en") if (xci.Code != null && xci.Code.TwoLetterISOLanguageName == "en")
{ {
languageIndex = j; languageIndex = j;
} }
@ -167,13 +194,8 @@ namespace Nikse.SubtitleEdit.Forms
{ {
get get
{ {
var ci = comboBoxLanguage.SelectedItem as CultureInfo; var ci = comboBoxLanguage.SelectedItem as LanguageItem;
if (ci == null) return ci?.Code == null ? string.Empty : ci.Code.TwoLetterISOLanguageName;
{
return string.Empty;
}
return ci.TwoLetterISOLanguageName;
} }
set set
{ {
@ -195,25 +217,18 @@ namespace Nikse.SubtitleEdit.Forms
_autoDetectGoogleLanguage = language; _autoDetectGoogleLanguage = language;
var ci = CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage); var ci = CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage);
string threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName; string threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
InitializeLanguageNames();
comboBoxLanguage.Items.Clear();
foreach (CultureInfo x in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
{
comboBoxLanguage.Items.Add(x);
}
comboBoxLanguage.Sorted = true;
int languageIndex = 0; int languageIndex = 0;
int j = 0; int j = 0;
foreach (var x in comboBoxLanguage.Items) foreach (var x in comboBoxLanguage.Items)
{ {
var xci = (CultureInfo)x; var xci = (LanguageItem)x;
if (xci.TwoLetterISOLanguageName == ci.TwoLetterISOLanguageName) if (xci.Code.TwoLetterISOLanguageName == ci.TwoLetterISOLanguageName)
{ {
languageIndex = j; languageIndex = j;
break; break;
} }
if (xci.TwoLetterISOLanguageName == "en") if (xci.Code.TwoLetterISOLanguageName == "en")
{ {
languageIndex = j; languageIndex = j;
} }
@ -252,25 +267,18 @@ namespace Nikse.SubtitleEdit.Forms
CultureInfo ci = CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage); CultureInfo ci = CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage);
string threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName; string threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
InitializeLanguageNames();
comboBoxLanguage.Items.Clear();
foreach (CultureInfo x in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
{
comboBoxLanguage.Items.Add(x);
}
comboBoxLanguage.Sorted = true;
int languageIndex = 0; int languageIndex = 0;
int j = 0; int j = 0;
foreach (var x in comboBoxLanguage.Items) foreach (var x in comboBoxLanguage.Items)
{ {
var xci = (CultureInfo)x; var xci = (LanguageItem)x;
if (xci.TwoLetterISOLanguageName == ci.TwoLetterISOLanguageName) if (xci.Code.TwoLetterISOLanguageName == ci.TwoLetterISOLanguageName)
{ {
languageIndex = j; languageIndex = j;
break; break;
} }
if (xci.TwoLetterISOLanguageName == "en") if (xci.Code.TwoLetterISOLanguageName == "en")
{ {
languageIndex = j; languageIndex = j;
} }
@ -306,9 +314,8 @@ namespace Nikse.SubtitleEdit.Forms
if (!string.IsNullOrEmpty(Configuration.Settings.CommonErrors.StartSize)) if (!string.IsNullOrEmpty(Configuration.Settings.CommonErrors.StartSize))
{ {
StartPosition = FormStartPosition.Manual; StartPosition = FormStartPosition.Manual;
string[] arr = Configuration.Settings.CommonErrors.StartSize.Split(';'); var arr = Configuration.Settings.CommonErrors.StartSize.Split(';');
int x, y; if (arr.Length == 2 && int.TryParse(arr[0], out var x) && int.TryParse(arr[1], out var y))
if (arr.Length == 2 && int.TryParse(arr[0], out x) && int.TryParse(arr[1], out y))
{ {
if (x > 10 && x < 10000 && y > 10 && y < 10000) if (x > 10 && x < 10000 && y > 10 && y < 10000)
{ {
@ -320,9 +327,8 @@ namespace Nikse.SubtitleEdit.Forms
if (!string.IsNullOrEmpty(Configuration.Settings.CommonErrors.StartPosition)) if (!string.IsNullOrEmpty(Configuration.Settings.CommonErrors.StartPosition))
{ {
StartPosition = FormStartPosition.Manual; StartPosition = FormStartPosition.Manual;
string[] arr = Configuration.Settings.CommonErrors.StartPosition.Split(';'); var arr = Configuration.Settings.CommonErrors.StartPosition.Split(';');
int x, y; if (arr.Length == 2 && int.TryParse(arr[0], out var x) && int.TryParse(arr[1], out var y))
if (arr.Length == 2 && int.TryParse(arr[0], out x) && int.TryParse(arr[1], out y))
{ {
var screen = Screen.FromPoint(Cursor.Position); var screen = Screen.FromPoint(Cursor.Position);
if (x > 0 && x < screen.WorkingArea.Width && y > 0 && y < screen.WorkingArea.Height) if (x > 0 && x < screen.WorkingArea.Width && y > 0 && y < screen.WorkingArea.Height)
@ -1114,8 +1120,7 @@ namespace Nikse.SubtitleEdit.Forms
foreach (ListViewItem lvi in subtitleListView1.Items) foreach (ListViewItem lvi in subtitleListView1.Items)
{ {
var p2 = lvi.Tag as Paragraph; if (lvi.Tag is Paragraph p2 && p.Id == p2.Id)
if (p2 != null && p.Id == p2.Id)
{ {
var index = lvi.Index; var index = lvi.Index;
if (index - 1 > 0) if (index - 1 > 0)
@ -1237,10 +1242,10 @@ namespace Nikse.SubtitleEdit.Forms
Paragraph nextParagraph = FixedSubtitle.GetParagraphOrDefault(firstSelectedIndex + 1); Paragraph nextParagraph = FixedSubtitle.GetParagraphOrDefault(firstSelectedIndex + 1);
if (nextParagraph != null) if (nextParagraph != null)
{ {
double durationMilliSeconds = (double)numericUpDownDuration.Value * TimeCode.BaseUnit; double durationMilliseconds = (double)numericUpDownDuration.Value * TimeCode.BaseUnit;
if (startTime.TotalMilliseconds + durationMilliSeconds > nextParagraph.StartTime.TotalMilliseconds) if (startTime.TotalMilliseconds + durationMilliseconds > nextParagraph.StartTime.TotalMilliseconds)
{ {
labelDurationWarning.Text = string.Format(_languageGeneral.OverlapNextX, ((startTime.TotalMilliseconds + durationMilliSeconds) - nextParagraph.StartTime.TotalMilliseconds) / TimeCode.BaseUnit); labelDurationWarning.Text = string.Format(_languageGeneral.OverlapNextX, ((startTime.TotalMilliseconds + durationMilliseconds) - nextParagraph.StartTime.TotalMilliseconds) / TimeCode.BaseUnit);
} }
if (labelStartTimeWarning.Text.Length == 0 && if (labelStartTimeWarning.Text.Length == 0 &&
@ -1435,7 +1440,7 @@ namespace Nikse.SubtitleEdit.Forms
{ {
listViewFixes.BeginUpdate(); listViewFixes.BeginUpdate();
// save de-seleced fixes // save de-selected fixes
var deSelectedFixes = new List<string>(); var deSelectedFixes = new List<string>();
foreach (ListViewItem item in listViewFixes.Items) foreach (ListViewItem item in listViewFixes.Items)
{ {
@ -1498,7 +1503,7 @@ namespace Nikse.SubtitleEdit.Forms
int firstIndex = subtitleListView1.SelectedItems[0].Index; int firstIndex = subtitleListView1.SelectedItems[0].Index;
// save de-seleced fixes // save de-selected fixes
var deSelectedFixes = new List<string>(); var deSelectedFixes = new List<string>();
foreach (ListViewItem item in listViewFixes.Items) foreach (ListViewItem item in listViewFixes.Items)
{ {
@ -1556,7 +1561,7 @@ namespace Nikse.SubtitleEdit.Forms
int startNumber = FixedSubtitle.Paragraphs[0].Number; int startNumber = FixedSubtitle.Paragraphs[0].Number;
int firstSelectedIndex = subtitleListView1.SelectedItems[0].Index; int firstSelectedIndex = subtitleListView1.SelectedItems[0].Index;
// save de-seleced fixes // save de-selected fixes
var deSelectedFixes = new List<string>(); var deSelectedFixes = new List<string>();
foreach (ListViewItem item in listViewFixes.Items) foreach (ListViewItem item in listViewFixes.Items)
{ {
@ -1679,7 +1684,7 @@ namespace Nikse.SubtitleEdit.Forms
subtitleListView1.SelectedIndexChanged -= SubtitleListView1SelectedIndexChanged; subtitleListView1.SelectedIndexChanged -= SubtitleListView1SelectedIndexChanged;
int firstSelectedIndex = subtitleListView1.SelectedItems[0].Index; int firstSelectedIndex = subtitleListView1.SelectedItems[0].Index;
// save de-seleced fixes // save de-selected fixes
var deSelectedFixes = new List<string>(); var deSelectedFixes = new List<string>();
foreach (ListViewItem item in listViewFixes.Items) foreach (ListViewItem item in listViewFixes.Items)
{ {
@ -1796,11 +1801,10 @@ namespace Nikse.SubtitleEdit.Forms
{ {
if (Subtitle != null) if (Subtitle != null)
{ {
var ci = comboBoxLanguage.SelectedItem as CultureInfo; if (comboBoxLanguage.SelectedItem is LanguageItem ci)
if (ci != null)
{ {
_autoDetectGoogleLanguage = ci.TwoLetterISOLanguageName; _autoDetectGoogleLanguage = ci.Code.TwoLetterISOLanguageName;
AddFixActions(ci.ThreeLetterISOLanguageName); AddFixActions(ci.Code.ThreeLetterISOLanguageName);
} }
} }
} }