@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.
Files changed (151) 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/tool/chromaticLens/i18n/de.ts +246 -0
  17. package/src/tool/chromaticLens/i18n/id.ts +246 -0
  18. package/src/tool/chromaticLens/i18n/it.ts +246 -0
  19. package/src/tool/chromaticLens/i18n/ja.ts +246 -0
  20. package/src/tool/chromaticLens/i18n/ko.ts +246 -0
  21. package/src/tool/chromaticLens/i18n/nl.ts +246 -0
  22. package/src/tool/chromaticLens/i18n/pl.ts +246 -0
  23. package/src/tool/chromaticLens/i18n/pt.ts +246 -0
  24. package/src/tool/chromaticLens/i18n/ru.ts +246 -0
  25. package/src/tool/chromaticLens/i18n/sv.ts +246 -0
  26. package/src/tool/chromaticLens/i18n/tr.ts +246 -0
  27. package/src/tool/chromaticLens/i18n/zh.ts +246 -0
  28. package/src/tool/chromaticLens/index.ts +15 -7
  29. package/src/tool/collageMaker/i18n/de.ts +233 -0
  30. package/src/tool/collageMaker/i18n/id.ts +233 -0
  31. package/src/tool/collageMaker/i18n/it.ts +233 -0
  32. package/src/tool/collageMaker/i18n/ja.ts +233 -0
  33. package/src/tool/collageMaker/i18n/ko.ts +233 -0
  34. package/src/tool/collageMaker/i18n/nl.ts +233 -0
  35. package/src/tool/collageMaker/i18n/pl.ts +233 -0
  36. package/src/tool/collageMaker/i18n/pt.ts +233 -0
  37. package/src/tool/collageMaker/i18n/ru.ts +233 -0
  38. package/src/tool/collageMaker/i18n/sv.ts +233 -0
  39. package/src/tool/collageMaker/i18n/tr.ts +233 -0
  40. package/src/tool/collageMaker/i18n/zh.ts +233 -0
  41. package/src/tool/collageMaker/index.ts +15 -6
  42. package/src/tool/exifCleaner/i18n/de.ts +277 -0
  43. package/src/tool/exifCleaner/i18n/fr.ts +1 -1
  44. package/src/tool/exifCleaner/i18n/id.ts +277 -0
  45. package/src/tool/exifCleaner/i18n/it.ts +277 -0
  46. package/src/tool/exifCleaner/i18n/ja.ts +277 -0
  47. package/src/tool/exifCleaner/i18n/ko.ts +277 -0
  48. package/src/tool/exifCleaner/i18n/nl.ts +277 -0
  49. package/src/tool/exifCleaner/i18n/pl.ts +277 -0
  50. package/src/tool/exifCleaner/i18n/pt.ts +277 -0
  51. package/src/tool/exifCleaner/i18n/ru.ts +277 -0
  52. package/src/tool/exifCleaner/i18n/sv.ts +277 -0
  53. package/src/tool/exifCleaner/i18n/tr.ts +277 -0
  54. package/src/tool/exifCleaner/i18n/zh.ts +277 -0
  55. package/src/tool/exifCleaner/index.ts +16 -8
  56. package/src/tool/imageCompressor/i18n/de.ts +242 -0
  57. package/src/tool/imageCompressor/i18n/en.ts +1 -1
  58. package/src/tool/imageCompressor/i18n/es.ts +1 -1
  59. package/src/tool/imageCompressor/i18n/id.ts +242 -0
  60. package/src/tool/imageCompressor/i18n/it.ts +242 -0
  61. package/src/tool/imageCompressor/i18n/ja.ts +242 -0
  62. package/src/tool/imageCompressor/i18n/ko.ts +242 -0
  63. package/src/tool/imageCompressor/i18n/nl.ts +242 -0
  64. package/src/tool/imageCompressor/i18n/pl.ts +242 -0
  65. package/src/tool/imageCompressor/i18n/pt.ts +242 -0
  66. package/src/tool/imageCompressor/i18n/ru.ts +242 -0
  67. package/src/tool/imageCompressor/i18n/sv.ts +242 -0
  68. package/src/tool/imageCompressor/i18n/tr.ts +242 -0
  69. package/src/tool/imageCompressor/i18n/zh.ts +244 -0
  70. package/src/tool/imageCompressor/index.ts +15 -7
  71. package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
  72. package/src/tool/printQualityCalculator/i18n/fr.ts +1 -1
  73. package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
  74. package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
  75. package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
  76. package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
  77. package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
  78. package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
  79. package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
  80. package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
  81. package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
  82. package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
  83. package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
  84. package/src/tool/printQualityCalculator/index.ts +15 -7
  85. package/src/tool/privacyBlur/i18n/de.ts +238 -0
  86. package/src/tool/privacyBlur/i18n/id.ts +238 -0
  87. package/src/tool/privacyBlur/i18n/it.ts +238 -0
  88. package/src/tool/privacyBlur/i18n/ja.ts +238 -0
  89. package/src/tool/privacyBlur/i18n/ko.ts +238 -0
  90. package/src/tool/privacyBlur/i18n/nl.ts +238 -0
  91. package/src/tool/privacyBlur/i18n/pl.ts +238 -0
  92. package/src/tool/privacyBlur/i18n/pt.ts +238 -0
  93. package/src/tool/privacyBlur/i18n/ru.ts +238 -0
  94. package/src/tool/privacyBlur/i18n/sv.ts +238 -0
  95. package/src/tool/privacyBlur/i18n/tr.ts +238 -0
  96. package/src/tool/privacyBlur/i18n/zh.ts +238 -0
  97. package/src/tool/privacyBlur/index.ts +15 -7
  98. package/src/tool/subtitleSync/i18n/de.ts +241 -0
  99. package/src/tool/subtitleSync/i18n/fr.ts +5 -5
  100. package/src/tool/subtitleSync/i18n/id.ts +241 -0
  101. package/src/tool/subtitleSync/i18n/it.ts +241 -0
  102. package/src/tool/subtitleSync/i18n/ja.ts +241 -0
  103. package/src/tool/subtitleSync/i18n/ko.ts +241 -0
  104. package/src/tool/subtitleSync/i18n/nl.ts +241 -0
  105. package/src/tool/subtitleSync/i18n/pl.ts +241 -0
  106. package/src/tool/subtitleSync/i18n/pt.ts +241 -0
  107. package/src/tool/subtitleSync/i18n/ru.ts +241 -0
  108. package/src/tool/subtitleSync/i18n/sv.ts +241 -0
  109. package/src/tool/subtitleSync/i18n/tr.ts +241 -0
  110. package/src/tool/subtitleSync/i18n/zh.ts +241 -0
  111. package/src/tool/subtitleSync/index.ts +15 -7
  112. package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
  113. package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
  114. package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
  115. package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
  116. package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
  117. package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
  118. package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
  119. package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
  120. package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
  121. package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
  122. package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
  123. package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
  124. package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
  125. package/src/tool/timelapseCalculator/index.ts +16 -8
  126. package/src/tool/tvDistance/i18n/de.ts +223 -0
  127. package/src/tool/tvDistance/i18n/id.ts +223 -0
  128. package/src/tool/tvDistance/i18n/it.ts +223 -0
  129. package/src/tool/tvDistance/i18n/ja.ts +223 -0
  130. package/src/tool/tvDistance/i18n/ko.ts +223 -0
  131. package/src/tool/tvDistance/i18n/nl.ts +223 -0
  132. package/src/tool/tvDistance/i18n/pl.ts +223 -0
  133. package/src/tool/tvDistance/i18n/pt.ts +223 -0
  134. package/src/tool/tvDistance/i18n/ru.ts +223 -0
  135. package/src/tool/tvDistance/i18n/sv.ts +223 -0
  136. package/src/tool/tvDistance/i18n/tr.ts +223 -0
  137. package/src/tool/tvDistance/i18n/zh.ts +223 -0
  138. package/src/tool/tvDistance/index.ts +15 -7
  139. package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
  140. package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
  141. package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
  142. package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
  143. package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
  144. package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
  145. package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
  146. package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
  147. package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
  148. package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
  149. package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
  150. package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
  151. package/src/tool/videoFrameExtractor/index.ts +16 -8
@@ -0,0 +1,233 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { CollageMakerUI, CollageMakerLocaleContent } from '../index';
3
+
4
+ const slug = 'darmowy-edytor-kolazy-zdjec-online-profesjonalne-kompozycje';
5
+ const title = 'Edytor Kolaży Online: Projektuj profesjonalne kompozycje';
6
+ const description = 'Twórz kolaże zdjęć za darmo w kilka sekund. Wybieraj spośród wielu układów, dostosowuj ramki i pobieraj w wysokiej jakości bez znaków wodnych.';
7
+
8
+ const ui: CollageMakerUI = {
9
+ dropTitle: "Przeciągnij obrazy tutaj",
10
+ dropSub: "lub {link} - min. 2, maks. 9",
11
+ dropLink: "wybierz pliki",
12
+ imgsLoaded: "Załadowane obrazy",
13
+ layoutLabel: "Układ",
14
+ settingsLabel: "Ustawienia",
15
+ borderLabel: "Ramka",
16
+ borderColorLabel: "Kolor ramki",
17
+ bgColorLabel: "Tło",
18
+ downloadBtn: "Pobierz",
19
+ previewTitle: "Podgląd",
20
+ needsImgs: "Potrzebujesz jeszcze {n} obrazów",
21
+ errorMin: "Potrzebujesz co najmniej 2 obrazów",
22
+ errorMax: "Dozwolone maksymalnie 9 obrazów",
23
+ errorLoad: "Błąd podczas ładowania obrazów",
24
+ faqTitle: "Często Zadawane Pytania",
25
+ bibliographyTitle: "Referencje"
26
+ };
27
+
28
+ const faq: CollageMakerLocaleContent['faq'] = [
29
+ {
30
+ question: "Jak mogę zmienić kolejność zdjęć?",
31
+ answer: "Zdjęcia są umieszczane w kolażu zgodnie z kolejnością, w jakiej pojawiają się na liście załadowanych obrazów. Możesz usunąć zdjęcie i przesłać je ponownie, aby dostosować jego pozycję.",
32
+ },
33
+ {
34
+ question: "W jakim formacie wyjściowym jest kolaż?",
35
+ answer: "Kolaż jest pobierany w formacie WebP o wysokiej rozdzielczości, idealnym do udostępniania w sieciach społecznościowych bez utraty ostrości.",
36
+ },
37
+ ];
38
+
39
+ const howTo: CollageMakerLocaleContent['howTo'] = [
40
+ {
41
+ name: "Prześlij swoje zdjęcia",
42
+ text: "Wybierz od 2 do 9 obrazów ze swojego eksploratora plików.",
43
+ },
44
+ {
45
+ name: "Wybierz układ",
46
+ text: "Wybierz siatkę, która najlepiej pasuje do liczby przesłanych zdjęć.",
47
+ },
48
+ {
49
+ name: "Dostosuj styl",
50
+ text: "Dostosuj grubość i kolor ramki, aby nadać kolażowi profesjonalne wykończenie.",
51
+ },
52
+ {
53
+ name: "Pobierz i udostępnij",
54
+ text: "Naciśnij przycisk tworzenia i natychmiast pobierz swoją końcową kompozycję.",
55
+ },
56
+ ];
57
+
58
+ const bibliography: CollageMakerLocaleContent['bibliography'] = [
59
+ {
60
+ name: "Kompozycja fotograficzna: Sztuka kolażu",
61
+ url: "https://pl.wikipedia.org/wiki/Kola%C5%BC",
62
+ },
63
+ ];
64
+
65
+ const seo: CollageMakerLocaleContent['seo'] = [
66
+ {
67
+ type: 'summary',
68
+ title: 'Profesjonalny Edytor Kolaży Online',
69
+ items: [
70
+ 'Wiele układów i predefiniowanych siatek',
71
+ 'Personalizacja ramek i kolorów tła',
72
+ 'Rozdzielczość 1200px idealna dla mediów społecznościowych',
73
+ 'Błyskawiczne przetwarzanie bez limitów użytkowania'
74
+ ]
75
+ },
76
+ { type: 'title', text: 'Projektowanie Kolażu: Kompozycje, które opowiadają historie', level: 2 },
77
+ { type: 'paragraph', html: 'Kolaż to coś więcej niż mieszanka zdjęć; to wizualna narracja, która komunikuje emocje i kontekst. Nasze narzędzie pozwala tworzyć profesjonalne kompozycje geometryczne dla Instagrama, Facebooka, Pinteresta czy projektów osobistych bez potrzeby używania Photoshopa czy drogiego oprogramowania.' },
78
+
79
+ { type: 'stats', items: [
80
+ { value: '2-9', label: 'Zdjęć na kolaż', icon: 'mdi:image-multiple' },
81
+ { value: '1200px', label: 'Rozdzielczość HD', icon: 'mdi:video-high-definition' },
82
+ { value: 'Natychmiast', label: 'Generowanie', icon: 'mdi:lightning-bolt' }
83
+ ], columns: 3 },
84
+
85
+ { type: 'title', text: 'Kompozycja Wizualna: Zasady Projektowania', level: 3 },
86
+ { type: 'paragraph', html: 'Kompozycja to sztuka organizowania elementów wizualnych w sposób, który prowadzi wzrok widza i komunikuje intencję. Dobry kolaż równoważy:' },
87
+ { type: 'list', items: [
88
+ '<strong>Równowagę:</strong> Wizualne rozłożenie ciężaru (jasne vs ciemne obrazy, duże vs małe).',
89
+ '<strong>Przepływ Wizualny:</strong> Wzrok powinien naturalnie poruszać się po kompozycji, bez martwych punktów.',
90
+ '<strong>Kontrast:</strong> Zmiany koloru, rozmiaru i kształtu, które przyciągają uwagę.',
91
+ '<strong>Jedność:</strong> Spójność tematyczna – obrazy muszą „mówić razem” o tej samej historii.'
92
+ ], icon: 'mdi:check' },
93
+
94
+ { type: 'card', title: 'Inteligentne i adaptacyjne projekty', html: 'Nasz system automatycznie oblicza optymalny rozkład przestrzeni na podstawie liczby zdjęć. 2 zdjęcia = siatka symetryczna; 5 zdjęć = zrównoważony rozkład asymetryczny. Każda siatka jest zaprojektowana tak, aby zmaksymalizować wpływ wizualny.' },
95
+
96
+ { type: 'comparative', items: [
97
+ {
98
+ title: 'Dla mediów społecznościowych',
99
+ description: 'Instagram, TikTok, Facebook – formaty kwadratowe',
100
+ icon: 'mdi:share-all',
101
+ points: [
102
+ '1200px to idealna rozdzielczość dla feedu na Instagramie',
103
+ 'Format kwadratowy zapobiega przycinaniu podczas publikacji',
104
+ 'Możliwość dostosowania ramek dla celów brandingowych'
105
+ ],
106
+ highlight: true
107
+ },
108
+ {
109
+ title: 'Dla portfolio',
110
+ description: 'Wizualne prezentacje dla fotografów i projektantów',
111
+ icon: 'mdi:briefcase-outline',
112
+ points: [
113
+ 'Pokaż wiele kątów projektu',
114
+ 'Spójna narracja wizualna',
115
+ 'Profesjonalny druk cyfrowy'
116
+ ]
117
+ },
118
+ {
119
+ title: 'Dla prezentów osobistych',
120
+ description: 'Wydruki, ramki i albumy cyfrowe',
121
+ icon: 'mdi:gift-outline',
122
+ points: [
123
+ 'Wspomnienia z wydarzeń (śluby, podróże)',
124
+ 'Wysoka rozdzielczość gotowa do druku',
125
+ 'Natychmiastowy projekt bez wysiłku manualnego'
126
+ ]
127
+ }
128
+ ], columns: 3 },
129
+
130
+ { type: 'title', text: 'Personalizacja: Ramki i Kolory', level: 3 },
131
+ { type: 'table', headers: ['Element', 'Efekt Wizualny', 'Rekomendacja'], rows: [
132
+ ['Biała ramka', 'Czysta, minimalistyczna, nowoczesna', 'Media społecznościowe, portfolio cyfrowe'],
133
+ ['Czarna ramka', 'Dramatyczna, profesjonalna, artystyczna', 'Fotografia artystyczna, moda, luksus'],
134
+ ['Ramka neutralna (szara)', 'Wszechstronna, akademicka, korporacyjna', 'Biznes, edukacja, neutralność'],
135
+ ['Bez ramki', 'Fuzja, ciągłość, imersja', 'Jednolite tło, płynne zdjęcia']
136
+ ] },
137
+
138
+ { type: 'proscons', items: [
139
+ {
140
+ pro: 'Profesjonalne predefiniowane projekty – nie wymaga wiedzy o kompozycji',
141
+ con: 'Opcje ograniczone do ustalonych siatek'
142
+ },
143
+ {
144
+ pro: 'Rozdzielczość 1200px gotowa dla mediów społecznościowych bez skalowania',
145
+ con: 'Mniejsza swoboda niż w Photoshopie'
146
+ },
147
+ {
148
+ pro: '100% lokalne przetwarzanie – prywatność, szybkość, brak limitów',
149
+ con: 'Wymaga nowoczesnej przeglądarki'
150
+ },
151
+ {
152
+ pro: 'Całkowicie za darmo, bez znaków wodnych, bez reklam',
153
+ con: 'Brak opcji indywidualnej edycji (przycinanie, obracanie)'
154
+ }
155
+ ], proTitle: 'Zalety', conTitle: 'Ograniczenia' },
156
+
157
+ { type: 'diagnostic', variant: 'success', title: 'Gotowy dla mediów społecznościowych', icon: 'mdi:check-circle-outline', badge: 'Zoptymalizowany', html: '1200x1200px to idealna rozdzielczość dla Instagrama. Obsługuje dowolne proporcje obrazu, ale kwadratowy format wyjściowy maksymalizuje wpływ na feed, eliminuje automatyczne przycinanie i wygląda równie dobrze na komputerze, tablecie i telefonie.' },
158
+
159
+ { type: 'glossary', items: [
160
+ {
161
+ term: 'Kompozycja Wizualna',
162
+ definition: 'Sztuka organizowania elementów (kolor, kształt, przestrzeń), aby prowadzić wzrok widza i komunikować intencję emocjonalną.'
163
+ },
164
+ {
165
+ term: 'Zasada trójpodziału',
166
+ definition: 'Zasada kompozycji: dzieli obraz na 9 równych obszarów (3x3). Umieść obiekty na liniach przecięcia, aby uzyskać maksymalny wpływ.'
167
+ },
168
+ {
169
+ term: 'Siatka symetryczna',
170
+ definition: 'Równe podziały przestrzeni. Uspokajająca, uporządkowana. Idealna dla par zdjęć lub liczb parzystych.'
171
+ },
172
+ {
173
+ term: 'Siatka asymetryczna',
174
+ definition: 'Nierówne podziały. Dynamiczna, interesująca, wizualna. Idealna dla 5+ zdjęć o różnych rozmiarach.'
175
+ },
176
+ {
177
+ term: 'Równowaga wizualna',
178
+ definition: 'Percepcyjna równowaga ciężaru wizualnego. Jasny + ciemny obraz = równowaga; duży + mały = równowaga.'
179
+ }
180
+ ] },
181
+
182
+ { type: 'message', title: 'Natychmiastowa Narracja Wizualna', ariaLabel: 'Informacje o kompozycji i kolażach', html: 'Każdy kolaż opowiada historię. Nasz automatyczny projektant dba o to, aby Twoje wizualne historie były zrównoważone, profesjonalne i gotowe na świat – bez konieczności czekania na pracę grafika.' },
183
+
184
+ { type: 'title', text: 'Twórz, Udostępniaj, Inspiruj', level: 3 },
185
+ { type: 'paragraph', html: 'Dobrze zrobiony kolaż to różnica między postem, o którym szybko się zapomina, a takim, który obserwujący zapamiętają i udostępnią. Wykorzystaj inteligentną kompozycję w swoich wizualnych historiach, aby wywrzeć wrażenie.' }
186
+ ];
187
+
188
+ const faqSchema: WithContext<FAQPage> = {
189
+ '@context': 'https://schema.org',
190
+ '@type': 'FAQPage',
191
+ mainEntity: faq.map((item) => ({
192
+ '@type': 'Question',
193
+ name: item.question,
194
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
195
+ })),
196
+ };
197
+
198
+ const howToSchema: WithContext<HowTo> = {
199
+ '@context': 'https://schema.org',
200
+ '@type': 'HowTo',
201
+ name: title,
202
+ description,
203
+ step: howTo.map((step) => ({
204
+ '@type': 'HowToStep',
205
+ name: step.name,
206
+ text: step.text,
207
+ })),
208
+ };
209
+
210
+ const appSchema: WithContext<SoftwareApplication> = {
211
+ '@context': 'https://schema.org',
212
+ '@type': 'SoftwareApplication',
213
+ name: title,
214
+ description,
215
+ applicationCategory: 'UtilitiesApplication',
216
+ operatingSystem: 'Web',
217
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
218
+ inLanguage: 'pl',
219
+ };
220
+
221
+ export const content: CollageMakerLocaleContent = {
222
+ slug,
223
+ title,
224
+ description,
225
+ ui,
226
+ seo,
227
+ faqTitle: "Często Zadawane Pytania",
228
+ faq,
229
+ bibliographyTitle: "Referencje",
230
+ bibliography,
231
+ howTo,
232
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
233
+ };
@@ -0,0 +1,233 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { CollageMakerUI, CollageMakerLocaleContent } from '../index';
3
+
4
+ const slug = 'criar-collage-fotos-online-grátis-composições-profissionais';
5
+ const title = 'Criador de Collage Online: Desenhe composições profissionais';
6
+ const description = 'Crie colagens de fotos gratuitamente em segundos. Escolha entre vários layouts, ajuste as bordas e descarregue em alta qualidade sem marcas de água.';
7
+
8
+ const ui: CollageMakerUI = {
9
+ dropTitle: "Arraste as imagens para aqui",
10
+ dropSub: "ou {link} - min. 2, max. 9",
11
+ dropLink: "selecionar ficheiros",
12
+ imgsLoaded: "Imagens carregadas",
13
+ layoutLabel: "Layout",
14
+ settingsLabel: "Ajustes",
15
+ borderLabel: "Borda",
16
+ borderColorLabel: "Cor da borda",
17
+ bgColorLabel: "Fundo",
18
+ downloadBtn: "Descarregar",
19
+ previewTitle: "Pré-visualização",
20
+ needsImgs: "Necessita de {n} imagens",
21
+ errorMin: "Necessita de pelo menos 2 imagens",
22
+ errorMax: "Máximo de 9 imagens permitido",
23
+ errorLoad: "Erro ao carregar imagens",
24
+ faqTitle: "Perguntas Frequentes",
25
+ bibliographyTitle: "Referências"
26
+ };
27
+
28
+ const faq: CollageMakerLocaleContent['faq'] = [
29
+ {
30
+ question: "Como posso alterar a ordem das fotos?",
31
+ answer: "As fotos são colocadas na colagem seguindo a ordem em que aparecem na lista de imagens carregadas. Pode remover uma e carregá-la novamente para ajustar a sua posição.",
32
+ },
33
+ {
34
+ question: "Qual é o formato de saída da colagem?",
35
+ answer: "A colagem é descarregada em formato WebP de alta resolução, ideal para partilhar nas redes sociais sem perda de nitidez.",
36
+ },
37
+ ];
38
+
39
+ const howTo: CollageMakerLocaleContent['howTo'] = [
40
+ {
41
+ name: "Carregue as suas fotos",
42
+ text: "Selecione entre 2 e 9 imagens do seu explorador de ficheiros.",
43
+ },
44
+ {
45
+ name: "Escolha um layout",
46
+ text: "Selecione a grelha que melhor se adapta ao número de fotos que carregou.",
47
+ },
48
+ {
49
+ name: "Personalize o estilo",
50
+ text: "Ajuste a espessura e a cor da borda para dar um acabamento profissional.",
51
+ },
52
+ {
53
+ name: "Descarregue e partilhe",
54
+ text: "Pressione o botão de criar e descarregue instantaneamente a sua composição final.",
55
+ },
56
+ ];
57
+
58
+ const bibliography: CollageMakerLocaleContent['bibliography'] = [
59
+ {
60
+ name: "Composição Fotográfica: A Arte da Colagem",
61
+ url: "https://pt.wikipedia.org/wiki/Colagem",
62
+ },
63
+ ];
64
+
65
+ const seo: CollageMakerLocaleContent['seo'] = [
66
+ {
67
+ type: 'summary',
68
+ title: 'Criador de Collage Online Profissional',
69
+ items: [
70
+ 'Múltiplos layouts e grelhas predefinidas',
71
+ 'Personalização de bordas e cores de fundo',
72
+ 'Alta resolução de 1200px pronta para as redes sociais',
73
+ 'Processamento instantâneo sem limites de utilização'
74
+ ]
75
+ },
76
+ { type: 'title', text: 'Design de Colagem: Composições que Contam Histórias', level: 2 },
77
+ { type: 'paragraph', html: 'Uma colagem é mais do que uma mistura de fotos; é uma narrativa visual que comunica emoção e contexto. A nossa ferramenta permite criar composições geométricas profissionais para o Instagram, Facebook, Pinterest ou projetos pessoais sem a necessidade de Photoshop ou software dispendioso.' },
78
+
79
+ { type: 'stats', items: [
80
+ { value: '2-9', label: 'Imagens por Colagem', icon: 'mdi:image-multiple' },
81
+ { value: '1200px', label: 'Resolução HD', icon: 'mdi:video-high-definition' },
82
+ { value: 'Instantânea', label: 'Geração', icon: 'mdi:lightning-bolt' }
83
+ ], columns: 3 },
84
+
85
+ { type: 'title', text: 'Composição Visual: Princípios de Design', level: 3 },
86
+ { type: 'paragraph', html: 'A composição é a arte de organizar elementos visuais de forma a guiar o olhar do espetador e comunicar uma intenção. Uma boa colagem equilibra:' },
87
+ { type: 'list', items: [
88
+ '<strong>Equilíbrio:</strong> Distribuição visual do peso (imagens claras vs escuras, grandes vs pequenas).',
89
+ '<strong>Fluxo Visual:</strong> O olhar deve percorrer a composição naturalmente, sem pontos mortos.',
90
+ '<strong>Contraste:</strong> Variações de cor, tamanho e forma que captam a atenção.',
91
+ '<strong>Unidade:</strong> Coerência temática - as imagens devem \"falar juntas\" sobre a mesma história.'
92
+ ], icon: 'mdi:check' },
93
+
94
+ { type: 'card', title: 'Designs Inteligentes e Adaptáveis', html: 'O nosso sistema calcula automaticamente a distribuição ideal do espaço com base no número de fotos. 2 imagens = grelha simétrica; 5 imagens = distribuição assimétrica equilibrada. Cada grelha é desenhada para maximizar o impacto visual.' },
95
+
96
+ { type: 'comparative', items: [
97
+ {
98
+ title: 'Para Redes Sociais',
99
+ description: 'Instagram, TikTok, Facebook - formatos quadrados',
100
+ icon: 'mdi:share-all',
101
+ points: [
102
+ '1200px é perfeito para o feed do Instagram',
103
+ 'O formato quadrado evita o corte ao publicar',
104
+ 'Bordas personalizáveis para branding'
105
+ ],
106
+ highlight: true
107
+ },
108
+ {
109
+ title: 'Para Portefólios',
110
+ description: 'Vitrinas visuais para fotógrafos e designers',
111
+ icon: 'mdi:briefcase-outline',
112
+ points: [
113
+ 'Mostre múltiplos ângulos de um projeto',
114
+ 'Narrativa visual coesa',
115
+ 'Impressão de digitais books profissionais'
116
+ ]
117
+ },
118
+ {
119
+ title: 'Para Presentes Pessoais',
120
+ description: 'Impressões, molduras e álbuns digitais',
121
+ icon: 'mdi:gift-outline',
122
+ points: [
123
+ 'Recordações de eventos (casamentos, viagens)',
124
+ 'Alta resolução pronta para impressão',
125
+ 'Design instantâneo sem esforço manual'
126
+ ]
127
+ }
128
+ ], columns: 3 },
129
+
130
+ { type: 'title', text: 'Personalização: Bordas e Cores', level: 3 },
131
+ { type: 'table', headers: ['Elemento', 'Efeito Visual', 'Recomendação'], rows: [
132
+ ['Borda Branca', 'Limpo, minimalista, moderno', 'Redes sociais, portefólios digitais'],
133
+ ['Borda Preta', 'Dramático, profissional, artístico', 'Fotografia de arte, moda, luxo'],
134
+ ['Borda Neutra (cinzento)', 'Versátil, académico, corporativo', 'Negócios, educação, neutralidade'],
135
+ ['Sem Borda', 'Fusão, continuidade, imersivo', 'Fundo uniforme, fotos fluidas']
136
+ ] },
137
+
138
+ { type: 'proscons', items: [
139
+ {
140
+ pro: 'Designs profissionais predefinidos - sem necessidade de conhecimentos de composição',
141
+ con: 'Opções limitadas às grelhas preestabelecidas'
142
+ },
143
+ {
144
+ pro: 'Resolução de 1200px pronta para as redes sociais sem redimensionamento',
145
+ con: 'Não tão personalizável como o Photoshop'
146
+ },
147
+ {
148
+ pro: 'Processamento 100% local - privacidade, velocidade, sem limites',
149
+ con: 'Requer um navegador moderno'
150
+ },
151
+ {
152
+ pro: 'Totalmente gratuito, sem marcas de água, sem publicidade',
153
+ con: 'Sem opções de edição individual (corte, rotação)'
154
+ }
155
+ ], proTitle: 'Vantagens', conTitle: 'Limitações' },
156
+
157
+ { type: 'diagnostic', variant: 'success', title: 'Pronto para Redes Sociais', icon: 'mdi:check-circle-outline', badge: 'Otimizado', html: '1200x1200px é a resolução ideal para o Instagram. Suporta qualquer proporção de aspeto, mas a saída quadrada maximiza o impacto no feed, elimina o corte automático e fica bem tanto em desktop, como em tablet e telemóvel.' },
158
+
159
+ { type: 'glossary', items: [
160
+ {
161
+ term: 'Composição Visual',
162
+ definition: 'Arte de organizar elementos (cor, forma, espaço) para guiar o olhar do espetador e comunicar uma intenção emocional.'
163
+ },
164
+ {
165
+ term: 'Regra dos Terços',
166
+ definition: 'Princípio de composição: divide a imagem em 9 áreas iguais (3x3). Posicione os assuntos nas linhas de interseção para o máximo impacto.'
167
+ },
168
+ {
169
+ term: 'Grelha Simétrica',
170
+ definition: 'Divisões iguais do espaço. Tranquilizador, ordenado. Ideal para pares de fotos ou números pares.'
171
+ },
172
+ {
173
+ term: 'Grelha Assimétrica',
174
+ definition: 'Divisões desiguais. Dinâmico, interessante, visual. Ideal para 5 ou mais fotos com variedade de tamanhos.'
175
+ },
176
+ {
177
+ term: 'Equilíbrio Visual',
178
+ definition: 'Equilíbrio percetual do peso visual. Imagem clara + escura = equilíbrio; grande + pequena = equilíbrio.'
179
+ }
180
+ ] },
181
+
182
+ { type: 'message', title: 'Narrativa Visual Instantânea', ariaLabel: 'Informações sobre composição e colagens', html: 'Cada colagem conta uma história. O nosso designer automático garante que as suas histórias visuais sejam equilibradas, profissionais e prontas para o mundo. Sem ter de esperar que um designer gráfico faça o trabalho.' },
183
+
184
+ { type: 'title', text: 'Crie, Partilhe, Inspire', level: 3 },
185
+ { type: 'paragraph', html: 'Uma colagem bem feita é a diferença entre um post esquecível e um que os seus seguidores recordarão e partilharão. Use a composição inteligente para que as suas histórias visuais tenham impacto.' }
186
+ ];
187
+
188
+ const faqSchema: WithContext<FAQPage> = {
189
+ '@context': 'https://schema.org',
190
+ '@type': 'FAQPage',
191
+ mainEntity: faq.map((item) => ({
192
+ '@type': 'Question',
193
+ name: item.question,
194
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
195
+ })),
196
+ };
197
+
198
+ const howToSchema: WithContext<HowTo> = {
199
+ '@context': 'https://schema.org',
200
+ '@type': 'HowTo',
201
+ name: title,
202
+ description,
203
+ step: howTo.map((step) => ({
204
+ '@type': 'HowToStep',
205
+ name: step.name,
206
+ text: step.text,
207
+ })),
208
+ };
209
+
210
+ const appSchema: WithContext<SoftwareApplication> = {
211
+ '@context': 'https://schema.org',
212
+ '@type': 'SoftwareApplication',
213
+ name: title,
214
+ description,
215
+ applicationCategory: 'UtilitiesApplication',
216
+ operatingSystem: 'Web',
217
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
218
+ inLanguage: 'pt',
219
+ };
220
+
221
+ export const content: CollageMakerLocaleContent = {
222
+ slug,
223
+ title,
224
+ description,
225
+ ui,
226
+ seo,
227
+ faqTitle: "Perguntas Frequentes",
228
+ faq,
229
+ bibliographyTitle: "Referências",
230
+ bibliography,
231
+ howTo,
232
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
233
+ };