@jjlmoya/utils-pets 1.22.0 → 1.23.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 (102) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/de.ts +1 -1
  3. package/src/category/i18n/en.ts +2 -2
  4. package/src/category/i18n/es.ts +1 -1
  5. package/src/category/i18n/fr.ts +1 -1
  6. package/src/category/i18n/pt.ts +1 -1
  7. package/src/category/i18n/tr.ts +1 -1
  8. package/src/category/index.ts +26 -26
  9. package/src/entries.ts +12 -12
  10. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  11. package/src/tests/category_seo_quality.test.ts +74 -0
  12. package/src/tests/faq_count.test.ts +22 -22
  13. package/src/tests/locale_completeness.test.ts +30 -30
  14. package/src/tests/no_h1_in_components.test.ts +1 -1
  15. package/src/tests/pet_logic.test.ts +49 -0
  16. package/src/tests/seo_length.test.ts +54 -54
  17. package/src/tests/seo_parity.test.ts +2 -2
  18. package/src/tests/seo_wellformed_export.test.ts +65 -0
  19. package/src/tests/spanish_leakage.test.ts +175 -175
  20. package/src/tests/tool_validation.test.ts +137 -137
  21. package/src/tool/petAge/component.astro +3 -3
  22. package/src/tool/petAge/i18n/de.ts +184 -184
  23. package/src/tool/petAge/i18n/en.ts +184 -184
  24. package/src/tool/petAge/i18n/es.ts +184 -184
  25. package/src/tool/petAge/i18n/fr.ts +184 -184
  26. package/src/tool/petAge/i18n/id.ts +184 -184
  27. package/src/tool/petAge/i18n/it.ts +184 -184
  28. package/src/tool/petAge/i18n/ja.ts +184 -184
  29. package/src/tool/petAge/i18n/ko.ts +184 -184
  30. package/src/tool/petAge/i18n/nl.ts +184 -184
  31. package/src/tool/petAge/i18n/pl.ts +184 -184
  32. package/src/tool/petAge/i18n/pt.ts +184 -184
  33. package/src/tool/petAge/i18n/ru.ts +184 -184
  34. package/src/tool/petAge/i18n/sv.ts +184 -184
  35. package/src/tool/petAge/i18n/tr.ts +185 -185
  36. package/src/tool/petAge/i18n/zh.ts +184 -184
  37. package/src/tool/petAge/seo.astro +15 -15
  38. package/src/tool/petGestation/i18n/de.ts +0 -2
  39. package/src/tool/petGestation/i18n/en.ts +0 -2
  40. package/src/tool/petGestation/i18n/es.ts +0 -2
  41. package/src/tool/petGestation/i18n/fr.ts +0 -2
  42. package/src/tool/petGestation/i18n/id.ts +0 -2
  43. package/src/tool/petGestation/i18n/it.ts +0 -2
  44. package/src/tool/petGestation/i18n/ja.ts +0 -2
  45. package/src/tool/petGestation/i18n/ko.ts +0 -2
  46. package/src/tool/petGestation/i18n/nl.ts +0 -2
  47. package/src/tool/petGestation/i18n/pl.ts +0 -2
  48. package/src/tool/petGestation/i18n/pt.ts +0 -2
  49. package/src/tool/petGestation/i18n/ru.ts +0 -2
  50. package/src/tool/petGestation/i18n/sv.ts +0 -2
  51. package/src/tool/petGestation/i18n/tr.ts +0 -2
  52. package/src/tool/petGestation/i18n/zh.ts +0 -2
  53. package/src/tool/petGestation/ui.ts +0 -2
  54. package/src/tool/petRation/i18n/de.ts +181 -181
  55. package/src/tool/petRation/i18n/en.ts +181 -181
  56. package/src/tool/petRation/i18n/es.ts +181 -181
  57. package/src/tool/petRation/i18n/fr.ts +181 -181
  58. package/src/tool/petRation/i18n/id.ts +181 -181
  59. package/src/tool/petRation/i18n/it.ts +181 -181
  60. package/src/tool/petRation/i18n/ja.ts +181 -181
  61. package/src/tool/petRation/i18n/ko.ts +181 -181
  62. package/src/tool/petRation/i18n/nl.ts +181 -181
  63. package/src/tool/petRation/i18n/pl.ts +181 -181
  64. package/src/tool/petRation/i18n/pt.ts +181 -181
  65. package/src/tool/petRation/i18n/ru.ts +181 -181
  66. package/src/tool/petRation/i18n/sv.ts +181 -181
  67. package/src/tool/petRation/i18n/tr.ts +181 -181
  68. package/src/tool/petRation/i18n/zh.ts +181 -181
  69. package/src/tool/petRation/seo.astro +15 -15
  70. package/src/tool/petToxicity/i18n/de.ts +0 -2
  71. package/src/tool/petToxicity/i18n/en.ts +0 -2
  72. package/src/tool/petToxicity/i18n/es.ts +2 -4
  73. package/src/tool/petToxicity/i18n/fr.ts +0 -2
  74. package/src/tool/petToxicity/i18n/id.ts +0 -2
  75. package/src/tool/petToxicity/i18n/it.ts +0 -2
  76. package/src/tool/petToxicity/i18n/ja.ts +0 -2
  77. package/src/tool/petToxicity/i18n/ko.ts +0 -2
  78. package/src/tool/petToxicity/i18n/nl.ts +0 -2
  79. package/src/tool/petToxicity/i18n/pl.ts +0 -2
  80. package/src/tool/petToxicity/i18n/pt.ts +0 -2
  81. package/src/tool/petToxicity/i18n/ru.ts +0 -2
  82. package/src/tool/petToxicity/i18n/sv.ts +0 -2
  83. package/src/tool/petToxicity/i18n/tr.ts +0 -2
  84. package/src/tool/petToxicity/i18n/zh.ts +0 -2
  85. package/src/tool/petToxicity/ui.ts +0 -2
  86. package/src/tool/petWaterIntake/i18n/de.ts +0 -15
  87. package/src/tool/petWaterIntake/i18n/en.ts +0 -15
  88. package/src/tool/petWaterIntake/i18n/es.ts +2 -17
  89. package/src/tool/petWaterIntake/i18n/fr.ts +0 -15
  90. package/src/tool/petWaterIntake/i18n/id.ts +0 -15
  91. package/src/tool/petWaterIntake/i18n/it.ts +0 -15
  92. package/src/tool/petWaterIntake/i18n/ja.ts +0 -15
  93. package/src/tool/petWaterIntake/i18n/ko.ts +0 -15
  94. package/src/tool/petWaterIntake/i18n/nl.ts +0 -15
  95. package/src/tool/petWaterIntake/i18n/pl.ts +0 -15
  96. package/src/tool/petWaterIntake/i18n/pt.ts +0 -15
  97. package/src/tool/petWaterIntake/i18n/ru.ts +0 -15
  98. package/src/tool/petWaterIntake/i18n/sv.ts +0 -15
  99. package/src/tool/petWaterIntake/i18n/tr.ts +0 -15
  100. package/src/tool/petWaterIntake/i18n/zh.ts +0 -15
  101. package/src/tool/petWaterIntake/ui.ts +0 -15
  102. package/src/tools.ts +19 -19
@@ -1,184 +1,184 @@
1
- import { bibliography } from '../bibliography';
2
- import type { WithContext, SoftwareApplication } from 'schema-dts';
3
- import type { PetAgeUI, PetAgeLocaleContent } from '../index';
4
-
5
- const slug = 'pet-age-calculator';
6
- const title = '宠物年龄换算器';
7
- const description = '了解您的爱犬或爱猫换算成人类后的真实年龄。告别过时的\"乘7规则\"。使用我们基于最新兽医学研究的计算器,精准掌握宠物的生命阶段。';
8
-
9
- const ui: PetAgeUI = {
10
- toolTitle: '年龄计算器',
11
- toolSubtitle: '您的毛茸茸的朋友换算成人类后到底多少岁了?',
12
- petNameLabel: '宠物姓名(可选)',
13
- petNamePlaceholder: '例如:巴迪',
14
- petTypeDog: '狗',
15
- petTypeCat: '猫',
16
- sizeSmall: '小型',
17
- sizeMedium: '中型',
18
- sizeLarge: '大型',
19
- sizeGiant: '巨型',
20
- birthYearLabel: '出生年份',
21
- humanAgeLabel: '换算成人类年龄为',
22
- humanAgeUnit: '岁',
23
- humanAgeYears: '岁',
24
- lifeStageLabel: '生命阶段',
25
- milestoneLabel: '下一个里程碑',
26
- shareBtn: '分享结果',
27
- shareSuccess: '复制成功!正在打开卡片...',
28
- humanAgeTitle: '神奇年龄',
29
- recalculateBtn: '计算其他年龄',
30
- realAgeLabel: '实际年龄',
31
- defaultPetName: '您的宠物',
32
- stageDogPuppy: '顽皮幼犬期',
33
- stageDogTeen: '叛逆青春期',
34
- stageDogAdult: '巅峰成年期',
35
- stageDogMature: '优雅成熟期',
36
- stageDogSenior: '睿智暮年期',
37
- stageCatKitten: '好奇幼猫期',
38
- stageCatYouth: '活泼青少期',
39
- stageCatReign: '主宰成猫期',
40
- stageCatVeteran: '受宠老猫期',
41
- stageCatVenerable: '德高望重长寿期',
42
- };
43
-
44
- const faq: PetAgeLocaleContent['faq'] = [
45
- {
46
- question: '\"狗的一岁等于人类的七岁\"是真的吗?',
47
- answer: '不 是 真的。 这 是 一个 过度 简化 的 规则, 已经被 现代 兽医学 研究所 否定。 宠物 在 生命 的 最初 两年 成长 极其 迅速, 之后 这个 过程 会 随着 体重 和 品种 的 不同 而 显著 放缓。 最新 的 研究 发现 , 这种 传统 的 乘 7 比例 完全 无法 描绘 宠物 生物学 层面 的 老化 曲线。',
48
- },
49
- {
50
- question: '为什么大型犬老得更快?',
51
- answer: '大型 犬 具有 更快的 代谢 和 生长 速度, 这 会 导致 其 细胞 产生 更大的 氧化 应激。 这 意味着 与 小型犬 相比, 它们的 预期 寿命 通常 会 更短。 兽医 观察 到 大型 犬 的 器官 在 较低 的 年代 龄 时 就 开始 表现 出 老化 迹象。',
52
- },
53
- {
54
- question: '猫与人类相比是如何衰老的?',
55
- answer: '猫 在 一个月 大时 结束 婴儿期, 6 个月 大时 进入 青春期, 并在 2 岁 时 达到 成年 (相当于 人类 的 24 岁)。 之后, 猫 的 每一个 寿年 大约 相当于 人类 的 4 岁。 与 犬 类 相比 , 猫 的 衰老 曲线 相对 稳定 且 线性。',
56
- },
57
- {
58
- question: '宠物多大岁数被认为是\"老年\"?',
59
- answer: '通常 而言, 当 宠物 达到 其 预期 寿命 的 75% 时 就 被 视为 老年。 对于 猫 来说, 通常 是 从 7 到 11 岁 开始, 具体 取决于 它们的 健康 状况。 高龄 宠物 需要 更加 频繁 的 医疗 检查 和 专门 的 营养 支持。',
60
- },
61
- ];
62
-
63
- const howTo: PetAgeLocaleContent['howTo'] = [
64
- { name: '选择宠物种类', text: '选择 您 拥有 的 是 狗 还是 猫, 以 应用 正确 的 生物学 计算 公式。' },
65
- { name: '输入体型(仅限犬类)', text: '对于 狗 来说, 体重 是 关键 因素。 请 标明 它是 小型 (10 公斤 以下)、 中型 (10 至 25 公斤)、 大型 (25 至 45 公斤) 还是 巨型 (45 公斤 以上)。' },
66
- { name: '输入出生年份', text: '输入 您的 宠物 出生 的 年份, 以 计算 它们的 年代 龄。' },
67
- { name: '分析生命阶段', text: '查看 结果 以 了解 您的 宠物 与 人类 相比 处于 幼年 、 青年 、 成年 还是 老年 阶段。' },
68
- ];
69
-
70
- const seo: PetAgeLocaleContent['seo'] = [
71
- {
72
- type: 'summary',
73
- title: '关于宠物衰老您需要了解的知识',
74
- items: [
75
- '\"乘 7 规则\" 是 一个 误区 : 宠物 在 最初 的 2 年 呈 指数 级 成熟。',
76
- '1 岁 的 狗 相当于 15 岁 的 人类 ; 2 岁 的 狗 相当于 24 岁 的 人类。',
77
- '2 岁 之后, 大型 犬 的 衰老 速度 快于 小型 犬。',
78
- '猫 遵循 更加 线性 的 曲线 : 2 岁 后 每一个 猫 寿年 等于 人类 的 4 岁。',
79
- '了解 真实 的 生命 阶段 有助于 提供 针对性 的 医疗 护理。',
80
- '饮食 和 锻炼 环境 是 决定 宠物 衰老 速度 的 外部 关键 因素。',
81
- ],
82
- },
83
- { type: 'title', text: '关于您宠物年龄的科学真相', level: 2 },
84
- {
85
- type: 'paragraph',
86
- html: '您 知道 吗 ? 一只 2 岁 的 猫 已经 具备了 人类 24 岁 的 成熟度。 探索 为什么 \"乘 7 规则\" 只是 段子。 那个 \"1 个 狗 年 等于 7 个 人 类 年\" 的 老 传说 只是 一种 过度 的 简化。 生物学 上 的 现实 要 有趣 得 多 : 宠物 在 生命 的 最初 两年 以 惊人的 速度 成熟, 极快 地 达到 性成熟 和 体成熟。 之后, 这种 衰老 曲线 会 趋于 平缓 并 放缓。',
87
- },
88
- {
89
- type: 'paragraph',
90
- html: '通过 这个 科学 工具 , 您 可以 更好 地 了解 伴侣 动物 的 生理 状态 。 衰老 是 一个 复杂 的 生理 过程 , 涉及 细胞 修复 能力 的 下降 和 代谢 率 的 变化 。 最新 的 表观 遗传学 标记 研究 表明 , 狗 的 衰老 过程 在 早期 是 极富 爆发性 的 。 这种 知识 有助于 宠物 主人 在 正确 的 时间 进行 疫苗 接种 和 健康 筛查 。 从 幼年 的 发育 支持 到 老年 的 慢性病 预警 , 年龄 换算 器 都 能 提供 宝贵的 参考 。',
91
- },
92
- { type: 'title', text: '计算背后的科学原理', level: 3 },
93
- {
94
- type: 'paragraph',
95
- html: '此 工具 采用 <strong>美国 兽医 协会 (AAHA)</strong> 的 官方 指南 以及 关于 犬 类 DNA 甲基化 的 最新 研究 模型 , 旨在 为 您 提供 尽可能 准确 的 估算 。 DNA 甲基化 分析 被 称为 \"表观 遗传 钟\" , 通过 检测 遗传物质 上 的 化学 变化 来 揭示 生命体 内部 的 生物 年龄 。',
96
- },
97
- {
98
- type: 'paragraph',
99
- html: '我们的 算法 将 这些 前沿 数据 与 数百万 临床 案例 相 结合 , 为 不同 体型 的 犬 类 定制了 专属 的 折算系数 。 无论 您 的 宠物 是 娇小 的 贵宾 还是 壮硕 的 藏獒 , 都能 得到 符合 其实际 生理 状况 的 评价 。 这 这种 科学 的 态度 能够 极大 地 提升 宠物 的 福利水平 。',
100
- },
101
- {
102
- type: 'table',
103
- headers: ['物种', '第 1 年', '第 2 年', '第 3 年起'],
104
- rows: [
105
- ['猫', '15 岁 人类', '24 岁 人类', '每年 增加 4 岁'],
106
- ['小型犬', '15 岁 人类', '24 岁 人类', '每年 增加 5 岁'],
107
- ['中型犬', '15 岁 人类', '24 岁 人类', '每年 增加 6 岁'],
108
- ['大型犬', '15 岁 人类', '24 岁 人类', '每年 增加 7 岁'],
109
- ['巨型犬', '15 岁 人类', '24 岁 人类', '每年 增加 8 岁'],
110
- ],
111
- },
112
- { type: 'title', text: '生命阶段 : 每个 阶段 应该 注意 什么 ?', level: 3 },
113
- {
114
- type: 'paragraph',
115
- html: '了解 您 宠物 的 真实 年齢 有助于 您 理解 它们 在 每个 阶段 的 医疗 和 情感 需求 。 处于 不同 时期 的 动物 对 蛋白质 、 脂肪 以及 锻炼 量的 要求 完全 不同 。',
116
- },
117
- {
118
- type: 'card',
119
- title: '幼犬 或 少年期 (从 0 到 1 岁)',
120
- icon: 'mdi:star-shooting',
121
- html: '这是 爆发性 生长 的 阶段 。 骨骼 在 发育 , 牙齿 在 更换 , 大脑 像 海绵 一样 吸收 信息 。 疫苗 接种 和 早期 社交 在 此 阶段 至关重要 。 保证 优质 的 幼宠 粮 是 建立 坚实 健康 基础 的 关键 步骤 。',
122
- },
123
- {
124
- type: 'card',
125
- title: '成年期 (从 2 到 6 岁)',
126
- icon: 'mdi:shield-check',
127
- html: '身体 和 心理 的 巅峰 状态 。 性格 已经 定型 。 这是 享受 高强度 户外 活动 的 黄金 时间 。 保持 理想 体重 以 预防 未来 可能 出现 的 关节 或 心脏 疾病 是 这一 阶段 的 核心 任务 。',
128
- },
129
- {
130
- type: 'card',
131
- title: '老年期 (7 岁 以上)',
132
- icon: 'mdi:heart-pulse',
133
- html: '口鼻 周围 开始 出现 白毛 , 睡眠 时间 增加 。 代谢 明显 放缓 。 从 此 阶段 开始 , 建议 每 6 个月 进行 一次 兽医 检查 。 密切 关注 关节炎 和 牙齿 健康 。 合理 使用 膳食 补充剂 可以 显著 提升 晚年 生存 质量 。',
134
- },
135
- {
136
- type: 'tip',
137
- title: '兽医专业建议',
138
- html: '计算 出 的 年龄 是 一个 平均 的 生物学 估算 。 品种 、 遗传 以及 生活 方式 等 因素 都会 显著 影响 您 宠物 的 实际 衰老 速度 。 请 务必 定期 咨询 专业 兽医 以 获取 一对一 的 个性化 护理 方案 。',
139
- },
140
- ];
141
-
142
- const schemas: PetAgeLocaleContent['schemas'] = [
143
- {
144
- '@context': 'https://schema.org',
145
- '@type': 'SoftwareApplication',
146
- name: title,
147
- description: description,
148
- applicationCategory: 'UtilityApplication',
149
- operatingSystem: 'Web',
150
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
151
- } as WithContext<SoftwareApplication>,
152
- {
153
- '@context': 'https://schema.org',
154
- '@type': 'FAQPage',
155
- mainEntity: faq.map((f) => ({
156
- '@type': 'Question',
157
- name: f.question,
158
- acceptedAnswer: { '@type': 'Answer', text: f.answer },
159
- })),
160
- } as any,
161
- {
162
- '@context': 'https://schema.org',
163
- '@type': 'HowTo',
164
- name: title,
165
- step: howTo.map((h) => ({
166
- '@type': 'HowToStep',
167
- name: h.name,
168
- text: h.text,
169
- })),
170
- } as any,
171
- ];
172
-
173
- export const content: PetAgeLocaleContent = {
174
- slug,
175
- title,
176
- description,
177
- ui,
178
- seo,
179
-
180
- faq,
181
- bibliography,
182
- howTo,
183
- schemas,
184
- };
1
+ import { bibliography } from '../bibliography';
2
+ import type { WithContext, SoftwareApplication } from 'schema-dts';
3
+ import type { PetAgeUI, PetAgeLocaleContent } from '../index';
4
+
5
+ const slug = 'pet-age-calculator';
6
+ const title = '宠物年龄换算器';
7
+ const description = '了解您的爱犬或爱猫换算成人类后的真实年龄。告别过时的\"乘7规则\"。使用我们基于最新兽医学研究的计算器,精准掌握宠物的生命阶段。';
8
+
9
+ const ui: PetAgeUI = {
10
+ toolTitle: '年龄计算器',
11
+ toolSubtitle: '您的毛茸茸的朋友换算成人类后到底多少岁了?',
12
+ petNameLabel: '宠物姓名(可选)',
13
+ petNamePlaceholder: '例如:巴迪',
14
+ petTypeDog: '狗',
15
+ petTypeCat: '猫',
16
+ sizeSmall: '小型',
17
+ sizeMedium: '中型',
18
+ sizeLarge: '大型',
19
+ sizeGiant: '巨型',
20
+ birthYearLabel: '出生年份',
21
+ humanAgeLabel: '换算成人类年龄为',
22
+ humanAgeUnit: '岁',
23
+ humanAgeYears: '岁',
24
+ lifeStageLabel: '生命阶段',
25
+ milestoneLabel: '下一个里程碑',
26
+ shareBtn: '分享结果',
27
+ shareSuccess: '复制成功!正在打开卡片...',
28
+ humanAgeTitle: '神奇年龄',
29
+ recalculateBtn: '计算其他年龄',
30
+ realAgeLabel: '实际年龄',
31
+ defaultPetName: '您的宠物',
32
+ stageDogPuppy: '顽皮幼犬期',
33
+ stageDogTeen: '叛逆青春期',
34
+ stageDogAdult: '巅峰成年期',
35
+ stageDogMature: '优雅成熟期',
36
+ stageDogSenior: '睿智暮年期',
37
+ stageCatKitten: '好奇幼猫期',
38
+ stageCatYouth: '活泼青少期',
39
+ stageCatReign: '主宰成猫期',
40
+ stageCatVeteran: '受宠老猫期',
41
+ stageCatVenerable: '德高望重长寿期',
42
+ };
43
+
44
+ const faq: PetAgeLocaleContent['faq'] = [
45
+ {
46
+ question: '\"狗的一岁等于人类的七岁\"是真的吗?',
47
+ answer: '不 是 真的。 这 是 一个 过度 简化 的 规则, 已经被 现代 兽医学 研究所 否定。 宠物 在 生命 的 最初 两年 成长 极其 迅速, 之后 这个 过程 会 随着 体重 和 品种 的 不同 而 显著 放缓。 最新 的 研究 发现 , 这种 传统 的 乘 7 比例 完全 无法 描绘 宠物 生物学 层面 的 老化 曲线。',
48
+ },
49
+ {
50
+ question: '为什么大型犬老得更快?',
51
+ answer: '大型 犬 具有 更快的 代谢 和 生长 速度, 这 会 导致 其 细胞 产生 更大的 氧化 应激。 这 意味着 与 小型犬 相比, 它们的 预期 寿命 通常 会 更短。 兽医 观察 到 大型 犬 的 器官 在 较低 的 年代 龄 时 就 开始 表现 出 老化 迹象。',
52
+ },
53
+ {
54
+ question: '猫与人类相比是如何衰老的?',
55
+ answer: '猫 在 一个月 大时 结束 婴儿期, 6 个月 大时 进入 青春期, 并在 2 岁 时 达到 成年 (相当于 人类 的 24 岁)。 之后, 猫 的 每一个 寿年 大约 相当于 人类 的 4 岁。 与 犬 类 相比 , 猫 的 衰老 曲线 相对 稳定 且 线性。',
56
+ },
57
+ {
58
+ question: '宠物多大岁数被认为是\"老年\"?',
59
+ answer: '通常 而言, 当 宠物 达到 其 预期 寿命 的 75% 时 就 被 视为 老年。 对于 猫 来说, 通常 是 从 7 到 11 岁 开始, 具体 取决于 它们的 健康 状况。 高龄 宠物 需要 更加 频繁 的 医疗 检查 和 专门 的 营养 支持。',
60
+ },
61
+ ];
62
+
63
+ const howTo: PetAgeLocaleContent['howTo'] = [
64
+ { name: '选择宠物种类', text: '选择 您 拥有 的 是 狗 还是 猫, 以 应用 正确 的 生物学 计算 公式。' },
65
+ { name: '输入体型(仅限犬类)', text: '对于 狗 来说, 体重 是 关键 因素。 请 标明 它是 小型 (10 公斤 以下)、 中型 (10 至 25 公斤)、 大型 (25 至 45 公斤) 还是 巨型 (45 公斤 以上)。' },
66
+ { name: '输入出生年份', text: '输入 您的 宠物 出生 的 年份, 以 计算 它们的 年代 龄。' },
67
+ { name: '分析生命阶段', text: '查看 结果 以 了解 您的 宠物 与 人类 相比 处于 幼年 、 青年 、 成年 还是 老年 阶段。' },
68
+ ];
69
+
70
+ const seo: PetAgeLocaleContent['seo'] = [
71
+ {
72
+ type: 'summary',
73
+ title: '关于宠物衰老您需要了解的知识',
74
+ items: [
75
+ '\"乘 7 规则\" 是 一个 误区 : 宠物 在 最初 的 2 年 呈 指数 级 成熟。',
76
+ '1 岁 的 狗 相当于 15 岁 的 人类 ; 2 岁 的 狗 相当于 24 岁 的 人类。',
77
+ '2 岁 之后, 大型 犬 的 衰老 速度 快于 小型 犬。',
78
+ '猫 遵循 更加 线性 的 曲线 : 2 岁 后 每一个 猫 寿年 等于 人类 的 4 岁。',
79
+ '了解 真实 的 生命 阶段 有助于 提供 针对性 的 医疗 护理。',
80
+ '饮食 和 锻炼 环境 是 决定 宠物 衰老 速度 的 外部 关键 因素。',
81
+ ],
82
+ },
83
+ { type: 'title', text: '关于您宠物年龄的科学真相', level: 2 },
84
+ {
85
+ type: 'paragraph',
86
+ html: '您 知道 吗 ? 一只 2 岁 的 猫 已经 具备了 人类 24 岁 的 成熟度。 探索 为什么 \"乘 7 规则\" 只是 段子。 那个 \"1 个 狗 年 等于 7 个 人 类 年\" 的 老 传说 只是 一种 过度 的 简化。 生物学 上 的 现实 要 有趣 得 多 : 宠物 在 生命 的 最初 两年 以 惊人的 速度 成熟, 极快 地 达到 性成熟 和 体成熟。 之后, 这种 衰老 曲线 会 趋于 平缓 并 放缓。',
87
+ },
88
+ {
89
+ type: 'paragraph',
90
+ html: '通过 这个 科学 工具 , 您 可以 更好 地 了解 伴侣 动物 的 生理 状态 。 衰老 是 一个 复杂 的 生理 过程 , 涉及 细胞 修复 能力 的 下降 和 代谢 率 的 变化 。 最新 的 表观 遗传学 标记 研究 表明 , 狗 的 衰老 过程 在 早期 是 极富 爆发性 的 。 这种 知识 有助于 宠物 主人 在 正确 的 时间 进行 疫苗 接种 和 健康 筛查 。 从 幼年 的 发育 支持 到 老年 的 慢性病 预警 , 年龄 换算 器 都 能 提供 宝贵的 参考 。',
91
+ },
92
+ { type: 'title', text: '计算背后的科学原理', level: 3 },
93
+ {
94
+ type: 'paragraph',
95
+ html: '此 工具 采用 <strong>美国 兽医 协会 (AAHA)</strong> 的 官方 指南 以及 关于 犬 类 DNA 甲基化 的 最新 研究 模型 , 旨在 为 您 提供 尽可能 准确 的 估算 。 DNA 甲基化 分析 被 称为 \"表观 遗传 钟\" , 通过 检测 遗传物质 上 的 化学 变化 来 揭示 生命体 内部 的 生物 年龄 。',
96
+ },
97
+ {
98
+ type: 'paragraph',
99
+ html: '我们的 算法 将 这些 前沿 数据 与 数百万 临床 案例 相 结合 , 为 不同 体型 的 犬 类 定制了 专属 的 折算系数 。 无论 您 的 宠物 是 娇小 的 贵宾 还是 壮硕 的 藏獒 , 都能 得到 符合 其实际 生理 状况 的 评价 。 这 这种 科学 的 态度 能够 极大 地 提升 宠物 的 福利水平 。',
100
+ },
101
+ {
102
+ type: 'table',
103
+ headers: ['物种', '第 1 年', '第 2 年', '第 3 年起'],
104
+ rows: [
105
+ ['猫', '15 岁 人类', '24 岁 人类', '每年 增加 4 岁'],
106
+ ['小型犬', '15 岁 人类', '24 岁 人类', '每年 增加 5 岁'],
107
+ ['中型犬', '15 岁 人类', '24 岁 人类', '每年 增加 6 岁'],
108
+ ['大型犬', '15 岁 人类', '24 岁 人类', '每年 增加 7 岁'],
109
+ ['巨型犬', '15 岁 人类', '24 岁 人类', '每年 增加 8 岁'],
110
+ ],
111
+ },
112
+ { type: 'title', text: '生命阶段 : 每个 阶段 应该 注意 什么 ?', level: 3 },
113
+ {
114
+ type: 'paragraph',
115
+ html: '了解 您 宠物 的 真实 年齢 有助于 您 理解 它们 在 每个 阶段 的 医疗 和 情感 需求 。 处于 不同 时期 的 动物 对 蛋白质 、 脂肪 以及 锻炼 量的 要求 完全 不同 。',
116
+ },
117
+ {
118
+ type: 'card',
119
+ title: '幼犬 或 少年期 (从 0 到 1 岁)',
120
+ icon: 'mdi:star-shooting',
121
+ html: '这是 爆发性 生长 的 阶段 。 骨骼 在 发育 , 牙齿 在 更换 , 大脑 像 海绵 一样 吸收 信息 。 疫苗 接种 和 早期 社交 在 此 阶段 至关重要 。 保证 优质 的 幼宠 粮 是 建立 坚实 健康 基础 的 关键 步骤 。',
122
+ },
123
+ {
124
+ type: 'card',
125
+ title: '成年期 (从 2 到 6 岁)',
126
+ icon: 'mdi:shield-check',
127
+ html: '身体 和 心理 的 巅峰 状态 。 性格 已经 定型 。 这是 享受 高强度 户外 活动 的 黄金 时间 。 保持 理想 体重 以 预防 未来 可能 出现 的 关节 或 心脏 疾病 是 这一 阶段 的 核心 任务 。',
128
+ },
129
+ {
130
+ type: 'card',
131
+ title: '老年期 (7 岁 以上)',
132
+ icon: 'mdi:heart-pulse',
133
+ html: '口鼻 周围 开始 出现 白毛 , 睡眠 时间 增加 。 代谢 明显 放缓 。 从 此 阶段 开始 , 建议 每 6 个月 进行 一次 兽医 检查 。 密切 关注 关节炎 和 牙齿 健康 。 合理 使用 膳食 补充剂 可以 显著 提升 晚年 生存 质量 。',
134
+ },
135
+ {
136
+ type: 'tip',
137
+ title: '兽医专业建议',
138
+ html: '计算 出 的 年龄 是 一个 平均 的 生物学 估算 。 品种 、 遗传 以及 生活 方式 等 因素 都会 显著 影响 您 宠物 的 实际 衰老 速度 。 请 务必 定期 咨询 专业 兽医 以 获取 一对一 的 个性化 护理 方案 。',
139
+ },
140
+ ];
141
+
142
+ const schemas: PetAgeLocaleContent['schemas'] = [
143
+ {
144
+ '@context': 'https://schema.org',
145
+ '@type': 'SoftwareApplication',
146
+ name: title,
147
+ description: description,
148
+ applicationCategory: 'UtilityApplication',
149
+ operatingSystem: 'Web',
150
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
151
+ } as WithContext<SoftwareApplication>,
152
+ {
153
+ '@context': 'https://schema.org',
154
+ '@type': 'FAQPage',
155
+ mainEntity: faq.map((f) => ({
156
+ '@type': 'Question',
157
+ name: f.question,
158
+ acceptedAnswer: { '@type': 'Answer', text: f.answer },
159
+ })),
160
+ } as any,
161
+ {
162
+ '@context': 'https://schema.org',
163
+ '@type': 'HowTo',
164
+ name: title,
165
+ step: howTo.map((h) => ({
166
+ '@type': 'HowToStep',
167
+ name: h.name,
168
+ text: h.text,
169
+ })),
170
+ } as any,
171
+ ];
172
+
173
+ export const content: PetAgeLocaleContent = {
174
+ slug,
175
+ title,
176
+ description,
177
+ ui,
178
+ seo,
179
+
180
+ faq,
181
+ bibliography,
182
+ howTo,
183
+ schemas,
184
+ };
@@ -1,15 +1,15 @@
1
- ---
2
- import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import { petAge } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await petAge.i18n[locale]?.();
12
- if (!content) return null;
13
- ---
14
-
15
- {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { petAge } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await petAge.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -23,7 +23,6 @@ const ui: PetGestationLocaleContent['ui'] = {
23
23
  "presetToday": "Heute",
24
24
  "presetWeekAgo": "Vor 7 Tagen",
25
25
  "presetFortnightAgo": "Vor 14 Tagen",
26
- "calculateButton": "Geburtsfenster berechnen",
27
26
  "resultEyebrow": "Der Nistkompass zeigt",
28
27
  "dueDateLabel": "Typischer Geburtstermin",
29
28
  "windowLabel": "Erwarteter Zeitraum",
@@ -45,7 +44,6 @@ const ui: PetGestationLocaleContent['ui'] = {
45
44
  "sourceTitle": "Methodik",
46
45
  "sourceText": "Die Hundespanne nutzt 58 bis 72 Tage ab Bedeckung, während Katzen, Kaninchen und Frettchen Richtwerte aus dem MSD Veterinary Manual verwenden.",
47
46
  "invalidDate": "Geben Sie ein gültiges Deckdatum ein.",
48
- "futureDate": "Ein zukünftiges Deckdatum entspricht keiner aktiven Trächtigkeit."
49
47
  };
50
48
 
51
49
  const faq: PetGestationLocaleContent['faq'] = [
@@ -24,7 +24,6 @@ const ui: PetGestationUI = {
24
24
  presetToday: 'Today',
25
25
  presetWeekAgo: '7 days ago',
26
26
  presetFortnightAgo: '14 days ago',
27
- calculateButton: 'Plot the delivery window',
28
27
  resultEyebrow: 'The nesting compass says',
29
28
  dueDateLabel: 'Typical due date',
30
29
  windowLabel: 'Expected window',
@@ -46,7 +45,6 @@ const ui: PetGestationUI = {
46
45
  sourceTitle: 'Method',
47
46
  sourceText: 'The dog range uses 58 to 72 days from breeding, while cat, rabbit, and ferret profiles use the approximate periods documented by the MSD Veterinary Manual.',
48
47
  invalidDate: 'Enter a real mating date to plot the window.',
49
- futureDate: 'A future mating date cannot describe an active pregnancy.',
50
48
  };
51
49
 
52
50
  const faq: PetGestationLocaleContent['faq'] = [
@@ -24,7 +24,6 @@ const ui: PetGestationUI = {
24
24
  presetToday: 'Hoy',
25
25
  presetWeekAgo: 'Hace 7 días',
26
26
  presetFortnightAgo: 'Hace 14 días',
27
- calculateButton: 'Calcular ventana de parto',
28
27
  resultEyebrow: 'El compás de anidación indica',
29
28
  dueDateLabel: 'Fecha típica de parto',
30
29
  windowLabel: 'Ventana estimada',
@@ -46,7 +45,6 @@ const ui: PetGestationUI = {
46
45
  sourceTitle: 'Metodología',
47
46
  sourceText: 'El rango canino contempla de 58 a 72 días desde la monta, mientras que los perfiles de gato, conejo y hurón utilizan los periodos aproximados documentados por el Manual Veterinario MSD.',
48
47
  invalidDate: 'Introduce una fecha de monta válida para calcular el periodo.',
49
- futureDate: 'Una fecha de monta futura no puede corresponder a una gestación activa.',
50
48
  };
51
49
 
52
50
  const faq: PetGestationLocaleContent['faq'] = [
@@ -23,7 +23,6 @@ const ui: PetGestationLocaleContent['ui'] = {
23
23
  "presetToday": "Aujourd hui",
24
24
  "presetWeekAgo": "Il y a 7 jours",
25
25
  "presetFortnightAgo": "Il y a 14 jours",
26
- "calculateButton": "Calculer la période de mise bas",
27
26
  "resultEyebrow": "Le compas de nidification indique",
28
27
  "dueDateLabel": "Date de mise bas estimée",
29
28
  "windowLabel": "Intervalle attendu",
@@ -45,7 +44,6 @@ const ui: PetGestationLocaleContent['ui'] = {
45
44
  "sourceTitle": "Méthodologie",
46
45
  "sourceText": "Le chien utilise une plage de 58 à 72 jours; chat, lapin et furet suivent les données documentées du Manuel Vétérinaire MSD.",
47
46
  "invalidDate": "Entrez une date d accouplement valide.",
48
- "futureDate": "Une date future ne peut pas correspondre à une gestation active."
49
47
  };
50
48
 
51
49
  const faq: PetGestationLocaleContent['faq'] = [
@@ -23,7 +23,6 @@ const ui: PetGestationLocaleContent['ui'] = {
23
23
  "presetToday": "Hari ini",
24
24
  "presetWeekAgo": "7 hari lalu",
25
25
  "presetFortnightAgo": "14 hari lalu",
26
- "calculateButton": "Hitung perkiraan melahirkan",
27
26
  "resultEyebrow": "Kompas kehamilan menunjukkan",
28
27
  "dueDateLabel": "Tanggal perkiraan melahirkan",
29
28
  "windowLabel": "Rentang waktu diperkirakan",
@@ -45,7 +44,6 @@ const ui: PetGestationLocaleContent['ui'] = {
45
44
  "sourceTitle": "Metodologi",
46
45
  "sourceText": "Profil anjing menggunakan 58-72 hari, sedangkan kucing, kelinci, dan musang menggunakan panduan Manual Dokter Hewan MSD.",
47
46
  "invalidDate": "Masukkan tanggal kawin yang valid.",
48
- "futureDate": "Tanggal masa depan tidak dapat menggambarkan kehamilan aktif."
49
47
  };
50
48
 
51
49
  const faq: PetGestationLocaleContent['faq'] = [
@@ -23,7 +23,6 @@ const ui: PetGestationLocaleContent['ui'] = {
23
23
  "presetToday": "Oggi",
24
24
  "presetWeekAgo": "7 giorni fa",
25
25
  "presetFortnightAgo": "14 giorni fa",
26
- "calculateButton": "Calcola finestra del parto",
27
26
  "resultEyebrow": "La bussola di nidificazione indica",
28
27
  "dueDateLabel": "Data presunta del parto",
29
28
  "windowLabel": "Finestra attesa",
@@ -45,7 +44,6 @@ const ui: PetGestationLocaleContent['ui'] = {
45
44
  "sourceTitle": "Metodologia",
46
45
  "sourceText": "I cani utilizzano un intervallo da 58 a 72 giorni, mentre gatti, conigli e furetti seguono il Manuale Veterinario MSD.",
47
46
  "invalidDate": "Inserisci una data di accoppiamento valida.",
48
- "futureDate": "Una data futura non può indicare una gravidanza attiva."
49
47
  };
50
48
 
51
49
  const faq: PetGestationLocaleContent['faq'] = [
@@ -23,7 +23,6 @@ const ui: PetGestationLocaleContent['ui'] = {
23
23
  "presetToday": "今日",
24
24
  "presetWeekAgo": "7日前",
25
25
  "presetFortnightAgo": "14日前",
26
- "calculateButton": "出産予定期間を計算",
27
26
  "resultEyebrow": "出産予定コンパスの計算結果",
28
27
  "dueDateLabel": "標準的な出産予定日",
29
28
  "windowLabel": "予想される出産期間",
@@ -45,7 +44,6 @@ const ui: PetGestationLocaleContent['ui'] = {
45
44
  "sourceTitle": "計算の根拠",
46
45
  "sourceText": "犬は58〜72日、猫・ウサギ・フェレットはMSD獣医マニュアルの基準値を参照しています。",
47
46
  "invalidDate": "正しい交配日を入力してください。",
48
- "futureDate": "未来の交配日はアクティブな妊娠に適用できません。"
49
47
  };
50
48
 
51
49
  const faq: PetGestationLocaleContent['faq'] = [
@@ -23,7 +23,6 @@ const ui: PetGestationLocaleContent['ui'] = {
23
23
  "presetToday": "오늘",
24
24
  "presetWeekAgo": "7일 전",
25
25
  "presetFortnightAgo": "14일 전",
26
- "calculateButton": "출산 예정 기간 계산",
27
26
  "resultEyebrow": "출산 계산기 결과",
28
27
  "dueDateLabel": "대표 예상 출산일",
29
28
  "windowLabel": "예상 출산 기간",
@@ -45,7 +44,6 @@ const ui: PetGestationLocaleContent['ui'] = {
45
44
  "sourceTitle": "계산 근거",
46
45
  "sourceText": "개가 58~72일 범위를 사용하며, 고양이, 토끼, 페럿은 MSD 수의학 매뉴얼 기준을 따릅니다.",
47
46
  "invalidDate": "올바른 교배일을 입력하세요.",
48
- "futureDate": "미래 교배일은 진행 중인 임신에 적용할 수 없습니다."
49
47
  };
50
48
 
51
49
  const faq: PetGestationLocaleContent['faq'] = [
@@ -23,7 +23,6 @@ const ui: PetGestationLocaleContent['ui'] = {
23
23
  "presetToday": "Vandaag",
24
24
  "presetWeekAgo": "7 dagen geleden",
25
25
  "presetFortnightAgo": "14 dagen geleden",
26
- "calculateButton": "Bereken bevallingsvenster",
27
26
  "resultEyebrow": "De drachtkompas geeft aan",
28
27
  "dueDateLabel": "Typische bevallingsdatum",
29
28
  "windowLabel": "Verwachte periode",
@@ -45,7 +44,6 @@ const ui: PetGestationLocaleContent['ui'] = {
45
44
  "sourceTitle": "Methodologie",
46
45
  "sourceText": "Honden gebruiken 58 tot 72 dagen, katten, konijnen en fretten volgen de richtlijnen uit het MSD Veterinary Manual.",
47
46
  "invalidDate": "Vul een geldige dekdatum in.",
48
- "futureDate": "Een toekomstige dekdatum geldt niet voor een actieve dracht."
49
47
  };
50
48
 
51
49
  const faq: PetGestationLocaleContent['faq'] = [
@@ -23,7 +23,6 @@ const ui: PetGestationLocaleContent['ui'] = {
23
23
  "presetToday": "Dzisiaj",
24
24
  "presetWeekAgo": "7 dni temu",
25
25
  "presetFortnightAgo": "14 dni temu",
26
- "calculateButton": "Oblicz okres porodu",
27
26
  "resultEyebrow": "Kompas ciąży wskazuje",
28
27
  "dueDateLabel": "Przewidywany termin porodu",
29
28
  "windowLabel": "Oczekiwany przedział",
@@ -45,7 +44,6 @@ const ui: PetGestationLocaleContent['ui'] = {
45
44
  "sourceTitle": "Metodologia",
46
45
  "sourceText": "Psy wykorzystują zakres 58-72 dni, podczas gdy koty, króliki i fretki bazują na Podręczniku Weterynaryjnym MSD.",
47
46
  "invalidDate": "Wprowadź prawidłową datę krycia.",
48
- "futureDate": "Przyszła data krycia nie dotyczy aktywnej ciąży."
49
47
  };
50
48
 
51
49
  const faq: PetGestationLocaleContent['faq'] = [
@@ -23,7 +23,6 @@ const ui: PetGestationLocaleContent['ui'] = {
23
23
  "presetToday": "Hoje",
24
24
  "presetWeekAgo": "Há 7 dias",
25
25
  "presetFortnightAgo": "Há 14 dias",
26
- "calculateButton": "Calcular período do parto",
27
26
  "resultEyebrow": "A bússola de gestação indica",
28
27
  "dueDateLabel": "Data provável do parto",
29
28
  "windowLabel": "Intervalo esperado",
@@ -45,7 +44,6 @@ const ui: PetGestationLocaleContent['ui'] = {
45
44
  "sourceTitle": "Metodologia",
46
45
  "sourceText": "Cães utilizam o intervalo de 58 a 72 dias; gatos, coelhos e furões usam dados do Manual Veterinário MSD.",
47
46
  "invalidDate": "Insira uma data de cruzamento válida.",
48
- "futureDate": "Uma data futura não corresponde a uma gestação ativa."
49
47
  };
50
48
 
51
49
  const faq: PetGestationLocaleContent['faq'] = [
@@ -23,7 +23,6 @@ const ui: PetGestationLocaleContent['ui'] = {
23
23
  "presetToday": "Сегодня",
24
24
  "presetWeekAgo": "7 дней назад",
25
25
  "presetFortnightAgo": "14 дней назад",
26
- "calculateButton": "Рассчитать период родов",
27
26
  "resultEyebrow": "Компас беременности показывает",
28
27
  "dueDateLabel": "Предполагаемая дата родов",
29
28
  "windowLabel": "Ожидаемый период",
@@ -45,7 +44,6 @@ const ui: PetGestationLocaleContent['ui'] = {
45
44
  "sourceTitle": "Методология",
46
45
  "sourceText": "Для собак используется диапазон 58-72 дня, для кошек, кроликов и хорьков - данные MSD Veterinary Manual.",
47
46
  "invalidDate": "Введите корректную дату вязки.",
48
- "futureDate": "Дата из будущего не подходит для активной беременности."
49
47
  };
50
48
 
51
49
  const faq: PetGestationLocaleContent['faq'] = [
@@ -23,7 +23,6 @@ const ui: PetGestationLocaleContent['ui'] = {
23
23
  "presetToday": "Idag",
24
24
  "presetWeekAgo": "För 7 dagar sedan",
25
25
  "presetFortnightAgo": "För 14 dagar sedan",
26
- "calculateButton": "Beräkna förlossningsfönster",
27
26
  "resultEyebrow": "Dräktighetskompassen visar",
28
27
  "dueDateLabel": "Typiskt förlossningsdatum",
29
28
  "windowLabel": "Förväntad tidsperiod",
@@ -45,7 +44,6 @@ const ui: PetGestationLocaleContent['ui'] = {
45
44
  "sourceTitle": "Metodik",
46
45
  "sourceText": "Hundar använder 58-72 dagar, katt, kanin och iller följer MSD Veterinary Manual.",
47
46
  "invalidDate": "Ange ett giltigt parningsdatum.",
48
- "futureDate": "Ett framtida datum gäller inte aktiv dräktighet."
49
47
  };
50
48
 
51
49
  const faq: PetGestationLocaleContent['faq'] = [