@jjlmoya/utils-hardware 1.2.0 → 1.5.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 +2 -1
  2. package/src/tests/faq_count.test.ts +1 -1
  3. package/src/tests/i18n_coverage.test.ts +36 -0
  4. package/src/tests/locale_completeness.test.ts +1 -1
  5. package/src/tests/slug_uniqueness.test.ts +81 -0
  6. package/src/tests/title_quality.test.ts +1 -1
  7. package/src/tool/batteryHealthEstimator/i18n/de.ts +158 -0
  8. package/src/tool/batteryHealthEstimator/i18n/id.ts +158 -0
  9. package/src/tool/batteryHealthEstimator/i18n/it.ts +158 -0
  10. package/src/tool/batteryHealthEstimator/i18n/ja.ts +158 -0
  11. package/src/tool/batteryHealthEstimator/i18n/ko.ts +158 -0
  12. package/src/tool/batteryHealthEstimator/i18n/nl.ts +158 -0
  13. package/src/tool/batteryHealthEstimator/i18n/pl.ts +158 -0
  14. package/src/tool/batteryHealthEstimator/i18n/pt.ts +158 -0
  15. package/src/tool/batteryHealthEstimator/i18n/ru.ts +158 -0
  16. package/src/tool/batteryHealthEstimator/i18n/sv.ts +158 -0
  17. package/src/tool/batteryHealthEstimator/i18n/tr.ts +158 -0
  18. package/src/tool/batteryHealthEstimator/i18n/zh.ts +158 -0
  19. package/src/tool/batteryHealthEstimator/index.ts +15 -7
  20. package/src/tool/deadPixelTest/i18n/de.ts +218 -0
  21. package/src/tool/deadPixelTest/i18n/id.ts +218 -0
  22. package/src/tool/deadPixelTest/i18n/it.ts +218 -0
  23. package/src/tool/deadPixelTest/i18n/ja.ts +218 -0
  24. package/src/tool/deadPixelTest/i18n/ko.ts +218 -0
  25. package/src/tool/deadPixelTest/i18n/nl.ts +218 -0
  26. package/src/tool/deadPixelTest/i18n/pl.ts +218 -0
  27. package/src/tool/deadPixelTest/i18n/pt.ts +218 -0
  28. package/src/tool/deadPixelTest/i18n/ru.ts +218 -0
  29. package/src/tool/deadPixelTest/i18n/sv.ts +218 -0
  30. package/src/tool/deadPixelTest/i18n/tr.ts +218 -0
  31. package/src/tool/deadPixelTest/i18n/zh.ts +217 -0
  32. package/src/tool/deadPixelTest/index.ts +15 -7
  33. package/src/tool/gamepadTest/i18n/de.ts +186 -0
  34. package/src/tool/gamepadTest/i18n/id.ts +186 -0
  35. package/src/tool/gamepadTest/i18n/it.ts +186 -0
  36. package/src/tool/gamepadTest/i18n/ja.ts +186 -0
  37. package/src/tool/gamepadTest/i18n/ko.ts +186 -0
  38. package/src/tool/gamepadTest/i18n/nl.ts +186 -0
  39. package/src/tool/gamepadTest/i18n/pl.ts +186 -0
  40. package/src/tool/gamepadTest/i18n/pt.ts +186 -0
  41. package/src/tool/gamepadTest/i18n/ru.ts +186 -0
  42. package/src/tool/gamepadTest/i18n/sv.ts +186 -0
  43. package/src/tool/gamepadTest/i18n/tr.ts +186 -0
  44. package/src/tool/gamepadTest/i18n/zh.ts +186 -0
  45. package/src/tool/gamepadTest/index.ts +15 -7
  46. package/src/tool/gamepadVibrationTester/i18n/de.ts +155 -0
  47. package/src/tool/gamepadVibrationTester/i18n/id.ts +155 -0
  48. package/src/tool/gamepadVibrationTester/i18n/it.ts +155 -0
  49. package/src/tool/gamepadVibrationTester/i18n/ja.ts +155 -0
  50. package/src/tool/gamepadVibrationTester/i18n/ko.ts +155 -0
  51. package/src/tool/gamepadVibrationTester/i18n/nl.ts +155 -0
  52. package/src/tool/gamepadVibrationTester/i18n/pl.ts +155 -0
  53. package/src/tool/gamepadVibrationTester/i18n/pt.ts +155 -0
  54. package/src/tool/gamepadVibrationTester/i18n/ru.ts +155 -0
  55. package/src/tool/gamepadVibrationTester/i18n/sv.ts +155 -0
  56. package/src/tool/gamepadVibrationTester/i18n/tr.ts +155 -0
  57. package/src/tool/gamepadVibrationTester/i18n/zh.ts +155 -0
  58. package/src/tool/gamepadVibrationTester/index.ts +15 -7
  59. package/src/tool/keyboardTest/i18n/de.ts +146 -0
  60. package/src/tool/keyboardTest/i18n/id.ts +146 -0
  61. package/src/tool/keyboardTest/i18n/it.ts +146 -0
  62. package/src/tool/keyboardTest/i18n/ja.ts +146 -0
  63. package/src/tool/keyboardTest/i18n/ko.ts +146 -0
  64. package/src/tool/keyboardTest/i18n/nl.ts +146 -0
  65. package/src/tool/keyboardTest/i18n/pl.ts +146 -0
  66. package/src/tool/keyboardTest/i18n/pt.ts +146 -0
  67. package/src/tool/keyboardTest/i18n/ru.ts +146 -0
  68. package/src/tool/keyboardTest/i18n/sv.ts +146 -0
  69. package/src/tool/keyboardTest/i18n/tr.ts +146 -0
  70. package/src/tool/keyboardTest/i18n/zh.ts +146 -0
  71. package/src/tool/keyboardTest/index.ts +15 -7
  72. package/src/tool/mousePollingTest/component.astro +1 -1
  73. package/src/tool/mousePollingTest/i18n/de.ts +135 -0
  74. package/src/tool/mousePollingTest/i18n/id.ts +135 -0
  75. package/src/tool/mousePollingTest/i18n/it.ts +135 -0
  76. package/src/tool/mousePollingTest/i18n/ja.ts +135 -0
  77. package/src/tool/mousePollingTest/i18n/ko.ts +135 -0
  78. package/src/tool/mousePollingTest/i18n/nl.ts +135 -0
  79. package/src/tool/mousePollingTest/i18n/pl.ts +135 -0
  80. package/src/tool/mousePollingTest/i18n/pt.ts +135 -0
  81. package/src/tool/mousePollingTest/i18n/ru.ts +135 -0
  82. package/src/tool/mousePollingTest/i18n/sv.ts +135 -0
  83. package/src/tool/mousePollingTest/i18n/tr.ts +135 -0
  84. package/src/tool/mousePollingTest/i18n/zh.ts +135 -0
  85. package/src/tool/mousePollingTest/index.ts +15 -7
  86. package/src/tool/mousePollingTest/logic/RatonManager.ts +90 -51
  87. package/src/tool/mousePollingTest/logic/StatisticalFilter.ts +17 -25
  88. package/src/tool/toneGenerator/i18n/de.ts +146 -0
  89. package/src/tool/toneGenerator/i18n/id.ts +146 -0
  90. package/src/tool/toneGenerator/i18n/it.ts +146 -0
  91. package/src/tool/toneGenerator/i18n/ja.ts +146 -0
  92. package/src/tool/toneGenerator/i18n/ko.ts +146 -0
  93. package/src/tool/toneGenerator/i18n/nl.ts +146 -0
  94. package/src/tool/toneGenerator/i18n/pl.ts +146 -0
  95. package/src/tool/toneGenerator/i18n/pt.ts +146 -0
  96. package/src/tool/toneGenerator/i18n/ru.ts +146 -0
  97. package/src/tool/toneGenerator/i18n/sv.ts +146 -0
  98. package/src/tool/toneGenerator/i18n/tr.ts +146 -0
  99. package/src/tool/toneGenerator/i18n/zh.ts +146 -0
  100. package/src/tool/toneGenerator/index.ts +15 -7
  101. package/src/types.ts +1 -1
  102. package/src/tool/mousePollingTest/worker/mouseWorker.ts +0 -50
@@ -0,0 +1,186 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TestMandoUI } from '../ui';
4
+
5
+ const slug = 'test-gejmpada-online';
6
+ const title = 'Онлайн тест геймпада и контроллера';
7
+ const description = 'Проверьте свой контроллер Xbox, PlayStation или ПК. Визуализируйте мертвые зоны, дрифт стиков и кнопки.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Что такое дрифт джойстика (стики)?',
12
+ answer: 'Дрифт возникает, когда контроллер регистрирует движение без прикосновения к стику. Это вызвано износом внутренних потенциометров, которые посылают ложный электрический сигнал в постоянном направлении.',
13
+ },
14
+ {
15
+ question: 'Как исправить дрифт программно?',
16
+ answer: 'Если дрифт незначительный, вы можете настроить увеличенную «Мертвую зону» (Deadzone) в настройках игры. Это позволит игнорировать небольшие движения стика в центре.',
17
+ },
18
+ {
19
+ question: 'Совместим ли тест с контроллерами PS5, Xbox и Switch?',
20
+ answer: 'Да. Наш инструмент использует стандартный Gamepad API современных браузеров, который обнаруживает практически любой контроллер, подключенный через USB или Bluetooth, включая DualSense, DualShock 4 и контроллеры Xbox.',
21
+ },
22
+ {
23
+ question: 'Почему браузер не видит мой контроллер?',
24
+ answer: 'В целях безопасности браузеры включают геймпад только после первого нажатия кнопки. Если он не появляется, нажмите любую кнопку (например, A или X) и убедитесь, что вы не находитесь в строгом режиме инкогнито.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Подключите контроллер',
31
+ text: 'Подключите геймпад через USB или сопрягите его по Bluetooth с вашим компьютером.',
32
+ },
33
+ {
34
+ name: 'Активируйте обнаружение',
35
+ text: 'Пошевелите стиками или нажмите любую кнопку, чтобы браузер распознал подключенное устройство.',
36
+ },
37
+ {
38
+ name: 'Проверьте мертвые зоны',
39
+ text: 'Отпустите стики и наблюдайте за осями на экране. Если значения не равны 0.0000, у вас есть небольшой дрифт.',
40
+ },
41
+ {
42
+ name: 'Проверьте кнопки и вибрацию',
43
+ text: 'Нажмите каждую кнопку и триггер. Визуальные индикаторы должны загореться, и если ваш контроллер поддерживает это, вы можете проверить вибромотор.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step, i) => ({
63
+ '@type': 'HowToStep',
64
+ position: i + 1,
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<SoftwareApplication> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description,
75
+ applicationCategory: 'UtilityApplication',
76
+ operatingSystem: 'All',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
+ inLanguage: 'ru',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestMandoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Часто Задаваемые Вопросы',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Технические Справки',
88
+ bibliography: [
89
+ {
90
+ name: 'Стандарт Gamepad API - W3C',
91
+ url: 'https://w3c.github.io/gamepad/',
92
+ },
93
+ {
94
+ name: 'Vibration API - MDN Web Docs',
95
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API',
96
+ },
97
+ ],
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Тест геймпада онлайн: обнаружение дрифта и проблем со стиками',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Бесплатный инструмент для проверки контроллеров Xbox, PlayStation, Switch и других. Визуализация мертвых зон, обнаружение дрифта и проверка вибрации.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Что такое дрифт джойстика',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Дрифт — это распространенный дефект аналоговых стиков, при котором регистрируется движение без прикосновения к джойстику. Это вызвано износом внутренних потенциометров.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'Совместимость контроллеров',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: 'Совместим с Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro и практически любым современным USB или Bluetooth геймпадом.',
127
+ },
128
+ ],
129
+ ui: {
130
+ badge: 'Тест ввода',
131
+ title: 'Тест геймпада и контроллера',
132
+ description: 'Проверьте свой контроллер и выявите проблемы.',
133
+ connectionMessage: 'Подключите устройство USB или Bluetooth',
134
+ connectionStatus: 'Подключено',
135
+ axisLabel: 'Оси',
136
+ buttonsLabel: 'Кнопки',
137
+ vibrationTitle: 'Тест вибрации',
138
+ vibrationDescription: 'Требуется поддержка браузера и совместимый геймпад.',
139
+ vibrationLow: 'Низкая (Rumble)',
140
+ vibrationHigh: 'Высокая (Buzz)',
141
+ eventHistoryTitle: 'История событий',
142
+ eventHistoryClear: 'Очистить',
143
+ eventWaiting: 'Ожидание событий...',
144
+ gameStartBtn: 'НАЧАТЬ ИСПЫТАНИЕ',
145
+ gameControllerWarning: 'Подключите геймпад или используйте клавиатуру',
146
+ gameTimer: 'Таймер',
147
+ gameScore: 'Счет',
148
+ gameInstruction: 'Нажимай быстро',
149
+ gameCompleted: 'Испытание завершено',
150
+ gameNewRecord: 'НОВЫЙ РЕКОРД',
151
+ gameRestartBtn: 'Повторить',
152
+ gameFeedback: 'Ты легенда кнопок',
153
+ gameIntroTitlePre: 'Рефлексы ',
154
+ gameIntroHighlight: 'Pro Gamer',
155
+ gameIntroTitlePost: '?',
156
+ gameIntroDescPre: 'Проверьте задержку вашего контроллера и скорость вашей реакции. У вас есть ',
157
+ gameIntroDescSeconds: '30 секунд',
158
+ gameIntroDescPost: ', чтобы освоить кнопки.',
159
+ gameShareBtn: 'ПОДЕЛИТЬСЯ РАНГОМ',
160
+ gameLogConnected: 'Подключено',
161
+ gameLogDisconnected: 'Отключено',
162
+ gameLogCleared: 'Лог очищен...',
163
+ gameLogBtnPrefix: 'Кнопка',
164
+ gameVibNotSupported: 'Вибрация не поддерживается.',
165
+ gameVibLow: 'Низкая',
166
+ gameVibHigh: 'Высокая',
167
+ gameMoveStick: 'ДВИГАЙ СТИК',
168
+ gamePress: 'НАЖМИ',
169
+ rankLegendaryName: 'ЛЕГЕНДАРНЫЙ',
170
+ rankLegendaryDesc: 'Твои пальцы движутся со скоростью звука.',
171
+ rankLegendaryFlavor: 'Мой контроллер летает!',
172
+ rankProName: 'PRO GAMER',
173
+ rankProDesc: 'У тебя стальные рефлексы и хорошо откалиброванный контроллер.',
174
+ rankProFlavor: 'Мой контроллер летает!',
175
+ rankGamerName: 'GAMER',
176
+ rankGamerDesc: 'Неплохо, но тебе нужно больше практики для соревновательной игры.',
177
+ rankGamerFlavor: 'Почти получилось!',
178
+ rankNoobName: 'NOOB',
179
+ rankNoobDesc: 'Ты уверен, что включил контроллер?',
180
+ rankNoobFlavor: 'Контроллер против меня!',
181
+ gameShareText: 'Сможешь побить мой рекорд?',
182
+ gameShareScorePrefix: 'Мой результат:',
183
+ gameShareScoreSuffix: 'нажатий',
184
+ gameShareTitle: 'Онлайн-тест геймпада',
185
+ },
186
+ };
@@ -0,0 +1,186 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TestMandoUI } from '../ui';
4
+
5
+ const slug = 'gamepad-test-svenska';
6
+ const title = 'Gamepad & Controller Test Online';
7
+ const description = 'Testa din Xbox-, PlayStation- eller PC-kontroll. Visualisera döda zoner, joystickdrift och knappar.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Vad är Joystickdrift?',
12
+ answer: 'Drift uppstår när kontrollen registrerar rörelse utan att joysticken vidrörs. Det orsakas av slitage på de interna potentiometrarna, som skickar en falsk elektrisk signal i en konstant riktning.',
13
+ },
14
+ {
15
+ question: 'Hur kan jag fixa drift med mjukvara?',
16
+ answer: 'Om driften är mild kan du konfigurera en större "Död zon" (Deadzone) i dina spelinställningar. Detta ignorerar små joystickrörelser i mitten.',
17
+ },
18
+ {
19
+ question: 'Är det kompatibelt med PS5-, Xbox- och Switch-kontroller?',
20
+ answer: 'Ja. Vårt verktyg använder standard Gamepad API från moderna webbläsare, som upptäcker nästan alla kontroller anslutna via USB eller Bluetooth, inklusive DualSense, DualShock 4 och Xbox-kontroller.',
21
+ },
22
+ {
23
+ question: 'Varför upptäcker inte webbläsaren min kontroll?',
24
+ answer: 'Av säkerhetsskäl aktiverar webbläsare endast gamepaden efter den första knapptryckningen. Om den inte visas, tryck på valfri knapp (som A eller X) och se till att du inte är i strikt inkognitoläge.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Anslut kontrollen',
31
+ text: 'Anslut din gamepad via USB eller para ihop den via Bluetooth med din dator.',
32
+ },
33
+ {
34
+ name: 'Aktivera detektering',
35
+ text: 'Rör på joystickarna eller tryck på valfri knapp så att webbläsaren känner igen den anslutna enheten.',
36
+ },
37
+ {
38
+ name: 'Testa döda zoner',
39
+ text: 'Släpp joystickarna och observera axlarna på skärmen. Om värdena inte är 0,0000 har du en lätt drift.',
40
+ },
41
+ {
42
+ name: 'Verifiera knappar och vibration',
43
+ text: 'Tryck på varje knapp och avtryckare. Visuella indikatorer bör tändas och om din kontroll stöder det kan du testa vibrationsmotorn.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step, i) => ({
63
+ '@type': 'HowToStep',
64
+ position: i + 1,
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<SoftwareApplication> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description,
75
+ applicationCategory: 'UtilityApplication',
76
+ operatingSystem: 'All',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
+ inLanguage: 'sv',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestMandoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Vanliga frågor',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Tekniska referenser',
88
+ bibliography: [
89
+ {
90
+ name: 'Gamepad API Standard - W3C',
91
+ url: 'https://w3c.github.io/gamepad/',
92
+ },
93
+ {
94
+ name: 'Vibration API - MDN Web Docs',
95
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API',
96
+ },
97
+ ],
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Gamepad Test Online: Upptäck Drift och Joystickproblem',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Gratis verktyg för att testa Xbox-, PlayStation-, Switch- och andra kontroller. Visualisera döda zoner, detektera drift och testa vibration.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Vad är Joystickdrift',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Drift är ett vanligt fel på analoga joysticks där spaken registrerar rörelse utan att man rör vid den. Det orsakas av slitage på de interna potentiometrarna.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'Kontrollkompatibilitet',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: 'Kompatibel med Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro och praktiskt taget vilken modern USB- eller Bluetooth-gamepad som helst.',
127
+ },
128
+ ],
129
+ ui: {
130
+ badge: 'Inmatningstest',
131
+ title: 'Gamepad och kontrolltest',
132
+ description: 'Testa din kontroll och upptäck problem.',
133
+ connectionMessage: 'Anslut din USB- eller Bluetooth-enhet',
134
+ connectionStatus: 'Ansluten',
135
+ axisLabel: 'Axlar',
136
+ buttonsLabel: 'Knappar',
137
+ vibrationTitle: 'Vibrationstest',
138
+ vibrationDescription: 'Kräver webbläsarstöd och kompatibel gamepad.',
139
+ vibrationLow: 'Låg (Rumble)',
140
+ vibrationHigh: 'Hög (Buzz)',
141
+ eventHistoryTitle: 'Händelsehistorik',
142
+ eventHistoryClear: 'Rensa',
143
+ eventWaiting: 'Väntar på händelser...',
144
+ gameStartBtn: 'STARTA UTMANING',
145
+ gameControllerWarning: 'Anslut en gamepad eller använd tangentbord',
146
+ gameTimer: 'Timer',
147
+ gameScore: 'Poäng',
148
+ gameInstruction: 'Tryck snabbt',
149
+ gameCompleted: 'Utmaning slutförd',
150
+ gameNewRecord: 'NYTT REKORD',
151
+ gameRestartBtn: 'Försök igen',
152
+ gameFeedback: 'Du är en knapplegend',
153
+ gameIntroTitlePre: 'Reflexer som en ',
154
+ gameIntroHighlight: 'Pro Gamer',
155
+ gameIntroTitlePost: '?',
156
+ gameIntroDescPre: 'Testa din kontrolls latens och din reaktionshastighet. Du har ',
157
+ gameIntroDescSeconds: '30 sekunder',
158
+ gameIntroDescPost: ' på dig att bemästra knapparna.',
159
+ gameShareBtn: 'DELA RANK',
160
+ gameLogConnected: 'Ansluten',
161
+ gameLogDisconnected: 'Frånkopplad',
162
+ gameLogCleared: 'Loggen rensad...',
163
+ gameLogBtnPrefix: 'Knapp',
164
+ gameVibNotSupported: 'Vibration stöds inte.',
165
+ gameVibLow: 'Låg',
166
+ gameVibHigh: 'Hög',
167
+ gameMoveStick: 'RÖR SPAKEN',
168
+ gamePress: 'TRYCK',
169
+ rankLegendaryName: 'LEGENDARISK',
170
+ rankLegendaryDesc: 'Dina fingrar rör sig med ljudets hastighet.',
171
+ rankLegendaryFlavor: 'Min kontroll flyger!',
172
+ rankProName: 'PRO GAMER',
173
+ rankProDesc: 'Du har stålreflexer och en välkalibrerad kontroll.',
174
+ rankProFlavor: 'Min kontroll flyger!',
175
+ rankGamerName: 'GAMER',
176
+ rankGamerDesc: 'Inte illa, men du behöver mer träning för tävlingsspel.',
177
+ rankGamerFlavor: 'Nästan där!',
178
+ rankNoobName: 'NOOB',
179
+ rankNoobDesc: 'Är du säker på att kontrollen är påslagen?',
180
+ rankNoobFlavor: 'Kontrollen har något emot mig!',
181
+ gameShareText: 'Kan du slå mig?',
182
+ gameShareScorePrefix: 'Jag fick',
183
+ gameShareScoreSuffix: 'träffar',
184
+ gameShareTitle: 'Gamepad Test Online',
185
+ },
186
+ };
@@ -0,0 +1,186 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TestMandoUI } from '../ui';
4
+
5
+ const slug = 'oyun-kolu-testi-online';
6
+ const title = 'Çevrimiçi Oyun Kolu ve Kontrolcü Testi';
7
+ const description = 'Xbox, PlayStation veya PC kontrolcünüzü test edin. Ölü bölgeleri, joystick kaymasını ve düğmeleri görselleştirin.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Joystick Kayması (Drift) Nedir?',
12
+ answer: 'Kayma, kontrolcü joystick\'e dokunulmadan hareket algıladığında meydana gelir. Bu, sabit bir yönde yanlış elektrik sinyali gönderen dahili potansiyometrelerdeki aşınmadan kaynaklanır.',
13
+ },
14
+ {
15
+ question: 'Kaymayı yazılım yoluyla nasıl düzeltebilirim?',
16
+ answer: 'Kayma hafifse, oyun ayarlarınızda daha büyük bir "Ölü Bölge" (Deadzone) yapılandırabilirsiniz. Bu, merkezdeki küçük joystick hareketlerini görmezden gelir.',
17
+ },
18
+ {
19
+ question: 'PS5, Xbox ve Switch kontrolcüleriyle uyumlu mu?',
20
+ answer: 'Evet. Aracımız, DualSense, DualShock 4 ve Xbox Kontrolcüleri dahil olmak üzere USB veya Bluetooth üzerinden bağlanan hemen hemen her kontrolcüyü algılayan modern tarayıcıların standart Gamepad API\'sini kullanır.',
21
+ },
22
+ {
23
+ question: 'Tarayıcı neden kontrolcümü algılamıyor?',
24
+ answer: 'Güvenlik nedeniyle tarayıcılar, oyun kolunu yalnızca ilk düğme basışından sonra etkinleştirir. Görünmüyorsa, herhangi bir düğmeye (A veya X gibi) basın ve katı gizli modda olmadığınızdan emin olun.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Kontrolcüyü bağlayın',
31
+ text: 'Oyun kolunuzu USB üzerinden prize takın veya bilgisayarınızla Bluetooth üzerinden eşleştirin.',
32
+ },
33
+ {
34
+ name: 'Algılamayı etkinleştirin',
35
+ text: 'Tarayıcının bağlı cihazı tanıması için joystickleri hareket ettirin veya herhangi bir düğmeye basın.',
36
+ },
37
+ {
38
+ name: 'Ölü bölgeleri test edin',
39
+ text: 'Joystickleri bırakın ve ekrandaki eksenleri gözlemleyin. Değerler 0.0000\'da değilse, hafif bir kayma (drift) var demektir.',
40
+ },
41
+ {
42
+ name: 'Düğmeleri ve titreşimi doğrulayın',
43
+ text: 'Her düğmeye ve tetiğe basın. Görsel göstergeler yanmalı ve kontrolcünüz destekliyorsa titreşim motorunu test edebilirsiniz.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step, i) => ({
63
+ '@type': 'HowToStep',
64
+ position: i + 1,
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<SoftwareApplication> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description,
75
+ applicationCategory: 'UtilityApplication',
76
+ operatingSystem: 'All',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
+ inLanguage: 'tr',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestMandoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Sıkça Sorulan Sorular',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Teknik Referanslar',
88
+ bibliography: [
89
+ {
90
+ name: 'Gamepad API Standardı - W3C',
91
+ url: 'https://w3c.github.io/gamepad/',
92
+ },
93
+ {
94
+ name: 'Titreşim API\'sı - MDN Web Belgeleri',
95
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API',
96
+ },
97
+ ],
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Çevrimiçi Oyun Kolu Testi: Kayma ve Joystick Sorunlarını Belirleyin',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Xbox, PlayStation, Switch ve diğer kontrolcüleri test etmek için ücretsiz araç. Ölü bölgeleri görselleştirin, kaymayı algılayın ve titreşimi test edin.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Joystick Kayması (Drift) Nedir',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Kayma, analog joysticklerde çubuğa dokunulmadan hareket algılandığı yaygın bir hatadır. Dahili potansiyometrelerdeki aşınmadan kaynaklanır.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'Kontrolcü Uyumluluğu',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: 'Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro ve hemen hemen her modern USB veya Bluetooth oyun kolu ile uyumludur.',
127
+ },
128
+ ],
129
+ ui: {
130
+ badge: 'Giriş Testi',
131
+ title: 'Oyun Kolu ve Kontrolcü Testi',
132
+ description: 'Kontrolcünüzü test edin ve sorunları algılayın.',
133
+ connectionMessage: 'USB veya Bluetooth cihazınızı bağlayın',
134
+ connectionStatus: 'Bağlı',
135
+ axisLabel: 'Eksenler',
136
+ buttonsLabel: 'Düğmeler',
137
+ vibrationTitle: 'Titreşim Testi',
138
+ vibrationDescription: 'Tarayıcı desteği ve uyumlu oyun kolu gerektirir.',
139
+ vibrationLow: 'Düşük (Rumble)',
140
+ vibrationHigh: 'Yüksek (Buzz)',
141
+ eventHistoryTitle: 'Olay Geçmişi',
142
+ eventHistoryClear: 'Temizle',
143
+ eventWaiting: 'Olaylar bekleniyor...',
144
+ gameStartBtn: 'MÜCADELEYİ BAŞLAT',
145
+ gameControllerWarning: 'Bir oyun kolu bağlayın veya klavye kullanın',
146
+ gameTimer: 'Zamanlayıcı',
147
+ gameScore: 'Puan',
148
+ gameInstruction: 'Hızlı bas',
149
+ gameCompleted: 'Mücadele Tamamlandı',
150
+ gameNewRecord: 'YENİ REKOR',
151
+ gameRestartBtn: 'Tekrar Dene',
152
+ gameFeedback: 'Bir düğme efsanesisin',
153
+ gameIntroTitlePre: 'Pro Gamer ',
154
+ gameIntroHighlight: 'Refleksleri',
155
+ gameIntroTitlePost: '?',
156
+ gameIntroDescPre: 'Kontrolcü gecikmesini ve tepki hızınızı test edin. Düğmelerde ustalaşmak için ',
157
+ gameIntroDescSeconds: '30 saniyeniz',
158
+ gameIntroDescPost: ' var.',
159
+ gameShareBtn: 'SIRALAMAYI PAYLAŞ',
160
+ gameLogConnected: 'Bağlı',
161
+ gameLogDisconnected: 'Bağlantı Kesildi',
162
+ gameLogCleared: 'Günlük temizlendi...',
163
+ gameLogBtnPrefix: 'Düğme',
164
+ gameVibNotSupported: 'Titreşim desteklenmiyor.',
165
+ gameVibLow: 'Düşük',
166
+ gameVibHigh: 'Yüksek',
167
+ gameMoveStick: 'ÇUBUĞU HAREKET ETTİR',
168
+ gamePress: 'BAS',
169
+ rankLegendaryName: 'EFSANEVİ',
170
+ rankLegendaryDesc: 'Parmakların ses hızında hareket ediyor.',
171
+ rankLegendaryFlavor: 'Kontrolcüm uçuyor!',
172
+ rankProName: 'PRO GAMER',
173
+ rankProDesc: 'Çelik gibi reflekslerin ve iyi kalibre edilmiş bir kontrolcün var.',
174
+ rankProFlavor: 'Kontrolcüm uçuyor!',
175
+ rankGamerName: 'GAMER',
176
+ rankGamerDesc: 'Fena değil, ancak rekabetçi oyunlar için daha fazla pratiğe ihtiyacın var.',
177
+ rankGamerFlavor: 'Neredeyse oluyordu!',
178
+ rankNoobName: 'NOOB',
179
+ rankNoobDesc: 'Kontrolcünün açık olduğundan emin misin?',
180
+ rankNoobFlavor: 'Kontrolcü bana gıcık herhalde!',
181
+ gameShareText: 'Beni yenebilir misin?',
182
+ gameShareScorePrefix: 'Skorum:',
183
+ gameShareScoreSuffix: 'isabet',
184
+ gameShareTitle: 'Çevrimiçi Oyun Kolu Testi',
185
+ },
186
+ };