mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-22 03:02:35 +01:00
More work on translate
This commit is contained in:
parent
ec2d723551
commit
d2d73be7c8
@ -5,6 +5,8 @@
|
||||
* UI layouts with support for TikTok/YouTube-shorts - thx leon/jmaraujouy/LearningJer
|
||||
* Language filter (to minimize the long list of languages in combo boxes)
|
||||
* Interjections are now language specific
|
||||
* Translate via Facebook's NLLB (requires local API) - thx sharadagg
|
||||
* Translate via LibreTranslate (requires local API) - thx AnonymousWebHacker
|
||||
* Statistics for selected lines
|
||||
* Shortcut "Set start time and go to next"
|
||||
* IMPROVED:
|
||||
|
@ -28,6 +28,7 @@
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=ffprobe/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Fmpeg/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Immersive/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Libre/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Matroska/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nikse/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Purfview/@EntryIndexedValue">True</s:Boolean>
|
||||
|
111
src/libse/AutoTranslate/LibreTranslate.cs
Normal file
111
src/libse/AutoTranslate/LibreTranslate.cs
Normal file
@ -0,0 +1,111 @@
|
||||
using Nikse.SubtitleEdit.Core.Common;
|
||||
using Nikse.SubtitleEdit.Core.Translate;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Nikse.SubtitleEdit.Core.Http;
|
||||
using Nikse.SubtitleEdit.Core.SubtitleFormats;
|
||||
using System.Net.Http.Headers;
|
||||
|
||||
namespace Nikse.SubtitleEdit.Core.AutoTranslate
|
||||
{
|
||||
public class LibreTranslate : IAutoTranslator
|
||||
{
|
||||
private HttpClient _httpClient;
|
||||
|
||||
public string Name { get; set; } = " LibreTranslate";
|
||||
public string Url => "https://github.com/LibreTranslate/LibreTranslate";
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
_httpClient?.Dispose();
|
||||
_httpClient = new HttpClient(); //DownloaderFactory.MakeHttpClient();
|
||||
_httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
|
||||
_httpClient.DefaultRequestHeaders.TryAddWithoutValidation("accept", "application/json");
|
||||
_httpClient.BaseAddress = new Uri(Configuration.Settings.Tools.AutoTranslateLibreUrl);
|
||||
}
|
||||
|
||||
public List<TranslationPair> GetSupportedSourceLanguages()
|
||||
{
|
||||
return ListLanguages();
|
||||
}
|
||||
|
||||
public List<TranslationPair> GetSupportedTargetLanguages()
|
||||
{
|
||||
return ListLanguages();
|
||||
}
|
||||
|
||||
public async Task<string> Translate(string text, string sourceLanguageCode, string targetLanguageCode)
|
||||
{
|
||||
var input = "{\"q\": \"" + Json.EncodeJsonText(text.Trim()) + "\", \"source\": \"" + sourceLanguageCode + "\", \"target\": \"" + targetLanguageCode + "\"}";
|
||||
var content = new StringContent(input, Encoding.UTF8);
|
||||
content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
|
||||
var result = _httpClient.PostAsync("translate", content).Result;
|
||||
result.EnsureSuccessStatusCode();
|
||||
var bytes = await result.Content.ReadAsByteArrayAsync();
|
||||
var json = Encoding.UTF8.GetString(bytes).Trim();
|
||||
|
||||
var parser = new SeJsonParser();
|
||||
var resultText = parser.GetFirstObject(json, "translatedText");
|
||||
if (resultText == null)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return Json.DecodeJsonText(resultText).Trim();
|
||||
}
|
||||
|
||||
private static List<TranslationPair> ListLanguages()
|
||||
{
|
||||
var languageCodes = new List<string>
|
||||
{
|
||||
"ar",
|
||||
"az",
|
||||
"cs",
|
||||
"da",
|
||||
"de",
|
||||
"el",
|
||||
"en",
|
||||
"eo",
|
||||
"es",
|
||||
"fa",
|
||||
"fi",
|
||||
"fr",
|
||||
"ga",
|
||||
"he",
|
||||
"hi",
|
||||
"hu",
|
||||
"id",
|
||||
"it",
|
||||
"ja",
|
||||
"ko",
|
||||
"nl",
|
||||
"pl",
|
||||
"pt",
|
||||
"ru",
|
||||
"ru",
|
||||
"sk",
|
||||
"sv",
|
||||
"tr",
|
||||
"uk",
|
||||
"zh",
|
||||
};
|
||||
|
||||
var result = new List<TranslationPair>();
|
||||
var cultures = Utilities.GetSubtitleLanguageCultures(false).ToList();
|
||||
foreach (var code in languageCodes)
|
||||
{
|
||||
var culture = cultures.FirstOrDefault(p=>p.TwoLetterISOLanguageName == code);
|
||||
if (culture != null)
|
||||
{
|
||||
result.Add(new TranslationPair(culture.Name, code));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,15 +1,13 @@
|
||||
using Nikse.SubtitleEdit.Core.Common;
|
||||
using Nikse.SubtitleEdit.Core.Http;
|
||||
using Nikse.SubtitleEdit.Core.SubtitleFormats;
|
||||
using Nikse.SubtitleEdit.Core.Translate;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Nikse.SubtitleEdit.Core.Http;
|
||||
using Nikse.SubtitleEdit.Core.SubtitleFormats;
|
||||
using System.Net.Http.Headers;
|
||||
|
||||
namespace Nikse.SubtitleEdit.Core.AutoTranslate
|
||||
{
|
||||
@ -45,7 +43,7 @@ namespace Nikse.SubtitleEdit.Core.AutoTranslate
|
||||
var sb = new StringBuilder();
|
||||
foreach (var line in list)
|
||||
{
|
||||
sb.Append("\"" + Json.EncodeJsonText(text) + "\", ");
|
||||
sb.Append("\"" + Json.EncodeJsonText(line) + "\", ");
|
||||
}
|
||||
|
||||
var src = sb.ToString().TrimEnd().TrimEnd(',').Trim();
|
||||
|
@ -156,6 +156,7 @@ namespace Nikse.SubtitleEdit.Core.Common
|
||||
public string AutoTranslateLastUrl { get; set; }
|
||||
public string AutoTranslateNllbApiUrl { get; set; }
|
||||
public string AutoTranslateNllbServeUrl { get; set; }
|
||||
public string AutoTranslateLibreUrl { get; set; }
|
||||
public bool TranslateAllowSplit { get; set; }
|
||||
public string TranslateLastService { get; set; }
|
||||
public string TranslateMergeStrategy { get; set; }
|
||||
@ -499,6 +500,7 @@ namespace Nikse.SubtitleEdit.Core.Common
|
||||
GoogleTranslateLastTargetLanguage = "en";
|
||||
AutoTranslateNllbApiUrl = "https://winstxnhdw-nllb-api.hf.space/api/v2/";
|
||||
AutoTranslateNllbServeUrl = "http://127.0.0.1:6060/";
|
||||
AutoTranslateLibreUrl = "https://libretranslate.com/";
|
||||
TranslateAllowSplit = true;
|
||||
TranslateViaCopyPasteAutoCopyToClipboard = true;
|
||||
TranslateViaCopyPasteMaxSize = 5000;
|
||||
@ -5084,6 +5086,12 @@ $HorzAlign = Center
|
||||
settings.Tools.AutoTranslateNllbServeUrl = subNode.InnerText;
|
||||
}
|
||||
|
||||
subNode = node.SelectSingleNode("AutoTranslateLibreUrl");
|
||||
if (subNode != null)
|
||||
{
|
||||
settings.Tools.AutoTranslateLibreUrl = subNode.InnerText;
|
||||
}
|
||||
|
||||
subNode = node.SelectSingleNode("TranslateAllowSplit");
|
||||
if (subNode != null)
|
||||
{
|
||||
@ -11342,6 +11350,7 @@ $HorzAlign = Center
|
||||
textWriter.WriteElementString("AutoTranslateLastUrl", settings.Tools.AutoTranslateLastUrl);
|
||||
textWriter.WriteElementString("AutoTranslateNllbApiUrl", settings.Tools.AutoTranslateNllbApiUrl);
|
||||
textWriter.WriteElementString("AutoTranslateNllbServeUrl", settings.Tools.AutoTranslateNllbServeUrl);
|
||||
textWriter.WriteElementString("AutoTranslateLibreUrl", settings.Tools.AutoTranslateLibreUrl);
|
||||
textWriter.WriteElementString("TranslateAllowSplit", settings.Tools.TranslateAllowSplit.ToString(CultureInfo.InvariantCulture));
|
||||
textWriter.WriteElementString("TranslateLastService", settings.Tools.TranslateLastService);
|
||||
textWriter.WriteElementString("TranslateMergeStrategy", settings.Tools.TranslateMergeStrategy);
|
||||
|
80
src/ui/Forms/Main.Designer.cs
generated
80
src/ui/Forms/Main.Designer.cs
generated
@ -40,9 +40,9 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main));
|
||||
Nikse.SubtitleEdit.Core.Common.TimeCode timeCode4 = new Nikse.SubtitleEdit.Core.Common.TimeCode();
|
||||
Nikse.SubtitleEdit.Core.Common.TimeCode timeCode5 = new Nikse.SubtitleEdit.Core.Common.TimeCode();
|
||||
Nikse.SubtitleEdit.Core.Common.TimeCode timeCode6 = new Nikse.SubtitleEdit.Core.Common.TimeCode();
|
||||
Nikse.SubtitleEdit.Core.Common.TimeCode timeCode1 = new Nikse.SubtitleEdit.Core.Common.TimeCode();
|
||||
Nikse.SubtitleEdit.Core.Common.TimeCode timeCode2 = new Nikse.SubtitleEdit.Core.Common.TimeCode();
|
||||
Nikse.SubtitleEdit.Core.Common.TimeCode timeCode3 = new Nikse.SubtitleEdit.Core.Common.TimeCode();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.labelStatus = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolStripSelected = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
@ -259,6 +259,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
this.changeSpeedInPercentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItemAutoTranslate = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.translateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.autotranslateNLLBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.autotranslateViaCopypasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator26 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mergeSentencesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
@ -578,7 +579,6 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
this.timerOriginalTextUndo = new System.Windows.Forms.Timer(this.components);
|
||||
this.contextMenuStripShowVideoControls = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.toolStripMenuItemShowVideoControls = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.autotranslateNLLBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.menuStrip1.SuspendLayout();
|
||||
@ -2517,33 +2517,40 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
// translateToolStripMenuItem
|
||||
//
|
||||
this.translateToolStripMenuItem.Name = "translateToolStripMenuItem";
|
||||
this.translateToolStripMenuItem.Size = new System.Drawing.Size(238, 22);
|
||||
this.translateToolStripMenuItem.Size = new System.Drawing.Size(282, 22);
|
||||
this.translateToolStripMenuItem.Text = "Auto-translate...";
|
||||
this.translateToolStripMenuItem.Click += new System.EventHandler(this.TranslateToolStripMenuItemClick);
|
||||
//
|
||||
// autotranslateNLLBToolStripMenuItem
|
||||
//
|
||||
this.autotranslateNLLBToolStripMenuItem.Name = "autotranslateNLLBToolStripMenuItem";
|
||||
this.autotranslateNLLBToolStripMenuItem.Size = new System.Drawing.Size(282, 22);
|
||||
this.autotranslateNLLBToolStripMenuItem.Text = "Auto-translate (NLLB/LibreTranslate)...";
|
||||
this.autotranslateNLLBToolStripMenuItem.Click += new System.EventHandler(this.autotranslateNLLBToolStripMenuItem_Click);
|
||||
//
|
||||
// autotranslateViaCopypasteToolStripMenuItem
|
||||
//
|
||||
this.autotranslateViaCopypasteToolStripMenuItem.Name = "autotranslateViaCopypasteToolStripMenuItem";
|
||||
this.autotranslateViaCopypasteToolStripMenuItem.Size = new System.Drawing.Size(238, 22);
|
||||
this.autotranslateViaCopypasteToolStripMenuItem.Size = new System.Drawing.Size(282, 22);
|
||||
this.autotranslateViaCopypasteToolStripMenuItem.Text = "Auto-translate via copy-paste...";
|
||||
this.autotranslateViaCopypasteToolStripMenuItem.Click += new System.EventHandler(this.AutotranslateViaCopypasteToolStripMenuItemClick);
|
||||
//
|
||||
// toolStripSeparator26
|
||||
//
|
||||
this.toolStripSeparator26.Name = "toolStripSeparator26";
|
||||
this.toolStripSeparator26.Size = new System.Drawing.Size(235, 6);
|
||||
this.toolStripSeparator26.Size = new System.Drawing.Size(279, 6);
|
||||
//
|
||||
// mergeSentencesToolStripMenuItem
|
||||
//
|
||||
this.mergeSentencesToolStripMenuItem.Name = "mergeSentencesToolStripMenuItem";
|
||||
this.mergeSentencesToolStripMenuItem.Size = new System.Drawing.Size(238, 22);
|
||||
this.mergeSentencesToolStripMenuItem.Size = new System.Drawing.Size(282, 22);
|
||||
this.mergeSentencesToolStripMenuItem.Text = "Merge sentences...";
|
||||
this.mergeSentencesToolStripMenuItem.Click += new System.EventHandler(this.MergeSentencesToolStripMenuItemClick);
|
||||
//
|
||||
// breaksplitLongLinesToolStripMenuItem
|
||||
//
|
||||
this.breaksplitLongLinesToolStripMenuItem.Name = "breaksplitLongLinesToolStripMenuItem";
|
||||
this.breaksplitLongLinesToolStripMenuItem.Size = new System.Drawing.Size(238, 22);
|
||||
this.breaksplitLongLinesToolStripMenuItem.Size = new System.Drawing.Size(282, 22);
|
||||
this.breaksplitLongLinesToolStripMenuItem.Text = "Break/split long lines...";
|
||||
this.breaksplitLongLinesToolStripMenuItem.Click += new System.EventHandler(this.BreaksplitLongLinesToolStripMenuItemClick);
|
||||
//
|
||||
@ -3871,14 +3878,14 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
this.timeUpDownVideoPosition.Size = new System.Drawing.Size(113, 23);
|
||||
this.timeUpDownVideoPosition.TabIndex = 12;
|
||||
this.timeUpDownVideoPosition.TabStop = false;
|
||||
timeCode4.Hours = 0;
|
||||
timeCode4.Milliseconds = 0;
|
||||
timeCode4.Minutes = 0;
|
||||
timeCode4.Seconds = 0;
|
||||
timeCode4.TimeSpan = System.TimeSpan.Parse("00:00:00");
|
||||
timeCode4.TotalMilliseconds = 0D;
|
||||
timeCode4.TotalSeconds = 0D;
|
||||
this.timeUpDownVideoPosition.TimeCode = timeCode4;
|
||||
timeCode1.Hours = 0;
|
||||
timeCode1.Milliseconds = 0;
|
||||
timeCode1.Minutes = 0;
|
||||
timeCode1.Seconds = 0;
|
||||
timeCode1.TimeSpan = System.TimeSpan.Parse("00:00:00");
|
||||
timeCode1.TotalMilliseconds = 0D;
|
||||
timeCode1.TotalSeconds = 0D;
|
||||
this.timeUpDownVideoPosition.TimeCode = timeCode1;
|
||||
this.timeUpDownVideoPosition.UseVideoOffset = false;
|
||||
//
|
||||
// buttonGotoSub
|
||||
@ -4151,14 +4158,14 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
this.timeUpDownVideoPositionAdjust.Size = new System.Drawing.Size(113, 23);
|
||||
this.timeUpDownVideoPositionAdjust.TabIndex = 13;
|
||||
this.timeUpDownVideoPositionAdjust.TabStop = false;
|
||||
timeCode5.Hours = 0;
|
||||
timeCode5.Milliseconds = 0;
|
||||
timeCode5.Minutes = 0;
|
||||
timeCode5.Seconds = 0;
|
||||
timeCode5.TimeSpan = System.TimeSpan.Parse("00:00:00");
|
||||
timeCode5.TotalMilliseconds = 0D;
|
||||
timeCode5.TotalSeconds = 0D;
|
||||
this.timeUpDownVideoPositionAdjust.TimeCode = timeCode5;
|
||||
timeCode2.Hours = 0;
|
||||
timeCode2.Milliseconds = 0;
|
||||
timeCode2.Minutes = 0;
|
||||
timeCode2.Seconds = 0;
|
||||
timeCode2.TimeSpan = System.TimeSpan.Parse("00:00:00");
|
||||
timeCode2.TotalMilliseconds = 0D;
|
||||
timeCode2.TotalSeconds = 0D;
|
||||
this.timeUpDownVideoPositionAdjust.TimeCode = timeCode2;
|
||||
this.timeUpDownVideoPositionAdjust.UseVideoOffset = false;
|
||||
//
|
||||
// buttonAdjustSetEndTime
|
||||
@ -5499,14 +5506,14 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
this.timeUpDownStartTime.Size = new System.Drawing.Size(113, 23);
|
||||
this.timeUpDownStartTime.TabIndex = 0;
|
||||
this.timeUpDownStartTime.TabStop = false;
|
||||
timeCode6.Hours = 0;
|
||||
timeCode6.Milliseconds = 0;
|
||||
timeCode6.Minutes = 0;
|
||||
timeCode6.Seconds = 0;
|
||||
timeCode6.TimeSpan = System.TimeSpan.Parse("00:00:00");
|
||||
timeCode6.TotalMilliseconds = 0D;
|
||||
timeCode6.TotalSeconds = 0D;
|
||||
this.timeUpDownStartTime.TimeCode = timeCode6;
|
||||
timeCode3.Hours = 0;
|
||||
timeCode3.Milliseconds = 0;
|
||||
timeCode3.Minutes = 0;
|
||||
timeCode3.Seconds = 0;
|
||||
timeCode3.TimeSpan = System.TimeSpan.Parse("00:00:00");
|
||||
timeCode3.TotalMilliseconds = 0D;
|
||||
timeCode3.TotalSeconds = 0D;
|
||||
this.timeUpDownStartTime.TimeCode = timeCode3;
|
||||
this.timeUpDownStartTime.UseVideoOffset = false;
|
||||
//
|
||||
// numericUpDownDuration
|
||||
@ -5859,13 +5866,6 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
this.toolStripMenuItemShowVideoControls.Text = "Show video controls";
|
||||
this.toolStripMenuItemShowVideoControls.Click += new System.EventHandler(this.ToolStripMenuItemShowVideoControlsClick);
|
||||
//
|
||||
// autotranslateNLLBToolStripMenuItem
|
||||
//
|
||||
this.autotranslateNLLBToolStripMenuItem.Name = "autotranslateNLLBToolStripMenuItem";
|
||||
this.autotranslateNLLBToolStripMenuItem.Size = new System.Drawing.Size(238, 22);
|
||||
this.autotranslateNLLBToolStripMenuItem.Text = "Auto-translate (NLLB)...";
|
||||
this.autotranslateNLLBToolStripMenuItem.Click += new System.EventHandler(this.autotranslateNLLBToolStripMenuItem_Click);
|
||||
//
|
||||
// Main
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
|
@ -687,9 +687,6 @@
|
||||
<metadata name="toolStripWaveControls.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>652, 56</value>
|
||||
</metadata>
|
||||
<metadata name="toolStripWaveControls.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>652, 56</value>
|
||||
</metadata>
|
||||
<data name="toolStripButtonWaveformZoomOut.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
@ -733,9 +730,9 @@
|
||||
<data name="toolStripButtonLockCenter.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACJSURBVEhLYxjioPT6M4aKawVQHvEApAekFyfIvv6bofx6
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACJSURBVEhLYxjioPT6M4aKawVQHvEApAekFyfIuv6bofx6
|
||||
A5RHPADpAenFCbAZXHk1ACi2nqHi6n44BokhA5INrrpiwFBx/T9Q7DxYHILPg8VAcjBAssEgNsgQdACx
|
||||
DFXdqMFgMGowlDdqMCUG0yxLgwCowEEugEAFEsWFELGAoME0K+gHP2BgAADNshj2IuGeLgAAAABJRU5E
|
||||
DFXdqMFgMGowlDdqMCUG0yxLgwCowEEugEAFEsWFELGAoME0K+gHP2BgAABTQhjW0rnwQAAAAABJRU5E
|
||||
rkJggg==
|
||||
</value>
|
||||
</data>
|
||||
@ -772,12 +769,12 @@
|
||||
<metadata name="imageListBookmarks.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>981, 56</value>
|
||||
</metadata>
|
||||
<metadata name="contextMenuStripTextBoxSourceView.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>193, 17</value>
|
||||
</metadata>
|
||||
<metadata name="contextMenuStripTextBoxListView.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>668, 17</value>
|
||||
</metadata>
|
||||
<metadata name="contextMenuStripTextBoxSourceView.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>193, 17</value>
|
||||
</metadata>
|
||||
<metadata name="contextMenuStripEmpty.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 95</value>
|
||||
</metadata>
|
||||
|
@ -57,14 +57,15 @@ namespace Nikse.SubtitleEdit.Forms.Translate
|
||||
Text = title;
|
||||
}
|
||||
|
||||
_subtitle = new Subtitle(subtitle);
|
||||
_encoding = encoding;
|
||||
|
||||
InitializeAutoTranslatorEngines();
|
||||
|
||||
nikseComboBoxUrl.UsePopupWindow = true;
|
||||
|
||||
labelPleaseWait.Visible = false;
|
||||
progressBar1.Visible = false;
|
||||
_subtitle = new Subtitle(subtitle);
|
||||
_encoding = encoding;
|
||||
|
||||
if (selectedLines != null)
|
||||
{
|
||||
@ -83,9 +84,6 @@ namespace Nikse.SubtitleEdit.Forms.Translate
|
||||
|
||||
subtitleListViewSource.Fill(_subtitle);
|
||||
AutoTranslate_Resize(null, null);
|
||||
|
||||
_autoTranslator = new NoLanguageLeftBehindApi();
|
||||
SetupLanguageSettings();
|
||||
UpdateTranslation();
|
||||
}
|
||||
|
||||
@ -95,6 +93,7 @@ namespace Nikse.SubtitleEdit.Forms.Translate
|
||||
{
|
||||
new NoLanguageLeftBehindServe(),
|
||||
new NoLanguageLeftBehindApi(),
|
||||
new LibreTranslate(),
|
||||
};
|
||||
|
||||
nikseComboBoxEngine.Items.Clear();
|
||||
@ -105,12 +104,14 @@ namespace Nikse.SubtitleEdit.Forms.Translate
|
||||
var lastEngine = _autoTranslatorEngines.FirstOrDefault(p => p.Name == Configuration.Settings.Tools.AutoTranslateLastName);
|
||||
if (lastEngine != null)
|
||||
{
|
||||
_autoTranslator = lastEngine;
|
||||
nikseComboBoxEngine.SelectedIndex = _autoTranslatorEngines.IndexOf(lastEngine);
|
||||
}
|
||||
}
|
||||
|
||||
if (nikseComboBoxEngine.SelectedIndex < 0)
|
||||
{
|
||||
_autoTranslator = _autoTranslatorEngines[0];
|
||||
nikseComboBoxEngine.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
@ -122,9 +123,9 @@ namespace Nikse.SubtitleEdit.Forms.Translate
|
||||
|
||||
private void SetAutoTranslatorEngine()
|
||||
{
|
||||
var engine = GetCurrentEngine();
|
||||
linkLabelPoweredBy.Text = string.Format(LanguageSettings.Current.GoogleTranslate.PoweredByX, engine.Name);
|
||||
var engineType = engine.GetType();
|
||||
_autoTranslator = GetCurrentEngine();
|
||||
linkLabelPoweredBy.Text = string.Format(LanguageSettings.Current.GoogleTranslate.PoweredByX, _autoTranslator.Name);
|
||||
var engineType = _autoTranslator.GetType();
|
||||
|
||||
if (engineType == typeof(NoLanguageLeftBehindServe))
|
||||
{
|
||||
@ -147,7 +148,17 @@ namespace Nikse.SubtitleEdit.Forms.Translate
|
||||
return;
|
||||
}
|
||||
|
||||
throw new Exception($"Engine {engine.Name} not handled!");
|
||||
if (engineType == typeof(LibreTranslate))
|
||||
{
|
||||
nikseComboBoxUrl.Items.Clear();
|
||||
nikseComboBoxUrl.Items.Add("http://localhost:5000/");
|
||||
nikseComboBoxUrl.SelectedIndex = 0;
|
||||
nikseComboBoxUrl.Visible = true;
|
||||
labelUrl.Visible = true;
|
||||
return;
|
||||
}
|
||||
|
||||
throw new Exception($"Engine {_autoTranslator.Name} not handled!");
|
||||
}
|
||||
|
||||
private void SetAutoTranslatorUrl(string url)
|
||||
@ -163,7 +174,13 @@ namespace Nikse.SubtitleEdit.Forms.Translate
|
||||
|
||||
if (engineType == typeof(NoLanguageLeftBehindServe))
|
||||
{
|
||||
Configuration.Settings.Tools.AutoTranslateNllbApiUrl = url;
|
||||
Configuration.Settings.Tools.AutoTranslateNllbServeUrl = url;
|
||||
return;
|
||||
}
|
||||
|
||||
if (engineType == typeof(LibreTranslate))
|
||||
{
|
||||
Configuration.Settings.Tools.AutoTranslateLibreUrl = url;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -187,11 +204,17 @@ namespace Nikse.SubtitleEdit.Forms.Translate
|
||||
var threeLetterLanguageCode = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(languageIsoCode);
|
||||
foreach (TranslationPair item in comboBox.Items)
|
||||
{
|
||||
if (item.Code.StartsWith(threeLetterLanguageCode))
|
||||
if (languageIsoCode.Length == 2 && item.Code == languageIsoCode)
|
||||
{
|
||||
comboBox.SelectedIndex = i;
|
||||
return;
|
||||
}
|
||||
else if (item.Code.StartsWith(threeLetterLanguageCode) || item.Code == languageIsoCode)
|
||||
{
|
||||
comboBox.SelectedIndex = i;
|
||||
return;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
@ -460,10 +483,20 @@ namespace Nikse.SubtitleEdit.Forms.Translate
|
||||
UiUtil.ShowHelp("#translation");
|
||||
}
|
||||
}
|
||||
else if (engineType == typeof(LibreTranslate))
|
||||
{
|
||||
var dr = MessageBox.Show($"{engine.Name} requires an API running locally!" + Environment.NewLine
|
||||
+ Environment.NewLine
|
||||
+ "Read more?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
|
||||
if (dr == DialogResult.Yes)
|
||||
{
|
||||
UiUtil.ShowHelp("#translation");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw;
|
||||
MessageBox.Show(exception.Message + Environment.NewLine + exception.StackTrace, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -749,6 +782,7 @@ namespace Nikse.SubtitleEdit.Forms.Translate
|
||||
private void nikseComboBoxEngine_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
SetAutoTranslatorEngine();
|
||||
SetupLanguageSettings();
|
||||
}
|
||||
|
||||
private void nikseComboBoxUrl_SelectedIndexChanged(object sender, EventArgs e)
|
||||
|
Loading…
Reference in New Issue
Block a user