@jjlmoya/utils-audiovisual 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/category/i18n/de.ts +198 -0
- package/src/category/i18n/id.ts +198 -0
- package/src/category/i18n/it.ts +198 -0
- package/src/category/i18n/ja.ts +198 -0
- package/src/category/i18n/ko.ts +198 -0
- package/src/category/i18n/nl.ts +198 -0
- package/src/category/i18n/pl.ts +198 -0
- package/src/category/i18n/pt.ts +198 -0
- package/src/category/i18n/ru.ts +198 -0
- package/src/category/i18n/sv.ts +198 -0
- package/src/category/i18n/tr.ts +198 -0
- package/src/category/i18n/zh.ts +198 -0
- package/src/category/index.ts +31 -3
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tool/chromaticLens/i18n/de.ts +246 -0
- package/src/tool/chromaticLens/i18n/id.ts +246 -0
- package/src/tool/chromaticLens/i18n/it.ts +246 -0
- package/src/tool/chromaticLens/i18n/ja.ts +246 -0
- package/src/tool/chromaticLens/i18n/ko.ts +246 -0
- package/src/tool/chromaticLens/i18n/nl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pl.ts +246 -0
- package/src/tool/chromaticLens/i18n/pt.ts +246 -0
- package/src/tool/chromaticLens/i18n/ru.ts +246 -0
- package/src/tool/chromaticLens/i18n/sv.ts +246 -0
- package/src/tool/chromaticLens/i18n/tr.ts +246 -0
- package/src/tool/chromaticLens/i18n/zh.ts +246 -0
- package/src/tool/chromaticLens/index.ts +15 -7
- package/src/tool/collageMaker/i18n/de.ts +233 -0
- package/src/tool/collageMaker/i18n/id.ts +233 -0
- package/src/tool/collageMaker/i18n/it.ts +233 -0
- package/src/tool/collageMaker/i18n/ja.ts +233 -0
- package/src/tool/collageMaker/i18n/ko.ts +233 -0
- package/src/tool/collageMaker/i18n/nl.ts +233 -0
- package/src/tool/collageMaker/i18n/pl.ts +233 -0
- package/src/tool/collageMaker/i18n/pt.ts +233 -0
- package/src/tool/collageMaker/i18n/ru.ts +233 -0
- package/src/tool/collageMaker/i18n/sv.ts +233 -0
- package/src/tool/collageMaker/i18n/tr.ts +233 -0
- package/src/tool/collageMaker/i18n/zh.ts +233 -0
- package/src/tool/collageMaker/index.ts +15 -6
- package/src/tool/exifCleaner/i18n/de.ts +277 -0
- package/src/tool/exifCleaner/i18n/fr.ts +1 -1
- package/src/tool/exifCleaner/i18n/id.ts +277 -0
- package/src/tool/exifCleaner/i18n/it.ts +277 -0
- package/src/tool/exifCleaner/i18n/ja.ts +277 -0
- package/src/tool/exifCleaner/i18n/ko.ts +277 -0
- package/src/tool/exifCleaner/i18n/nl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pl.ts +277 -0
- package/src/tool/exifCleaner/i18n/pt.ts +277 -0
- package/src/tool/exifCleaner/i18n/ru.ts +277 -0
- package/src/tool/exifCleaner/i18n/sv.ts +277 -0
- package/src/tool/exifCleaner/i18n/tr.ts +277 -0
- package/src/tool/exifCleaner/i18n/zh.ts +277 -0
- package/src/tool/exifCleaner/index.ts +16 -8
- package/src/tool/imageCompressor/i18n/de.ts +242 -0
- package/src/tool/imageCompressor/i18n/en.ts +1 -1
- package/src/tool/imageCompressor/i18n/es.ts +1 -1
- package/src/tool/imageCompressor/i18n/id.ts +242 -0
- package/src/tool/imageCompressor/i18n/it.ts +242 -0
- package/src/tool/imageCompressor/i18n/ja.ts +242 -0
- package/src/tool/imageCompressor/i18n/ko.ts +242 -0
- package/src/tool/imageCompressor/i18n/nl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pl.ts +242 -0
- package/src/tool/imageCompressor/i18n/pt.ts +242 -0
- package/src/tool/imageCompressor/i18n/ru.ts +242 -0
- package/src/tool/imageCompressor/i18n/sv.ts +242 -0
- package/src/tool/imageCompressor/i18n/tr.ts +242 -0
- package/src/tool/imageCompressor/i18n/zh.ts +244 -0
- package/src/tool/imageCompressor/index.ts +15 -7
- package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/fr.ts +1 -1
- package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
- package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
- package/src/tool/printQualityCalculator/index.ts +15 -7
- package/src/tool/privacyBlur/i18n/de.ts +238 -0
- package/src/tool/privacyBlur/i18n/id.ts +238 -0
- package/src/tool/privacyBlur/i18n/it.ts +238 -0
- package/src/tool/privacyBlur/i18n/ja.ts +238 -0
- package/src/tool/privacyBlur/i18n/ko.ts +238 -0
- package/src/tool/privacyBlur/i18n/nl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pl.ts +238 -0
- package/src/tool/privacyBlur/i18n/pt.ts +238 -0
- package/src/tool/privacyBlur/i18n/ru.ts +238 -0
- package/src/tool/privacyBlur/i18n/sv.ts +238 -0
- package/src/tool/privacyBlur/i18n/tr.ts +238 -0
- package/src/tool/privacyBlur/i18n/zh.ts +238 -0
- package/src/tool/privacyBlur/index.ts +15 -7
- package/src/tool/subtitleSync/i18n/de.ts +241 -0
- package/src/tool/subtitleSync/i18n/fr.ts +5 -5
- package/src/tool/subtitleSync/i18n/id.ts +241 -0
- package/src/tool/subtitleSync/i18n/it.ts +241 -0
- package/src/tool/subtitleSync/i18n/ja.ts +241 -0
- package/src/tool/subtitleSync/i18n/ko.ts +241 -0
- package/src/tool/subtitleSync/i18n/nl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pl.ts +241 -0
- package/src/tool/subtitleSync/i18n/pt.ts +241 -0
- package/src/tool/subtitleSync/i18n/ru.ts +241 -0
- package/src/tool/subtitleSync/i18n/sv.ts +241 -0
- package/src/tool/subtitleSync/i18n/tr.ts +241 -0
- package/src/tool/subtitleSync/i18n/zh.ts +241 -0
- package/src/tool/subtitleSync/index.ts +15 -7
- package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
- package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
- package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
- package/src/tool/timelapseCalculator/index.ts +16 -8
- package/src/tool/tvDistance/i18n/de.ts +223 -0
- package/src/tool/tvDistance/i18n/id.ts +223 -0
- package/src/tool/tvDistance/i18n/it.ts +223 -0
- package/src/tool/tvDistance/i18n/ja.ts +223 -0
- package/src/tool/tvDistance/i18n/ko.ts +223 -0
- package/src/tool/tvDistance/i18n/nl.ts +223 -0
- package/src/tool/tvDistance/i18n/pl.ts +223 -0
- package/src/tool/tvDistance/i18n/pt.ts +223 -0
- package/src/tool/tvDistance/i18n/ru.ts +223 -0
- package/src/tool/tvDistance/i18n/sv.ts +223 -0
- package/src/tool/tvDistance/i18n/tr.ts +223 -0
- package/src/tool/tvDistance/i18n/zh.ts +223 -0
- package/src/tool/tvDistance/index.ts +15 -7
- package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
- package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
- package/src/tool/videoFrameExtractor/index.ts +16 -8
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { SubtitleSyncUI, SubtitleSyncLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'srt-untertitel-online-synchronisieren-timing-anpassen-kostenlos';
|
|
5
|
+
const title = 'SRT Untertitel online synchronisieren: Timing kostenlos anpassen';
|
|
6
|
+
const description = 'Online-Tool zum Vorziehen oder Verzögern von SRT-Untertiteln. Korrigieren Sie den Zeitversatz ganz einfach und laden Sie die synchronisierte Datei sofort herunter.';
|
|
7
|
+
|
|
8
|
+
const ui: SubtitleSyncUI = {
|
|
9
|
+
dropTitle: "Ziehen Sie Ihre .SRT-Datei hierher",
|
|
10
|
+
dropSubtitle: "oder klicken Sie zum Durchsuchen",
|
|
11
|
+
adjustTitle: "Zeit anpassen",
|
|
12
|
+
offsetLabel: "Versatz (Sekunden)",
|
|
13
|
+
offsetHelp: "Negative Werte zum Vorziehen (z. B. -1.5) und positive Werte zum Verzögern verwenden.",
|
|
14
|
+
linesStat: "Zeilen",
|
|
15
|
+
firstStat: "Erster Untertitel",
|
|
16
|
+
lastStat: "Letzter Untertitel",
|
|
17
|
+
originalLabel: "ORIGINAL",
|
|
18
|
+
resultLabel: "ERGEBNIS",
|
|
19
|
+
downloadButton: "Korrigierte Version herunterladen",
|
|
20
|
+
previewBadge: "VORSCHAU",
|
|
21
|
+
unitSeconds: "Sek."
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const faq: SubtitleSyncLocaleContent['faq'] = [
|
|
25
|
+
{
|
|
26
|
+
question: "Wie kann ich meine Untertitel synchronisieren, wenn der Ton früher kommt?",
|
|
27
|
+
answer: "Wenn der Ton vor dem Text erscheint, müssen Sie die Untertitel verzögern. Geben Sie einen positiven Wert in den Rechner ein (z. B. 2.0, um sie um 2 Sekunden zu verzögern).",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
question: "Welche Dateiformate akzeptiert dieses Tool?",
|
|
31
|
+
answer: "Derzeit ist das Tool für .SRT-Dateien (SubRip) optimiert, den am weitesten verbreiteten Standard in Videoplayern und Streaming-Plattformen.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: "Ist es sicher, meine Untertiteldateien hochzuladen?",
|
|
35
|
+
answer: "Ja, da die Verarbeitung zu 100 % lokal auf Ihrem Gerät erfolgt. Ihre Dateien werden an keinen Server gesendet; die Synchronisierung erfolgt direkt in Ihrem Browser.",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
question: "Kann ich nur einen Teil der Datei synchronisieren?",
|
|
39
|
+
answer: "Nein, dieses Tool wendet einen konstanten Versatz auf die gesamte Datei an. Wenn der Versatz progressiv ist, benötigen Sie möglicherweise fortgeschrittenere Bearbeitungsmöglichkeiten.",
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const howTo: SubtitleSyncLocaleContent['howTo'] = [
|
|
44
|
+
{
|
|
45
|
+
name: "SRT-Datei hochladen",
|
|
46
|
+
text: "Ziehen Sie die zu korrigierende Untertiteldatei in den Upload Bereich.",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "Versatz bestimmen",
|
|
50
|
+
text: "Messen Sie in Ihrem Player, wie hoch die Verzögerung oder der Vorlauf der Untertitel im Vergleich zum Ton ist.",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Versatz anpassen",
|
|
54
|
+
text: "Geben Sie positive (Verzögerung) oder negative (Vorlauf) Sekunden im Bedienfeld ein.",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "Datei herunterladen",
|
|
58
|
+
text: "Überprüfen Sie in der Vorschau, ob die Zeiten stimmen, und klicken Sie auf Herunterladen, um Ihre neue SRT Datei zu erhalten.",
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const bibliography: SubtitleSyncLocaleContent['bibliography'] = [
|
|
63
|
+
{
|
|
64
|
+
name: "SubRip (SRT) Format-Spezifikation",
|
|
65
|
+
url: "https://matroska.org/technical/subtitles.html#srt-subtitles",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: "MDN Web Docs - FileReader API",
|
|
69
|
+
url: "https://developer.mozilla.org/en-US/docs/Web/API/FileReader",
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
|
|
73
|
+
const seo: SubtitleSyncLocaleContent['seo'] = [
|
|
74
|
+
{
|
|
75
|
+
type: 'summary',
|
|
76
|
+
title: 'Professionelle Untertitel Synchronisation',
|
|
77
|
+
items: [
|
|
78
|
+
'Sofortige Korrektur von Ton-Untertitel-Versätzen',
|
|
79
|
+
'Unterstützt Standard-SRT-Dateien (SubRip)',
|
|
80
|
+
'100 % lokale Verarbeitung – maximale Privatsphäre',
|
|
81
|
+
'Keine Installation, kein Abonnement, völlig kostenlos'
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{ type: 'title', text: 'Perfekte SRT Untertitel Synchronisation', level: 2 },
|
|
85
|
+
{ type: 'paragraph', html: 'Es gibt für Zuschauer kaum etwas Frustrierenderes als Dialoge, die nicht zu den Stimmen passen. Untertitel-Versätze entstehen meist durch Unterschiede zwischen Videoversionen: Abweichungen in der Framerate, Werbeunterbrechungen, Produktionsintros oder Änderungen in der Kompression. Mit diesem Tool beheben Sie das Problem in Sekunden.' },
|
|
86
|
+
|
|
87
|
+
{ type: 'stats', items: [
|
|
88
|
+
{ value: '100 %', label: 'Lokale Verarbeitung', icon: 'mdi:shield' },
|
|
89
|
+
{ value: 'Millisekunden', label: 'Präzision', icon: 'mdi:clock-outline' },
|
|
90
|
+
{ value: 'Beliebig', label: 'KEIN Dateilimit', icon: 'mdi:file-document' }
|
|
91
|
+
], columns: 3 },
|
|
92
|
+
|
|
93
|
+
{ type: 'title', text: 'Vorziehen vs. Verzögern: Praxisleitfaden', level: 3 },
|
|
94
|
+
{ type: 'paragraph', html: 'Der erste Schritt besteht darin, den Typ des Versatzes korrekt zu identifizieren. Hier ist die Logik:' },
|
|
95
|
+
{ type: 'list', items: [
|
|
96
|
+
'<strong>Verzögerung (Positiver Wert):</strong> Wenn der Text ERSCHEINT, BEVOR der Ton zu hören ist. Die Untertitel sind zu früh. Beispiel: +2.0 Sekunden.',
|
|
97
|
+
'<strong>Vorziehen (Negativer Wert):</strong> Wenn der Text ERSCHEINT, NACHDEM der Ton zu hören war. Die Untertitel sind zu spät. Beispiel: -2.0 Sekunden.',
|
|
98
|
+
'<strong>Testen und Anpassen:</strong> Beginnen Sie mit kleinen Schritten (0,5 Sek.) und nutzen Sie die Vorschau zur Validierung.'
|
|
99
|
+
], icon: 'mdi:arrow-right' },
|
|
100
|
+
|
|
101
|
+
{ type: 'card', title: 'Privatsphäre auf professionellem Niveau', html: 'Durch die Verarbeitung der Datei mittels clientseitigem JavaScript garantieren wir, dass der Inhalt Ihrer Untertitel niemals Ihren Computer verlässt. Essenziell für Übersetzer und Profis, die vertrauliches Material bearbeiten oder unter Vertraulichkeitsvereinbarungen (NDA) stehen.' },
|
|
102
|
+
|
|
103
|
+
{ type: 'title', text: 'Häufige Anwendungsfälle', level: 3 },
|
|
104
|
+
{ type: 'comparative', items: [
|
|
105
|
+
{
|
|
106
|
+
title: 'Übersetzer und Untertitler',
|
|
107
|
+
description: 'Synchronisieren von Übersetzungen nach der Arbeit mit mehreren Videoversionen',
|
|
108
|
+
icon: 'mdi:translate',
|
|
109
|
+
points: [
|
|
110
|
+
'SRT-Dateien aus verschiedenen Quellen',
|
|
111
|
+
'Inhaltsversionierung (Kino vs. Streaming)',
|
|
112
|
+
'Schnelle Lieferung ohne Werkzeugwechsel'
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
title: 'Content Ersteller',
|
|
117
|
+
description: 'Wiederherstellung von Untertiteln, wenn das Video mit einer anderen Framerate verarbeitet wurde',
|
|
118
|
+
icon: 'mdi:video',
|
|
119
|
+
points: [
|
|
120
|
+
'Wiederverwendung vorhandener Untertitel',
|
|
121
|
+
'Formatänderungen (720p zu 1080p)',
|
|
122
|
+
'Vermeidung von manuellem Retiming tausender Zeilen'
|
|
123
|
+
],
|
|
124
|
+
highlight: true
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
title: 'Hobby Nutzer',
|
|
128
|
+
description: 'Korrigieren heruntergeladener Untertitel, die nicht perfekt passen',
|
|
129
|
+
icon: 'mdi:account',
|
|
130
|
+
points: [
|
|
131
|
+
'Generische asynchrone Untertitel',
|
|
132
|
+
'Filme aus verschiedenen Regionen (PAL vs. NTSC)',
|
|
133
|
+
'Streaming mit bearbeiteten Versionen'
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
], columns: 3 },
|
|
137
|
+
|
|
138
|
+
{ type: 'title', text: 'Warum Untertitel asynchron werden', level: 3 },
|
|
139
|
+
{ type: 'table', headers: ['Häufige Ursache', 'Technische Beschreibung', 'Lösung'], rows: [
|
|
140
|
+
['Framerate-Unterschied', '23.976 fps vs. 25 fps - kumulierter Unterschied', 'Einmalige Versatzanpassung (dieses Tool)'],
|
|
141
|
+
['Editoriale Änderungen', 'Werbeschnitte oder entfernter/hinzugefügter Inhalt', 'Manuelle Berechnung + Synchronisation'],
|
|
142
|
+
['Region-Version', 'PAL (25 fps Europa) vs. NTSC (29.97 fps USA)', 'Einfacher mathematischer Versatz'],
|
|
143
|
+
['Auflösungsänderung', 'Neu-Enkodierung mit anderer Verarbeitungsgeschwindigkeit', 'Neuberechnung der Originaldatei']
|
|
144
|
+
] },
|
|
145
|
+
|
|
146
|
+
{ type: 'diagnostic', variant: 'info', title: 'Technische Einschränkungen', icon: 'mdi:information', badge: 'Wichtig', html: 'Dieses Tool wendet einen <strong>konstanten</strong> Versatz auf die gesamte Datei an. Wenn der Versatz <strong>progressiv</strong> ist (am Anfang passend, wird aber allmählich asynchron), deutet dies auf einen dauerhaften Framerate-Unterschied hin. In diesem Fall muss die Originaldatei in einer professionellen Videoschnittsoftware neu verarbeitet werden.' },
|
|
147
|
+
|
|
148
|
+
{ type: 'proscons', items: [
|
|
149
|
+
{
|
|
150
|
+
pro: 'Extreme Geschwindigkeit - verarbeitet große Dateien in Millisekunden',
|
|
151
|
+
con: 'Passt nur fixen Versatz an, keinen progressiven'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
pro: 'Volle Privatsphäre - Inhalt verlässt nie den Browser',
|
|
155
|
+
con: 'Erfordert modernen Browser mit aktiviertem JavaScript'
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
pro: 'Universelles Format - funktioniert mit jeder Standard-SRT',
|
|
159
|
+
con: 'Unterstützt keine anderen Formate (ASS, VTT, SCC usw.)'
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
pro: 'Völlig kostenlos, keine Werbung, kein Tracking',
|
|
163
|
+
con: 'Keine Änderungshistorie oder Versionierung'
|
|
164
|
+
}
|
|
165
|
+
], proTitle: 'Vorteile', conTitle: 'Einschränkungen' },
|
|
166
|
+
|
|
167
|
+
{ type: 'glossary', items: [
|
|
168
|
+
{
|
|
169
|
+
term: 'SRT (SubRip)',
|
|
170
|
+
definition: 'Das universellste Untertitelformat: Textdatei mit Sequenznummern, Zeiten (hh:mm:ss,mmm) und Text. De-facto-Standard in Playern und Plattformen.'
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
term: 'Versatz (Offset)',
|
|
174
|
+
definition: 'Fester Zeitbetrag, der zu allen Zeiten in der Datei addiert oder subtrahiert wird. Kann positive Sekunden (Verzögerung) oder negative (Vorziehen) sein.'
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
term: 'Framerate (fps)',
|
|
178
|
+
definition: 'Bilder pro Sekunde. 24p (Kino), 25p (PAL/Europa), 29.97p (NTSC/USA), 60p (flüssiges Video). Unterschiede führen zu kumulativen Versätzen.'
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
term: 'NTSC vs. PAL',
|
|
182
|
+
definition: 'Regionale TV-Standards: PAL (25 fps) in Europa; NTSC (29.97 fps) in den USA. Ca. 4 % Geschwindigkeitsunterschied.'
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
term: 'Progressiver Versatz',
|
|
186
|
+
definition: 'Wenn die Synchronisation am Anfang stimmt, sich aber allmählich verschlechtert. Deutet auf Framerate-Unterschiede hin, erfordert Neuverarbeitung.'
|
|
187
|
+
}
|
|
188
|
+
] },
|
|
189
|
+
|
|
190
|
+
{ type: 'message', title: 'Professionelle Bearbeitung mit voller Kontrolle', ariaLabel: 'Technische Informationen zur Synchronisation', html: 'Unser Ansatz ist einfach, aber leistungsstark: ein einziger Versatz, sofort angewendet, zu 100 % in Ihrem Browser verarbeitet. Keine Cloud, keine Speicherung, kein Tracking. Einfach hochladen, anpassen, herunterladen. Volle Kontrolle über Ihren Inhalt.' },
|
|
191
|
+
|
|
192
|
+
{ type: 'title', text: 'Fazit: Filme ohne Unterbrechungen', level: 3 },
|
|
193
|
+
{ type: 'paragraph', html: 'Eine perfekte Untertitel-Synchronisation ist entscheidend für ein hochwertiges audiovisuelles Erlebnis. Mit diesem Tool verwandeln Sie eine frustrierende Erfahrung in einen perfekten Filmabend, ohne die Notwendigkeit für teure oder komplizierte Software.' }
|
|
194
|
+
];
|
|
195
|
+
|
|
196
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
197
|
+
'@context': 'https://schema.org',
|
|
198
|
+
'@type': 'FAQPage',
|
|
199
|
+
mainEntity: faq.map((item) => ({
|
|
200
|
+
'@type': 'Question',
|
|
201
|
+
name: item.question,
|
|
202
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
203
|
+
})),
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
const howToSchema: WithContext<HowTo> = {
|
|
207
|
+
'@context': 'https://schema.org',
|
|
208
|
+
'@type': 'HowTo',
|
|
209
|
+
name: title,
|
|
210
|
+
description,
|
|
211
|
+
step: howTo.map((step) => ({
|
|
212
|
+
'@type': 'HowToStep',
|
|
213
|
+
name: step.name,
|
|
214
|
+
text: step.text,
|
|
215
|
+
})),
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
219
|
+
'@context': 'https://schema.org',
|
|
220
|
+
'@type': 'SoftwareApplication',
|
|
221
|
+
name: title,
|
|
222
|
+
description,
|
|
223
|
+
applicationCategory: 'UtilitiesApplication',
|
|
224
|
+
operatingSystem: 'Web',
|
|
225
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
226
|
+
inLanguage: 'de',
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
export const content: SubtitleSyncLocaleContent = {
|
|
230
|
+
slug,
|
|
231
|
+
title,
|
|
232
|
+
description,
|
|
233
|
+
ui,
|
|
234
|
+
seo,
|
|
235
|
+
faq,
|
|
236
|
+
faqTitle: 'Häufig gestellte Fragen zur Untertitel Synchronisation',
|
|
237
|
+
bibliography,
|
|
238
|
+
bibliographyTitle: 'Technische Ressourcen zu Untertitelformaten',
|
|
239
|
+
howTo,
|
|
240
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
241
|
+
};
|
|
@@ -43,7 +43,7 @@ const faq: SubtitleSyncLocaleContent['faq'] = [
|
|
|
43
43
|
const howTo: SubtitleSyncLocaleContent['howTo'] = [
|
|
44
44
|
{
|
|
45
45
|
name: "Importez votre fichier SRT",
|
|
46
|
-
text: "Faites glisser le fichier de sous
|
|
46
|
+
text: "Faites glisser le fichier de sous titres que vous souhaitez corriger dans la zone de téléchargement.",
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
name: "Identifiez le décalage",
|
|
@@ -81,7 +81,7 @@ const seo: SubtitleSyncLocaleContent['seo'] = [
|
|
|
81
81
|
'Sans installation, sans abonnement, complètement gratuit'
|
|
82
82
|
]
|
|
83
83
|
},
|
|
84
|
-
{ type: 'title', text: 'Synchronisation Parfaite de Sous
|
|
84
|
+
{ type: 'title', text: 'Synchronisation Parfaite de Sous titres SRT', level: 2 },
|
|
85
85
|
{ type: 'paragraph', html: 'Il n\'y a rien de plus frustrant que de voir des dialogues qui ne correspondent pas aux voix. Le décalage des sous-titres survient souvent à cause de différences entre les versions vidéo : variations de fréquence d\'images, coupures publicitaires, intros de production ou changements de compression. Avec cet outil, vous réglez le problème en quelques secondes.' },
|
|
86
86
|
|
|
87
87
|
{ type: 'stats', items: [
|
|
@@ -135,7 +135,7 @@ const seo: SubtitleSyncLocaleContent['seo'] = [
|
|
|
135
135
|
}
|
|
136
136
|
], columns: 3 },
|
|
137
137
|
|
|
138
|
-
{ type: 'title', text: 'Pourquoi les Sous
|
|
138
|
+
{ type: 'title', text: 'Pourquoi les Sous titres se Désynchronisent', level: 3 },
|
|
139
139
|
{ type: 'table', headers: ['Cause Commune', 'Description Technique', 'Solution'], rows: [
|
|
140
140
|
['Différence de Framerate', '23,976 fps vs 25 fps - accumulation de différence', 'Ajustement du décalage unique (cet outil)'],
|
|
141
141
|
['Éditorialisation', 'Coupures publicitaires ou contenu supprimé', 'Calcul manuel + synchronisation'],
|
|
@@ -233,9 +233,9 @@ export const content: SubtitleSyncLocaleContent = {
|
|
|
233
233
|
ui,
|
|
234
234
|
seo,
|
|
235
235
|
faq,
|
|
236
|
-
faqTitle: 'Foire Aux Questions sur la Synchronisation des Sous
|
|
236
|
+
faqTitle: 'Foire Aux Questions sur la Synchronisation des Sous titres',
|
|
237
237
|
bibliography,
|
|
238
|
-
bibliographyTitle: 'Ressources Techniques sur les Formats de Sous
|
|
238
|
+
bibliographyTitle: 'Ressources Techniques sur les Formats de Sous titres',
|
|
239
239
|
howTo,
|
|
240
240
|
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
241
241
|
};
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { SubtitleSyncUI, SubtitleSyncLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'sinkronisasi-subtitle-srt-online-atur-timing-gratis';
|
|
5
|
+
const title = 'Sinkronisasi Subtitle SRT Online: Atur Timing Gratis';
|
|
6
|
+
const description = 'Alat online untuk memajukan atau menunda subtitle SRT. Perbaiki offset waktu dengan mudah dan unduh file yang disinkronkan secara instan.';
|
|
7
|
+
|
|
8
|
+
const ui: SubtitleSyncUI = {
|
|
9
|
+
dropTitle: "Seret file .SRT Anda ke sini",
|
|
10
|
+
dropSubtitle: "atau klik untuk mencari",
|
|
11
|
+
adjustTitle: "Atur Waktu",
|
|
12
|
+
offsetLabel: "Offset (detik)",
|
|
13
|
+
offsetHelp: "Gunakan nilai negatif untuk memajukan (misal: -1.5) dan nilai positif untuk menunda.",
|
|
14
|
+
linesStat: "Baris",
|
|
15
|
+
firstStat: "Subtitle Pertama",
|
|
16
|
+
lastStat: "Subtitle Terakhir",
|
|
17
|
+
originalLabel: "ASLI",
|
|
18
|
+
resultLabel: "HASIL",
|
|
19
|
+
downloadButton: "Unduh yang Diperbaiki",
|
|
20
|
+
previewBadge: "PRATINJAU",
|
|
21
|
+
unitSeconds: "det"
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const faq: SubtitleSyncLocaleContent['faq'] = [
|
|
25
|
+
{
|
|
26
|
+
question: "Bagaimana cara menyinkronkan subtitle saya jika audionya lebih cepat?",
|
|
27
|
+
answer: "Jika audio muncul sebelum teks, Anda harus menunda subtitle. Masukkan nilai positif di kalkulator (misal: 2.0 untuk menundanya selama 2 detik).",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
question: "Format file apa yang didukung alat ini?",
|
|
31
|
+
answer: "Saat ini, alat ini dioptimalkan untuk file .SRT (SubRip), yang merupakan standar paling umum di pemutar video dan platform streaming.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: "Apakah aman untuk mengunggah file subtitle saya?",
|
|
35
|
+
answer: "Ya, karena pemrosesan dilakukan 100% secara lokal di perangkat Anda. File Anda tidak dikirim ke server mana pun; sinkronisasi terjadi langsung di browser Anda.",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
question: "Bisakah saya menyinkronkan hanya sebagian file?",
|
|
39
|
+
answer: "Tidak, alat ini menerapkan offset konstan ke seluruh file. Jika offset bersifat progresif, Anda mungkin memerlukan pengeditan yang lebih canggih.",
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const howTo: SubtitleSyncLocaleContent['howTo'] = [
|
|
44
|
+
{
|
|
45
|
+
name: "Unggah file SRT Anda",
|
|
46
|
+
text: "Seret file subtitle yang ingin Anda perbaiki ke area unggah.",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "Identifikasi offset",
|
|
50
|
+
text: "Ukur seberapa besar penundaan atau percepatan subtitle relatif terhadap audio di pemutar Anda.",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Atur offset",
|
|
54
|
+
text: "Masukkan detik positif (tunda) atau negatif (majukan) di panel kontrol.",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "Unduh filenya",
|
|
58
|
+
text: "Verifikasi di pratinjau bahwa waktunya sudah benar dan klik unduh untuk mendapatkan SRT baru Anda.",
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const bibliography: SubtitleSyncLocaleContent['bibliography'] = [
|
|
63
|
+
{
|
|
64
|
+
name: "Spesifikasi format SubRip (SRT)",
|
|
65
|
+
url: "https://matroska.org/technical/subtitles.html#srt-subtitles",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: "MDN Web Docs - FileReader API",
|
|
69
|
+
url: "https://developer.mozilla.org/en-US/docs/Web/API/FileReader",
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
|
|
73
|
+
const seo: SubtitleSyncLocaleContent['seo'] = [
|
|
74
|
+
{
|
|
75
|
+
type: 'summary',
|
|
76
|
+
title: 'Sinkronisasi Subtitle Profesional',
|
|
77
|
+
items: [
|
|
78
|
+
'Koreksi instan offset audio-subtitle',
|
|
79
|
+
'Mendukung file standar SRT (SubRip)',
|
|
80
|
+
'Pemrosesan lokal 100% - privasi maksimum',
|
|
81
|
+
'Tanpa instalasi, tanpa langganan, sepenuhnya gratis'
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{ type: 'title', text: 'Sinkronisasi Subtitle SRT yang Sempurna', level: 2 },
|
|
85
|
+
{ type: 'paragraph', html: 'Tidak ada yang lebih membuat frustrasi penonton daripada melihat dialog yang tidak cocok dengan suara. Offset subtitle biasanya terjadi karena perbedaan antara versi video: variasi framerate, pemotongan iklan, intro produksi, atau perubahan kompresi. Dengan alat ini, Anda memperbaiki masalah dalam hitungan detik.' },
|
|
86
|
+
|
|
87
|
+
{ type: 'stats', items: [
|
|
88
|
+
{ value: '100%', label: 'Pemrosesan Lokal', icon: 'mdi:shield' },
|
|
89
|
+
{ value: 'Milidetik', label: 'Presisi', icon: 'mdi:clock-outline' },
|
|
90
|
+
{ value: 'Berapa pun', label: 'TANPA Batas File', icon: 'mdi:file-document' }
|
|
91
|
+
], columns: 3 },
|
|
92
|
+
|
|
93
|
+
{ type: 'title', text: 'Majukan vs Tunda: Panduan Praktis', level: 3 },
|
|
94
|
+
{ type: 'paragraph', html: 'Langkah pertama adalah mengidentifikasi jenis offset dengan benar. Inilah logikanya:' },
|
|
95
|
+
{ type: 'list', items: [
|
|
96
|
+
'<strong>Tunda (Nilai Positif):</strong> Ketika Anda melihat teks muncul SEBELUM suara. Subtitle terlalu cepat. Contoh: +2,0 detik.',
|
|
97
|
+
'<strong>Majukan (Nilai Negatif):</strong> Ketika Anda melihat teks muncul SETELAH suara. Subtitle terlambat. Contoh: -2,0 detik.',
|
|
98
|
+
'<strong>Uji dan Atur:</strong> Mulailah dengan peningkatan kecil (0,5 detik) dan gunakan pratinjau untuk memvalidasi.'
|
|
99
|
+
], icon: 'mdi:arrow-right' },
|
|
100
|
+
|
|
101
|
+
{ type: 'card', title: 'Privasi Tingkat Profesional', html: 'Dengan memproses file melalui JavaScript sisi klien, kami menjamin bahwa konten subtitle Anda tidak pernah meninggalkan komputer Anda. Penting bagi penerjemah dan profesional yang menangani materi rahasia atau di bawah NDA.' },
|
|
102
|
+
|
|
103
|
+
{ type: 'title', text: 'Kasus Penggunaan Umum', level: 3 },
|
|
104
|
+
{ type: 'comparative', items: [
|
|
105
|
+
{
|
|
106
|
+
title: 'Penerjemah dan Pembuat Subtitle',
|
|
107
|
+
description: 'Sinkronkan terjemahan setelah bekerja dengan beberapa versi video',
|
|
108
|
+
icon: 'mdi:translate',
|
|
109
|
+
points: [
|
|
110
|
+
'File SRT dari berbagai sumber',
|
|
111
|
+
'Versioning konten (bioskop vs streaming)',
|
|
112
|
+
'Pengiriman cepat tanpa mengganti alat'
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
title: 'Pembuat Konten',
|
|
117
|
+
description: 'Pulihkan subtitle ketika video diproses dengan framerate yang berbeda',
|
|
118
|
+
icon: 'mdi:video',
|
|
119
|
+
points: [
|
|
120
|
+
'Gunakan kembali subtitle yang ada',
|
|
121
|
+
'Perubahan format (720p ke 1080p)',
|
|
122
|
+
'Hindari pengaturan ulang waktu manual untuk 1000+ baris'
|
|
123
|
+
],
|
|
124
|
+
highlight: true
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
title: 'Pengguna Biasa',
|
|
128
|
+
description: 'Perbaiki subtitle unduhan yang tidak pas secara sempurna',
|
|
129
|
+
icon: 'mdi:account',
|
|
130
|
+
points: [
|
|
131
|
+
'Subtitle generik yang tidak sinkron',
|
|
132
|
+
'Film di wilayah berbeda (PAL vs NTSC)',
|
|
133
|
+
'Streaming dengan versi yang diedit'
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
], columns: 3 },
|
|
137
|
+
|
|
138
|
+
{ type: 'title', text: 'Mengapa Subtitle Tidak Sinkron', level: 3 },
|
|
139
|
+
{ type: 'table', headers: ['Penyebab Umum', 'Deskripsi Teknis', 'Solusi'], rows: [
|
|
140
|
+
['Perbedaan Framerate', '23,976 fps vs 25 fps - perbedaan akumulasi', 'Penyesuaian offset tunggal (alat ini)'],
|
|
141
|
+
['Editorial', 'Pemotongan iklan atau konten tambahan dihapus', 'Perhitungan manual + sinkronisasi'],
|
|
142
|
+
['Versi Regional', 'PAL (25 fps Eropa) vs NTSC (29,97 fps AS)', 'Offset matematika sederhana'],
|
|
143
|
+
['Perubahan Resolusi', 'Enkode ulang dengan kecepatan pemrosesan berbeda', 'Penghitungan ulang file asli']
|
|
144
|
+
] },
|
|
145
|
+
|
|
146
|
+
{ type: 'diagnostic', variant: 'info', title: 'Batasan Teknis yang Perlu Dipertimbangkan', icon: 'mdi:information', badge: 'Penting', html: 'Alat ini menerapkan offset <strong>konstan</strong> ke seluruh file. Jika offset bersifat <strong>progresif</strong> (awal sinkron tetapi perlahan menjadi tidak sinkron), itu menunjukkan perbedaan framerate yang persisten. Dalam hal ini, file asli perlu diproses ulang di perangkat lunak pengeditan profesional.' },
|
|
147
|
+
|
|
148
|
+
{ type: 'proscons', items: [
|
|
149
|
+
{
|
|
150
|
+
pro: 'Kecepatan ekstrem - memproses file besar dalam milidetik',
|
|
151
|
+
con: 'Hanya mengatur offset tetap, bukan yang progresif'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
pro: 'Privasi total - konten tidak pernah meninggalkan browser Anda',
|
|
155
|
+
con: 'Memerlukan browser modern dengan JavaScript yang diaktifkan'
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
pro: 'Format universal - berfungsi dengan SRT standar apa pun',
|
|
159
|
+
con: 'Tidak mendukung format lain (ASS, VTT, SCC, dll.)'
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
pro: 'Sepenuhnya gratis, tanpa iklan, tanpa pelacakan',
|
|
163
|
+
con: 'Tidak ada riwayat perubahan atau versioning'
|
|
164
|
+
}
|
|
165
|
+
], proTitle: 'Keuntungan', conTitle: 'Batasan' },
|
|
166
|
+
|
|
167
|
+
{ type: 'glossary', items: [
|
|
168
|
+
{
|
|
169
|
+
term: 'SRT (SubRip)',
|
|
170
|
+
definition: 'Format subtitle paling universal: file teks dengan nomor urut, waktu (jj:mm:dd,mmm), dan teks. Standar de facto di pemutar dan platform.'
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
term: 'Offset',
|
|
174
|
+
definition: 'Jumlah waktu tetap yang ditambah atau dikurangi dari semua waktu dalam file. Bisa berupa detik positif (tunda) atau negatif (majukan).'
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
term: 'Framerate (fps)',
|
|
178
|
+
definition: 'Frame per detik. 24p (bioskop), 25p (PAL/Eropa), 29,97p (NTSC/AS), 60p (video lancar). Perbedaan menyebabkan offset kumulatif.'
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
term: 'NTSC vs PAL',
|
|
182
|
+
definition: 'Standar televisi regional: PAL (25 fps) di Eropa; NTSC (29,97 fps) di AS. Perbedaan kecepatan sekitar 4%.'
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
term: 'Offset Progresif',
|
|
186
|
+
definition: 'Ketika sinkronisasi dimulai dengan benar tetapi perlahan-lahan menjadi tidak sinkron. Menunjukkan perbedaan framerate, memerlukan pemrosesan ulang.'
|
|
187
|
+
}
|
|
188
|
+
] },
|
|
189
|
+
|
|
190
|
+
{ type: 'message', title: 'Pengeditan Profesional dengan Kontrol Penuh', ariaLabel: 'Informasi teknis tentang sinkronisasi', html: 'Pendekatan kami sederhana namun ampuh: satu offset, diterapkan secara instan, diproses 100% di browser Anda. Tanpa cloud, tanpa penyimpanan, tanpa pelacakan. Cukup unggah, atur, unduh. Kontrol penuh atas konten Anda.' },
|
|
191
|
+
|
|
192
|
+
{ type: 'title', text: 'Kesimpulan: Menonton Tanpa Gangguan', level: 3 },
|
|
193
|
+
{ type: 'paragraph', html: 'Sinkronisasi subtitle yang sempurna sangat penting untuk pengalaman audiovisual yang berkualitas. Dengan alat ini, Anda mengubah pengalaman yang menjengkelkan menjadi malam menonton film yang sempurna, tanpa memerlukan perangkat lunak yang mahal atau rumit.' }
|
|
194
|
+
];
|
|
195
|
+
|
|
196
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
197
|
+
'@context': 'https://schema.org',
|
|
198
|
+
'@type': 'FAQPage',
|
|
199
|
+
mainEntity: faq.map((item) => ({
|
|
200
|
+
'@type': 'Question',
|
|
201
|
+
name: item.question,
|
|
202
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
203
|
+
})),
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
const howToSchema: WithContext<HowTo> = {
|
|
207
|
+
'@context': 'https://schema.org',
|
|
208
|
+
'@type': 'HowTo',
|
|
209
|
+
name: title,
|
|
210
|
+
description,
|
|
211
|
+
step: howTo.map((step) => ({
|
|
212
|
+
'@type': 'HowToStep',
|
|
213
|
+
name: step.name,
|
|
214
|
+
text: step.text,
|
|
215
|
+
})),
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
219
|
+
'@context': 'https://schema.org',
|
|
220
|
+
'@type': 'SoftwareApplication',
|
|
221
|
+
name: title,
|
|
222
|
+
description,
|
|
223
|
+
applicationCategory: 'UtilitiesApplication',
|
|
224
|
+
operatingSystem: 'Web',
|
|
225
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
226
|
+
inLanguage: 'id',
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
export const content: SubtitleSyncLocaleContent = {
|
|
230
|
+
slug,
|
|
231
|
+
title,
|
|
232
|
+
description,
|
|
233
|
+
ui,
|
|
234
|
+
seo,
|
|
235
|
+
faq,
|
|
236
|
+
faqTitle: 'Pertanyaan yang Sering Diajukan tentang Sinkronisasi Subtitle',
|
|
237
|
+
bibliography,
|
|
238
|
+
bibliographyTitle: 'Sumber Daya Teknis tentang Format Subtitle',
|
|
239
|
+
howTo,
|
|
240
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
241
|
+
};
|