mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 14:32:35 +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
|
||||
{
|
||||
var ci = new CultureInfo(LanguageAutoDetect.AutoDetectGoogleLanguage(subtitle));
|
||||
threeLetterLanguage = ci.ThreeLetterISOLanguageName;
|
||||
threeLetterLanguage = ci.GetThreeLetterIsoLanguageName();
|
||||
languageDisplay = ci.EnglishName;
|
||||
}
|
||||
catch
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user