More work on #6058

This commit is contained in:
niksedk 2022-12-06 17:50:05 +01:00
parent ac7a5aa655
commit d4df6f1f8d
3 changed files with 50 additions and 8 deletions

View File

@ -2205,7 +2205,7 @@ can edit in same subtitle file (collaboration)</Information>
<AutoBackupEveryFiveMinutes>Every 5th minute</AutoBackupEveryFiveMinutes>
<AutoBackupEveryFifteenMinutes>Every 15th minute</AutoBackupEveryFifteenMinutes>
<AutoBackupDeleteAfter>Delete after</AutoBackupDeleteAfter>
<TranslationAutoSuffix>Translation auto suffix</TranslationAutoSuffix>
<TranslationAutoSuffix>Translation file name auto suffix</TranslationAutoSuffix>
<AutoBackupDeleteAfterOneMonth>1 month</AutoBackupDeleteAfterOneMonth>
<AutoBackupDeleteAfterXMonths>{0} months</AutoBackupDeleteAfterXMonths>
<CheckForUpdates>Check for updates</CheckForUpdates>

View File

@ -4812,7 +4812,7 @@ namespace Nikse.SubtitleEdit.Forms
}
var suffix = string.Empty;
if (_subtitleOriginal != null && !string.IsNullOrEmpty(Configuration.Settings.General.TranslationAutoSuffixDefault))
if (_subtitleOriginal != null && SubtitleListview1.IsOriginalTextColumnVisible && !string.IsNullOrEmpty(Configuration.Settings.General.TranslationAutoSuffixDefault))
{
if (Configuration.Settings.General.TranslationAutoSuffixDefault.StartsWith('<'))
{
@ -4840,7 +4840,14 @@ namespace Nikse.SubtitleEdit.Forms
}
else if (!string.IsNullOrWhiteSpace(_subtitleOriginalFileName) && Configuration.Settings.General.SaveAsUseFileNameFrom.Equals("file", StringComparison.OrdinalIgnoreCase))
{
saveFileDialog1.FileName = Utilities.GetFileNameWithoutExtension(_subtitleOriginalFileName) + suffix;
var originalLanguage = LanguageAutoDetect.AutoDetectGoogleLanguage(_subtitleOriginal);
var fileNameNoExt = Utilities.GetFileNameWithoutExtension(_subtitleOriginalFileName);
if (fileNameNoExt.EndsWith("." + originalLanguage, StringComparison.OrdinalIgnoreCase))
{
fileNameNoExt = fileNameNoExt.Substring(0, fileNameNoExt.Length - ("." + originalLanguage).Length);
}
saveFileDialog1.FileName = fileNameNoExt + suffix;
saveFileDialog1.InitialDirectory = Path.GetDirectoryName(_subtitleOriginalFileName);
}
else if (!string.IsNullOrEmpty(_videoFileName) && Configuration.Settings.General.SaveAsUseFileNameFrom.Equals("video", StringComparison.OrdinalIgnoreCase))
@ -4866,6 +4873,18 @@ namespace Nikse.SubtitleEdit.Forms
saveFileDialog1.FileName = Utilities.GetFileNameWithoutExtension(_videoFileName);
saveFileDialog1.InitialDirectory = Path.GetDirectoryName(_videoFileName);
}
else if (!string.IsNullOrWhiteSpace(_subtitleOriginalFileName))
{
var originalLanguage = LanguageAutoDetect.AutoDetectGoogleLanguage(_subtitleOriginal);
var fileNameNoExt = Utilities.GetFileNameWithoutExtension(_subtitleOriginalFileName);
if (fileNameNoExt.EndsWith("." + originalLanguage, StringComparison.OrdinalIgnoreCase))
{
fileNameNoExt = fileNameNoExt.Substring(0, fileNameNoExt.Length - ("." + originalLanguage).Length);
}
saveFileDialog1.FileName = fileNameNoExt + suffix;
saveFileDialog1.InitialDirectory = Path.GetDirectoryName(_subtitleOriginalFileName);
}
else
{
saveFileDialog1.FileName = string.Empty;

View File

@ -7,6 +7,7 @@ using Nikse.SubtitleEdit.Core.Translate.Service;
using Nikse.SubtitleEdit.Logic;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net.NetworkInformation;
@ -219,10 +220,14 @@ namespace Nikse.SubtitleEdit.Forms.Translate
public static string EvaluateDefaultTargetLanguageCode(string defaultSourceLanguage)
{
var installedLanguages = new List<InputLanguage>();
var installedLanguages = new List<string>();
foreach (InputLanguage language in InputLanguage.InstalledInputLanguages)
{
installedLanguages.Add(language);
var iso639 = Iso639Dash2LanguageCode.GetTwoLetterCodeFromEnglishName(language.LayoutName);
if (!string.IsNullOrEmpty(iso639) && !installedLanguages.Contains(iso639))
{
installedLanguages.Add(iso639.ToLowerInvariant());
}
}
var uiCultureTargetLanguage = Configuration.Settings.Tools.GoogleTranslateLastTargetLanguage;
@ -234,7 +239,7 @@ namespace Nikse.SubtitleEdit.Forms.Translate
if (temp.Length > 4)
{
temp = temp.Substring(temp.Length - 5, 2).ToLowerInvariant();
if (temp != defaultSourceLanguage && installedLanguages.Any(p => p.Culture.TwoLetterISOLanguageName.Contains(temp)))
if (temp != defaultSourceLanguage && installedLanguages.Any(p => p.Contains(temp)))
{
uiCultureTargetLanguage = temp;
break;
@ -247,14 +252,32 @@ namespace Nikse.SubtitleEdit.Forms.Translate
{
foreach (var language in installedLanguages)
{
if (language.Culture.TwoLetterISOLanguageName != defaultSourceLanguage)
if (language != defaultSourceLanguage)
{
uiCultureTargetLanguage = language.Culture.TwoLetterISOLanguageName;
uiCultureTargetLanguage = language;
break;
}
}
}
if (uiCultureTargetLanguage == defaultSourceLanguage)
{
var name = CultureInfo.CurrentCulture.Name;
if (name.Length > 2)
{
name = name.Remove(0, name.Length - 2);
}
var iso = IsoCountryCodes.ThreeToTwoLetterLookup.FirstOrDefault(p => p.Value == name);
if (!iso.Equals(default(KeyValuePair<string, string>)))
{
var iso639 = Iso639Dash2LanguageCode.GetTwoLetterCodeFromThreeLetterCode(iso.Key);
if (!string.IsNullOrEmpty(iso639))
{
uiCultureTargetLanguage = iso639;
}
}
}
// Set target language to something different than source language
if (uiCultureTargetLanguage == defaultSourceLanguage && defaultSourceLanguage == "en")
{