@jjlmoya/utils-developer 1.30.0 → 1.31.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 (140) hide show
  1. package/package.json +70 -70
  2. package/src/category/seo.astro +1 -1
  3. package/src/components/PreviewNavSidebar.astro +1 -1
  4. package/src/components/PreviewToolbar.astro +1 -1
  5. package/src/data.ts +1 -1
  6. package/src/env.d.ts +1 -1
  7. package/src/layouts/PreviewLayout.astro +1 -1
  8. package/src/pages/[locale]/[slug].astro +162 -162
  9. package/src/pages/index.astro +1 -1
  10. package/src/tests/entry_contract.test.ts +8 -2
  11. package/src/tests/faq_count.test.ts +1 -1
  12. package/src/tests/i18n_coverage.test.ts +2 -6
  13. package/src/tests/inverted_punctuation.test.ts +113 -113
  14. package/src/tests/mocks/astro_mock.js +1 -1
  15. package/src/tests/no_h1_in_components.test.ts +1 -1
  16. package/src/tests/promote_this_website_i18n.test.ts +33 -0
  17. package/src/tests/slug_language_code_format.test.ts +25 -25
  18. package/src/tests/slug_uniqueness.test.ts +86 -86
  19. package/src/tests/tool_validation.test.ts +15 -15
  20. package/src/tool/aspectRatio/i18n/de.ts +164 -164
  21. package/src/tool/aspectRatio/i18n/ja.ts +1 -1
  22. package/src/tool/aspectRatio/i18n/ko.ts +1 -1
  23. package/src/tool/aspectRatio/i18n/pl.ts +164 -164
  24. package/src/tool/aspectRatio/i18n/ru.ts +164 -164
  25. package/src/tool/aspectRatio/i18n/zh.ts +165 -165
  26. package/src/tool/aspectRatio/seo.astro +15 -15
  27. package/src/tool/calculadoraTiempoDatos/i18n/de.ts +143 -143
  28. package/src/tool/calculadoraTiempoDatos/i18n/ja.ts +1 -1
  29. package/src/tool/calculadoraTiempoDatos/i18n/ko.ts +1 -1
  30. package/src/tool/calculadoraTiempoDatos/i18n/pl.ts +143 -143
  31. package/src/tool/calculadoraTiempoDatos/i18n/ru.ts +144 -144
  32. package/src/tool/calculadoraTiempoDatos/i18n/sv.ts +143 -143
  33. package/src/tool/calculadoraTiempoDatos/i18n/zh.ts +144 -144
  34. package/src/tool/calculadoraTiempoDatos/seo.astro +15 -15
  35. package/src/tool/colorConverter/i18n/de.ts +120 -120
  36. package/src/tool/colorConverter/i18n/ja.ts +1 -1
  37. package/src/tool/colorConverter/i18n/ko.ts +1 -1
  38. package/src/tool/colorConverter/i18n/ru.ts +120 -120
  39. package/src/tool/colorConverter/i18n/zh.ts +1 -1
  40. package/src/tool/colorConverter/seo.astro +15 -15
  41. package/src/tool/conversorExcelCsvHtml/i18n/ja.ts +1 -1
  42. package/src/tool/conversorExcelCsvHtml/i18n/ko.ts +1 -1
  43. package/src/tool/conversorExcelCsvHtml/i18n/pl.ts +124 -124
  44. package/src/tool/conversorExcelCsvHtml/i18n/ru.ts +124 -124
  45. package/src/tool/conversorExcelCsvHtml/i18n/zh.ts +125 -125
  46. package/src/tool/conversorExcelCsvHtml/seo.astro +15 -15
  47. package/src/tool/cronGenerator/i18n/ja.ts +1 -1
  48. package/src/tool/cronGenerator/i18n/ko.ts +1 -1
  49. package/src/tool/cronGenerator/i18n/zh.ts +183 -183
  50. package/src/tool/cronGenerator/seo.astro +15 -15
  51. package/src/tool/cssSpecificityCalculator/i18n/ja.ts +1 -1
  52. package/src/tool/cssSpecificityCalculator/i18n/ko.ts +1 -1
  53. package/src/tool/cssSpecificityCalculator/i18n/zh.ts +1 -1
  54. package/src/tool/cssSpecificityCalculator/seo.astro +15 -15
  55. package/src/tool/cssToInlineConverter/i18n/ja.ts +1 -1
  56. package/src/tool/cssToInlineConverter/i18n/ko.ts +1 -1
  57. package/src/tool/cssToInlineConverter/i18n/zh.ts +1 -1
  58. package/src/tool/cssToInlineConverter/seo.astro +15 -15
  59. package/src/tool/duplicateCssRemover/i18n/ja.ts +1 -1
  60. package/src/tool/duplicateCssRemover/i18n/ko.ts +1 -1
  61. package/src/tool/duplicateCssRemover/i18n/zh.ts +1 -1
  62. package/src/tool/duplicateCssRemover/seo.astro +15 -15
  63. package/src/tool/generadorSecurityTxt/i18n/ja.ts +1 -1
  64. package/src/tool/generadorSecurityTxt/i18n/ko.ts +1 -1
  65. package/src/tool/generadorSecurityTxt/i18n/zh.ts +1 -1
  66. package/src/tool/generadorSecurityTxt/seo.astro +15 -15
  67. package/src/tool/hashGenerator/i18n/ja.ts +1 -1
  68. package/src/tool/hashGenerator/i18n/ko.ts +1 -1
  69. package/src/tool/hashGenerator/seo.astro +15 -15
  70. package/src/tool/inspectorCertificadosSsl/i18n/ja.ts +1 -1
  71. package/src/tool/inspectorCertificadosSsl/i18n/ko.ts +1 -1
  72. package/src/tool/inspectorCertificadosSsl/i18n/zh.ts +1 -1
  73. package/src/tool/inspectorCertificadosSsl/seo.astro +15 -15
  74. package/src/tool/jsonFormatter/seo.astro +15 -15
  75. package/src/tool/jwtDecoder/i18n/es.ts +248 -248
  76. package/src/tool/jwtDecoder/i18n/fr.ts +248 -248
  77. package/src/tool/jwtDecoder/i18n/tr.ts +248 -248
  78. package/src/tool/keycode/seo.astro +15 -15
  79. package/src/tool/llmCostCalculator/i18n/fr.ts +149 -149
  80. package/src/tool/llmCostCalculator/i18n/ja.ts +1 -1
  81. package/src/tool/llmCostCalculator/i18n/ko.ts +1 -1
  82. package/src/tool/llmCostCalculator/seo.astro +15 -15
  83. package/src/tool/mobileMockupGenerator/i18n/ja.ts +1 -1
  84. package/src/tool/mobileMockupGenerator/i18n/ko.ts +1 -1
  85. package/src/tool/mobileMockupGenerator/i18n/zh.ts +1 -1
  86. package/src/tool/mobileMockupGenerator/seo.astro +15 -15
  87. package/src/tool/musicalTypography/i18n/ja.ts +1 -1
  88. package/src/tool/musicalTypography/i18n/ko.ts +1 -1
  89. package/src/tool/musicalTypography/i18n/zh.ts +1 -1
  90. package/src/tool/musicalTypography/seo.astro +15 -15
  91. package/src/tool/placeholderGenerator/i18n/ja.ts +1 -1
  92. package/src/tool/placeholderGenerator/i18n/ko.ts +1 -1
  93. package/src/tool/placeholderGenerator/i18n/zh.ts +1 -1
  94. package/src/tool/placeholderGenerator/seo.astro +15 -15
  95. package/src/tool/promoteThisWebsite/entry.ts +13 -0
  96. package/src/tool/promoteThisWebsite/i18n/de.ts +95 -0
  97. package/src/tool/promoteThisWebsite/i18n/fr.ts +95 -0
  98. package/src/tool/promoteThisWebsite/i18n/id.ts +95 -0
  99. package/src/tool/promoteThisWebsite/i18n/it.ts +95 -0
  100. package/src/tool/promoteThisWebsite/i18n/ja.ts +95 -0
  101. package/src/tool/promoteThisWebsite/i18n/ko.ts +95 -0
  102. package/src/tool/promoteThisWebsite/i18n/nl.ts +95 -0
  103. package/src/tool/promoteThisWebsite/i18n/pl.ts +95 -0
  104. package/src/tool/promoteThisWebsite/i18n/pt.ts +95 -0
  105. package/src/tool/promoteThisWebsite/i18n/ru.ts +95 -0
  106. package/src/tool/promoteThisWebsite/i18n/sv.ts +95 -0
  107. package/src/tool/promoteThisWebsite/i18n/tr.ts +95 -0
  108. package/src/tool/promoteThisWebsite/i18n/zh.ts +95 -0
  109. package/src/tool/promptLibrary/i18n/ja.ts +1 -1
  110. package/src/tool/promptLibrary/i18n/ko.ts +1 -1
  111. package/src/tool/promptLibrary/i18n/zh.ts +1 -1
  112. package/src/tool/promptLibrary/seo.astro +15 -15
  113. package/src/tool/readabilityCalculator/i18n/ja.ts +1 -1
  114. package/src/tool/readabilityCalculator/i18n/ko.ts +1 -1
  115. package/src/tool/readabilityCalculator/i18n/zh.ts +1 -1
  116. package/src/tool/readabilityCalculator/seo.astro +15 -15
  117. package/src/tool/serpPixelSimulator/entry.ts +30 -30
  118. package/src/tool/serpPixelSimulator/i18n/en.ts +211 -211
  119. package/src/tool/serpPixelSimulator/i18n/fr.ts +214 -214
  120. package/src/tool/serpPixelSimulator/i18n/ru.ts +214 -214
  121. package/src/tool/serpPixelSimulator/logic.ts +18 -18
  122. package/src/tool/serpPixelSimulator/serp-pixel-simulator.css +195 -195
  123. package/src/tool/svgSanitizer/i18n/ja.ts +1 -1
  124. package/src/tool/svgSanitizer/i18n/ko.ts +1 -1
  125. package/src/tool/svgSanitizer/seo.astro +15 -15
  126. package/src/tool/svgToCss/i18n/ja.ts +1 -1
  127. package/src/tool/svgToCss/i18n/ko.ts +1 -1
  128. package/src/tool/svgToCss/seo.astro +15 -15
  129. package/src/tool/urlCleaner/i18n/ja.ts +1 -1
  130. package/src/tool/urlCleaner/i18n/ko.ts +1 -1
  131. package/src/tool/urlCleaner/i18n/zh.ts +1 -1
  132. package/src/tool/urlCleaner/seo.astro +15 -15
  133. package/src/tool/urlEncoderDecoder/i18n/es.ts +146 -146
  134. package/src/tool/urlEncoderDecoder/i18n/ko.ts +1 -1
  135. package/src/tool/urlEncoderDecoder/seo.astro +15 -15
  136. package/src/tool/utmGenerator/i18n/ja.ts +1 -1
  137. package/src/tool/utmGenerator/i18n/ko.ts +1 -1
  138. package/src/tool/utmGenerator/i18n/zh.ts +1 -1
  139. package/src/tool/utmGenerator/seo.astro +15 -15
  140. package/src/types.ts +1 -1
@@ -1,165 +1,165 @@
1
1
  import { bibliography } from '../bibliography';
2
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
3
- import type { ToolLocaleContent } from '../../../types';
4
- import type { AspectRatioUI } from '../ui';
5
-
6
- const slug = 'kalkulyator-sootnosheniya-storon';
7
- const title = 'Калькулятор соотношения сторон в пикселях. Пропорции онлайн';
8
- const description =
9
- 'Рассчитывайте разрешения для изображений, видео и веб-дизайна, сохраняя точные пропорции, чтобы избежать искажения графики. Поддержка форматов 16:9, 4:3, 21:9 и пользовательских настроек.';
10
-
11
- const faqData = [
12
- {
13
- question: 'Что такое соотношение сторон (Aspect Ratio)?',
14
- answer:
15
- 'Соотношение сторон описывает геометрическую связь между шириной и высотой изображения или экрана. Оно представляется в виде двух чисел, разделенных двоеточием (например, 16:9), указывая, как высота пропорционально изменяется относительно ширины.',
16
- },
17
- {
18
- question: 'Почему важно соблюдать правильные пропорции?',
19
- answer:
20
- 'Игнорирование соотношения сторон приводит к сплющенным или растянутым изображениям, появлению нежелательных черных полос (letterboxing) в видео и нарушению макета веб-компонентов на экранах разного размера. Соблюдение правильных пропорций - залог профессионального вида.',
21
- },
22
- {
23
- question: 'Как рассчитать высоту на основе ширины при заданном соотношении?',
24
- answer:
25
- 'Формула такова: Высота = Ширина × (Число высоты / Число ширины). Например, для ширины 1280px при соотношении 16:9 высота составит: 1280 × (9/16) = 720px.',
26
- },
27
- {
28
- question: 'Какое стандартное соотношение сторон используется для видео на YouTube?',
29
- answer:
30
- '16:9 - это стандартное соотношение для YouTube и большинства современных видеоплатформ. Оно соответствует таким разрешениям, как 1280×720 (HD), 1920×1080 (Full HD) или 3840×2160 (4K UHD).',
31
- },
32
- {
33
- question: 'Какое соотношение сторон используется для вертикальных видео в соцсетях?',
34
- answer:
35
- '9:16, что является зеркальным отражением широкоэкранного формата. Это родное соотношение сторон для TikTok, Instagram Reels и YouTube Shorts, возникшее из-за вертикального использования мобильных телефонов.',
36
- },
37
- ];
38
-
39
- const howToData = [
40
- {
41
- name: 'Введите исходное соотношение',
42
- text: 'Укажите значения ширины и высоты соотношения, которое вы хотите сохранить (например, 16 и 9 для широкоэкранного формата), или выберите один из пресетов.',
43
- },
44
- {
45
- name: 'Настройте масштаб',
46
- text: 'Измените значение ширины или высоты в разделе "Реальный масштаб". Инструмент автоматически рассчитает противоположное значение для сохранения пропорций.',
47
- },
48
- {
49
- name: 'Проверьте результат',
50
- text: 'Панель предварительного просмотра показывает итоговую форму в пропорциональном масштабе с упрощенным соотношением и рассчитанным разрешением.',
51
- },
52
- {
53
- name: 'Примените в своем проекте',
54
- text: 'Скопируйте рассчитанные значения для использования в CSS (aspect-ratio: 16 / 9), при экспорте видео или в настройках вашего графического редактора.',
55
- },
56
- ];
57
-
58
- const faqSchema: WithContext<FAQPage> = {
59
- '@context': 'https://schema.org',
60
- '@type': 'FAQPage',
61
- mainEntity: faqData.map((item) => ({
62
- '@type': 'Question',
63
- name: item.question,
64
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
65
- })),
66
- };
67
-
68
- const howToSchema: WithContext<HowToThing> = {
69
- '@context': 'https://schema.org',
70
- '@type': 'HowTo',
71
- name: title,
72
- description,
73
- step: howToData.map((step, i) => ({
74
- '@type': 'HowToStep',
75
- position: i + 1,
76
- name: step.name,
77
- text: step.text,
78
- })),
79
- };
80
-
81
- const appSchema: WithContext<SoftwareApplication> = {
82
- '@context': 'https://schema.org',
83
- '@type': 'SoftwareApplication',
84
- name: title,
85
- description,
86
- applicationCategory: 'UtilityApplication',
87
- operatingSystem: 'All',
88
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
89
- inLanguage: 'ru',
90
- };
91
-
92
- const ui: AspectRatioUI = {
93
- labelConfig: 'Настройка',
94
- labelRatio: 'Исходное соотношение',
95
- labelWidth: 'Ширина',
96
- labelHeight: 'Высота',
97
- labelScale: 'Реальный масштаб',
98
- labelPixelWidth: 'Пиксели (Ширина)',
99
- labelPixelHeight: 'Пиксели (Высота)',
100
- labelPreview: 'Пропорциональный просмотр',
101
- labelStatus: 'Идеальное соотношение',
102
- labelOffline: '100% автономный инструмент',
103
- };
104
-
105
- export const content: ToolLocaleContent<AspectRatioUI> = {
106
- slug,
107
- title,
108
- description,
109
- ui,
110
- faqTitle: 'Часто задаваемые вопросы',
111
- faq: faqData,
112
- bibliographyTitle: 'Ссылки и документация',
113
- bibliography,
114
- howTo: howToData,
115
- schemas: [faqSchema, howToSchema, appSchema],
116
- seo: [
117
- {
118
- type: 'title',
119
- text: 'Что такое соотношение сторон?',
120
- level: 2,
121
- },
122
- {
123
- type: 'paragraph',
124
- html: 'В графическом дизайне, фотографии и фронтенд-разработке <strong>соотношение сторон</strong> (Aspect Ratio) описывает геометрическую связь между шириной и высотой изображения, экрана или контейнера. Обычно оно представляется двумя числами через двоеточие (например, <code>16:9</code>), указывая, как высота пропорционально изменяется в ответ на ширину.',
125
- },
126
- {
127
- type: 'paragraph',
128
- html: 'Несоблюдение соотношения сторон - частая причина сплющенных фотографий, видео с неожиданной обрезкой (letterboxing) или веб-компонентов, макет которых нарушается при просмотре на разных устройствах - от мобильных телефонов до ультрашироких мониторов.',
129
- },
130
- {
131
- type: 'title',
132
- text: 'Общепринятые стандарты в индустрии',
133
- level: 3,
134
- },
135
- {
136
- type: 'paragraph',
137
- html: 'В зависимости от вашей дисциплины вы будете постоянно сталкиваться с ограниченным набором мировых стандартов пропорций:',
138
- },
139
- {
140
- type: 'list',
141
- items: [
142
- '<strong>16:9 (Широкоэкранный):</strong> Абсолютно доминирующий формат для современных мониторов, телевизоров, видео на YouTube или стандартных разрешений высокой четкости (таких как 1920×1080 или 4K).',
143
- '<strong>9:16 (Вертикальный):</strong> Возник из-за потребления контента на мобильных устройствах (TikTok, Instagram Reels, YouTube Shorts). Точно такое же соотношение, как у широкоэкранного видео, но при физическом повороте устройства.',
144
- '<strong>4:3 (Классический):</strong> Встречается в старых телевизорах и мониторах, а также в аналоговых и специализированных цифровых камерах. Его почти квадратный вид привлекает внимание к центральной оси композиции.',
145
- ],
146
- },
147
- {
148
- type: 'title',
149
- text: 'Веб-разработка и свойство CSS aspect-ratio',
150
- level: 3,
151
- },
152
- {
153
- type: 'paragraph',
154
- html: 'Раньше в CSS использовались сложные математические системы с <strong>Padding Hack</strong> (например, <code>padding-top: 56.25%</code>) для резервирования динамического пространства для YouTube iframe или фоновых изображений, чтобы избежать скачков контента (Cumulative Layout Shift, CLS) при загрузке страницы.',
155
- },
156
- {
157
- type: 'paragraph',
158
- html: 'Сейчас все современные макеты напрямую применяют свойство <code>aspect-ratio: 16 / 9;</code>, создавая семантичный код и позволяя браузеру автоматически рассчитывать недостающее измерение на основе оригинальной ширины, заданной через Grid или Flexbox.',
159
- },
160
- {
161
- type: 'paragraph',
162
- html: 'Этот локальный калькулятор пикселей позволяет мгновенно рассчитать масштаб дизайна, что защитит ваши макеты от критических ошибок в настройках.',
163
- },
164
- ],
165
- };
2
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
3
+ import type { ToolLocaleContent } from '../../../types';
4
+ import type { AspectRatioUI } from '../ui';
5
+
6
+ const slug = 'kalkulyator-sootnosheniya-storon';
7
+ const title = 'Калькулятор соотношения сторон в пикселях. Пропорции онлайн';
8
+ const description =
9
+ 'Рассчитывайте разрешения для изображений, видео и веб-дизайна, сохраняя точные пропорции, чтобы избежать искажения графики. Поддержка форматов 16:9, 4:3, 21:9 и пользовательских настроек.';
10
+
11
+ const faqData = [
12
+ {
13
+ question: 'Что такое соотношение сторон (Aspect Ratio)?',
14
+ answer:
15
+ 'Соотношение сторон описывает геометрическую связь между шириной и высотой изображения или экрана. Оно представляется в виде двух чисел, разделенных двоеточием (например, 16:9), указывая, как высота пропорционально изменяется относительно ширины.',
16
+ },
17
+ {
18
+ question: 'Почему важно соблюдать правильные пропорции?',
19
+ answer:
20
+ 'Игнорирование соотношения сторон приводит к сплющенным или растянутым изображениям, появлению нежелательных черных полос (letterboxing) в видео и нарушению макета веб-компонентов на экранах разного размера. Соблюдение правильных пропорций - залог профессионального вида.',
21
+ },
22
+ {
23
+ question: 'Как рассчитать высоту на основе ширины при заданном соотношении?',
24
+ answer:
25
+ 'Формула такова: Высота = Ширина × (Число высоты / Число ширины). Например, для ширины 1280px при соотношении 16:9 высота составит: 1280 × (9/16) = 720px.',
26
+ },
27
+ {
28
+ question: 'Какое стандартное соотношение сторон используется для видео на YouTube?',
29
+ answer:
30
+ '16:9 - это стандартное соотношение для YouTube и большинства современных видеоплатформ. Оно соответствует таким разрешениям, как 1280×720 (HD), 1920×1080 (Full HD) или 3840×2160 (4K UHD).',
31
+ },
32
+ {
33
+ question: 'Какое соотношение сторон используется для вертикальных видео в соцсетях?',
34
+ answer:
35
+ '9:16, что является зеркальным отражением широкоэкранного формата. Это родное соотношение сторон для TikTok, Instagram Reels и YouTube Shorts, возникшее из-за вертикального использования мобильных телефонов.',
36
+ },
37
+ ];
38
+
39
+ const howToData = [
40
+ {
41
+ name: 'Введите исходное соотношение',
42
+ text: 'Укажите значения ширины и высоты соотношения, которое вы хотите сохранить (например, 16 и 9 для широкоэкранного формата), или выберите один из пресетов.',
43
+ },
44
+ {
45
+ name: 'Настройте масштаб',
46
+ text: 'Измените значение ширины или высоты в разделе "Реальный масштаб". Инструмент автоматически рассчитает противоположное значение для сохранения пропорций.',
47
+ },
48
+ {
49
+ name: 'Проверьте результат',
50
+ text: 'Панель предварительного просмотра показывает итоговую форму в пропорциональном масштабе с упрощенным соотношением и рассчитанным разрешением.',
51
+ },
52
+ {
53
+ name: 'Примените в своем проекте',
54
+ text: 'Скопируйте рассчитанные значения для использования в CSS (aspect-ratio: 16 / 9), при экспорте видео или в настройках вашего графического редактора.',
55
+ },
56
+ ];
57
+
58
+ const faqSchema: WithContext<FAQPage> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'FAQPage',
61
+ mainEntity: faqData.map((item) => ({
62
+ '@type': 'Question',
63
+ name: item.question,
64
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
65
+ })),
66
+ };
67
+
68
+ const howToSchema: WithContext<HowToThing> = {
69
+ '@context': 'https://schema.org',
70
+ '@type': 'HowTo',
71
+ name: title,
72
+ description,
73
+ step: howToData.map((step, i) => ({
74
+ '@type': 'HowToStep',
75
+ position: i + 1,
76
+ name: step.name,
77
+ text: step.text,
78
+ })),
79
+ };
80
+
81
+ const appSchema: WithContext<SoftwareApplication> = {
82
+ '@context': 'https://schema.org',
83
+ '@type': 'SoftwareApplication',
84
+ name: title,
85
+ description,
86
+ applicationCategory: 'UtilityApplication',
87
+ operatingSystem: 'All',
88
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
89
+ inLanguage: 'ru',
90
+ };
91
+
92
+ const ui: AspectRatioUI = {
93
+ labelConfig: 'Настройка',
94
+ labelRatio: 'Исходное соотношение',
95
+ labelWidth: 'Ширина',
96
+ labelHeight: 'Высота',
97
+ labelScale: 'Реальный масштаб',
98
+ labelPixelWidth: 'Пиксели (Ширина)',
99
+ labelPixelHeight: 'Пиксели (Высота)',
100
+ labelPreview: 'Пропорциональный просмотр',
101
+ labelStatus: 'Идеальное соотношение',
102
+ labelOffline: '100% автономный инструмент',
103
+ };
104
+
105
+ export const content: ToolLocaleContent<AspectRatioUI> = {
106
+ slug,
107
+ title,
108
+ description,
109
+ ui,
110
+ faqTitle: 'Часто задаваемые вопросы',
111
+ faq: faqData,
112
+ bibliographyTitle: 'Ссылки и документация',
113
+ bibliography,
114
+ howTo: howToData,
115
+ schemas: [faqSchema, howToSchema, appSchema],
116
+ seo: [
117
+ {
118
+ type: 'title',
119
+ text: 'Что такое соотношение сторон?',
120
+ level: 2,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'В графическом дизайне, фотографии и фронтенд-разработке <strong>соотношение сторон</strong> (Aspect Ratio) описывает геометрическую связь между шириной и высотой изображения, экрана или контейнера. Обычно оно представляется двумя числами через двоеточие (например, <code>16:9</code>), указывая, как высота пропорционально изменяется в ответ на ширину.',
125
+ },
126
+ {
127
+ type: 'paragraph',
128
+ html: 'Несоблюдение соотношения сторон - частая причина сплющенных фотографий, видео с неожиданной обрезкой (letterboxing) или веб-компонентов, макет которых нарушается при просмотре на разных устройствах - от мобильных телефонов до ультрашироких мониторов.',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Общепринятые стандарты в индустрии',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'В зависимости от вашей дисциплины вы будете постоянно сталкиваться с ограниченным набором мировых стандартов пропорций:',
138
+ },
139
+ {
140
+ type: 'list',
141
+ items: [
142
+ '<strong>16:9 (Широкоэкранный):</strong> Абсолютно доминирующий формат для современных мониторов, телевизоров, видео на YouTube или стандартных разрешений высокой четкости (таких как 1920×1080 или 4K).',
143
+ '<strong>9:16 (Вертикальный):</strong> Возник из-за потребления контента на мобильных устройствах (TikTok, Instagram Reels, YouTube Shorts). Точно такое же соотношение, как у широкоэкранного видео, но при физическом повороте устройства.',
144
+ '<strong>4:3 (Классический):</strong> Встречается в старых телевизорах и мониторах, а также в аналоговых и специализированных цифровых камерах. Его почти квадратный вид привлекает внимание к центральной оси композиции.',
145
+ ],
146
+ },
147
+ {
148
+ type: 'title',
149
+ text: 'Веб-разработка и свойство CSS aspect-ratio',
150
+ level: 3,
151
+ },
152
+ {
153
+ type: 'paragraph',
154
+ html: 'Раньше в CSS использовались сложные математические системы с <strong>Padding Hack</strong> (например, <code>padding-top: 56.25%</code>) для резервирования динамического пространства для YouTube iframe или фоновых изображений, чтобы избежать скачков контента (Cumulative Layout Shift, CLS) при загрузке страницы.',
155
+ },
156
+ {
157
+ type: 'paragraph',
158
+ html: 'Сейчас все современные макеты напрямую применяют свойство <code>aspect-ratio: 16 / 9;</code>, создавая семантичный код и позволяя браузеру автоматически рассчитывать недостающее измерение на основе оригинальной ширины, заданной через Grid или Flexbox.',
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: 'Этот локальный калькулятор пикселей позволяет мгновенно рассчитать масштаб дизайна, что защитит ваши макеты от критических ошибок в настройках.',
163
+ },
164
+ ],
165
+ };