diff --git a/libse/CultureExtensions.cs b/libse/CultureExtensions.cs
new file mode 100644
index 000000000..cf6df81b5
--- /dev/null
+++ b/libse/CultureExtensions.cs
@@ -0,0 +1,28 @@
+using System.Globalization;
+
+namespace Nikse.SubtitleEdit.Core
+{
+ public static class CultureExtensions
+ {
+ ///
+ /// Get three letter ISO code from CultureInfo object (three letter ISO code seems to be blank sometimes on Mono/Wine).
+ ///
+ /// CultureInfo object
+ /// Three letter ISO language code, if failure then string.Empty is returned.
+ public static string GetThreeLetterIsoLanguageName(this CultureInfo cultureInfo)
+ {
+ if (cultureInfo == null)
+ {
+ return string.Empty;
+ }
+
+ var cultureThreeLetterIsoLanguageName = cultureInfo.ThreeLetterISOLanguageName;
+ if (string.IsNullOrEmpty(cultureThreeLetterIsoLanguageName))
+ {
+ cultureThreeLetterIsoLanguageName = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(cultureInfo.TwoLetterISOLanguageName);
+ }
+
+ return cultureThreeLetterIsoLanguageName;
+ }
+ }
+}
diff --git a/libse/SubtitleFormats/ESubXf.cs b/libse/SubtitleFormats/ESubXf.cs
index 2181c0477..94c51d12b 100644
--- a/libse/SubtitleFormats/ESubXf.cs
+++ b/libse/SubtitleFormats/ESubXf.cs
@@ -37,7 +37,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
try
{
var ci = new CultureInfo(LanguageAutoDetect.AutoDetectGoogleLanguage(subtitle));
- threeLetterLanguage = ci.ThreeLetterISOLanguageName;
+ threeLetterLanguage = ci.GetThreeLetterIsoLanguageName();
languageDisplay = ci.EnglishName;
}
catch
diff --git a/libse/TesseractDictionary.cs b/libse/TesseractDictionary.cs
index 61e58e5ea..bfecedb19 100644
--- a/libse/TesseractDictionary.cs
+++ b/libse/TesseractDictionary.cs
@@ -174,7 +174,7 @@ namespace Nikse.SubtitleEdit.Core
try
{
- var cultureInfo = cultures.FirstOrDefault(ci => string.Equals(ci.ThreeLetterISOLanguageName, code, StringComparison.OrdinalIgnoreCase));
+ var cultureInfo = cultures.FirstOrDefault(ci => string.Equals(ci.GetThreeLetterIsoLanguageName(), code, StringComparison.OrdinalIgnoreCase));
if (cultureInfo != null)
{
code = cultureInfo.EnglishName;
diff --git a/src/Forms/FixCommonErrors.cs b/src/Forms/FixCommonErrors.cs
index 7674f6d6e..bd6bf1b22 100644
--- a/src/Forms/FixCommonErrors.cs
+++ b/src/Forms/FixCommonErrors.cs
@@ -151,7 +151,7 @@ namespace Nikse.SubtitleEdit.Forms
{
_autoDetectGoogleLanguage = language;
var ci = CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage);
- string threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
+ string threeLetterIsoLanguageName = ci.GetThreeLetterIsoLanguageName();
InitializeLanguageNames(new LanguageItem(null, "-Auto-"));
int languageIndex = 0;
@@ -217,7 +217,7 @@ namespace Nikse.SubtitleEdit.Forms
{
_autoDetectGoogleLanguage = language;
var ci = CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage);
- string threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
+ string threeLetterIsoLanguageName = ci.GetThreeLetterIsoLanguageName();
InitializeLanguageNames();
int languageIndex = 0;
int j = 0;
@@ -267,7 +267,7 @@ namespace Nikse.SubtitleEdit.Forms
}
CultureInfo ci = CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage);
- string threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
+ string threeLetterIsoLanguageName = ci.GetThreeLetterIsoLanguageName();
InitializeLanguageNames();
int languageIndex = 0;
int j = 0;
@@ -1869,7 +1869,7 @@ namespace Nikse.SubtitleEdit.Forms
if (comboBoxLanguage.SelectedItem is LanguageItem ci)
{
_autoDetectGoogleLanguage = ci.Code.TwoLetterISOLanguageName;
- AddFixActions(ci.Code.ThreeLetterISOLanguageName);
+ AddFixActions(ci.Code.GetThreeLetterIsoLanguageName());
}
}
}
@@ -1882,7 +1882,7 @@ namespace Nikse.SubtitleEdit.Forms
private void buttonResetDefault_Click(object sender, EventArgs e)
{
Configuration.Settings.CommonErrors.SetDefaultFixes();
- AddFixActions(CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage).ThreeLetterISOLanguageName);
+ AddFixActions(CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage).GetThreeLetterIsoLanguageName());
}
private void subtitleListView1_KeyDown(object sender, KeyEventArgs e)
diff --git a/src/Forms/Main.cs b/src/Forms/Main.cs
index 8442ef09d..de6e948b3 100644
--- a/src/Forms/Main.cs
+++ b/src/Forms/Main.cs
@@ -7578,7 +7578,7 @@ namespace Nikse.SubtitleEdit.Forms
{
var twoLetterLower = x.TwoLetterISOLanguageName.ToLowerInvariant();
if (!languages.Contains(twoLetterLower) &&
- !languages.Contains(x.ThreeLetterISOLanguageName.ToLowerInvariant()) &&
+ !languages.Contains(x.GetThreeLetterIsoLanguageName().ToLowerInvariant()) &&
twoLetterLower != "iv")
{
moreLanguages.Add(x);
diff --git a/src/Forms/Ocr/AddToOcrReplaceList.cs b/src/Forms/Ocr/AddToOcrReplaceList.cs
index 82abddea9..5b864eb1b 100644
--- a/src/Forms/Ocr/AddToOcrReplaceList.cs
+++ b/src/Forms/Ocr/AddToOcrReplaceList.cs
@@ -41,7 +41,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
try
{
var ci = CultureInfo.GetCultureInfo(languageString.Replace('_', '-'));
- _threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
+ _threeLetterIsoLanguageName = ci.GetThreeLetterIsoLanguageName();
}
catch (CultureNotFoundException exception)
{
diff --git a/src/Forms/Ocr/VobSubOcr.cs b/src/Forms/Ocr/VobSubOcr.cs
index a06786055..d2e455971 100644
--- a/src/Forms/Ocr/VobSubOcr.cs
+++ b/src/Forms/Ocr/VobSubOcr.cs
@@ -7013,17 +7013,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
if (!string.IsNullOrEmpty(LanguageString))
{
var ci = CultureInfo.GetCultureInfo(LanguageString.Replace("_", "-"));
- _languageId = ci.ThreeLetterISOLanguageName;
- threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
- if (string.IsNullOrEmpty(threeLetterIsoLanguageName))
- {
- var threeLetters = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(ci.TwoLetterISOLanguageName);
- if (!string.IsNullOrEmpty(threeLetters))
- {
- threeLetterIsoLanguageName = threeLetters;
- _languageId = threeLetters;
- }
- }
+ _languageId = ci.GetThreeLetterIsoLanguageName();
}
}
catch
@@ -7561,15 +7551,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
_ocrFixEngine?.Dispose();
_ocrFixEngine = null;
var ci = CultureInfo.GetCultureInfo(language.Replace("_", "-"));
- threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
- if (string.IsNullOrEmpty(threeLetterIsoLanguageName))
- {
- var threeLetters = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(ci.TwoLetterISOLanguageName);
- if (!string.IsNullOrEmpty(threeLetters))
- {
- threeLetterIsoLanguageName = threeLetters;
- }
- }
+ threeLetterIsoLanguageName = ci.GetThreeLetterIsoLanguageName();
}
catch
{
@@ -7580,15 +7562,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
{
if (string.Equals(x.TwoLetterISOLanguageName, arr[0], StringComparison.OrdinalIgnoreCase))
{
- threeLetterIsoLanguageName = x.ThreeLetterISOLanguageName;
- if (string.IsNullOrEmpty(threeLetterIsoLanguageName))
- {
- var threeLetters = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(x.TwoLetterISOLanguageName);
- if (!string.IsNullOrEmpty(threeLetters))
- {
- threeLetterIsoLanguageName = threeLetters;
- }
- }
+ threeLetterIsoLanguageName = x.GetThreeLetterIsoLanguageName();
break;
}
}
diff --git a/src/Forms/Settings.cs b/src/Forms/Settings.cs
index 073f05d3e..16ba86b02 100644
--- a/src/Forms/Settings.cs
+++ b/src/Forms/Settings.cs
@@ -1033,7 +1033,7 @@ namespace Nikse.SubtitleEdit.Forms
}
}
comboBoxRulesProfileName.EndUpdate();
- if (comboBoxRulesProfileName.SelectedIndex < 0 && comboBoxRulesProfileName.Items.Count > 0)
+ if (comboBoxRulesProfileName.SelectedIndex < 0 && comboBoxRulesProfileName.Items.Count > 0 && comboBoxRulesProfileName.Items.Count > 0)
{
comboBoxRulesProfileName.SelectedIndex = 0;
}
@@ -1493,8 +1493,8 @@ namespace Nikse.SubtitleEdit.Forms
// Neutral culture e.g: "en" for all (en-US, en-GB, en-JM...)
foreach (var culture in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
{
- string ocrFixGeneralFile = Path.Combine(dir, culture.ThreeLetterISOLanguageName + "_OCRFixReplaceList.xml");
- string ocrFixUserFile = Path.Combine(dir, culture.ThreeLetterISOLanguageName + "_OCRFixReplaceList_User.xml");
+ string ocrFixGeneralFile = Path.Combine(dir, culture.GetThreeLetterIsoLanguageName() + "_OCRFixReplaceList.xml");
+ string ocrFixUserFile = Path.Combine(dir, culture.GetThreeLetterIsoLanguageName() + "_OCRFixReplaceList_User.xml");
string namesFile = Path.Combine(dir, culture.TwoLetterISOLanguageName + "_names.xml");
if (File.Exists(ocrFixGeneralFile) || File.Exists(ocrFixUserFile) || File.Exists(namesFile))
{
@@ -1502,7 +1502,7 @@ namespace Nikse.SubtitleEdit.Forms
foreach (var ci in cultures)
{
// If culture is already added to the list, it doesn't matter if it's "culture specific" do not re-add.
- if (ci.ThreeLetterISOLanguageName.Equals(culture.ThreeLetterISOLanguageName, StringComparison.Ordinal))
+ if (ci.GetThreeLetterIsoLanguageName().Equals(culture.GetThreeLetterIsoLanguageName(), StringComparison.Ordinal))
{
alreadyInList = true;
break;
@@ -1981,7 +1981,7 @@ namespace Nikse.SubtitleEdit.Forms
return;
}
- _ocrFixReplaceList = OcrFixReplaceList.FromLanguageId(cb.CultureInfo.ThreeLetterISOLanguageName);
+ _ocrFixReplaceList = OcrFixReplaceList.FromLanguageId(cb.CultureInfo.GetThreeLetterIsoLanguageName());
if (reloadListBox)
{
listBoxOcrFixList.BeginUpdate();
@@ -3219,7 +3219,7 @@ namespace Nikse.SubtitleEdit.Forms
_rulesProfiles[idx].MergeLinesShorterThan = comboBoxMergeShortLineLength.SelectedIndex + 5;
_rulesProfiles[idx].DialogStyle = DialogSplitMerge.GetDialogStyleFromIndex(comboBoxDialogStyle.SelectedIndex);
_rulesProfiles[idx].ContinuationStyle = ContinuationUtilities.GetContinuationStyleFromIndex(comboBoxContinuationStyle.SelectedIndex);
-
+
toolTipContinuationPreview.RemoveAll();
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, ContinuationUtilities.GetContinuationStylePreview(_rulesProfiles[idx].ContinuationStyle));
}
diff --git a/src/Logic/Ocr/OcrFixEngine.cs b/src/Logic/Ocr/OcrFixEngine.cs
index 8ceaf090e..b172bbb4d 100644
--- a/src/Logic/Ocr/OcrFixEngine.cs
+++ b/src/Logic/Ocr/OcrFixEngine.cs
@@ -207,10 +207,8 @@ namespace Nikse.SubtitleEdit.Logic.Ocr
}
var ci = CultureInfo.GetCultureInfo(name);
- var threeLetterCode = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(ci.TwoLetterISOLanguageName);
- if (ci.ThreeLetterISOLanguageName == threeLetterIsoLanguageName ||
- threeLetterCode == threeLetterIsoLanguageName ||
- ci.ThreeLetterWindowsLanguageName.Equals(threeLetterIsoLanguageName, StringComparison.OrdinalIgnoreCase))
+ if (ci.GetThreeLetterIsoLanguageName() == threeLetterIsoLanguageName ||
+ ci.GetThreeLetterIsoLanguageName().Equals(threeLetterIsoLanguageName, StringComparison.OrdinalIgnoreCase))
{
dictionaryFileName = dic;
break;
@@ -248,10 +246,8 @@ namespace Nikse.SubtitleEdit.Logic.Ocr
}
var ci = CultureInfo.GetCultureInfo(name);
- var threeLetterCode = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(ci.TwoLetterISOLanguageName);
- if (ci.ThreeLetterISOLanguageName == threeLetterIsoLanguageName ||
- threeLetterCode == threeLetterIsoLanguageName ||
- ci.ThreeLetterWindowsLanguageName.Equals(threeLetterIsoLanguageName, StringComparison.OrdinalIgnoreCase))
+ if (ci.GetThreeLetterIsoLanguageName() == threeLetterIsoLanguageName ||
+ ci.GetThreeLetterIsoLanguageName().Equals(threeLetterIsoLanguageName, StringComparison.OrdinalIgnoreCase))
{
dicFileName = dic;
break;