mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-28 06:52:35 +01:00
Added new subtitle format
This commit is contained in:
parent
392e852e65
commit
545d7aa40d
@ -52,7 +52,7 @@
|
||||
<RegularExpressionIsNotValid>Expresia nu este valabilă!</RegularExpressionIsNotValid>
|
||||
<SubtitleSaved>Subtitrare salvată</SubtitleSaved>
|
||||
<CurrentSubtitle>Subtitrarea curentă</CurrentSubtitle>
|
||||
<OriginalText>Textul original</OriginalText>
|
||||
<OriginalText>Text original</OriginalText>
|
||||
<OpenOriginalSubtitleFile>Deschide subtitrarea originală ...</OpenOriginalSubtitleFile>
|
||||
<PleaseWait>Te rog, așteaptă ...</PleaseWait>
|
||||
<SessionKey>Sesiune</SessionKey>
|
||||
@ -159,7 +159,7 @@ E-mail la: nikse.dk @gmail.com</AboutText1>
|
||||
<ScanFolder>Explorare dosar ...</ScanFolder>
|
||||
<ScanningFolder>Explorare {0} și sub-directoare pentru fișierele de subtitrare ...</ScanningFolder>
|
||||
<Recursive>Include sub-directoare</Recursive>
|
||||
<SetMinMsBetweenSubtitles>Setarea minimumului de milisecunde între subtitrări</SetMinMsBetweenSubtitles>
|
||||
<SetMinMsBetweenSubtitles>Setarea minimului de milisecunde între subtitrări</SetMinMsBetweenSubtitles>
|
||||
</BatchConvert>
|
||||
<Beamer>
|
||||
<Title>Proiector</Title>
|
||||
@ -607,8 +607,8 @@ E-mail la: nikse.dk @gmail.com</AboutText1>
|
||||
<From>De la:</From>
|
||||
<To>La:</To>
|
||||
<Translate>Traduce</Translate>
|
||||
<PleaseWait>Te rog, așteaptă ... aceasta poate dura un timp</PleaseWait>
|
||||
<PoweredByGoogleTranslate>Realizat de Google traslate</PoweredByGoogleTranslate>
|
||||
<PleaseWait>Te rog, așteaptă ... poate dura un timp</PleaseWait>
|
||||
<PoweredByGoogleTranslate>Realizat de Google translate</PoweredByGoogleTranslate>
|
||||
<PoweredByMicrosoftTranslate>Realizat de Microsoft translate</PoweredByMicrosoftTranslate>
|
||||
</GoogleTranslate>
|
||||
<GoogleOrMicrosoftTranslate>
|
||||
@ -693,7 +693,7 @@ E-mail la: nikse.dk @gmail.com</AboutText1>
|
||||
<SaveOriginal>Salvează subtitrarea originală</SaveOriginal>
|
||||
<CloseOriginal>Închide subtitrarea originală</CloseOriginal>
|
||||
<OpenContainingFolder>Deschide dosar de conținut</OpenContainingFolder>
|
||||
<Compare>&Compară ...</Compare>
|
||||
<Compare>&Comparare ...</Compare>
|
||||
<Statistics>Statisti&că ...</Statistics>
|
||||
<Plugins>Plugin-uri ...</Plugins>
|
||||
<ImportOcrFromDvd>Importare subtitrare/OCR din vob/IFO (DVD) ...</ImportOcrFromDvd>
|
||||
@ -944,10 +944,10 @@ E-mail la: nikse.dk @gmail.com</AboutText1>
|
||||
<Pause>Pauză</Pause>
|
||||
<GoToSubtitlePositionAndPause>Trece la sub-poziție și pauză</GoToSubtitlePositionAndPause>
|
||||
<SetStartTime>Setează &timpul de start</SetStartTime>
|
||||
<SetEndTimeAndGoToNext>Set. &finalul&și treci mai departe</SetEndTimeAndGoToNext>
|
||||
<SetEndTimeAndGoToNext>Set. &finalul& și treci mai departe</SetEndTimeAndGoToNext>
|
||||
<AdjustedViaEndTime>Corectează prin timpul de final {0}</AdjustedViaEndTime>
|
||||
<SetEndTime>Setează f&inalul</SetEndTime>
|
||||
<SetstartTimeAndOffsetOfRest>Set. star&tul și decalarea pauzei</SetstartTimeAndOffsetOfRest>
|
||||
<SetstartTimeAndOffsetOfRest>Set. star&tul și decalează pauza</SetstartTimeAndOffsetOfRest>
|
||||
<SearchTextOnline>Caută text online</SearchTextOnline>
|
||||
<GoogleTranslate>Traducere Google</GoogleTranslate>
|
||||
<GoogleIt>Caută cu Google</GoogleIt>
|
||||
@ -1336,7 +1336,7 @@ pot edita în acelasi fișier de subtitrare (colaborare)</Information>
|
||||
<GetPluginsInfo1>Plugin-urile Subtitle Edit trebuie să fie descărcate în dosarul „Plugin-uri”</GetPluginsInfo1>
|
||||
<GetPluginsInfo2>Alege plugin-ul și clic pe „Descărcare”</GetPluginsInfo2>
|
||||
<PluginXDownloaded>Plugin-ul {0} descărcat</PluginXDownloaded>
|
||||
<Download>&Descărcă</Download>
|
||||
<Download>&Descărcare</Download>
|
||||
<Remove>&Elimină</Remove>
|
||||
<UpdateAllX>Actualizează tot ({0})</UpdateAllX>
|
||||
<UnableToDownloadPluginListX>Imposibilă descărcarea listei de plugin-uri: {0}</UnableToDownloadPluginListX>
|
||||
@ -1445,7 +1445,7 @@ pot edita în acelasi fișier de subtitrare (colaborare)</Information>
|
||||
<DefaultFileEncoding>Codare implicită</DefaultFileEncoding>
|
||||
<AutoDetectAnsiEncoding>Auto-detectează codificare ANSI</AutoDetectAnsiEncoding>
|
||||
<SubtitleLineMaximumLength>Lung. max. a unei singure linii</SubtitleLineMaximumLength>
|
||||
<MaximumCharactersPerSecond>Maxim de caractere/secundă</MaximumCharactersPerSecond>
|
||||
<MaximumCharactersPerSecond>Maxim de caractere/sec.</MaximumCharactersPerSecond>
|
||||
<AutoWrapWhileTyping>Auto-încadrare în timpul tastării</AutoWrapWhileTyping>
|
||||
<DurationMinimumMilliseconds>Durată minimă, în milisecunde</DurationMinimumMilliseconds>
|
||||
<DurationMaximumMilliseconds>Durată maximă, în milisecunde</DurationMaximumMilliseconds>
|
||||
@ -1648,7 +1648,7 @@ pot edita în acelasi fișier de subtitrare (colaborare)</Information>
|
||||
<MainTextBoxUnbreak>Text neîntrerupt</MainTextBoxUnbreak>
|
||||
<MainFileSaveAll>Salvează tot</MainFileSaveAll>
|
||||
<Miscellaneous>Diverse</Miscellaneous>
|
||||
<UseDoNotBreakAfterList>Folosește lista nu-întrerupe-după (ptr. auto-întrerup.)</UseDoNotBreakAfterList>
|
||||
<UseDoNotBreakAfterList>Folosește lista nu-întrerupe-după (pentru auto-întrerupere)</UseDoNotBreakAfterList>
|
||||
</Settings>
|
||||
<ShowEarlierLater>
|
||||
<Title>Arată liniile selectate mai devreme/târziu</Title>
|
||||
@ -1674,12 +1674,12 @@ pot edita în acelasi fișier de subtitrare (colaborare)</Information>
|
||||
<FullText>Întreg textul</FullText>
|
||||
<WordNotFound>Cuvânt negăsit</WordNotFound>
|
||||
<Language>Limba</Language>
|
||||
<Change>Schimbare</Change>
|
||||
<Change>Schimbă</Change>
|
||||
<ChangeAll>Schimbă tot</ChangeAll>
|
||||
<SkipOnce>Se sare peste &una</SkipOnce>
|
||||
<SkipAll>&Se sare peste tot</SkipAll>
|
||||
<SkipOnce>Sari peste &una</SkipOnce>
|
||||
<SkipAll>&Sari peste tot</SkipAll>
|
||||
<AddToUserDictionary>Adaugă la dicționarul utilizatorului</AddToUserDictionary>
|
||||
<AddToNamesAndIgnoreList>Adaugă la lista numelor/suntelor (caractere identice)</AddToNamesAndIgnoreList>
|
||||
<AddToNamesAndIgnoreList>Adaugă la listă nume/sunete (identice)</AddToNamesAndIgnoreList>
|
||||
<AddToOcrReplaceList>Adaugă perechea la lista realocărilor OCR</AddToOcrReplaceList>
|
||||
<Abort>Revocare</Abort>
|
||||
<Use>Utilizare</Use>
|
||||
@ -1689,7 +1689,7 @@ pot edita în acelasi fișier de subtitrare (colaborare)</Information>
|
||||
<EditWholeText>Editare text integral</EditWholeText>
|
||||
<EditWordOnly>Editare doar cuvânt</EditWordOnly>
|
||||
<AddXToNamesEtc>Adaugă '{0}' la lista nume/etc.</AddXToNamesEtc>
|
||||
<AutoFixNames>Auto-repară numele unde diferă doar caracterele (mari/mici)</AutoFixNames>
|
||||
<AutoFixNames>Auto-repară nume dif. doar prin caractere (mari/mici)</AutoFixNames>
|
||||
<CheckOneLetterWords>Avizează o literă necunoscută din cuvinte</CheckOneLetterWords>
|
||||
<TreatINQuoteAsING>Prelucrează sfârșitul cuvântului „in” ca „ing” (numai în engleză)</TreatINQuoteAsING>
|
||||
<ImageText>Imagine text</ImageText>
|
||||
@ -1866,7 +1866,7 @@ pot edita în acelasi fișier de subtitrare (colaborare)</Information>
|
||||
<ThreeSecondsBack>< 3 sec</ThreeSecondsBack>
|
||||
<PlayXSecondsAndBack>Redă {0} sec și înapoi</PlayXSecondsAndBack>
|
||||
<FindText>Găsește text</FindText>
|
||||
<GoToSubPosition>Trece la poziție</GoToSubPosition>
|
||||
<GoToSubPosition>Treci la poziție</GoToSubPosition>
|
||||
<KeepChangesTitle>Se păstrează schimbările?</KeepChangesTitle>
|
||||
<KeepChangesMessage>Modificările la subtitrare au fost făcute în „Sincronizare vizuală”. Se păstrează schimbările?</KeepChangesMessage>
|
||||
<SynchronizationDone>Sincronizare făcută!</SynchronizationDone>
|
||||
|
@ -160,7 +160,7 @@ $HorzAlign = Center
|
||||
return text.Replace(Environment.NewLine, "|");
|
||||
}
|
||||
|
||||
private static bool GetTimeCode(TimeCode timeCode, string timeString)
|
||||
internal static bool GetTimeCode(TimeCode timeCode, string timeString)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -168,13 +168,7 @@ $HorzAlign = Center
|
||||
timeCode.Hours = int.Parse(timeParts[0]);
|
||||
timeCode.Minutes = int.Parse(timeParts[1]);
|
||||
timeCode.Seconds = int.Parse(timeParts[2]);
|
||||
int frames = int.Parse(timeParts[3]);
|
||||
|
||||
int milliseconds = (int)Math.Round(1000.0 / Configuration.Settings.General.CurrentFrameRate * frames);
|
||||
if (milliseconds > 999)
|
||||
milliseconds = 999;
|
||||
|
||||
timeCode.Milliseconds = milliseconds;
|
||||
timeCode.Milliseconds = FramesToMillisecondsMax999(int.Parse(timeParts[3]));
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
@ -182,5 +176,6 @@ $HorzAlign = Center
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -81,8 +81,8 @@ $HorzAlign = Center
|
||||
string[] toPart = line.Substring(0, 25).Split(new[] { " ," }, StringSplitOptions.None);
|
||||
Paragraph p = new Paragraph();
|
||||
if (toPart.Length == 2 &&
|
||||
GetTimeCode(p.StartTime, toPart[0]) &&
|
||||
GetTimeCode(p.EndTime, toPart[1]))
|
||||
DvdStudioPro.GetTimeCode(p.StartTime, toPart[0]) &&
|
||||
DvdStudioPro.GetTimeCode(p.EndTime, toPart[1]))
|
||||
{
|
||||
number++;
|
||||
p.Number = number;
|
||||
@ -100,27 +100,5 @@ $HorzAlign = Center
|
||||
}
|
||||
}
|
||||
|
||||
private static bool GetTimeCode(TimeCode timeCode, string timeString)
|
||||
{
|
||||
try
|
||||
{
|
||||
string[] timeParts = timeString.Split(':');
|
||||
timeCode.Hours = int.Parse(timeParts[0]);
|
||||
timeCode.Minutes = int.Parse(timeParts[1]);
|
||||
timeCode.Seconds = int.Parse(timeParts[2]);
|
||||
int frames = int.Parse(timeParts[3]);
|
||||
|
||||
int milliseconds = (int)Math.Round(1000.0 / Configuration.Settings.General.CurrentFrameRate * frames);
|
||||
if (milliseconds > 999)
|
||||
milliseconds = 999;
|
||||
|
||||
timeCode.Milliseconds = milliseconds;
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
104
src/Logic/SubtitleFormats/DvdStudioProSpaceOne.cs
Normal file
104
src/Logic/SubtitleFormats/DvdStudioProSpaceOne.cs
Normal file
@ -0,0 +1,104 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
{
|
||||
public class DvdStudioProSpaceOne : SubtitleFormat
|
||||
{
|
||||
static readonly Regex RegexTimeCodes = new Regex(@"^\d+:\d+:\d+:\d+,\d+:\d+:\d+:\d+, .*$", RegexOptions.Compiled);
|
||||
|
||||
public override string Extension
|
||||
{
|
||||
get { return ".STL"; }
|
||||
}
|
||||
|
||||
public override string Name
|
||||
{
|
||||
get { return "DVD Studio Pro with one space"; }
|
||||
}
|
||||
|
||||
public override bool IsTimeBased
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override bool IsMine(List<string> lines, string fileName)
|
||||
{
|
||||
var subtitle = new Subtitle();
|
||||
LoadSubtitle(subtitle, lines, fileName);
|
||||
return subtitle.Paragraphs.Count > _errorCount;
|
||||
}
|
||||
|
||||
public override string ToText(Subtitle subtitle, string title)
|
||||
{
|
||||
const string paragraphWriteFormat = "{0},{1}, {2}\r\n";
|
||||
const string timeFormat = "{0:00}:{1:00}:{2:00}:{3:00}";
|
||||
const string header = @"$VertAlign = Bottom
|
||||
$Bold = FALSE
|
||||
$Underlined = FALSE
|
||||
$Italic = 0
|
||||
$XOffset = 0
|
||||
$YOffset = -5
|
||||
$TextContrast = 15
|
||||
$Outline1Contrast = 15
|
||||
$Outline2Contrast = 13
|
||||
$BackgroundContrast = 0
|
||||
$ForceDisplay = FALSE
|
||||
$FadeIn = 0
|
||||
$FadeOut = 0
|
||||
$HorzAlign = Center
|
||||
";
|
||||
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine(header);
|
||||
foreach (Paragraph p in subtitle.Paragraphs)
|
||||
{
|
||||
double factor = (1000.0 / Configuration.Settings.General.CurrentFrameRate);
|
||||
string startTime = string.Format(timeFormat, p.StartTime.Hours, p.StartTime.Minutes, p.StartTime.Seconds, (int)Math.Round(p.StartTime.Milliseconds / factor));
|
||||
string endTime = string.Format(timeFormat, p.EndTime.Hours, p.EndTime.Minutes, p.EndTime.Seconds, (int)Math.Round(p.EndTime.Milliseconds / factor));
|
||||
sb.Append(string.Format(paragraphWriteFormat, startTime, endTime, DvdStudioPro.EncodeStyles(p.Text)));
|
||||
}
|
||||
return sb.ToString().Trim();
|
||||
}
|
||||
|
||||
public static byte GetFrameFromMilliseconds(int milliseconds, double frameRate)
|
||||
{
|
||||
return (byte)Math.Round(milliseconds / (1000.0 / frameRate));
|
||||
}
|
||||
|
||||
public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
|
||||
{
|
||||
_errorCount = 0;
|
||||
int number = 0;
|
||||
foreach (string line in lines)
|
||||
{
|
||||
if (line.Trim().Length > 0 && line[0] != '$' && !line.StartsWith("//"))
|
||||
{
|
||||
if (RegexTimeCodes.Match(line).Success)
|
||||
{
|
||||
string[] toPart = line.Substring(0, 24).Trim(',').Split(',');
|
||||
var p = new Paragraph();
|
||||
if (toPart.Length == 2 &&
|
||||
DvdStudioPro.GetTimeCode(p.StartTime, toPart[0]) &&
|
||||
DvdStudioPro.GetTimeCode(p.EndTime, toPart[1]))
|
||||
{
|
||||
number++;
|
||||
p.Number = number;
|
||||
string text = line.Substring(25).Trim();
|
||||
p.Text = text.Replace(" | ", Environment.NewLine).Replace("|", Environment.NewLine);
|
||||
p.Text = DvdStudioPro.DecodeStyles(p.Text);
|
||||
subtitle.Paragraphs.Add(p);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_errorCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -48,6 +48,7 @@ namespace Nikse.SubtitleEdit.Logic.SubtitleFormats
|
||||
new DCinemaSmpte2007(),
|
||||
new DigiBeta(),
|
||||
new DvdStudioPro(),
|
||||
new DvdStudioProSpaceOne(),
|
||||
new DvdStudioProSpace(),
|
||||
new DvdSubtitle(),
|
||||
new DvdSubtitleSystem(),
|
||||
|
@ -875,6 +875,7 @@
|
||||
<Compile Include="Logic\StripableText.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\AdobeAfterEffectsFTME.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\AdobeEncore.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\DvdStudioProSpaceOne.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\SatBoxPng.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\UnknownSubtitle73.cs" />
|
||||
<Compile Include="Logic\SubtitleFormats\AdobeEncoreLineTabNewLine.cs" />
|
||||
|
Loading…
Reference in New Issue
Block a user