@jjlmoya/utils-babies 1.5.0 → 1.7.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 (115) hide show
  1. package/package.json +67 -66
  2. package/src/category/i18n/de.ts +48 -0
  3. package/src/category/i18n/en.ts +10 -10
  4. package/src/category/i18n/fr.ts +10 -10
  5. package/src/category/i18n/id.ts +48 -0
  6. package/src/category/i18n/it.ts +48 -0
  7. package/src/category/i18n/ja.ts +48 -0
  8. package/src/category/i18n/ko.ts +48 -0
  9. package/src/category/i18n/nl.ts +48 -0
  10. package/src/category/i18n/pl.ts +48 -0
  11. package/src/category/i18n/pt.ts +48 -0
  12. package/src/category/i18n/ru.ts +48 -0
  13. package/src/category/i18n/sv.ts +48 -0
  14. package/src/category/i18n/tr.ts +48 -0
  15. package/src/category/i18n/zh.ts +48 -0
  16. package/src/category/index.ts +13 -1
  17. package/src/tests/faq_count.test.ts +1 -1
  18. package/src/tests/i18n_coverage.test.ts +36 -0
  19. package/src/tests/locale_completeness.test.ts +1 -1
  20. package/src/tests/schemas_fulfillment.test.ts +23 -0
  21. package/src/tests/seo_length.test.ts +1 -2
  22. package/src/tests/title_quality.test.ts +55 -0
  23. package/src/tool/baby-feeding-calculator/component.astro +40 -40
  24. package/src/tool/baby-feeding-calculator/i18n/de.ts +162 -0
  25. package/src/tool/baby-feeding-calculator/i18n/id.ts +162 -0
  26. package/src/tool/baby-feeding-calculator/i18n/it.ts +162 -0
  27. package/src/tool/baby-feeding-calculator/i18n/ja.ts +162 -0
  28. package/src/tool/baby-feeding-calculator/i18n/ko.ts +162 -0
  29. package/src/tool/baby-feeding-calculator/i18n/nl.ts +162 -0
  30. package/src/tool/baby-feeding-calculator/i18n/pl.ts +162 -0
  31. package/src/tool/baby-feeding-calculator/i18n/pt.ts +162 -0
  32. package/src/tool/baby-feeding-calculator/i18n/ru.ts +162 -0
  33. package/src/tool/baby-feeding-calculator/i18n/sv.ts +162 -0
  34. package/src/tool/baby-feeding-calculator/i18n/tr.ts +162 -0
  35. package/src/tool/baby-feeding-calculator/i18n/zh.ts +162 -0
  36. package/src/tool/baby-feeding-calculator/index.ts +12 -0
  37. package/src/tool/baby-percentile-calculator/component.astro +38 -38
  38. package/src/tool/baby-percentile-calculator/i18n/de.ts +245 -0
  39. package/src/tool/baby-percentile-calculator/i18n/id.ts +245 -0
  40. package/src/tool/baby-percentile-calculator/i18n/it.ts +245 -0
  41. package/src/tool/baby-percentile-calculator/i18n/ja.ts +245 -0
  42. package/src/tool/baby-percentile-calculator/i18n/ko.ts +245 -0
  43. package/src/tool/baby-percentile-calculator/i18n/nl.ts +245 -0
  44. package/src/tool/baby-percentile-calculator/i18n/pl.ts +245 -0
  45. package/src/tool/baby-percentile-calculator/i18n/pt.ts +245 -0
  46. package/src/tool/baby-percentile-calculator/i18n/ru.ts +245 -0
  47. package/src/tool/baby-percentile-calculator/i18n/sv.ts +245 -0
  48. package/src/tool/baby-percentile-calculator/i18n/tr.ts +245 -0
  49. package/src/tool/baby-percentile-calculator/i18n/zh.ts +245 -0
  50. package/src/tool/baby-percentile-calculator/index.ts +12 -0
  51. package/src/tool/baby-size-converter/component.astro +42 -42
  52. package/src/tool/baby-size-converter/i18n/de.ts +203 -0
  53. package/src/tool/baby-size-converter/i18n/fr.ts +1 -1
  54. package/src/tool/baby-size-converter/i18n/id.ts +203 -0
  55. package/src/tool/baby-size-converter/i18n/it.ts +203 -0
  56. package/src/tool/baby-size-converter/i18n/ja.ts +203 -0
  57. package/src/tool/baby-size-converter/i18n/ko.ts +203 -0
  58. package/src/tool/baby-size-converter/i18n/nl.ts +203 -0
  59. package/src/tool/baby-size-converter/i18n/pl.ts +203 -0
  60. package/src/tool/baby-size-converter/i18n/pt.ts +203 -0
  61. package/src/tool/baby-size-converter/i18n/ru.ts +203 -0
  62. package/src/tool/baby-size-converter/i18n/sv.ts +203 -0
  63. package/src/tool/baby-size-converter/i18n/tr.ts +203 -0
  64. package/src/tool/baby-size-converter/i18n/zh.ts +203 -0
  65. package/src/tool/baby-size-converter/index.ts +12 -0
  66. package/src/tool/fertile-days-estimator/component.astro +14 -9
  67. package/src/tool/fertile-days-estimator/i18n/de.ts +262 -0
  68. package/src/tool/fertile-days-estimator/i18n/id.ts +262 -0
  69. package/src/tool/fertile-days-estimator/i18n/it.ts +262 -0
  70. package/src/tool/fertile-days-estimator/i18n/ja.ts +262 -0
  71. package/src/tool/fertile-days-estimator/i18n/ko.ts +262 -0
  72. package/src/tool/fertile-days-estimator/i18n/nl.ts +262 -0
  73. package/src/tool/fertile-days-estimator/i18n/pl.ts +262 -0
  74. package/src/tool/fertile-days-estimator/i18n/pt.ts +262 -0
  75. package/src/tool/fertile-days-estimator/i18n/ru.ts +262 -0
  76. package/src/tool/fertile-days-estimator/i18n/sv.ts +262 -0
  77. package/src/tool/fertile-days-estimator/i18n/tr.ts +262 -0
  78. package/src/tool/fertile-days-estimator/i18n/zh.ts +262 -0
  79. package/src/tool/fertile-days-estimator/index.ts +12 -0
  80. package/src/tool/pregnancy-calculator/component.astro +55 -48
  81. package/src/tool/pregnancy-calculator/i18n/de.ts +467 -0
  82. package/src/tool/pregnancy-calculator/i18n/en.ts +140 -0
  83. package/src/tool/pregnancy-calculator/i18n/es.ts +143 -3
  84. package/src/tool/pregnancy-calculator/i18n/fr.ts +143 -3
  85. package/src/tool/pregnancy-calculator/i18n/id.ts +467 -0
  86. package/src/tool/pregnancy-calculator/i18n/it.ts +467 -0
  87. package/src/tool/pregnancy-calculator/i18n/ja.ts +467 -0
  88. package/src/tool/pregnancy-calculator/i18n/ko.ts +467 -0
  89. package/src/tool/pregnancy-calculator/i18n/nl.ts +467 -0
  90. package/src/tool/pregnancy-calculator/i18n/pl.ts +467 -0
  91. package/src/tool/pregnancy-calculator/i18n/pt.ts +467 -0
  92. package/src/tool/pregnancy-calculator/i18n/ru.ts +467 -0
  93. package/src/tool/pregnancy-calculator/i18n/sv.ts +467 -0
  94. package/src/tool/pregnancy-calculator/i18n/tr.ts +467 -0
  95. package/src/tool/pregnancy-calculator/i18n/zh.ts +467 -0
  96. package/src/tool/pregnancy-calculator/index.ts +37 -1
  97. package/src/tool/pregnancy-calculator/milestones.ts +2 -146
  98. package/src/tool/vaccination-calendar/component.astro +26 -24
  99. package/src/tool/vaccination-calendar/i18n/de.ts +194 -0
  100. package/src/tool/vaccination-calendar/i18n/en.ts +20 -0
  101. package/src/tool/vaccination-calendar/i18n/es.ts +20 -0
  102. package/src/tool/vaccination-calendar/i18n/fr.ts +99 -75
  103. package/src/tool/vaccination-calendar/i18n/id.ts +194 -0
  104. package/src/tool/vaccination-calendar/i18n/it.ts +194 -0
  105. package/src/tool/vaccination-calendar/i18n/ja.ts +194 -0
  106. package/src/tool/vaccination-calendar/i18n/ko.ts +194 -0
  107. package/src/tool/vaccination-calendar/i18n/nl.ts +194 -0
  108. package/src/tool/vaccination-calendar/i18n/pl.ts +194 -0
  109. package/src/tool/vaccination-calendar/i18n/pt.ts +194 -0
  110. package/src/tool/vaccination-calendar/i18n/ru.ts +194 -0
  111. package/src/tool/vaccination-calendar/i18n/sv.ts +194 -0
  112. package/src/tool/vaccination-calendar/i18n/tr.ts +194 -0
  113. package/src/tool/vaccination-calendar/i18n/zh.ts +194 -0
  114. package/src/tool/vaccination-calendar/index.ts +33 -1
  115. package/src/tool/vaccination-calendar/logic.ts +39 -13
@@ -0,0 +1,194 @@
1
+ import type { VaccinationCalendarLocaleContent } from '../index';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+
4
+ const slug = 'kalendarz-szczepien-hiszpania-niemowleta';
5
+ const title = 'Kalendarz Szczepień w Hiszpanii';
6
+ const description = 'Oblicz dokładne daty szczepień Twojego dziecka zgodnie z kalendarzem AEP 2026.';
7
+ const faq = [
8
+ {
9
+ question: 'Czym jest kalendarz szczepień AEP 2026?',
10
+ answer: 'Jest to kalendarz szczepień zalecany przez Hiszpańskie Stowarzyszenie Pediatryczne na rok 2026. Obejmuje on wszystkie szczepienia obowiązkowe i zalecane dla niemowląt i dzieci od urodzenia do 14. roku życia.',
11
+ },
12
+ {
13
+ question: 'Czy szczepienie dziecka zgodnie z kalendarzem jest obowiązkowe?',
14
+ answer: 'W Hiszpanii szczepienia nie są prawnie obowiązkowe, ale są bardzo zalecane. Szczepionki z kalendarza systematycznego są bezpłatne i podawane w publicznych ośrodkach zdrowia.',
15
+ },
16
+ {
17
+ question: 'Co się stanie, jeśli pominiemy dawkę?',
18
+ answer: 'W przypadku opóźnienia dawki nie trzeba zaczynać od początku. Pediatra poinstruuje Cię, jak wznowić kalendarz od miejsca, w którym został przerwany. Ważne jest, aby jak najszybciej uzupełnić schemat.',
19
+ },
20
+ {
21
+ question: 'Czy mogę podać dziecku kilka szczepionek tego samego dnia?',
22
+ answer: 'Tak, podawanie kilku szczepionek podczas tej samej wizyty jest powszechne i bezpieczne. Szczepionki skojarzone, takie jak hexawalentna, chronią przed sześcioma chorobami w jednym zastrzyku.',
23
+ },
24
+ {
25
+ question: 'Czy szczepionki są bezpieczne dla wcześniaków?',
26
+ answer: 'Wcześniaki powinny być szczepione zgodnie z ich wiekiem chronologicznym (od urodzenia), a nie skorygowanym, chyba że neonatolog zaleci inaczej. Mają one priorytet ze względu na większą podatność na zachorowania.',
27
+ },
28
+ ];
29
+ const howTo = [
30
+ {
31
+ name: 'Wprowadź datę urodzenia',
32
+ text: 'Wpisz dzień, miesiąc i rok urodzenia dziecka w odpowiednie pola.',
33
+ },
34
+ {
35
+ name: 'Sprawdź kolejną wizytę',
36
+ text: 'Kalkulator automatycznie pokaże Ci, kiedy wypada kolejne szczepienie i jakie szczepionki mu odpowiadają.',
37
+ },
38
+ {
39
+ name: 'Przejrzyj pełny kalendarz',
40
+ text: 'Rozwiń sekcje przeszłych i przyszłych wizyt, aby zobaczyć cały kalendarz szczepień.',
41
+ },
42
+ {
43
+ name: 'Eksportuj przypomnienia',
44
+ text: 'Naciśnij przycisk, aby pobrać plik .ics ze wszystkimi przyszłymi wizytami i dodać je do kalendarza w telefonie.',
45
+ },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faq.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howTo.map((step) => ({
63
+ '@type': 'HowToStep',
64
+ name: step.name,
65
+ text: step.text,
66
+ })),
67
+ };
68
+ const appSchema: WithContext<SoftwareApplication> = {
69
+ '@context': 'https://schema.org',
70
+ '@type': 'SoftwareApplication',
71
+ name: title,
72
+ description,
73
+ applicationCategory: 'UtilitiesApplication',
74
+ operatingSystem: 'Web',
75
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
76
+ inLanguage: 'pl',
77
+ };
78
+
79
+ export const content: VaccinationCalendarLocaleContent = {
80
+ slug,
81
+ title,
82
+ description,
83
+ ui: {
84
+ labelBirthDate: 'Data urodzenia dziecka',
85
+ placeholderDD: 'DD',
86
+ placeholderMM: 'MM',
87
+ placeholderAAAA: 'RRRR',
88
+ emptyMsg: 'Wprowadź dzień, miesiąc i rok urodzenia dziecka, aby zobaczyć kalendarz szczepień.',
89
+ invalidMsg: 'Wprowadzona data jest nieprawidłowa.',
90
+ futureMsg: 'Dziecko nie mogło urodzić się w przyszłości.',
91
+ labelNextAppointment: 'Kolejna obliczona wizyta',
92
+ btnAddReminder: 'Dodaj przypomnienie w telefonie',
93
+ btnToday: 'To dzisiaj! Nie zapomnij książeczki zdrowia',
94
+ labelPassed: 'Przeszłe wizyty',
95
+ labelFuture: 'Przyszły kalendarz',
96
+ labelStatusOk: 'OK',
97
+ labelStatusPending: 'OCZEK.',
98
+ labelSource: 'Źródło: AEP 2026',
99
+ labelShare: 'Udostępnij te daty',
100
+ faqTitle: 'Często zadawane pytania',
101
+ bibliographyTitle: 'Źródła',
102
+ labelMonth: 'miesiąc',
103
+ labelMonths: 'miesięcy',
104
+ labelYear: 'rok',
105
+ labelYears: 'lat',
106
+ labelDay: 'dzień',
107
+ labelDays: 'dni',
108
+ labelAnd: 'i',
109
+ labelVaccination: 'Szczepienie',
110
+ labelAppointment: 'Wizyta szczepienna',
111
+ vac_hexavalente: 'Hexawalentna (6 w 1)',
112
+ vac_neumococo: 'Pneumokoki (VCN15/20)',
113
+ vac_meningococo_b: 'Meningokoki B (Bexsero)',
114
+ vac_rotavirus: 'Rotawirusy',
115
+ vac_meningococo_acwy: 'Meningokoki ACWY',
116
+ vac_triple_virica: 'MMR (Odra, Świnka, Różyczka)',
117
+ vac_varicela: 'Ospa wietrzna',
118
+ vac_gripe: 'Grypa (Sezonowa)',
119
+ vac_vph: 'HPV (Wirus brodawczaka ludzkiego)',
120
+ vac_tdpa: 'Tdpa (Tężec, Błonica, Krztusiec)',
121
+ vac_polio_booster: 'Polio (Dawka przypominająca)',
122
+ },
123
+ seo: [
124
+ { type: 'title', text: 'Kalkulator Szczepień: Kiedy wypada kolejne szczepienie mojego dziecka?', level: 2 },
125
+ { type: 'stats', columns: 4, items: [
126
+ { value: '+95%', label: 'Skuteczność' },
127
+ { value: '14', label: 'Łączna liczba dawek' },
128
+ { value: 'Bezpłatne', label: 'Koszt AEP' },
129
+ { value: 'Wysokie', label: 'Bezpieczeństwo' },
130
+ ]},
131
+ { type: 'tip', html: 'Kalendarz AEP 2026 zawiera ważne nowości, takie jak rozszerzenie szczepienia przeciwko meningokokom typu B oraz aktualizację zaleceń dotyczących HPV dla obu płci od 12. roku życia.' },
132
+ { type: 'title', text: 'Nowości w kalendarzu AEP 2026', level: 3 },
133
+ { type: 'list', items: [
134
+ 'Meningokoki B (Bexsero): utrwalony schemat 2+1 z dawkami w 2., 4. i 12. miesiącu życia.',
135
+ 'HPV rozszerzone na wszystkich nastolatków od 12. roku życia, niezależnie od płci.',
136
+ 'Pneumokoki: zaktualizowane zalecenie dotyczące VCN15 lub VCN20 w zależności od dostępności regionalnej.',
137
+ 'Rotawirusy: szczepionka doustna włączona do kalendarza systematycznego we wszystkich regionach.',
138
+ 'Tdpa: zalecana dawka przypominająca w wieku 6 i 12 lat w celu podtrzymania odporności na krztusiec.',
139
+ ]},
140
+ { type: 'title', text: 'Różnice między wspólnotami autonomicznymi', level: 3 },
141
+ { type: 'list', items: [
142
+ 'Niektóre wspólnoty obejmują dodatkowe szczepionki nieuwzględnione w kalendarzu ogólnokrajowym.',
143
+ 'Finansowanie szczepionki przeciw rotawirusom zależy od wspólnoty, choć dąży się do powszechnego pokrycia kosztów.',
144
+ 'Meningokoki ACWY mogą być podawane w nieco innym wieku w zależności od protokołu danej wspólnoty.',
145
+ 'Zawsze skonsultuj się z pediatrą lub lokalnym ośrodkiem zdrowia, aby potwierdzić aktualny kalendarz.',
146
+ ]},
147
+ { type: 'title', text: 'Jak wyeksportować kalendarz do telefonu', level: 3 },
148
+ { type: 'list', items: [
149
+ 'Wprowadź datę urodzenia dziecka w kalkulatorze.',
150
+ 'Naciśnij przycisk "Dodaj przypomnienie w telefonie", aby pobrać plik .ics.',
151
+ 'Otwórz plik w aplikacji kalendarza (Google Calendar, Apple Calendar itp.).',
152
+ 'Wszystkie wydarzenia dotyczące szczepień zostaną zapisane z odpowiednią datą i rodzajem szczepionki.',
153
+ ]},
154
+ { type: 'title', text: 'Typowe efekty uboczne', level: 3 },
155
+ { type: 'list', items: [
156
+ 'Zaczerwienienie lub obrzęk w miejscu wstrzyknięcia: znika po 1-2 dniach.',
157
+ 'Lekka gorączka (37.5–38.5 °C): normalna w ciągu pierwszych 24-48 godzin.',
158
+ 'Drażliwość lub płacz: częste u niemowląt po pierwszych dawkach.',
159
+ 'Przejściowa senność lub brak apetytu: nie wymaga leczenia.',
160
+ 'Ciężkie reakcje, takie jak anafilaksja, są niezwykle rzadkie (mniej niż 1 na milion dawek).',
161
+ ]},
162
+ { type: 'tip', html: 'Zabranie dziecka najedzonego i w wygodnym ubraniu ułatwia wizytę. Po szczepieniu kontakt „skóra do skóry” lub karmienie piersią pomagają w naturalny sposób złagodzić ból i stan zapalny.' },
163
+ { type: 'summary', title: 'O czym należy pamiętać', items: [
164
+ 'Kalendarz AEP 2026 obejmuje 14 dawek do 12. roku życia dla pełnej ochrony.',
165
+ 'Szczepionki w pierwszym roku życia chronią jednocześnie przed nawet 9 groźnymi chorobami.',
166
+ 'Łagodne efekty uboczne są normalne i znikają po 1-2 dniach.',
167
+ 'Możesz wyeksportować wszystkie wizyty szczepienne do kalendarza w telefonie jednym kliknięciem.',
168
+ 'W razie wątpliwości dotyczących kalendarza w Twojej wspólnocie, zawsze skonsultuj się z pediatrą.',
169
+ ]},
170
+ ],
171
+ faqTitle: "Często zadawane pytania",
172
+ faq,
173
+ bibliographyTitle: "Źródła",
174
+ bibliography: [
175
+ {
176
+ name: 'Asociación Española de Pediatría - Calendario de Vacunaciones 2026',
177
+ url: 'https://www.aeped.es/comite-vacunas/calendario-vacunaciones',
178
+ },
179
+ {
180
+ name: 'Hiszpańskie Ministerstwo Zdrowia - Kalendarz Szczepień',
181
+ url: 'https://www.sanidad.gob.es/areas/promocionPrevencion/vacunaciones/calendario/home.htm',
182
+ },
183
+ {
184
+ name: 'WHO - Immunizacja',
185
+ url: 'https://www.who.int/news-room/fact-sheets/detail/vaccines-and-immunization',
186
+ },
187
+ {
188
+ name: 'CDC - Zalecany schemat szczepień dla dzieci i młodzieży',
189
+ url: 'https://www.cdc.gov/vaccines/schedules/hcp/imz/child-adolescent.html',
190
+ },
191
+ ],
192
+ howTo,
193
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
194
+ };
@@ -0,0 +1,194 @@
1
+ import type { VaccinationCalendarLocaleContent } from '../index';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+
4
+ const slug = 'calendario-vacinacao-espanha-bebes';
5
+ const title = 'Calendário de Vacinação em Espanha';
6
+ const description = 'Calcule as datas exatas de vacinação do seu bebé de acordo com o calendário AEP 2026.';
7
+ const faq = [
8
+ {
9
+ question: 'O que é o calendário de vacinação AEP 2026?',
10
+ answer: 'É o calendário de vacinação recomendado pela Associação Espanhola de Pediatria para o ano de 2026. Inclui todas as vacinas sistemáticas e opcionais para bebés e crianças desde o nascimento até aos 14 anos.',
11
+ },
12
+ {
13
+ question: 'É obrigatório vacinar o meu bebé de acordo com o calendário?',
14
+ answer: 'Em Espanha, a vacinação não é legalmente obrigatória, mas é fortemente recomendada. As vacinas do calendário sistemático são gratuitas e administradas nos centros de saúde públicos.',
15
+ },
16
+ {
17
+ question: 'O que acontece se saltarmos uma dose?',
18
+ answer: 'Se uma dose for atrasada, não é necessário começar do zero. O seu pediatra indicará como retomar o calendário a partir de onde parou. O importante é completar o esquema o mais rápido possível.',
19
+ },
20
+ {
21
+ question: 'Posso administrar várias vacinas no mesmo dia?',
22
+ answer: 'Sim, é comum e seguro administrar várias vacinas na mesma visita. As vacinas combinadas, como a hexavalente, já protegem contra seis doenças numa única injeção.',
23
+ },
24
+ {
25
+ question: 'As vacinas são seguras para bebés prematuros?',
26
+ answer: 'Os bebés prematuros devem ser vacinados de acordo com a sua idade cronológica (desde o nascimento), não a idade corrigida, salvo indicação específica do neonatologista. Têm prioridade por serem mais vulneráveis.',
27
+ },
28
+ ];
29
+ const howTo = [
30
+ {
31
+ name: 'Introduza a data de nascimento',
32
+ text: 'Escreva o dia, mês e ano de nascimento do seu bebé nos campos correspondentes.',
33
+ },
34
+ {
35
+ name: 'Consulte a próxima consulta',
36
+ text: 'A calculadora mostra automaticamente quando é a próxima vacinação e quais as vacinas correspondentes.',
37
+ },
38
+ {
39
+ name: 'Reveja o calendário completo',
40
+ text: 'Abra as secções de consultas passadas e futuras para ver todo o calendário de vacinação.',
41
+ },
42
+ {
43
+ name: 'Exporte os lembretes',
44
+ text: 'Prima o botão para descarregar um ficheiro .ics com todas as consultas futuras e adicioná-las ao calendário do seu telemóvel.',
45
+ },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faq.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howTo.map((step) => ({
63
+ '@type': 'HowToStep',
64
+ name: step.name,
65
+ text: step.text,
66
+ })),
67
+ };
68
+ const appSchema: WithContext<SoftwareApplication> = {
69
+ '@context': 'https://schema.org',
70
+ '@type': 'SoftwareApplication',
71
+ name: title,
72
+ description,
73
+ applicationCategory: 'UtilitiesApplication',
74
+ operatingSystem: 'Web',
75
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
76
+ inLanguage: 'pt',
77
+ };
78
+
79
+ export const content: VaccinationCalendarLocaleContent = {
80
+ slug,
81
+ title,
82
+ description,
83
+ ui: {
84
+ labelBirthDate: 'Data de nascimento do bebé',
85
+ placeholderDD: 'DD',
86
+ placeholderMM: 'MM',
87
+ placeholderAAAA: 'AAAA',
88
+ emptyMsg: 'Introduza o dia, mês e ano de nascimento do seu bebé para ver o calendário de vacinação.',
89
+ invalidMsg: 'A data introduzida não é válida.',
90
+ futureMsg: 'Um bebé não pode ter nascido no futuro.',
91
+ labelNextAppointment: 'Próxima consulta calculada',
92
+ btnAddReminder: 'Adicionar lembrete ao telemóvel',
93
+ btnToday: 'É hoje! Não se esqueça do boletim',
94
+ labelPassed: 'Consultas passadas',
95
+ labelFuture: 'Calendário futuro',
96
+ labelStatusOk: 'OK',
97
+ labelStatusPending: 'PEND.',
98
+ labelSource: 'Fonte: AEP 2026',
99
+ labelShare: 'Partilhar estas datas',
100
+ faqTitle: 'Perguntas frequentes',
101
+ bibliographyTitle: 'Referências',
102
+ labelMonth: 'mês',
103
+ labelMonths: 'meses',
104
+ labelYear: 'ano',
105
+ labelYears: 'anos',
106
+ labelDay: 'dia',
107
+ labelDays: 'dias',
108
+ labelAnd: 'e',
109
+ labelVaccination: 'Vacinação',
110
+ labelAppointment: 'Consulta de vacinação',
111
+ vac_hexavalente: 'Hexavalente',
112
+ vac_neumococo: 'Pneumococo (VCN15/20)',
113
+ vac_meningococo_b: 'Meningococo B (Bexsero)',
114
+ vac_rotavirus: 'Rotavírus',
115
+ vac_meningococo_acwy: 'Meningococo ACWY',
116
+ vac_triple_virica: 'Tríplice Viral (VASPR)',
117
+ vac_varicela: 'Varicela',
118
+ vac_gripe: 'Gripe (Sazonal)',
119
+ vac_vph: 'HPV (Papiloma)',
120
+ vac_tdpa: 'Tdpa (Tétano, Difteria, Tosse convulsa)',
121
+ vac_polio_booster: 'Pólio (Reforço)',
122
+ },
123
+ seo: [
124
+ { type: 'title', text: 'Calculadora de Vacinas: Quando toca a próxima ao meu filho?', level: 2 },
125
+ { type: 'stats', columns: 4, items: [
126
+ { value: '+95%', label: 'Eficácia' },
127
+ { value: '14', label: 'Doses totais' },
128
+ { value: 'Público', label: 'Custo AEP' },
129
+ { value: 'Alta', label: 'Segurança' },
130
+ ]},
131
+ { type: 'tip', html: 'O calendário AEP 2026 inclui novidades importantes como a extensão da vacina contra o meningococo B e a atualização das recomendações para o HPV em ambos os sexos a partir dos 12 anos.' },
132
+ { type: 'title', text: 'Novidades do Calendário AEP 2026', level: 3 },
133
+ { type: 'list', items: [
134
+ 'Meningococo B (Bexsero): esquema 2+1 consolidado com doses aos 2, 4 e 12 meses.',
135
+ 'HPV estendido a todos os adolescentes a partir dos 12 anos, independentemente do sexo.',
136
+ 'Pneumococo: recomendação atualizada com VCN15 ou VCN20 conforme disponibilidade regional.',
137
+ 'Rotavírus: vacina oral incluída no calendário sistemático em todas as comunidades.',
138
+ 'Tdpa: reforço recomendado aos 6 e 12 anos para manter a imunidade contra a tosse convulsa.',
139
+ ]},
140
+ { type: 'title', text: 'Diferenças entre comunidades autónomas', level: 3 },
141
+ { type: 'list', items: [
142
+ 'Algumas comunidades incluem vacinas adicionais não constantes do calendário nacional.',
143
+ 'O financiamento do rotavírus varia conforme a comunidade, embora a tendência seja a cobertura universal.',
144
+ 'O meningococo ACWY pode ser administrado em idades ligeiramente diferentes de acordo com o protocolo autonómico.',
145
+ 'Consulte sempre o seu pediatra ou o centro de saúde da sua comunidade para confirmar o calendário em vigor.',
146
+ ]},
147
+ { type: 'title', text: 'Como exportar o calendário para o seu telemóvel', level: 3 },
148
+ { type: 'list', items: [
149
+ 'Introduza a data de nascimento do seu bebé na calculadora.',
150
+ 'Prima o botão "Adicionar lembrete ao telemóvel" para descarregar o ficheiro .ics.',
151
+ 'Abra o ficheiro com a sua aplicação de calendário (Google Calendar, Apple Calendar, etc.).',
152
+ 'Todos os eventos de vacinação ficarão guardados com a data e as vacinas correspondentes.',
153
+ ]},
154
+ { type: 'title', text: 'Efeitos secundários comuns', level: 3 },
155
+ { type: 'list', items: [
156
+ 'Vermelhidão ou inchaço no local da injeção: desaparece em 1-2 dias.',
157
+ 'Febre ligeira (37.5–38.5 °C): normal nas primeiras 24-48 horas.',
158
+ 'Irritabilidade ou choro: frequente em bebés após as primeiras doses.',
159
+ 'Sonolência ou falta de apetite transitória: não necessita de tratamento.',
160
+ 'Reações graves como anafilaxia são extremamente raras (menos de 1 por milhão de doses).',
161
+ ]},
162
+ { type: 'tip', html: 'Levar o bebé bem alimentado e com roupa confortável facilita a visita. Após a vacina, o contacto pele com pele ou a amamentação ajudam a acalmar a dor e a inflamação de forma natural.' },
163
+ { type: 'summary', title: 'O que deve recordar', items: [
164
+ 'O calendário AEP 2026 inclui 14 doses até aos 12 anos para uma proteção completa.',
165
+ 'As vacinas do primeiro ano protegem simultaneamente contra até 9 doenças graves.',
166
+ 'Os efeitos secundários ligeiros são normais e desaparecem em 1-2 dias.',
167
+ 'Pode exportar todas as consultas de vacinação para o calendário do seu telemóvel com um único clique.',
168
+ 'Consulte sempre o seu pediatra em caso de dúvidas sobre o calendário da sua comunidade.',
169
+ ]},
170
+ ],
171
+ faqTitle: "Perguntas frequentes",
172
+ faq,
173
+ bibliographyTitle: "Referências",
174
+ bibliography: [
175
+ {
176
+ name: 'Asociación Española de Pediatría - Calendario de Vacunaciones 2026',
177
+ url: 'https://www.aeped.es/comite-vacunas/calendario-vacunaciones',
178
+ },
179
+ {
180
+ name: 'Ministério da Saúde (Espanha) - Calendário de Vacinação',
181
+ url: 'https://www.sanidad.gob.es/areas/promocionPrevencion/vacunaciones/calendario/home.htm',
182
+ },
183
+ {
184
+ name: 'OMS - Imunização',
185
+ url: 'https://www.who.int/pt/health-topics/vaccines-and-immunization',
186
+ },
187
+ {
188
+ name: 'CDC - Plano de imunização recomendado para crianças e adolescentes',
189
+ url: 'https://www.cdc.gov/vaccines/schedules/hcp/imz/child-adolescent.html',
190
+ },
191
+ ],
192
+ howTo,
193
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
194
+ };
@@ -0,0 +1,194 @@
1
+ import type { VaccinationCalendarLocaleContent } from '../index';
2
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
+
4
+ const slug = 'kalendar-vakcinacii-v-ispanii-dlya-detej';
5
+ const title = 'Календарь вакцинации в Испании';
6
+ const description = 'Рассчитайте точные даты вакцинации вашего ребенка в соответствии с календарем AEP 2026.';
7
+ const faq = [
8
+ {
9
+ question: 'Что такое календарь вакцинации AEP 2026?',
10
+ answer: 'Это график вакцинации, рекомендованный Испанской ассоциацией педиатрии на 2026 год. Он включает все плановые и дополнительные прививки для младенцев и детей с рождения до 14 лет.',
11
+ },
12
+ {
13
+ question: 'Обязательно ли вакцинировать ребенка по этому календарю?',
14
+ answer: 'В Испании вакцинация не является юридически обязательной, но настоятельно рекомендуется. Прививки из национального календаря бесплатны и проводятся в государственных медицинских центрах.',
15
+ },
16
+ {
17
+ question: 'Что делать, если мы пропустили дозу?',
18
+ answer: 'Если доза введена с опозданием, нет необходимости начинать заново. Ваш педиатр подскажет, как возобновить график с того места, на котором вы остановились. Важно завершить схему как можно скорее.',
19
+ },
20
+ {
21
+ question: 'Можно ли вводить несколько вакцин в один день?',
22
+ answer: 'Да, вводить несколько вакцин во время одного визита — обычная и безопасная практика. Комбинированные вакцины, такие как шестивалентная, защищают сразу от шести заболеваний за один укол.',
23
+ },
24
+ {
25
+ question: 'Безопасны ли вакцины для недоношенных детей?',
26
+ answer: 'Недоношенным детям следует делать прививки в соответствии с их хронологическим возрастом (от рождения), а не скорректированным, если нет специальных указаний неонатолога. Они являются приоритетными, так как более уязвимы.',
27
+ },
28
+ ];
29
+ const howTo = [
30
+ {
31
+ name: 'Введите дату рождения',
32
+ text: 'Введите день, месяц и год рождения вашего ребенка в соответствующие поля.',
33
+ },
34
+ {
35
+ name: 'Проверьте следующий прием',
36
+ text: 'Калькулятор автоматически покажет вам, когда назначена следующая вакцинация и какие прививки предстоят.',
37
+ },
38
+ {
39
+ name: 'Просмотрите весь календарь',
40
+ text: 'Разверните разделы прошлых и будущих приемов, чтобы увидеть весь график вакцинации.',
41
+ },
42
+ {
43
+ name: 'Экспортируйте напоминания',
44
+ text: 'Нажмите кнопку, чтобы загрузить файл .ics со всеми будущими приемами и добавить их в календарь вашего мобильного телефона.',
45
+ },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faq.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howTo.map((step) => ({
63
+ '@type': 'HowToStep',
64
+ name: step.name,
65
+ text: step.text,
66
+ })),
67
+ };
68
+ const appSchema: WithContext<SoftwareApplication> = {
69
+ '@context': 'https://schema.org',
70
+ '@type': 'SoftwareApplication',
71
+ name: title,
72
+ description,
73
+ applicationCategory: 'UtilitiesApplication',
74
+ operatingSystem: 'Web',
75
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
76
+ inLanguage: 'ru',
77
+ };
78
+
79
+ export const content: VaccinationCalendarLocaleContent = {
80
+ slug,
81
+ title,
82
+ description,
83
+ ui: {
84
+ labelBirthDate: 'Дата рождения ребенка',
85
+ placeholderDD: 'ДД',
86
+ placeholderMM: 'ММ',
87
+ placeholderAAAA: 'ГГГГ',
88
+ emptyMsg: 'Введите день, месяц и год рождения вашего ребенка, чтобы увидеть календарь вакцинации.',
89
+ invalidMsg: 'Введенная дата невалидна.',
90
+ futureMsg: 'Ребенок не мог родиться в будущем.',
91
+ labelNextAppointment: 'Следующий рассчитанный прием',
92
+ btnAddReminder: 'Добавить в календарь телефона',
93
+ btnToday: 'Сегодня день прививки! Не забудьте карту',
94
+ labelPassed: 'Прошедшие приемы',
95
+ labelFuture: 'Будущие прививки',
96
+ labelStatusOk: 'OK',
97
+ labelStatusPending: 'ОЖИД.',
98
+ labelSource: 'Источник: AEP 2026',
99
+ labelShare: 'Поделиться датами',
100
+ faqTitle: 'Часто задаваемые вопросы',
101
+ bibliographyTitle: 'Источники',
102
+ labelMonth: 'мес.',
103
+ labelMonths: 'мес.',
104
+ labelYear: 'год',
105
+ labelYears: 'лет',
106
+ labelDay: 'день',
107
+ labelDays: 'дней',
108
+ labelAnd: 'и',
109
+ labelVaccination: 'Вакцинация',
110
+ labelAppointment: 'Прием для вакцинации',
111
+ vac_hexavalente: 'Шестивалентная',
112
+ vac_neumococo: 'Пневмококк (VCN15/20)',
113
+ vac_meningococo_b: 'Менингококк B (Bexsero)',
114
+ vac_rotavirus: 'Ротавирус',
115
+ vac_meningococo_acwy: 'Менингококк ACWY',
116
+ vac_triple_virica: 'КПК (Корь, Паротит, Краснуха)',
117
+ vac_varicela: 'Ветряная оспа',
118
+ vac_gripe: 'Грипп (Сезонный)',
119
+ vac_vph: 'ВЧП (Папилломавирус)',
120
+ vac_tdpa: 'АДСМ (Столбняк, Дифтерия, Коклюш)',
121
+ vac_polio_booster: 'Полиомиелит (Ревакцинация)',
122
+ },
123
+ seo: [
124
+ { type: 'title', text: 'Калькулятор прививок: когда следующая вакцинация у моего ребенка?', level: 2 },
125
+ { type: 'stats', columns: 4, items: [
126
+ { value: '+95%', label: 'Эффективность' },
127
+ { value: '14', label: 'Всего доз' },
128
+ { value: 'Бесплатно', label: 'Стоимость (Испания)' },
129
+ { value: 'Высокая', label: 'Безопасность' },
130
+ ]},
131
+ { type: 'tip', html: 'Календарь AEP 2026 включает важные изменения, такие как расширение вакцинации против менингококка B и обновление рекомендаций по ВПЧ для детей обоих полов с 12 лет.' },
132
+ { type: 'title', text: 'Новое в календаре AEP 2026', level: 3 },
133
+ { type: 'list', items: [
134
+ 'Менингококк B (Bexsero): закрепленная схема 2+1 с дозами в 2, 4 и 12 месяцев.',
135
+ 'ВПЧ расширена на всех подростков с 12 лет, независимо от пола.',
136
+ 'Пневмококк: обновленная рекомендация с использованием VCN15 или VCN20 в зависимости от региона.',
137
+ 'Ротавирус: пероральная вакцина включена в плановый календарь во всех регионах Испании.',
138
+ 'АДСМ: ревакцинация рекомендуется в 6 и 12 лет для поддержания иммунитета против коклюша.',
139
+ ]},
140
+ { type: 'title', text: 'Различия между автономными сообществами Испании', level: 3 },
141
+ { type: 'list', items: [
142
+ 'Некоторые регионы включают дополнительные вакцины, не входящие в национальный календарь.',
143
+ 'Финансирование вакцины от ротавируса зависит от региона, хотя наметилась тенденция к повсеместному покрытию.',
144
+ 'Менингококк ACWY может вводиться в разном возрасте в зависимости от регионального протокола.',
145
+ 'Всегда консультируйтесь со своим педиатром или в медицинском центре вашего региона, чтобы подтвердить текущий график.',
146
+ ]},
147
+ { type: 'title', text: 'Как экспортировать календарь в телефон', level: 3 },
148
+ { type: 'list', items: [
149
+ 'Введите дату рождения вашего ребенка в калькулятор.',
150
+ 'Нажмите кнопку «Добавить в календарь телефона», чтобы загрузить файл .ics.',
151
+ 'Откройте файл с помощью приложения календаря (Google Calendar, Apple Calendar и т. д.).',
152
+ 'Все события вакцинации будут сохранены с соответствующей датой и типом прививки.',
153
+ ]},
154
+ { type: 'title', text: 'Типичные побочные эффекты', level: 3 },
155
+ { type: 'list', items: [
156
+ 'Покраснение или отек в месте инъекции: исчезает через 1-2 дня.',
157
+ 'Небольшая температура (37,5–38,5 °C): норма в первые 24-48 часов.',
158
+ 'Раздражительность или плач: часто встречается у младенцев после первых доз.',
159
+ 'Сонливость или временная потеря аппетита: не требует лечения.',
160
+ 'Серьезные реакции, такие как анафилаксия, крайне редки (менее 1 на миллион доз).',
161
+ ]},
162
+ { type: 'tip', html: 'Покормите ребенка перед визитом и наденьте удобную одежду. После вакцинации контакт «кожа к коже» или грудное вскармливание помогают успокоить боль естественным путем.' },
163
+ { type: 'summary', title: 'Что важно помнить', items: [
164
+ 'Календарь AEP 2026 включает 14 доз до 12 лет для полной защиты.',
165
+ 'Вакцины первого года жизни защищают одновременно от 9 опасных заболеваний.',
166
+ 'Легкие побочные эффекты нормальны и проходят за 1-2 дня.',
167
+ 'Вы можете экспортировать все даты прививок в календарь телефона одним нажатием.',
168
+ 'По всем вопросам о региональном календаре всегда обращайтесь к своему педиатру.',
169
+ ]},
170
+ ],
171
+ faqTitle: "Часто задаваемые вопросы",
172
+ faq,
173
+ bibliographyTitle: "Источники",
174
+ bibliography: [
175
+ {
176
+ name: 'Asociación Española de Pediatría - Календарь вакцинации 2026',
177
+ url: 'https://www.aeped.es/comite-vacunas/calendario-vacunaciones',
178
+ },
179
+ {
180
+ name: 'Министерство здравоохранения Испании - Календарь прививок',
181
+ url: 'https://www.sanidad.gob.es/areas/promocionPrevencion/vacunaciones/calendario/home.htm',
182
+ },
183
+ {
184
+ name: 'ВОЗ - Иммунизация',
185
+ url: 'https://www.who.int/ru/health-topics/vaccines-and-immunization',
186
+ },
187
+ {
188
+ name: 'CDC - Рекомендуемый график иммунизации детей и подростков',
189
+ url: 'https://www.cdc.gov/vaccines/schedules/hcp/imz/child-adolescent.html',
190
+ },
191
+ ],
192
+ howTo,
193
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
194
+ };