@jjlmoya/utils-hardware 1.3.0 → 1.6.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 (113) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +106 -0
  3. package/src/category/i18n/id.ts +106 -0
  4. package/src/category/i18n/it.ts +106 -0
  5. package/src/category/i18n/ja.ts +106 -0
  6. package/src/category/i18n/ko.ts +106 -0
  7. package/src/category/i18n/nl.ts +106 -0
  8. package/src/category/i18n/pl.ts +106 -0
  9. package/src/category/i18n/pt.ts +106 -0
  10. package/src/category/i18n/ru.ts +106 -0
  11. package/src/category/i18n/sv.ts +106 -0
  12. package/src/category/i18n/tr.ts +106 -0
  13. package/src/category/i18n/zh.ts +106 -0
  14. package/src/category/index.ts +13 -1
  15. package/src/tests/category_validation.test.ts +73 -0
  16. package/src/tests/faq_count.test.ts +1 -1
  17. package/src/tests/i18n_coverage.test.ts +36 -0
  18. package/src/tests/locale_completeness.test.ts +1 -1
  19. package/src/tests/slug_language_code_format.test.ts +23 -0
  20. package/src/tests/slug_uniqueness.test.ts +81 -0
  21. package/src/tests/title_quality.test.ts +1 -1
  22. package/src/tool/batteryHealthEstimator/i18n/de.ts +158 -0
  23. package/src/tool/batteryHealthEstimator/i18n/id.ts +158 -0
  24. package/src/tool/batteryHealthEstimator/i18n/it.ts +158 -0
  25. package/src/tool/batteryHealthEstimator/i18n/ja.ts +158 -0
  26. package/src/tool/batteryHealthEstimator/i18n/ko.ts +158 -0
  27. package/src/tool/batteryHealthEstimator/i18n/nl.ts +158 -0
  28. package/src/tool/batteryHealthEstimator/i18n/pl.ts +158 -0
  29. package/src/tool/batteryHealthEstimator/i18n/pt.ts +158 -0
  30. package/src/tool/batteryHealthEstimator/i18n/ru.ts +158 -0
  31. package/src/tool/batteryHealthEstimator/i18n/sv.ts +158 -0
  32. package/src/tool/batteryHealthEstimator/i18n/tr.ts +158 -0
  33. package/src/tool/batteryHealthEstimator/i18n/zh.ts +158 -0
  34. package/src/tool/batteryHealthEstimator/index.ts +15 -7
  35. package/src/tool/deadPixelTest/i18n/de.ts +218 -0
  36. package/src/tool/deadPixelTest/i18n/id.ts +218 -0
  37. package/src/tool/deadPixelTest/i18n/it.ts +218 -0
  38. package/src/tool/deadPixelTest/i18n/ja.ts +218 -0
  39. package/src/tool/deadPixelTest/i18n/ko.ts +218 -0
  40. package/src/tool/deadPixelTest/i18n/nl.ts +218 -0
  41. package/src/tool/deadPixelTest/i18n/pl.ts +218 -0
  42. package/src/tool/deadPixelTest/i18n/pt.ts +218 -0
  43. package/src/tool/deadPixelTest/i18n/ru.ts +218 -0
  44. package/src/tool/deadPixelTest/i18n/sv.ts +218 -0
  45. package/src/tool/deadPixelTest/i18n/tr.ts +218 -0
  46. package/src/tool/deadPixelTest/i18n/zh.ts +217 -0
  47. package/src/tool/deadPixelTest/index.ts +15 -7
  48. package/src/tool/gamepadTest/i18n/de.ts +186 -0
  49. package/src/tool/gamepadTest/i18n/id.ts +186 -0
  50. package/src/tool/gamepadTest/i18n/it.ts +186 -0
  51. package/src/tool/gamepadTest/i18n/ja.ts +186 -0
  52. package/src/tool/gamepadTest/i18n/ko.ts +186 -0
  53. package/src/tool/gamepadTest/i18n/nl.ts +186 -0
  54. package/src/tool/gamepadTest/i18n/pl.ts +186 -0
  55. package/src/tool/gamepadTest/i18n/pt.ts +186 -0
  56. package/src/tool/gamepadTest/i18n/ru.ts +186 -0
  57. package/src/tool/gamepadTest/i18n/sv.ts +186 -0
  58. package/src/tool/gamepadTest/i18n/tr.ts +186 -0
  59. package/src/tool/gamepadTest/i18n/zh.ts +186 -0
  60. package/src/tool/gamepadTest/index.ts +15 -7
  61. package/src/tool/gamepadVibrationTester/i18n/de.ts +155 -0
  62. package/src/tool/gamepadVibrationTester/i18n/id.ts +155 -0
  63. package/src/tool/gamepadVibrationTester/i18n/it.ts +155 -0
  64. package/src/tool/gamepadVibrationTester/i18n/ja.ts +155 -0
  65. package/src/tool/gamepadVibrationTester/i18n/ko.ts +155 -0
  66. package/src/tool/gamepadVibrationTester/i18n/nl.ts +155 -0
  67. package/src/tool/gamepadVibrationTester/i18n/pl.ts +155 -0
  68. package/src/tool/gamepadVibrationTester/i18n/pt.ts +155 -0
  69. package/src/tool/gamepadVibrationTester/i18n/ru.ts +155 -0
  70. package/src/tool/gamepadVibrationTester/i18n/sv.ts +155 -0
  71. package/src/tool/gamepadVibrationTester/i18n/tr.ts +155 -0
  72. package/src/tool/gamepadVibrationTester/i18n/zh.ts +155 -0
  73. package/src/tool/gamepadVibrationTester/index.ts +15 -7
  74. package/src/tool/keyboardTest/i18n/de.ts +146 -0
  75. package/src/tool/keyboardTest/i18n/id.ts +146 -0
  76. package/src/tool/keyboardTest/i18n/it.ts +146 -0
  77. package/src/tool/keyboardTest/i18n/ja.ts +146 -0
  78. package/src/tool/keyboardTest/i18n/ko.ts +146 -0
  79. package/src/tool/keyboardTest/i18n/nl.ts +146 -0
  80. package/src/tool/keyboardTest/i18n/pl.ts +146 -0
  81. package/src/tool/keyboardTest/i18n/pt.ts +146 -0
  82. package/src/tool/keyboardTest/i18n/ru.ts +146 -0
  83. package/src/tool/keyboardTest/i18n/sv.ts +146 -0
  84. package/src/tool/keyboardTest/i18n/tr.ts +146 -0
  85. package/src/tool/keyboardTest/i18n/zh.ts +146 -0
  86. package/src/tool/keyboardTest/index.ts +15 -7
  87. package/src/tool/mousePollingTest/i18n/de.ts +135 -0
  88. package/src/tool/mousePollingTest/i18n/id.ts +135 -0
  89. package/src/tool/mousePollingTest/i18n/it.ts +135 -0
  90. package/src/tool/mousePollingTest/i18n/ja.ts +135 -0
  91. package/src/tool/mousePollingTest/i18n/ko.ts +135 -0
  92. package/src/tool/mousePollingTest/i18n/nl.ts +135 -0
  93. package/src/tool/mousePollingTest/i18n/pl.ts +135 -0
  94. package/src/tool/mousePollingTest/i18n/pt.ts +135 -0
  95. package/src/tool/mousePollingTest/i18n/ru.ts +135 -0
  96. package/src/tool/mousePollingTest/i18n/sv.ts +135 -0
  97. package/src/tool/mousePollingTest/i18n/tr.ts +135 -0
  98. package/src/tool/mousePollingTest/i18n/zh.ts +135 -0
  99. package/src/tool/mousePollingTest/index.ts +15 -7
  100. package/src/tool/toneGenerator/i18n/de.ts +146 -0
  101. package/src/tool/toneGenerator/i18n/id.ts +146 -0
  102. package/src/tool/toneGenerator/i18n/it.ts +146 -0
  103. package/src/tool/toneGenerator/i18n/ja.ts +146 -0
  104. package/src/tool/toneGenerator/i18n/ko.ts +146 -0
  105. package/src/tool/toneGenerator/i18n/nl.ts +146 -0
  106. package/src/tool/toneGenerator/i18n/pl.ts +146 -0
  107. package/src/tool/toneGenerator/i18n/pt.ts +146 -0
  108. package/src/tool/toneGenerator/i18n/ru.ts +146 -0
  109. package/src/tool/toneGenerator/i18n/sv.ts +146 -0
  110. package/src/tool/toneGenerator/i18n/tr.ts +146 -0
  111. package/src/tool/toneGenerator/i18n/zh.ts +146 -0
  112. package/src/tool/toneGenerator/index.ts +15 -7
  113. package/src/types.ts +1 -1
@@ -0,0 +1,155 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ProbadorVibracionMandoUI } from '../ui';
4
+
5
+ const slug = 'test-vibracii-gejmpada-online';
6
+ const title = 'Онлайн тест вибрации геймпада';
7
+ const description =
8
+ 'Проверьте тактильные моторы и вибрацию Dual-Rumble вашего геймпада в браузере. Поддерживает Xbox, DualShock, DualSense и обычные контроллеры.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Что мне нужно, чтобы протестировать геймпад онлайн?',
13
+ answer:
14
+ 'Просто подключите геймпад к компьютеру или мобильному устройству через USB-кабель или соедините его по Bluetooth. После подключения нажмите любую кнопку, чтобы устройство было обнаружено.',
15
+ },
16
+ {
17
+ question: 'Работает ли это с любой моделью геймпада?',
18
+ answer:
19
+ 'Большинство современных геймпадов известных брендов (таких как PlayStation или Xbox) совместимы, если ваше устройство и операционная система поддерживают их.',
20
+ },
21
+ {
22
+ question: 'Правая сторона моего геймпада вибрирует меньше левой, это нормально?',
23
+ answer:
24
+ 'Да, совершенно нормально. Геймпады обычно имеют асимметричную конструкцию, где одна сторона отвечает за сильную, глубокую вибрацию, а другая — за быструю, легкую вибрацию.',
25
+ },
26
+ {
27
+ question: 'Сильно ли эти тесты расходуют заряд батареи?',
28
+ answer:
29
+ 'Вибрация — одна из самых энергоемких функций беспроводного геймпада. Проведение непрерывных длительных тестов разрядит батарею быстрее, чем обычно.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Подключите и включите геймпад',
36
+ text: 'Подключите геймпад к ПК, Mac или мобильному телефону через USB-кабель или Bluetooth.',
37
+ },
38
+ {
39
+ name: 'Нажмите кнопку на геймпаде',
40
+ text: 'Браузеры требуют нажатия хотя бы одной кнопки, чтобы геймпад был обнаружен и началась веб-коммуникация.',
41
+ },
42
+ {
43
+ name: 'Настройте вибромоторы',
44
+ text: 'Настройте мощность сильного мотора (Low) и точного мотора (High) независимо друг от друга.',
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, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
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: 'EUR' },
83
+ inLanguage: 'ru',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Часто задаваемые вопросы',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Ссылки',
93
+ bibliography: [
94
+ {
95
+ name: 'Как работает тактильная вибрация — HobbyConsolas',
96
+ url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
+ },
98
+ {
99
+ name: 'Gamepad API — W3C',
100
+ url: 'https://w3c.github.io/gamepad/',
101
+ },
102
+ ],
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ { type: 'title', text: 'Как проверить вибрацию геймпада', level: 2 },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'Тактильная отдача — один из самых захватывающих элементов игрового оборудования. Когда мотор выходит из строя, первыми признаками обычно являются ненормальное жужжание или асимметричная вибрация. Ранняя диагностика предотвращает серьезные поломки.',
110
+ },
111
+ { type: 'title', text: 'Зачем проводить тест вибрации?', level: 3 },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'При покупке подержанного геймпада, после обновления драйверов или после падения тестирование тактильных моторов помогает отличить реальные аппаратные сбои от проблем с программным обеспечением. Совместим с Xbox, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro и обычными USB-геймпадами.',
115
+ },
116
+ { type: 'title', text: 'Dual-Rumble против архитектуры линейного привода', level: 3 },
117
+ {
118
+ type: 'paragraph',
119
+ html: 'Классические геймпады (Xbox, DualShock) используют два асимметричных микромотора: левый создает глубокую, грохочущую вибрацию; правый производит быстрое, высокое жужжание. Продвинутые устройства, такие как DualSense, используют линейные приводы, имитирующие текстуру и сопротивление.',
120
+ },
121
+ { type: 'title', text: 'Руководство по диагностике симптомов', level: 3 },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Активируйте каждый мотор независимо на 100%. Если оба звучат одинаково, геймпад может быть подделкой с одним мотором. Если один не отвечает, проверьте соединение перед вскрытием корпуса. Проверьте промежуточную интенсивность: качественные моторы реагируют плавно, а не как обычный выключатель.',
125
+ },
126
+ ],
127
+ ui: {
128
+ badge: 'Тест вибрации',
129
+ title: 'Тестер вибрации геймпада',
130
+ description: 'Прямое управление мотором Dual-Rumble вашего геймпада.',
131
+ deviceDisconnected: 'Геймпад отключен',
132
+ deviceDisconnectedSub: 'Нажмите кнопку на геймпаде, чтобы начать',
133
+ deviceFallback: 'Геймпад подключен',
134
+ deviceConnectedSub: 'Соединение стабильно. Готов к тесту.',
135
+ noSupportWarning: "В вашем браузере не обнаружена поддержка Dual-Rumble. Используется базовая общая вибрация.",
136
+ tabPresets: 'Лучшие пресеты',
137
+ tabCustom: 'Чистая точность',
138
+ presetHeavyTitle: 'Удар молота',
139
+ presetHeavyDesc: 'Тяжелый мотор на максимум на 300 мс. Имитирует сильный удар.',
140
+ presetLightTitle: 'Жужжание пчелы',
141
+ presetLightDesc: 'Только правый мотор. Идеально для обнаружения необычного жужжания.',
142
+ presetHeartbeatTitle: 'Биение сердца',
143
+ presetHeartbeatDesc: 'Тонкие последовательные импульсы. Идеально для проверки инерционного удержания.',
144
+ presetSongTitle: 'Ритм монет',
145
+ presetSongDesc: 'Имитирует последовательные звуки монет. Коротко и тактильно.',
146
+ presetRockYouTitle: 'Rock You!',
147
+ presetRockYouDesc: "Классика Queen в ваших руках: бум, бум, хлоп!",
148
+ presetEarthquakeTitle: 'Максимальное землетрясение!',
149
+ presetEarthquakeDesc: 'Оба мотора на 100% взрывной силы. ОЧЕНЬ интенсивно.',
150
+ customStrongLabel: 'Сильный мотор (Левый)',
151
+ customWeakLabel: 'Слабый мотор (Правый)',
152
+ customDurationLabel: 'Длительность импульса',
153
+ btnSendSignal: 'ОТПРАВИТЬ СИГНАЛ',
154
+ },
155
+ };
@@ -0,0 +1,155 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ProbadorVibracionMandoUI } from '../ui';
4
+
5
+ const slug = 'vibrationstest-gamepad-online';
6
+ const title = 'Vibrationstest för Gamepad Online';
7
+ const description =
8
+ 'Testa haptikmotorerna och Dual-Rumble-vibrationen på din gamepad i webbläsaren. Stöder Xbox, DualShock, DualSense och generiska kontroller.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Vad behöver jag för att testa min gamepad online?',
13
+ answer:
14
+ 'Anslut bara din gamepad till datorn eller mobilen via USB-kabel eller para ihop den via Bluetooth. När den är ansluten, tryck på valfri knapp för att bli upptäckt.',
15
+ },
16
+ {
17
+ question: 'Fungerar det med alla gamepadmodeller?',
18
+ answer:
19
+ 'De flesta moderna gamepads från kända märken (som PlayStation eller Xbox) är kompatibla om din enhet och ditt operativsystem stöder det.',
20
+ },
21
+ {
22
+ question: 'Höger sida av min gamepad vibrerar mindre än vänster, är det normalt?',
23
+ answer:
24
+ 'Ja, helt normalt. Gamepads har vanligtvis en asymmetrisk design där ena sidan hanterar starka, djupa vibrationer och den andra hanterar snabba, subtila vibrationer.',
25
+ },
26
+ {
27
+ question: 'Drar dessa tester mycket batteri?',
28
+ answer:
29
+ 'Vibration är en av de mest energikrävande funktionerna i en trådlös gamepad. Att köra kontinuerliga, långa tester kommer att tömma batteriet snabbare än vanligt.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Anslut och slå på din gamepad',
36
+ text: 'Anslut din gamepad till din PC, Mac eller mobil via USB-kabel eller Bluetooth.',
37
+ },
38
+ {
39
+ name: 'Tryck på en knapp på gamepadden',
40
+ text: 'Webbläsare kräver att du trycker på minst en knapp för att gamepadden ska upptäckas och webbkommunikation ska starta.',
41
+ },
42
+ {
43
+ name: 'Justera vibrationsmotorerna',
44
+ text: 'Konfigurera styrkan för den tunga motorn (Low) och den fina motorn (High) oberoende av varandra.',
45
+ },
46
+ {
47
+ name: 'Kör mönstren',
48
+ text: 'Tryck på en av förinställningarna eller konfigurera parametrarna manuellt och skicka signalen för att känna varje komponent.',
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, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
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: 'EUR' },
83
+ inLanguage: 'sv',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Vanliga frågor',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Referenser',
93
+ bibliography: [
94
+ {
95
+ name: 'Hur haptisk vibration fungerar — HobbyConsolas',
96
+ url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
+ },
98
+ {
99
+ name: 'Gamepad API — W3C',
100
+ url: 'https://w3c.github.io/gamepad/',
101
+ },
102
+ ],
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ { type: 'title', text: 'Hur du kontrollerar vibrationen på din spelkontroll', level: 2 },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'Haptisk feedback är ett av de mest inlevelsefulla elementen i spelhårdvara. När en motor slutar fungera är de första symtomen vanligtvis onormalt surrande eller asymmetriska vibrationer. Att diagnostisera dem tidigt förhindrar större fel.',
110
+ },
111
+ { type: 'title', text: 'Varför köra vibrationstestet?', level: 3 },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'När du köper en begagnad gamepad, efter att ha uppdaterat drivrutiner eller efter ett fall, hjälper testning av haptikmotorerna till att skilja verkliga hårdvarufel från mjukvaruproblem. Kompatibel med Xbox, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro och generiska USB-gamepads.',
115
+ },
116
+ { type: 'title', text: 'Dual-Rumble vs. Linjär Aktuator-arkitektur', level: 3 },
117
+ {
118
+ type: 'paragraph',
119
+ html: 'Klassiska gamepads (Xbox, DualShock) använder två asymmetriska mikromotorer: den vänstra genererar djupa, mullrande vibrationer; den högra producerar snabbt, gällt surrande. Avancerade enheter som DualSense använder linjära aktuatorer som simulerar texturer och motstånd.',
120
+ },
121
+ { type: 'title', text: 'Symtombaserad diagnosguide', level: 3 },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Aktivera varje motor oberoende på 100 %. Om båda låter likadant kan gamepadden vara en replika med en enda motor. Om en inte svarar, kontrollera anslutningen innan du öppnar höljet. Testa olika intensiteter: kvalitetsmotorer svarar gradvis, inte som en på/av-knapp.',
125
+ },
126
+ ],
127
+ ui: {
128
+ badge: 'Vibrationstest',
129
+ title: 'Vibrationsutprovare för Gamepad',
130
+ description: 'Direkt kontroll över Dual-Rumble-motorn på din gamepad.',
131
+ deviceDisconnected: 'Gamepad Frånkopplad',
132
+ deviceDisconnectedSub: 'Tryck på en knapp på din gamepad för att starta',
133
+ deviceFallback: 'Gamepad Ansluten',
134
+ deviceConnectedSub: 'Stabil anslutning. Redo att testa.',
135
+ noSupportWarning: "Inget Dual-Rumble-stöd upptäcktes i din webbläsare. Använder grundläggande generisk vibration.",
136
+ tabPresets: 'Bästa förinställningar',
137
+ tabCustom: 'Ren precision',
138
+ presetHeavyTitle: 'Hammarslag',
139
+ presetHeavyDesc: 'Tung motor på max i 300ms. Simulerar en hård stöt.',
140
+ presetLightTitle: 'Bisurr',
141
+ presetLightDesc: 'Endast höger motor. Idealisk för att upptäcka ovanligt surrande.',
142
+ presetHeartbeatTitle: 'Hjärtslag',
143
+ presetHeartbeatDesc: 'Subtila på varandra följande pulser. Perfekt för att kontrollera tröghetsretention.',
144
+ presetSongTitle: 'Myntrytm',
145
+ presetSongDesc: 'Simulerar på varandra följande myntljud. Kort och taktilt.',
146
+ presetRockYouTitle: 'Rock You!',
147
+ presetRockYouDesc: "Queens klassiker i dina händer: boom, boom, clap!",
148
+ presetEarthquakeTitle: 'Maximal jordbävning!',
149
+ presetEarthquakeDesc: 'Båda motorerna på 100 % explosiv kraft. MYCKET intensivt.',
150
+ customStrongLabel: 'Stark kraft (Vänster)',
151
+ customWeakLabel: 'Svag kraft (Höger)',
152
+ customDurationLabel: 'Pulslängd',
153
+ btnSendSignal: 'SKICKA SIGNAL NU',
154
+ },
155
+ };
@@ -0,0 +1,155 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ProbadorVibracionMandoUI } from '../ui';
4
+
5
+ const slug = 'oyun-kolu-titresim-testi-online';
6
+ const title = 'Çevrimiçi Oyun Kolu Titreşim Testi';
7
+ const description =
8
+ 'Tarayıcınızda oyun kolunuzun haptik motorlarını ve Dual-Rumble titreşimini test edin. Xbox, DualShock, DualSense ve genel kontrolcüleri destekler.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Oyun kolumu çevrimiçi test etmek için neye ihtiyacım var?',
13
+ answer:
14
+ 'Oyun kolunuzu USB kablosuyla bilgisayara veya mobil cihaza bağlamanız ya da Bluetooth üzerinden eşleştirmeniz yeterlidir. Bağlandıktan sonra algılanması için herhangi bir düğmeye basın.',
15
+ },
16
+ {
17
+ question: 'Her oyun kolu modeliyle çalışır mı?',
18
+ answer:
19
+ 'Cihazınız ve işletim sisteminiz desteklediği sürece bilinen markaların (PlayStation veya Xbox gibi) çoğu modern oyun kolu uyumludur.',
20
+ },
21
+ {
22
+ question: 'Oyun kolumun sağ tarafı solundan daha az titriyor, bu normal mi?',
23
+ answer:
24
+ 'Evet, tamamen normal. Oyun kollarında genellikle bir tarafın güçlü, derin titreşimleri, diğer tarafın ise hızlı, hafif titreşimleri işlediği asimetrik bir tasarım bulunur.',
25
+ },
26
+ {
27
+ question: 'Bu testleri çalıştırmak çok pil tüketir mi?',
28
+ answer:
29
+ 'Titreşim, kablosuz bir oyun kolundaki en enerji tüketen işlevlerden biridir. Sürekli ve uzun testler çalıştırmak pili normalden daha hızlı tüketecektir.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Oyun kolunu bağlayın ve açın',
36
+ text: 'Oyun kolunuzu USB kablosu veya Bluetooth aracılığıyla PC, Mac veya mobil cihazınıza bağlayın.',
37
+ },
38
+ {
39
+ name: 'Oyun kolunda bir düğmeye basın',
40
+ text: 'Tarayıcılar, oyun kolunun algılanması ve web iletişiminin başlaması için en az bir düğmeye basmanızı gerektirir.',
41
+ },
42
+ {
43
+ name: 'Titreşim motorlarını ayarlayın',
44
+ text: 'Güçlü Motor (Düşük) ve İnce Motor (Yüksek) gücünü bağımsız olarak yapılandırın.',
45
+ },
46
+ {
47
+ name: 'Desenleri çalıştırın',
48
+ text: 'Hazır ayarlardan birine basın veya parametreleri manuel olarak yapılandırıp her bir bileşeni hissetmek için sinyali gönderin.',
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, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
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: 'EUR' },
83
+ inLanguage: 'tr',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Sıkça Sorulan Sorular',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Referanslar',
93
+ bibliography: [
94
+ {
95
+ name: 'Haptik titreşim nasıl çalışır — HobbyConsolas',
96
+ url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
+ },
98
+ {
99
+ name: 'Gamepad API — W3C',
100
+ url: 'https://w3c.github.io/gamepad/',
101
+ },
102
+ ],
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ { type: 'title', text: 'Oyun kolunuzun titreşimini nasıl denetlersiniz', level: 2 },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'Haptik geri bildirim, oyun donanımının en sürükleyici öğelerinden biridir. Bir motor arızalandığında ilk semptomlar genellikle anormal vızıltı veya asimetrik titreşimlerdir. Bunları erken teşhis etmek büyük arızaları önler.',
110
+ },
111
+ { type: 'title', text: 'Neden titreşim testi yapılmalı?', level: 3 },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'İkinci el bir oyun kolu satın alırken, sürücüleri güncelledikten sonra veya bir düşmeden sonra haptik motorları test etmek gerçek donanım arızalarını yazılım sorunlarından ayırmaya yardımcı olur. Xbox, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro ve genel USB oyun kollarıyla uyumludur.',
115
+ },
116
+ { type: 'title', text: 'Dual-Rumble ve Lineer Aktüatör Mimarisi Karşılaştırması', level: 3 },
117
+ {
118
+ type: 'paragraph',
119
+ html: 'Klasik oyun kolları (Xbox, DualShock) iki asimetrik mikro motor kullanır: sol motor derin, gmbürtülü titreşimler üretir; sağdaki ise hızlı, tiz vızıltılar çıkarır. DualSense gibi gelişmiş cihazlar doku ve direnci simüle eden lineer aktüatörler kullanır.',
120
+ },
121
+ { type: 'title', text: 'Semptom bazlı teşhis kılavuzu', level: 3 },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Her motoru bağımsız olarak %100 güçte etkinleştirin. Her ikisi de aynı sesi çıkarıyorsa oyun kolu tek motorlu bir kopya olabilir. Biri yanıt vermiyorsa kasayı açmadan önce bağlantıyı kontrol edin. Kısmi yoğunlukları test edin: kaliteli motorlar bir açma/kapama düğmesi gibi değil, kademeli olarak yanıt verir.',
125
+ },
126
+ ],
127
+ ui: {
128
+ badge: 'Titreşim Testi',
129
+ title: 'Oyun Kolu Titreşim Test Edici',
130
+ description: 'Oyun kolunuzun Dual-Rumble motoru üzerinde doğrudan kontrol.',
131
+ deviceDisconnected: 'Oyun Kolu Bağlantısı Kesildi',
132
+ deviceDisconnectedSub: 'Başlamak için oyun kolunuzdaki bir düğmeye basın',
133
+ deviceFallback: 'Oyun Kolu Bağlandı',
134
+ deviceConnectedSub: 'Kararlı bağlantı. Teste hazır.',
135
+ noSupportWarning: "Tarayıcınızda Dual-Rumble desteği algılanmadı. Temel genel titreşim kullanılıyor.",
136
+ tabPresets: 'En İyi Hazır Ayarlar',
137
+ tabCustom: 'Saf Hassasiyet',
138
+ presetHeavyTitle: 'Çekiç Darbesi',
139
+ presetHeavyDesc: '300ms boyunca ağır motor maksimumda. Güçlü bir darbeyi simüle eder.',
140
+ presetLightTitle: 'Arı Vızıltısı',
141
+ presetLightDesc: 'Yalnızca sağ motor. Olağandışı vızıltıları tespit etmek için idealdir.',
142
+ presetHeartbeatTitle: 'Kalp Atışı',
143
+ presetHeartbeatDesc: 'Hafif ardışık darbeler. Eylemsizlik tutuşunu kontrol etmek için mükemmeldir.',
144
+ presetSongTitle: 'Madeni Para Ritmi',
145
+ presetSongDesc: 'Ardışık madeni para seslerini simüle eder. Kısa ve dokunsal.',
146
+ presetRockYouTitle: 'Rock You!',
147
+ presetRockYouDesc: "Queen'in klasiği ellerinizde: güm, güm, şak!",
148
+ presetEarthquakeTitle: 'Maksimum Deprem!',
149
+ presetEarthquakeDesc: 'Her iki motor da %100 patlayıcı güçte. ÇOK yoğun.',
150
+ customStrongLabel: 'Güçlü Kuvvet (Sol)',
151
+ customWeakLabel: 'Zayıf Kuvvet (Sağ)',
152
+ customDurationLabel: 'Darbe Süresi',
153
+ btnSendSignal: 'SİNYALİ ŞİMDİ GÖNDER',
154
+ },
155
+ };
@@ -0,0 +1,155 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ProbadorVibracionMandoUI } from '../ui';
4
+
5
+ const slug = 'gamepad-vibration-tester';
6
+ const title = '在线手柄振动测试';
7
+ const description =
8
+ '在浏览器中测试游戏手柄的触感马达和 Dual-Rumble 振动。支持 Xbox、DualShock、DualSense 和通用控制器。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '在线测试手柄需要准备什么?',
13
+ answer:
14
+ '只需通过 USB 线将手柄连接到电脑或移动设备,或通过蓝牙进行配对。连接后,按任意键即可被检测到。',
15
+ },
16
+ {
17
+ question: '是否适用于所有手柄型号?',
18
+ answer:
19
+ '如果您的设备和操作系统支持,大多数知名品牌(如 PlayStation 或 Xbox)的现代手柄都是兼容的。',
20
+ },
21
+ {
22
+ question: '我的手柄右侧振动比左侧弱,这正常吗?',
23
+ answer:
24
+ '是的,完全正常。手柄通常采用非对称设计,其中一侧负责强力、深层的振动,另一侧负责快速、细微的振动。',
25
+ },
26
+ {
27
+ question: '运行这些测试会消耗大量电池吗?',
28
+ answer:
29
+ '振动是无线手柄中最耗能的功能之一。运行持续、长时间的测试会比平时更快地耗尽电池。',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: '连接并开启手柄',
36
+ text: '通过 USB 线或蓝牙将手柄连接到您的 PC、Mac 或移动设备。',
37
+ },
38
+ {
39
+ name: '按下手柄上的按键',
40
+ text: '浏览器要求您至少按下一个按键,以便检测到手柄并开始网页通信。',
41
+ },
42
+ {
43
+ name: '调整振动马达',
44
+ text: '独立配置强力马达(低频)和精细马达(高频)的功率。',
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, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
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: 'EUR' },
83
+ inLanguage: 'zh',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: '常见问题',
91
+ faq: faqData,
92
+ bibliographyTitle: '参考资料',
93
+ bibliography: [
94
+ {
95
+ name: '触感振动的工作原理 — HobbyConsolas',
96
+ url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
+ },
98
+ {
99
+ name: 'Gamepad API — W3C',
100
+ url: 'https://w3c.github.io/gamepad/',
101
+ },
102
+ ],
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ { type: 'title', text: '如何审计您的游戏手柄振动', level: 2 },
107
+ {
108
+ type: 'paragraph',
109
+ html: '触觉反馈是游戏硬件中最具沉浸感的元素之一。当马达出现故障时,最初的症状通常是异常的嗡嗡声或非对称振动。及早诊断可防止重大故障。',
110
+ },
111
+ { type: 'title', text: '为什么要运行振动测试?', level: 3 },
112
+ {
113
+ type: 'paragraph',
114
+ html: '在购买二手手柄、更新驱动程序或发生跌落后,测试触感马达有助于区分真实的硬件故障与软件问题。兼容 Xbox、PlayStation 4、PlayStation 5 (DualSense)、Nintendo Switch Pro 和通用 USB 手柄。',
115
+ },
116
+ { type: 'title', text: 'Dual-Rumble 与线性执行器架构', level: 3 },
117
+ {
118
+ type: 'paragraph',
119
+ html: '经典手柄 (Xbox, DualShock) 使用两个非对称微型马达:左侧产生深沉、轰鸣的振动;右侧产生快速、尖锐的嗡嗡声。像 DualSense 这样先进的设备使用线性执行器来模拟纹理和阻力。',
120
+ },
121
+ { type: 'title', text: '基于症状的诊断指南', level: 3 },
122
+ {
123
+ type: 'paragraph',
124
+ html: '以 100% 功率独立激活每个马达。如果听起来都一样,手柄可能是只有一个马达的仿制品。如果其中一个没有响应,请在拆开外壳前检查连接。测试细分强度:高质量马达是逐渐响应的,而不是像开关一样。',
125
+ },
126
+ ],
127
+ ui: {
128
+ badge: '振动测试',
129
+ title: '手柄振动测试器',
130
+ description: '直接控制手柄的 Dual-Rumble 马达。',
131
+ deviceDisconnected: '手柄已断开连接',
132
+ deviceDisconnectedSub: '按下手柄上的按键开始',
133
+ deviceFallback: '手柄已连接',
134
+ deviceConnectedSub: '连接稳定。准备测试。',
135
+ noSupportWarning: "浏览器中未检测到 Dual-Rumble 支持。正在使用基础通用振动。",
136
+ tabPresets: '热门预设',
137
+ tabCustom: '精准控制',
138
+ presetHeavyTitle: '重锤打击',
139
+ presetHeavyDesc: '重型马达最大功率持续 300ms。模拟强力撞击。',
140
+ presetLightTitle: '蜜蜂嗡嗡',
141
+ presetLightDesc: '仅右侧马达。适合检测异常的嗡嗡声。',
142
+ presetHeartbeatTitle: '心跳',
143
+ presetHeartbeatDesc: '细微的连续脉冲。非常适合检查惯性保持情况。',
144
+ presetSongTitle: '金币节奏',
145
+ presetSongDesc: '模拟连续的金币声。短促且有触感。',
146
+ presetRockYouTitle: 'Rock You!',
147
+ presetRockYouDesc: "Queen 的经典旋律:动、动、打!",
148
+ presetEarthquakeTitle: '最大级别地震!',
149
+ presetEarthquakeDesc: '双马达 100% 爆发力。非常强烈。',
150
+ customStrongLabel: '强力马达(左)',
151
+ customWeakLabel: '精细马达(右)',
152
+ customDurationLabel: '脉冲时长',
153
+ btnSendSignal: '立即发送信号',
154
+ },
155
+ };
@@ -7,10 +7,6 @@ import ProbadorVibracionMandoBibliography from './bibliography.astro';
7
7
  import type { ProbadorVibracionMandoUI } from './ui';
8
8
  export type ProbadorVibracionMandoLocaleContent = ToolLocaleContent<ProbadorVibracionMandoUI>;
9
9
 
10
- import { content as es } from './i18n/es';
11
- import { content as en } from './i18n/en';
12
- import { content as fr } from './i18n/fr';
13
-
14
10
  export const probadorVibracionMando: HardwareToolEntry<ProbadorVibracionMandoUI> = {
15
11
  id: 'probador-vibracion-mando',
16
12
  icons: {
@@ -18,9 +14,21 @@ export const probadorVibracionMando: HardwareToolEntry<ProbadorVibracionMandoUI>
18
14
  fg: 'mdi:gamepad-variant',
19
15
  },
20
16
  i18n: {
21
- es: async () => es,
22
- en: async () => en,
23
- fr: async () => fr,
17
+ de: () => import('./i18n/de').then((m) => m.content),
18
+ en: () => import('./i18n/en').then((m) => m.content),
19
+ es: () => import('./i18n/es').then((m) => m.content),
20
+ fr: () => import('./i18n/fr').then((m) => m.content),
21
+ id: () => import('./i18n/id').then((m) => m.content),
22
+ it: () => import('./i18n/it').then((m) => m.content),
23
+ ja: () => import('./i18n/ja').then((m) => m.content),
24
+ ko: () => import('./i18n/ko').then((m) => m.content),
25
+ nl: () => import('./i18n/nl').then((m) => m.content),
26
+ pl: () => import('./i18n/pl').then((m) => m.content),
27
+ pt: () => import('./i18n/pt').then((m) => m.content),
28
+ ru: () => import('./i18n/ru').then((m) => m.content),
29
+ sv: () => import('./i18n/sv').then((m) => m.content),
30
+ tr: () => import('./i18n/tr').then((m) => m.content),
31
+ zh: () => import('./i18n/zh').then((m) => m.content),
24
32
  },
25
33
  };
26
34