mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 22:42:38 +01:00
Encapsulate "CultureInfo.ThreeLetterISOLanguageName"
(fix problems with Mono/Wine)
This commit is contained in:
parent
9e96ad4434
commit
3153326be6
28
libse/CultureExtensions.cs
Normal file
28
libse/CultureExtensions.cs
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
namespace Nikse.SubtitleEdit.Core
|
||||||
|
{
|
||||||
|
public static class CultureExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Get three letter ISO code from CultureInfo object (three letter ISO code seems to be blank sometimes on Mono/Wine).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cultureInfo">CultureInfo object</param>
|
||||||
|
/// <returns>Three letter ISO language code, if failure then string.Empty is returned.</returns>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -37,7 +37,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var ci = new CultureInfo(LanguageAutoDetect.AutoDetectGoogleLanguage(subtitle));
|
var ci = new CultureInfo(LanguageAutoDetect.AutoDetectGoogleLanguage(subtitle));
|
||||||
threeLetterLanguage = ci.ThreeLetterISOLanguageName;
|
threeLetterLanguage = ci.GetThreeLetterIsoLanguageName();
|
||||||
languageDisplay = ci.EnglishName;
|
languageDisplay = ci.EnglishName;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
@ -174,7 +174,7 @@ namespace Nikse.SubtitleEdit.Core
|
|||||||
|
|
||||||
try
|
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)
|
if (cultureInfo != null)
|
||||||
{
|
{
|
||||||
code = cultureInfo.EnglishName;
|
code = cultureInfo.EnglishName;
|
||||||
|
@ -151,7 +151,7 @@ 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.GetThreeLetterIsoLanguageName();
|
||||||
|
|
||||||
InitializeLanguageNames(new LanguageItem(null, "-Auto-"));
|
InitializeLanguageNames(new LanguageItem(null, "-Auto-"));
|
||||||
int languageIndex = 0;
|
int languageIndex = 0;
|
||||||
@ -217,7 +217,7 @@ 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.GetThreeLetterIsoLanguageName();
|
||||||
InitializeLanguageNames();
|
InitializeLanguageNames();
|
||||||
int languageIndex = 0;
|
int languageIndex = 0;
|
||||||
int j = 0;
|
int j = 0;
|
||||||
@ -267,7 +267,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
}
|
}
|
||||||
|
|
||||||
CultureInfo ci = CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage);
|
CultureInfo ci = CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage);
|
||||||
string threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
|
string threeLetterIsoLanguageName = ci.GetThreeLetterIsoLanguageName();
|
||||||
InitializeLanguageNames();
|
InitializeLanguageNames();
|
||||||
int languageIndex = 0;
|
int languageIndex = 0;
|
||||||
int j = 0;
|
int j = 0;
|
||||||
@ -1869,7 +1869,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
if (comboBoxLanguage.SelectedItem is LanguageItem ci)
|
if (comboBoxLanguage.SelectedItem is LanguageItem ci)
|
||||||
{
|
{
|
||||||
_autoDetectGoogleLanguage = ci.Code.TwoLetterISOLanguageName;
|
_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)
|
private void buttonResetDefault_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Configuration.Settings.CommonErrors.SetDefaultFixes();
|
Configuration.Settings.CommonErrors.SetDefaultFixes();
|
||||||
AddFixActions(CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage).ThreeLetterISOLanguageName);
|
AddFixActions(CultureInfo.GetCultureInfo(_autoDetectGoogleLanguage).GetThreeLetterIsoLanguageName());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void subtitleListView1_KeyDown(object sender, KeyEventArgs e)
|
private void subtitleListView1_KeyDown(object sender, KeyEventArgs e)
|
||||||
|
@ -7578,7 +7578,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
{
|
{
|
||||||
var twoLetterLower = x.TwoLetterISOLanguageName.ToLowerInvariant();
|
var twoLetterLower = x.TwoLetterISOLanguageName.ToLowerInvariant();
|
||||||
if (!languages.Contains(twoLetterLower) &&
|
if (!languages.Contains(twoLetterLower) &&
|
||||||
!languages.Contains(x.ThreeLetterISOLanguageName.ToLowerInvariant()) &&
|
!languages.Contains(x.GetThreeLetterIsoLanguageName().ToLowerInvariant()) &&
|
||||||
twoLetterLower != "iv")
|
twoLetterLower != "iv")
|
||||||
{
|
{
|
||||||
moreLanguages.Add(x);
|
moreLanguages.Add(x);
|
||||||
|
@ -41,7 +41,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var ci = CultureInfo.GetCultureInfo(languageString.Replace('_', '-'));
|
var ci = CultureInfo.GetCultureInfo(languageString.Replace('_', '-'));
|
||||||
_threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
|
_threeLetterIsoLanguageName = ci.GetThreeLetterIsoLanguageName();
|
||||||
}
|
}
|
||||||
catch (CultureNotFoundException exception)
|
catch (CultureNotFoundException exception)
|
||||||
{
|
{
|
||||||
|
@ -7013,17 +7013,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
|||||||
if (!string.IsNullOrEmpty(LanguageString))
|
if (!string.IsNullOrEmpty(LanguageString))
|
||||||
{
|
{
|
||||||
var ci = CultureInfo.GetCultureInfo(LanguageString.Replace("_", "-"));
|
var ci = CultureInfo.GetCultureInfo(LanguageString.Replace("_", "-"));
|
||||||
_languageId = ci.ThreeLetterISOLanguageName;
|
_languageId = ci.GetThreeLetterIsoLanguageName();
|
||||||
threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
|
|
||||||
if (string.IsNullOrEmpty(threeLetterIsoLanguageName))
|
|
||||||
{
|
|
||||||
var threeLetters = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(ci.TwoLetterISOLanguageName);
|
|
||||||
if (!string.IsNullOrEmpty(threeLetters))
|
|
||||||
{
|
|
||||||
threeLetterIsoLanguageName = threeLetters;
|
|
||||||
_languageId = threeLetters;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
@ -7561,15 +7551,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
|||||||
_ocrFixEngine?.Dispose();
|
_ocrFixEngine?.Dispose();
|
||||||
_ocrFixEngine = null;
|
_ocrFixEngine = null;
|
||||||
var ci = CultureInfo.GetCultureInfo(language.Replace("_", "-"));
|
var ci = CultureInfo.GetCultureInfo(language.Replace("_", "-"));
|
||||||
threeLetterIsoLanguageName = ci.ThreeLetterISOLanguageName;
|
threeLetterIsoLanguageName = ci.GetThreeLetterIsoLanguageName();
|
||||||
if (string.IsNullOrEmpty(threeLetterIsoLanguageName))
|
|
||||||
{
|
|
||||||
var threeLetters = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(ci.TwoLetterISOLanguageName);
|
|
||||||
if (!string.IsNullOrEmpty(threeLetters))
|
|
||||||
{
|
|
||||||
threeLetterIsoLanguageName = threeLetters;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
@ -7580,15 +7562,7 @@ namespace Nikse.SubtitleEdit.Forms.Ocr
|
|||||||
{
|
{
|
||||||
if (string.Equals(x.TwoLetterISOLanguageName, arr[0], StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(x.TwoLetterISOLanguageName, arr[0], StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
threeLetterIsoLanguageName = x.ThreeLetterISOLanguageName;
|
threeLetterIsoLanguageName = x.GetThreeLetterIsoLanguageName();
|
||||||
if (string.IsNullOrEmpty(threeLetterIsoLanguageName))
|
|
||||||
{
|
|
||||||
var threeLetters = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(x.TwoLetterISOLanguageName);
|
|
||||||
if (!string.IsNullOrEmpty(threeLetters))
|
|
||||||
{
|
|
||||||
threeLetterIsoLanguageName = threeLetters;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1033,7 +1033,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
comboBoxRulesProfileName.EndUpdate();
|
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;
|
comboBoxRulesProfileName.SelectedIndex = 0;
|
||||||
}
|
}
|
||||||
@ -1493,8 +1493,8 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
// Neutral culture e.g: "en" for all (en-US, en-GB, en-JM...)
|
// Neutral culture e.g: "en" for all (en-US, en-GB, en-JM...)
|
||||||
foreach (var culture in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
|
foreach (var culture in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
|
||||||
{
|
{
|
||||||
string ocrFixGeneralFile = Path.Combine(dir, culture.ThreeLetterISOLanguageName + "_OCRFixReplaceList.xml");
|
string ocrFixGeneralFile = Path.Combine(dir, culture.GetThreeLetterIsoLanguageName() + "_OCRFixReplaceList.xml");
|
||||||
string ocrFixUserFile = Path.Combine(dir, culture.ThreeLetterISOLanguageName + "_OCRFixReplaceList_User.xml");
|
string ocrFixUserFile = Path.Combine(dir, culture.GetThreeLetterIsoLanguageName() + "_OCRFixReplaceList_User.xml");
|
||||||
string namesFile = Path.Combine(dir, culture.TwoLetterISOLanguageName + "_names.xml");
|
string namesFile = Path.Combine(dir, culture.TwoLetterISOLanguageName + "_names.xml");
|
||||||
if (File.Exists(ocrFixGeneralFile) || File.Exists(ocrFixUserFile) || File.Exists(namesFile))
|
if (File.Exists(ocrFixGeneralFile) || File.Exists(ocrFixUserFile) || File.Exists(namesFile))
|
||||||
{
|
{
|
||||||
@ -1502,7 +1502,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
foreach (var ci in cultures)
|
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 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;
|
alreadyInList = true;
|
||||||
break;
|
break;
|
||||||
@ -1981,7 +1981,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_ocrFixReplaceList = OcrFixReplaceList.FromLanguageId(cb.CultureInfo.ThreeLetterISOLanguageName);
|
_ocrFixReplaceList = OcrFixReplaceList.FromLanguageId(cb.CultureInfo.GetThreeLetterIsoLanguageName());
|
||||||
if (reloadListBox)
|
if (reloadListBox)
|
||||||
{
|
{
|
||||||
listBoxOcrFixList.BeginUpdate();
|
listBoxOcrFixList.BeginUpdate();
|
||||||
@ -3219,7 +3219,7 @@ namespace Nikse.SubtitleEdit.Forms
|
|||||||
_rulesProfiles[idx].MergeLinesShorterThan = comboBoxMergeShortLineLength.SelectedIndex + 5;
|
_rulesProfiles[idx].MergeLinesShorterThan = comboBoxMergeShortLineLength.SelectedIndex + 5;
|
||||||
_rulesProfiles[idx].DialogStyle = DialogSplitMerge.GetDialogStyleFromIndex(comboBoxDialogStyle.SelectedIndex);
|
_rulesProfiles[idx].DialogStyle = DialogSplitMerge.GetDialogStyleFromIndex(comboBoxDialogStyle.SelectedIndex);
|
||||||
_rulesProfiles[idx].ContinuationStyle = ContinuationUtilities.GetContinuationStyleFromIndex(comboBoxContinuationStyle.SelectedIndex);
|
_rulesProfiles[idx].ContinuationStyle = ContinuationUtilities.GetContinuationStyleFromIndex(comboBoxContinuationStyle.SelectedIndex);
|
||||||
|
|
||||||
toolTipContinuationPreview.RemoveAll();
|
toolTipContinuationPreview.RemoveAll();
|
||||||
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, ContinuationUtilities.GetContinuationStylePreview(_rulesProfiles[idx].ContinuationStyle));
|
toolTipContinuationPreview.SetToolTip(comboBoxContinuationStyle, ContinuationUtilities.GetContinuationStylePreview(_rulesProfiles[idx].ContinuationStyle));
|
||||||
}
|
}
|
||||||
|
@ -207,10 +207,8 @@ namespace Nikse.SubtitleEdit.Logic.Ocr
|
|||||||
}
|
}
|
||||||
|
|
||||||
var ci = CultureInfo.GetCultureInfo(name);
|
var ci = CultureInfo.GetCultureInfo(name);
|
||||||
var threeLetterCode = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(ci.TwoLetterISOLanguageName);
|
if (ci.GetThreeLetterIsoLanguageName() == threeLetterIsoLanguageName ||
|
||||||
if (ci.ThreeLetterISOLanguageName == threeLetterIsoLanguageName ||
|
ci.GetThreeLetterIsoLanguageName().Equals(threeLetterIsoLanguageName, StringComparison.OrdinalIgnoreCase))
|
||||||
threeLetterCode == threeLetterIsoLanguageName ||
|
|
||||||
ci.ThreeLetterWindowsLanguageName.Equals(threeLetterIsoLanguageName, StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
{
|
||||||
dictionaryFileName = dic;
|
dictionaryFileName = dic;
|
||||||
break;
|
break;
|
||||||
@ -248,10 +246,8 @@ namespace Nikse.SubtitleEdit.Logic.Ocr
|
|||||||
}
|
}
|
||||||
|
|
||||||
var ci = CultureInfo.GetCultureInfo(name);
|
var ci = CultureInfo.GetCultureInfo(name);
|
||||||
var threeLetterCode = Iso639Dash2LanguageCode.GetThreeLetterCodeFromTwoLetterCode(ci.TwoLetterISOLanguageName);
|
if (ci.GetThreeLetterIsoLanguageName() == threeLetterIsoLanguageName ||
|
||||||
if (ci.ThreeLetterISOLanguageName == threeLetterIsoLanguageName ||
|
ci.GetThreeLetterIsoLanguageName().Equals(threeLetterIsoLanguageName, StringComparison.OrdinalIgnoreCase))
|
||||||
threeLetterCode == threeLetterIsoLanguageName ||
|
|
||||||
ci.ThreeLetterWindowsLanguageName.Equals(threeLetterIsoLanguageName, StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
{
|
||||||
dicFileName = dic;
|
dicFileName = dic;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user