@jjlmoya/utils-audiovisual 1.7.0 → 1.9.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.
Files changed (152) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +198 -0
  3. package/src/category/i18n/id.ts +198 -0
  4. package/src/category/i18n/it.ts +198 -0
  5. package/src/category/i18n/ja.ts +198 -0
  6. package/src/category/i18n/ko.ts +198 -0
  7. package/src/category/i18n/nl.ts +198 -0
  8. package/src/category/i18n/pl.ts +198 -0
  9. package/src/category/i18n/pt.ts +198 -0
  10. package/src/category/i18n/ru.ts +198 -0
  11. package/src/category/i18n/sv.ts +198 -0
  12. package/src/category/i18n/tr.ts +198 -0
  13. package/src/category/i18n/zh.ts +198 -0
  14. package/src/category/index.ts +31 -3
  15. package/src/tests/i18n_coverage.test.ts +36 -0
  16. package/src/tests/slug_uniqueness.test.ts +81 -0
  17. package/src/tool/chromaticLens/i18n/de.ts +246 -0
  18. package/src/tool/chromaticLens/i18n/id.ts +246 -0
  19. package/src/tool/chromaticLens/i18n/it.ts +246 -0
  20. package/src/tool/chromaticLens/i18n/ja.ts +246 -0
  21. package/src/tool/chromaticLens/i18n/ko.ts +246 -0
  22. package/src/tool/chromaticLens/i18n/nl.ts +246 -0
  23. package/src/tool/chromaticLens/i18n/pl.ts +246 -0
  24. package/src/tool/chromaticLens/i18n/pt.ts +246 -0
  25. package/src/tool/chromaticLens/i18n/ru.ts +246 -0
  26. package/src/tool/chromaticLens/i18n/sv.ts +246 -0
  27. package/src/tool/chromaticLens/i18n/tr.ts +246 -0
  28. package/src/tool/chromaticLens/i18n/zh.ts +246 -0
  29. package/src/tool/chromaticLens/index.ts +15 -7
  30. package/src/tool/collageMaker/i18n/de.ts +233 -0
  31. package/src/tool/collageMaker/i18n/id.ts +233 -0
  32. package/src/tool/collageMaker/i18n/it.ts +233 -0
  33. package/src/tool/collageMaker/i18n/ja.ts +233 -0
  34. package/src/tool/collageMaker/i18n/ko.ts +233 -0
  35. package/src/tool/collageMaker/i18n/nl.ts +233 -0
  36. package/src/tool/collageMaker/i18n/pl.ts +233 -0
  37. package/src/tool/collageMaker/i18n/pt.ts +233 -0
  38. package/src/tool/collageMaker/i18n/ru.ts +233 -0
  39. package/src/tool/collageMaker/i18n/sv.ts +233 -0
  40. package/src/tool/collageMaker/i18n/tr.ts +233 -0
  41. package/src/tool/collageMaker/i18n/zh.ts +233 -0
  42. package/src/tool/collageMaker/index.ts +15 -6
  43. package/src/tool/exifCleaner/i18n/de.ts +277 -0
  44. package/src/tool/exifCleaner/i18n/fr.ts +1 -1
  45. package/src/tool/exifCleaner/i18n/id.ts +277 -0
  46. package/src/tool/exifCleaner/i18n/it.ts +277 -0
  47. package/src/tool/exifCleaner/i18n/ja.ts +277 -0
  48. package/src/tool/exifCleaner/i18n/ko.ts +277 -0
  49. package/src/tool/exifCleaner/i18n/nl.ts +277 -0
  50. package/src/tool/exifCleaner/i18n/pl.ts +277 -0
  51. package/src/tool/exifCleaner/i18n/pt.ts +277 -0
  52. package/src/tool/exifCleaner/i18n/ru.ts +277 -0
  53. package/src/tool/exifCleaner/i18n/sv.ts +277 -0
  54. package/src/tool/exifCleaner/i18n/tr.ts +277 -0
  55. package/src/tool/exifCleaner/i18n/zh.ts +277 -0
  56. package/src/tool/exifCleaner/index.ts +16 -8
  57. package/src/tool/imageCompressor/i18n/de.ts +242 -0
  58. package/src/tool/imageCompressor/i18n/en.ts +1 -1
  59. package/src/tool/imageCompressor/i18n/es.ts +1 -1
  60. package/src/tool/imageCompressor/i18n/id.ts +242 -0
  61. package/src/tool/imageCompressor/i18n/it.ts +242 -0
  62. package/src/tool/imageCompressor/i18n/ja.ts +242 -0
  63. package/src/tool/imageCompressor/i18n/ko.ts +242 -0
  64. package/src/tool/imageCompressor/i18n/nl.ts +242 -0
  65. package/src/tool/imageCompressor/i18n/pl.ts +242 -0
  66. package/src/tool/imageCompressor/i18n/pt.ts +242 -0
  67. package/src/tool/imageCompressor/i18n/ru.ts +242 -0
  68. package/src/tool/imageCompressor/i18n/sv.ts +242 -0
  69. package/src/tool/imageCompressor/i18n/tr.ts +242 -0
  70. package/src/tool/imageCompressor/i18n/zh.ts +244 -0
  71. package/src/tool/imageCompressor/index.ts +15 -7
  72. package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
  73. package/src/tool/printQualityCalculator/i18n/fr.ts +1 -1
  74. package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
  75. package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
  76. package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
  77. package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
  78. package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
  79. package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
  80. package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
  81. package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
  82. package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
  83. package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
  84. package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
  85. package/src/tool/printQualityCalculator/index.ts +15 -7
  86. package/src/tool/privacyBlur/i18n/de.ts +238 -0
  87. package/src/tool/privacyBlur/i18n/id.ts +238 -0
  88. package/src/tool/privacyBlur/i18n/it.ts +238 -0
  89. package/src/tool/privacyBlur/i18n/ja.ts +238 -0
  90. package/src/tool/privacyBlur/i18n/ko.ts +238 -0
  91. package/src/tool/privacyBlur/i18n/nl.ts +238 -0
  92. package/src/tool/privacyBlur/i18n/pl.ts +238 -0
  93. package/src/tool/privacyBlur/i18n/pt.ts +238 -0
  94. package/src/tool/privacyBlur/i18n/ru.ts +238 -0
  95. package/src/tool/privacyBlur/i18n/sv.ts +238 -0
  96. package/src/tool/privacyBlur/i18n/tr.ts +238 -0
  97. package/src/tool/privacyBlur/i18n/zh.ts +238 -0
  98. package/src/tool/privacyBlur/index.ts +15 -7
  99. package/src/tool/subtitleSync/i18n/de.ts +241 -0
  100. package/src/tool/subtitleSync/i18n/fr.ts +5 -5
  101. package/src/tool/subtitleSync/i18n/id.ts +241 -0
  102. package/src/tool/subtitleSync/i18n/it.ts +241 -0
  103. package/src/tool/subtitleSync/i18n/ja.ts +241 -0
  104. package/src/tool/subtitleSync/i18n/ko.ts +241 -0
  105. package/src/tool/subtitleSync/i18n/nl.ts +241 -0
  106. package/src/tool/subtitleSync/i18n/pl.ts +241 -0
  107. package/src/tool/subtitleSync/i18n/pt.ts +241 -0
  108. package/src/tool/subtitleSync/i18n/ru.ts +241 -0
  109. package/src/tool/subtitleSync/i18n/sv.ts +241 -0
  110. package/src/tool/subtitleSync/i18n/tr.ts +241 -0
  111. package/src/tool/subtitleSync/i18n/zh.ts +241 -0
  112. package/src/tool/subtitleSync/index.ts +15 -7
  113. package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
  114. package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
  115. package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
  116. package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
  117. package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
  118. package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
  119. package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
  120. package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
  121. package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
  122. package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
  123. package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
  124. package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
  125. package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
  126. package/src/tool/timelapseCalculator/index.ts +16 -8
  127. package/src/tool/tvDistance/i18n/de.ts +223 -0
  128. package/src/tool/tvDistance/i18n/id.ts +223 -0
  129. package/src/tool/tvDistance/i18n/it.ts +223 -0
  130. package/src/tool/tvDistance/i18n/ja.ts +223 -0
  131. package/src/tool/tvDistance/i18n/ko.ts +223 -0
  132. package/src/tool/tvDistance/i18n/nl.ts +223 -0
  133. package/src/tool/tvDistance/i18n/pl.ts +223 -0
  134. package/src/tool/tvDistance/i18n/pt.ts +223 -0
  135. package/src/tool/tvDistance/i18n/ru.ts +223 -0
  136. package/src/tool/tvDistance/i18n/sv.ts +223 -0
  137. package/src/tool/tvDistance/i18n/tr.ts +223 -0
  138. package/src/tool/tvDistance/i18n/zh.ts +223 -0
  139. package/src/tool/tvDistance/index.ts +15 -7
  140. package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
  141. package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
  142. package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
  143. package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
  144. package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
  145. package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
  146. package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
  147. package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
  148. package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
  149. package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
  150. package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
  151. package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
  152. package/src/tool/videoFrameExtractor/index.ts +16 -8
@@ -0,0 +1,198 @@
1
+ import type { CategoryLocaleContent } from '../../types';
2
+
3
+ export const content: CategoryLocaleContent = {
4
+ slug: 'audiovisuellt-fotografi',
5
+ title: 'Audiovisuella och Fotografi verktyg',
6
+ description: 'Professionella verktyg och kalkylatorer för filmskapare, fotografer och skapare av digitalt audiovisuellt innehåll.',
7
+ seo: [
8
+ {
9
+ type: 'summary',
10
+ title: 'Professionella audiovisuella verktyg',
11
+ items: [
12
+ 'Smarta kalkylatorer för timelapses, effekter och komposition.',
13
+ 'Integritetsverktyg för att rensa EXIF-metadata.',
14
+ 'Synkronisering av undertexter och tidsredigering.',
15
+ 'Upplösningsanalys, utskriftskvalitet och optimalt betraktningsavstånd.'
16
+ ],
17
+ },
18
+ {
19
+ type: 'title',
20
+ text: 'Professionell verktygslåda för audiovisuell produktion',
21
+ level: 2,
22
+ },
23
+ {
24
+ type: 'paragraph',
25
+ html: 'Vår omfattande samling verktyg löser de vanligaste tekniska utmaningarna i varje steg av den audiovisuella produktionen. Från exakta intervallberäkningar för cinematiska timelapses till integritetsskydd genom rensning av EXIF-metadata i dina multimediafiler.',
26
+ },
27
+ {
28
+ type: 'stats',
29
+ items: [
30
+ {
31
+ value: '12+',
32
+ label: 'Specialiserade verktyg',
33
+ icon: 'mdi:cog'
34
+ },
35
+ {
36
+ value: '100%',
37
+ label: 'Exakta beräkningar',
38
+ icon: 'mdi:chart-line'
39
+ },
40
+ {
41
+ value: '0%',
42
+ label: 'Data sparad på servern',
43
+ icon: 'mdi:shield-check'
44
+ }
45
+ ],
46
+ columns: 3
47
+ },
48
+ {
49
+ type: 'title',
50
+ text: 'Verktygskategorier',
51
+ level: 3,
52
+ },
53
+ {
54
+ type: 'comparative',
55
+ items: [
56
+ {
57
+ title: 'Timelapse och Cinematic',
58
+ description: 'Beräkna intervall, total varaktighet och bildhastigheter för dina cinematiska tagningar.',
59
+ icon: 'mdi:film',
60
+ points: [
61
+ 'Beräkning av antal bilder som krävs',
62
+ 'Varaktighet i sekunder/minuter',
63
+ 'Variabel uppspelningshastighet'
64
+ ]
65
+ },
66
+ {
67
+ title: 'Integritet och Metadata',
68
+ description: 'Skydda din integritet genom att ta bort EXIF-data och känslig metadata från dina filer.',
69
+ icon: 'mdi:lock',
70
+ points: [
71
+ 'Analys av EXIF-data',
72
+ 'Rensning av platsmetadata',
73
+ 'Borttagning av enhetsinformation'
74
+ ]
75
+ },
76
+ {
77
+ title: 'Redigering av Undertexter',
78
+ description: 'Synkronisera, justera och redigera undertexter med millisekundprecision.',
79
+ icon: 'mdi:text',
80
+ points: [
81
+ 'Synkronisering i realtid',
82
+ 'Redigering av start- och sluttid',
83
+ 'Global justering av fördröjning'
84
+ ]
85
+ },
86
+ {
87
+ title: 'Bildanalys',
88
+ description: 'Beräkna tekniska parametrar för upplösning, utskrift och betraktningsavstånd.',
89
+ icon: 'mdi:image',
90
+ points: [
91
+ 'BPI- och upplösningsberäkning',
92
+ 'Rekommenderat betraktningsavstånd',
93
+ 'Analys av utskriftskvalitet'
94
+ ],
95
+ highlight: true
96
+ }
97
+ ],
98
+ columns: 2
99
+ },
100
+ {
101
+ type: 'title',
102
+ text: 'Varför välja våra verktyg',
103
+ level: 3,
104
+ },
105
+ {
106
+ type: 'proscons',
107
+ items: [
108
+ {
109
+ pro: '100% webbläsarbaserad bearbetning - dina data laddas aldrig upp till servrar',
110
+ con: 'Kräver en modern webbläsare med stöd för JavaScript'
111
+ },
112
+ {
113
+ pro: 'Matematisk precision i alla audiovisuella beräkningar',
114
+ con: 'Vissa specifika fall kan kräva manuell validering'
115
+ },
116
+ {
117
+ pro: 'Intuitivt gränssnitt designat för proffs i branschen',
118
+ con: 'Bäst upplevelse på stationära datorer eller surfplattor'
119
+ },
120
+ {
121
+ pro: 'Helt kostnadsfria verktyg utan användningsbegränsningar',
122
+ con: 'Inget dedikerat premiumstöd (community finns tillgängligt)'
123
+ }
124
+ ],
125
+ proTitle: 'Fördelar',
126
+ conTitle: 'Att tänka på'
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Snabbguide',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'list',
135
+ items: [
136
+ 'Välj verktyget du behöver baserat på din projekttyp',
137
+ 'Ange tekniska parametrar (bilder, upplösning, tider, etc.)',
138
+ 'Få omedelbara beräkningar och exakta resultat',
139
+ 'Exportera eller applicera resultaten i ditt arbetsflöde',
140
+ 'Upprepa processen för flera projekt utan begränsningar'
141
+ ],
142
+ icon: 'mdi:arrow-right'
143
+ },
144
+ {
145
+ type: 'tip',
146
+ title: 'Proffstips',
147
+ html: 'För arbete med flera klipp eller sekvenser rekommenderar vi att du sparar dina viktigaste parametrar (kameraupplösning, vanlig bildhastighet, undertextspråk) i ett dokument. På så sätt kan du snabbt komma åt dem utan att behöva räkna om varje gång.'
148
+ },
149
+ {
150
+ type: 'glossary',
151
+ items: [
152
+ {
153
+ term: 'EXIF',
154
+ definition: 'Filformat som lagrar metadata i digitala bilder (datum, kamera, GPS-plats, etc.). Det kan innebära en integritetsrisk.'
155
+ },
156
+ {
157
+ term: 'FPS (Bilder per sekund)',
158
+ definition: 'Antal bilder som spelas upp varje sekund. Vanliga värden: 24 fps (film), 25 fps (PAL), 30 fps (NTSC), 60 fps (flytande video).'
159
+ },
160
+ {
161
+ term: 'DPI (Punkter per tum)',
162
+ definition: 'Mått på upplösning vid utskrift. Högre DPI = bättre kvalitet. För professionell fotografering rekommenderas minst 300 DPI.'
163
+ },
164
+ {
165
+ term: 'Timelapse (Tidsförlopp)',
166
+ definition: 'Filmfotograferingsteknik som påskyndar tiden genom att ta bilder med jämna mellanrum för att skapa en snabbrörlig effekt.'
167
+ },
168
+ {
169
+ term: 'Synkronisering av Undertexter',
170
+ definition: 'Processen att anpassa start- och sluttid för undertexter till ljudet och videon i en film eller serie.'
171
+ },
172
+ {
173
+ term: 'Metadata',
174
+ definition: 'Dold information i mediafiler som beskriver innehållet (författare, skapandedatum, enhet som används, plats, etc.).'
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ type: 'diagnostic',
180
+ variant: 'info',
181
+ title: 'Hur man väljer rätt verktyg',
182
+ icon: 'mdi:help-circle',
183
+ badge: 'Valguide',
184
+ html: '<strong>Skapar du en timelapse?</strong> -> Använd timelapse-kalkylatorn.<br><strong>Behöver du skydda integriteten?</strong> -> Verktyg för rensning av metadata.<br><strong>Arbetar du med undertexter?</strong> -> Undertextsynk och redigerare.<br><strong>Behöver du optimera en bild?</strong> -> Kalkylator för upplösning och betraktningsavstånd.'
185
+ },
186
+ {
187
+ type: 'card',
188
+ title: 'Nyckelfunktionalitet',
189
+ html: 'Alla våra verktyg fungerar <strong>100% lokalt</strong> i din webbläsare. Detta innebär maximal integritet, omedelbar hastighet och offlineåtkomst (efter första laddningen).'
190
+ },
191
+ {
192
+ type: 'message',
193
+ title: 'Integritetsskydd',
194
+ ariaLabel: 'Information om integritet och datalagring',
195
+ html: 'Vi lagrar, bearbetar eller delar inte dina audiovisuella data. Alla beräkningar och rensning av metadata sker uteslutande på din enhet. Du har full kontroll över ditt innehåll.'
196
+ }
197
+ ],
198
+ };
@@ -0,0 +1,198 @@
1
+ import type { CategoryLocaleContent } from '../../types';
2
+
3
+ export const content: CategoryLocaleContent = {
4
+ slug: 'produksiyon-ve-fotografcilik',
5
+ title: 'Görsel İşitsel ve Fotoğrafçılık Araçları',
6
+ description: 'Film yapımcıları, fotoğrafçılar ve dijital görsel-işitsel içerik üreticileri için profesyonel araçlar ve hesaplayıcılar.',
7
+ seo: [
8
+ {
9
+ type: 'summary',
10
+ title: 'Profesyonel Görsel İşitsel Araçlar',
11
+ items: [
12
+ 'Timelapse, efektler ve kompozisyon için akıllı hesaplayıcılar.',
13
+ 'EXIF metalarını temizlemek için gizlilik araçları.',
14
+ 'Altyazı senkronizasyonu ve zamanlama düzenleme.',
15
+ 'Çözünürlük analizi, baskı kalitesi ve optimum izleme mesafesi.'
16
+ ],
17
+ },
18
+ {
19
+ type: 'title',
20
+ text: 'Görsel İşitsel Prodüksiyon İçin Profesyonel Araç Çantası',
21
+ level: 2,
22
+ },
23
+ {
24
+ type: 'paragraph',
25
+ html: 'Kapsamlı yardımcı program paketimiz, görsel-işitsel prodüksiyonun her aşamasındaki en yaygın teknik zorlukları çözer. Sinematik timelapseler için hassas aralık hesaplamalarından, multimedya dosyalarınızdaki EXIF metadatalarını temizleyerek gizlilik korumasına kadar her şeyi sunar.',
26
+ },
27
+ {
28
+ type: 'stats',
29
+ items: [
30
+ {
31
+ value: '12+',
32
+ label: 'Uzmanlaşmış araçlar',
33
+ icon: 'mdi:cog'
34
+ },
35
+ {
36
+ value: '100%',
37
+ label: 'Hassas hesaplamalar',
38
+ icon: 'mdi:chart-line'
39
+ },
40
+ {
41
+ value: '0%',
42
+ label: 'Sunucuda depolanan veri',
43
+ icon: 'mdi:shield-check'
44
+ }
45
+ ],
46
+ columns: 3
47
+ },
48
+ {
49
+ type: 'title',
50
+ text: 'Araç Kategorileri',
51
+ level: 3,
52
+ },
53
+ {
54
+ type: 'comparative',
55
+ items: [
56
+ {
57
+ title: 'Timelapse ve Sinematik',
58
+ description: 'Sinematik çekimleriniz için aralıkları, toplam süreyi ve kare hızlarını hesaplayın.',
59
+ icon: 'mdi:film',
60
+ points: [
61
+ 'Gerekli kare hesaplaması',
62
+ 'Saniye/dakika cinsinden süre',
63
+ 'Değişken oynatma hızı'
64
+ ]
65
+ },
66
+ {
67
+ title: 'Gizlilik ve Metadata',
68
+ description: 'EXIF verilerini ve hassas metadataları dosyalarınızdan kaldırarak gizliliğinizi koruyun.',
69
+ icon: 'mdi:lock',
70
+ points: [
71
+ 'EXIF veri analizi',
72
+ 'Konum metadata temizliği',
73
+ 'Cihaz bilgisi kaldırma'
74
+ ]
75
+ },
76
+ {
77
+ title: 'Altyazı Düzenleme',
78
+ description: 'Altyazıları milisaniye hassasiyetinde senkronize edin, ayarlayın ve düzenleyin.',
79
+ icon: 'mdi:text',
80
+ points: [
81
+ 'Gerçek zamanlı senkronizasyon',
82
+ 'Giriş/çıkış süresi düzenleme',
83
+ 'Genel gecikme ayarı'
84
+ ]
85
+ },
86
+ {
87
+ title: 'Görüntü Analizi',
88
+ description: 'Çözünürlük, baskı ve izleme mesafesi için teknik parametreleri hesaplayın.',
89
+ icon: 'mdi:image',
90
+ points: [
91
+ 'DPI ve çözünürlük hesaplama',
92
+ 'Önerilen izleme mesafesi',
93
+ 'Baskı kalitesi analizi'
94
+ ],
95
+ highlight: true
96
+ }
97
+ ],
98
+ columns: 2
99
+ },
100
+ {
101
+ type: 'title',
102
+ text: 'Neden Bizim Araçlarımızı Seçmelisiniz?',
103
+ level: 3,
104
+ },
105
+ {
106
+ type: 'proscons',
107
+ items: [
108
+ {
109
+ pro: '%100 tarayıcı tabanlı işleme - verileriniz asla sunuculara yüklenmez',
110
+ con: 'JavaScript destekli modern bir tarayıcı gerektirir'
111
+ },
112
+ {
113
+ pro: 'Tüm görsel-işitsel hesaplamalarda matematiksel hassasiyet',
114
+ con: 'Çok özel durumlar manuel doğrulama gerektirebilir'
115
+ },
116
+ {
117
+ pro: 'Sektör profesyonelleri için tasarlanmış sezgisel arayüz',
118
+ con: 'Masaüstü/tablet ekranlarında en iyi deneyim'
119
+ },
120
+ {
121
+ pro: 'Kullanım sınırı olmaksızın tamamen ücretsiz araçlar',
122
+ con: 'Özel premium destek yoktur (topluluk desteği mevcuttur)'
123
+ }
124
+ ],
125
+ proTitle: 'Avantajlar',
126
+ conTitle: 'Dikkat Edilmesi Gerekenler'
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Hızlı Başlangıç Kılavuzu',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'list',
135
+ items: [
136
+ 'Proje tipinize göre ihtiyacınız olan aracı seçin',
137
+ 'Teknik parametreleri girin (kareler, çözünürlük, süreler vb.)',
138
+ 'Anında hesaplamalar ve hassas sonuçlar alın',
139
+ 'Sonuçları dışa aktarın veya iş akışınıza uygulayın',
140
+ 'Birden fazla proje için işlemi sınırsızca tekrarlayın'
141
+ ],
142
+ icon: 'mdi:arrow-right'
143
+ },
144
+ {
145
+ type: 'tip',
146
+ title: 'Profesyonel İpucu',
147
+ html: 'Birden fazla klip veya sekansla çalışırken, ana parametrelerinizi (kamera çözünürlüğü, olağan kare hızı, altyazı dili) bir belgeye kaydetmenizi öneririz. Bu sayede her seferinde yeniden hesaplamaya gerek kalmadan onlara hızlıca erişebilirsiniz.'
148
+ },
149
+ {
150
+ type: 'glossary',
151
+ items: [
152
+ {
153
+ term: 'EXIF',
154
+ definition: 'Dijital görüntülerde metadataları (tarih, kamera, GPS konumu vb.) saklayan dosya formatı. Bir gizlilik riski oluşturabilir.'
155
+ },
156
+ {
157
+ term: 'FPS (Saniyedeki Kare Sayısı)',
158
+ definition: 'Her saniye oynatılan kare sayısıdır. Yaygın değerler: 24 fps (sinema), 25 fps (PAL), 30 fps (NTSC), 60 fps (akıcı video).'
159
+ },
160
+ {
161
+ term: 'DPI (İnç Başına Nokta Sayısı)',
162
+ definition: 'Baskıda çözünürlük ölçüsüdür. Daha yüksek DPI = daha iyi kalite. Profesyonel fotoğrafçılık için minimum 300 DPI önerilir.'
163
+ },
164
+ {
165
+ term: 'Timelapse (Zaman Atlamalı)',
166
+ definition: 'Hızlı hareket efekti yaratmak için düzenli aralıklarla kareler yakalayarak zamanı hızlandıran sinematografik teknik.'
167
+ },
168
+ {
169
+ term: 'Altyazı Senkronizasyonu',
170
+ definition: 'Altyazıların başlangıç/bitiş zamanını film veya dizi ses ve videosuyla hizalama işlemidir.'
171
+ },
172
+ {
173
+ term: 'Metadata (Üst Veri)',
174
+ definition: 'Medya dosyalarında içeriği tanımlayan gizli bilgiler (yazar, oluşturma tarihi, kullanılan cihaz, konum vb.).'
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ type: 'diagnostic',
180
+ variant: 'info',
181
+ title: 'Doğru Araç Nasıl Seçilir',
182
+ icon: 'mdi:help-circle',
183
+ badge: 'Seçim Kılavuzu',
184
+ html: '<strong>Timelapse mı oluşturuyorsunuz?</strong> -> Timelapse hesaplayıcıyı kullanın.<br><strong>Gizliliği korumak mı gerekiyor?</strong> -> Metadata temizleme aracı.<br><strong>Altyazılarla mı çalışıyorsunuz?</strong> -> Altyazı senkronizasyonu ve düzenleyici.<br><strong>Görüntüyü optimize etmek mi gerekiyor?</strong> -> Çözünürlük ve izleme mesafesi hesaplayıcı.'
185
+ },
186
+ {
187
+ type: 'card',
188
+ title: 'Temel İşlevsellik',
189
+ html: 'Tüm araçlarımız tarayıcınızda <strong>%100 yerel</strong> olarak çalışır. Bu, maksimum gizlilik, anlık hız ve (ilk yüklemeden sonra) çevrimdışı erişim anlamına gelir.'
190
+ },
191
+ {
192
+ type: 'message',
193
+ title: 'Gizlilik Koruması',
194
+ ariaLabel: 'Gizlilik ve veri depolama hakkında bilgi',
195
+ html: 'Görsel-işitsel verilerinizi saklamıyoruz, işlemiyoruz veya paylaşmıyoruz. Tüm hesaplamalar ve metadata temizliği yalnızca cihazınızda gerçekleşir. İçeriğinizin kontrolü tamamen sizdedir.'
196
+ }
197
+ ],
198
+ };
@@ -0,0 +1,198 @@
1
+ import type { CategoryLocaleContent } from '../../types';
2
+
3
+ export const content: CategoryLocaleContent = {
4
+ slug: 'audiovisual-photography',
5
+ title: '音视频与摄影工具',
6
+ description: '为电影制作人、摄影师和数字音视频内容创作者提供的专业工具和计算器。',
7
+ seo: [
8
+ {
9
+ type: 'summary',
10
+ title: '专业音视频工具',
11
+ items: [
12
+ '用于延时摄影、特效和构图的智能计算器。',
13
+ '用于清理 EXIF 元数据的隐私工具。',
14
+ '字幕同步和时间轴编辑。',
15
+ '分辨率分析、打印质量和最佳观看距离。'
16
+ ],
17
+ },
18
+ {
19
+ type: 'title',
20
+ text: '音视频制作专业工具箱',
21
+ level: 2,
22
+ },
23
+ {
24
+ type: 'paragraph',
25
+ html: '我们的综合实用程序套件解决了音视频制作各个阶段最常见的技术挑战。从电影级延时摄影的精确间隔计算,到通过清理多媒体文件中的 EXIF 元数据来保护隐私。',
26
+ },
27
+ {
28
+ type: 'stats',
29
+ items: [
30
+ {
31
+ value: '12+',
32
+ label: '专用工具',
33
+ icon: 'mdi:cog'
34
+ },
35
+ {
36
+ value: '100%',
37
+ label: '精确计算',
38
+ icon: 'mdi:chart-line'
39
+ },
40
+ {
41
+ value: '0%',
42
+ label: '数据存储在服务器上',
43
+ icon: 'mdi:shield-check'
44
+ }
45
+ ],
46
+ columns: 3
47
+ },
48
+ {
49
+ type: 'title',
50
+ text: '工具类别',
51
+ level: 3,
52
+ },
53
+ {
54
+ type: 'comparative',
55
+ items: [
56
+ {
57
+ title: '延时摄影与电影感',
58
+ description: '为您的电影镜头计算拍摄间隔、总时长和帧率。',
59
+ icon: 'mdi:film',
60
+ points: [
61
+ '所需帧数计算',
62
+ '时长(秒/分钟)',
63
+ '可变播放速度'
64
+ ]
65
+ },
66
+ {
67
+ title: '隐私与元数据',
68
+ description: '通过删除文件中的 EXIF 数据和敏感元数据来保护您的隐私。',
69
+ icon: 'mdi:lock',
70
+ points: [
71
+ 'EXIF 数据分析',
72
+ '地点元数据清理',
73
+ '设备信息移除'
74
+ ]
75
+ },
76
+ {
77
+ title: '字幕编辑',
78
+ description: '以毫秒级的精度同步、调整和编辑字幕。',
79
+ icon: 'mdi:text',
80
+ points: [
81
+ '实时同步',
82
+ '入点/出点时间编辑',
83
+ '全局延迟调整'
84
+ ]
85
+ },
86
+ {
87
+ title: '图像分析',
88
+ description: '计算分辨率、打印和观看距离的技术参数。',
89
+ icon: 'mdi:image',
90
+ points: [
91
+ 'DPI 与分辨率计算',
92
+ '推荐观看距离',
93
+ '打印质量分析'
94
+ ],
95
+ highlight: true
96
+ }
97
+ ],
98
+ columns: 2
99
+ },
100
+ {
101
+ type: 'title',
102
+ text: '为什么选择我们的工具',
103
+ level: 3,
104
+ },
105
+ {
106
+ type: 'proscons',
107
+ items: [
108
+ {
109
+ pro: '100% 基于浏览器处理 - 您的数据永远不会上传到服务器',
110
+ con: '需要支持 JavaScript 的现代浏览器'
111
+ },
112
+ {
113
+ pro: '所有音视频计算均具有数学精度',
114
+ con: '极少特定情况可能需要人工核对'
115
+ },
116
+ {
117
+ pro: '专为行业专业人士设计的直观界面',
118
+ con: '在桌面/平板电脑屏幕上体验最佳'
119
+ },
120
+ {
121
+ pro: '完全免费的工具,无使用限制',
122
+ con: '无专门的高级支持(提供社区支持)'
123
+ }
124
+ ],
125
+ proTitle: '优势',
126
+ conTitle: '注意事项'
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: '快速入门指南',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'list',
135
+ items: [
136
+ '根据您的项目类型选择所需的工具',
137
+ '输入技术参数(帧数、分辨率、时间等)',
138
+ '立即获得计算结果和精确数据',
139
+ '导出结果或将其应用到您的工作流程中',
140
+ '可以无限制地为多个项目重复此过程'
141
+ ],
142
+ icon: 'mdi:arrow-right'
143
+ },
144
+ {
145
+ type: 'tip',
146
+ title: '专业提示',
147
+ html: '在处理多个片段或序列时,我们建议将关键参数(相机分辨率、常用帧率、字幕语言)保存在文档中。这样您可以快速访问它们,而无需每次重新计算。'
148
+ },
149
+ {
150
+ type: 'glossary',
151
+ items: [
152
+ {
153
+ term: 'EXIF',
154
+ definition: '在数字图像中存储元数据(日期、相机、GPS 位置等)的文件格式。它可能带来隐私风险。'
155
+ },
156
+ {
157
+ term: 'FPS (每秒帧数)',
158
+ definition: '每秒播放的帧数。常见值:24 fps(电影)、25 fps(PAL)、30 fps(NTSC)、60 fps(平滑视频)。'
159
+ },
160
+ {
161
+ term: 'DPI (每英寸点数)',
162
+ definition: '打印中的分辨率衡量标准。DPI 越高 = 质量越好。对于专业摄影,建议至少 300 DPI。'
163
+ },
164
+ {
165
+ term: '延时摄影 (Timelapse)',
166
+ definition: '一种电影摄制技术,通过定期拍摄帧来加速时间,创造出快速移动的效果。'
167
+ },
168
+ {
169
+ term: '字幕同步',
170
+ definition: '将字幕的开始/结束时间与电影或剧集的音频及视频对齐的过程。'
171
+ },
172
+ {
173
+ term: '元数据 (Metadata)',
174
+ definition: '媒体文件中描述内容的隐藏信息(作者、创建日期、所用设备、地点等)。'
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ type: 'diagnostic',
180
+ variant: 'info',
181
+ title: '如何选择正确的工具',
182
+ icon: 'mdi:help-circle',
183
+ badge: '选择指南',
184
+ html: '<strong>正在创建延时摄影?</strong> -> 使用延时摄影计算器。<br><strong>需要保护隐私?</strong> -> 元数据清理工具。<br><strong>正在处理字幕?</strong> -> 字幕同步与编辑器。<br><strong>需要优化图像?</strong> -> 分辨率和观看距离计算器。'
185
+ },
186
+ {
187
+ type: 'card',
188
+ title: '核心功能',
189
+ html: '我们所有的工具都在您的浏览器中 <strong>100% 本地</strong>运行。这意味着最高限度的隐私保护、即时的响应速度以及(初次加载后的)离线访问。'
190
+ },
191
+ {
192
+ type: 'message',
193
+ title: '隐私保护',
194
+ ariaLabel: '关于隐私和数据存储的信息',
195
+ html: '我们不存储、处理或共享您的音视频数据。所有计算和元数据清理工作仅在您的设备上进行。您对自己的内容拥有完全的控制权。'
196
+ }
197
+ ],
198
+ };
@@ -1,17 +1,45 @@
1
1
  import type { AudiovisualCategoryEntry, AudiovisualToolEntry } from '../types';
2
2
  import { timelapseCalculator } from '../tool/timelapseCalculator/index';
3
3
  import { exifCleaner } from '../tool/exifCleaner/index';
4
+ import { subtitleSync } from '../tool/subtitleSync/index';
5
+ import { privacyBlur } from '../tool/privacyBlur/index';
6
+ import { chromaticLens } from '../tool/chromaticLens/index';
7
+ import { printQualityCalculator } from '../tool/printQualityCalculator/index';
8
+ import { tvDistance } from '../tool/tvDistance/index';
9
+ import { imageCompressor } from '../tool/imageCompressor/index';
10
+ import { collageMaker } from '../tool/collageMaker/index';
11
+ import { videoFrameExtractor } from '../tool/videoFrameExtractor/index';
4
12
 
5
13
  export const audiovisualCategory: AudiovisualCategoryEntry = {
6
14
  icon: 'mdi:camera-iris',
7
15
  tools: [
8
16
  timelapseCalculator as AudiovisualToolEntry,
9
17
  exifCleaner as AudiovisualToolEntry,
18
+ subtitleSync as AudiovisualToolEntry,
19
+ privacyBlur as AudiovisualToolEntry,
20
+ chromaticLens as AudiovisualToolEntry,
21
+ printQualityCalculator as AudiovisualToolEntry,
22
+ tvDistance as AudiovisualToolEntry,
23
+ imageCompressor as AudiovisualToolEntry,
24
+ collageMaker as AudiovisualToolEntry,
25
+ videoFrameExtractor as AudiovisualToolEntry,
10
26
  ],
11
27
  i18n: {
12
- es: () => import('./i18n/es').then((m) => m.content),
13
- en: () => import('./i18n/en').then((m) => m.content),
14
- fr: () => import('./i18n/fr').then((m) => m.content),
28
+ es: async () => (await import('./i18n/es')).content,
29
+ en: async () => (await import('./i18n/en')).content,
30
+ fr: async () => (await import('./i18n/fr')).content,
31
+ de: async () => (await import('./i18n/de')).content,
32
+ it: async () => (await import('./i18n/it')).content,
33
+ pt: async () => (await import('./i18n/pt')).content,
34
+ id: async () => (await import('./i18n/id')).content,
35
+ ja: async () => (await import('./i18n/ja')).content,
36
+ ko: async () => (await import('./i18n/ko')).content,
37
+ nl: async () => (await import('./i18n/nl')).content,
38
+ pl: async () => (await import('./i18n/pl')).content,
39
+ ru: async () => (await import('./i18n/ru')).content,
40
+ sv: async () => (await import('./i18n/sv')).content,
41
+ tr: async () => (await import('./i18n/tr')).content,
42
+ zh: async () => (await import('./i18n/zh')).content,
15
43
  },
16
44
  };
17
45
 
@@ -0,0 +1,36 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { ALL_TOOLS } from '../tools';
3
+
4
+ const EXPECTED_LOCALES = [
5
+ 'de', 'en', 'es', 'fr', 'id', 'it', 'ja', 'ko', 'nl', 'pl', 'pt', 'ru', 'sv', 'tr', 'zh'
6
+ ];
7
+
8
+ describe('I18n Coverage Validation', () => {
9
+ it('all tools should be registered', () => {
10
+ expect(ALL_TOOLS.length).toBeGreaterThan(0);
11
+ });
12
+
13
+ ALL_TOOLS.forEach(({ entry }: { entry: any }) => {
14
+ describe(`Tool: ${entry.id}`, () => {
15
+ it('should have all 15 required locales', () => {
16
+ const registeredLocales = Object.keys(entry.i18n);
17
+ EXPECTED_LOCALES.forEach((locale) => {
18
+ expect(
19
+ registeredLocales,
20
+ `Tool "${entry.id}" is missing locale "${locale}"`,
21
+ ).toContain(locale);
22
+ });
23
+ });
24
+
25
+ it('all locale loaders should be functions', () => {
26
+ EXPECTED_LOCALES.forEach((locale) => {
27
+ const loader = entry.i18n[locale as keyof typeof entry.i18n];
28
+ expect(
29
+ typeof loader,
30
+ `Tool "${entry.id}" locale "${locale}" loader is not a function`,
31
+ ).toBe('function');
32
+ });
33
+ });
34
+ });
35
+ });
36
+ });