@jjlmoya/utils-pets 1.20.0 → 1.22.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 (42) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +4 -1
  4. package/src/index.ts +1 -0
  5. package/src/tests/i18n_coverage.test.ts +5 -2
  6. package/src/tests/locale_completeness.test.ts +1 -1
  7. package/src/tests/qa-test-helpers.ts +32 -0
  8. package/src/tests/qa_bibliography_links.test.ts +40 -0
  9. package/src/tests/qa_claim_evidence.test.ts +69 -0
  10. package/src/tests/qa_logic_reference_coverage.test.ts +46 -0
  11. package/src/tests/qa_runtime_i18n.test.ts +100 -0
  12. package/src/tests/tool_validation.test.ts +3 -3
  13. package/src/tool/petCarrierCrateSizePlanner/bibliography.astro +6 -0
  14. package/src/tool/petCarrierCrateSizePlanner/bibliography.ts +12 -0
  15. package/src/tool/petCarrierCrateSizePlanner/component.astro +89 -0
  16. package/src/tool/petCarrierCrateSizePlanner/controller.ts +128 -0
  17. package/src/tool/petCarrierCrateSizePlanner/dom-views.ts +96 -0
  18. package/src/tool/petCarrierCrateSizePlanner/entry.ts +27 -0
  19. package/src/tool/petCarrierCrateSizePlanner/evaluator.ts +14 -0
  20. package/src/tool/petCarrierCrateSizePlanner/i18n/de.ts +171 -0
  21. package/src/tool/petCarrierCrateSizePlanner/i18n/en.ts +171 -0
  22. package/src/tool/petCarrierCrateSizePlanner/i18n/es.ts +171 -0
  23. package/src/tool/petCarrierCrateSizePlanner/i18n/fr.ts +171 -0
  24. package/src/tool/petCarrierCrateSizePlanner/i18n/id.ts +171 -0
  25. package/src/tool/petCarrierCrateSizePlanner/i18n/it.ts +171 -0
  26. package/src/tool/petCarrierCrateSizePlanner/i18n/ja.ts +171 -0
  27. package/src/tool/petCarrierCrateSizePlanner/i18n/ko.ts +171 -0
  28. package/src/tool/petCarrierCrateSizePlanner/i18n/nl.ts +171 -0
  29. package/src/tool/petCarrierCrateSizePlanner/i18n/pl.ts +171 -0
  30. package/src/tool/petCarrierCrateSizePlanner/i18n/pt.ts +171 -0
  31. package/src/tool/petCarrierCrateSizePlanner/i18n/ru.ts +171 -0
  32. package/src/tool/petCarrierCrateSizePlanner/i18n/sv.ts +171 -0
  33. package/src/tool/petCarrierCrateSizePlanner/i18n/tr.ts +171 -0
  34. package/src/tool/petCarrierCrateSizePlanner/i18n/zh.ts +171 -0
  35. package/src/tool/petCarrierCrateSizePlanner/index.ts +12 -0
  36. package/src/tool/petCarrierCrateSizePlanner/logic.test.ts +49 -0
  37. package/src/tool/petCarrierCrateSizePlanner/logic.ts +77 -0
  38. package/src/tool/petCarrierCrateSizePlanner/pet-carrier-crate-size-planner.css +639 -0
  39. package/src/tool/petCarrierCrateSizePlanner/seo.astro +14 -0
  40. package/src/tool/petCarrierCrateSizePlanner/storage.ts +31 -0
  41. package/src/tool/petCarrierCrateSizePlanner/ui.ts +59 -0
  42. package/src/tools.ts +3 -0
@@ -0,0 +1,171 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
3
+ import type { PetCarrierCrateSizePlannerLocaleContent } from '../entry';
4
+ import type { PetCarrierCrateSizePlannerUI } from '../ui';
5
+
6
+ const slug = 'planificador-dimensiones-transportin-mascotas';
7
+ const title = 'Planificador de Dimensiones de Transportín para Mascotas';
8
+ const description = 'Calcula las dimensiones internas del transportín para perro o gato a partir de seis medidas corporales, con revisión para viajes en avión y lista de comprobación de confort.';
9
+
10
+ const ui: PetCarrierCrateSizePlannerUI = {
11
+ heroEyebrow: 'Mide primero. Compra con total seguridad.',
12
+ journeyHint: 'Selecciona la mascota y el tipo de viaje, introduce las medidas y utiliza la plantilla como punto de partida para comprobar el interior del transportín.',
13
+ unitLegend: 'Unidades de visualización',
14
+ speciesStep: 'Empieza por la mascota',
15
+ metricUnit: 'Métrico',
16
+ imperialUnit: 'Imperial',
17
+ speciesLegend: '¿Quién viaja?',
18
+ speciesDog: 'Perro',
19
+ speciesCat: 'Gato',
20
+ modeLegend: '¿Dónde se realiza el viaje?',
21
+ modeCar: 'Coche',
22
+ modeAir: 'Avión',
23
+ measurementsLegend: 'Mide a tu mascota',
24
+ noseTailLabel: 'Hocico a la base de la cola',
25
+ noseTailHint: 'Mide sin incluir la curvatura de la cola',
26
+ elbowHeightLabel: 'Suelo al codo',
27
+ shoulderWidthLabel: 'Anchura de hombros',
28
+ standingHeightLabel: 'Altura de pie',
29
+ beddingLabel: 'Grosor de la manta o colchoneta',
30
+ weightLabel: 'Peso de la mascota',
31
+ cmUnit: 'cm',
32
+ inchUnit: 'pulg',
33
+ kgUnit: 'kg',
34
+ lbUnit: 'lb',
35
+ snubNosedLabel: 'Raza braquicéfala o chata',
36
+ snubNosedHint: 'El viaje en avión requiere ajustes de la normativa IATA. Consulta con tu veterinario y la aerolínea sobre su aptitud.',
37
+ presetLegend: 'Comienza con un perfil',
38
+ presetCat: 'Gato',
39
+ presetSmallDog: 'Perro pequeño',
40
+ presetMediumDog: 'Perro mediano',
41
+ presetLargeDog: 'Perro grande',
42
+ resultEyebrow: 'Marco de medición recomendado',
43
+ resultTitle: 'Espacio adecuado para girarse',
44
+ resultDimensionLabel: 'Dimensiones internas mínimas de partida',
45
+ lengthLabel: 'Longitud',
46
+ widthLabel: 'Anchura',
47
+ heightLabel: 'Altura',
48
+ petWeightLabel: 'Peso del animal',
49
+ journeyLabel: 'Modo de viaje',
50
+ statusComfort: 'Nivel base de confort',
51
+ statusAirReview: 'Revisión de transporte aéreo',
52
+ statusSnub: 'Ajuste por hocico corto',
53
+ resultDetail: 'Comprueba el interior real del transportín, la puerta, la ventilación, el cierre y la normativa de la compañía antes de comprar o viajar.',
54
+ checklistTitle: 'Las cuatro comprobaciones corporales',
55
+ checklistStand: 'La mascota puede estar de pie y sentada erguida sin que el techo toque su cabeza o orejas.',
56
+ checklistTurn: 'La mascota puede darse la vuelta de forma natural mientras está de pie.',
57
+ checklistLie: 'La mascota puede tumbarse en una posición cómoda sobre su manta.',
58
+ checklistAirline: 'Para viajes en avión, confirma los límites de la aerolínea, ventilación, cierres de seguridad, suelo estanco y etiquetas obligatorias.',
59
+ invalidInput: 'Introduce valores positivos para cada medida corporal y peso de la mascota.',
60
+ noteTitle: 'Utiliza esta herramienta como estudio de espacio, no como aprobación de viaje',
61
+ noteText: 'Las normativas de transporte varían según la aerolínea, el vehículo, la ruta y el animal. Un veterinario debe evaluar la salud y aptitud de la mascota, especialmente en razas chatas o animales con problemas respiratorios o de ansiedad.',
62
+ methodTitle: 'Método de cálculo',
63
+ methodText: 'El cálculo base sigue las pautas de IATA: la longitud equivale al hocico a base de cola más la mitad de la altura del codo, la anchura al doble del ancho de hombros y la altura a la postura de pie más el grosor de la colchoneta. Se aplica un margen del 10% cuando se activa el transporte aéreo para razas chatas.',
64
+ blueprintLabel: 'Esquema medido del transportín que muestra la mascota en el interior y las guías de longitud y altura',
65
+ dimensionInside: 'Dimensiones interiores',
66
+ checkMark: 'OK',
67
+ };
68
+
69
+ const faq: PetCarrierCrateSizePlannerLocaleContent['faq'] = [
70
+ {
71
+ question: '¿Cómo debo medir a mi perro o gato para elegir transportín?',
72
+ answer: 'Mide desde la punta del hocico hasta la base de la cola, desde el suelo hasta la articulación del codo, el ancho en el punto más amplio de los hombros y la altura desde el suelo hasta la parte más alta de la cabeza o de las orejas. Añade el grosor de la manta aparte, ya que reduce la altura útil. Mantén a la mascota de pie en posición natural.',
73
+ },
74
+ {
75
+ question: '¿Qué dimensiones calcula esta herramienta?',
76
+ answer: 'Estima la longitud interna como la distancia del hocico a la cola más la mitad de la altura del codo, la anchura como el doble del ancho de hombros y la altura como la altura de pie más el colchón. Son medidas mínimas de partida para un solo animal. Los marcos de las puertas, techos inclinados y bebederos pueden reducir el espacio real.',
77
+ },
78
+ {
79
+ question: '¿El resultado asegura la aprobación de una aerolínea?',
80
+ answer: 'No. El modo aéreo aplica las fórmulas de referencia de la normativa IATA, pero cada aerolínea y ruta pueden exigir requisitos adicionales. Verifica siempre la normativa actual de la compañía, materiales aceptados, ventilación, etiquetas y peso máximo antes de viajar.',
81
+ },
82
+ {
83
+ question: '¿Por qué las razas chatas reciben una dimensión mayor para volar?',
84
+ answer: 'Las directrices internacionales de IATA recomiendan contenedores más espaciosos para razas braquicéfalas debido al riesgo de sobrecalentamiento y estrés respiratorio. La calculadora añade un margen dimensional del 10%, pero debes consultar obligatoriamente con un veterinario antes de planificar el vuelo.',
85
+ },
86
+ {
87
+ question: '¿Debe ser un transportín de coche lo más grande posible?',
88
+ answer: 'No necesariamente. Debe permitir que el animal se ponga de pie, se siente, se gire y se tumbe cómodamente, pero manteniéndose estable en el vehículo. Un transportín demasiado holgado puede restar eficacia a los sistemas de retención y cinturones de seguridad.',
89
+ },
90
+ ];
91
+
92
+ const howTo: PetCarrierCrateSizePlannerLocaleContent['howTo'] = [
93
+ { name: 'Elige el tipo de viaje', text: 'Selecciona si el trayecto se realizará en coche o en avión para ajustar las comprobaciones necesarias.' },
94
+ { name: 'Toma las seis medidas', text: 'Mide la distancia hocico a cola, altura del codo, anchura de hombros, altura de pie, grosor del colchón y peso del animal mientras esté tranquilo.' },
95
+ { name: 'Consulta el esquema interior', text: 'Utiliza la longitud, anchura y altura calculadas como punto de partida mínimo para comparar modelos comerciales.' },
96
+ { name: 'Verifica la homologación final', text: 'Antes de comprar, comprueba la estructura del transportín, cierres, ventilación y la normativa vigente con la aerolínea o veterinario.' },
97
+ ];
98
+
99
+ const seo: PetCarrierCrateSizePlannerLocaleContent['seo'] = [
100
+ {
101
+ type: 'summary',
102
+ title: 'Guía para elegir el transportín adecuado según la anatomía de tu mascota',
103
+ items: [
104
+ 'Mide el cuerpo de la mascota en lugar de guiarte únicamente por su peso corporal.',
105
+ 'Utiliza las dimensiones internas mínimas como referencia para comparar modelos comerciales.',
106
+ 'Revisa siempre los cierres de seguridad, la ventilación y la estructura del contenedor.',
107
+ 'El transporte aéreo requiere una preparación específica y atención prioritaria a las razas chatas.',
108
+ ],
109
+ },
110
+ { type: 'title', text: 'Cómo planificar las dimensiones del transportín', level: 2 },
111
+ {
112
+ type: 'paragraph',
113
+ html: 'Un transportín adecuado debe actuar como una habitación segura y confortable que permita cuatro movimientos fundamentales a tu perro o gato: ponerse de pie sin encoger la cabeza, sentarse erguido de forma natural, girarse sobre su propio eje sin dificultad y tumbarse plácidamente en una posición relajada. Esta calculadora traduce la anatomía concreta de tu mascota en una longitud, anchura y altura interiores recomendadas de partida. Resulta especialmente útil cuando los fabricantes solo proporcionan las dimensiones exteriores del producto o cuando la caja de transporte presenta formas redondeadas, techos inclinados o esquinas achaflanadas que reducen el volumen real aprovechable.',
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'El resultado obtenido representa el espacio útil interior mínimo que necesita el animal para no sufrir estrés ni lesiones posturales. Compara siempre estos datos con la cota interior real medida en los puntos más estrechos y bajos del habitáculo. Elementos esenciales como colchonetas o mantas gruesas, bebederos acoplados a la puerta, o el propio estrechamiento de las paredes laterales pueden restar centímetros valiosos. Si un modelo comercial cumple justo con una de las medidas pero queda justo en las demás, es sumamente aconsejable optar por la talla superior para favorecer el bienestar durante todo el trayecto.',
118
+ },
119
+ { type: 'title', text: 'Importancia de cada medida corporal', level: 2 },
120
+ {
121
+ type: 'table',
122
+ headers: ['Medida corporal', 'Por qué es importante para la mascota', 'Aplicación en el cálculo del transportín'],
123
+ rows: [
124
+ ['Hocico a base de cola', 'Define la longitud básica del cuerpo sin depender de la postura al dormir.', 'Longitud del habitáculo'],
125
+ ['Suelo al codo', 'Aporta margen de giro y movilidad a las extremidades delanteras.', 'Longitud del habitáculo'],
126
+ ['Anchura de hombros', 'Aporta holgura lateral adecuada en el punto corporal más ancho.', 'Anchura del habitáculo'],
127
+ ['Altura de pie', 'Evita que el techo o la cubierta compriman la cabeza o las orejas.', 'Altura del habitáculo'],
128
+ ['Grosor del colchón', 'Mantiene la altura útil real tras colocar el lecho acolchado.', 'Altura del habitáculo'],
129
+ ['Peso corporal', 'Permite comprobar la resistencia máxima y homologación del contenedor.', 'Revisión de carga'],
130
+ ],
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Las fórmulas aplicadas en este planificador siguen las directrices oficiales de transporte de animales vivos de la Asociación de Transporte Aéreo Internacional (IATA) y la experiencia veterinaria. La longitud interna se calcula sumando la distancia desde la punta del hocico hasta la base de la cola más la mitad de la altura del suelo al codo. La anchura interna equivale al doble del ancho de hombros para permitir giros sin presión lateral. Por último, la altura interna corresponde a la altura total de pie desde el suelo hasta la parte superior de la cabeza o punta de las orejas, más el grosor de la colchoneta elegida.',
135
+ },
136
+ { type: 'title', text: 'Consideraciones para el viaje en avión y razas chatas', level: 2 },
137
+ {
138
+ type: 'paragraph',
139
+ html: 'Es fundamental recordar que un cálculo de medidas no sustituye la aprobación oficial de una compañía aérea. Factores como el modelo de avión, la temporada del año, la ventilación del contenedor en los cuatro costados, el tipo de cierre metálico de la puerta y la estanqueidad del suelo son totalmente determinantes. En el caso de razas braquicéfalas o chatas (como bulldogs, pugs, bóxers o gatos persas), las normativas internacionales exigen mayor espacio y aireación debido al riesgo de sobrecalentamiento y distrés respiratorio. Consulta siempre a un veterinario y a la aerolínea con suficiente antelación.',
140
+ },
141
+ {
142
+ type: 'tip',
143
+ title: 'Comprobación práctica del espacio en casa',
144
+ html: 'Antes de realizar un viaje largo, coloca a la mascota en el transportín en un entorno tranquilo y libre de estímulos estresantes. Observa detenidamente sus movimientos corporales durante varios minutos. Si notas que debe encoger la cabeza, doblar la espalda o empujar las paredes para girarse, elige una talla superior y consulta con tu veterinario si tienes dudas sobre su nivel de confort.',
145
+ },
146
+ ];
147
+
148
+ const schemas: PetCarrierCrateSizePlannerLocaleContent['schemas'] = [
149
+ {
150
+ '@context': 'https://schema.org',
151
+ '@type': 'SoftwareApplication',
152
+ name: title,
153
+ description,
154
+ applicationCategory: 'LifestyleApplication',
155
+ operatingSystem: 'Web',
156
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
157
+ } as WithContext<SoftwareApplication>,
158
+ {
159
+ '@context': 'https://schema.org',
160
+ '@type': 'FAQPage',
161
+ mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
162
+ } as WithContext<FAQPage>,
163
+ {
164
+ '@context': 'https://schema.org',
165
+ '@type': 'HowTo',
166
+ name: title,
167
+ step: howTo.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })),
168
+ } as WithContext<HowTo>,
169
+ ];
170
+
171
+ export const content: PetCarrierCrateSizePlannerLocaleContent = { slug, title, description, ui, seo, faq, bibliography, howTo, schemas };
@@ -0,0 +1,171 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
3
+ import type { PetCarrierCrateSizePlannerLocaleContent } from '../entry';
4
+ import type { PetCarrierCrateSizePlannerUI } from '../ui';
5
+
6
+ const slug = 'calculateur-taille-cage-transport-animaux';
7
+ const title = 'Calculateur de Taille de Cage de Transport pour Animaux';
8
+ const description = 'Calculez les dimensions intérieures recommandées pour la cage de transport de votre chien ou chat à partir de six mesures corporelles.';
9
+
10
+ const ui: PetCarrierCrateSizePlannerUI = {
11
+ heroEyebrow: 'Mesurez d abord. Achetez en toute sérénité.',
12
+ journeyHint: 'Choisissez l animal et le mode de transport, saisissez les mesures et utilisez le schéma intérieur comme guide d achat.',
13
+ unitLegend: 'Unités d affichage',
14
+ speciesStep: 'Sélectionnez l animal',
15
+ metricUnit: 'Métrique',
16
+ imperialUnit: 'Impérial',
17
+ speciesLegend: 'Qui voyage?',
18
+ speciesDog: 'Chien',
19
+ speciesCat: 'Chat',
20
+ modeLegend: 'Quel est le mode de transport?',
21
+ modeCar: 'Voiture',
22
+ modeAir: 'Avion',
23
+ measurementsLegend: 'Mesurez votre animal',
24
+ noseTailLabel: 'Truffe à la base de la queue',
25
+ noseTailHint: 'Mesurez sans inclure la courbure de la queue',
26
+ elbowHeightLabel: 'Sol au coude',
27
+ shoulderWidthLabel: 'Largeur d épaules',
28
+ standingHeightLabel: 'Hauteur en position debout',
29
+ beddingLabel: 'Épaisseur du coussin ou tapis',
30
+ weightLabel: 'Poids de l animal',
31
+ cmUnit: 'cm',
32
+ inchUnit: 'po',
33
+ kgUnit: 'kg',
34
+ lbUnit: 'lb',
35
+ snubNosedLabel: 'Race à nez court ou brachycéphale',
36
+ snubNosedHint: 'Le transport aérien requiert des ajustements IATA. Consultez votre vétérinaire et la compagnie aérienne.',
37
+ presetLegend: 'Commencez avec un profil type',
38
+ presetCat: 'Chat',
39
+ presetSmallDog: 'Petit chien',
40
+ presetMediumDog: 'Chien moyen',
41
+ presetLargeDog: 'Grand chien',
42
+ resultEyebrow: 'Gabarit de mesure recommandé',
43
+ resultTitle: 'Un espace suffisant pour se retourner',
44
+ resultDimensionLabel: 'Dimensions intérieures minimales conseillées',
45
+ lengthLabel: 'Longueur',
46
+ widthLabel: 'Largeur',
47
+ heightLabel: 'Hauteur',
48
+ petWeightLabel: 'Poids de l animal',
49
+ journeyLabel: 'Mode de transport',
50
+ statusComfort: 'Confort de base',
51
+ statusAirReview: 'Vérification transport aérien',
52
+ statusSnub: 'Ajustement nez court',
53
+ resultDetail: 'Vérifiez l intérieur réel de la cage, l ouverture de porte, la ventilation et la réglementation avant tout achat ou départ.',
54
+ checklistTitle: 'Les quatre contrôles corporels',
55
+ checklistStand: 'L animal peut se tenir debout et s asseoir sans que la tête ou les oreilles ne touchent le plafond.',
56
+ checklistTurn: 'L animal peut se retourner naturellement lorsqu il est debout.',
57
+ checklistLie: 'L animal peut s allonger confortablement sur son coussin.',
58
+ checklistAirline: 'Pour l avion, vérifiez les limites de la compagnie, la ventilation, la fermeture et l étanchéité.',
59
+ invalidInput: 'Veuillez saisir des valeurs positives pour chaque mesure et pour le poids.',
60
+ noteTitle: 'Outil de simulation de dimensions, non une autorisation de vol',
61
+ noteText: 'Les règles de transport varient selon la compagnie, le véhicule et l animal. Un vétérinaire doit évaluer la santé de l animal.',
62
+ methodTitle: 'Méthode de calcul',
63
+ methodText: 'La formule s inspire des directives IATA: la longueur équivaut à la longueur truffe-queue plus la moitié de la hauteur du coude, la largeur au double de la largeur d épaules, et la hauteur à la hauteur debout plus l épaisseur du tapis.',
64
+ blueprintLabel: 'Plan mesuré de la cage montrant l animal à l intérieur avec les repères de longueur et de hauteur',
65
+ dimensionInside: 'Dimensions intérieures',
66
+ checkMark: 'OK',
67
+ };
68
+
69
+ const faq: PetCarrierCrateSizePlannerLocaleContent['faq'] = [
70
+ {
71
+ question: 'Comment mesurer mon chien ou mon chat pour choisir une cage de transport?',
72
+ answer: 'Mesurez de la pointe du museau à la base de la queue, du sol au coude, la largeur des épaules, et du sol au sommet de la tête ou des oreilles. Ajoutez l épaisseur du coussin séparément.',
73
+ },
74
+ {
75
+ question: 'Quelles dimensions intérieures ce calculateur fournit-il?',
76
+ answer: 'Il estime la longueur intérieure minimale à partir de la longueur du corps et du coude, la largeur à partir de la largeur d épaules et la hauteur globale en incluant le coussin.',
77
+ },
78
+ {
79
+ question: 'Les résultats garantissent-ils l acceptation par une compagnie aérienne?',
80
+ answer: 'Non. Le mode aérien intègre les règles IATA de référence, mais chaque compagnie applique des normes spécifiques. Vérifiez toujours la réglementation officielle de votre transporteur.',
81
+ },
82
+ {
83
+ question: 'Pourquoi les chiens brachycéphales nécessitent-ils une cage plus grande en avion?',
84
+ answer: 'Les recommandations IATA préconisent une marge supplémentaire pour les races à nez court afin de prévenir la surchauffe et les difficultés respiratoires pendant le vol.',
85
+ },
86
+ {
87
+ question: 'Une cage pour la voiture doit-elle être la plus grande possible?',
88
+ answer: 'Non. Elle doit offrir suffisamment d espace pour se tourner et s allonger, tout en restant bien fixée dans le véhicule pour éviter les secousses inutiles.',
89
+ },
90
+ ];
91
+
92
+ const howTo: PetCarrierCrateSizePlannerLocaleContent['howTo'] = [
93
+ { name: 'Choisir le mode de transport', text: 'Sélectionnez voiture ou avion afin d ajuster les critères de vérification.' },
94
+ { name: 'Saisir les six mesures', text: 'Prenez les mesures du corps et le poids de l animal lorsqu il est calme.' },
95
+ { name: 'Lire les dimensions intérieures', text: 'Utilisez la longueur, la largeur et la hauteur recommandées pour comparer les cages disponibles.' },
96
+ { name: 'Vérifier la conformité', text: 'Avant l achat, contrôlez la solidité de la fermeture, la ventilation et les règles de votre transporteur.' },
97
+ ];
98
+
99
+ const seo: PetCarrierCrateSizePlannerLocaleContent['seo'] = [
100
+ {
101
+ type: 'summary',
102
+ title: 'Conseils pour bien choisir la cage de transport de votre animal',
103
+ items: [
104
+ 'Prenez les mesures corporelles précises au lieu de vous fier uniquement au poids total de l animal.',
105
+ 'Fiez-vous aux dimensions intérieures utiles pour comparer efficacement les modèles commercialisés.',
106
+ 'Contrôlez systématiquement la fermeture de sécurité, les fixations et l aération globale de la cage.',
107
+ 'Le transport en avion exige une préparation spécifique approfondie et l avis préalable de votre vétérinaire.',
108
+ ],
109
+ },
110
+ { type: 'title', text: 'Comment calculer les dimensions d une cage de transport', level: 2 },
111
+ {
112
+ type: 'paragraph',
113
+ html: 'Une cage de transport adaptée doit garantir quatre mouvements naturels essentiels à votre chien ou votre chat: se tenir debout sans baisser la tête ni plier les oreilles, s asseoir normalement en toute aisance, se retourner sans blocage sur son propre axe et s allonger confortablement dans une position détendue. Ce calculateur détermine la longueur, la largeur et la hauteur intérieures nécessaires de manière personnalisée et rigoureuse.',
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Les dimensions obtenues correspondent à l espace intérieur réel et utile pour l animal. Veillez à ce que les éléments internes indispensables comme les gamelles d eau, les coussins épais ou la forme biseautée des parois ne réduisent pas cet espace utile lors de votre achat final dans le commerce.',
118
+ },
119
+ { type: 'title', text: 'Rôle des mesures corporelles', level: 2 },
120
+ {
121
+ type: 'table',
122
+ headers: ['Mesure corporelle', 'Utilité pour l animal', 'Application dans le calcul'],
123
+ rows: [
124
+ ['Truffe à la base de la queue', 'Fixe la longueur de base du corps sans compter la queue.', 'Longueur intérieure'],
125
+ ['Sol au coude', 'Ajoute de l aisance pour se retourner et bouger les pattes avant.', 'Longueur intérieure'],
126
+ ['Largeur d épaules', 'Définit la largeur minimale aux points les plus larges du corps.', 'Largeur intérieure'],
127
+ ['Hauteur en position debout', 'Protège la tête et les oreilles contre tout contact avec le plafond.', 'Hauteur intérieure'],
128
+ ['Épaisseur du coussin', 'Préserve la hauteur utile sous plafond après installation du lit.', 'Hauteur intérieure'],
129
+ ['Poids de l animal', 'Permet de vérifier la charge maximale admise par le conteneur.', 'Vérification de charge'],
130
+ ],
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Les formules reposent directement sur les normes IATA relatives au transport d animaux vivants par voie aérienne et terrestre: la longueur intérieure combine la longueur du corps et la moitié de la hauteur du coude, la largeur équivaut au double de la largeur d épaules, et la hauteur inclut la hauteur debout augmentée de l épaisseur du coussin de sol.',
135
+ },
136
+ { type: 'title', text: 'Spécificités pour les voyages en avion', level: 2 },
137
+ {
138
+ type: 'paragraph',
139
+ html: 'Une simulation de taille ne constitue pas une validation d embarquement officielle auprès d une compagnie aérienne. Des paramètres cruciaux comme le type d appareil, les conditions de température ambiante et le système de ventilation sur les quatre côtés sont pris en compte par la compagnie. Renseignez-vous toujours à l avance auprès du transporteur avant le jour du voyage.',
140
+ },
141
+ {
142
+ type: 'tip',
143
+ title: 'Test pratique d ajustement à la maison',
144
+ html: 'Installez l animal dans la cage dans un endroit calme et observez ses mouvements naturels pendant plusieurs minutes. S il doit se courber exagérément pour se retourner ou s asseoir, optez sans hésiter pour la taille supérieure pour préserver son confort et sa santé.',
145
+ },
146
+ ];
147
+
148
+ const schemas: PetCarrierCrateSizePlannerLocaleContent['schemas'] = [
149
+ {
150
+ '@context': 'https://schema.org',
151
+ '@type': 'SoftwareApplication',
152
+ name: title,
153
+ description,
154
+ applicationCategory: 'LifestyleApplication',
155
+ operatingSystem: 'Web',
156
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
157
+ } as WithContext<SoftwareApplication>,
158
+ {
159
+ '@context': 'https://schema.org',
160
+ '@type': 'FAQPage',
161
+ mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
162
+ } as WithContext<FAQPage>,
163
+ {
164
+ '@context': 'https://schema.org',
165
+ '@type': 'HowTo',
166
+ name: title,
167
+ step: howTo.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })),
168
+ } as WithContext<HowTo>,
169
+ ];
170
+
171
+ export const content: PetCarrierCrateSizePlannerLocaleContent = { slug, title, description, ui, seo, faq, bibliography, howTo, schemas };
@@ -0,0 +1,171 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
3
+ import type { PetCarrierCrateSizePlannerLocaleContent } from '../entry';
4
+ import type { PetCarrierCrateSizePlannerUI } from '../ui';
5
+
6
+ const slug = 'perencana-ukuran-kandang-pet-carrier';
7
+ const title = 'Perencana Ukuran Kandang Pet Carrier';
8
+ const description = 'Hitung dimensi internal kandang atau pet carrier yang ideal untuk anjing atau kucing berdasarkan enam pengukuran tubuh.';
9
+
10
+ const ui: PetCarrierCrateSizePlannerUI = {
11
+ heroEyebrow: 'Ukur dulu. Beli dengan yakin.',
12
+ journeyHint: 'Pilih hewan dan jenis perjalanan, masukkan pengukuran, lalu gunakan cetak biru sebagai panduan ruang dalam pet carrier.',
13
+ unitLegend: 'Satuan tampilan',
14
+ speciesStep: 'Mulai dari hewan',
15
+ metricUnit: 'Metrik',
16
+ imperialUnit: 'Imperial',
17
+ speciesLegend: 'Siapa yang bepergian?',
18
+ speciesDog: 'Anjing',
19
+ speciesCat: 'Kucing',
20
+ modeLegend: 'Di mana perjalanan dilakukan?',
21
+ modeCar: 'Mobil',
22
+ modeAir: 'Pesawat',
23
+ measurementsLegend: 'Ukur hewan peliharaan',
24
+ noseTailLabel: 'Ujung hidung ke pangkal ekor',
25
+ noseTailHint: 'Ukur tanpa memperhitungkan lengkungan ekor',
26
+ elbowHeightLabel: 'Lantai ke siku',
27
+ shoulderWidthLabel: 'Lebar bahu',
28
+ standingHeightLabel: 'Tinggi saat berdiri',
29
+ beddingLabel: 'Ketebalan alas atau kasur',
30
+ weightLabel: 'Berat hewan',
31
+ cmUnit: 'cm',
32
+ inchUnit: 'inci',
33
+ kgUnit: 'kg',
34
+ lbUnit: 'lb',
35
+ snubNosedLabel: 'Ras hidung pendek atau brasefalik',
36
+ snubNosedHint: 'Perjalanan udara memerlukan penyesuaian IATA. Konsultasikan dengan dokter hewan dan maskapai.',
37
+ presetLegend: 'Mulai dengan profil',
38
+ presetCat: 'Kucing',
39
+ presetSmallDog: 'Anjing kecil',
40
+ presetMediumDog: 'Anjing sedang',
41
+ presetLargeDog: 'Anjing besar',
42
+ resultEyebrow: 'Rangka pengukuran yang disarankan',
43
+ resultTitle: 'Ruang yang cukup untuk berputar',
44
+ resultDimensionLabel: 'Dimensi internal minimum awal',
45
+ lengthLabel: 'Panjang',
46
+ widthLabel: 'Lebar',
47
+ heightLabel: 'Tinggi',
48
+ petWeightLabel: 'Berat hewan',
49
+ journeyLabel: 'Jenis perjalanan',
50
+ statusComfort: 'Tingkat kenyamanan dasar',
51
+ statusAirReview: 'Peninjauan transportasi udara',
52
+ statusSnub: 'Penyesuaian hidung pendek',
53
+ resultDetail: 'Periksa bagian dalam carrier asli, pintu, ventilasi, dan aturan maskapai sebelum membeli atau bepergian.',
54
+ checklistTitle: 'Empat pemeriksaan tubuh',
55
+ checklistStand: 'Hewan dapat berdiri dan duduk tegak tanpa kepala atau telinga menyentuh atap.',
56
+ checklistTurn: 'Hewan dapat berputar dengan alami saat berdiri.',
57
+ checklistLie: 'Hewan dapat berbaring dalam posisi alami di atas alas.',
58
+ checklistAirline: 'Untuk penerbangan, konfirmasi batas maskapai, ventilasi, pengunci, dan alas kedap cairan.',
59
+ invalidInput: 'Masukkan nilai positif untuk setiap pengukuran tubuh dan berat.',
60
+ noteTitle: 'Gunakan alat ini sebagai estimasi ruang, bukan persetujuan penerbangan',
61
+ noteText: 'Aturan bervariasi menurut maskapai, kendaraan, dan hewan. Dokter hewan harus mengevaluasi kesehatan dan kelayakan penerbangan.',
62
+ methodTitle: 'Metode kalkulasi',
63
+ methodText: 'Rumus mengacu pada panduan IATA: panjang adalah hidung ke ekor ditambah setengah tinggi siku, lebar adalah dua kali lebar bahu, dan tinggi adalah tinggi berdiri ditambah ketebalan alas.',
64
+ blueprintLabel: 'Skema pet carrier terukur yang menampilkan hewan di dalam beserta panduan panjang dan tinggi',
65
+ dimensionInside: 'Dimensi dalam',
66
+ checkMark: 'OK',
67
+ };
68
+
69
+ const faq: PetCarrierCrateSizePlannerLocaleContent['faq'] = [
70
+ {
71
+ question: 'Bagaimana cara mengukur anjing atau kucing untuk memilih pet carrier?',
72
+ answer: 'Ukur dari ujung hidung ke pangkal ekor, dari lantai ke sendi siku, lebar bahu pada titik terlebar, dan tinggi dari lantai ke titik tertinggi kepala atau telinga. Tambahkan ketebalan alas secara terpisah.',
73
+ },
74
+ {
75
+ question: 'Dimensi internal apa yang dihitung oleh perencana ini?',
76
+ answer: 'Mengestimasi panjang internal minimum dari panjang tubuh dan siku, lebar internal dari lebar bahu, dan tinggi total termasuk alas tidur.',
77
+ },
78
+ {
79
+ question: 'Apakah hasil kalkulasi menjamin persetujuan maskapai?',
80
+ answer: 'Tidak. Mode penerbangan menggunakan rumus referensi IATA, tetapi setiap maskapai memiliki aturan khusus. Selalu verifikasi kebijakan resmi maskapai.',
81
+ },
82
+ {
83
+ question: 'Mengapa ras hidung pendek membutuhkan carrier lebih besar di pesawat?',
84
+ answer: 'Panduan IATA menyarankan ruang lebih besar untuk ras brasefalik guna mencegah kepanasan dan gangguan pernapasan selama penerbangan.',
85
+ },
86
+ {
87
+ question: 'Apakah pet carrier untuk mobil harus sebesar mungkin?',
88
+ answer: 'Tidak. Carrier harus menyediakan ruang yang cukup untuk berdiri, berputar, dan berbaring, tetapi dapat terikat dengan aman di dalam kendaraan.',
89
+ },
90
+ ];
91
+
92
+ const howTo: PetCarrierCrateSizePlannerLocaleContent['howTo'] = [
93
+ { name: 'Pilih jenis perjalanan', text: 'Pilih mobil atau pesawat untuk menyesuaikan kriteria peninjauan.' },
94
+ { name: 'Masukkan enam pengukuran', text: 'Ukur tubuh dan berat hewan saat dalam kondisi tenang.' },
95
+ { name: 'Baca dimensi internal', text: 'Gunakan panjang, lebar, dan tinggi sebagai acuan awal untuk membandingkan produk di pasaran.' },
96
+ { name: 'Verifikasi aturan perjalanan', text: 'Sebelum membeli, periksa pengunci, ventilasi, dan persyaratan maskapai.' },
97
+ ];
98
+
99
+ const seo: PetCarrierCrateSizePlannerLocaleContent['seo'] = [
100
+ {
101
+ type: 'summary',
102
+ title: 'Panduan memilih pet carrier yang tepat untuk hewan peliharaan kesayangan Anda',
103
+ items: [
104
+ 'Ukur tubuh hewan secara akurat dan menyeluruh daripada hanya mengandalkan berat badan saja.',
105
+ 'Gunakan dimensi dalam yang berguna untuk membandingkan carrier asli di toko fisik maupun toko daring.',
106
+ 'Selalu periksa mekanisme pengunci keselamatan, keandalan pintu, dan sistem ventilasi udara carrier.',
107
+ 'Pengangkutan udara memerlukan persiapan khusus yang matang, pemeriksaan peraturan, dan saran dari dokter hewan.',
108
+ ],
109
+ },
110
+ { type: 'title', text: 'Cara merencanakan ukuran pet carrier secara tepat', level: 2 },
111
+ {
112
+ type: 'paragraph',
113
+ html: 'Pet carrier yang layak dan aman harus memungkinkan empat gerakan alami untuk anjing atau kucing Anda: berdiri tegak tanpa menundukkan kepala atau menekuk telinga, duduk tegak secara alami tanpa halangan, berputar tanpa hambatan pada poros tubuhnya sendiri, dan berbaring dengan nyaman dalam posisi santai. Kalkulator ini menentukan panjang, lebar, dan tinggi bagian dalam yang dibutuhkan secara terukur, akurat, dan sesuai dengan standar kesehatan hewan.',
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Nilai yang dihitung mewakili ruang guna bagian dalam yang sebenarnya untuk kenyamanan hewan. Perhatikan bahwa alas yang tebal, tempat makan, mangkuk minum, atau dinding yang miring dapat mengurangi ruang yang tersedia saat Anda melakukan pembelian akhir di toko peliharaan.',
118
+ },
119
+ { type: 'title', text: 'Pentingnya setiap pengukuran tubuh hewan', level: 2 },
120
+ {
121
+ type: 'table',
122
+ headers: ['Pengukuran tubuh', 'Fungsi untuk hewan', 'Penggunaan dalam kalkulasi'],
123
+ rows: [
124
+ ['Hidung ke pangkal ekor', 'Menentukan panjang dasar tubuh tanpa memperhitungkan ekor.', 'Panjang dalam'],
125
+ ['Lantai ke siku', 'Memberikan ruang gerak saat hewan berputar dan melangkahkan kaki.', 'Panjang dalam'],
126
+ ['Lebar bahu', 'Menjamin lebar yang cukup pada bagian tubuh yang terlebar.', 'Lebar dalam'],
127
+ ['Tinggi saat berdiri', 'Melindungi kepala dan telinga agar tidak membentur atap carrier.', 'Tinggi dalam'],
128
+ ['Ketebalan alas', 'Menjaga tinggi efektif setelah alas atau kasur dipasang.', 'Tinggi dalam'],
129
+ ['Berat badan', 'Digunakan untuk memeriksa kapasitas beban dan daya tahan carrier.', 'Peninjauan beban'],
130
+ ],
131
+ },
132
+ {
133
+ type: 'paragraph',
134
+ html: 'Rumus didasarkan pada aturan resmi IATA tentang pengangkutan hewan hidup: panjang dalam menggabungkan panjang tubuh dan setengah tinggi siku, lebar dua kali lebar bahu, dan tinggi mencakup tinggi berdiri ditambah ketebalan alas kasur yang digunakan. Hal ini menjamin keselamatan hewan.',
135
+ },
136
+ { type: 'title', text: 'Hal yang perlu diperhatikan untuk penerbangan dan penerbangan udara', level: 2 },
137
+ {
138
+ type: 'paragraph',
139
+ html: 'Estimasi ukuran bukan merupakan persetujuan penerbangan resmi dari pihak maskapai penerbangan. Faktor-faktor seperti jenis pesawat, sistem ventilasi empat sisi, dan suhu udara saat penerbangan sangat menentukan keselamatan dan kesehatan hewan peliharaan Anda.',
140
+ },
141
+ {
142
+ type: 'tip',
143
+ title: 'Uji ruang secara praktis di rumah sebelum bepergian',
144
+ html: 'Tempatkan hewan di dalam carrier dalam lingkungan yang tenang dan amati gerakannya selama beberapa menit. Jika terlihat sempit atau kesulitan berputar dengan bebas, pilih ukuran yang lebih besar demi kenyamanan dan keselamatan hewan.',
145
+ },
146
+ ];
147
+
148
+ const schemas: PetCarrierCrateSizePlannerLocaleContent['schemas'] = [
149
+ {
150
+ '@context': 'https://schema.org',
151
+ '@type': 'SoftwareApplication',
152
+ name: title,
153
+ description,
154
+ applicationCategory: 'LifestyleApplication',
155
+ operatingSystem: 'Web',
156
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
157
+ } as WithContext<SoftwareApplication>,
158
+ {
159
+ '@context': 'https://schema.org',
160
+ '@type': 'FAQPage',
161
+ mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
162
+ } as WithContext<FAQPage>,
163
+ {
164
+ '@context': 'https://schema.org',
165
+ '@type': 'HowTo',
166
+ name: title,
167
+ step: howTo.map((step) => ({ '@type': 'HowToStep', name: step.name, text: step.text })),
168
+ } as WithContext<HowTo>,
169
+ ];
170
+
171
+ export const content: PetCarrierCrateSizePlannerLocaleContent = { slug, title, description, ui, seo, faq, bibliography, howTo, schemas };