@jjlmoya/utils-home 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/package.json +61 -60
  2. package/src/tests/i18n_coverage.test.ts +36 -0
  3. package/src/tests/schemas_fulfillment.test.ts +23 -0
  4. package/src/tests/slug_uniqueness.test.ts +81 -0
  5. package/src/tests/title_quality.test.ts +55 -0
  6. package/src/tool/dewPointCalculator/i18n/de.ts +178 -0
  7. package/src/tool/dewPointCalculator/i18n/en.ts +1 -1
  8. package/src/tool/dewPointCalculator/i18n/es.ts +1 -1
  9. package/src/tool/dewPointCalculator/i18n/fr.ts +1 -1
  10. package/src/tool/dewPointCalculator/i18n/id.ts +178 -0
  11. package/src/tool/dewPointCalculator/i18n/it.ts +178 -0
  12. package/src/tool/dewPointCalculator/i18n/ja.ts +178 -0
  13. package/src/tool/dewPointCalculator/i18n/ko.ts +178 -0
  14. package/src/tool/dewPointCalculator/i18n/nl.ts +178 -0
  15. package/src/tool/dewPointCalculator/i18n/pl.ts +178 -0
  16. package/src/tool/dewPointCalculator/i18n/pt.ts +178 -0
  17. package/src/tool/dewPointCalculator/i18n/ru.ts +178 -0
  18. package/src/tool/dewPointCalculator/i18n/sv.ts +178 -0
  19. package/src/tool/dewPointCalculator/i18n/tr.ts +178 -0
  20. package/src/tool/dewPointCalculator/i18n/zh.ts +178 -0
  21. package/src/tool/dewPointCalculator/index.ts +16 -6
  22. package/src/tool/heatingComparator/i18n/de.ts +340 -0
  23. package/src/tool/heatingComparator/i18n/id.ts +324 -0
  24. package/src/tool/heatingComparator/i18n/it.ts +336 -0
  25. package/src/tool/heatingComparator/i18n/ja.ts +311 -0
  26. package/src/tool/heatingComparator/i18n/ko.ts +307 -0
  27. package/src/tool/heatingComparator/i18n/nl.ts +336 -0
  28. package/src/tool/heatingComparator/i18n/pl.ts +311 -0
  29. package/src/tool/heatingComparator/i18n/pt.ts +336 -0
  30. package/src/tool/heatingComparator/i18n/ru.ts +307 -0
  31. package/src/tool/heatingComparator/i18n/sv.ts +311 -0
  32. package/src/tool/heatingComparator/i18n/tr.ts +324 -0
  33. package/src/tool/heatingComparator/i18n/zh.ts +307 -0
  34. package/src/tool/heatingComparator/index.ts +13 -1
  35. package/src/tool/ledSavingCalculator/i18n/de.ts +208 -0
  36. package/src/tool/ledSavingCalculator/i18n/fr.ts +1 -1
  37. package/src/tool/ledSavingCalculator/i18n/id.ts +208 -0
  38. package/src/tool/ledSavingCalculator/i18n/it.ts +208 -0
  39. package/src/tool/ledSavingCalculator/i18n/ja.ts +208 -0
  40. package/src/tool/ledSavingCalculator/i18n/ko.ts +208 -0
  41. package/src/tool/ledSavingCalculator/i18n/nl.ts +208 -0
  42. package/src/tool/ledSavingCalculator/i18n/pl.ts +208 -0
  43. package/src/tool/ledSavingCalculator/i18n/pt.ts +208 -0
  44. package/src/tool/ledSavingCalculator/i18n/ru.ts +208 -0
  45. package/src/tool/ledSavingCalculator/i18n/sv.ts +208 -0
  46. package/src/tool/ledSavingCalculator/i18n/tr.ts +208 -0
  47. package/src/tool/ledSavingCalculator/i18n/zh.ts +208 -0
  48. package/src/tool/ledSavingCalculator/index.ts +16 -7
  49. package/src/tool/projectorCalculator/i18n/de.ts +180 -0
  50. package/src/tool/projectorCalculator/i18n/fr.ts +1 -1
  51. package/src/tool/projectorCalculator/i18n/id.ts +181 -0
  52. package/src/tool/projectorCalculator/i18n/it.ts +180 -0
  53. package/src/tool/projectorCalculator/i18n/ja.ts +180 -0
  54. package/src/tool/projectorCalculator/i18n/ko.ts +180 -0
  55. package/src/tool/projectorCalculator/i18n/nl.ts +180 -0
  56. package/src/tool/projectorCalculator/i18n/pl.ts +180 -0
  57. package/src/tool/projectorCalculator/i18n/pt.ts +180 -0
  58. package/src/tool/projectorCalculator/i18n/ru.ts +180 -0
  59. package/src/tool/projectorCalculator/i18n/sv.ts +180 -0
  60. package/src/tool/projectorCalculator/i18n/tr.ts +180 -0
  61. package/src/tool/projectorCalculator/i18n/zh.ts +180 -0
  62. package/src/tool/projectorCalculator/index.ts +15 -6
  63. package/src/tool/qrGenerator/i18n/de.ts +203 -0
  64. package/src/tool/qrGenerator/i18n/id.ts +151 -0
  65. package/src/tool/qrGenerator/i18n/it.ts +174 -0
  66. package/src/tool/qrGenerator/i18n/ja.ts +151 -0
  67. package/src/tool/qrGenerator/i18n/ko.ts +151 -0
  68. package/src/tool/qrGenerator/i18n/nl.ts +151 -0
  69. package/src/tool/qrGenerator/i18n/pl.ts +151 -0
  70. package/src/tool/qrGenerator/i18n/pt.ts +151 -0
  71. package/src/tool/qrGenerator/i18n/ru.ts +151 -0
  72. package/src/tool/qrGenerator/i18n/sv.ts +151 -0
  73. package/src/tool/qrGenerator/i18n/tr.ts +151 -0
  74. package/src/tool/qrGenerator/i18n/zh.ts +151 -0
  75. package/src/tool/qrGenerator/index.ts +17 -9
  76. package/src/tool/solarCalculator/i18n/de.ts +146 -0
  77. package/src/tool/solarCalculator/i18n/id.ts +126 -0
  78. package/src/tool/solarCalculator/i18n/it.ts +126 -0
  79. package/src/tool/solarCalculator/i18n/ja.ts +126 -0
  80. package/src/tool/solarCalculator/i18n/ko.ts +121 -0
  81. package/src/tool/solarCalculator/i18n/nl.ts +120 -0
  82. package/src/tool/solarCalculator/i18n/pl.ts +121 -0
  83. package/src/tool/solarCalculator/i18n/pt.ts +126 -0
  84. package/src/tool/solarCalculator/i18n/ru.ts +110 -0
  85. package/src/tool/solarCalculator/i18n/sv.ts +110 -0
  86. package/src/tool/solarCalculator/i18n/tr.ts +120 -0
  87. package/src/tool/solarCalculator/i18n/zh.ts +121 -0
  88. package/src/tool/solarCalculator/index.ts +17 -9
  89. package/src/tool/tariffComparator/i18n/de.ts +133 -0
  90. package/src/tool/tariffComparator/i18n/id.ts +133 -0
  91. package/src/tool/tariffComparator/i18n/it.ts +133 -0
  92. package/src/tool/tariffComparator/i18n/ja.ts +133 -0
  93. package/src/tool/tariffComparator/i18n/ko.ts +133 -0
  94. package/src/tool/tariffComparator/i18n/nl.ts +133 -0
  95. package/src/tool/tariffComparator/i18n/pl.ts +133 -0
  96. package/src/tool/tariffComparator/i18n/pt.ts +133 -0
  97. package/src/tool/tariffComparator/i18n/ru.ts +106 -0
  98. package/src/tool/tariffComparator/i18n/sv.ts +111 -0
  99. package/src/tool/tariffComparator/i18n/tr.ts +133 -0
  100. package/src/tool/tariffComparator/i18n/zh.ts +133 -0
  101. package/src/tool/tariffComparator/index.ts +16 -7
  102. package/src/types.ts +1 -1
@@ -0,0 +1,180 @@
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 = 'kalkulator-odleglosci-projektora';
6
+ const title = 'Kalkulator Odległości Projektora — Rzut i Ekran';
7
+ const description =
8
+ 'Oblicz dokładną odległość montażu projektora w zależności od rozmiaru ekranu i współczynnika rzutu (Throw Ratio).';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Co to jest Throw Ratio (współczynnik rzutu)?',
13
+ answer:
14
+ 'To liczba określająca, jak duży obraz powstanie z danej odległości. Oblicza się go, dzieląc odległość od ekranu przez szerokość obrazu. Współczynnik 1.5 oznacza, że z 1.5m otrzymasz 1m szerokości obrazu.',
15
+ },
16
+ {
17
+ question: 'Jaka odległość jest potrzebna dla ekranu 100 cali?',
18
+ answer:
19
+ 'Zależy to od współczynnika rzutu projektora. Przy standardowym 1.5:1 potrzeba ok. 3.3m. Projektory krótkoogniskowe (Short Throw) osiągają to z odległości poniżej 1m.',
20
+ },
21
+ {
22
+ question: 'Jaka jest różnica między 16:9 a 4:3?',
23
+ answer:
24
+ '16:9 to format panoramiczny dla nowoczesnych filmów. 4:3 to format klasyczny dla prezentacji i biur. Wybór właściwego formatu pozwala uniknąć czarnych pasów.',
25
+ },
26
+ {
27
+ question: 'Czy wysokość montażu ma znaczenie?',
28
+ answer:
29
+ 'Tak. Projektory mają tzw. offset lub korekcję keystone. Najlepiej montować go centralnie względem górnej lub dolnej krawędzi ekranu, by uniknąć deformacji.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Sprawdź Throw Ratio',
36
+ text: 'Znajdź w instrukcji lub na pudełku wartość taką jak 1.2:1 lub 1.5-1.8:1.',
37
+ },
38
+ {
39
+ name: 'Podaj rozmiar ekranu',
40
+ text: 'Wpisz przekątną w calach lub dostępną szerokość ściany.',
41
+ },
42
+ {
43
+ name: 'Wybierz format',
44
+ text: 'Wybierz 16:9 dla filmów, 4:3 dla biura lub 21:9 dla kina panoramicznego.',
45
+ },
46
+ {
47
+ name: 'Odczytaj dystans',
48
+ text: 'Kalkulator poda dokładną odległość dla Twojego uchwytu.',
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,
66
+ 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: 'PLN' },
82
+ inLanguage: 'pl',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ faqTitle: 'Często Zadawane Pytania',
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
+ ],
96
+ howTo: howToData,
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ {
100
+ type: 'title',
101
+ text: 'Opanuj Geometrię Projekcji',
102
+ level: 2,
103
+ },
104
+ {
105
+ 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.',
107
+ },
108
+ {
109
+ type: 'stats',
110
+ items: [
111
+ { value: 'TR × W', label: 'Wzór na dystans', icon: 'mdi:projector' },
112
+ { value: '< 0.4', label: 'Ultra Short Throw', icon: 'mdi:arrow-collapse-horizontal' },
113
+ { value: '> 2.0', label: 'Long Throw', icon: 'mdi:arrow-expand-horizontal' },
114
+ ],
115
+ columns: 3,
116
+ },
117
+ {
118
+ type: 'comparative',
119
+ items: [
120
+ {
121
+ title: 'Co to jest Throw Ratio?',
122
+ 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
+ icon: 'mdi:ruler',
124
+ points: ['TR < 1: Short Throw, do małych pokoi', 'TR 1–2: Standard do salonu', 'TR > 2: Long Throw, do dużych sal'],
125
+ },
126
+ {
127
+ title: 'Format (Aspect Ratio)',
128
+ description: 'Format określa proporcje. Błędny wybór powoduje czarne pasy i mniejszą jasność.',
129
+ icon: 'mdi:aspect-ratio',
130
+ points: ['16:9: standard HD/4K domowy', '21:9: kinowy format panoramiczny', '4:3: format biurowy'],
131
+ },
132
+ ],
133
+ columns: 2,
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: 'Profesjonalna Instalacja',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'paragraph',
142
+ html: '<strong>Lens Shift vs Keystone:</strong> Jeśli projektor ma Lens Shift, używaj go zamiast cyfrowego Keystone. Keystone pogarsza rozdzielczość.',
143
+ },
144
+ {
145
+ type: 'diagnostic',
146
+ variant: 'warning',
147
+ title: 'Światło w Pokoju',
148
+ icon: 'mdi:lightbulb-on',
149
+ badge: 'Porada Eksperta',
150
+ html: '<p>W jasnych pokojach użyj ekranu z wyższym zyskiem (gain), by poprawić kontrast.</p>',
151
+ },
152
+ {
153
+ type: 'summary',
154
+ title: 'Checklista Montażu',
155
+ items: [
156
+ 'Sprawdź Throw Ratio przed wyborem miejsca.',
157
+ 'Zmierz szerokość ściany pod kątem obrazu.',
158
+ 'Wypoziomuj projektor względem ekranu.',
159
+ 'Unikaj cyfrowego Keystone: ustaw prosto urządzenie.',
160
+ 'Zlikwiduj źródła światła padające na ekran.',
161
+ ],
162
+ },
163
+ ],
164
+ ui: {
165
+ configTitle: 'Konfiguracja',
166
+ configSubtitle: 'Zdefiniuj ekran i projektor',
167
+ labelDiagonal: 'Przekątna Ekranu',
168
+ labelDiagonalUnit: 'Cale (")',
169
+ labelFormat: 'Format Obrazu',
170
+ labelThrowRatio: 'Współczynnik Rzutu (Throw Ratio)',
171
+ throwRatioHint: 'Przykładowo: 1.50 oznacza 1.5m dystansu na 1m szerokości ekranu.',
172
+ ratio169Sub: 'TV / HD',
173
+ ratio219Sub: 'Kino',
174
+ ratio43Sub: 'Biuro',
175
+ labelWidth: 'Szerokość Ekranu',
176
+ labelHeight: 'Wysokość Ekranu',
177
+ labelDistance: 'Wymagana Odległość',
178
+ simulationBadge: 'Symulacja w Czasie Rzeczywistym',
179
+ },
180
+ };
@@ -0,0 +1,180 @@
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 = 'calculadora-distancia-projetor';
6
+ const title = 'Calculadora de Distância do Projetor — Tiro e Ecrã';
7
+ const description =
8
+ 'Calcule a distância exata para instalar o seu projetor de acordo com o tamanho do ecrã pretendido e o Throw Ratio.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'O que é o Throw Ratio ou relação de tiro?',
13
+ answer:
14
+ 'É um número que define o tamanho da imagem a uma distância específica. Calcula-se dividindo a distância de projeção pela largura da imagem. Um rácio de 1.5 significa que se projetar a 1.5m, terá 1m de largura de imagem.',
15
+ },
16
+ {
17
+ question: 'A que distância devo colocar o projetor para 100 polegadas?',
18
+ answer:
19
+ 'Depende do Throw Ratio do seu projetor. Com um rácio padrão de 1.5:1, precisaria de cerca de 3.3m. Com um projetor de tiro curto (Short Throw), poderia consegui-lo a menos de 1m.',
20
+ },
21
+ {
22
+ question: 'Qual é a diferença entre 16:9 e 4:3?',
23
+ answer:
24
+ '16:9 é o formato panorâmico para filmes e séries modernas. 4:3 é o formato clássico para apresentações. Escolher o correto evita barras pretas excessivas.',
25
+ },
26
+ {
27
+ question: 'A altura da instalação é importante?',
28
+ answer:
29
+ 'Sim. Os projetores têm um deslocamento vertical (offset) ou correção trapezoidal (keystone). O ideal é instalá-lo centrado em relação ao bordo superior ou inferior do ecrã.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Consultar o Throw Ratio',
36
+ text: 'Procure no manual ou na caixa do projetor um valor como 1.2:1 ou 1.5-1.8:1.',
37
+ },
38
+ {
39
+ name: 'Definir tamanho do ecrã',
40
+ text: 'Introduza as polegadas da diagonal ou a largura disponível na sua parede.',
41
+ },
42
+ {
43
+ name: 'Escolher formato',
44
+ text: 'Selecione 16:9 para filmes, 4:3 para apresentações ou 21:9 para cinema.',
45
+ },
46
+ {
47
+ name: 'Obter a distância',
48
+ text: 'A calculadora indicará a distância exata para instalar o suporte.',
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,
66
+ 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: 'EUR' },
82
+ inLanguage: 'pt',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<ProjectorCalculatorUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ faqTitle: 'Perguntas Frequentes',
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
+ ],
96
+ howTo: howToData,
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ {
100
+ type: 'title',
101
+ text: 'Domine a Geometria de Projeção',
102
+ level: 2,
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: 'Instalar um projetor a olho pode arruinar a experiência. A chave está no <strong>Throw Ratio</strong>, um número que define exatamente a relação entre distância e tamanho de imagem.',
107
+ },
108
+ {
109
+ type: 'stats',
110
+ items: [
111
+ { value: 'TR × W', label: 'Fórmula de Distância', icon: 'mdi:projector' },
112
+ { value: '< 0.4', label: 'Ultra Short Throw', icon: 'mdi:arrow-collapse-horizontal' },
113
+ { value: '> 2.0', label: 'Long Throw', icon: 'mdi:arrow-expand-horizontal' },
114
+ ],
115
+ columns: 3,
116
+ },
117
+ {
118
+ type: 'comparative',
119
+ items: [
120
+ {
121
+ title: 'O que é o Throw Ratio?',
122
+ 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
+ icon: 'mdi:ruler',
124
+ 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
+ },
126
+ {
127
+ title: 'Formato e Rácio de Aspeto',
128
+ description: 'O formato determina as proporções da imagem. Usar o formato incorreto desperdiça brilho e gera barras pretas.',
129
+ icon: 'mdi:aspect-ratio',
130
+ points: ['16:9: padrão HD/4K para cinema em casa', '21:9: formato cinemascope para filmes', '4:3: para apresentações de escritório'],
131
+ },
132
+ ],
133
+ columns: 2,
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: 'Instalação Profissional',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'paragraph',
142
+ html: '<strong>Lens Shift vs Keystone:</strong> Se o seu projetor tem Lens Shift, use-o sempre em vez do Keystone digital. O Keystone reduz a resolução efetiva.',
143
+ },
144
+ {
145
+ type: 'diagnostic',
146
+ variant: 'warning',
147
+ title: 'Luz Ambiente',
148
+ icon: 'mdi:lightbulb-on',
149
+ badge: 'Dica Pro',
150
+ html: '<p>Em salas com luz ambiente, use um ecrã de alto ganho para compensar a perda de contraste.</p>',
151
+ },
152
+ {
153
+ type: 'summary',
154
+ title: 'Checklist de Instalação',
155
+ items: [
156
+ 'Anote o Throw Ratio antes de escolher a localização.',
157
+ 'Verifique o espaço disponível na parede.',
158
+ 'Instale o projetor centrado em relação ao ecrã.',
159
+ 'Evite o Keystone: prefira o ajuste físico.',
160
+ 'Evite luz direta a apontar para o ecrã.',
161
+ ],
162
+ },
163
+ ],
164
+ ui: {
165
+ configTitle: 'Configuração',
166
+ configSubtitle: 'Defina o seu ecrã e projetor',
167
+ labelDiagonal: 'Diagonal do Ecrã',
168
+ labelDiagonalUnit: 'Polegadas (")',
169
+ labelFormat: 'Formato',
170
+ labelThrowRatio: 'Rácio de Tiro (Throw Ratio)',
171
+ throwRatioHint: 'Exemplo: 1.50 significa que para 1m de largura, precisa de 1.5m de distância.',
172
+ ratio169Sub: 'TV / HD',
173
+ ratio219Sub: 'Cinema',
174
+ ratio43Sub: 'Retro',
175
+ labelWidth: 'Largura Ecrã',
176
+ labelHeight: 'Altura Ecrã',
177
+ labelDistance: 'Distância Requerida',
178
+ simulationBadge: 'Simulação em Tempo Real',
179
+ },
180
+ };
@@ -0,0 +1,180 @@
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 = 'kalkulyator-rasstoyaniya-proektora';
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: 'Узнайте Throw Ratio',
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,
66
+ 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: 'RUB' },
82
+ inLanguage: 'ru',
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 — Throw Distance Calculator', 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: 'Что такое Throw Ratio?',
122
+ description: 'Соотношение расстояния к ширине изображения. TR 1.5 означает 1.5м дистанции на каждый метр ширины экрана.',
123
+ icon: 'mdi:ruler',
124
+ points: ['TR < 1: Short Throw, для малых комнат', 'TR 1–2: Стандарт для гостиных', 'TR > 2: Long Throw, для залов'],
125
+ },
126
+ {
127
+ title: 'Формат (Aspect Ratio)',
128
+ description: 'Формат задает пропорции. Ошибка ведет к черным полосам и «съедает» яркость.',
129
+ icon: 'mdi:aspect-ratio',
130
+ points: ['16:9: стандарт HD/4K для дома', '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 Keystone:</strong> Если есть Lens Shift (сдвиг линз), используйте его. Он не портит разрешение в отличие от цифровой коррекции Keystone.',
143
+ },
144
+ {
145
+ type: 'diagnostic',
146
+ variant: 'warning',
147
+ title: 'Свет в комнате',
148
+ icon: 'mdi:lightbulb-on',
149
+ badge: 'Pro Tip',
150
+ html: '<p>В светлых помещениях используйте экраны с высоким коэффициентом усиления (Gain > 1.0).</p>',
151
+ },
152
+ {
153
+ type: 'summary',
154
+ title: 'Чек лист установки',
155
+ items: [
156
+ 'Проверьте Throw Ratio перед тем как сверлить стену.',
157
+ 'Замерьте свободное место на стене.',
158
+ 'Выровняйте проектор по центру экрана.',
159
+ 'Избегайте цифрового Keystone: лучше поправьте физически.',
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.5м дистанции на 1м ширины экрана.',
172
+ ratio169Sub: 'ТВ / HD',
173
+ ratio219Sub: 'Кино',
174
+ ratio43Sub: 'Ретро',
175
+ labelWidth: 'Ширина экрана',
176
+ labelHeight: 'Высота экрана',
177
+ labelDistance: 'Нужная дистанция',
178
+ simulationBadge: 'Живая симуляция',
179
+ },
180
+ };