From bb1a497d3e72e7a57cb2814ffcf84eb96fe74cf5 Mon Sep 17 00:00:00 2001 From: niksedk Date: Thu, 3 Mar 2011 19:27:24 +0000 Subject: [PATCH] 3.1 Final... perhaps ;) git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@358 99eadd0c-20b8-1223-b5c4-2a2b2df33de2 --- src/ChangeLog.txt | 4 +- src/Controls/SubtitleListView.cs | 2 +- src/Forms/Compare.cs | 4 +- src/Forms/Main.Designer.cs | 2 +- src/Forms/Main.cs | 161 +++- src/Forms/Main.resx | 2 +- src/Forms/OCRSpellCheck.cs | 29 +- src/Forms/VobSubOcr.cs | 2 +- src/Logic/Utilities.cs | 5 +- src/Resources/fa-IR.xml | 1426 ++++++++++-------------------- 10 files changed, 678 insertions(+), 959 deletions(-) diff --git a/src/ChangeLog.txt b/src/ChangeLog.txt index 6d2a21434..3c0c8a894 100644 --- a/src/ChangeLog.txt +++ b/src/ChangeLog.txt @@ -1,6 +1,6 @@ Subtitle Edit Changelog -3.1 (Not released yet) +3.1 (3rd March 2011) * NEW: * Collaboration via the internet ("Networking", also has chat) * Auto-backup (never, every minute, every 5th minute, or every 15th minute - thx swedelandster) @@ -21,7 +21,7 @@ Subtitle Edit Changelog * Auto-wrap text while typing (option, thx swedelandster) * Video menu will now have a "Choose audio track" if more than one audio track exists (only when using VLC as video player) - * Bulgarian translation + * Bulgarian translation (thx Ivo Ivanov) * IMPROVED: * Main window: Video player will now automatically move up beside subtitle if waveform is displayed + some resizing of controls allowed via splitters diff --git a/src/Controls/SubtitleListView.cs b/src/Controls/SubtitleListView.cs index c2d6cdf9a..939c9f7f1 100644 --- a/src/Controls/SubtitleListView.cs +++ b/src/Controls/SubtitleListView.cs @@ -53,7 +53,7 @@ namespace Nikse.SubtitleEdit.Controls { Graphics graphics = parentForm.CreateGraphics(); SizeF timestampSizeF = graphics.MeasureString("00:00:33,527", Font); - int timeStampWidth = (int)(timestampSizeF.Width + 0.5) + 10; + int timeStampWidth = (int)(timestampSizeF.Width + 0.5) + 11; Columns[ColumnIndexStart].Width = timeStampWidth; Columns[ColumnIndexEnd].Width = timeStampWidth; diff --git a/src/Forms/Compare.cs b/src/Forms/Compare.cs index 4b81b8eae..129b671b2 100644 --- a/src/Forms/Compare.cs +++ b/src/Forms/Compare.cs @@ -70,7 +70,7 @@ namespace Nikse.SubtitleEdit.Forms } } - openFileDialog1.Filter = Utilities.GetOpenDialogFiler(); + openFileDialog1.Filter = Utilities.GetOpenDialogFilter(); } public void Initialize(Subtitle subtitle1, string subtitleFileName1, Subtitle subtitle2, string subtitleFileName2) @@ -87,7 +87,7 @@ namespace Nikse.SubtitleEdit.Forms if (string.IsNullOrEmpty(subtitleFileName1)) openFileDialog1.InitialDirectory = Path.GetDirectoryName(subtitleFileName1); - openFileDialog1.Filter = Utilities.GetOpenDialogFiler(); + openFileDialog1.Filter = Utilities.GetOpenDialogFilter(); } diff --git a/src/Forms/Main.Designer.cs b/src/Forms/Main.Designer.cs index bc164cdd8..af5f58250 100644 --- a/src/Forms/Main.Designer.cs +++ b/src/Forms/Main.Designer.cs @@ -2819,7 +2819,7 @@ this.toolStripSeparator11, this.toolStripMenuItemWaveFormPlaySelection}); this.contextMenuStripWaveForm.Name = "contextMenuStripWaveForm"; - this.contextMenuStripWaveForm.Size = new System.Drawing.Size(183, 142); + this.contextMenuStripWaveForm.Size = new System.Drawing.Size(183, 164); // // addParagraphHereToolStripMenuItem // diff --git a/src/Forms/Main.cs b/src/Forms/Main.cs index 4340f0385..28f2bab86 100644 --- a/src/Forms/Main.cs +++ b/src/Forms/Main.cs @@ -984,7 +984,7 @@ namespace Nikse.SubtitleEdit.Forms { openFileDialog1.Title = _languageGeneral.OpenSubtitle; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetOpenDialogFiler(); + openFileDialog1.Filter = Utilities.GetOpenDialogFilter(); if (openFileDialog1.ShowDialog(this) == DialogResult.OK) // sometimes crashes... why?? { OpenSubtitle(openFileDialog1.FileName, null); @@ -1028,6 +1028,12 @@ namespace Nikse.SubtitleEdit.Forms return; } + if (Path.GetExtension(fileName).ToLower() == ".sup" && IsBluRaySupFile(fileName)) + { + ImportAndOcrBluRaySup(fileName); + return; + } + var fi = new FileInfo(fileName); if (fi.Length > 1024 * 1024 * 10) // max 10 mb { @@ -1601,9 +1607,7 @@ namespace Nikse.SubtitleEdit.Forms else { _subtitle.MakeHistoryForUndo(string.Format(_language.BeforeConvertingToX, GetCurrentSubtitleFormat().FriendlyName), _oldSubtitleFormat, _fileDateTime); - _oldSubtitleFormat.RemoveNativeFormatting(_subtitle); - SaveSubtitleListviewIndexes(); SubtitleListview1.Fill(_subtitle, _subtitleAlternate); RestoreSubtitleListviewIndexes(); @@ -2718,7 +2722,7 @@ namespace Nikse.SubtitleEdit.Forms { openFileDialog1.Title = _language.OpenSubtitleToAppend; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetOpenDialogFiler(); + openFileDialog1.Filter = Utilities.GetOpenDialogFilter(); if (openFileDialog1.ShowDialog(this) == DialogResult.OK) { bool success = false; @@ -4382,6 +4386,7 @@ namespace Nikse.SubtitleEdit.Forms } } + private void ButtonUnBreakClick(object sender, EventArgs e) { textBoxListViewText.Text = Utilities.UnbreakLine(textBoxListViewText.Text); @@ -4665,7 +4670,7 @@ namespace Nikse.SubtitleEdit.Forms if (matroskaSubtitleInfo.CodecId.ToUpper() == "S_HDMV/PGS") { MessageBox.Show("Blu-ray subtitles inside Matroska not supported - sorry!"); - LoadBluRaySubFromMatroska(matroskaSubtitleInfo, fileName); + //LoadBluRaySubFromMatroska(matroskaSubtitleInfo, fileName); return; } else if (matroskaSubtitleInfo.CodecPrivate.ToLower().Contains("[script info]")) @@ -5033,7 +5038,7 @@ namespace Nikse.SubtitleEdit.Forms ReloadFromSourceView(); openFileDialog1.Title = _language.OpenAnsiSubtitle; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetOpenDialogFiler(); + openFileDialog1.Filter = Utilities.GetOpenDialogFilter(); if (openFileDialog1.ShowDialog(this) == DialogResult.OK) { var chooseEncoding = new ChooseEncoding(); @@ -5212,6 +5217,15 @@ namespace Nikse.SubtitleEdit.Forms return false; } + private bool IsBluRaySupFile(string subFileName) + { + var buffer = new byte[4]; + var fs = new FileStream(subFileName, FileMode.Open, FileAccess.Read, FileShare.Read) {Position = 0}; + fs.Read(buffer, 0, 4); + fs.Close(); + return (buffer[0] == 0x50 && buffer[1] == 0x47); // 80 + 71 - P G + } + private void ImportAndOcrVobSubSubtitleNew(string fileName) { if (IsVobSubFile(fileName, true)) @@ -6304,7 +6318,7 @@ namespace Nikse.SubtitleEdit.Forms openFileDialog1.Title = _languageGeneral.OpenSubtitle; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetOpenDialogFiler(); + openFileDialog1.Filter = Utilities.GetOpenDialogFilter(); if (openFileDialog1.ShowDialog(this) == DialogResult.OK) { Encoding encoding = null; @@ -6384,7 +6398,7 @@ namespace Nikse.SubtitleEdit.Forms SaveSubtitleListviewIndexes(); openFileDialog1.Title = Configuration.Settings.Language.General.OpenOriginalSubtitleFile; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetOpenDialogFiler(); + openFileDialog1.Filter = Utilities.GetOpenDialogFilter(); if (!(openFileDialog1.ShowDialog(this) == DialogResult.OK)) return; @@ -7591,6 +7605,134 @@ namespace Nikse.SubtitleEdit.Forms toolStripMenuItemAdjustAllTimes.ShortcutKeys = GetKeys(Configuration.Settings.Shortcuts.MainSynchronizationAdjustTimes); italicToolStripMenuItem.ShortcutKeys = GetKeys(Configuration.Settings.Shortcuts.MainListViewItalic); italicToolStripMenuItem1.ShortcutKeys = GetKeys(Configuration.Settings.Shortcuts.MainTextBoxItalic); + + LoadPlugins(); + } + + //testing PLUGINS! + private void LoadPlugins() + { + string path = Path.Combine(Configuration.BaseDirectory, "Plugins"); + if (!Directory.Exists(path)) + return; + string[] pluginFiles = Directory.GetFiles(path, "*.DLL"); + + int filePluginCount = 0; + int toolsPluginCount = 0; + int syncPluginCount = 0; + foreach (string pluginFileName in pluginFiles) + { + Type pluginType = null; + System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFile(pluginFileName); + string objectName = Path.GetFileNameWithoutExtension(pluginFileName); + if (assembly != null) + { + try + { + pluginType = assembly.GetType("SubtitleEdit." + objectName); + object pluginObject = Activator.CreateInstance(pluginType); + System.Reflection.PropertyInfo pi = pluginType.GetProperty("Name"); + string name = (string)pi.GetValue(pluginObject, null); + pi = pluginType.GetProperty("Version"); + string version = (string)pi.GetValue(pluginObject, null); + pi = pluginType.GetProperty("ActionType"); + string actionType = (string)pi.GetValue(pluginObject, null); + System.Reflection.MethodInfo mi = pluginType.GetMethod("DoAction"); + + if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(version) && !string.IsNullOrEmpty(actionType) && mi != null) + { + ToolStripMenuItem item = new ToolStripMenuItem(); + item.Name = "Plugin" + toolsPluginCount.ToString(); + item.Text = name; + item.Tag = pluginFileName; + + pi = pluginType.GetProperty("ShortCut"); + if (pi != null) + item.ShortcutKeys = GetKeys((string)pi.GetValue(pluginObject, null)); + + if (string.Compare(actionType, "File", true) == 0) + { + if (filePluginCount == 0) + fileToolStripMenuItem.DropDownItems.Insert(fileToolStripMenuItem.DropDownItems.Count - 2, new ToolStripSeparator()); + item.Click += PluginToolClick; + fileToolStripMenuItem.DropDownItems.Insert(fileToolStripMenuItem.DropDownItems.Count - 2, item); + filePluginCount++; + } + else if (string.Compare(actionType, "Tool", true) == 0) + { + if (toolsPluginCount == 0) + toolsToolStripMenuItem.DropDownItems.Add(new ToolStripSeparator()); + item.Click += PluginToolClick; + toolsToolStripMenuItem.DropDownItems.Add(item); + toolsPluginCount++; + } + else if (string.Compare(actionType, "Sync", true) == 0) + { + if (syncPluginCount == 0) + toolStripMenuItemSyncronization.DropDownItems.Add(new ToolStripSeparator()); + item.Click += PluginToolClick; + toolStripMenuItemSyncronization.DropDownItems.Add(item); + syncPluginCount++; + } + } + + } + catch (Exception exception) + { + MessageBox.Show("Error loading plugin:" + pluginFileName + ": " + exception.Message); + } + finally + { + assembly = null; + } + } + } + } + + void PluginToolClick(object sender, EventArgs e) + { + try + { + ToolStripItem item = (ToolStripItem) sender; + Type pluginType = null; + System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFile(item.Tag.ToString()); + if (assembly != null) + { + string objectName = Path.GetFileNameWithoutExtension(item.Tag.ToString()); + pluginType = assembly.GetType("SubtitleEdit." + objectName); + object pluginObject = Activator.CreateInstance(pluginType); + System.Reflection.MethodInfo mi = pluginType.GetMethod("DoAction"); + + System.Reflection.PropertyInfo pi = pluginType.GetProperty("Name"); + string name = (string)pi.GetValue(pluginObject, null); + pi = pluginType.GetProperty("Version"); + string version = (string)pi.GetValue(pluginObject, null); + + + Subtitle temp = new Subtitle(_subtitle); + string text = temp.ToText(new SubRip()); + string pluginResult = (string)mi.Invoke(pluginObject, new object[] { this, text, 25.0, _fileName, "", "" }); + + if (!string.IsNullOrEmpty(pluginResult) && pluginResult.Length > 10 && text != pluginResult) + { + _subtitle.MakeHistoryForUndo(string.Format("Before running plugin: {0} {1}", name, version), GetCurrentSubtitleFormat(), _fileDateTime); + string[] lineArray = pluginResult.Split(Environment.NewLine.ToCharArray()); + List lines = new List(); + foreach (string line in lineArray) + lines.Add(line); + new SubRip().LoadSubtitle(_subtitle, lines, _fileName); + SaveSubtitleListviewIndexes(); + SubtitleListview1.Fill(_subtitle, _subtitleAlternate); + RestoreSubtitleListviewIndexes(); + ShowSource(); + _change = true; + } + } + } + catch (Exception exception) + { + MessageBox.Show(exception.Message); + } } private Keys GetKeys(string keysInString) @@ -7811,6 +7953,7 @@ namespace Nikse.SubtitleEdit.Forms newParagraph.CalculateTimeCodesFromFrameNumbers(CurrentFrameRate); } _subtitle.Paragraphs.Insert(index, newParagraph); + _change = true; _subtitleListViewIndex = -1; _subtitle.Renumber(startNumber); @@ -8908,7 +9051,7 @@ namespace Nikse.SubtitleEdit.Forms { openFileDialog1.Title = _languageGeneral.OpenSubtitle; openFileDialog1.FileName = string.Empty; - openFileDialog1.Filter = Utilities.GetOpenDialogFiler(); + openFileDialog1.Filter = Utilities.GetOpenDialogFilter(); if (openFileDialog1.ShowDialog(this) == DialogResult.OK) { if (!File.Exists(openFileDialog1.FileName)) diff --git a/src/Forms/Main.resx b/src/Forms/Main.resx index 0537d06ca..262dcd0fc 100644 --- a/src/Forms/Main.resx +++ b/src/Forms/Main.resx @@ -684,7 +684,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD2 - CAAAAk1TRnQBSQFMAgEBAgEAAVgBAwFYAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAaABAwGgAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/src/Forms/OCRSpellCheck.cs b/src/Forms/OCRSpellCheck.cs index cf546c53a..271599474 100644 --- a/src/Forms/OCRSpellCheck.cs +++ b/src/Forms/OCRSpellCheck.cs @@ -92,6 +92,13 @@ namespace Nikse.SubtitleEdit.Forms private static void HighLightWord(RichTextBox richTextBoxParagraph, string word) { + bool startApos = false; + if (word.StartsWith("'") && word.Length > 1) + { + startApos = true; + word = word.Substring(1); + } + Regex regex = Utilities.MakeWordSearchRegex(word); Match match = regex.Match(richTextBoxParagraph.Text); if (!match.Success) @@ -99,14 +106,28 @@ namespace Nikse.SubtitleEdit.Forms regex = Utilities.MakeWordSearchRegexWithNumbers(word); match = regex.Match(richTextBoxParagraph.Text); } + while (match.Success) { - richTextBoxParagraph.SelectionStart = match.Index+1; - richTextBoxParagraph.SelectionLength = match.Length; - while (richTextBoxParagraph.SelectedText != match.Value && richTextBoxParagraph.SelectionStart > 0) + if (startApos) { - richTextBoxParagraph.SelectionStart = richTextBoxParagraph.SelectionStart - 1; + richTextBoxParagraph.SelectionStart = match.Index-1; + richTextBoxParagraph.SelectionLength = match.Length+1; + while (richTextBoxParagraph.SelectedText != "'" + match.Value && richTextBoxParagraph.SelectionStart > 0) + { + richTextBoxParagraph.SelectionStart = richTextBoxParagraph.SelectionStart - 1; + richTextBoxParagraph.SelectionLength = match.Length+1; + } + } + else + { + richTextBoxParagraph.SelectionStart = match.Index + 1; richTextBoxParagraph.SelectionLength = match.Length; + while (richTextBoxParagraph.SelectedText != match.Value && richTextBoxParagraph.SelectionStart > 0) + { + richTextBoxParagraph.SelectionStart = richTextBoxParagraph.SelectionStart - 1; + richTextBoxParagraph.SelectionLength = match.Length; + } } richTextBoxParagraph.SelectionColor = Color.Red; match = match.NextMatch(); diff --git a/src/Forms/VobSubOcr.cs b/src/Forms/VobSubOcr.cs index 39fd66fe2..6a888ee8a 100644 --- a/src/Forms/VobSubOcr.cs +++ b/src/Forms/VobSubOcr.cs @@ -2042,7 +2042,7 @@ namespace Nikse.SubtitleEdit.Forms private void comboBoxDictionaries_SelectedIndexChanged(object sender, EventArgs e) { Configuration.Settings.General.SpellCheckLanguage = LanguageString; - if (_ocrFixEngine != null) + if (_ocrFixEngine != null && LanguageString != null) _ocrFixEngine.SpellCheckDictionaryName = LanguageString; } diff --git a/src/Logic/Utilities.cs b/src/Logic/Utilities.cs index c6e91a5a2..577ea7572 100644 --- a/src/Logic/Utilities.cs +++ b/src/Logic/Utilities.cs @@ -1047,7 +1047,7 @@ namespace Nikse.SubtitleEdit.Logic } } - public static string GetOpenDialogFiler() + public static string GetOpenDialogFilter() { StringBuilder sb = new StringBuilder(); sb.Append(Configuration.Settings.Language.General.SubtitleFiles + "|"); @@ -1061,7 +1061,8 @@ namespace Nikse.SubtitleEdit.Logic sb.Append("*" + ext + ";"); } } - sb.Append("*" + new Pac().Extension); + sb.Append("*" + new Pac().Extension + ";"); + sb.Append("*.sup"); sb.Append("|" + Configuration.Settings.Language.General.AllFiles + "|*.*"); return sb.ToString(); } diff --git a/src/Resources/fa-IR.xml b/src/Resources/fa-IR.xml index d98d3aadb..05b7012c1 100644 --- a/src/Resources/fa-IR.xml +++ b/src/Resources/fa-IR.xml @@ -32,19 +32,19 @@ قابل رویت تعداد فریم در ثانیه نام - نام فایل : {0} ({1}) - وضوح تصویر : {0} - تعداد فریم در ثانیه: {0:0.0###} - تعداد کل فریم: {0:#,##0.##} - نوع رمزگذاری ویدئو : {0} + File name: {0} ({1}) + Resolution: {0} + Frame rate: {0:0.0###} + Total frames: {0:#,##0.##} + Video encoding: {0} طول یک خط : - طول کل : {0} + Total length: {0} طول کل : {0} (خط تقسیم!) تقسیم خط! غیر قابل دسترس - همپوشانی خط قبلی({0:#,##0.###}) - همپوشانی ({0:#,##0.###}) - همپوشانی بعدی ({0:#,##0.###}) + Overlap prev line ({0:#,##0.###}) + Overlap ({0:#,##0.###}) + Overlap next ({0:#,##0.###}) منفی عبارت منظم معتبر نیست! زیرنویس ذخیره شد @@ -105,7 +105,7 @@ http://code.google.com/p/subtitleedit خط # قبل از پس از - خطوط یافت شده: {0} + Lines found: {0} بشکن فقط خطوط بزرگتر از نشکن فقط خطوط کوچکتر از @@ -121,13 +121,13 @@ http://code.google.com/p/subtitleedit تغییر کوچک و بزرگی - اسامی - اسامی موجود در زیرنویس : {0} + Names found in subtitle: {0} توانا نام خط # قبل از پس از - خطوط یافت شده : {0} + Lines found: {0} تغییر نرخ فریم @@ -152,7 +152,7 @@ http://code.google.com/p/subtitleedit تفاوت قبلی تفاوت بعدی زیرنویسها هیچ شباهت - تعداد تفاوت : {0} + Number of differences: {0} فقط تفاوت ها را نمایش بده فقط برای تفاوت های موجود در متن نگاه کن @@ -175,14 +175,14 @@ http://code.google.com/p/subtitleedit انصراف انصراف توسط کاربر در حال خواندن اطلاعات... - تبدیل فایلهای وی او بی {1} of {2}: {0} + Ripping vob file {1} of {2}: {0} نوعIFO '{0}' است و نه'DVDVIDEO-VTS'.{1}فایل دیگری را امتحان کنید {2} زبان را انتخاب کنید زبان را انتخاب کنید (stream-id) زبان ناشناخته است - تصویر زیرنویس {0}/{1} - {2}x{3} + Subtitle image {0}/{1} - {2}x{3} تصویر زیرنویس @@ -228,7 +228,7 @@ http://code.google.com/p/subtitleedit خط خالی حذف شده از بالا خط خالی حذف شده از پایین خطهای خالی را حذف کن - خطوط خالی حذف شده : {0} + Empty lines removed: {0} زمانهای هم پوشانی را اصلاح کن اصلاح زمانهای کوتاه نمایش اصلاح زمانهای طولانی نمایش @@ -253,16 +253,16 @@ http://code.google.com/p/subtitleedit اضافه کردن نقل قول های فراموش شده (") اصلاح خطوطی که با خط تیره شروع می شوند (-) اصلاح خطی که با خط تیره شروع می شوند (-) - خط تیره اصلاح شده : {0} + Hyphens fixed: {0} "How are you? -> "How are you?" - نقل قول های فراموش شده افزوده شد: {0} + Missing quotes added: {0} اصلاح زیرنویسهایی با بیش از دو خط اصلاح زیرنویسی با بیش از دو خط - زیرنویسهایی با بیش از دو خط اصلاح شد : {0} + Subtitles with more than two lines fixed: {0} در حال تجزیه و تحلیل... هیچ چیز برای اصلاح یافت نشد :) - برای تصحیح پیدا شد : {0} - تصحیح ها انجام شد : {0} + Fixes found: {0} + Fixes applied: {0} چیزی برای تصحیح پیدا نشد اما چند چیز می تواند بهبود یابد - نوشته (log) را برای جزییات ببینید. "حروف کوچک ثابت به تنهایی« من »به« من »(به انگلیسی)" انتخاب شده است اما در حال حاضر لود زیرنویس به نظر می رسد نمی شود انگلیسی. ادامه @@ -284,10 +284,10 @@ http://code.google.com/p/subtitleedit Hey.You. -- هی>. شما. فیات زمین است. --> زمین صاف است. چه مراقبت می کنم. --> چه کار کنم مراقبت. - متن تعداد {0} : زمان شروع است دیرتر از زمان پایان : {4} {1} --> {2} {3} - قادر به حل تعداد متن {0} : زمان شروع است بعد از پایان زمان پایان : {1} - {0} ثابت به : {2} {1} - قادر به حل تعداد متن {0} : {1} + Text number {0}: Start time is later than end time: {4}{1} --> {2} {3} + Unable to fix text number {0}: Start time is later end end time: {1} + {0} fixed to: {1}{2} + Unable to fix text number {0}: {1} {0} با هم تداخل دارند timestamps ثابت {0} بار نمایش طولانی {0} نامعتبر است و تگ های اچ تی ام ال ثابت @@ -329,7 +329,7 @@ http://code.google.com/p/subtitleedit 'clanks] بیرون نگاه کن!' --> '[clanks] بیرون نگاه کن!' 'در آرزوی ª شیرین هستند' --> '♫ رویاهای شیرین هستند' {0} پیامهای مهم است! - ثابت و خوب -- '{0} : {1} + Fixed and OK - '{0}': {1} آیا نیازمند واژهنامهها؟ @@ -372,7 +372,7 @@ http://code.google.com/p/subtitleedit و تازه کردن و بعد>> فایل متن - پیشنمایش -- پاراگراف تغییر : {0} + Preview - paragraphs modified: {0} Interjections @@ -571,916 +571,501 @@ http://code.google.com/p/subtitleedit نکته : استفاده از <alt+arrow up/down> برای رفتن به قبلی/زیرنویس بعدی نکته : استفاده از <ctrl+arrow left/right> کلید نکته : استفاده از <alt+arrow up/down> برای رفتن به قبلی/زیرنویس بعدی - قبل از زمان در حال تغییر در شکل موج : {0} - متن جدید درج در {0} + Before changing time in wave form: {0} + New text inserted at {0}
مرکز
- - - - - - - - - - + سرعت بازی (سرعت) + آرام + عادی + سریع + بسیار سریع - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - شماره خط: {0:#,##0.##} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ذخیره تغییرات بدون عنوان؟ + ذخیره تغییرات را به {0}؟ + ذخیره تغییرات بدون عنوان اصلی؟ + ذخیره تغییرات اصلی به {0}؟ + ذخیره زیرنویس به عنوان... + ذخیره زیرنویس اصلی به عنوان... + بدون زیرنویس لود + سنکرون تجسمی -- خطوط انتخاب شده + ویژوال سنکرون + قبل از سنکرون بصری + ویژوال در انتخاب خطوط انجام سنکرون + ویژوال سنکرون انجام + واردات این نام VobSub؟ + File is larger than 10 MB: {0} + هر حال ادامه میدهید؟ + Before load of {0} + Loaded subtitle {0} + Loaded empty or very short subtitle {0} + پرونده خالی است و یا بسیار کوتاه! + File not found: {0} + Saved subtitle {0} + Saved original subtitle {0} + پرونده بر روی دیسک تغییر + Overwrite the file {0} modified at {1} {2}{3} with current file loaded from disk at {4} {5}? + Unable to save subtitle file {0} + قبل از جدید + جدید + Before converting to {0} + Converted to {0} + قبل از نشان دادن پیش + قبل از نشان دادن بعد + Line number: {0:#,##0.##} + باز کردن فایل های ویدئویی... + جدید نرخ فریم ({0}) برای محاسبه شروع/پایان کدهای زمان استفاده شد + جدید نرخ فریم ({0}) برای محاسبه شروع/پایان اعداد قاب مورد استفاده قرار گرفت + مورد جستجو یافت نشد. + آیا می خواهید از بالا از سند و جستجو یک بار دیگر شروع کنم؟ + ادامه یافتن؟ + '{0} در بر داشت در شماره خط {1} + '{0} یافت نشد + Before replace: {0} + Match found: {0} + No match found: {0} + موردی یافت نشد در بر داشت به جای + Replace count: {0} + Match found at line {0}: {1} + یک جایگزین ساخته شده است. + قبل از اینکه تغییرات ساخته شده در نمایش مبدأ + قادر به تجزیه منبع متن نمایش! + Go to line number {0} + ساخت/تنظیم خطوط اعمال تغییرات + خطوط انتخاب شده + قبل از تنظیم زمان نمایش + Display time adjusted: {0} + Display times adjusted: {0} + Start time adjusted: {0} + قبل از رفع خطا مشترک + اشتباهات رایج در انتخاب خطوط ثابت + اشتباهات رایج ثابت + قبل از renumbering + Renumbered starting from: {0} + قبل از خروج از texting برای اختلال در شنوایی + Texting برای حذف اختلال شنوایی : یک خط + Texting for hearing impaired removed : {0} lines + نام پذیری + این نام موجود در حال حاضر به نام لود پیوست که باید + در حال حاضر در هماهنگی با فایل تصویری می باشد. + + ادامه؟ + نام افزودنپرونده + نام را باز برای اضافه... + سنکرون تجسمی -- الحاق بخش دوم زیرنویس + الحاق این زیرنویس هماهنگ شده؟ + قبل از الحاق + Subtitle appended: {0} + نام نه افزوده! + مترجم گوگل + مایکروسافت ترجمه + قبل از ترجمه گوگل + انتخاب خطوط ترجمه + زیرنویس ترجمه شده + در حال حاضر ترجمه لود زیرنویس سوئدی به دانمارکی + در حال حاضر ترجمه لود سوئدی (آیا مطمئن هستید که این سوئدی؟) زیرنویس به دانمارکی؟ + ترجمه از طریق www.nikse.dk/تن... + قبل از سوئدی به دانمارکی ترجمه + ترجمه از سوئدی به دانمارکی کامل + ترجمه از سوئدی به دانمارکی شکست خورد + قبل از خنثیسازی + واگرد انجام + هیچ چیز به خنثیسازی + نام نامعتبر زبان : {0} + قادر به تغییر زبان! + Number of corrected words: {0} + Number of skipped words: {0} + Number of correct words: {0} + تعداد کلمات به فرهنگ لغت اضافه شده : {0} + Number of name hits: {0} + بررسی املا + قبل از بررسی املا + Spell check: Changed '{0}' to '{1}' + قبل از اضافه کردن <{0}> برچسب + <{0}> برچسب ها اضافه شده + خط {0} از {1} + {0} حذف خطوط + قبل از حذف {0} خط + حذف {0} خط؟ + خط حذف + قبل از پاک کردن یک خط + پاک کردن یک خط؟ + قبل از قرار دادن خط + درج خط + قبل از خط در listview به روز شده + قبل از تنظیم فونت به حالت عادی + قبل از تقسیم خط + خط پذیری + قبل از ادغام خط + خطوط هم ادغام شدند + قبل از تنظیم رنگ + قبل از تنظیم نام فونت + قبل از اثر ماشین تحریر + قبل از اثر کارائوکی قبل از وارد کردن زیرنویس از دی وی دی باز کردن فایل Matroska... فایل‌های Matroska زیرنویسی پیدا نشد - این فایل matroska معتبر نمی باشد. : {0} + This is not a valid matroska file: {0} تجزیه فایل Matroska. لطفا صبر کنید... قبل از وارد کردن زیرنویس از فایل Matroska زیرنویس های وارد شده از فایل Matroska اضافه کردن فایل '{0}' پذیرفته نیست -- فایل بسیار بزرگ است شما فقط می توانید یک فایل انتخاب کنید - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - کاراکتر/ثانیه: {0:0.00} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + قبل از ایجاد/تنظیم خطوط + نام را باز... + قبل از تغییر پوشش + Number of lines with casing changed: {0}/{1} + Number of lines with names casing changed: {0}/{1} + Number of lines with casing changed: {0}/{1}, changed casing for names: {2} + قبل از تغییر نرخ فریم + Frame rate changed from {0} to {1} + {0} یافت نشد! واردات فایل VobSub به هر حال؟ + سربرگ فایل معتبر نمی VobSub : {0} + باز VobSub (فرعی/idx) نام... + نام فایل VobSub + باز بلو ری. پرونده شام خوردن... + ضبط و پخش فایل های شام خوردن + قبل از وارد کردن نام VobSub + قبل از وارد کردن ضبط و پخش فایل شام خوردن + قبل از نشان دادن خطوط انتخاب شده در اوایل/بعد + نمایش قبلی/بعد در خطوط انتخاب شده انجام + دو واژه از طریق regex {0} + Before sort: {0} + Sorted by: {0} + قبل از انتخاب خودکار توازن خطوط + Number of lines auto balanced: {0} + قبل از حذف خط معافیت از خطوط انتخاب شده + Number of lines with removed line-break: {0} + قبل از اینکه چند جایگزین + Number of lines with text replaced: {0} + نام فایل '{0}' به نام/لیست و غیره اضافه شده است + نام فایل '{0}' بود نه به نام/لیست و غیره اضافه شده + {0} انتخاب خطوط + نام شامل یادداشت موسیقی یونیکد. صرفه جویی در مصرف با استفاده از مؤسسه رمزگذاری فایل خواهد شد این از دست بدهند. ادامه با صرفه جویی؟ + زیرنویس ها شامل کدهای ساعت هم منفی است. ادامه با صرفه جویی؟ + قبل از ادغام خطوط کوتاه + قبل از تقسیم خطوط طولانی + Number of lines merged: {0} + قبل از تنظیم زمان نمایش حداقل بین پاراگراف + تعداد خطوط با صفحه نمایش حداقل زمان بین پاراگراف ها تغییر : {0} + قبل از وارد کردن متن ساده + متن وارداتی + قبل از هماهنگ سازی نقطه + هماهنگ سازی نقطه انجام + قبل از وارد کردن از کدهای زمان + Time codes imported from {0}: {1} + قبل از قرار دادن زیرنویس در موقعیت ویدیو + قبل از تنظیم زمان شروع و افست بقیه + ادامه با بررسی املا فعلی؟ + Chars/sec: {0:0.00} + دریافت نرخ فریم از فایل های ویدیویی + New message: {0} ({1}): {2} + Line updated: {0} ({1}): Index={2}, Text={3} + Line inserted: {0} ({1}): Index={2}, Text={3} + Line deleted: {0} ({1}): Index={2} + New user: {0} ({1}) + Bye {0} ({1}) + قادر به اتصال به سرور : {0} + کاربر/اکشن + شبکه حالت + {0} : در آغاز جلسه {1} در {2} + چک کردن املا کلمات با استفاده از {0} -- خط {1} / {2} + قادر به آغاز مایکروسافت ورد + بررسی املا خاتمه یافت. {0} خطوط تغییر یافتهاست. + املا چک به پایان رسید. {0} خطوط تغییر یافتهاست. - - - - - - + نام فایل را انتخاب کنید از Matroska + بیش از یک نام یافت -- لطفا انتخاب کنید + Track {0} - {1} - language: {2} - type: {3} - - - - - - - - - - - - + ادغام خطوط کوتاه + حداکثر تعداد کاراکتر در یک پاراگراف + حداکثر میلی ثانیه بین خطوط + Number of merges: {0} + خط # + متن ادغام - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + چند جایگزین + پیدا کردن آنچه + به جای + عادی + مورد حقوقی حساس + بیان منظم + خط # + قبل از + پس از + Lines found: {0} + حذف + اضافه کردن + و بروز + کوکی ها + نوع جستجو - - - - + گپ + ارسال - - - - - - + تاریخ شبکه را وارد نمایید + تاریخ جلسه موجود که در آن چند نفر + می توانید ویرایش در فایل زیرنویس همان (همکاری) + پیوستن - - - - + شبکه اطلاعات را وارد نمایید و وارد شوید + ورود به سیستم : - - - - - - - - + شروع جلسه شبکه + Connecting to {0}... + جلسه شروع جدید که در آن چند نفر + می توانید ویرایش در فایل زیرنویس همان (همکاری) + شروع - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + گزارش متن برای ناشنوایان + شرایط گزارش متن + شرایط گزارش متن + '[' و '] =' + '{' و '}' + '(' و ')' + '؟' و '؟' + و + گزارش متن قبل از (':')روده بزرگ + فقط اگر متن بزرگ است + فقط اگر در خط جدا از هم + خط # + قبل از + پس از + Lines found: {0} + گزارش متن اگر در آن وجود دارد : + گزارش interjections (shh ، hmm ، و غیره) + ویرایش... - - - - - - - - - - - - - - - - - - + جایگزین کردن + پیدا کردن آنچه که : + عادی + مورد حقوقی حساس + بیان منظم + به جای + و یافتن + و به جای + جایگزینی &همه - - - - - - - - + تنظیم زمان نمایش حداقل بین پاراگراف + Preview - paragraphs modified: {0} + فقط نمایش تغییر خطوط + حداقل میلی ثانیه بین خطوط - - - - - - - - - - - - + Set Sync point for line {0} + همزمانی نقطه کد ساعت + <<3 ثانیه + <<½ ثانیه + ½ ثانیه>> + 3 ثانیه>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + تنظیمات + عمومی + نوار ابزار + پخش کننده فیلم + شکل موج + ابزار + لیست کلمات + حالات نوشتار سبک + پروکسی + نمایش دکمه های نوار ابزار + جدید + باز + ذخیره + ذخیره به عنوان + مشاهده + جایگزین کردن + ویژوال سنکرون + بررسی املا + تنظیمات + راهنما + نمایش نرخ فریم را در نوار ابزار + نرخ فریم پیش فرض + به طور پیش فرض پشتیبانی می کند فایل + خودکار تشخیص رمزگذاری مؤسسه حداکثر طول یک خط بسته بندی خودکار در حال تایپ نوع قلم اندازه قلم - - + جسور رنگ قلم رنگ پس زمینه کنترل کننده املا (برای کلمات انگلیسی) به یاد داشتن فایل های اخیر (برای بازگشایی دوباره) شروع با آخرین فایل لود شده به یاد داشتن خط انتخاب شده - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + به یاد داشته باشید و موقعیت پنجره اصلی و اندازه + در شروع نمایش مبدأ + گزارش خط خالی هنگام باز کردن زیرنویس + معافیت نمایش خط در لیست را به عنوان نمایش + دوبار کلیک بر روی خط در پنجره اصلی listview خواهد شد + هیچ + برو به استانداردهای فعلی ویدیویی و مکث + برو به استانداردهای فعلی ویدئو و بازی + برو جعبه متن برای ویرایش + خودکار پشتیبان + هر دقیقه + هر 5 دقیقه + هر 15 دقیقه + اجازه ویرایش از نام اصلی + موتور ویدئو + DirectShow + quartz.dll در پوشه system32 + مدیریت DirectX + Microsoft.DirectX.AudioVideoPlayback -- کد مدیریت شده دات نت از DirectX + ویندوز مدیا پلیر + WMP کنترل اکتیو ایکس + وی ال سی مدیا پلیر + libvlc.dll از وی ال سی مدیا پلیر 1.1.0 و نسخه های جدیدتر + نمایش توقف را فشار دهید + حجم پیش فرض + 0 بدون صدا است ، 100 است که بالاترین حجم + صفحه اصلی ویدیو پنجره کنترل + سفارشی متن جستجو و آدرس + موج ظاهر فرم + رنگ گرید + نمایش خطوط شبکه + رنگ + انتخاب رنگ + برگشت رنگ + رنگ متن + خالی کردن پوشه 'امواج' + 'WaveForms' folder contains {0} files ({1:0.00} MB) + زیر ایستگاه سبک آلفا + انتخاب فونت + انتخاب رنگ + مثال + 123 تست... + زبان + نام/لیست چشم پوشی (حساس به حروف کوچک) + اضافه کردن نام + اضافه کردن کلمه + گزارش + اضافه کردن جفت + لیست کاربر کلمه + او سی آر لیست تعمیر + محل + استفاده از نام فایل و غیره آنلاین کاپرفیلد + Word added: {0} + ورد از قبل وجود دارد! + کلمه پیدا نشد + گزارش {0}؟ + آیا می توانم بروز رسانی آنلاین NamesEtc.xml نیست! + تنظیمات پروکسی سرور + آدرس پروکسی + تصدیق + نام کاربری + رمز عبور + دامنه + ثانیه بازی ایکس و برگشت ، ایکس است + شروع پاراگراف صحنه است + پایان پاراگراف صحنه است + First + {0} + Last - {0} + تعمیر خطاهای رایج + ادغام خطوط کوتاه تر از + نماد موسیقی + نماد های موسیقی به جای (جداگانه با فضای خالی) + تعمیر خطاهای او سی آر مشترک -- همچنین hardcoded قوانین استفاده - - - - - - - - - - - - - - + انتخاب نمایش خطوط قبل/بعد + نمایش همه خطوط قبل/بعد + نمایش قبلی + نمایش بعد + Total adjustment: {0} + همه خطوط + انتخاب خطوط تنها - - - - - - - - - - - - - + تاریخچه (برای خنثیسازی) + زمان را انتخاب کنید/برای توضیحات پسروی + + شرح + مقایسه اقلام تاریخچه + مقایسه با جریان + پسروی - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + بررسی املا + متن کامل + کلمه پیدا نشد + زبان + تغییر + تغییر همه + پرش و یک + پرش و تمام + اضافه کردن کاربر به فرهنگ لغت + اضافه کردن به نام/لیست سر و صدا (حساس به حروف کوچک) + سقط جنین + استفاده + و استفاده از همیشه + پیشنهادات + Spell check [{0}] - {1} + ویرایش کل متن + ویرایش واژه تنها + اضافه کردن '{0}' به نام/لیست و غیره + تعمیر خودکار اسامی که در آن فقط پوشش متفاوت + متن تصویر + املا چک به پایان رسید. + املا بررسی سقط شده - - - - - - - - - - - - - - + خطوط تقسیم طولانی + تنها خط حداکثر طول + خط حداکثر طول + ادامه خط شروع/پایان رشته ها + Number of splits: {0} + Longest single line length is {0} at line {1} + طولانی ترین طول خط در کل برابر است با {0} در {1} خط - - - - - - - - - - - - - - - - - - - - - - + نام اسپلیت + را وارد کنید طول قسمت اول از فیلم یا فهرست + طول و دریافت از فایل تصویری : + و تقسیم + و انجام + هیچ چیز به تقسیم! + ذخیره 1 بخش به عنوان... + بخش 2 ذخیره به عنوان... + Part1 + Part2 + Unable to save {0} - - - - - - + شروع شماره از... + شروع از شماره : + یو پی اس ، لطفا یک عدد وارد کنید - - - - - - - - - - - - - - + هماهنگ سازی نقطه + تنظیم حداقل دو نقطه سنکرون را به هماهنگ سازی خشن + تنظیم سنکرون نقطه + گزارش نقطه سنکرون + Sync points: {0} + سنکرون یک نقطه تنظیم خواهد شد و موقعیت ، دو یا چند نقطه سنکرون خواهد شد و موقعیت و سرعت تنظیم + درخواست - - - - + نوع زیرنویس نامعلوم + اگر شما می خواهید این ثابت لطفا قبل از ارسال یک ایمیل به mailto : niksedk@gmail.com و شامل یک کپی از نام. - - - - - - + ویژوال سنکرون + صحنه شروع + صحنه پایان همگام سازی ½ ثانیه> 3 ثانیه> @@ -1515,60 +1100,33 @@ http://code.google.com/p/subtitleedit زبان او سی آر از طریق مقایسه تصویر پایگاه تصویر - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + تعداد پیکسل فضا + جدید + ویرایش + شروع او سی آر + توقف + او سی آر شروع از هیچ نام : + بارگذاری تصاویر VobSub... + نام تصویر + متن زیرنویس + قادر به ایجاد شخصیت پوشه پایگاه داده ': {0} + Subtitle image {0} of {1} + پالت تصویر + استفاده از رنگ های سفارشی + شفاف + اعلان کلمات ناشناخته + سعی کنید به حدس زدن کلمات ناشناخته + خودکار بند شکستن اگر بیش از دو خط + همه رفع + حدس استفاده + کلمات نامعلوم + او سی آر اصلاح خودکار / spellchecking + تعمیر خطاهای او سی آر + ذخیره کردن تصویر زیرنویس به عنوان... + ذخیره تمام عکس ها (فعلی/کاپرفیلد bdn)... + {0} images saved in {1} + سعی کنید او سی آر ام اس MODI کلمات ناشناخته + Dictionary: {0} راست به چپ فقط نمایش زیرنویسهای اجباری استفاده از زمان‌‌‌های فایل idx @@ -1577,14 +1135,10 @@ http://code.google.com/p/subtitleedit VobSub -- تبدیل تصویر به متن بطور دستی انتخاب کوچک (Shrink) انتخاب باز (Expand) - - - - - - - - + نام تصویر + شخصیت (ها) + شخصیت (ها) به صورت متن + و کج لغو