@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 = 'sinhronizirovat-subtitry-srt-onlajn-ispravit-tajming-besplatno';
|
|
5
|
+
const title = 'Синхронизация субтитров SRT онлайн: Настройка тайминга бесплатно';
|
|
6
|
+
const description = 'Онлайн-инструмент для ускорения или задержки субтитров SRT. Легко исправьте временной сдвиг и мгновенно скачайте синхронизированный файл.';
|
|
7
|
+
|
|
8
|
+
const ui: SubtitleSyncUI = {
|
|
9
|
+
dropTitle: "Перетащите файл .SRT сюда",
|
|
10
|
+
dropSubtitle: "или нажмите для выбора",
|
|
11
|
+
adjustTitle: "Настроить время",
|
|
12
|
+
offsetLabel: "Смещение (секунды)",
|
|
13
|
+
offsetHelp: "Используйте отрицательные значения для ускорения (например, -1.5) и положительные для задержки.",
|
|
14
|
+
linesStat: "Строк",
|
|
15
|
+
firstStat: "Первый субтитр",
|
|
16
|
+
lastStat: "Последний субтитр",
|
|
17
|
+
originalLabel: "ОРИГИНАЛ",
|
|
18
|
+
resultLabel: "РЕЗУЛЬТАТ",
|
|
19
|
+
downloadButton: "Скачать исправленный",
|
|
20
|
+
previewBadge: "ПРЕДПРОСМОТР",
|
|
21
|
+
unitSeconds: "сек"
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const faq: SubtitleSyncLocaleContent['faq'] = [
|
|
25
|
+
{
|
|
26
|
+
question: "Как мне синхронизировать субтитры, если звук идет раньше?",
|
|
27
|
+
answer: "Если звук появляется раньше текста, вам нужно задержать субтитры. Введите положительное значение в калькулятор (например, 2.0, чтобы задержать их на 2 секунды).",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
question: "Какие форматы файлов принимает этот инструмент?",
|
|
31
|
+
answer: "В настоящее время инструмент оптимизирован для файлов .SRT (SubRip), который является наиболее распространенным стандартом в видеоплеерах и на стриминговых платформах.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: "Безопасно ли загружать мои файлы субтитров?",
|
|
35
|
+
answer: "Да, так как обработка на 100% локальна на вашем устройстве. Ваши файлы не отправляются ни на какой сервер; синхронизация происходит прямо в вашем браузере.",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
question: "Могу ли я синхронизировать только часть файла?",
|
|
39
|
+
answer: "Нет, этот инструмент применяет постоянное смещение ко всему файлу. Если смещение прогрессивное, вам может понадобиться более продвинутое редактирование.",
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const howTo: SubtitleSyncLocaleContent['howTo'] = [
|
|
44
|
+
{
|
|
45
|
+
name: "Загрузите файл SRT",
|
|
46
|
+
text: "Перетащите файл субтитров, который вы хотите исправить, в область загрузки.",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "Определите смещение",
|
|
50
|
+
text: "Измерьте в плеере, насколько задерживаются или опережают субтитры относительно звука.",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Настройте смещение",
|
|
54
|
+
text: "Введите положительные (задержка) или отрицательные (ускорение) секунды в панели управления.",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "Скачайте файл",
|
|
58
|
+
text: "Проверьте в предпросмотре правильность времени и нажмите скачать, чтобы получить новый SRT файл.",
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const bibliography: SubtitleSyncLocaleContent['bibliography'] = [
|
|
63
|
+
{
|
|
64
|
+
name: "Спецификация формата 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: 'Профессиональная синхронизация субтитров',
|
|
77
|
+
items: [
|
|
78
|
+
'Мгновенное исправление рассинхрона звука и субтитров',
|
|
79
|
+
'Поддержка стандартных файлов SRT (SubRip)',
|
|
80
|
+
'100% локальная обработка — максимальная конфиденциальность',
|
|
81
|
+
'Без установки, без подписки, полностью бесплатно'
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{ type: 'title', text: 'Идеальная синхронизация субтитров SRT', level: 2 },
|
|
85
|
+
{ type: 'paragraph', html: 'Нет ничего более неприятного для зрителя, чем диалоги, которые не совпадают с голосами. Рассинхрон субтитров обычно возникает из-за различий между версиями видео: изменений частоты кадров, рекламных вставок, заставок или изменений в компрессии. С помощью этого инструмента вы исправите проблему за секунды.' },
|
|
86
|
+
|
|
87
|
+
{ type: 'stats', items: [
|
|
88
|
+
{ value: '100%', label: 'Локальная обработка', icon: 'mdi:shield' },
|
|
89
|
+
{ value: 'Миллисекунды', label: 'Точность', icon: 'mdi:clock-outline' },
|
|
90
|
+
{ value: 'Любой', label: 'БЕЗ лимита по файлам', icon: 'mdi:file-document' }
|
|
91
|
+
], columns: 3 },
|
|
92
|
+
|
|
93
|
+
{ type: 'title', text: 'Ускорение vs Задержка: Практическое руководство', level: 3 },
|
|
94
|
+
{ type: 'paragraph', html: 'Первый шаг — правильно определить тип смещения. Вот логика:' },
|
|
95
|
+
{ type: 'list', items: [
|
|
96
|
+
'<strong>Задержка (Положительное значение):</strong> Когда текст появляется РАНЬШЕ звука. Субтитры спешат. Пример: +2.0 секунды.',
|
|
97
|
+
'<strong>Ускорение (Отрицательное значение):</strong> Когда текст появляется ПОСЛЕ звука. Субтитры отстают. Пример: -2.0 секунды.',
|
|
98
|
+
'<strong>Тестируйте и настраивайте:</strong> Начните с небольших шагов (0.5 сек) и используйте предпросмотр для проверки.'
|
|
99
|
+
], icon: 'mdi:arrow-right' },
|
|
100
|
+
|
|
101
|
+
{ type: 'card', title: 'Конфиденциальность профессионального уровня', html: 'Обрабатывая файл с помощью JavaScript на клиентской стороне, мы гарантируем, что содержимое ваших субтитров никогда не покинет ваш компьютер. Это важно для переводчиков и профессионалов, работающих с конфиденциальными материалами или по договору о неразглашении (NDA).' },
|
|
102
|
+
|
|
103
|
+
{ type: 'title', text: 'Типичные случаи использования', level: 3 },
|
|
104
|
+
{ type: 'comparative', items: [
|
|
105
|
+
{
|
|
106
|
+
title: 'Переводчики и субтитровщики',
|
|
107
|
+
description: 'Синхронизируйте переводы после работы с несколькими версиями видео',
|
|
108
|
+
icon: 'mdi:translate',
|
|
109
|
+
points: [
|
|
110
|
+
'Файлы SRT из разных источников',
|
|
111
|
+
'Версионность контента (кинотеатральная vs стриминг)',
|
|
112
|
+
'Быстрая сдача работы без смены инструментов'
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
title: 'Создатели контента',
|
|
117
|
+
description: 'Восстановите субтитры, если видео было обработано с другой частотой кадров',
|
|
118
|
+
icon: 'mdi:video',
|
|
119
|
+
points: [
|
|
120
|
+
'Повторное использование существующих субтитров',
|
|
121
|
+
'Изменения формата (с 720p до 1080p)',
|
|
122
|
+
'Избегайте ручной перенастройки времени для 1000+ строк'
|
|
123
|
+
],
|
|
124
|
+
highlight: true
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
title: 'Обычные пользователи',
|
|
128
|
+
description: 'Исправьте скачанные субтитры, которые не подходят идеально',
|
|
129
|
+
icon: 'mdi:account',
|
|
130
|
+
points: [
|
|
131
|
+
'Общий рассинхрон субтитров',
|
|
132
|
+
'Фильмы в разных регионах (PAL vs NTSC)',
|
|
133
|
+
'Стриминг с отредактированными версиями'
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
], columns: 3 },
|
|
137
|
+
|
|
138
|
+
{ type: 'title', text: 'Почему субтитры теряют синхронизацию', level: 3 },
|
|
139
|
+
{ type: 'table', headers: ['Частая причина', 'Техническое описание', 'Решение'], rows: [
|
|
140
|
+
['Разница в частоте кадров (FPS)', '23.976 fps vs 25 fps — накопленная разница', 'Настройка единого смещения (этот инструмент)'],
|
|
141
|
+
['Редактирование', 'Рекламные врезки или удаленный/добавленный контент', 'Ручной расчет + синхронизация'],
|
|
142
|
+
['Региональная версия', 'PAL (25 fps Европа) vs NTSC (29.97 fps США)', 'Простое математическое смещение'],
|
|
143
|
+
['Изменение разрешения', 'Перекодирование с другой скоростью обработки', 'Перерасчет исходного файла']
|
|
144
|
+
] },
|
|
145
|
+
|
|
146
|
+
{ type: 'diagnostic', variant: 'info', title: 'Технические ограничения', icon: 'mdi:information', badge: 'Важно', html: 'Этот инструмент применяет <strong>постоянное</strong> смещение ко всему файлу. Если смещение <strong>прогрессивное</strong> (в начале все хорошо, но постепенно рассинхрон растет), это указывает на стойкую разницу в частоте кадров. В этом случае исходный файл требует переработки в профессиональном ПО для монтажа.' },
|
|
147
|
+
|
|
148
|
+
{ type: 'proscons', items: [
|
|
149
|
+
{
|
|
150
|
+
pro: 'Экстремальная скорость — обрабатывает большие файлы за миллисекунды',
|
|
151
|
+
con: 'Настраивает только фиксированное смещение, не прогрессивное'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
pro: 'Полная конфиденциальность — контент никогда не покидает ваш браузер',
|
|
155
|
+
con: 'Требуется современный браузер с поддержкой JavaScript'
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
pro: 'Универсальный формат — работает с любым стандартным SRT',
|
|
159
|
+
con: 'Не поддерживает другие форматы (ASS, VTT, SCC и т. д.)'
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
pro: 'Полностью бесплатно, без рекламы, без трекинга',
|
|
163
|
+
con: 'Нет истории изменений или версионности'
|
|
164
|
+
}
|
|
165
|
+
], proTitle: 'Преимущества', conTitle: 'Ограничения' },
|
|
166
|
+
|
|
167
|
+
{ type: 'glossary', items: [
|
|
168
|
+
{
|
|
169
|
+
term: 'SRT (SubRip)',
|
|
170
|
+
definition: 'Самый универсальный формат субтитров: текстовый файл с номерами последовательности, временем (чч:мм:сс,ммм) и текстом. Стандарт де-факто в плеерах и на платформах.'
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
term: 'Смещение (Offset)',
|
|
174
|
+
definition: 'Фиксированное количество времени, которое добавляется или вычитается из всех временных меток в файле. Может быть положительным (задержка) или отрицательным (ускорение).'
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
term: 'Частота кадров (FPS)',
|
|
178
|
+
definition: 'Кадров в секунду. 24p (кино), 25p (PAL/Европа), 29.97p (NTSC/США), 60p (плавное видео). Различия вызывают кумулятивный рассинхрон.'
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
term: 'NTSC vs PAL',
|
|
182
|
+
definition: 'Региональные телевизионные стандарты: PAL (25 кадров/с) в Европе; NTSC (29.97 кадров/с) в США. Разница в скорости около 4%.'
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
term: 'Прогрессивное смещение',
|
|
186
|
+
definition: 'Когда синхронизация в начале правильная, но постепенно сбивается. Указывает на разницу в FPS, требует переработки файла.'
|
|
187
|
+
}
|
|
188
|
+
] },
|
|
189
|
+
|
|
190
|
+
{ type: 'message', title: 'Профессиональное редактирование с полным контролем', ariaLabel: 'Техническая информация о синхронизации', html: 'Наш подход прост, но эффективен: единое смещение, применяемое мгновенно, обрабатываемое на 100% в вашем браузере. Никаких облаков, хранилищ или слежки. Просто загрузите, настройте, скачайте. Полный контроль над вашим контентом.' },
|
|
191
|
+
|
|
192
|
+
{ type: 'title', text: 'Заключение: Кино без пауз', level: 3 },
|
|
193
|
+
{ type: 'paragraph', html: 'Идеальная синхронизация субтитров необходима для качественного аудиовизуального восприярия. С помощью этого инструмента вы превращаете досадную помеху в идеальный кинопросмотр без необходимости в дорогом или сложном ПО.' }
|
|
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: 'ru',
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
export const content: SubtitleSyncLocaleContent = {
|
|
230
|
+
slug,
|
|
231
|
+
title,
|
|
232
|
+
description,
|
|
233
|
+
ui,
|
|
234
|
+
seo,
|
|
235
|
+
faq,
|
|
236
|
+
faqTitle: 'Часто задаваемые вопросы о синхронизации субтитров',
|
|
237
|
+
bibliography,
|
|
238
|
+
bibliographyTitle: 'Технические ресурсы по форматам субтитров',
|
|
239
|
+
howTo,
|
|
240
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
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 = 'synkronisera-srt-undertexter-online-justera-timing-gratis';
|
|
5
|
+
const title = 'Synkronisera SRT undertexter online: Justera timing gratis';
|
|
6
|
+
const description = 'Onlineverktyg för att tidigarelägga eller fördröja SRT-undertexter. Korrigera tidsförskjutning enkelt och ladda ner den synkroniserade filen direkt.';
|
|
7
|
+
|
|
8
|
+
const ui: SubtitleSyncUI = {
|
|
9
|
+
dropTitle: "Dra din .SRT-fil hit",
|
|
10
|
+
dropSubtitle: "eller klicka för att bläddra",
|
|
11
|
+
adjustTitle: "Justera tid",
|
|
12
|
+
offsetLabel: "Offset (sekunder)",
|
|
13
|
+
offsetHelp: "Använd negativa värden för att tidigarelägga (t.ex. -1.5) och positiva värden för att fördröja.",
|
|
14
|
+
linesStat: "Rader",
|
|
15
|
+
firstStat: "Första undertexten",
|
|
16
|
+
lastStat: "Sista undertexten",
|
|
17
|
+
originalLabel: "ORIGINAL",
|
|
18
|
+
resultLabel: "RESULTAT",
|
|
19
|
+
downloadButton: "Ladda ner korrigerad",
|
|
20
|
+
previewBadge: "FÖRHANDSGRANSKNING",
|
|
21
|
+
unitSeconds: "sek"
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const faq: SubtitleSyncLocaleContent['faq'] = [
|
|
25
|
+
{
|
|
26
|
+
question: "Hur kan jag synkronisera mina undertexter om ljudet ligger före?",
|
|
27
|
+
answer: "Om ljudet hörs före texten måste du fördröja undertexterna. Ange ett positivt värde i kalkylatorn (t.ex. 2.0 för att fördröja dem med 2 sekunder).",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
question: "Vilka filformat accepterar det här verktyget?",
|
|
31
|
+
answer: "För närvarande är verktyget optimerat för .SRT-filer (SubRip), vilket är den vanligaste standarden i videospelare och streamingplattformar.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: "Är det säkert att ladda upp mina undertextfiler?",
|
|
35
|
+
answer: "Ja, eftersom bearbetningen sker 100 % lokalt på din enhet. Dina filer skickas inte till någon server; synkroniseringen sker direkt i din webbläsare.",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
question: "Kan jag synkronisera bara en del av filen?",
|
|
39
|
+
answer: "Nej, det här verktyget tillämpar en konstant tidsförskjutning (offset) på hela filen. Om förskjutningen är progressiv kan du behöva mer avancerad redigering.",
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const howTo: SubtitleSyncLocaleContent['howTo'] = [
|
|
44
|
+
{
|
|
45
|
+
name: "Ladda upp din SRT-fil",
|
|
46
|
+
text: "Dra undertextfilen du vill korrigera till uppladdningsområdet.",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "Identifiera förskjutningen",
|
|
50
|
+
text: "Mät hur mycket fördröjning eller försprång undertexterna har i förhållande till ljudet i din spelare.",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Justera offset",
|
|
54
|
+
text: "Ange positiva (fördröjning) eller negativa (tidigareläggning) sekunder i kontrollpanelen.",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "Ladda ner filen",
|
|
58
|
+
text: "Kontrollera i förhandsgranskningen att tiderna är korrekta och klicka på ladda ner för att få din nya SRT.",
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const bibliography: SubtitleSyncLocaleContent['bibliography'] = [
|
|
63
|
+
{
|
|
64
|
+
name: "SubRip (SRT) formatspecifikation",
|
|
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: 'Professionell synkronisering av undertexter',
|
|
77
|
+
items: [
|
|
78
|
+
'Omedelbar korrigering av osynk mellan ljud och undertext',
|
|
79
|
+
'Stöd för SRT-standardfiler (SubRip)',
|
|
80
|
+
'100 % lokal bearbetning – maximal integritet',
|
|
81
|
+
'Ingen installation, inget abonnemang, helt gratis'
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{ type: 'title', text: 'Perfekt SRT undertextsynkronisering', level: 2 },
|
|
85
|
+
{ type: 'paragraph', html: 'Det finns inget mer frustrerande för en tittare än att se dialoger som inte matchar rösterna. Undertextförskjutning beror vanligtvis på skillnader mellan videoversioner: variationer i bildhastighet (framerate), reklamavbrott, produktionsintron eller ändringar i komprimering. Med det här verktyget löser du problemet på några sekunder.' },
|
|
86
|
+
|
|
87
|
+
{ type: 'stats', items: [
|
|
88
|
+
{ value: '100 %', label: 'Lokal bearbetning', icon: 'mdi:shield' },
|
|
89
|
+
{ value: 'Millisekunder', label: 'Precision', icon: 'mdi:clock-outline' },
|
|
90
|
+
{ value: 'Alla storlekar', label: 'INGEN filgräns', icon: 'mdi:file-document' }
|
|
91
|
+
], columns: 3 },
|
|
92
|
+
|
|
93
|
+
{ type: 'title', text: 'Tidigareläggning vs Fördröjning: Praktisk guide', level: 3 },
|
|
94
|
+
{ type: 'paragraph', html: 'Det första steget är att korrekt identifiera typen av förskjutning. Här är logiken:' },
|
|
95
|
+
{ type: 'list', items: [
|
|
96
|
+
'<strong>Fördröjning (positivt värde):</strong> När du ser texten dyka upp FÖRE ljudet. Undertexterna ligger före. Exempel: +2.0 sekunder.',
|
|
97
|
+
'<strong>Tidigareläggning (negativt värde):</strong> När du ser texten dyka upp EFTER ljudet. Undertexterna ligger efter. Exempel: -2.0 sekunder.',
|
|
98
|
+
'<strong>Testa och justera:</strong> Börja med små ökningar (0,5 s) och använd förhandsgranskningen för att validera.'
|
|
99
|
+
], icon: 'mdi:arrow-right' },
|
|
100
|
+
|
|
101
|
+
{ type: 'card', title: 'Integritet på professionell nivå', html: 'Genom att bearbeta filen via JavaScript på klientsidan garanterar vi att ditt undertextinnehåll aldrig lämnar din dator. Viktigt för översättare och yrkesverksamma som hanterar konfidentiellt material eller material under sekretessavtal (NDA).' },
|
|
102
|
+
|
|
103
|
+
{ type: 'title', text: 'Vanliga användningsfall', level: 3 },
|
|
104
|
+
{ type: 'comparative', items: [
|
|
105
|
+
{
|
|
106
|
+
title: 'Översättare och textare',
|
|
107
|
+
description: 'Synkronisera översättningar efter att ha arbetat med flera videoversioner',
|
|
108
|
+
icon: 'mdi:translate',
|
|
109
|
+
points: [
|
|
110
|
+
'SRT-filer från olika källor',
|
|
111
|
+
'Versionshantering (bio vs streaming)',
|
|
112
|
+
'Snabb leverans utan verktygsbyte'
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
title: 'Innehållsskapare',
|
|
117
|
+
description: 'Återställ undertexter när videon har bearbetats med en annan bildhastighet',
|
|
118
|
+
icon: 'mdi:video',
|
|
119
|
+
points: [
|
|
120
|
+
'Återanvänd befintliga undertexter',
|
|
121
|
+
'Formatändringar (720p till 1080p)',
|
|
122
|
+
'Undvik manuell omtidning av 1000-tals rader'
|
|
123
|
+
],
|
|
124
|
+
highlight: true
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
title: 'Hobbyanvändare',
|
|
128
|
+
description: 'Korrigera nedladdade undertexter som inte passar perfekt',
|
|
129
|
+
icon: 'mdi:account',
|
|
130
|
+
points: [
|
|
131
|
+
'Generella osynkade undertexter',
|
|
132
|
+
'Filmer från olika regioner (PAL vs NTSC)',
|
|
133
|
+
'Streaming med redigerade versioner'
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
], columns: 3 },
|
|
137
|
+
|
|
138
|
+
{ type: 'title', text: 'Varför undertexter hamnar i osynk', level: 3 },
|
|
139
|
+
{ type: 'table', headers: ['Vanlig orsak', 'Teknisk beskrivning', 'Lösning'], rows: [
|
|
140
|
+
['Skillnad i bildhastighet', '23.976 fps vs 25 fps - ackumulerad skillnad', 'Enstaka offsetjustering (det här verktyget)'],
|
|
141
|
+
['Redigering', 'Reklamavbrott eller borttaget/tillagt innehåll', 'Manuell beräkning + synkronisering'],
|
|
142
|
+
['Regional version', 'PAL (25 fps Europa) vs NTSC (29.97 fps USA)', 'Enkel matematisk förskjutning'],
|
|
143
|
+
['Ändrad upplösning', 'Omkodning med annan bearbetningshastighet', 'Omberäkning av originalfilen']
|
|
144
|
+
] },
|
|
145
|
+
|
|
146
|
+
{ type: 'diagnostic', variant: 'info', title: 'Tekniska begränsningar att tänka på', icon: 'mdi:information', badge: 'Viktigt', html: 'Det här verktyget tillämpar en <strong>konstant</strong> offset på hela filen. Om osynken är <strong>progressiv</strong> (startar bra men hamnar gradvis mer ur synk) tyder det på en bestående skillnad i bildhastighet. I så fall krävs ombearbetning av originalfilen i professionell redigeringsmjukvara.' },
|
|
147
|
+
|
|
148
|
+
{ type: 'proscons', items: [
|
|
149
|
+
{
|
|
150
|
+
pro: 'Extrem hastighet – bearbetar stora filer på millisekunder',
|
|
151
|
+
con: 'Justerar endast fast förskjutning, inte progressiva'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
pro: 'Total integritet – innehållet lämnar aldrig webbläsaren',
|
|
155
|
+
con: 'Kräver modern webbläsare med JavaScript aktiverat'
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
pro: 'Universellt format – fungerar med alla standard SRT',
|
|
159
|
+
con: 'Stöder inte andra format (ASS, VTT, SCC, etc.)'
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
pro: 'Helt gratis, ingen reklam, ingen spårning',
|
|
163
|
+
con: 'Ingen ändringshistorik eller versionshantering'
|
|
164
|
+
}
|
|
165
|
+
], proTitle: 'Fördelar', conTitle: 'Begränsningar' },
|
|
166
|
+
|
|
167
|
+
{ type: 'glossary', items: [
|
|
168
|
+
{
|
|
169
|
+
term: 'SRT (SubRip)',
|
|
170
|
+
definition: 'Det mest universella undertextformatet: textfil med sekvensnummer, tider (hh:mm:ss,mmm) och text. De facto-standard i spelare och plattformar.'
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
term: 'Offset',
|
|
174
|
+
definition: 'Fast mängd tid som läggs till eller dras ifrån alla tider i filen. Kan vara positiva sekunder (fördröjning) eller negativa (tidigareläggning).'
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
term: 'Bildhastighet (fps)',
|
|
178
|
+
definition: 'Bilder per sekund. 24p (film), 25p (PAL/Europa), 29.97p (NTSC/USA), 60p (flytande video). Skillnader orsakar ackumulerad osynk.'
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
term: 'NTSC vs PAL',
|
|
182
|
+
definition: 'Regionala tv-standarder: PAL (25 fps) i Europa; NTSC (29.97 fps) i USA. Ca 4 % hastighetsskillnad.'
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
term: 'Progressiv osynk',
|
|
186
|
+
definition: 'När synkroniseringen börjar korrekt men gradvis hamnar fel. Tyder på skillnad i bildhastighet, kräver ombearbetning.'
|
|
187
|
+
}
|
|
188
|
+
] },
|
|
189
|
+
|
|
190
|
+
{ type: 'message', title: 'Professionell redigering med full kontroll', ariaLabel: 'Teknisk information om synkronisering', html: 'Vår metod är enkel men kraftfull: en enda förskjutning, tillämpad omedelbart, bearbetad 100 % i din webbläsare. Inget moln, ingen lagring, ingen spårning. Ladda bara upp, justera, ladda ner. Full kontroll över ditt innehåll.' },
|
|
191
|
+
|
|
192
|
+
{ type: 'title', text: 'Slutsats: Filmer utan avbrott', level: 3 },
|
|
193
|
+
{ type: 'paragraph', html: 'Perfekt synkronisering av undertexter är avgörande för en audiovisuell upplevelse av hög kvalitet. Med det här verktyget förvandlar du en frustrerende upplevelse till en perfekt filmkväll, utan behov av dyr eller komplicerad mjukvara.' }
|
|
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: 'sv',
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
export const content: SubtitleSyncLocaleContent = {
|
|
230
|
+
slug,
|
|
231
|
+
title,
|
|
232
|
+
description,
|
|
233
|
+
ui,
|
|
234
|
+
seo,
|
|
235
|
+
faq,
|
|
236
|
+
faqTitle: 'Vanliga frågor om synkronisering av undertexter',
|
|
237
|
+
bibliography,
|
|
238
|
+
bibliographyTitle: 'Tekniska resurser för undertextformat',
|
|
239
|
+
howTo,
|
|
240
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
241
|
+
};
|