diff --git a/LanguageBaseEnglish.xml b/LanguageBaseEnglish.xml
index 3b758ecca..9c6db6ed6 100644
--- a/LanguageBaseEnglish.xml
+++ b/LanguageBaseEnglish.xml
@@ -10,6 +10,7 @@
C&ancel
Yes
No
+ Close
Apply
Apply to
None
@@ -404,6 +405,13 @@ Please click "{0}" to generate or import shot changes first, or disable this opt
Align time codes to frame time codes
Use exact time codes (if available)
Snap cues to shot changes (if available)
+ Review not fully chained subtitles
+ Some subtitles were not fully chained in accordance with your profile, most likely due to too tightly clustered shot changes (possibly false positives).
+
+You might want to review these cases manually to ensure your cues are snapped to the correct (real) shot changes.
+ Lines
+ #{0} – #{1}
+ Gap (frames)
Edit profile
@@ -427,6 +435,7 @@ Please click "{0}" to generate or import shot changes first, or disable this opt
Chaining
In cue on shot change
Out cue on shot change
+ Still enforce General rules when unaffected
Max. gap:
If there is a shot change in between:
Don't chain
@@ -1051,9 +1060,9 @@ We leverage the intrinsic rhythm of the image.
Powered by {0}
Sorry, you need a Cognitive Services 'Translator Text' key from Microsoft to use the latest Microsoft Translator.
-Go to "Options -> Settings -> Tools" to enter your key.
+Go to "Options -> Settings -> Auto-translate" to enter your key.
Trying to translate without API key... (slow and limited data).
-To use an API key, go to "Options -> Settings -> Tools" to enter your Google translate API key.
+To use an API key, go to "Options -> Settings -> Auto-translate" to enter your Google translate API key.
Service:
Line merge:
Merge max two lines
@@ -1319,6 +1328,7 @@ To use an API key, go to "Options -> Settings -> Tools" to enter your Goog
Close translated subtitle
Open containing folder
&Compare...
+ Verify completeness...
S&tatistics...
&Plugins...
Subtitle from video file...
@@ -1565,6 +1575,7 @@ To use an API key, go to "Options -> Settings -> Tools" to enter your Goog
Subscript
Alignment...
Auto balance selected lines...
+ Evenly distribute selected lines (CPS)
Remove line-breaks from selected lines...
Typewriter effect...
Karaoke effect...
@@ -1836,6 +1847,8 @@ Continue?
Sorted by: {0}
Before auto balance selected lines
Number of auto balanced lines: {0}
+ Before evenly distribute selected lines
+ Number of evenly distributed lines: {0}
Before remove line-breaks from selected lines
Number of lines with removed line-break: {0}
Before multiple replace
@@ -2609,6 +2622,7 @@ can edit in same subtitle file (collaboration)
Merge dialog with next (insert dashes)
Merge dialog with previous (insert dashes)
Auto balance selected lines
+ Evenly distribute selected lines (CPS)
Go to next line
Go to next line (and play in 'Translate mode')
Go to next line and set cursor at end
@@ -3151,6 +3165,21 @@ Continue?
If you want this fixed, please send an email to mailto:niksedk@gmail.com and include a copy of the subtitle.
Import as plain text...
+
+ Verify completeness against other subtitle
+ Open control subtitle
+ Control subtitle is empty or could not be loaded.
+ Control subtitle: {0}
+ Coverage
+ {0:0.##}%
+ Sort by coverage
+ Sort by time
+ Re-verify
+ Insert
+ Insert and go to next
+ Dismiss
+ Dismiss and go to next
+
Visual sync
Start scene
diff --git a/src/ui/Logic/Language.cs b/src/ui/Logic/Language.cs
index 1f2837b20..8a9b0fa01 100644
--- a/src/ui/Logic/Language.cs
+++ b/src/ui/Logic/Language.cs
@@ -1320,8 +1320,8 @@ namespace Nikse.SubtitleEdit.Logic
PoweredByX = "Powered by {0}",
MsClientSecretNeeded = "Sorry, you need a Cognitive Services 'Translator Text' key from Microsoft to use the latest Microsoft Translator." + Environment.NewLine +
Environment.NewLine +
- "Go to \"Options -> Settings -> Tools\" to enter your key.",
- GoogleNoApiKeyWarning = "Trying to translate without API key... (slow and limited data). " + Environment.NewLine + "To use an API key, go to \"Options -> Settings -> Tools\" to enter your Google translate API key.",
+ "Go to \"Options -> Settings -> Auto-translate\" to enter your key.",
+ GoogleNoApiKeyWarning = "Trying to translate without API key... (slow and limited data). " + Environment.NewLine + "To use an API key, go to \"Options -> Settings -> Auto-translate\" to enter your Google translate API key.",
Service = "Service:",
LineMergeHandling = "Line merge:",
ProcessorMergeNext = "Merge max two lines",
diff --git a/src/ui/Logic/LanguageDeserializer.cs b/src/ui/Logic/LanguageDeserializer.cs
index ef47c4255..e94b8a4df 100644
--- a/src/ui/Logic/LanguageDeserializer.cs
+++ b/src/ui/Logic/LanguageDeserializer.cs
@@ -85,6 +85,9 @@ namespace Nikse.SubtitleEdit.Logic
case "General/No":
language.General.No = reader.Value;
break;
+ case "General/Close":
+ language.General.Close = reader.Value;
+ break;
case "General/Apply":
language.General.Apply = reader.Value;
break;
@@ -1081,6 +1084,21 @@ namespace Nikse.SubtitleEdit.Logic
case "BeautifyTimeCodes/BatchSnapToShotChanges":
language.BeautifyTimeCodes.BatchSnapToShotChanges = reader.Value;
break;
+ case "BeautifyTimeCodes/UnfixableParagraphsTitle":
+ language.BeautifyTimeCodes.UnfixableParagraphsTitle = reader.Value;
+ break;
+ case "BeautifyTimeCodes/UnfixableParagraphsInstructions":
+ language.BeautifyTimeCodes.UnfixableParagraphsInstructions = reader.Value;
+ break;
+ case "BeautifyTimeCodes/UnfixableParagraphsColumnParagraphs":
+ language.BeautifyTimeCodes.UnfixableParagraphsColumnParagraphs = reader.Value;
+ break;
+ case "BeautifyTimeCodes/UnfixableParagraphsColumnParagraphsFormat":
+ language.BeautifyTimeCodes.UnfixableParagraphsColumnParagraphsFormat = reader.Value;
+ break;
+ case "BeautifyTimeCodes/UnfixableParagraphsColumnGap":
+ language.BeautifyTimeCodes.UnfixableParagraphsColumnGap = reader.Value;
+ break;
case "BeautifyTimeCodesProfile/Title":
language.BeautifyTimeCodesProfile.Title = reader.Value;
break;
@@ -1144,6 +1162,9 @@ namespace Nikse.SubtitleEdit.Logic
case "BeautifyTimeCodesProfile/OutCueOnShot":
language.BeautifyTimeCodesProfile.OutCueOnShot = reader.Value;
break;
+ case "BeautifyTimeCodesProfile/CheckGeneral":
+ language.BeautifyTimeCodesProfile.CheckGeneral = reader.Value;
+ break;
case "BeautifyTimeCodesProfile/MaxGap":
language.BeautifyTimeCodesProfile.MaxGap = reader.Value;
break;
@@ -3982,6 +4003,12 @@ namespace Nikse.SubtitleEdit.Logic
case "Main/NumberOfLinesAutoBalancedX":
language.Main.NumberOfLinesAutoBalancedX = reader.Value;
break;
+ case "Main/BeforeEvenlyDistributeSelectedLines":
+ language.Main.BeforeEvenlyDistributeSelectedLines = reader.Value;
+ break;
+ case "Main/NumberOfLinesEvenlyDistributedX":
+ language.Main.NumberOfLinesEvenlyDistributedX = reader.Value;
+ break;
case "Main/BeforeRemoveLineBreaksInSelectedLines":
language.Main.BeforeRemoveLineBreaksInSelectedLines = reader.Value;
break;
@@ -4357,6 +4384,9 @@ namespace Nikse.SubtitleEdit.Logic
case "Main/Menu/File/Compare":
language.Main.Menu.File.Compare = reader.Value;
break;
+ case "Main/Menu/File/VerifyCompleteness":
+ language.Main.Menu.File.VerifyCompleteness = reader.Value;
+ break;
case "Main/Menu/File/Statistics":
language.Main.Menu.File.Statistics = reader.Value;
break;
@@ -5029,6 +5059,9 @@ namespace Nikse.SubtitleEdit.Logic
case "Main/Menu/ContextMenu/AutoBalanceSelectedLines":
language.Main.Menu.ContextMenu.AutoBalanceSelectedLines = reader.Value;
break;
+ case "Main/Menu/ContextMenu/EvenlyDistributeSelectedLines":
+ language.Main.Menu.ContextMenu.EvenlyDistributeSelectedLines = reader.Value;
+ break;
case "Main/Menu/ContextMenu/RemoveLineBreaksFromSelectedLines":
language.Main.Menu.ContextMenu.RemoveLineBreaksFromSelectedLines = reader.Value;
break;
@@ -7114,6 +7147,9 @@ namespace Nikse.SubtitleEdit.Logic
case "Settings/AutoBalanceSelectedLines":
language.Settings.AutoBalanceSelectedLines = reader.Value;
break;
+ case "Settings/EvenlyDistributeSelectedLines":
+ language.Settings.EvenlyDistributeSelectedLines = reader.Value;
+ break;
case "Settings/GoToNext":
language.Settings.GoToNext = reader.Value;
break;
@@ -8611,6 +8647,45 @@ namespace Nikse.SubtitleEdit.Logic
case "UnknownSubtitle/ImportAsPlainText":
language.UnknownSubtitle.ImportAsPlainText = reader.Value;
break;
+ case "VerifyCompleteness/Title":
+ language.VerifyCompleteness.Title = reader.Value;
+ break;
+ case "VerifyCompleteness/OpenControlSubtitle":
+ language.VerifyCompleteness.OpenControlSubtitle = reader.Value;
+ break;
+ case "VerifyCompleteness/ControlSubtitleError":
+ language.VerifyCompleteness.ControlSubtitleError = reader.Value;
+ break;
+ case "VerifyCompleteness/ControlSubtitleX":
+ language.VerifyCompleteness.ControlSubtitleX = reader.Value;
+ break;
+ case "VerifyCompleteness/Coverage":
+ language.VerifyCompleteness.Coverage = reader.Value;
+ break;
+ case "VerifyCompleteness/CoveragePercentageX":
+ language.VerifyCompleteness.CoveragePercentageX = reader.Value;
+ break;
+ case "VerifyCompleteness/SortByCoverage":
+ language.VerifyCompleteness.SortByCoverage = reader.Value;
+ break;
+ case "VerifyCompleteness/SortByTime":
+ language.VerifyCompleteness.SortByTime = reader.Value;
+ break;
+ case "VerifyCompleteness/Reload":
+ language.VerifyCompleteness.Reload = reader.Value;
+ break;
+ case "VerifyCompleteness/Insert":
+ language.VerifyCompleteness.Insert = reader.Value;
+ break;
+ case "VerifyCompleteness/InsertAndNext":
+ language.VerifyCompleteness.InsertAndNext = reader.Value;
+ break;
+ case "VerifyCompleteness/Dismiss":
+ language.VerifyCompleteness.Dismiss = reader.Value;
+ break;
+ case "VerifyCompleteness/DismissAndNext":
+ language.VerifyCompleteness.DismissAndNext = reader.Value;
+ break;
case "VisualSync/Title":
language.VisualSync.Title = reader.Value;
break;