@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.5m 거리에서 가로 1m 크기의 화면이 만들어집니다.',
15
- },
16
- {
17
- question: '100인치 화면을 만들려면 거리가 얼마나 필요한가요?',
18
- answer:
19
- '프로젝터의 투사비에 따라 다릅니다. 표준 투사비 1.5:1 기준으로는 약 3.3m가 필요합니다. 단초점(Short Throw) 프로젝터라면 1m 미만에서도 가능합니다.',
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.5m 거리에서 가로 1m 크기의 화면이 만들어집니다.',
16
+ },
17
+ {
18
+ question: '100인치 화면을 만들려면 거리가 얼마나 필요한가요?',
19
+ answer:
20
+ '프로젝터의 투사비에 따라 다릅니다. 표준 투사비 1.5:1 기준으로는 약 3.3m가 필요합니다. 단초점(Short Throw) 프로젝터라면 1m 미만에서도 가능합니다.',
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: 'KRW' },
83
+ inLanguage: 'ko',
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: 'KRW' },
82
- inLanguage: 'ko',
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: '거리와 화면 폭의 비율입니다. 투사비 1.5는 화면 폭 1m당 1.5m의 거리가 필요함을 뜻합니다.',
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: HD/4K 영화 TV 표준', '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>렌즈 시프트 vs 키스톤:</strong> 렌즈 시프트 기능이 있다면 디지털 키스톤 대신 무조건 렌즈 시프트를 쓰세요. 키스톤은 해상도를 깎아먹습니다.',
143
- },
144
- {
145
- type: 'diagnostic',
146
- variant: 'warning',
147
- title: '주변광과 스크린 게인',
148
- icon: 'mdi:lightbulb-on',
149
- badge: '전문가 조언',
150
- html: '<p>어둡지 않은 환경에서는 고휘도(Gain > 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은 가로 1m당 1.5m 거리 필요)',
172
- ratio169Sub: 'TV / HD',
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: '거리와 화면 폭의 비율입니다. 투사비 1.5는 화면 폭 1m당 1.5m의 거리가 필요함을 뜻합니다.',
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: HD/4K 영화 및 TV 표준', '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>렌즈 시프트 vs 키스톤:</strong> 렌즈 시프트 기능이 있다면 디지털 키스톤 대신 무조건 렌즈 시프트를 쓰세요. 키스톤은 해상도를 깎아먹습니다.',
139
+ },
140
+ {
141
+ type: 'diagnostic',
142
+ variant: 'warning',
143
+ title: '주변광과 스크린 게인',
144
+ icon: 'mdi:lightbulb-on',
145
+ badge: '전문가 조언',
146
+ html: '<p>어둡지 않은 환경에서는 고휘도(Gain > 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은 가로 1m당 1.5m 거리 필요)',
168
+ ratio169Sub: 'TV / HD',
169
+ ratio219Sub: '영화',
170
+ ratio43Sub: '문서',
171
+ labelWidth: '화면 가로 길이',
172
+ labelHeight: '화면 세로 길이',
173
+ labelDistance: '필요 설치 거리',
174
+ simulationBadge: '실시간 예측치',
175
+ },
176
+ };
@@ -1,9 +1,10 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProjectorCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'projector-afstand-calculator';
6
- const title = 'Projector Afstand Calculator Throw Ratio';
7
+ const title = 'Projector Afstand Calculator: Throw Ratio';
7
8
  const description =
8
9
  'Bereken de exacte afstand voor uw projector aan de hand van de gewenste schermgrootte en de throw ratio van uw apparaat.';
9
10
 
@@ -86,13 +87,8 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Veelgestelde Vragen',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Referenties',
92
- bibliography: [
93
- { name: 'Projector Central — Throw Distance Calculator', url: 'https://www.projectorcentral.com/projection-calculator-pro.cfm' },
94
- { name: 'Epson Projectie Gids', url: 'https://epson.com/' },
95
- ],
91
+ bibliography,
96
92
  howTo: howToData,
97
93
  schemas: [faqSchema, howToSchema, appSchema],
98
94
  seo: [
@@ -121,7 +117,7 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
121
117
  title: 'Wat is Throw Ratio?',
122
118
  description: 'De verhouding tussen afstand en breedte. Een TR van 1.5 betekent 1,5m afstand per meter beeldbreedte.',
123
119
  icon: 'mdi:ruler',
124
- points: ['TR < 1: Short Throw, voor kleine kamers', 'TR 12: Standaard voor woonkamers', 'TR > 2: Long Throw, voor grote zalen'],
120
+ points: ['TR < 1: Short Throw, voor kleine kamers', 'TR 1-2: Standaard voor woonkamers', 'TR > 2: Long Throw, voor grote zalen'],
125
121
  },
126
122
  {
127
123
  title: 'Beeldverhouding (Formaat)',
@@ -1,9 +1,10 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProjectorCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'kalkulator-odleglosci-projektora';
6
- const title = 'Kalkulator Odległości Projektora Rzut i Ekran';
7
+ const title = 'Kalkulator Odległości Projektora: Rzut i Ekran';
7
8
  const description =
8
9
  'Oblicz dokładną odległość montażu projektora w zależności od rozmiaru ekranu i współczynnika rzutu (Throw Ratio).';
9
10
 
@@ -86,13 +87,8 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Często Zadawane Pytania',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografia',
92
- bibliography: [
93
- { name: 'Projector Central — Throw Distance Calculator', url: 'https://www.projectorcentral.com/projection-calculator-pro.cfm' },
94
- { name: 'Epson — Instrukcje Projekcji', url: 'https://epson.com/' },
95
- ],
91
+ bibliography,
96
92
  howTo: howToData,
97
93
  schemas: [faqSchema, howToSchema, appSchema],
98
94
  seo: [
@@ -103,7 +99,7 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
103
99
  },
104
100
  {
105
101
  type: 'paragraph',
106
- html: 'Montaż projektora "na oko" może popsuć seans. Za blisko obraz za mały, za daleko stracisz jasność. Kluczem jest <strong>Throw Ratio</strong>, który precyzyjnie określa relację odległości do obrazu.',
102
+ html: 'Montaż projektora "na oko" może popsuć seans. Za blisko: obraz za mały, za daleko: stracisz jasność. Kluczem jest <strong>Throw Ratio</strong>, który precyzyjnie określa relację odległości do obrazu.',
107
103
  },
108
104
  {
109
105
  type: 'stats',
@@ -121,7 +117,7 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
121
117
  title: 'Co to jest Throw Ratio?',
122
118
  description: 'To stosunek odległości do szerokości obrazu. TR 1.5 oznacza 1.5m dystansu na każdy metr szerokości ekranu.',
123
119
  icon: 'mdi:ruler',
124
- points: ['TR < 1: Short Throw, do małych pokoi', 'TR 12: Standard do salonu', 'TR > 2: Long Throw, do dużych sal'],
120
+ points: ['TR < 1: Short Throw, do małych pokoi', 'TR 1-2: Standard do salonu', 'TR > 2: Long Throw, do dużych sal'],
125
121
  },
126
122
  {
127
123
  title: 'Format (Aspect Ratio)',
@@ -1,9 +1,10 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProjectorCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'calculadora-distancia-projetor';
6
- const title = 'Calculadora de Distância do Projetor Tiro e Ecrã';
7
+ const title = 'Calculadora de Distância do Projetor: Tiro e Ecrã';
7
8
  const description =
8
9
  'Calcule a distância exata para instalar o seu projetor de acordo com o tamanho do ecrã pretendido e o Throw Ratio.';
9
10
 
@@ -86,13 +87,8 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Perguntas Frequentes',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliografia',
92
- bibliography: [
93
- { name: 'Projector Central — Throw Distance Calculator', url: 'https://www.projectorcentral.com/projection-calculator-pro.cfm' },
94
- { name: 'Guia de Distância Epson', url: 'https://epson.com/' },
95
- ],
91
+ bibliography,
96
92
  howTo: howToData,
97
93
  schemas: [faqSchema, howToSchema, appSchema],
98
94
  seo: [
@@ -121,7 +117,7 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
121
117
  title: 'O que é o Throw Ratio?',
122
118
  description: 'É a relação entre a distância de projeção e a largura da imagem. Um TR de 1.5 significa que precisa de 1.5m de distância por cada metro de largura de ecrã.',
123
119
  icon: 'mdi:ruler',
124
- points: ['TR < 1: Short Throw, ideal para espaços pequenos', 'TR 12: Padrão para salas', 'TR > 2: Long Throw, para grandes auditórios'],
120
+ points: ['TR < 1: Short Throw, ideal para espaços pequenos', 'TR 1-2: Padrão para salas', 'TR > 2: Long Throw, para grandes auditórios'],
125
121
  },
126
122
  {
127
123
  title: 'Formato e Rácio de Aspeto',
@@ -1,9 +1,10 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProjectorCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'kalkulyator-rasstoyaniya-proektora';
6
- const title = 'Калькулятор расстояния проектора Проекция и Экран';
7
+ const title = 'Калькулятор расстояния проектора: Проекция и Экран';
7
8
  const description =
8
9
  'Рассчитайте точное расстояние для установки проектора на основе желаемого размера экрана и проекционного отношения (Throw Ratio).';
9
10
 
@@ -21,7 +22,7 @@ const faqData = [
21
22
  {
22
23
  question: 'В чем разница между 16:9 и 4:3?',
23
24
  answer:
24
- '16:9 панорамный формат для современных фильмов. 4:3 классика для презентаций. Выбор правильного формата исключает большие черные полосы.',
25
+ '16:9: панорамный формат для современных фильмов. 4:3: классика для презентаций. Выбор правильного формата исключает большие черные полосы.',
25
26
  },
26
27
  {
27
28
  question: 'Важна ли высота установки проектора?',
@@ -86,13 +87,8 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Часто Задаваемые Вопросы',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Библиография',
92
- bibliography: [
93
- { name: 'Projector Central — Throw Distance Calculator', url: 'https://www.projectorcentral.com/projection-calculator-pro.cfm' },
94
- { name: 'Epson — Гид по проекции', url: 'https://epson.com/' },
95
- ],
91
+ bibliography,
96
92
  howTo: howToData,
97
93
  schemas: [faqSchema, howToSchema, appSchema],
98
94
  seo: [
@@ -103,7 +99,7 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
103
99
  },
104
100
  {
105
101
  type: 'paragraph',
106
- html: 'Установка проектора "на глаз" может испортить всё. Слишком близко экран мал; слишком далеко не хватит яркости. Ключ к успеху <strong>Throw Ratio</strong>.',
102
+ html: 'Установка проектора "на глаз" может испортить всё. Слишком близко: экран мал; слишком далеко: не хватит яркости. Ключ к успеху: <strong>Throw Ratio</strong>.',
107
103
  },
108
104
  {
109
105
  type: 'stats',
@@ -121,11 +117,11 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
121
117
  title: 'Что такое Throw Ratio?',
122
118
  description: 'Соотношение расстояния к ширине изображения. TR 1.5 означает 1.5м дистанции на каждый метр ширины экрана.',
123
119
  icon: 'mdi:ruler',
124
- points: ['TR < 1: Short Throw, для малых комнат', 'TR 12: Стандарт для гостиных', 'TR > 2: Long Throw, для залов'],
120
+ points: ['TR < 1: Short Throw, для малых комнат', 'TR 1-2: Стандарт для гостиных', 'TR > 2: Long Throw, для залов'],
125
121
  },
126
122
  {
127
123
  title: 'Формат (Aspect Ratio)',
128
- description: 'Формат задает пропорции. Ошибка ведет к черным полосам и «съедает» яркость.',
124
+ description: 'Формат задает пропорции. Ошибка ведет к черным полосам и "съедает" яркость.',
129
125
  icon: 'mdi:aspect-ratio',
130
126
  points: ['16:9: стандарт HD/4K для дома', '21:9: панорамный формат кино', '4:3: формат для офиса'],
131
127
  },
@@ -1,9 +1,10 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProjectorCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'projektor-avstands-kalkylator';
6
- const title = 'Projektor Avståndskalkylator Kastförhållande och Skärm';
7
+ const title = 'Projektor Avståndskalkylator: Kastförhållande och Skärm';
7
8
  const description =
8
9
  'Beräkna exakt avstånd för att installera din projektor baserat på önskad skärmstorlek och kastförhållande (Throw Ratio).';
9
10
 
@@ -86,13 +87,8 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Vanliga Frågor',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Referenser',
92
- bibliography: [
93
- { name: 'Projector Central — Throw Distance Calculator', url: 'https://www.projectorcentral.com/projection-calculator-pro.cfm' },
94
- { name: 'Epson — Guide för Projektionsavstånd', url: 'https://epson.com/' },
95
- ],
91
+ bibliography,
96
92
  howTo: howToData,
97
93
  schemas: [faqSchema, howToSchema, appSchema],
98
94
  seo: [
@@ -121,7 +117,7 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
121
117
  title: 'Vad är Throw Ratio?',
122
118
  description: 'Förhållandet mellan avstånd och bildbredd. TR 1.5 betyder 1.5m avstånd per meter skärmbredd.',
123
119
  icon: 'mdi:ruler',
124
- points: ['TR < 1: Short Throw, för små rum', 'TR 12: Standard för vardagsrum', 'TR > 2: Long Throw, för hörsalar'],
120
+ points: ['TR < 1: Short Throw, för små rum', 'TR 1-2: Standard för vardagsrum', 'TR > 2: Long Throw, för hörsalar'],
125
121
  },
126
122
  {
127
123
  title: 'Format och Proproportioner',
@@ -1,9 +1,10 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProjectorCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'projektsiyon-mesafe-hesaplama';
6
- const title = 'Projeksiyon Mesafe Hesaplayıcı Atım Oranı';
7
+ const title = 'Projeksiyon Mesafe Hesaplayıcı: Atım Oranı';
7
8
  const description =
8
9
  'İstediğiniz ekran boyutuna ve projeksiyon cihazınızın Atım Oranı\'na (Throw Ratio) göre tam kurulum mesafesini hesaplayın.';
9
10
 
@@ -86,13 +87,8 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Sıkça Sorulan Sorular',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Kaynakça',
92
- bibliography: [
93
- { name: 'Projector Central — Throw Distance Calculator', url: 'https://www.projectorcentral.com/projection-calculator-pro.cfm' },
94
- { name: 'Epson Kurulum Rehberi', url: 'https://epson.com/' },
95
- ],
91
+ bibliography,
96
92
  howTo: howToData,
97
93
  schemas: [faqSchema, howToSchema, appSchema],
98
94
  seo: [
@@ -121,7 +117,7 @@ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
121
117
  title: 'Atım Oranı (Throw Ratio) Nedir?',
122
118
  description: 'Mesafe ile genişlik arasındaki orandır. 1.5 AO, her 1 metre genişlik için 1.5 metre mesafe gerektiği anlamına gelir.',
123
119
  icon: 'mdi:ruler',
124
- points: ['AO < 1: Kısa atımlı, dar alanlar için ideal', 'AO 12: Oturma odaları için standart', 'AO > 2: Büyük salonlar için uzun atımlı'],
120
+ points: ['AO < 1: Kısa atımlı, dar alanlar için ideal', 'AO 1-2: Oturma odaları için standart', 'AO > 2: Büyük salonlar için uzun atımlı'],
125
121
  },
126
122
  {
127
123
  title: 'Format ve En Boy Oranı',