@jjlmoya/utils-home 1.16.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 (174) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +10 -10
  3. package/src/category/i18n/en.ts +8 -8
  4. package/src/category/i18n/es.ts +2 -2
  5. package/src/category/i18n/fr.ts +15 -15
  6. package/src/category/i18n/id.ts +8 -8
  7. package/src/category/i18n/it.ts +7 -7
  8. package/src/category/i18n/nl.ts +8 -8
  9. package/src/category/i18n/pl.ts +10 -10
  10. package/src/category/i18n/pt.ts +8 -8
  11. package/src/category/i18n/ru.ts +10 -10
  12. package/src/category/i18n/sv.ts +8 -8
  13. package/src/category/i18n/tr.ts +4 -4
  14. package/src/category/i18n/zh.ts +8 -8
  15. package/src/entries.ts +4 -1
  16. package/src/pages/[locale]/[slug].astro +28 -12
  17. package/src/tests/locale_completeness.test.ts +4 -22
  18. package/src/tests/no_en_dash.test.ts +70 -0
  19. package/src/tests/shared-test-helpers.ts +56 -0
  20. package/src/tests/tool_exports.test.ts +34 -0
  21. package/src/tests/tool_validation.test.ts +2 -2
  22. package/src/tool/dewPointCalculator/bibliography.ts +10 -0
  23. package/src/tool/dewPointCalculator/i18n/de.ts +7 -17
  24. package/src/tool/dewPointCalculator/i18n/en.ts +8 -18
  25. package/src/tool/dewPointCalculator/i18n/es.ts +7 -17
  26. package/src/tool/dewPointCalculator/i18n/fr.ts +8 -18
  27. package/src/tool/dewPointCalculator/i18n/id.ts +7 -17
  28. package/src/tool/dewPointCalculator/i18n/it.ts +7 -17
  29. package/src/tool/dewPointCalculator/i18n/ja.ts +6 -16
  30. package/src/tool/dewPointCalculator/i18n/ko.ts +6 -16
  31. package/src/tool/dewPointCalculator/i18n/nl.ts +7 -17
  32. package/src/tool/dewPointCalculator/i18n/pl.ts +7 -17
  33. package/src/tool/dewPointCalculator/i18n/pt.ts +7 -17
  34. package/src/tool/dewPointCalculator/i18n/ru.ts +13 -23
  35. package/src/tool/dewPointCalculator/i18n/sv.ts +7 -17
  36. package/src/tool/dewPointCalculator/i18n/tr.ts +6 -16
  37. package/src/tool/dewPointCalculator/i18n/zh.ts +7 -17
  38. package/src/tool/dewPointCalculator/seo.astro +2 -1
  39. package/src/tool/heatingComparator/bibliography.ts +14 -0
  40. package/src/tool/heatingComparator/i18n/de.ts +10 -24
  41. package/src/tool/heatingComparator/i18n/en.ts +3 -13
  42. package/src/tool/heatingComparator/i18n/es.ts +3 -17
  43. package/src/tool/heatingComparator/i18n/fr.ts +9 -19
  44. package/src/tool/heatingComparator/i18n/id.ts +3 -17
  45. package/src/tool/heatingComparator/i18n/it.ts +3 -17
  46. package/src/tool/heatingComparator/i18n/ja.ts +296 -310
  47. package/src/tool/heatingComparator/i18n/ko.ts +296 -306
  48. package/src/tool/heatingComparator/i18n/nl.ts +3 -17
  49. package/src/tool/heatingComparator/i18n/pl.ts +3 -17
  50. package/src/tool/heatingComparator/i18n/pt.ts +3 -17
  51. package/src/tool/heatingComparator/i18n/ru.ts +14 -24
  52. package/src/tool/heatingComparator/i18n/sv.ts +6 -20
  53. package/src/tool/heatingComparator/i18n/tr.ts +2 -16
  54. package/src/tool/heatingComparator/i18n/zh.ts +296 -306
  55. package/src/tool/heatingComparator/seo.astro +3 -3
  56. package/src/tool/ledSavingCalculator/bibliography.ts +14 -0
  57. package/src/tool/ledSavingCalculator/i18n/de.ts +6 -16
  58. package/src/tool/ledSavingCalculator/i18n/en.ts +6 -20
  59. package/src/tool/ledSavingCalculator/i18n/es.ts +6 -20
  60. package/src/tool/ledSavingCalculator/i18n/fr.ts +10 -24
  61. package/src/tool/ledSavingCalculator/i18n/id.ts +5 -15
  62. package/src/tool/ledSavingCalculator/i18n/it.ts +6 -16
  63. package/src/tool/ledSavingCalculator/i18n/ja.ts +5 -15
  64. package/src/tool/ledSavingCalculator/i18n/ko.ts +4 -14
  65. package/src/tool/ledSavingCalculator/i18n/nl.ts +5 -15
  66. package/src/tool/ledSavingCalculator/i18n/pl.ts +5 -15
  67. package/src/tool/ledSavingCalculator/i18n/pt.ts +5 -15
  68. package/src/tool/ledSavingCalculator/i18n/ru.ts +8 -18
  69. package/src/tool/ledSavingCalculator/i18n/sv.ts +5 -15
  70. package/src/tool/ledSavingCalculator/i18n/tr.ts +5 -15
  71. package/src/tool/ledSavingCalculator/i18n/zh.ts +6 -16
  72. package/src/tool/ledSavingCalculator/seo.astro +2 -1
  73. package/src/tool/projectorCalculator/bibliography.ts +5 -0
  74. package/src/tool/projectorCalculator/i18n/de.ts +4 -8
  75. package/src/tool/projectorCalculator/i18n/en.ts +3 -8
  76. package/src/tool/projectorCalculator/i18n/es.ts +4 -9
  77. package/src/tool/projectorCalculator/i18n/fr.ts +6 -11
  78. package/src/tool/projectorCalculator/i18n/id.ts +4 -9
  79. package/src/tool/projectorCalculator/i18n/it.ts +4 -8
  80. package/src/tool/projectorCalculator/i18n/ja.ts +175 -179
  81. package/src/tool/projectorCalculator/i18n/ko.ts +175 -179
  82. package/src/tool/projectorCalculator/i18n/nl.ts +4 -8
  83. package/src/tool/projectorCalculator/i18n/pl.ts +5 -9
  84. package/src/tool/projectorCalculator/i18n/pt.ts +4 -8
  85. package/src/tool/projectorCalculator/i18n/ru.ts +7 -11
  86. package/src/tool/projectorCalculator/i18n/sv.ts +4 -8
  87. package/src/tool/projectorCalculator/i18n/tr.ts +4 -8
  88. package/src/tool/projectorCalculator/i18n/zh.ts +175 -179
  89. package/src/tool/projectorCalculator/seo.astro +2 -1
  90. package/src/tool/qrGenerator/bibliography.ts +14 -0
  91. package/src/tool/qrGenerator/i18n/de.ts +192 -202
  92. package/src/tool/qrGenerator/i18n/en.ts +3 -17
  93. package/src/tool/qrGenerator/i18n/es.ts +2 -16
  94. package/src/tool/qrGenerator/i18n/fr.ts +3 -17
  95. package/src/tool/qrGenerator/i18n/id.ts +146 -150
  96. package/src/tool/qrGenerator/i18n/it.ts +169 -173
  97. package/src/tool/qrGenerator/i18n/ja.ts +146 -150
  98. package/src/tool/qrGenerator/i18n/ko.ts +146 -150
  99. package/src/tool/qrGenerator/i18n/nl.ts +146 -150
  100. package/src/tool/qrGenerator/i18n/pl.ts +146 -150
  101. package/src/tool/qrGenerator/i18n/pt.ts +146 -150
  102. package/src/tool/qrGenerator/i18n/ru.ts +146 -150
  103. package/src/tool/qrGenerator/i18n/sv.ts +146 -150
  104. package/src/tool/qrGenerator/i18n/tr.ts +146 -150
  105. package/src/tool/qrGenerator/i18n/zh.ts +146 -150
  106. package/src/tool/qrGenerator/seo.astro +2 -1
  107. package/src/tool/solarCalculator/bibliography.ts +5 -0
  108. package/src/tool/solarCalculator/i18n/de.ts +141 -145
  109. package/src/tool/solarCalculator/i18n/en.ts +7 -12
  110. package/src/tool/solarCalculator/i18n/es.ts +5 -10
  111. package/src/tool/solarCalculator/i18n/fr.ts +8 -13
  112. package/src/tool/solarCalculator/i18n/id.ts +4 -8
  113. package/src/tool/solarCalculator/i18n/it.ts +4 -8
  114. package/src/tool/solarCalculator/i18n/ja.ts +121 -125
  115. package/src/tool/solarCalculator/i18n/ko.ts +116 -120
  116. package/src/tool/solarCalculator/i18n/nl.ts +4 -7
  117. package/src/tool/solarCalculator/i18n/pl.ts +5 -9
  118. package/src/tool/solarCalculator/i18n/pt.ts +4 -8
  119. package/src/tool/solarCalculator/i18n/ru.ts +7 -10
  120. package/src/tool/solarCalculator/i18n/sv.ts +4 -7
  121. package/src/tool/solarCalculator/i18n/tr.ts +4 -7
  122. package/src/tool/solarCalculator/i18n/zh.ts +116 -120
  123. package/src/tool/solarCalculator/seo.astro +2 -1
  124. package/src/tool/tariffComparator/bibliography.ts +7 -0
  125. package/src/tool/tariffComparator/i18n/de.ts +129 -132
  126. package/src/tool/tariffComparator/i18n/en.ts +5 -12
  127. package/src/tool/tariffComparator/i18n/es.ts +5 -12
  128. package/src/tool/tariffComparator/i18n/fr.ts +8 -15
  129. package/src/tool/tariffComparator/i18n/id.ts +2 -5
  130. package/src/tool/tariffComparator/i18n/it.ts +2 -5
  131. package/src/tool/tariffComparator/i18n/ja.ts +129 -132
  132. package/src/tool/tariffComparator/i18n/ko.ts +129 -132
  133. package/src/tool/tariffComparator/i18n/nl.ts +2 -5
  134. package/src/tool/tariffComparator/i18n/pl.ts +3 -6
  135. package/src/tool/tariffComparator/i18n/pt.ts +2 -5
  136. package/src/tool/tariffComparator/i18n/ru.ts +2 -5
  137. package/src/tool/tariffComparator/i18n/sv.ts +2 -5
  138. package/src/tool/tariffComparator/i18n/tr.ts +2 -5
  139. package/src/tool/tariffComparator/i18n/zh.ts +129 -132
  140. package/src/tool/tariffComparator/seo.astro +2 -1
  141. package/src/tool/wifiRangeSimulator/bibliography.astro +14 -0
  142. package/src/tool/wifiRangeSimulator/bibliography.ts +14 -0
  143. package/src/tool/wifiRangeSimulator/component.astro +170 -0
  144. package/src/tool/wifiRangeSimulator/entry.ts +29 -0
  145. package/src/tool/wifiRangeSimulator/i18n/de.ts +477 -0
  146. package/src/tool/wifiRangeSimulator/i18n/en.ts +477 -0
  147. package/src/tool/wifiRangeSimulator/i18n/es.ts +477 -0
  148. package/src/tool/wifiRangeSimulator/i18n/fr.ts +477 -0
  149. package/src/tool/wifiRangeSimulator/i18n/id.ts +477 -0
  150. package/src/tool/wifiRangeSimulator/i18n/it.ts +477 -0
  151. package/src/tool/wifiRangeSimulator/i18n/ja.ts +477 -0
  152. package/src/tool/wifiRangeSimulator/i18n/ko.ts +477 -0
  153. package/src/tool/wifiRangeSimulator/i18n/nl.ts +477 -0
  154. package/src/tool/wifiRangeSimulator/i18n/pl.ts +477 -0
  155. package/src/tool/wifiRangeSimulator/i18n/pt.ts +477 -0
  156. package/src/tool/wifiRangeSimulator/i18n/ru.ts +477 -0
  157. package/src/tool/wifiRangeSimulator/i18n/sv.ts +477 -0
  158. package/src/tool/wifiRangeSimulator/i18n/tr.ts +477 -0
  159. package/src/tool/wifiRangeSimulator/i18n/zh.ts +477 -0
  160. package/src/tool/wifiRangeSimulator/i18n-utils.ts +14 -0
  161. package/src/tool/wifiRangeSimulator/index.ts +8 -0
  162. package/src/tool/wifiRangeSimulator/logic.ts +220 -0
  163. package/src/tool/wifiRangeSimulator/seo.astro +15 -0
  164. package/src/tool/wifiRangeSimulator/sketch-actions.ts +168 -0
  165. package/src/tool/wifiRangeSimulator/sketch-events.ts +138 -0
  166. package/src/tool/wifiRangeSimulator/sketch-render-dash.ts +170 -0
  167. package/src/tool/wifiRangeSimulator/sketch-render-device.ts +42 -0
  168. package/src/tool/wifiRangeSimulator/sketch-render.ts +155 -0
  169. package/src/tool/wifiRangeSimulator/sketch-state.ts +186 -0
  170. package/src/tool/wifiRangeSimulator/sketch.ts +100 -0
  171. package/src/tool/wifiRangeSimulator/ui.ts +69 -0
  172. package/src/tool/wifiRangeSimulator/wifi-range-simulator.css +583 -0
  173. package/src/tools.ts +2 -0
  174. package/src/types.ts +0 -2
@@ -1,180 +1,176 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import type { ToolLocaleContent } from '../../../types';
3
- import type { ProjectorCalculatorUI } from '../ui';
4
-
5
- const slug = 'projector-throw-calculator';
6
- const title = '投影机距离计算器 — 投射比与屏幕';
7
- const description =
8
- '根据所需的屏幕尺寸和投影机投射比(Throw Ratio)计算精确的安装距离。支持实时模拟的视觉化工具。';
9
-
10
- const faqData = [
11
- {
12
- question: '什么是投射比(Throw Ratio)?',
13
- answer:
14
- '投射比定义了投影机在特定距离下能投射出多大的画面。计算公式为“投射距离 ÷ 画面宽度”。例如,投射比为 1.5 意味着从 1.5 米外投影,可以获得 1 米宽的画面。',
15
- },
16
- {
17
- question: '100 英寸的屏幕需要多远的距离?',
18
- answer:
19
- '这取决于投影机的投射比。如果投射比是标准的 1.5:1,大约需要 3.3 米。如果是短焦投影机(Short Throw),距离可以缩短到 1 米以内。',
20
- },
21
- {
22
- question: '16:9 和 4:3 有什么区别?',
23
- answer:
24
- '16:9 是现代电影和电视剧使用的宽屏格式。4:3 是传统演示文稿使用的比例。选择正确的比例可以避免出现过大的黑边。',
25
- },
26
- {
27
- question: '安装投影机的高度重要吗?',
28
- answer:
29
- '非常重要。投影机通常有垂直偏移或梯形校正。理想状态是投影机对准屏幕的上边缘或下边缘中央,以避免图像变形。',
30
- },
31
- ];
32
-
33
- const howToData = [
34
- {
35
- name: '查询投射比',
36
- text: '在投影机机身、手册或包装盒上查找类似“1.2:1”或“1.5-1.8:1”的数值。',
37
- },
38
- {
39
- name: '确定屏幕尺寸',
40
- text: '输入您想要的对角线英寸数或墙面可用的宽度。',
41
- },
42
- {
43
- name: '选择画面比例',
44
- text: '看电影或剧集选 16:9,办公演示选 4:3,追求院线感选 21:9。',
45
- },
46
- {
47
- name: '获取安装距离',
48
- text: '计算器将给出安装投影机支架的确切距离。',
49
- },
50
- ];
51
-
52
- const faqSchema: WithContext<FAQPage> = {
53
- '@context': 'https://schema.org',
54
- '@type': 'FAQPage',
55
- mainEntity: faqData.map((item) => ({
56
- '@type': 'Question',
57
- name: item.question,
58
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
- })),
60
- };
61
-
62
- const howToSchema: WithContext<HowTo> = {
63
- '@context': 'https://schema.org',
64
- '@type': 'HowTo',
65
- name: title,
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ProjectorCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'projector-throw-calculator';
7
+ const title = '投影机距离计算器: 投射比与屏幕';
8
+ const description =
9
+ '根据所需的屏幕尺寸和投影机投射比(Throw Ratio)计算精确的安装距离。支持实时模拟的视觉化工具。';
10
+
11
+ const faqData = [
12
+ {
13
+ question: '什么是投射比(Throw Ratio)?',
14
+ answer:
15
+ '投射比定义了投影机在特定距离下能投射出多大的画面。计算公式为"投射距离 ÷ 画面宽度"。例如,投射比为 1.5 意味着从 1.5 米外投影,可以获得 1 米宽的画面。',
16
+ },
17
+ {
18
+ question: '100 英寸的屏幕需要多远的距离?',
19
+ answer:
20
+ '这取决于投影机的投射比。如果投射比是标准的 1.5:1,大约需要 3.3 米。如果是短焦投影机(Short Throw),距离可以缩短到 1 米以内。',
21
+ },
22
+ {
23
+ question: '16:9 和 4:3 有什么区别?',
24
+ answer:
25
+ '16:9 是现代电影和电视剧使用的宽屏格式。4:3 是传统演示文稿使用的比例。选择正确的比例可以避免出现过大的黑边。',
26
+ },
27
+ {
28
+ question: '安装投影机的高度重要吗?',
29
+ answer:
30
+ '非常重要。投影机通常有垂直偏移或梯形校正。理想状态是投影机对准屏幕的上边缘或下边缘中央,以避免图像变形。',
31
+ },
32
+ ];
33
+
34
+ const howToData = [
35
+ {
36
+ name: '查询投射比',
37
+ text: '在投影机机身、手册或包装盒上查找类似"1.2:1"或"1.5-1.8:1"的数值。',
38
+ },
39
+ {
40
+ name: '确定屏幕尺寸',
41
+ text: '输入您想要的对角线英寸数或墙面可用的宽度。',
42
+ },
43
+ {
44
+ name: '选择画面比例',
45
+ text: '看电影或剧集选 16:9,办公演示选 4:3,追求院线感选 21:9。',
46
+ },
47
+ {
48
+ name: '获取安装距离',
49
+ text: '计算器将给出安装投影机支架的确切距离。',
50
+ },
51
+ ];
52
+
53
+ const faqSchema: WithContext<FAQPage> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'FAQPage',
56
+ mainEntity: faqData.map((item) => ({
57
+ '@type': 'Question',
58
+ name: item.question,
59
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
60
+ })),
61
+ };
62
+
63
+ const howToSchema: WithContext<HowTo> = {
64
+ '@context': 'https://schema.org',
65
+ '@type': 'HowTo',
66
+ name: title,
67
+ description,
68
+ step: howToData.map((step) => ({
69
+ '@type': 'HowToStep',
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'CNY' },
83
+ inLanguage: 'zh',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
87
+ slug,
88
+ title,
66
89
  description,
67
- step: howToData.map((step) => ({
68
- '@type': 'HowToStep',
69
- name: step.name,
70
- text: step.text,
71
- })),
72
- };
73
-
74
- const appSchema: WithContext<SoftwareApplication> = {
75
- '@context': 'https://schema.org',
76
- '@type': 'SoftwareApplication',
77
- name: title,
78
- description,
79
- applicationCategory: 'UtilityApplication',
80
- operatingSystem: 'All',
81
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'CNY' },
82
- inLanguage: 'zh',
83
- };
84
-
85
- export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
86
- slug,
87
- title,
88
- description,
89
- faqTitle: '常见问题',
90
- faq: faqData,
91
- bibliographyTitle: '参考资料',
92
- bibliography: [
93
- { name: 'Projector Central — 投射距离计算器', url: 'https://www.projectorcentral.com/projection-calculator-pro.cfm' },
94
- { name: 'Epson 投影安装指南', url: 'https://epson.com/' },
95
- ],
96
- howTo: howToData,
97
- schemas: [faqSchema, howToSchema, appSchema],
98
- seo: [
99
- {
100
- type: 'title',
101
- text: '掌控投影几何学',
102
- level: 2,
103
- },
104
- {
105
- type: 'paragraph',
106
- html: '凭直觉安装投影机可能会毁掉观影体验。太近画面太小,太远则亮度不足。核心在于 <strong>投射比(Throw Ratio)</strong>,它精确定义了距离与画面尺寸的关系。',
107
- },
108
- {
109
- type: 'stats',
110
- items: [
111
- { value: 'TR × W', label: '距离公式', icon: 'mdi:projector' },
112
- { value: '< 0.4', label: '超短焦', icon: 'mdi:arrow-collapse-horizontal' },
113
- { value: '> 2.0', label: '长焦', icon: 'mdi:arrow-expand-horizontal' },
114
- ],
115
- columns: 3,
116
- },
117
- {
118
- type: 'comparative',
119
- items: [
120
- {
121
- title: '什么是投射比?',
122
- description: '投射比是投影距离与画面宽度的比值。TR 为 1.5 意味着每 1 米画面宽度需要 1.5 米的投影距离。',
123
- icon: 'mdi:ruler',
124
- points: ['TR < 1: 短焦,适合小空间', 'TR 1–2: 客厅及会议室标准', 'TR > 2: 长焦,适合大型礼堂'],
125
- },
126
- {
127
- title: '画面格式与比例',
128
- description: '画面格式决定了投影比例。使用错误的比例会导致出现黑边,并浪费投影亮度。',
129
- icon: 'mdi:aspect-ratio',
130
- points: ['16:9: 现代电影与游戏的标准高清比例', '21:9: 宽屏幕电影院格式', '4:3: 办公演示与老式投影比例'],
131
- },
132
- ],
133
- columns: 2,
134
- },
135
- {
136
- type: 'title',
137
- text: '专业安装建议',
138
- level: 3,
139
- },
140
- {
141
- type: 'paragraph',
142
- html: '<strong>镜头位移 (Lens Shift) vs 梯形校正:</strong> 如果投影机支持镜头位移,请务必优先使用,而不是使用数字梯形校正。梯形校正会损失分辨率。',
143
- },
144
- {
145
- type: 'diagnostic',
146
- variant: 'warning',
147
- title: '环境光与幕布增益',
148
- icon: 'mdi:lightbulb-on',
149
- badge: '专业贴士',
150
- html: '<p>在光线较亮的房间,考虑使用高增益(>1.0)幕布来补偿对比度的损失。</p>',
151
- },
152
- {
153
- type: 'summary',
154
- title: '安装自查清单',
155
- items: [
156
- '安装前先确认投影机的确切投射比。',
157
- '核对墙面可用空间,确保能放下目标尺寸。',
158
- '尽量使投影机光轴垂直并对准幕布中心。',
159
- '避免数字校正:优先通过物理位置调整。',
160
- '确保屏幕上没有直射光源干扰。',
161
- ],
162
- },
163
- ],
164
- ui: {
165
- configTitle: '参数配置',
166
- configSubtitle: '设置您的幕布与投影机',
167
- labelDiagonal: '幕布对角线',
168
- labelDiagonalUnit: '英寸 (")',
169
- labelFormat: '画面比例',
170
- labelThrowRatio: '投射比(Throw Ratio)',
171
- throwRatioHint: '参考投影机手册。例如:1.50 表示每 1 米宽度需 1.5 米距离。',
172
- ratio169Sub: '高清电视',
173
- ratio219Sub: '宽银幕',
174
- ratio43Sub: '普通/办公',
175
- labelWidth: '屏幕宽度',
176
- labelHeight: '屏幕高度',
177
- labelDistance: '需安装距离',
178
- simulationBadge: '实时模拟预测',
179
- },
180
- };
90
+ faq: faqData,
91
+ bibliography,
92
+ howTo: howToData,
93
+ schemas: [faqSchema, howToSchema, appSchema],
94
+ seo: [
95
+ {
96
+ type: 'title',
97
+ text: '掌控投影几何学',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: '凭直觉安装投影机可能会毁掉观影体验。太近画面太小,太远则亮度不足。核心在于 <strong>投射比(Throw Ratio)</strong>,它精确定义了距离与画面尺寸的关系。',
103
+ },
104
+ {
105
+ type: 'stats',
106
+ items: [
107
+ { value: 'TR × W', label: '距离公式', icon: 'mdi:projector' },
108
+ { value: '< 0.4', label: '超短焦', icon: 'mdi:arrow-collapse-horizontal' },
109
+ { value: '> 2.0', label: '长焦', icon: 'mdi:arrow-expand-horizontal' },
110
+ ],
111
+ columns: 3,
112
+ },
113
+ {
114
+ type: 'comparative',
115
+ items: [
116
+ {
117
+ title: '什么是投射比?',
118
+ description: '投射比是投影距离与画面宽度的比值。TR 为 1.5 意味着每 1 米画面宽度需要 1.5 米的投影距离。',
119
+ icon: 'mdi:ruler',
120
+ points: ['TR < 1: 短焦,适合小空间', 'TR 1-2: 客厅及会议室标准', 'TR > 2: 长焦,适合大型礼堂'],
121
+ },
122
+ {
123
+ title: '画面格式与比例',
124
+ description: '画面格式决定了投影比例。使用错误的比例会导致出现黑边,并浪费投影亮度。',
125
+ icon: 'mdi:aspect-ratio',
126
+ points: ['16:9: 现代电影与游戏的标准高清比例', '21:9: 宽屏幕电影院格式', '4:3: 办公演示与老式投影比例'],
127
+ },
128
+ ],
129
+ columns: 2,
130
+ },
131
+ {
132
+ type: 'title',
133
+ text: '专业安装建议',
134
+ level: 3,
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: '<strong>镜头位移 (Lens Shift) vs 梯形校正:</strong> 如果投影机支持镜头位移,请务必优先使用,而不是使用数字梯形校正。梯形校正会损失分辨率。',
139
+ },
140
+ {
141
+ type: 'diagnostic',
142
+ variant: 'warning',
143
+ title: '环境光与幕布增益',
144
+ icon: 'mdi:lightbulb-on',
145
+ badge: '专业贴士',
146
+ html: '<p>在光线较亮的房间,考虑使用高增益(>1.0)幕布来补偿对比度的损失。</p>',
147
+ },
148
+ {
149
+ type: 'summary',
150
+ title: '安装自查清单',
151
+ items: [
152
+ '安装前先确认投影机的确切投射比。',
153
+ '核对墙面可用空间,确保能放下目标尺寸。',
154
+ '尽量使投影机光轴垂直并对准幕布中心。',
155
+ '避免数字校正:优先通过物理位置调整。',
156
+ '确保屏幕上没有直射光源干扰。',
157
+ ],
158
+ },
159
+ ],
160
+ ui: {
161
+ configTitle: '参数配置',
162
+ configSubtitle: '设置您的幕布与投影机',
163
+ labelDiagonal: '幕布对角线',
164
+ labelDiagonalUnit: '英寸 (")',
165
+ labelFormat: '画面比例',
166
+ labelThrowRatio: '投射比(Throw Ratio)',
167
+ throwRatioHint: '参考投影机手册。例如:1.50 表示每 1 米宽度需 1.5 米距离。',
168
+ ratio169Sub: '高清电视',
169
+ ratio219Sub: '宽银幕',
170
+ ratio43Sub: '普通/办公',
171
+ labelWidth: '屏幕宽度',
172
+ labelHeight: '屏幕高度',
173
+ labelDistance: '需安装距离',
174
+ simulationBadge: '实时模拟预测',
175
+ },
176
+ };
@@ -11,4 +11,5 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await projectorCalculator.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
- <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,14 @@
1
+ export const bibliography = [
2
+ {
3
+ name: 'node-qrcode: QR code generator library',
4
+ url: 'https://github.com/soldair/node-qrcode',
5
+ },
6
+ {
7
+ name: 'RFC 6350: vCard Format Specification',
8
+ url: 'https://www.rfc-editor.org/rfc/rfc6350',
9
+ },
10
+ {
11
+ name: 'ZXing: Barcode Contents: WiFi, vCard y URL',
12
+ url: 'https://github.com/zxing/zxing/wiki/Barcode-Contents',
13
+ },
14
+ ];