Compare commits

...

839 Commits

Author SHA1 Message Date
HannahPadd
f28b5a3a26 Should be mostly good now 2026-02-27 16:02:30 +01:00
HannahPadd
13aabd74da Update udev modal, moved sentry consent to page 2026-02-27 13:49:44 +01:00
HannahPadd
9957abb658 Finished getWorkingDir() 2026-02-26 18:52:28 +01:00
HannahPadd
41ef425869 Added electronAPI function to get install dir inside the react application 2026-02-26 12:31:09 +01:00
Hannah
517e76b6df Update updater/desktop/src/main/java/dev/slimevr/updater/UpdaterUtils.kt
Co-authored-by: Sapphire <imsapphire0@gmail.com>
2026-02-26 08:25:22 +01:00
Hannah Lindrob
77a203c6bc Push latest changes 2026-02-25 14:44:44 +01:00
Hannah Lindrob
bd9ea99087 Added modal config 2026-02-24 18:01:17 +01:00
Hannah Lindrob
242cdd460f lint 2026-02-24 15:52:02 +01:00
Hannah Lindrob
5f648731d7 UdevrulesModal now reacts to installed udev rules 2026-02-24 15:44:07 +01:00
Hannah Lindrob
bcda3ac222 Started work on a modal to tell linux users to install udev rules if they're not found 2026-02-24 15:37:05 +01:00
Hannah Lindrob
e7dc16ecef Update logging 2026-02-23 19:10:08 +01:00
Hannah Lindrob
d0bf170a75 released to steam beta testers 2026-02-23 18:59:08 +01:00
Hannah Lindrob
d3be840591 Merge remote-tracking branch 'origin/llelievr/electron' into hannah/install-from-server 2026-02-23 17:01:43 +01:00
Hannah Lindrob
34d35fa6fd Merge remote-tracking branch 'origin/main' into llelievr/electron 2026-02-23 16:56:02 +01:00
Hannah Lindrob
1372632ece Updater pulls checksum from github 2026-02-23 10:40:02 +01:00
Hannah Lynn Lindrob
6322fac922 Remove progress callback from unzipworker 2026-02-20 23:48:40 +01:00
Hannah Lynn Lindrob
d8900d7589 unzip is fast 2026-02-20 23:44:50 +01:00
Hannah Lindrob
7bcdd6887b Attempt at adding coroutine to unzip to speed it up 2026-02-20 19:49:01 +01:00
Hannah Lindrob
1f97b49a20 Messing around with multithreading the unzip function 2026-02-20 19:18:24 +01:00
Hannah Lindrob
3873eb5519 Added logic to make window draggable 2026-02-20 18:42:08 +01:00
Hannah Lindrob
e2a665d4ce Windows also needed some cuteness 2026-02-20 15:58:21 +01:00
Hannah Lindrob
e2ff92ef9e Merge remote-tracking branch 'origin/hannah/install-from-server' into hannah/install-from-server
# Conflicts:
#	updater/desktop/src/main/java/dev/slimevr/updater/Linux.kt
#	updater/desktop/src/main/java/dev/slimevr/updater/Main.kt
2026-02-20 15:22:03 +01:00
Hannah Lindrob
acb3873f84 Added much needed cuteness 2026-02-20 15:21:45 +01:00
Butterscotch!
28deb357da Revert TrackerResetsHandler & add comments (#1748) 2026-02-20 11:26:23 +01:00
Hannah Lindrob
5954f9c942 Merge remote-tracking branch 'origin/llelievr/electron' into hannah/install-from-server 2026-02-20 10:44:41 +01:00
loucass003
84806c44db Small fixes 2026-02-20 09:11:22 +01:00
loucass003
24b2c8722b Remove unused assets + formating 2026-02-19 19:01:36 +01:00
Hannah Lynn Lindrob
2dd8fd9667 update electron to launch updater 2026-02-19 14:54:37 +01:00
Hannah Lynn Lindrob
f2243d355c update unzip function 2026-02-19 12:36:59 +01:00
Hannah Lynn Lindrob
e4fc57a0a6 Merge branch 'llelievr/electron' into hannah/install-from-server 2026-02-19 12:36:44 +01:00
Hannah Lindrob
24fe01e7b9 Brain owie 2026-02-18 18:12:42 +01:00
Hannah Lindrob
0f866c49c5 Added function to calculate file checksum 2026-02-18 16:04:50 +01:00
Hannah Lindrob
4053052829 Make downloaded files match checksum of remote files 2026-02-18 13:44:48 +01:00
Hannah Lindrob
5ab3075a61 Update unzip to support progress display 2026-02-18 13:38:35 +01:00
loucass003
215228551d remove console logs 2026-02-18 13:23:49 +01:00
Hannah Lindrob
d58d6f8eec Merge remote-tracking branch 'origin/llelievr/electron' into hannah/install-from-server 2026-02-18 13:23:17 +01:00
loucass003
f765ef0e4a Remove android icons from electron 2026-02-18 13:07:50 +01:00
Hannah Lindrob
a5bee8772c Working on updated unzip function. Updated download function 2026-02-18 13:02:15 +01:00
loucass003
c956e5d1cb Revert pnpm dev to pnpm gui 2026-02-18 13:00:49 +01:00
loucass003
865ffc5543 Put back if in gradle.yml ci 2026-02-18 12:57:32 +01:00
loucass003
25e771f4f5 Moar lint 2026-02-18 12:55:43 +01:00
loucass003
74628d215a Lint 2026-02-18 12:50:54 +01:00
loucass003
f19f5cbe51 Re enable hardware accel 2026-02-18 12:50:12 +01:00
loucass003
711d0cae63 Fix resources 2026-02-18 12:45:58 +01:00
loucass003
60321891b8 Merge branch 'llelievr/electron' of github.com:SlimeVR/SlimeVR-Server into llelievr/electron 2026-02-18 12:45:39 +01:00
loucass003
b89a290ac9 Fix resources folder 2026-02-18 12:45:19 +01:00
lucas lelievre
c4d0fe59fd Update gui/electron/main/paths.ts
Co-authored-by: Sapphire <imsapphire0@gmail.com>
2026-02-18 12:45:07 +01:00
lucas lelievre
58a9d3b6eb Update gui/src/components/commons/SystemFileInput.tsx
Co-authored-by: Sapphire <imsapphire0@gmail.com>
2026-02-18 12:44:54 +01:00
loucass003
a3314fa4f9 icons and extraFiles 2026-02-18 12:23:27 +01:00
loucass003
778e0bde56 New flake 2026-02-18 11:07:48 +01:00
Hannah Lindrob
398e96404d I guess I fixed an error with the linux feeder not unzipping 2026-02-18 10:00:46 +01:00
Hannah Lindrob
be476fe04f Electron now attempts to launch the updater when then the gui starts 2026-02-17 14:49:52 +01:00
Hannah Lindrob
f2223e5839 Merge remote-tracking branch 'origin/llelievr/electron' into hannah/install-from-server 2026-02-17 14:30:30 +01:00
Hannah Lindrob
248f1a6dc9 Added swing ui to updater to give user feedback 2026-02-17 14:28:13 +01:00
Hannah Lindrob
5a6ef6dee5 Fix issue with jar launching on steam 2026-02-17 13:05:57 +01:00
Hannah Lindrob
ba5adca358 Fix working dir 2026-02-17 11:55:57 +01:00
loucass003
67f1ac7684 Progress 2026-02-17 10:14:07 +01:00
loucass003
636514361d Server launched from electron + discord presence 2026-02-17 10:13:35 +01:00
jabberrock
4d93f87a01 Clarify AI policy on contributions (#1752) 2026-02-17 03:59:11 +03:00
loucass003
63d36db15e Final CI? 2026-02-16 18:49:07 +01:00
Hannah Lindrob
5d7c65e89b Added logic specifically for the steam frame 2026-02-16 17:42:30 +01:00
loucass003
9b8073153a Maybe progress 2026-02-16 17:34:13 +01:00
Hannah Lindrob
ada87ff15b Added installation of udev rules to updater 2026-02-16 15:40:13 +01:00
loucass003
7b40b8d315 Progress on workflow 2026-02-16 14:18:00 +01:00
loucass003
0f1a19e04b Progress on workflow 2026-02-16 14:16:49 +01:00
loucass003
d1387508e6 Progress 2026-02-16 14:11:19 +01:00
loucass003
50a2be81f7 Progress 2026-02-14 03:04:40 +01:00
loucass003
29598583a9 Lockfile 2026-02-14 01:38:18 +01:00
loucass003
e83adadf1f There is no way this works. RIGHT?! 2026-02-14 01:37:09 +01:00
loucass003
87699438b4 Progress? 2026-02-13 23:49:16 +01:00
Hannah Lindrob
bfea8026a4 Move updater to its own module 2026-02-13 14:22:35 +01:00
loucass003
d1cf5dee24 MOAR 2026-02-12 20:52:51 +01:00
loucass003
b90f52ad7b WIP 2026-02-12 20:37:50 +01:00
loucass003
af917d7158 WIP 2026-02-12 18:46:54 +01:00
Hannah Lindrob
2d7877742c Move updater to its own module 2026-02-11 10:43:27 +01:00
Hannah Lindrob
f3d05e9867 Update gradle config 2026-02-10 17:46:38 +01:00
Hannah Lindrob
802b011a4a Added version checking 2026-02-10 16:57:23 +01:00
Hannah Lindrob
971dd2c43f Moved updater to its own package, made everything less bad, added ktor for querying versions 2026-02-10 14:22:39 +01:00
Sapphire
88adfce242 Hide tracker firmware version when board type is unknown (#1721) 2026-02-09 21:58:36 +01:00
Sapphire
3d02795dbc Don't trigger timeout when Wi-Fi provisioning is done (#1725)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2026-02-09 21:57:56 +01:00
Hannah
a1205d398a Update executeShellCommand and SteamVR driver install windows 2026-02-09 12:46:29 +01:00
Hannah Lindrob
185c82a2b4 Added code for installing steamvr driver on windows 2026-02-09 11:08:26 +01:00
Hannah Lindrob
66e6066558 Untracked some files 2026-02-05 16:21:49 +01:00
Hannah Lindrob
604639680f Fix bug with nested folders in unzip function 2026-02-05 16:19:49 +01:00
Hannah Lindrob
da3249849a Fix bug with nested folders in unzip function 2026-02-04 15:07:59 +01:00
Hannah Lindrob
cb3989004c Added download and unzip function to updater 2026-02-04 14:52:01 +01:00
Hannah Lindrob
544993d535 Added changes from personal repo 2026-02-04 10:56:32 +01:00
Hannah Lindrob
d7945be91a Added changes from personal repo 2026-02-04 10:53:20 +01:00
Sapphire
7ff50f78eb Don't ask for full reset on timeout with manual or saved mounting (#1727) 2026-02-02 18:06:38 +01:00
Sapphire
0e3aaf105c Display more accurate info for OpenVR devices (#1731) 2026-02-02 18:06:17 +01:00
sctanf
f638540886 TrackerBattery disable tooltip while charging (#1733) 2026-02-02 18:05:50 +01:00
Sapphire
343d69d690 Support feet mounting reset over Protobuf bridge (#1737) 2026-02-02 18:05:31 +01:00
H3
e2d7d354c6 Add ESP32-S2 to USB-Serial Accept-List (#1730)
Co-authored-by: unlogisch04 <98281608+unlogisch04@users.noreply.github.com>
2026-01-29 22:54:37 +03:00
sctanf
cc6f297b92 Re-add missing battery runtime estimate to DataFeedBuilder (#1732) 2026-01-29 14:00:18 +04:00
H114514191981
2add43e71a add CH343 support (#1568)
Co-authored-by: unlogisch04 <98281608+unlogisch04@users.noreply.github.com>
2026-01-28 10:39:25 +02:00
Sapphire
0a493ac345 Fix scheduled resets triggering immediately when delay is unspecified (#1724) 2026-01-25 07:08:25 +02:00
Sapphire
17bb2703d1 Fix unassigned HMD flightlist step never showing (#1723) 2026-01-24 07:34:37 +02:00
Sapphire
f0981bf709 ProtocolAPI: Initialise RPCHandler after other members (#1722) 2026-01-24 01:17:25 +03:00
peelz
99de554c18 Add delay param to ResetRequest (#1712) 2026-01-23 03:38:08 +04:00
Sapphire
f95a4d56d7 Add feet mounting reset keybind (#1717) 2026-01-23 03:14:27 +04:00
Sapphire
1df3c9d322 Hide devices with unknown board type in DIY firmware tool (#1718) 2026-01-23 03:14:12 +04:00
sctanf
e0838cce6c Battery indicators (#1714) 2026-01-23 03:13:36 +04:00
Sapphire
e25d3201c2 Fix translation key for Autobone processing text (#1719) 2026-01-23 03:12:18 +04:00
Sapphire
5d14f14139 Fix alignment of neck and head dots in tracker assignment page (#1720) 2026-01-23 03:11:37 +04:00
Eiren Rain
09e81f5ace Fix trackers table having an extra header 2026-01-19 20:29:23 +01:00
Maya
8f57ef2de4 Migrate core/dev.slimevr.protocol to Kotlin (#1688)
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
2026-01-14 15:50:04 +01:00
loucass003
ea242960b3 Lint 2026-01-12 21:34:19 +01:00
Eiren Rain
35ac14a7de Packet loss (#1687)
Co-authored-by: loucass003 <loucass003@gmail.com>
2026-01-12 21:22:53 +01:00
Aed
690a8b5c6e add manual mounting to stay alligned setup (#1692) 2026-01-08 02:16:08 +01:00
sctanf
255b8b2865 Detect and use tracker PID during HID enumeration (#1556) 2026-01-07 10:13:33 +01:00
Eiren Rain
e27ec63985 Accept fixed tracker accel (#1706) 2026-01-07 08:57:24 +03:00
Butterscotch!
9f8be6551c Accept fixed tracker accel 2026-01-06 22:51:17 -05:00
lucas lelievre
f09cd687c7 Make ignore buttons be session only in checklist (#1675) 2026-01-05 16:21:36 +01:00
lucas lelievre
686499f8dd fix fw tool source (#1690) 2026-01-05 16:20:45 +01:00
Butterscotch!
a3bcc61892 Fix race conditions from Play Store (#1696) 2025-12-26 10:28:39 +01:00
sctanf
faf70c9a39 Add nRF consts (#1685) 2025-12-26 09:26:32 +01:00
sctanf
2aa8d3a056 hid add "unknown" runtime state (#1693) 2025-12-25 16:41:46 +01:00
Meia
23df46ca33 Amplify UI sounds by 8dB (#1694) 2025-12-25 16:41:08 +01:00
lucas lelievre
8407f52777 Better columns width for table view (#1691) 2025-12-19 00:24:28 +01:00
lucas lelievre
b44dcaa9c2 Runtime (#1678) 2025-12-19 00:11:10 +01:00
sctanf
ff0d823aff Merge remote-tracking branch 'upstream/main' into runtime 2025-12-18 10:46:44 -06:00
sctanf
2e8bfa5373 Update solarxr-protocol 2025-12-18 02:35:33 -06:00
sctanf
87940ddd03 TrackerBattery tooltip remove classes 2025-12-18 00:04:07 -06:00
sctanf
6208979ce9 TrackerBattery battery level tooltip if not shown 2025-12-17 23:48:00 -06:00
lucas lelievre
9a27fb1320 separate firmware date from version (#1650) 2025-12-18 06:46:10 +01:00
sctanf
53129328d0 Update solarxr-protocol 2025-12-17 22:59:24 -06:00
lucas lelievre
2d79c5a0e9 Add @ImSapphire as code owner for i18n directory 2025-12-18 05:03:19 +01:00
sctanf
74f5a92ce1 fw date default 2025-12-15 09:16:47 -06:00
sctanf
146930279c add firmware date to new field 2025-12-15 09:16:47 -06:00
sctanf
0c33579858 HIDCommon don't show firmware date in version 2025-12-15 09:16:46 -06:00
sctanf
c9783d097b show voltage in less situations 2025-12-15 09:16:30 -06:00
sctanf
d3eafb8d06 only show runtime if nonzero 2025-12-15 09:16:30 -06:00
sctanf
09d44b51d6 linter borked it 2025-12-15 09:16:30 -06:00
sctanf
cf357e71f5 lint 2025-12-15 09:16:29 -06:00
sctanf
122efacc52 show runtime in gui 2025-12-15 09:16:29 -06:00
sctanf
7f536528d0 Parse runtime from HID tracker 2025-12-15 09:16:28 -06:00
Eiren Rain
3982249ebf Bump actions/upload-artifact from 5 to 6 (#1683) 2025-12-15 17:53:59 +03:00
Eiren Rain
388bea2e72 Bump actions/download-artifact from 6 to 7 (#1684) 2025-12-15 17:53:41 +03:00
dependabot[bot]
921a760817 Bump actions/download-artifact from 6 to 7
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 14:12:16 +00:00
dependabot[bot]
55bcec4dda Bump actions/upload-artifact from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-15 14:12:07 +00:00
Eiren Rain
bb08e8dc6a DesktopHID only warn if device cannot open (#1682) 2025-12-15 11:08:44 +03:00
sctanf
a82f950eb6 DesktopHID only warn if device cannot open 2025-12-14 20:52:14 -06:00
Eiren Rain
e2dbaab8ba hid packet 6 and packet 7 (data2) (#1679) 2025-12-14 10:25:49 +03:00
sctanf
3611bb5cc7 hid packet 6 and packet 7 (data2)
this is the worst meme ever
2025-12-13 23:59:36 -06:00
lucas lelievre
f01f599526 New Pontoon translations (#1672) 2025-12-11 20:39:52 +01:00
SlimeVR-bot
6847526ce8 Pontoon/GUI: Update Simplified Chinese (zh-Hans)
Co-authored-by: pwnint <ahndkp@gmail.com> (zh-Hans)
Co-authored-by: 寂听 <jiting@jtcat.com> (zh-Hans)
Co-authored-by: nekomona <nekomona@163.com> (zh-Hans)
2025-12-11 19:03:14 +00:00
SlimeVR-bot
c5f28a6a01 Pontoon/GUI: Update Simplified Chinese (zh-Hans)
Co-authored-by: 寂听 <jiting@jtcat.com> (zh-Hans)
Co-authored-by: Joshh <josh229411@icloud.com> (zh-Hans)
Co-authored-by: pwnint <ahndkp@gmail.com> (zh-Hans)
Co-authored-by: nekomona <nekomona@163.com> (zh-Hans)
2025-12-11 19:03:14 +00:00
lucas lelievre
86d7d5fdc6 Fix tracker set selection (#1668) 2025-12-11 20:02:52 +01:00
lucas lelievre
781f4d489a Better Android signing & Google Play bundle building (#1670) 2025-12-11 19:56:07 +01:00
jabberrock
5a42426048 [Stay Aligned] Fix broken tracker rotations (#1669) 2025-12-11 07:26:12 -05:00
Butterscotch!
44643f2cc6 Rename Google Play artifact 2025-12-11 07:06:02 -05:00
Butterscotch!
d902515f4f Change message 2025-12-11 06:30:40 -05:00
Butterscotch!
f9df08aefd Include all Android tasks for signing & Play CI 2025-12-11 06:27:20 -05:00
Butterscotch!
28b18e0d42 Handle KeyStore secret directly in Gradle 2025-12-11 06:27:20 -05:00
loucass003
247c063791 Lint 2025-12-11 10:11:16 +01:00
lucas lelievre
ab248287cc Update gui/src/components/onboarding/pages/trackers-assign/TrackerAssignOptions.tsx
Co-authored-by: Sapphire <imsapphire0@gmail.com>
2025-12-11 09:44:33 +01:00
lucas lelievre
9a26fc98b8 Update gui/src/components/onboarding/pages/trackers-assign/TrackerAssignOptions.tsx
Co-authored-by: Sapphire <imsapphire0@gmail.com>
2025-12-11 09:44:28 +01:00
loucass003
16a2ac8474 Lint 2025-12-11 09:36:02 +01:00
loucass003
c4acf4cc41 Better selection + only set the prefered once for a new user 2025-12-11 09:30:21 +01:00
loucass003
4b0a2d27d0 Fix tracker set selection 2025-12-11 09:19:25 +01:00
lucas lelievre
2c6708bfe7 Don't show fw update icon when update is blocked (#1667) 2025-12-11 08:35:46 +01:00
Sapphire
2880623cce Fix fw update icon low battery warning 2025-12-11 00:30:54 -06:00
Sapphire
17400ca337 Don't show fw update icon when update is blocked 2025-12-11 00:24:06 -06:00
lucas lelievre
3276f6db7a Fix tooltips on table and reset buttons (#1666) 2025-12-11 06:21:56 +01:00
loucass003
db59537adc Fix tooltips on table and reset buttons 2025-12-11 06:17:05 +01:00
lucas lelievre
4f1fd82923 Tooltip: Better handling of disabled buttons (#1665) 2025-12-11 04:02:12 +01:00
loucass003
f6ccb5970f Lint 2025-12-11 03:57:06 +01:00
loucass003
c937b91267 Better handling of disabled buttons 2025-12-11 03:54:23 +01:00
lucas lelievre
2d1f32b950 Disable R8 optimization for Android (#1664) 2025-12-11 03:28:49 +01:00
Butterscotch!
8acba98bcc Temporarily disable Proguard optimization 2025-12-10 21:23:38 -05:00
lucas lelievre
d7ba1b8335 Fix mobile tooltip (#1662) 2025-12-11 03:13:13 +01:00
lucas lelievre
d20e9bfd94 Fix tiertiary dropdown text color (#1663) 2025-12-11 02:56:37 +01:00
loucass003
3d54a86bd8 Fix tiertiary dropdown text color 2025-12-11 02:54:22 +01:00
loucass003
c9883f5eb4 Fix mobile tooltip 2025-12-11 02:28:09 +01:00
lucas lelievre
8bd36fac25 Increase accent text contrast for ace theme (#1656) 2025-12-11 02:26:43 +01:00
lucas lelievre
ab4d507d9f Snep theme (#1659) 2025-12-11 02:26:26 +01:00
lucas lelievre
9efb985260 Sentry fixes (#1658) 2025-12-11 02:26:10 +01:00
loucass003
2c2c227187 Fix scaled proportions event not triggering 2025-12-11 02:24:00 +01:00
sctanf
63cca6756e lint 2025-12-10 19:07:28 -06:00
lucas lelievre
b0d7fefa5e Only skip server start when CLI arg is passed (#1660) 2025-12-11 02:02:57 +01:00
Butterscotch!
35a5cb47d9 Disable Android obfuscation 2025-12-10 19:07:54 -05:00
lucas lelievre
dfc4383271 Update gui/src/hooks/app.ts
Co-authored-by: Sapphire <imsapphire0@gmail.com>
2025-12-10 21:58:47 +01:00
lucas lelievre
185431a733 Update gui/src/hooks/tracking-checklist.ts
Co-authored-by: Sapphire <imsapphire0@gmail.com>
2025-12-10 21:58:35 +01:00
Sapphire
5b68a01186 Only skip server start when CLI arg is passed 2025-12-10 14:36:56 -06:00
lucas lelievre
2c4dd4085f Remove Ktor dependency (#1655) 2025-12-10 21:34:35 +01:00
sctanf
4d3ff0e9c9 snep 2025-12-10 11:42:16 -06:00
loucass003
ee6182bb23 lint 2025-12-10 17:15:07 +01:00
loucass003
9576d6e034 Sentry fixes 2025-12-10 17:12:25 +01:00
lucas lelievre
227ddc87d2 Increment Android version code and log config (#1657) 2025-12-10 13:51:46 +01:00
Butterscotch!
b3b7730b2c Increment Android version code and log config 2025-12-10 07:14:54 -05:00
Butterscotch!
075a155f13 Increase accent text contrast for ace theme 2025-12-10 05:31:43 -05:00
Butterscotch!
79a3b66e43 Fix formatting 2025-12-10 05:08:29 -05:00
lucas lelievre
fe58968718 New Pontoon translations (#1654) 2025-12-10 09:38:53 +01:00
Butterscotch!
276e73e724 Remove Ktor dependency 2025-12-10 00:39:27 -05:00
SlimeVR-bot
01dd916498 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 20:00:05 +00:00
SlimeVR-bot
6ebf9792ac Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 16:30:06 +00:00
SlimeVR-bot
02f8195b5b Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 15:26:14 +00:00
SlimeVR-bot
7b4946f41d Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 15:26:14 +00:00
SlimeVR-bot
5f4c90128f Pontoon/GUI: Update German (de)
Co-authored-by: Patty <pattycoder@gmx.de> (de)
Co-authored-by: unlogisch <unlogisch@gmx.ch> (de)
2025-12-09 15:26:14 +00:00
SlimeVR-bot
6a2a30e319 Pontoon/GUI: Update Dutch (nl), German (de)
Co-authored-by: Nola <stefsecretdesecret@gmail.com> (nl)
Co-authored-by: Joshh <josh229411@icloud.com> (nl)
Co-authored-by: Vyolex <25586367+Vyolex@users.noreply.github.com> (nl)
Co-authored-by: Smeltie <martijnklerks123@gmail.com> (nl)
Co-authored-by: C0D3 M4513R <mail@c0d3m4513r.com> (de)
Co-authored-by: Patty <pattycoder@gmx.de> (de)
Co-authored-by: unlogisch <unlogisch@gmx.ch> (de)
Co-authored-by: stephaniegoldschmidt9 <stephaniegoldschmidt9@gmail.com> (de)
2025-12-09 15:26:14 +00:00
SlimeVR-bot
8a5f27e8d9 Pontoon/GUI: Update 28 localizations 2025-12-09 15:26:14 +00:00
lucas lelievre
199bec40e1 Build and sign release APK (#1653) 2025-12-09 16:25:49 +01:00
lucas lelievre
9d32220275 Merge branch 'main' into bscotch/android-signing-ci 2025-12-09 14:51:16 +01:00
lucas lelievre
8b689d6df8 Android fixes & update (#1648) 2025-12-09 14:50:59 +01:00
Butterscotch!
490005ae69 Merge remote-tracking branch 'upstream/main' into bscotch/android-fixes 2025-12-09 07:53:46 -05:00
Butterscotch!
575778ab85 Don't fail for keystore 2025-12-09 07:25:54 -05:00
Butterscotch!
85ee162d58 Remove unused import 2025-12-09 07:18:26 -05:00
Butterscotch!
712fa6a1ad Avoid Android Gradle project for desktop tests 2025-12-09 02:55:12 -05:00
Butterscotch!
819481adcd Early fail for keystore issues 2025-12-09 02:36:21 -05:00
Butterscotch!
bc26227443 Build and sign release with Gradle 2025-12-09 02:36:21 -05:00
lucas lelievre
ac43ca947e New Pontoon translations (#1646) 2025-12-09 05:25:55 +01:00
SlimeVR-bot
4451d8aaf4 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
79a9e15c5a Pontoon/GUI: Update Thai (th), German (de)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: Cusmo84 <saopob@gmail.com> (th)
Co-authored-by: unlogisch <unlogisch@gmx.ch> (de)
Co-authored-by: Patty <pattycoder@gmx.de> (de)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
5403cdb28e Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
272f37374e Pontoon/GUI: Update Thai (th), German (de)
Co-authored-by: Kaiera huzu <patsakorn9090@gmail.com> (th)
Co-authored-by: SparklingSakura <natthakitw.2006@gmail.com> (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: Patty <pattycoder@gmx.de> (de)
Co-authored-by: unlogisch <unlogisch@gmx.ch> (de)
Co-authored-by: Zahnatom <zahnatomletsplay@gmail.com> (de)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
4147578dc8 Pontoon/GUI: Update Thai (th), German (de)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: Patty <pattycoder@gmx.de> (de)
Co-authored-by: TheDevMinerTV <devminer@devminer.xyz> (de)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
65bd03c272 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
4835e89c5f Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
7ea4516545 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
2f208fe08a Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
db584baed3 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
1d41627fb1 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: Kaiera huzu <patsakorn9090@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
63b8d4c8cb Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: Kaiera huzu <patsakorn9090@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
8e60ecd070 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
6ee173791e Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: Kaiera huzu <patsakorn9090@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
b9d72c0a40 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
36b2e01d88 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
569315f6dc Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
a4fab8afed Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
d1e3c35693 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
d12f3c4854 Pontoon/GUI: Update Polish (pl)
Co-authored-by: Yexo <patrykcyranski@gmail.com> (pl)
Co-authored-by: ReDoX <redox01@o2.pl> (pl)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
e32903f36f Pontoon/GUI: Update Polish (pl)
Co-authored-by: Yexo <patrykcyranski@gmail.com> (pl)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
ab126c336c Pontoon/GUI: Update Polish (pl)
Co-authored-by: Yexo <patrykcyranski@gmail.com> (pl)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
79a6d62506 Pontoon/GUI: Update Polish (pl)
Co-authored-by: Yexo <patrykcyranski@gmail.com> (pl)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
08f691b5b6 Pontoon/GUI: Update Polish (pl)
Co-authored-by: Yexo <patrykcyranski@gmail.com> (pl)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
b12632fd1a Pontoon/GUI: Update Polish (pl)
Co-authored-by: Yexo <patrykcyranski@gmail.com> (pl)
Co-authored-by: ReDoX <redox01@o2.pl> (pl)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
54f3ab4634 Pontoon/GUI: Update Polish (pl)
Co-authored-by: Yexo <patrykcyranski@gmail.com> (pl)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
415168d040 Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
6be313144e Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
98e571c94b Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
1561c464e9 Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2025-12-09 04:25:34 +00:00
SlimeVR-bot
4992d599aa Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-09 04:25:34 +00:00
lucas lelievre
90b3dfe0db v18.0rc1 fixes (#1651) 2025-12-09 05:25:07 +01:00
lucas lelievre
ab87c5b1e8 Update gui/src/hooks/crypto.ts
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
2025-12-09 04:46:35 +01:00
lucas lelievre
3ee6c065cf Disable root overscroll (#1652) 2025-12-09 04:41:25 +01:00
lucas lelievre
d1249d2b44 Apply suggestions from code review
Co-authored-by: Sapphire <imsapphire0@gmail.com>
2025-12-09 04:37:12 +01:00
Butterscotch!
94a70d3b2e Update Ktor to latest 2.3.X version 2025-12-08 21:50:53 -05:00
Butterscotch!
b67162eb43 Revert Ktor version update 2025-12-08 21:47:00 -05:00
Lasse Lauwerys
4390d35e00 Disable root overscroll 2025-12-09 02:37:13 +01:00
lucas lelievre
19126c0d4d Update gui/public/i18n/en/translation.ftl
Co-authored-by: Maya <jovannmc@femboyfurry.net>
2025-12-08 09:51:43 +01:00
lucas lelievre
0cf0f6cb49 Update gui/public/i18n/en/translation.ftl
Co-authored-by: Maya <jovannmc@femboyfurry.net>
2025-12-08 09:51:36 +01:00
lucas lelievre
d3d3838761 Update gui/src/components/onboarding/pages/WifiCreds.tsx
Co-authored-by: Maya <jovannmc@femboyfurry.net>
2025-12-08 09:47:15 +01:00
loucass003
4984026f6b Lint 2025-12-08 09:28:09 +01:00
loucass003
bb7e825c41 Remove confusion with dongles in the Connect page 2025-12-08 09:25:03 +01:00
loucass003
bc96ddd555 More fixes and metrics 2025-12-08 05:40:33 +01:00
loucass003
ec85284f78 Lint 2025-12-08 05:31:57 +01:00
loucass003
867287e740 More sentry metrics 2025-12-08 05:25:07 +01:00
loucass003
2e93187021 More sentry metrics 2025-12-08 05:12:05 +01:00
loucass003
2a19d67974 Make sentry report anonymous unique user ids so we can count release adoption 2025-12-08 04:28:00 +01:00
loucass003
176f7e4271 Round one of fixes 2025-12-08 03:39:49 +01:00
Butterscotch!
3a6c60d912 Only get GUI port once 2025-12-07 05:23:03 -05:00
Butterscotch!
066c28adb4 Use randomized Android GUI port 2025-12-07 05:20:13 -05:00
Butterscotch!
364ed3209c Prevent Android GUI race condition 2025-12-07 05:12:56 -05:00
Butterscotch!
dab6ec28af Simpler bytesSkipped check 2025-12-07 04:53:09 -05:00
Butterscotch!
b221250ba7 More Gradle cleanup 2025-12-07 04:48:09 -05:00
Butterscotch!
215635634f Update Android versions & Proguard settings 2025-12-07 04:43:15 -05:00
Butterscotch!
184133a613 Fix OTA upload socket not being closed 2025-12-07 04:22:01 -05:00
Butterscotch!
32248c75cf Fix Android SDK level errors 2025-12-07 04:21:37 -05:00
lucas lelievre
0671c0e89f New Pontoon translations (#1631) 2025-12-06 00:38:06 +01:00
SlimeVR-bot
2acadbe11b Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
5688c71d2e Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
d3c89618f1 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
478ffdb611 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
0b7e5781d5 Pontoon/GUI: Update 28 localizations 2025-12-05 23:37:48 +00:00
SlimeVR-bot
446a53277e Pontoon/GUI: Update 28 localizations 2025-12-05 23:37:48 +00:00
SlimeVR-bot
b2acc1b28d Pontoon/GUI: Update French (fr)
Co-authored-by: lucas <llelievr2@gmail.com> (fr)
Co-authored-by: Naoto <naotomuramasa@gmail.com> (fr)
Co-authored-by: Joshh <josh229411@icloud.com> (fr)
Co-authored-by: Arya <arya.allermoz@gmail.com> (fr)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
27d2fff725 Pontoon/GUI: Update 28 localizations 2025-12-05 23:37:48 +00:00
SlimeVR-bot
0c1f9b3e25 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
cfa4039e9e Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
7b62b21e6f Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
cc3af4ae7e Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
09c44fc935 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
92f441d51f Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
d5912513ff Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
6417bf3167 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
5bf0694734 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
7b95837663 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
40067df800 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
c5546d71d2 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
307c250240 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
ca1afaa0aa Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
809a0b81b2 Pontoon/GUI: Update Thai (th)
Co-authored-by: SparklingSakura <natthakitw.2006@gmail.com> (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
01d5456f9f Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
b81605dcf9 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
bb3be2fd17 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
b34da7dd3e Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
0cc97ba9f8 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
a754a24d3f Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
df209436c8 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
6abd06d435 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
43f6a9fac9 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: Kaiera huzu <patsakorn9090@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
e07a152d46 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
e73dcad9a8 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
87de27e4ec Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
e851abfd4f Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
561dfd2d2e Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
4e716ac53b Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
12cd7908ef Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: SparklingSakura <natthakitw.2006@gmail.com> (th)
Co-authored-by: Kaiera huzu <patsakorn9090@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
1e1cb435a2 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: SparklingSakura <natthakitw.2006@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
0bd6d4fdbd Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
9f2bd7f2e7 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
a6c5de6ef3 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
86046993b8 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
f7106833ed Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
ef35b93569 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
2f5649a90a Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: Cusmo84 <saopob@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
efd07a9afb Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
2fad9b2563 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
8d2b74b254 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: Kaiera huzu <patsakorn9090@gmail.com> (th)
Co-authored-by: Cusmo84 <saopob@gmail.com> (th)
Co-authored-by: SparklingSakura <natthakitw.2006@gmail.com> (th)
Co-authored-by: yuyavx <yuyavxvtuber@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
3f1a614ac6 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: SparklingSakura <natthakitw.2006@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
326284853c Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
3ae337b3d8 Pontoon/GUI: Update Thai (th)
Co-authored-by: SparklingSakura <natthakitw.2006@gmail.com> (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
fbef209d2d Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
544b060691 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
63bceb49ca Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
be9265cb97 Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2025-12-05 23:37:48 +00:00
SlimeVR-bot
c7286f8e48 Pontoon/GUI: Update German (de)
Co-authored-by: Patty <pattycoder@gmx.de> (de)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
a8e76e9198 Pontoon/GUI: Update German (de)
Co-authored-by: Patty <pattycoder@gmx.de> (de)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
be09af8ca6 Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
d47533db08 Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
c34944912b Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
67b764026f Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
9b74665e94 Pontoon/GUI: Update Thai (th)
Co-authored-by: Kaiera huzu <patsakorn9090@gmail.com> (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: SparklingSakura <natthakitw.2006@gmail.com> (th)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
855d708464 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
760ecc6ae6 Pontoon/GUI: Update Thai (th)
Co-authored-by: SparklingSakura <natthakitw.2006@gmail.com> (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
2f4bcb17b6 Pontoon/GUI: Update 28 localizations 2025-12-05 23:37:47 +00:00
SlimeVR-bot
78e7517363 Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
27e4af57f1 Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
1d029a6c3a Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
Co-authored-by: 白貓 <yen.max@gmail.com> (zh-Hant)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
fe547cf56b Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
9bddff99d8 Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
11fc8a3fa7 Pontoon/GUI: Update Spain Spanish (es-ES)
Co-authored-by: Baddie <baddie@femboy.gay> (es-ES)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
075ca4715e Pontoon/GUI: Update French (fr)
Co-authored-by: Erimel <loukalemire@gmail.com> (fr)
2025-12-05 23:37:47 +00:00
SlimeVR-bot
991299b4fc Pontoon/GUI: Update French (fr)
Co-authored-by: Erimel <loukalemire@gmail.com> (fr)
2025-12-05 23:37:47 +00:00
lucas lelievre
84d85c29b7 Before RC fixes (#1644)
Co-authored-by: Sapphire <imsapphire0@gmail.com>
2025-12-06 00:37:23 +01:00
lucas lelievre
5f1167f0de Remove the need for restart before OTA on newer firmware (#1627) 2025-12-05 22:12:03 +01:00
loucass003
d74b26fbda Lint 2025-12-05 20:08:02 +01:00
loucass003
838a60172d Make version check for 18.0 switch 2025-12-05 20:04:02 +01:00
lucas lelievre
d6c05d2f9c Improved tracker assignment ui (#1643) 2025-12-05 18:53:53 +01:00
lucas lelievre
25e74767be Remove useless onboarding pages (#1642) 2025-12-05 18:18:15 +01:00
lucas lelievre
742a3fcafe Small UI fixes (#1641) 2025-12-05 18:17:51 +01:00
lucas lelievre
45f0e14582 Make reset sound loop better when more than 3s (#1640) 2025-12-05 18:17:19 +01:00
loucass003
937c810f7a Fix solarxr 2025-12-05 10:15:08 +01:00
lucas lelievre
80a68e9a37 Scaled proportions rework (#1636)
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
Co-authored-by: Aed <145398159+Aed-1@users.noreply.github.com>
Co-authored-by: Sapphire <imsapphire0@gmail.com>
2025-12-05 10:02:59 +01:00
loucass003
ce6b3439c9 Revert "New tracker assignment + Fix concurency error with tap"
This reverts commit 12dd1cb314.
2025-12-05 06:42:49 +01:00
loucass003
12dd1cb314 New tracker assignment + Fix concurency error with tap 2025-12-05 06:41:01 +01:00
Sapphire
d420bf0007 Update en translation (#1639) 2025-12-03 03:26:23 +01:00
Butterscotch!
8e885a8890 Simplify reset code (again) (#1595)
Co-authored-by: loucass003 <loucass003@gmail.com>
2025-12-02 18:26:03 +01:00
lucas lelievre
a5160fbb8a Server Guards: Mounting timeout and yaw reset guard (#1628)
Co-authored-by: sctanf <36978460+sctanf@users.noreply.github.com>
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
Co-authored-by: Aed <145398159+Aed-1@users.noreply.github.com>
2025-12-02 15:13:54 +01:00
lucas lelievre
2e1ec07b23 Session flightlist (#1407)
Co-authored-by: sctanf <36978460+sctanf@users.noreply.github.com>
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
Co-authored-by: Aed <145398159+Aed-1@users.noreply.github.com>
2025-12-02 14:49:45 +01:00
peelz
0dc78a7e72 Skip starting server from GUI when server is already running (#1612) 2025-12-02 14:03:08 +01:00
dependabot[bot]
ebd7712862 Bump actions/checkout from 5 to 6 (#1633)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-02 13:48:39 +01:00
Erimel
25beefd973 Check driver version (#1618) 2025-12-02 13:47:55 +01:00
Aed
2ee65a9bd2 Stay Aligned UI Improvements (#1632) 2025-11-24 11:05:17 +01:00
Sapphire
d986a5e116 Fix race condition in DataFeedHandler::sendDataFeedUpdate (#1621)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
2025-11-22 12:13:47 -05:00
Eiren Rain
8018ce7283 Android fixes (#1629) 2025-11-20 13:34:39 +03:00
Butterscotch!
a5cdbffa4c Fix packet hex formatting on Android 2025-11-20 02:30:16 -05:00
Butterscotch!
3b690eac53 Fix activity context 2025-11-20 02:09:33 -05:00
Butterscotch!
1cdca18538 Redo v0.17.0 release 2025-11-20 02:09:33 -05:00
lucas lelievre
6d77045aa1 Better flakes / deprecate shell.nix (#1626) 2025-11-20 07:00:42 +01:00
Eiren Rain
b02234f9fc New Pontoon translations (#1625) 2025-11-18 23:28:50 +03:00
SlimeVR-bot
eb10f07711 Pontoon/GUI: Update French (fr), German (de)
Co-authored-by: Erimel <loukalemire@gmail.com> (fr)
Co-authored-by: C0D3 M4513R <mail@c0d3m4513r.com> (de)
Co-authored-by: unlogisch <unlogisch@gmx.ch> (de)
Co-authored-by: bongocatlifelol <bongocatlifelol@gmail.com> (de)
Co-authored-by: TheDevMinerTV <devminer@devminer.xyz> (de)
Co-authored-by: stephaniegoldschmidt9 <stephaniegoldschmidt9@gmail.com> (de)
2025-11-17 19:25:36 +00:00
SlimeVR-bot
f15a503936 Pontoon/GUI: Update 28 localizations
Co-authored-by: Bader <baq100@gmail.com> (ar)
Co-authored-by: Vaso <dudysoso1@gmail.com> (ar)
Co-authored-by: FennT <0094falcon@gmail.com> (ar)
Co-authored-by: nekomona <nekomona@163.com> (zh-Hans)
Co-authored-by: pwnint <ahndkp@gmail.com> (zh-Hans)
Co-authored-by: ZZNYJIDI <zznyjidi@hotmail.com> (zh-Hans)
Co-authored-by: Yingxue <a1175815821@163.com> (zh-Hans)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
Co-authored-by: JaydenHa <jayden@jaydenha.uk> (zh-Hant)
Co-authored-by: Cheezik <cheatistv@email.cz> (cs)
Co-authored-by: Jeeko <d.safarik06@gmail.com> (cs)
Co-authored-by: viwas45hu978ot <viwashuot@gmail.com> (da)
Co-authored-by: Nola <stefsecretdesecret@gmail.com> (nl)
Co-authored-by: Vyolex <25586367+Vyolex@users.noreply.github.com> (nl)
Co-authored-by: SaabAerospace <SaabAerospace@hotmail.com> (nl)
Co-authored-by: siofrain <maradaichides@gmail.com> (fi)
Co-authored-by: Iris <vakotoneva@gmail.com> (fi)
Co-authored-by: SlimePuppy <minouviolet2007+github@gmail.com> (fr)
Co-authored-by: Erimel <loukalemire@gmail.com> (fr)
Co-authored-by: the1pigeon <the1pigeon@gmail.com> (fr)
Co-authored-by: martin <martin@dolez.fr> (fr)
Co-authored-by: rascrifice <noppyfloppy69@gmail.com> (fr)
Co-authored-by: C0D3 M4513R <mail@c0d3m4513r.com> (de)
Co-authored-by: dennis.staudacher <dennis.staudacher@icloud.com> (de)
Co-authored-by: TheDevMinerTV <devminer@devminer.xyz> (de)
Co-authored-by: Jatoxo <jatoxo123@gmail.com> (de)
Co-authored-by: unlogisch <unlogisch@gmx.ch> (de)
Co-authored-by: Kyra <sebastianzockt@gmail.com> (de)
Co-authored-by: stephaniegoldschmidt9 <stephaniegoldschmidt9@gmail.com> (de)
Co-authored-by: odydoubouridis <odydoubouridis@gmail.com> (el)
Co-authored-by: origalili123 <origalili123@gmail.com> (he)
Co-authored-by: Daniel <danielkariv98@gmail.com> (he)
Co-authored-by: Etch9 <mario.mazzara30@gmail.com> (it)
Co-authored-by: namakeingo <namakeingo@gmail.com> (en-x-owo, it)
Co-authored-by: infopcgood <sshs_student_412@outlook.kr> (ko)
Co-authored-by: Kamilake <exjang0@gmail.com> (ko)
Co-authored-by: abb128 <abb128@sapples.net> (lt)
Co-authored-by: eivind.eriksen <eivind.eriksen08@gmail.com> (nb-NO)
Co-authored-by: darkowsness <darkowsness@gmail.com> (nb-NO)
Co-authored-by: ReDoX <redox01@o2.pl> (pl)
Co-authored-by: Yexo <patrykcyranski@gmail.com> (pl)
Co-authored-by: Tailsy <tailsy13@gmail.com> (pl)
Co-authored-by: michael091 <michael_m1@o2.pl> (pl)
Co-authored-by: mygz <miguelmiguelmnogueira@gmail.com> (pt-BR)
Co-authored-by: Sander Fernandes <sander@novatrackers.com.br> (pt-BR)
Co-authored-by: Gaabbu <gabrielsonada@outlook.com.br> (pt-BR)
Co-authored-by: lindetinn <Kuzmenko3g@gmail.com> (ru)
Co-authored-by: Flar <kani.dragonflar@gmail.com> (ru)
Co-authored-by: SummerArtz <summerpzmail@gmail.com> (ru)
Co-authored-by: Sergey <serezhenka.soldatov.2020@mail.ru> (ru)
Co-authored-by: Graphite0 <olegek.permjakov@gmail.com> (ru)
Co-authored-by: Clay <code.clayt@gmail.com> (ru)
Co-authored-by: viberbread <panfilov.iva2015@yandex.ru> (ru)
Co-authored-by: Alejandro <moctezumaalejandro25@gmail.com> (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
Co-authored-by: Uriel <imurx@proton.me> (es-419, es-ES, sv-SE)
Co-authored-by: Andokai <da.nova@duocuc.cl> (es-419)
Co-authored-by: Renka <lunastarletvr@gmail.com> (es-419, es-ES)
Co-authored-by: Baddie <baddie@femboy.gay> (es-ES)
Co-authored-by: adriangoldenhero <adriangoldenhero@gmail.com> (es-ES)
Co-authored-by: LavAriz <thecakegirl092@gmail.com> (es-ES)
Co-authored-by: cabbemannen <cabbemannen10@gmail.com> (sv-SE)
Co-authored-by: catdrout <c4tdrout@protonmail.com> (sv-SE)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
Co-authored-by: SparklingSakura <natthakitw.2006@gmail.com> (th)
Co-authored-by: Kaiera huzu <patsakorn9090@gmail.com> (th)
Co-authored-by: rwrdetenrl <NightAniMer@hotmail.com> (tr)
Co-authored-by: HappyTownCats <HappyTownCats@gmail.com> (uk)
Co-authored-by: Shans <KaluhinShans@gmail.com> (uk)
Co-authored-by: MenacingExiler <menacingexiler@gmail.com> (vi)
Co-authored-by: Dau <unnamedau@nowhatethis.com> (en-x-owo)
Co-authored-by: beq <beqbdean@gmail.com> (en-x-owo)
Co-authored-by: Mini <alexanderawatson64@gmail.com> (en-x-owo)
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com> (en-x-owo)
2025-11-17 19:25:36 +00:00
lucas lelievre
c580aecb11 Refactor pull request creation command in workflow 2025-11-17 20:25:13 +01:00
lucas lelievre
81879afa32 Add a cute note to the README 2025-11-17 19:50:44 +01:00
lucas lelievre
1cb4edb651 Fix pontoon ci (#1624) 2025-11-17 19:14:04 +01:00
Sapphire
26e04db950 Fix 'Filter Slimes and HMD' dev setting only showing OpenVR HMD (#1614) 2025-11-10 11:25:03 +01:00
Eiren Rain
fade902fc0 Better fw update cache handling (#1617) 2025-11-08 02:41:48 +03:00
loucass003
e072fc75c6 Do not show release if no deploy file 2025-11-06 02:06:27 +01:00
loucass003
94da52c0e4 Better fw update cache handling 2025-11-06 02:05:08 +01:00
lucas lelievre
56c3290e1c Add digest to fw update files (#1616)
Co-authored-by: gorbit99 <gorbitgames@gmail.com>
2025-11-06 01:07:26 +01:00
gorbit99
e0f1ad8d4f Various rc fixes (#1615) 2025-11-05 19:12:28 +01:00
kruemmelbande
bd4ec047c3 fix linux safe mode icon (#1613) 2025-11-03 22:48:56 +01:00
lucas lelievre
e3b3cb77d1 Fix linux ci (#1611) 2025-11-03 20:22:54 +01:00
lucas lelievre
5a8804630b Fix lint (#1610) 2025-11-03 19:37:19 +01:00
Uriel
0df8b938d8 Update spotless and ktlint (#1528)
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
Co-authored-by: loucass003 <loucass003@gmail.com>
2025-11-03 18:52:58 +01:00
lucas lelievre
7180f4eaa7 Make socket recover if slimevr crashed (#1604) 2025-11-03 18:01:25 +01:00
gorbit99
2a55617e3a Enable text input on the serial console page (#1562)
Co-authored-by: loucass003 <loucass003@gmail.com>
2025-11-03 16:20:59 +01:00
gorbit99
1777d584fe Rework Dropdown component (#1606) 2025-11-03 14:55:03 +01:00
unlogisch04
edd9ea02e1 Update jSerialComm to 2.11.3 (#1608) 2025-11-01 21:16:47 +01:00
sctanf
119d9158c0 Calibration tutorial fix settling (#1521)
Co-authored-by: Eiren Rain <Eirenliel@users.noreply.github.com>
2025-11-01 00:42:42 +01:00
gorbit99
0e073a01fd Update eslint and add stylistic/jsx-self-closing-comp (#1607) 2025-11-01 00:41:53 +01:00
lucas lelievre
4e9fdb206c Firmware tool V2 (#1585) 2025-10-31 18:16:13 +01:00
Collin
0a08d57426 Positional tracker support (#920)
Co-authored-by: Eiren Rain <Eirenliel@users.noreply.github.com>
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-10-31 17:54:07 +01:00
Butterscotch!
c316c50f30 Fix tracker drift logging (#1588) 2025-10-31 17:43:32 +01:00
Uriel
81716be512 Migrate to tauri logger (#1537)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-10-31 17:42:13 +01:00
Polymoria
1d273ac651 Smaller paddings in alerts (#1450) 2025-10-31 17:40:23 +01:00
sctanf
7dc815cd86 ManualProportions do not wrap height text (#1529) 2025-10-31 17:35:14 +01:00
Butterscotch!
d6f771e6b2 BVH rewrite (#1542) 2025-10-31 17:20:08 +01:00
Sapphire
3aeb0569b1 Show startup error when tracker server port is in use (#1596) 2025-10-31 17:17:56 +01:00
Summer
bf2c5d59ab Add Positional UDP packet (#1546) 2025-10-31 17:16:30 +01:00
Butterscotch!
94b2309945 Delete target web-gui before copying (#1573)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-10-31 17:12:12 +01:00
kruemmelbande
e81c9c5b2d add safe mode .desktop file (#1600) 2025-10-29 19:40:21 +01:00
Eiren Rain
900bdc03ca Bump actions/setup-node from 5 to 6 (#1591) 2025-10-27 18:45:09 +03:00
Eiren Rain
5a73ad77f2 Bump awalsh128/cache-apt-pkgs-action from 1.5.3 to 1.6.0 (#1592) 2025-10-27 18:45:00 +03:00
dependabot[bot]
1c6a29940a Bump actions/setup-node from 5 to 6
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 15:31:25 +00:00
dependabot[bot]
adb0ae969d Bump awalsh128/cache-apt-pkgs-action from 1.5.3 to 1.6.0
Bumps [awalsh128/cache-apt-pkgs-action](https://github.com/awalsh128/cache-apt-pkgs-action) from 1.5.3 to 1.6.0.
- [Release notes](https://github.com/awalsh128/cache-apt-pkgs-action/releases)
- [Commits](https://github.com/awalsh128/cache-apt-pkgs-action/compare/v1.5.3...v1.6.0)

---
updated-dependencies:
- dependency-name: awalsh128/cache-apt-pkgs-action
  dependency-version: 1.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 15:30:41 +00:00
Eiren Rain
ae5783ce9f Bump actions/download-artifact from 5 to 6 (#1599) 2025-10-27 18:25:32 +03:00
Eiren Rain
4408b36ffb Bump actions/upload-artifact from 4 to 5 (#1598) 2025-10-27 18:25:05 +03:00
dependabot[bot]
8708778596 Bump actions/download-artifact from 5 to 6
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 15:24:31 +00:00
dependabot[bot]
b045c88158 Bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 15:00:37 +00:00
Eiren Rain
0235660642 Fix PFR extension being used for PFS file (#1593) 2025-10-22 20:49:46 +03:00
Butterscotch!
3d90d22b56 Fix PFR extension being used for PFS file 2025-10-21 23:05:21 -04:00
dependabot[bot]
7ac3993543 Bump gradle/actions from 4 to 5 (#1582)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-10-18 03:43:06 +02:00
Erimel
79294e95c7 Fix network adapter status vars (#1589) 2025-10-18 03:35:18 +02:00
gorbit99
2e9256a630 Remove the GET INFO button (#1587) 2025-10-17 17:03:43 +02:00
gorbit99
0e0992e6d4 Don't allow the same value for port in and port out (#1563)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-10-16 06:08:34 +02:00
gorbit99
5be7896d8b Add pausing to the serial console (#1569)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-10-16 05:45:46 +02:00
lucas lelievre
25c659ba03 Revert "Progress"
This reverts commit e38a4b40b5.
2025-10-10 19:02:50 +02:00
lucas lelievre
e38a4b40b5 Progress 2025-10-10 19:02:28 +02:00
Eiren Rain
de16acbcf4 New Pontoon translations (#1512) 2025-09-30 00:24:22 +03:00
Erimel
486cb295ac Pontoon: Update French (fr) localization of GUI
Co-Authored-By: Erimel <loukalemire@gmail.com>
Co-Authored-By: SlimePuppy <minouviolet2007+github@gmail.com>
2025-09-23 21:00:09 +00:00
nekomona
dd3fe24294 Pontoon: Update Simplified Chinese (zh-Hans) localization of GUI
Co-authored-by: nekomona <nekomona@163.com>
2025-09-23 21:00:09 +00:00
Alejandro
59bdedecbb Pontoon: Update Latinamerican Spanish (es-419) localization of GUI
Co-authored-by: Alejandro <moctezumaalejandro25@gmail.com>
2025-09-23 21:00:09 +00:00
YumeTomo
fc3d049019 Pontoon: Update Thai (th) localization of GUI
Co-Authored-By: YumeTomo <Sodnoobe@gmail.com>
Co-Authored-By: Cusmo84 <saopob@gmail.com>
Co-Authored-By: Kaiera huzu <patsakorn9090@gmail.com>
2025-09-23 21:00:09 +00:00
ReDoX
de150e7349 Pontoon: Update Polish (pl) localization of GUI
Co-authored-by: ReDoX <redox01@o2.pl>
2025-09-23 21:00:09 +00:00
Meow Wei
06b3f61d37 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-09-23 21:00:09 +00:00
Bader
82b96d5ebe Pontoon: Update Arabic (ar) localization of GUI
Co-Authored-By: Bader <baq100@gmail.com>
Co-Authored-By: FennT <0094falcon@gmail.com>
2025-09-23 21:00:09 +00:00
Aed
f2b4d468c2 Added Done button to end of mounting calibration (#1557) 2025-09-23 22:59:22 +02:00
Eiren Rain
1c0f5c381b Update CODEOWNERS (#1558) 2025-09-23 23:54:01 +03:00
lucas lelievre
fb25421ab0 OOPS 2025-09-23 20:23:51 +00:00
lucas lelievre
4890b4a71c Update CODEOWNERS 2025-09-23 22:17:57 +02:00
lucas lelievre
e38732a81c Remove secondary colors usage + improve spacing (#1554) 2025-09-22 21:27:07 +02:00
Eiren Rain
2a78354b17 Disable update prompt on Android (#1547) 2025-09-19 19:55:27 +03:00
Eiren Rain
3fb4347277 Fix Stagered fw update detection (#1544) 2025-09-19 19:55:17 +03:00
Eiren Rain
081e88ead4 Update gui/src/hooks/firmware-update.ts
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
2025-09-18 15:34:56 +03:00
Uriel
73f41f8fc6 Disable update prompt on Android 2025-09-17 19:32:30 -03:00
loucass003
f233f59079 Fix Stagered fw update detection 2025-09-16 23:24:53 +02:00
Eiren Rain
9644b00690 fix: use transaction id in RPC reponses (#1527) 2025-09-16 18:54:12 +03:00
Eiren Rain
543e319c25 HID support on Android (#1532) 2025-09-16 14:57:24 +03:00
Eiren Rain
b7ef70f5c6 Bump actions/setup-java from 4 to 5 (#1522) 2025-09-16 14:25:42 +03:00
Eiren Rain
af171f8812 Fix Android serial support (#1533) 2025-09-16 14:25:11 +03:00
dependabot[bot]
8ec3cade06 Bump actions/setup-java from 4 to 5
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-16 11:23:12 +00:00
Eiren Rain
bec8be46ca Add folder icon option for the file input (#1536) 2025-09-16 14:22:47 +03:00
Eiren Rain
ac7f809132 Bump actions/setup-node from 4 to 5 (#1540) 2025-09-16 14:22:10 +03:00
Eiren Rain
fcb241fab8 Bump actions/labeler from 5 to 6 (#1541) 2025-09-16 14:21:55 +03:00
Eiren Rain
fbdcf2fa2d Race condition patch for constraints (#1535) 2025-09-16 14:21:13 +03:00
Butterscotch!
73c821e07b Merge remote-tracking branch 'upstream/main' into bscotch/android-serial-fix 2025-09-11 16:07:57 -04:00
Butterscotch!
422ddd7ee8 Write serial directly on Android 2025-09-11 16:07:49 -04:00
Butterscotch!
943ad974ec Limit Android serial buffer to 1024 chars 2025-09-11 16:03:57 -04:00
dependabot[bot]
12a5d59e89 Bump actions/labeler from 5 to 6
Bumps [actions/labeler](https://github.com/actions/labeler) from 5 to 6.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 14:22:53 +00:00
dependabot[bot]
85286651dd Bump actions/setup-node from 4 to 5
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 14:22:49 +00:00
Uriel
e9b3efe3d5 Add folder icon option for the file input 2025-09-05 14:13:54 -04:00
Uriel
0f06ac0253 update linux metadata (#1524) 2025-09-04 13:44:17 -03:00
Butterscotch!
75fa1aa1e2 Messy race condition patch for constraints 2025-09-04 06:50:34 -04:00
Butterscotch!
7d642a21f5 Use a read buffer for Android serial
The serial reader on Android does not have a big enough buffer for our serial output, causing issues when parsing it. We can buffer until we reach a newline character to make parsing work.
2025-09-04 06:35:30 -04:00
Butterscotch!
4e1421180c Ensure serial port closure 2025-09-04 04:33:39 -04:00
Butterscotch!
f0a72645d7 Clear request more & update usbReceiver comment 2025-09-04 04:27:20 -04:00
Butterscotch!
86b8e0a904 Fix serial staying open after disconnect 2025-09-04 04:18:52 -04:00
Butterscotch!
789e6a6962 Make ACTION_USB_PERMISSION const 2025-09-04 02:37:52 -04:00
Butterscotch!
f03b300d72 Use val for usbReceiver 2025-09-04 02:26:36 -04:00
Butterscotch!
6b0822c0f6 Rename HID "Service" to "Manager" 2025-09-04 02:26:08 -04:00
Butterscotch!
d9774cab87 Extra requestingPermission handling for new device 2025-09-04 02:24:21 -04:00
Butterscotch!
f07f9f3718 Add comments for USB attach/detach events 2025-09-04 02:22:23 -04:00
Butterscotch!
486be0973b Use USB events for serial & re-request permission 2025-09-04 02:17:28 -04:00
Butterscotch!
9246dd00d3 Additional comments 2025-09-04 01:41:01 -04:00
Butterscotch!
baf515791d Fix HID service comments 2025-09-04 01:37:15 -04:00
Butterscotch!
876450d764 Make Android USB host mode optional 2025-09-04 01:34:22 -04:00
Butterscotch!
44e90e255b Rename HID classes for clarity 2025-09-04 01:34:06 -04:00
Butterscotch!
41026ab851 Move deviceIdLookup to HIDCommon 2025-09-04 01:28:26 -04:00
Butterscotch!
d8509c431d Remove device reattach handling
Events should be good enough :3
2025-09-04 01:05:35 -04:00
Butterscotch!
66df65eb80 Use Android USB events for HID instead of polling 2025-09-04 00:31:43 -04:00
Butterscotch!
30641a5809 Reconnect HID 2025-09-04 00:31:43 -04:00
Butterscotch!
574523daec Persist UsbDeviceConnection 2025-09-04 00:31:43 -04:00
Butterscotch!
1913605d16 De-duplicate HID code 2025-09-04 00:31:42 -04:00
Butterscotch!
8aeecab51f Implement awful reading 2025-09-04 00:29:45 -04:00
Butterscotch!
9fd5d6a187 Initial Android USB HID support 2025-09-04 00:29:45 -04:00
Butterscotch!
4568ebb41a Foot snapping fix (#1519) 2025-09-03 21:11:24 -03:00
Ilia Ki
2777d8af89 Fix endian docs for smol HID (#1520) 2025-09-03 20:03:39 -03:00
peelz
0c09c22306 fix: use transaction id in RPC reponses 2025-09-01 13:46:48 -04:00
Eiren Rain
3f9b997ffa Bump awalsh128/cache-apt-pkgs-action from 1.5.1 to 1.5.3 (#1515) 2025-08-19 21:45:46 +02:00
dependabot[bot]
df379ee234 Bump awalsh128/cache-apt-pkgs-action from 1.5.1 to 1.5.3
Bumps [awalsh128/cache-apt-pkgs-action](https://github.com/awalsh128/cache-apt-pkgs-action) from 1.5.1 to 1.5.3.
- [Release notes](https://github.com/awalsh128/cache-apt-pkgs-action/releases)
- [Commits](https://github.com/awalsh128/cache-apt-pkgs-action/compare/v1.5.1...v1.5.3)

---
updated-dependencies:
- dependency-name: awalsh128/cache-apt-pkgs-action
  dependency-version: 1.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 12:17:12 +00:00
Eiren Rain
acd628637e Bump actions/download-artifact from 4 to 5 (#1516) 2025-08-19 14:14:48 +02:00
dependabot[bot]
155dbfbff1 Bump actions/download-artifact from 4 to 5
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-19 12:13:29 +00:00
Eiren Rain
eda3d74c54 Bump actions/checkout from 4 to 5 (#1517) 2025-08-19 14:12:25 +02:00
dependabot[bot]
4b9f393cee Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-18 22:56:14 +00:00
Eiren Rain
069da63d1f fix(gui): export proportions button doesn't work (#1513) 2025-08-01 11:51:31 +03:00
DevMiner
3fbe58b027 fix(gui): export proportions button doesn't work 2025-08-01 02:21:26 +02:00
Eiren Rain
aa6b5ab028 Bring back resetMountingFeet toggle for mounting resets (#1509) 2025-07-31 22:07:30 +03:00
Erimel
b2ee4e0b5e Change icons for new mounting reset buttons 2025-07-29 17:29:25 -04:00
Erimel
34ab0c6252 Bring back resetMountingFeet toggle for mounting resets 2025-07-29 17:14:05 -04:00
Butterscotch!
a8116a7f35 Fix mounting reset not working for feet (#1508) 2025-07-29 16:33:27 -04:00
Eiren Rain
8c65129bb4 New Pontoon translations (#1502) 2025-07-26 06:02:35 +03:00
Nola
acaf6a7679 Pontoon: Update Dutch (nl) localization of GUI
Co-authored-by: Nola <stefsecretdesecret@gmail.com>
Co-authored-by: Vyolex <25586367+Vyolex@users.noreply.github.com>
2025-07-26 05:01:55 +02:00
nekomona
8044a8a824 Pontoon: Update Simplified Chinese (zh-Hans) localization of GUI
Co-authored-by: nekomona <nekomona@163.com>
2025-07-26 05:01:55 +02:00
Yexo
1ec03b83b6 Pontoon: Update Polish (pl) localization of GUI
Co-Authored-By: Yexo <patrykcyranski@gmail.com>
2025-07-26 05:01:55 +02:00
lucas lelievre
44caf24126 FW update + Fix download url 2025-07-26 05:00:37 +02:00
Erimel
a125195695 Pontoon: Update French (fr) localization of GUI
Co-authored-by: Erimel <loukalemire@gmail.com>
2025-07-22 23:08:56 +00:00
Erimel
d27385dfa4 Allow partial/separate resets for feet and fingers (#1441)
Co-authored-by: Uriel <imurx@proton.me>
2025-07-22 19:08:34 -04:00
DevMiner
68bd670d7c fix(gui/wizard): manual calibration reset body proportions's reset button isn't primary (#1503) 2025-07-20 22:26:46 +02:00
Eiren Rain
42eda428ae New Pontoon translations (#1499) 2025-07-18 02:11:40 +03:00
YumeTomo
6504ebb9fb Pontoon: Update Thai (th) localization of GUI
Co-authored-by: YumeTomo <Sodnoobe@gmail.com>
2025-07-17 21:50:41 +00:00
MenacingExiler
6332615b08 Pontoon: Update Vietnamese (vi) localization of GUI
Co-authored-by: MenacingExiler <menacingexiler@gmail.com>
2025-07-17 21:50:41 +00:00
Uriel
e054c393ea Add loucas003 for GUI settings codeowner 2025-07-17 18:50:23 -03:00
dependabot[bot]
85c30b9425 Bump awalsh128/cache-apt-pkgs-action from 1.5.0 to 1.5.1 (#1495)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-17 18:10:00 -03:00
DevMiner
5f5d96a1c7 fix: Nix Rust toolchain hash (#1500) 2025-07-16 20:17:19 +02:00
lucas lelievre
2bce1af454 Fix deploy data fetching (#1494)
Co-authored-by: Uriel <imurx@proton.me>
2025-07-16 19:29:32 +02:00
Uriel
d45527f72e Fix RPM packages not working in newer Fedora versions (#1496) 2025-07-15 17:47:14 +02:00
DevMiner
bd3acf1889 ci: guess no node cache? (#1498) 2025-07-15 16:09:04 +02:00
lucas lelievre
347fcf503f ci: add update manifest generation workflow (#1497)
Co-authored-by: DevMiner <devminer@devminer.xyz>
2025-07-15 15:45:12 +02:00
Eiren Rain
12c3379e9a New Pontoon translations (#1485) 2025-07-09 22:35:44 +03:00
Bader
77a871239d Pontoon: Update Arabic (ar) localization of GUI
Co-Authored-By: Bader <baq100@gmail.com>
Co-Authored-By: FennT <0094falcon@gmail.com>
2025-07-09 21:34:39 +02:00
YumeTomo
337d345ded Pontoon: Update Thai (th) localization of GUI
Co-Authored-By: YumeTomo <Sodnoobe@gmail.com>
Co-Authored-By: Kaiera huzu <patsakorn9090@gmail.com>
Co-Authored-By: jesdaaup <jesdaaup@gmail.com>
Co-Authored-By: SparklingSakura <natthakitw.2006@gmail.com>
Co-Authored-By: yuyavx <yuyavxvtuber@gmail.com>
Co-Authored-By: Cusmo84 <saopob@gmail.com>
2025-07-09 21:34:39 +02:00
Nola
34de9c3586 Pontoon: Update Dutch (nl) localization of GUI
Co-Authored-By: Vyolex <25586367+Vyolex@users.noreply.github.com>
Co-Authored-By: Nola <stefsecretdesecret@gmail.com>
2025-07-09 21:34:39 +02:00
lucas lelievre
cb28221c58 Staggered fw upate system (#1491) 2025-07-09 22:28:54 +03:00
Butterscotch!
64903038e0 Simplify deltaTime for ticks in Tracker (#1492) 2025-07-09 22:22:37 +03:00
Butterscotch!
4cbc6031f8 Enable pnpm and npm in Nix flake (#1493) 2025-07-09 18:23:09 +03:00
Butterscotch!
66f619bb4f Yaw reset smoothing fix (#1490) 2025-07-04 11:19:10 +02:00
Butterscotch!
09a0ed153b Clean-up PoseStreamer and PoseRecorder (#1369) 2025-07-04 11:02:14 +02:00
Butterscotch!
e8fa981225 Grammer and speeling feex (#1474)
Co-authored-by: ShineBrightMeow <142170650+ShineBrightMeow@users.noreply.github.com>
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-07-04 10:39:25 +02:00
0forks
54f9907238 Use JNA for network profile detection (#1480)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-07-04 10:20:08 +02:00
Uriel
8525f85d59 Check monitor size before recovering old window state (#1470) 2025-07-04 10:00:27 +02:00
Uriel
7293ddaa90 Add save file prompt for BVH recordings (#1483) 2025-07-04 08:49:49 +02:00
Uriel
3ec6a61763 Add ARM builds in CI (#1482) 2025-07-03 01:28:05 +02:00
Uriel
7874bbca27 include udev rules in the linux installers (#1488) 2025-07-03 01:27:06 +02:00
Uriel
b978eaf3f1 Add support for Linux registry checking for VRChat (#1459) 2025-07-01 23:55:09 +02:00
Uriel
b2817cb3ba Fix GUI errors when in smaller sizes (#1472) 2025-07-01 22:36:21 +02:00
Uriel
ab265d1689 Update jSerialComm to latest version (#1487) 2025-07-01 22:28:37 +02:00
Uriel
527c4c7f91 Fix concurrency issue with status interacting with multiple threads (#1484) 2025-07-01 22:24:58 +02:00
Butterscotch!
7c506a3fe2 Add mounting reset protobuf binding (#1473) 2025-07-01 22:12:27 +02:00
Uriel
217dc875d5 Update to latest versions in metainfo (#1486) 2025-07-01 08:30:16 +03:00
Uriel
489052141d Revert "Temporary CI measures for building 0.16"
This reverts commit 62553f4227.
2025-06-30 15:59:25 -04:00
Uriel
62553f4227 Temporary CI measures for building 0.16 2025-06-30 15:18:03 -04:00
Uriel
89c18f8488 New Pontoon translations (#1437) 2025-06-30 20:58:25 +02:00
Shans
a8a2197f91 Pontoon: Update Ukrainian (uk) localization of GUI
Co-authored-by: Shans <KaluhinShans@gmail.com>
2025-06-30 13:53:19 -04:00
YumeTomo
535f502169 Pontoon: Update Thai (th) localization of GUI
Co-authored-by: Uriel <imurx@proton.me>
Co-authored-by: SparklingSakura <natthakitw.2006@gmail.com>
Co-authored-by: yuyavx <yuyavxvtuber@gmail.com>
Co-authored-by: YumeTomo <Sodnoobe@gmail.com>
Co-authored-by: jesdaaup <jesdaaup@gmail.com>
Co-authored-by: Cusmo84 <saopob@gmail.com>
2025-06-30 13:53:07 -04:00
Uriel
bcc4dd4018 add 2 languages to the dropdown 2025-06-30 13:53:06 -04:00
mygz
eebdd61e47 Pontoon: Update Brazilian Portuguese (pt-BR) localization of GUI
Co-authored-by: mygz <miguelmiguelmnogueira@gmail.com>
2025-06-30 13:53:06 -04:00
Baddie
b3e2b0f77f Pontoon: Update Spain Spanish (es-ES) localization of GUI
Co-authored-by: Baddie <baddie@femboy.gay>
Co-authored-by: Uriel <imurx@proton.me>
Co-authored-by: Aveña <victor@priv.ericeikrem.com>
2025-06-30 13:53:01 -04:00
catdrout
fbf487c9ad Pontoon: Update Swedish (sv-SE) localization of GUI
Co-authored-by: cabbemannen <cabbemannen10@gmail.com>
Co-authored-by: catdrout <c4tdrout@protonmail.com>
Co-authored-by: Uriel <imurx@proton.me>
2025-06-30 13:52:54 -04:00
martin
c0d23c80e6 Pontoon: Update French (fr) localization of GUI
Co-authored-by: martin <martin@dolez.fr>
Co-authored-by: FR_KF_FR <scomtat@wanadoo.fr>
Co-authored-by: Erimel <loukalemire@gmail.com>
2025-06-30 13:52:47 -04:00
ReDoX
6b8931699b Pontoon: Update Polish (pl) localization of GUI
Co-authored-by: Yexo <patrykcyranski@gmail.com>
Co-authored-by: ReDoX <redox01@o2.pl>
2025-06-30 13:52:33 -04:00
Flar
3b41398ef2 Pontoon: Update Russian (ru) localization of GUI
Co-authored-by: Flar <kani.dragonflar@gmail.com>
Co-authored-by: lindetinn <Kuzmenko3g@gmail.com>
Co-authored-by: SummerArtz <summerpzmail@gmail.com>
Co-authored-by: Arom <shura.bekker.00@bk.ru>
Co-authored-by: Sergey <serezhenka.soldatov.2020@mail.ru>
Co-authored-by: viberbread <panfilov.iva2015@yandex.ru>
2025-06-30 13:52:11 -04:00
Laszlo
73ee6f7ced Pontoon: Update Norwegian Bokmål (nb-NO) localization of GUI
Co-authored-by: Laszlo <schlorpian@proton.me>
Co-authored-by: eivind.eriksen <eivind.eriksen08@gmail.com>
Co-authored-by: Aveña <victor@priv.ericeikrem.com>
2025-06-30 13:51:57 -04:00
Andokai
c59595a669 Pontoon: Update Latinamerican Spanish (es-419) localization of GUI
Co-authored-by: Andokai <da.nova@duocuc.cl>
Co-authored-by: Uriel <imurx@proton.me>
Co-authored-by: MaxEvil <xicovalle@gmail.com>
2025-06-30 13:51:50 -04:00
Cheezik
c85f27fa80 Pontoon: Update Czech (cs) localization of GUI
Co-authored-by: Uriel <imurx@proton.me>
Co-authored-by: Cheezik <cheatistv@email.cz>
2025-06-30 13:51:46 -04:00
abb128
1ab4023200 Pontoon: Update Lithuanian (lt) localization of GUI
Co-authored-by: abb128 <abb128@sapples.net>
2025-06-30 13:51:45 -04:00
nekomona
50fdd1869e Pontoon: Update Simplified Chinese (zh-Hans) localization of GUI
Co-Authored-By: nekomona <nekomona@163.com>
2025-06-30 13:51:45 -04:00
Etch9
d8153fee52 Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
Co-authored-by: Etch9 <mario.mazzara30@gmail.com>
2025-06-30 13:51:38 -04:00
Meow Wei
d5323fd050 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-Authored-By: Meow Wei <medicalwei@gmail.com>
2025-06-30 13:51:31 -04:00
Uriel
84bfc3687e Fix __ANDROID__ being not initialized and crashing GUI 2025-06-29 13:53:11 -04:00
Uriel
dd06e2b28a Update VRM reader to the new VMC 1.0 spec (#1481) 2025-06-26 06:24:24 +03:00
Uriel
add1e4eb5d Remove BVH button on android builds (#1478) 2025-06-25 21:56:29 -03:00
lucas lelievre
5a7a650f83 Fix number / order of steps in stay aligned (#1475) 2025-06-25 22:57:47 +02:00
Uriel
0427f16e72 Improve the maintenance of the Linux-side (#1463) 2025-06-20 17:39:03 +02:00
lucas lelievre
89ec689a46 Individual Pose calibration for stay aligned (#1452) 2025-06-20 14:07:28 +02:00
Polymoria
4ae5fb7215 Manual proportions visual fixes (#1449)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-06-15 11:54:29 +02:00
jabberrock
241179a924 [Stay Aligned] Fix wild swings when yaw resetting by resetting Stay Aligned before filtering (#1468) 2025-06-15 11:36:00 +02:00
Erimel
ad16d05c42 Fix vrc tracker model unknown text (#1469) 2025-06-15 11:26:55 +02:00
Erimel
3ef550d8b1 Fix neck length not being able to be used for VMC (#1466) 2025-06-11 06:37:27 +02:00
lucas lelievre
26f330c762 Remove Drift compensation (#1461) 2025-06-03 19:11:42 +03:00
lucas lelievre
79eb43fca3 Revert "Just aligned together some elements" (#1460) 2025-06-02 16:14:05 +02:00
lucas lelievre
712fbc3ee8 Optimise Tracker assignment re renders (#1454) 2025-06-02 14:35:10 +02:00
Uriel
0add9bad97 Use fetchResourceUrl for the setup wizard video (#1457) 2025-06-02 14:34:40 +02:00
sctanf
b308cc8ce3 TrackersHID only reopen if no data received (#1444) 2025-06-01 21:22:34 -03:00
Uriel
3920654370 Update linux metadata releases (#1458) 2025-06-01 21:01:42 -03:00
Uriel
503637cb0a Improve typing on xylophone (#1456) 2025-06-02 02:45:05 +03:00
Polymoria
45ff48d9ac Just aligned together some elements (#1451) 2025-05-30 19:45:17 +02:00
loucass003
47b6f0f3c3 lint 2025-05-30 15:06:47 +02:00
Polymoria
a6dd914e83 Free the text coursour? (#1448) 2025-05-30 06:04:04 +02:00
loucass003
7832783388 Fix preview framerate wierdness + fix errors when devSettings key does not exist 2025-05-28 06:36:03 +02:00
lucas lelievre
37553ea889 stay aligned fixes (#1447) 2025-05-28 03:45:37 +02:00
lucas lelievre
419841d9f9 stay aligned wizard (#1442) 2025-05-28 01:00:04 +02:00
lucas lelievre
a4c14aa23e bump flasher lib (#1446) 2025-05-28 01:33:36 +03:00
jabberrock
d71879cc4d [Stay Aligned] Increase yaw correction rate for good IMUs (#1445) 2025-05-27 21:40:01 +02:00
sctanf
ca14fa05e5 add server/*/bin to .gitignore (#1443) 2025-05-24 18:26:54 -03:00
jabberrock
4f4c90d129 [Stay Aligned] Move reset stay aligned after filtering (#1439) 2025-05-24 03:03:13 +02:00
jabberrock
c56d953516 [Stay Aligned] Select yaw correction rate based on IMU type (#1438) 2025-05-21 21:34:20 +02:00
Ilia Ki
b58e9b9074 Add a proper tracker name for gestures trackers (#1440) 2025-05-21 17:51:18 +03:00
lucas lelievre
85d227c926 [Stay Aligned] Simplify Stay Aligned settings (#1436) 2025-05-20 18:47:54 +02:00
Jabberrock
b9d97bb2d8 Update solarxr-protocol 2025-05-20 09:09:06 -07:00
Jabberrock
4fc09c348a Use multiline string for debug output 2025-05-20 09:08:15 -07:00
Jabberrock
795d73dd19 [Stay Aligned] Simplify Stay Aligned settings 2025-05-19 20:55:02 -07:00
lucas lelievre
01130b858e Stay Aligned (#1418) 2025-05-19 22:58:46 +02:00
Jabberrock
85ea808119 Update solarxr-protocol 2025-05-19 13:45:13 -07:00
Jabberrock
44765d5b6e Add "Setup Stay Aligned" flow 2025-05-19 13:07:12 -07:00
Jabberrock
853d112737 Stay Aligned
Keeps your trackers aligned by slowly adjusting the yaw of your trackers to
correct for drift.

Every tick, Stay Aligned adjusts the yaw of one tracker. It looks at the
player's current pose, and adjusts the yaw of the tracker by a tiny amount, in
the direction which is closest to the relaxed pose that the player set up. Over
time, this has the effect of keeping all the trackers in a human-like pose.
2025-05-19 13:07:12 -07:00
lucas lelievre
8881746941 New Pontoon translations (#1391) 2025-05-18 16:19:03 +02:00
Meow Wei
d3ee82cccc Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-05-16 03:00:27 +00:00
Meow Wei
947f440600 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-05-16 03:00:27 +00:00
Mama-Gen
8e887395f1 Pontoon: Update Brazilian Portuguese (pt-BR) localization of GUI
Co-authored-by: Mama-Gen <tiodapamonha145@gmail.com>
2025-05-16 03:00:27 +00:00
Meow Wei
3f42b8ab51 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-05-16 03:00:27 +00:00
Meow Wei
52a8e24d9e Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-05-16 03:00:27 +00:00
Meow Wei
80248e82f9 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-05-16 03:00:27 +00:00
Meow Wei
647964fe99 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-05-16 03:00:27 +00:00
Meow Wei
010018b400 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-05-16 03:00:27 +00:00
nekomona
4783eab37c Pontoon: Update Simplified Chinese (zh-Hans) localization of GUI
Co-authored-by: nekomona <nekomona@163.com>
Co-authored-by: Luarshey <smallkay063@outlook.com>
2025-05-16 03:00:27 +00:00
unlogisch
f693d562ba Pontoon: Update German (de) localization of GUI
Co-authored-by: unlogisch <unlogisch@gmx.ch>
2025-05-16 03:00:27 +00:00
Uriel
964b19be01 Fix manual proportions not running in old browser versions (#1435) 2025-05-16 00:00:05 -03:00
loucass003
00c768919d Lint 2025-05-14 14:50:54 +02:00
loucass003
c9415b2c02 Check if vrcConfigSetting is suported in the settings 2025-05-14 14:46:55 +02:00
loucass003
93d666a233 Update wifi profile warning link to something usefull 2025-05-13 17:17:50 +02:00
Aleksandra M
cc8538a332 Add note to update gui dependencies when change SolarXR protocol (#1432) 2025-05-12 21:26:36 +02:00
lucas lelievre
f9d619f93a Show warnings when network is set to public on windows (#1425) 2025-05-12 22:24:18 +03:00
Butterscotch!
471714afd0 Tracking pause unit test (#1360) 2025-05-12 21:08:06 +03:00
Aleksandra M
91ce0ed734 Add magnetic field vector (#1416) 2025-05-12 18:59:44 +03:00
sctanf
a35d2a77a2 TrackersHID clearly define acceleration axes (#1431) 2025-05-12 18:53:02 +03:00
sctanf
ea31d58fb8 IMUVisualizerWidget accel replace three arrows with one vector (#1430) 2025-05-12 18:52:50 +03:00
sctanf
e74dee1892 TrackersHID report magnetometer packet (#1428) 2025-05-12 18:52:41 +03:00
sctanf
d84fc40b23 TrackersHID keep opening existing devices (#1429) 2025-05-12 18:52:29 +03:00
Uriel
0dd004825d Fix macOS heap error in CI (#1426) 2025-05-06 20:08:36 +02:00
lucas lelievre
9f36444169 Allow to mute vrc warnings (#1420) 2025-05-06 12:07:51 +03:00
sctanf
52509c7950 Tracker display names (#1417) 2025-05-06 12:02:16 +03:00
Uriel
868c441220 Stop using Twemoji and just use SVGs for it (#1364) 2025-05-06 12:01:46 +03:00
jabberrock
5ad408f61d Reduce log entry size when logging invalid UDP packets (#1424) 2025-05-06 11:46:39 +03:00
sctanf
9b30f9800c TrackersHID fix exception from null magStatus (#1419) 2025-05-04 21:18:14 +02:00
lucas lelievre
07e5ef647a Make sure Global mag setting is saved (#1421) 2025-05-02 21:50:27 +03:00
lucas lelievre
47909ad46c Fix battery resistances being sent as string instead of numbers (#1413) 2025-04-28 17:59:11 +02:00
sctanf
99c92fad9e make tracker entry borders consistent with no border (#1411)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-04-28 16:51:06 +02:00
sctanf
d7861614b7 Better battery and wifi statuses behavior (#1410)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-04-28 16:44:27 +02:00
unlogisch04
b4a3e9cbd5 fix Firewall Rules for java.exe (#1415) 2025-04-28 14:56:43 +02:00
lucas lelievre
e58946f622 Bring back onboarding (#1414) 2025-04-28 14:55:52 +02:00
Erimel
c8532c76c2 Fix lower_leg-desc and elbow_offset-desc typos (#1412) 2025-04-27 01:29:57 +02:00
Butterscotch!
6f26ea7b50 Add OTA port to firewall uninstall script (#1409) 2025-04-26 16:01:22 +02:00
Butterscotch!
a848dfac43 Filtering fixes (#1405)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-04-25 17:27:20 +02:00
lucas lelievre
e5ea747cde Fix fw tool crash (#1408) 2025-04-25 17:21:25 +02:00
sctanf
34a782193b add transition to tracker shadows (#1402) 2025-04-25 08:37:17 +02:00
lucas lelievre
8498270df6 More provisioning errors (#1404)
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
2025-04-25 08:28:37 +02:00
Butterscotch!
cd6ed7296b Interpolation tests & better skeleton test class (#1359) 2025-04-24 00:19:21 +03:00
lucas lelievre
57541e560c vrconfig linux fix (#1403) 2025-04-23 21:22:08 +02:00
Erimel
6f877c3852 Apply filtering post-reset, reapply 180° fix removal & fix getYawQuaternion polarity (#1352)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-04-23 15:18:20 +02:00
lucas lelievre
ca8d75e749 Optimise re-renders (#1355)
Co-authored-by: Uriel <imurx@proton.me>
2025-04-23 14:58:19 +02:00
lucas lelievre
0dc073ca48 VRChat Config Warnings (#1358)
Co-authored-by: Erimel <marioluigivideo@gmail.com>
2025-04-23 14:36:29 +02:00
lucas lelievre
edbaf49e7a manual proportions rework (#1346)
Co-authored-by: Erimel <marioluigivideo@gmail.com>
2025-04-23 13:48:31 +02:00
Butterscotch!
ca790a3799 Load configured height for manual height config (#1395)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-04-23 12:20:54 +03:00
Uriel
3639bdc0ff Use automatic hyphenation when possible (#1362) 2025-04-23 11:16:21 +02:00
sctanf
6817eca793 Use HID tracker magnetometer status from mag_id (#1366) 2025-04-23 12:14:43 +03:00
dependabot[bot]
03365eb050 Bump awalsh128/cache-apt-pkgs-action from 1.4.3 to 1.5.0 (#1361)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 12:12:16 +03:00
sctanf
df5744b861 add fade out to reset button borders (#1400) 2025-04-23 11:06:46 +02:00
unlogisch04
bc602892b4 Fix for override.ftl not working (#1398) 2025-04-21 04:13:14 +02:00
sctanf
f49121b8a4 softer reset sounds (#1394) 2025-04-19 18:23:12 +02:00
lucas lelievre
c31aab8237 fw update server deadlock fix (#1393) 2025-04-19 18:22:59 +02:00
Butterscotch!
8e7070d257 Add OTA port to firewall script (#1397) 2025-04-19 19:22:14 +03:00
Butterscotch!
bf9a7fe7f4 Simplify mounting reset status checking (#1382) 2025-04-15 19:18:47 +02:00
lucas lelievre
00690dc351 New Pontoon translations (#1374) 2025-04-15 19:05:12 +02:00
Mama-Gen
2a4b9d29a1 Pontoon: Update Brazilian Portuguese (pt-BR) localization of GUI
Co-authored-by: Mama-Gen <tiodapamonha145@gmail.com>
2025-04-15 17:04:56 +00:00
Meow Wei
4080540e03 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-04-15 17:04:56 +00:00
unlogisch
e2bd7fa37c Pontoon: Update German (de) localization of GUI
Co-authored-by: unlogisch <unlogisch@gmx.ch>
2025-04-15 17:04:56 +00:00
Baddie
23ce2464ab Pontoon: Update Spain Spanish (es-ES) localization of GUI
Co-authored-by: Baddie <baddie@femboy.gay>
Co-authored-by: Uriel <imurx@proton.me>
2025-04-15 17:04:56 +00:00
Baddie
fa6ea23533 Pontoon: Update Spain Spanish (es-ES) localization of GUI
Co-authored-by: Baddie <baddie@femboy.gay>
Co-authored-by: Uriel <imurx@proton.me>
2025-04-15 17:04:56 +00:00
Butterscotch!
eed5d21074 Increase default log limits and refactor FileLogHandler (#1381) 2025-04-15 19:04:37 +02:00
lucas lelievre
f5cb587e00 Make Firmware update more reliable, prevent deadlocks of ui (#1389) 2025-04-15 19:00:57 +02:00
Butterscotch!
e395347421 Scale arms on proportions reset (#1383) 2025-04-15 19:00:08 +02:00
lucas lelievre
7fec2f7468 Battery level check before update (#1387)
Co-authored-by: Uriel <imurx@proton.me>
2025-04-15 18:59:33 +02:00
Butterscotch!
44fc23d2f8 Limit prediction slerp amount (#1388) 2025-04-15 18:51:21 +02:00
lucas lelievre
3dfaf1fdac Allow unset password (#1385) 2025-04-15 18:49:47 +02:00
lucas lelievre
972d113afb Remove unsupported boards from fw tool (#1384) 2025-04-15 18:49:24 +02:00
lucas lelievre
ffc6ca485f Change fw tool reboot wording (#1386) 2025-04-15 18:41:15 +02:00
Uriel
6a6771a7da Fix uncatched errors from not having Tauri (#1379) 2025-04-14 20:47:55 +02:00
Uriel
15e4f9d3a5 Use roaming folder for windows logs when trying to open it (#1380) 2025-04-14 17:04:51 +02:00
lucas lelievre
843aeae581 Fix translations versions (#1375) 2025-04-10 06:03:50 -04:00
lucas lelievre
26703ed04e Better warnings for scaled proportions (#1371) 2025-04-09 22:31:30 +02:00
lucas lelievre
4663d71eac More translation fix (#1373) 2025-04-09 20:38:38 +02:00
lucas lelievre
cd2c170327 Sentry modal text fixes (#1372) 2025-04-09 20:09:32 +03:00
Eiren Rain
2f211e8514 SlimeVR Trademark Clarifications (#1370) 2025-04-09 15:40:01 +03:00
Eiren Rain
69a446c987 Minor fixes 2025-04-09 15:37:11 +03:00
Uriel
3aace3ee3f New Pontoon translations (#1354) 2025-04-09 06:56:09 +02:00
Yingxue
186fd0c9f7 Pontoon: Update Japanese (ja) localization of GUI
Co-authored-by: Yingxue <a1175815821@163.com>
2025-04-09 03:00:06 +00:00
mygz
cc8f3fda9c Pontoon: Update Brazilian Portuguese (pt-BR) localization of GUI
Co-authored-by: Mama-Gen <tiodapamonha145@gmail.com>
Co-authored-by: mygz <miguelmiguelmnogueira@gmail.com>
2025-04-09 04:08:30 +02:00
unlogisch
b48c678800 Pontoon: Update German (de) localization of GUI
Co-authored-by: dennis.staudacher <dennis.staudacher@icloud.com>
Co-authored-by: unlogisch <unlogisch@gmx.ch>
Co-authored-by: Zeidurth <github@zeidurth.de>
2025-04-09 04:08:24 +02:00
Baddie
2f7fd22b09 Pontoon: Update Spain Spanish (es-ES) localization of GUI
Co-authored-by: Baddie <baddie@femboy.gay>
2025-04-09 04:08:24 +02:00
infopcgood
b50c940b24 Pontoon: Update Korean (ko) localization of GUI
Co-authored-by: infopcgood <sshs_student_412@outlook.kr>
Co-authored-by: Kamilake <exjang0@gmail.com>
2025-04-09 04:08:24 +02:00
Butterscotch!
f341d1d312 Pontoon: Update Engwish (en-x-owo) localization of GUI
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
Co-authored-by: Mini <alexanderawatson64@gmail.com>
Co-authored-by: Dau <gamer.buds2@gmail.com>
2025-04-09 04:08:17 +02:00
Cheezik
19e0e22ebf Pontoon: Update Czech (cs) localization of GUI
Co-authored-by: Uriel <imurx@proton.me>
Co-authored-by: Cheezik <cheatistv@email.cz>
2025-04-09 04:08:11 +02:00
Alejandro
347eaf269b Pontoon: Update Latinamerican Spanish (es-419) localization of GUI
Co-authored-by: Uriel <imurx@proton.me>
Co-authored-by: Alejandro <moctezumaalejandro25@gmail.com>
2025-04-09 04:08:05 +02:00
Meow Wei
51ed5dbef2 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-04-09 04:07:57 +02:00
Erimel
aa0a96c3c5 Pontoon: Update French (fr) localization of GUI
Co-authored-by: Erimel <loukalemire@gmail.com>
Co-authored-by: martin <martin@dolez.fr>
Co-authored-by: rascrifice <noppyfloppy69@gmail.com>
2025-04-09 04:07:50 +02:00
namakeingo
a51c6136c2 Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
2025-04-07 13:00:54 +00:00
lucas lelievre
457536b781 Fix manual proportions export (#1368) 2025-04-07 15:00:28 +02:00
Eiren Rain
b514a48b37 Remove logo from the trademark file 2025-04-07 10:08:39 +03:00
Collin
b7dd646594 Decrease shoulder joint's constraints (#1367) 2025-04-07 06:33:30 +02:00
Eiren Rain
616419be7a Fix logs folder opening wrong folder in Linux and macOS (#1363) 2025-04-02 01:54:08 +02:00
Uriel
df74e162bd Take into account logs folder being different in each OS 2025-04-01 20:41:56 -03:00
Eiren Rain
25374847f6 Prepare Firmware Constants for Gestures Release (#997) 2025-03-30 18:19:22 +03:00
Ilia Ki
7289c78fec Update server/core/src/main/java/dev/slimevr/tracking/trackers/udp/FirmwareConstants.kt
Co-authored-by: Eiren Rain <Eirenliel@users.noreply.github.com>
2025-03-30 22:03:04 +07:00
Ilia Ki
33ca7734e5 Update FirmwareConstants.kt 2025-03-30 19:28:19 +07:00
Ilia Ki
58ab5efa6e Merge branch 'main' into patch-1 2025-03-30 19:27:45 +07:00
Eiren Rain
01d2f5ae5f Implement Sentry error logging for GUI (#1153) 2025-03-27 20:59:39 +03:00
loucass003
07542aa2b1 lint 2025-03-27 18:32:05 +01:00
loucass003
83f76154ff Add trackers info to sentry context 2025-03-27 18:29:49 +01:00
loucass003
3996a60bf5 Remove test comment 2025-03-26 21:26:44 +01:00
loucass003
0cecc6e4c5 Re enable text on replays 2025-03-26 21:26:27 +01:00
loucass003
14011a8246 Optimise config loading for early loading of sentry. remove loading state of config as not needed anymore. Update sentry to latest 2025-03-26 21:11:59 +01:00
loucass003
78ed11bd62 Move sentry loading further up in the react graph 2025-03-26 20:29:32 +01:00
loucass003
5b5d2d88e5 Fix solarxr 2025-03-26 20:15:08 +01:00
loucass003
5bddc22da5 Update to main + better translations 2025-03-26 20:10:08 +01:00
loucass003
3d9c6c5fce Merge branch 'main' of github.com:SlimeVR/SlimeVR-Server into sentry-gui 2025-03-26 19:13:15 +01:00
Eiren Rain
a06161bbfa Fix GUI freezing when reopening config folder (#1357) 2025-03-26 13:14:09 +03:00
Maya
837ec60062 remove plugin-shell in tauri config 2025-03-23 07:26:45 +03:00
JovannMC
4b3b4d33ff fix freezing when reopening config folder
for some reason, the entire app froze when you click on "open folder" again, without closing the first explorer window

fixed by moving the code to the rust side
2025-03-23 06:04:40 +03:00
Eiren Rain
400bad5eae Small fixes 2025-03-19 21:49:53 +03:00
Eiren Rain
346149a259 Fix typos 2025-03-19 21:45:31 +03:00
Eiren Rain
7e895b0405 Fix readme link 2025-03-19 21:35:00 +03:00
Eiren Rain
b6ab0f306b Added trademark and logo usage rules 2025-03-19 21:33:19 +03:00
lucas lelievre
315bd81197 Send reset finished status on all reset timers (#1353) 2025-03-19 13:41:07 +01:00
Eiren Rain
8b73ca434b New Pontoon translations (#1315) 2025-03-16 17:25:19 +03:00
Meow Wei
b1d7a026a1 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-03-16 14:24:41 +00:00
namakeingo
ed9401427e Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
2025-03-16 14:24:41 +00:00
namakeingo
8c8f7b3b38 Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
Co-authored-by: Kekko <saccofra8@gmail.com>
2025-03-16 14:24:41 +00:00
Erimel
bf2ef355b7 Pontoon: Update French (fr) localization of GUI
Co-authored-by: Erimel <loukalemire@gmail.com>
2025-03-16 14:24:41 +00:00
Butterscotch!
3f1a794148 Full height for manual configuration (#1329)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-03-16 16:24:22 +02:00
Butterscotch!
a0cedde4b7 Unit test toe snap + fix leg tweaks & default proportions (#1350) 2025-03-16 14:07:07 +02:00
Butterscotch!
eb23778bec Fix moving average quaternion desync & smoothing (#1351) 2025-03-16 14:04:10 +02:00
Romain D.
5353101fff Add more actions to Websocket JSON API (#1347) 2025-03-14 15:31:41 +02:00
DevMiner
d32f91e6b8 fix(solarxr): unbreak other SolarXR clients caused by Vive emulation removal (#1348) 2025-03-14 15:26:44 +02:00
Butterscotch!
f0d07466cd Add skeleton resets unit tests (#1336) 2025-03-11 19:03:20 +02:00
Butterscotch!
49bcc86c4e Fix manual height not submitting form value (#1342)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-03-11 17:43:12 +01:00
lucas lelievre
e7b29b1a2e Better Error page when connection lost + Open logs folder btn (#1340) 2025-03-11 13:12:04 +01:00
lucas lelievre
b2c030c275 Scaled proportions as default (#1339) 2025-03-11 12:50:11 +01:00
lucas lelievre
9e92450700 Merge branch 'main' into 1327-scaled-proportions-should-be-the-main-option 2025-03-11 11:35:50 +01:00
loucass003
2eab516216 Disable Autobone when no vr headset 2025-03-11 11:06:04 +01:00
loucass003
808dd0f670 Better tones -> with poly 2025-03-10 16:24:02 +01:00
loucass003
171ad8b271 Lint 2025-03-10 11:35:20 +01:00
loucass003
50585e40c8 Scaled proportions as default + Autobone moved into manual proportions + Removal of the choose page between manual and scaled proportions + Move export/import proportions to manual 2025-03-10 11:33:55 +01:00
lucas lelievre
9a14eef55e BVH Status and Paused tracking is not presisted in gui (#1332) 2025-03-10 03:02:40 +01:00
lucas lelievre
264710a1fb Redo all tap sounds with better volume and tones / remove mp3s (#1338) 2025-03-10 02:48:43 +01:00
Butterscotch!
c649b9a5fe Fix skeleton config "changed" arrays (#1330) 2025-03-08 13:25:25 -03:00
lucas lelievre
7ab6515a10 Better status messages and ui feedback when needing user actions on the firmware tool (#1331) 2025-03-06 19:45:27 +03:00
Butterscotch!
38f40cadbf Estimate full height and clarify height config translations (#1325) 2025-03-04 19:00:36 +02:00
Butterscotch!
9febcf8166 New PoseFrame streaming format (#1284) 2025-03-04 18:58:41 +02:00
Butterscotch!
4ae197618e Use bones for AutoBone error calculation (#1312) 2025-03-04 18:55:51 +02:00
Butterscotch!
4dac7d28e4 Fix GUI crashing on standalone builds (#1310) 2025-03-04 18:53:36 +02:00
Butterscotch!
589ed15ac2 Remove Vive Emulation (#1324) 2025-03-04 18:52:43 +02:00
Erimel
e944b8a8fa Add a toggle for OSCQuery (#1322)
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
2025-03-04 18:29:23 +02:00
rcelyte
2c5ec62c11 Fix erroneous sign extension in Protobuf IPC packet handling (#1318) 2025-03-04 17:12:16 +02:00
Butterscotch!
6b7ec2adc6 AutoBone iteration abstraction (#1301) 2025-03-04 17:11:07 +02:00
Butterscotch!
20c8c3e7c8 Update firmware constants and translations (#1319) 2025-03-04 17:09:02 +02:00
Butterscotch!
ceb6bd6f5a Document fields in TrackerResetsHandler (#1320) 2025-03-04 17:07:03 +02:00
Butterscotch!
9c4ff8c064 Accept rest calibration in sensor info packet (#1317) 2025-02-26 12:35:49 +03:00
SlimeVR-bot
4f364acecc New Pontoon translations (#1296)
Co-authored-by: nekomona <nekomona@163.com>
Co-authored-by: ZZNYJIDI <zznyjidi@hotmail.com>
Co-authored-by: Yingxue <a1175815821@163.com>
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-02-13 01:30:12 +02:00
lucas lelievre
f701075cf3 Improve reset sounds (#1294) 2025-02-13 01:13:05 +02:00
Collin
d498feee31 Disable correct with constraints server side and hide option in GUI (#1303) 2025-02-13 00:27:05 +02:00
jabberrock
ecae40ece8 Updates nodeOffset when body proportions change (#1304) 2025-02-13 00:26:54 +02:00
lucas lelievre
2eb4bab240 Make tap over threshold always available (#1300) 2025-02-10 01:45:14 +03:00
Erimel
9e666a74e1 Revert "Fix over 180 degrees rotations in HumanSkeleton" (#1302) 2025-02-10 01:43:14 +03:00
lucas lelievre
f89f9ae35b Move autimatic steamvr tracker assignment checkbox first (#1299) 2025-02-04 19:35:49 +01:00
loucass003
2cfda2272d Revert "lint"
This reverts commit d63587fcd1.
2025-02-03 00:21:27 +01:00
loucass003
256545ab62 Revert "Change reset sounds so you have clues at the begining and end of the reset action"
This reverts commit 18778db7c3.
2025-02-03 00:21:05 +01:00
loucass003
d63587fcd1 lint 2025-02-03 00:17:26 +01:00
loucass003
18778db7c3 Change reset sounds so you have clues at the begining and end of the reset action 2025-02-03 00:13:16 +01:00
lucas lelievre
fb23ba8522 Small ui fixes on firmware updates (#1291) 2025-01-31 13:54:26 +01:00
lucas lelievre
15ea04d7c9 New Pontoon translations (#1239) 2025-01-31 13:42:21 +01:00
Meow Wei
154fb39794 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
a02de9790a Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
98f40ac920 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
555e6959da Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
namakeingo
f8520cd379 Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
2025-01-31 12:35:15 +00:00
namakeingo
aee41cc3d4 Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
2025-01-31 12:35:15 +00:00
Uriel
0d8135a09e Pontoon: Update Latinamerican Spanish (es-419) localization of GUI
Co-authored-by: Uriel <imurx@proton.me>
2025-01-31 12:35:15 +00:00
namakeingo
2c7b5c44f1 Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
2025-01-31 12:35:15 +00:00
namakeingo
1a73ea7f58 Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
2025-01-31 12:35:15 +00:00
namakeingo
4355a987ca Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
bf7351c57d Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Vyolex
0c3090b716 Pontoon: Update Dutch (nl) localization of GUI
Co-authored-by: Vyolex <25586367+Vyolex@users.noreply.github.com>
2025-01-31 12:35:15 +00:00
Vyolex
daace77eb3 Pontoon: Update Dutch (nl) localization of GUI
Co-authored-by: ruben <ruben@balduk.nl>
Co-authored-by: Vyolex <25586367+Vyolex@users.noreply.github.com>
2025-01-31 12:35:15 +00:00
Meow Wei
9e9dd9e9de Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
59e5228b1d Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
e93b06f471 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
93d69711d6 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
b495266a41 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
4acd1015b9 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
509ad76f2c Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
1e7ce92839 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
d960fb3c04 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
0b873977e8 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Meow Wei
1cbde8a1e1 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
Uriel
45173fa069 Pontoon: Update Spain Spanish (es-ES) localization of GUI
Co-authored-by: Uriel <imurx@proton.me>
2025-01-31 12:35:15 +00:00
Uriel
af543a72e2 Pontoon: Update Latinamerican Spanish (es-419) localization of GUI
Co-authored-by: Uriel <imurx@proton.me>
2025-01-31 12:35:15 +00:00
nekomona
a7633d2106 Pontoon: Update Traditional Chinese (zh-Hant) localization of GUI
Co-authored-by: nekomona <nekomona@163.com>
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
namakeingo
5e4bb6f105 Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
2025-01-31 12:35:15 +00:00
Uriel
e526530ef0 Pontoon: Update Spain Spanish (es-ES) localization of GUI
Co-authored-by: Uriel <imurx@proton.me>
2025-01-31 12:35:15 +00:00
Uriel
449235843e Pontoon: Update Latinamerican Spanish (es-419) localization of GUI
Co-authored-by: Uriel <imurx@proton.me>
2025-01-31 12:35:15 +00:00
Mama-Gen
591e85eded Pontoon: Update Brazilian Portuguese (pt-BR) localization of GUI
Co-authored-by: Mama-Gen <tiodapamonha145@gmail.com>
2025-01-31 12:35:15 +00:00
nekomona
f8673a97ed Pontoon: Update Simplified Chinese (zh-Hans) localization of GUI
Co-authored-by: nekomona <nekomona@163.com>
Co-authored-by: Yingxue <a1175815821@163.com>
2025-01-31 12:35:15 +00:00
namakeingo
7aa4e62bbf Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
2025-01-31 12:35:15 +00:00
nekomona
0225d27abb Pontoon: Update Simplified Chinese (zh-Hans) localization of GUI
Co-authored-by: nekomona <nekomona@163.com>
Co-authored-by: Meow Wei <medicalwei@gmail.com>
2025-01-31 12:35:15 +00:00
namakeingo
e14aa93748 Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
2025-01-31 12:35:15 +00:00
namakeingo
3b0fcf7be7 Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
2025-01-31 12:35:15 +00:00
Etch9
ae03c9dc2a Pontoon: Update Italian (it) localization of GUI
Co-authored-by: namakeingo <namakeingo@gmail.com>
Co-authored-by: Etch9 <mario.mazzara30@gmail.com>
2025-01-31 12:35:15 +00:00
lucas lelievre
b19d38a64f Give voltage value to the battery icon (#1292) 2025-01-31 13:34:53 +01:00
lucas lelievre
92eb829041 Tooltips API for mobile and desktop (#1271) 2025-01-31 11:18:01 +01:00
Uriel
4ea57510ed Make SlimeVR icon rounded (#1286)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-01-29 15:05:00 +01:00
Butterscotch!
d389b5acec Implement skeleton constraint toggles (#1290) 2025-01-29 15:56:36 +02:00
Uriel
eb08cb5aa1 Improve close window request checks (#1285) 2025-01-29 14:52:49 +01:00
Uriel
d102cb3778 add university of maryland mirror for Eclipse formatter (#1289) 2025-01-26 19:33:52 +03:00
Collin
bfb30c472b Skeleton Constraints (#1222)
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
2025-01-26 12:36:10 -03:00
Butterscotch!
4ad9d5cfca Expand skeleton height config (#1156)
Co-authored-by: Uriel <imurx@proton.me>
2025-01-23 17:21:38 +01:00
Uriel
2c49d1dc65 Update apt cache action to fix CI error (#1287) 2025-01-23 17:06:44 +01:00
rcelyte
fcd82324a9 SolarXR IPC Socket (#1247) 2025-01-22 18:53:48 +01:00
Butterscotch!
b4df1d1444 Improve log file behaviour (#1262) 2025-01-22 19:30:28 +02:00
Erimel
181ba089c2 Attempt to fix moving average quaternions not resetting properly (#1278) 2025-01-13 23:24:22 +01:00
Yao Wei
394c1dd438 i18n: improve SlimeVR tracker flashing instruction (#1276) 2025-01-07 18:12:34 +01:00
JovannMC
2ff6e99385 Fix "trackers still on" when closing via tray (#1265)
Co-authored-by: Eiren Rain <Eirenliel@users.noreply.github.com>
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2025-01-06 15:16:26 +01:00
Uriel
3614612ac2 Fix CI bugs that appeared recently (#1272) 2025-01-03 01:29:21 +03:00
Butterscotch!
dfeb4e79a4 AutoBone bone contribution fix & cleanup (#1249) 2025-01-03 01:28:31 +03:00
Erimel
a606c5a375 Fix over 180 degrees rotations in HumanSkeleton (#1277) 2025-01-02 22:24:56 +01:00
Butterscotch!
4e698b693c Don't filter non-temporal trackers (#1255) 2025-01-03 00:19:10 +03:00
Uriel
208beff5e5 Merge branch 'main' into sentry-gui 2024-12-21 00:20:23 +01:00
Uriel
0eb81eec04 Disable update notifications for pnpm 2024-12-20 23:54:26 +01:00
Butterscotch!
35f5d132c8 Use jSerialComm 2.11.1-SNAPSHOT (#1269) 2024-12-20 17:06:37 +01:00
Uriel
02cc2496f0 Fix eslint error 2024-12-20 15:34:53 +01:00
loucass003
d84eaa203a Add more feedback 2024-12-20 00:48:23 +01:00
Uriel
e0d372e9bb fix translation files key naming 2024-12-20 00:00:32 +01:00
Uriel
b7a54f6aef fix bugs and stuff 2024-12-19 21:54:42 +01:00
lucas lelievre
9d65477af7 Automatic firmware update for official trackers (#1241)
Co-authored-by: ImUrX <urielfontan2002@gmail.com>
Co-authored-by: Uriel <imurx@proton.me>
Co-authored-by: Butterscotch! <bscotchvanilla@gmail.com>
Co-authored-by: Eiren Rain <Eirenliel@users.noreply.github.com>
2024-12-19 20:03:43 +02:00
lucas lelievre
73cdc890f2 Firmware tool (#880)
Co-authored-by: ImUrX <urielfontan2002@gmail.com>
Co-authored-by: Uriel <imurx@proton.me>
2024-12-19 19:35:54 +02:00
Vocaloid Fan
e8afb49685 Refactor + Check for env variables (#1261) 2024-12-12 17:05:54 -03:00
Uriel
716bc7bcf6 add modal and text 2024-12-12 19:00:39 +01:00
Uriel
a05ae8c043 Merge branch 'main' into sentry-gui 2024-12-12 17:40:42 +01:00
Uriel
bc487f8655 Fix Appimage crashing for people (#1253) 2024-12-11 17:09:17 +02:00
Uriel
2708b5a15b Small improvements on packaging for Tauri (#1254) 2024-12-11 17:08:17 +02:00
Vocaloid Fan
b52e705dc4 Fix Rust logging by disabling ANSI for file output. (#1256) 2024-12-08 12:33:54 -03:00
Eiren Rain
1a5584bcfc Fix SolarXR on main 2024-12-07 12:22:22 +01:00
Erimel
8238f569c6 Flex resistance and angle support (#1242) 2024-11-27 01:11:19 +03:00
abb128
1051d0c5e5 Improve VRM model file input (#1246) 2024-11-21 21:48:17 +02:00
Collin
8fe2540f91 Potentially fix weird hip issues (#1244) 2024-11-21 21:46:53 +02:00
sctanf
6232903691 make HID Device a slime (#1235) 2024-11-21 21:46:34 +02:00
Uriel
819d2fc3b8 Fix error on labeler 2024-11-20 21:14:10 +01:00
Uriel
565a64b0e3 Make GUI check well against translation changes (#1227) 2024-11-19 22:15:48 +01:00
Erimel
18f291345d Finger tracking skeleton and VMC support (#1091) 2024-11-15 19:10:17 +02:00
Uriel
67df399f14 Fix ktor crashing because proguard minifies for Android (#1240) 2024-11-14 02:25:49 +03:00
Uriel
222359692e Support not having git for making android builds (#1237) 2024-11-13 18:08:56 -03:00
Uriel
288db165a7 Repair husky migration to v9 2024-11-11 22:55:27 +01:00
Uriel
9371938a00 improve text and config of sentry 2024-09-07 13:46:01 +02:00
Uriel
eeac1586f5 Merge branch 'main' into sentry-gui 2024-09-07 13:41:33 +02:00
Uriel
384a0c2252 smol improvements 2024-08-23 17:17:26 +02:00
Uriel
ec9845364d continue integration 2024-08-23 00:32:22 +02:00
Uriel
93944aad55 start implementing sentry 2024-08-22 17:12:28 +02:00
Ilia Ki
d992cd3f63 Prepare Firmware Constants for Gestures Release 2024-04-21 13:11:05 +07:00
738 changed files with 57131 additions and 25389 deletions

1
.envrc
View File

@@ -2,7 +2,6 @@ if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
fi
nix_direnv_watch_file rust-toolchain.toml
nix_direnv_watch_file package.json
if ! use flake . --impure
then

31
.github/CODEOWNERS vendored
View File

@@ -2,23 +2,22 @@
* @Eirenliel
# Make everyone be able to approve SolarXR submodule changes
/solarxr-protocol @ButterscotchV @Erimelowo @ImUrX @loucass003
/solarxr-protocol @ButterscotchV @Erimelowo @loucass003
# Make Loucas and Uriel the owners of all GUI stuff
/gui/ @ImUrX @loucass003
/pnpm-lock.yaml @ImUrX @loucass003
/pnpm-workspace.yaml @ImUrX @loucass003
# Make Loucass the owner of all GUI stuff
/gui/ @loucass003
/pnpm-lock.yaml @loucass003
/pnpm-workspace.yaml @loucass003
# Uriel and Erimel responsible for i18n
/gui/public/i18n/ @ImUrX @Erimelowo
/gui/src/i18n/ @ImUrX @Erimelowo
/l10n.toml @ImUrX @Erimelowo
# loucass003 and Erimel responsible for i18n
/gui/public/i18n/ @loucass003 @Erimelowo @ImSapphire
/gui/src/i18n/ @loucass003 @Erimelowo
/l10n.toml @loucass003 @Erimelowo
/gui/src/components/settings/ @Erimelowo @ImUrX
/gui/src/components/settings/ @Erimelowo @loucass003
# Rust part of the GUI
/gui/src-tauri/ @ImUrX
/Cargo.lock @ImUrX
/gui/electron/ @loucass003
# Some server code~
/server/ @ButterscotchV @Eirenliel @Erimelowo
@@ -32,7 +31,7 @@
/server/src/main/java/dev/slimevr/filtering/ @Erimelowo
# Linux files
*.nix @ImUrX
/flake.lock @ImUrX
/dev.slimevr.SlimeVR.metainfo.xml @ImUrX
/.envrc @ImUrX
*.nix @loucass003
/flake.lock @loucass003
/dev.slimevr.SlimeVR.metainfo.xml @loucass003
/.envrc @loucass003

3
.github/labeler.yml vendored
View File

@@ -13,8 +13,7 @@
"Area: GUI":
- all:
- changed-files:
- any-glob-to-any-file: "gui/**/*"
- all-globs-to-all-files: "!gui/public/i18n/**"
- all-globs-to-any-file: ["gui/**/*", "!gui/public/i18n/**/*"]
"Area: Hardware Protocol":
- changed-files:
- any-glob-to-any-file: "server/core/src/main/java/dev/slimevr/tracking/trackers/udp/**"

View File

@@ -21,13 +21,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: pnpm/action-setup@v4
- name: Use Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
@@ -42,72 +42,61 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, windows-latest, macos-latest]
os:
[
ubuntu-22.04,
windows-latest,
macos-latest,
ubuntu-22.04-arm,
windows-11-arm,
]
runs-on: ${{ matrix.os }}
env:
# Don't mark warnings as errors
CI: false
BUILD_ARCH: ${{ endsWith(matrix.os, 'arm') && 'aarch64' || 'amd64' }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: recursive
- if: matrix.os == 'ubuntu-22.04'
name: Set up Linux dependencies
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: libgtk-3-dev webkit2gtk-4.1 libappindicator3-dev librsvg2-dev patchelf
# Increment to invalidate the cache
version: 1.0
# Enables a workaround to attempt to run pre and post install scripts
execute_install_scripts: true
# Disables uploading logs as a build artifact
debug: false
- name: Cache cargo dependencies
uses: Swatinem/rust-cache@v2
with:
shared-key: "${{ matrix.os }}"
- uses: pnpm/action-setup@v4
- name: Use Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: Install dependencies
shell: bash
run: pnpm i
- name: Build
shell: bash
run: |
pnpm i
pnpm run skipbundler --config $( ./gui/scripts/gitversion.mjs )
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
NODE_OPTIONS: ${{ matrix.os == 'macos-latest' && '--max-old-space-size=4096' || '' }}
run: cd gui && pnpm run build
- if: matrix.os == 'windows-latest'
- if: startsWith(matrix.os, 'windows')
name: Upload a Build Artifact (Windows)
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
# Artifact name
name: SlimeVR-GUI-Windows
# A file, directory or wildcard pattern that describes what to upload
path: target/release/slimevr.exe
name: ${{ format('SlimeVR-GUI-Windows-{0}', env.BUILD_ARCH) }}
path: gui/out/renderer/**/*
- if: matrix.os == 'ubuntu-22.04'
- if: startsWith(matrix.os, 'ubuntu')
name: Upload a Build Artifact (Linux)
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
# Artifact name
name: SlimeVR-GUI-Linux
# A file, directory or wildcard pattern that describes what to upload
path: target/release/slimevr
name: ${{ format('SlimeVR-GUI-Linux-{0}', env.BUILD_ARCH) }}
path: gui/out/renderer/**/*
- if: matrix.os == 'macos-latest'
name: Upload a Build Artifact (macOS)
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
# Artifact name
name: SlimeVR-GUI-macOS
# A file, directory or wildcard pattern that describes what to upload
path: target/release/slimevr
path: gui/out/renderer/**/*

View File

@@ -0,0 +1,34 @@
# This workflow will build the update manifest for the updater and update a GitHub release
name: Generate update manifest
on:
workflow_dispatch:
release:
types: [released]
jobs:
generate-manifest:
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-node@v6
with:
node-version: '22.x'
- name: Generate update-manifest.json
run: |
npx @slimevr/update-manifest-generator@latest
- uses: actions/upload-artifact@v6
with:
name: "update-manifest.json"
path: ./update-manifest.json
- name: Upload update-manifest.json to release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ secrets.UPDATE_MANIFEST_RELEASE_TAG }}
files: ./update-manifest.json
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -19,7 +19,7 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: recursive
@@ -27,15 +27,15 @@ jobs:
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
java-version: "17"
distribution: "adopt"
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
uses: gradle/actions/setup-gradle@v5
- run: mkdir ./gui/dist && touch ./gui/dist/somefile
- run: mkdir -p ./gui/out/renderer && touch ./gui/out/renderer/somefile
shell: bash
- name: Check code formatting
@@ -44,12 +44,11 @@ jobs:
- name: Test with Gradle
run: ./gradlew test
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: recursive
@@ -57,22 +56,22 @@ jobs:
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
java-version: "17"
distribution: "adopt"
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
uses: gradle/actions/setup-gradle@v5
- name: Build with Gradle
run: ./gradlew shadowJar
run: ./gradlew :server:desktop:shadowJar
- name: Upload the Server JAR as a Build Artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
# Artifact name
name: "SlimeVR-Server" # optional, default is artifact
name: 'SlimeVR-Server' # optional, default is artifact
# A file, directory or wildcard pattern that describes what to upload
path: server/desktop/build/libs/slimevr.jar
@@ -85,11 +84,10 @@ jobs:
files: |
server/desktop/build/libs/slimevr.jar
bundle-android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: recursive
@@ -97,41 +95,49 @@ jobs:
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
java-version: "17"
distribution: "adopt"
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
uses: gradle/actions/setup-gradle@v5
- uses: pnpm/action-setup@v4
- name: Use Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: Install dependencies
run: pnpm i
- name: Build GUI
run: |
pnpm i
cd gui && pnpm run build
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: cd gui && pnpm run build
- name: Build with Gradle
run: ./gradlew :server:android:assembleDebug
run: ./gradlew :server:android:build
env:
ANDROID_STORE_FILE: ${{ secrets.ANDROID_STORE_FILE }}
ANDROID_STORE_PASSWD: ${{ secrets.ANDROID_STORE_PASSWD }}
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
ANDROID_KEY_PASSWD: ${{ secrets.ANDROID_KEY_PASSWD }}
- name: Upload the Android Build Artifact
uses: actions/upload-artifact@v4
- name: Upload the Android build artifact
uses: actions/upload-artifact@v6
with:
# Artifact name
name: "SlimeVR-Android" # optional, default is artifact
name: 'SlimeVR-Android' # optional, default is artifact
# A file, directory or wildcard pattern that describes what to upload
path: server/android/build/outputs/apk/*
- name: Prepare for release
if: startsWith(github.ref, 'refs/tags/')
run: |
cp server/android/build/outputs/apk/debug/android-debug.apk ./SlimeVR-android.apk
cp server/android/build/outputs/apk/release/android-release.apk ./SlimeVR-android.apk
- name: Upload to draft release
uses: softprops/action-gh-release@v2
@@ -142,79 +148,105 @@ jobs:
files: |
./SlimeVR-android.apk
- name: Build Google Play release bundle
if: startsWith(github.ref, 'refs/tags/')
run: ./gradlew :server:android:bundleRelease
env:
ANDROID_STORE_FILE: ${{ secrets.ANDROID_GPLAY_STORE_FILE }}
ANDROID_STORE_PASSWD: ${{ secrets.ANDROID_GPLAY_STORE_PASSWD }}
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_GPLAY_KEY_ALIAS }}
ANDROID_KEY_PASSWD: ${{ secrets.ANDROID_GPLAY_KEY_PASSWD }}
- name: Upload the Google Play artifact
uses: actions/upload-artifact@v6
if: startsWith(github.ref, 'refs/tags/')
with:
# Artifact name
name: 'SlimeVR-Android-GPDev' # optional, default is artifact
# A file, directory or wildcard pattern that describes what to upload
path: server/android/build/outputs/bundle/release/*
bundle-linux:
runs-on: ubuntu-22.04
strategy:
matrix:
os: [ubuntu-latest, ubuntu-24.04-arm]
runs-on: ${{ matrix.os }}
needs: [build, test]
if: contains(fromJSON('["workflow_dispatch", "create"]'), github.event_name)
env:
BUILD_ARCH: ${{ endsWith(matrix.os, 'arm') && 'aarch64' || 'amd64' }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v7
with:
name: "SlimeVR-Server"
name: 'SlimeVR-Server'
path: server/desktop/build/libs/
- name: Set up Linux dependencies
uses: awalsh128/cache-apt-pkgs-action@latest
uses: awalsh128/cache-apt-pkgs-action@v1.6.0
with:
packages: libgtk-3-dev webkit2gtk-4.1 libappindicator3-dev librsvg2-dev patchelf libfuse2
packages: |
build-essential curl wget file libssl-dev libgtk-3-dev libappindicator3-dev librsvg2-dev xdg-utils patchelf
# Increment to invalidate the cache
version: 1.0
version: ${{ format('v2.0-electron-{0}', env.BUILD_ARCH) }}
# Enables a workaround to attempt to run pre and post install scripts
execute_install_scripts: true
# Disables uploading logs as a build artifact
debug: false
- name: Cache cargo dependencies
uses: Swatinem/rust-cache@v2
with:
shared-key: "ubuntu-22.04"
- uses: pnpm/action-setup@v4
- name: Use Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: Install dependencies
run: pnpm i
- name: Build
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: |
pnpm i
pnpm run tauri build --config $( ./gui/scripts/gitversion.mjs )
cd gui
pnpm run build
pnpm exec electron-builder --linux --publish never
- name: Make GUI tarball
run: |
tar czf slimevr-gui-dist.tar.gz -C gui/dist/ .
tar czf slimevr-gui-dist.tar.gz -C gui/out/renderer/ .
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v6
if: matrix.os == 'ubuntu-latest'
with:
name: SlimeVR-GUI-Dist
path: ./slimevr-gui-dist.tar.gz
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v6
with:
name: SlimeVR-GUI-Deb
path: target/release/bundle/deb/slimevr*.deb
name: ${{ format('SlimeVR-GUI-Deb-{0}', env.BUILD_ARCH) }}
path: gui/dist/artifacts/*.deb
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v6
with:
name: SlimeVR-GUI-AppImage
path: target/release/bundle/appimage/slimevr*.AppImage
name: ${{ format('SlimeVR-GUI-AppImage-{0}', env.BUILD_ARCH) }}
path: gui/dist/artifacts/*.AppImage
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v6
with:
name: SlimeVR-GUI-RPM
path: target/release/bundle/rpm/slimevr*.rpm
name: ${{ format('SlimeVR-GUI-RPM-{0}', env.BUILD_ARCH) }}
path: gui/dist/artifacts/*.rpm
- name: Prepare for release
if: startsWith(github.ref, 'refs/tags/')
run: |
cp target/release/bundle/appimage/slimevr*.AppImage ./SlimeVR-amd64.appimage
cp target/release/bundle/deb/slimevr*.deb ./SlimeVR-amd64.deb
cp target/release/bundle/rpm/slimevr*.rpm ./SlimeVR-amd64.rpm
cp gui/dist/artifacts/*.AppImage "./SlimeVR-$BUILD_ARCH.appimage"
cp gui/dist/artifacts/*.deb "./SlimeVR-$BUILD_ARCH.deb"
cp gui/dist/artifacts/*.rpm "./SlimeVR-$BUILD_ARCH.rpm"
- name: Upload to draft release
uses: softprops/action-gh-release@v2
@@ -224,72 +256,53 @@ jobs:
generate_release_notes: true
files: |
./slimevr-gui-dist.tar.gz
./SlimeVR-amd64.appimage
./SlimeVR-amd64.deb
./SlimeVR-amd64.rpm
./SlimeVR-*.appimage
./SlimeVR-*.deb
./SlimeVR-*.rpm
bundle-mac:
runs-on: macos-latest
needs: [build, test]
if: contains(fromJSON('["workflow_dispatch", "create"]'), github.event_name)
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v7
with:
name: "SlimeVR-Server"
name: 'SlimeVR-Server'
path: server/desktop/build/libs/
- name: Cache cargo dependencies
uses: Swatinem/rust-cache@v2
with:
shared-key: "macos-latest"
- uses: pnpm/action-setup@v4
- name: Use Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: Build
- name: Install dependencies
run: |
rustup target add x86_64-apple-darwin
pnpm i
pnpm run tauri build --target universal-apple-darwin --config $( ./gui/scripts/gitversion.mjs )
- name: Modify Application
- name: Build
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
NODE_OPTIONS: --max-old-space-size=4096
run: |
cd target/universal-apple-darwin/release/bundle/macos/slimevr.app/Contents/MacOS
cp $( git rev-parse --show-toplevel )/server/desktop/build/libs/slimevr.jar ./
cd ../../../
/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName SlimeVR" slimevr.app/Contents/Info.plist
/usr/libexec/PlistBuddy -c "Set :CFBundleName SlimeVR" slimevr.app/Contents/Info.plist
codesign --sign - --deep --force slimevr.app
mv slimevr.app SlimeVR.app
cd ../dmg/
./bundle_dmg.sh --volname SlimeVR --icon slimevr 180 170 --app-drop-link 480 170 \
--window-size 660 400 --hide-extension ../macos/SlimeVR.app \
--volicon ../macos/SlimeVR.app/Contents/Resources/icon.icns --skip-jenkins \
--eula ../../../../LICENSE-MIT slimevr.dmg ../macos/SlimeVR.app
cd gui
pnpm run build
pnpm exec electron-builder --mac --universal --publish never
- uses: actions/upload-artifact@v4
with:
name: SlimeVR-GUI-MacApp
path: target/universal-apple-darwin/release/bundle/macos/SlimeVR*.app
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v6
with:
name: SlimeVR-GUI-MacDmg
path: target/universal-apple-darwin/release/bundle/dmg/slimevr.dmg
path: gui/dist/artifacts/*.dmg
- name: Prepare for release
if: startsWith(github.ref, 'refs/tags/')
run: |
cp target/universal-apple-darwin/release/bundle/dmg/slimevr.dmg ./SlimeVR-mac.dmg
cp gui/dist/artifacts/*.dmg ./SlimeVR-mac.dmg
- name: Upload to draft release
uses: softprops/action-gh-release@v2
@@ -300,52 +313,60 @@ jobs:
files: |
./SlimeVR-mac.dmg
bundle-windows:
runs-on: windows-latest
strategy:
matrix:
os: [windows-latest, windows-11-arm]
runs-on: ${{ matrix.os }}
needs: [build, test]
if: contains(fromJSON('["workflow_dispatch", "create"]'), github.event_name)
env:
BUILD_ARCH: ${{ endsWith(matrix.os, 'arm') && 'win-aarch64' || 'win64' }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v7
with:
name: "SlimeVR-Server"
name: 'SlimeVR-Server'
path: server/desktop/build/libs/
- name: Cache cargo dependencies
uses: Swatinem/rust-cache@v2
with:
shared-key: "windows-latest"
- uses: pnpm/action-setup@v4
- name: Use Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: Install dependencies
shell: bash
run: pnpm i
- name: Build
shell: bash
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: |
pnpm i
pnpm run skipbundler --config $( ./gui/scripts/gitversion.mjs )
cd gui
pnpm run build
pnpm exec electron-builder --win portable --publish never
- name: Bundle to zips
shell: bash
run: |
mkdir SlimeVR
cp gui/src-tauri/icons/icon.ico ./SlimeVR/run.ico
cp gui/dist/artifacts/*.exe ./SlimeVR/slimevr.exe
cp gui/electron/resources/icons/icon.ico ./SlimeVR/run.ico
cp server/desktop/build/libs/slimevr.jar ./SlimeVR/slimevr.jar
cp server/core/resources/* ./SlimeVR/
cp target/release/slimevr.exe ./SlimeVR/
7z a -tzip SlimeVR-win64.zip ./SlimeVR/
7z a -tzip "SlimeVR-$BUILD_ARCH.zip" ./SlimeVR/
- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v6
with:
name: SlimeVR-GUI-Windows
name: ${{ format('SlimeVR-GUI-Windows-{0}', env.BUILD_ARCH) }}
path: ./SlimeVR*.zip
- name: Upload to draft release
@@ -354,4 +375,4 @@ jobs:
with:
draft: true
generate_release_notes: true
files: ./SlimeVR-win64.zip
files: ./SlimeVR-*.zip

View File

@@ -17,6 +17,6 @@ jobs:
pull-requests: write
steps:
- uses: actions/labeler@v5
- uses: actions/labeler@v6
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

View File

@@ -3,22 +3,19 @@ on:
push:
branches:
- pontoon
jobs:
pull_request:
if: ${{ github.repository == 'SlimeVR/SlimeVR-Server' }}
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: repo-sync/pull-request@v2
with:
destination_branch: "main"
pr_title: "New Pontoon translations"
pr_body: "Please don't squash me 🥺"
pr_label: "Area: Translation"
github_token: ${{ secrets.PONTOON_BOT_KEY }}
- name: pull-request
env:
GH_TOKEN: ${{ secrets.PONTOON_BOT_KEY }}
run: |
gh_pr_up() { gh pr create "$@" --label "Area: Translation" --base main || gh pr edit "$@"; }
gh_pr_up --title "New Pontoon translations" --body "Please don't squash me 🥺"

View File

@@ -15,7 +15,7 @@ jobs:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
ref: pontoon
submodules: recursive

10
.gitignore vendored
View File

@@ -34,12 +34,16 @@
# ignore gradle build folder
build/
# Rust build artifacts
/target
# direnv has been claimed for Nix usage
.direnv/
.devenv
# Ignore Android local properties
local.properties
# Ignore temporary config
vrconfig.yml.tmp
# Nixos
.bin/

View File

@@ -1 +1 @@
18.12.1
22.17.0

1
.npmrc Normal file
View File

@@ -0,0 +1 @@
update-notifier=false

View File

@@ -7,7 +7,6 @@
"gaborv.flatbuffers",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"rust-lang.rust-analyzer",
"bradlc.vscode-tailwindcss",
"EditorConfig.EditorConfig",
"macabeus.vscode-fluent",

View File

@@ -7,8 +7,6 @@ This document describes essential knowledge required to contribute to the SlimeV
- [Git](https://git-scm.com/downloads)
- [Java v17+](https://adoptium.net/temurin/releases/)
- [Node.js v16.9+](https://nodejs.org) (We recommend the use of `nvm` instead of installing Node.js directly)
- [Microsoft Edge WebView2](https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section) or `webkit2gtk` for Linux
- [Rust](https://rustup.rs)
## Cloning the code
First, clone the codebase using git in a terminal in the folder you want.
@@ -32,13 +30,12 @@ be at `server/build/libs/slimevr.jar` (you can ignore `server.jar`).
(Note: Your IDE may be able to do all of the above for you.)
### Tauri (gui)
### Electron (gui)
- Activate corepack (included with Node.JS) via `corepack enable` (might require administrator permissions)
- Run `pnpm i` in your IDE's terminal to download and install dependencies.
- To launch the GUI in dev mode, run `pnpm gui`.
- Finally, to compile for production, run `pnpm run tauri build`. The result
will be at `target/release/slimevr.exe`.
- Finally, to compile for production, run `pnpm build`. The result
## Code style
@@ -84,7 +81,7 @@ Import the formatting settings defined in `spotless.xml`, like this:
Eclipse will only do a subset of the checks in `spotless`, so you may still want to do
`./gradlew spotlessApply` if you ever see an error from spotless.
### Tauri (gui)
### Electron (gui)
We use ESLint and Prettier to format GUI code.
- First, go into the GUI's directory with your terminal by running `cd gui`.
@@ -105,6 +102,7 @@ When touching SolarXR:
- After editing files, you should run `cd solarxr-protocol`, then either run
`./generate-flatbuffer.ps1` (Windows) or `./generate-flatbuffer.sh` (Linux/OSX)
- Make sure to commit your changes inside the submodule.
- To make sure the gui use the latest generated code, run `pnpm i`.
## Code Licensing
SlimeVR uses dual MIT and Apache-2.0 license. Be sure that any code that you reference,
@@ -115,3 +113,9 @@ licensed under `GPL-v3`.
## Discord
We use discord *a lot* to coordinate and discuss development. Come join us at
https://discord.gg/SlimeVR!
## Use of AI
We DO NOT accept contributions that are generated with AI (for example, "vibe-coding").
If you do use AI, and you believe your usage of AI is reasonable, you must clearly disclose
how you used AI in your submission.

5628
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,16 +0,0 @@
[workspace]
# Use 2021 edition resolver, better resolves crate features.
resolver = "2"
# A list of all rust crates in the workspace.
members = ["gui/src-tauri"]
# These settings can be inherited by workspace members
[workspace.package]
edition = "2021"
license = "MIT OR Apache-2.0"
rust-version = "1.75" # Tauri's MSRV
repository = "https://github.com/SlimeVR/SlimeVR-Server"
[profile.release]
lto = "thin"

View File

@@ -47,6 +47,11 @@ on SlimeVR, you need to be aware of them:**
Please refer to the [LICENSE-MIT] and [LICENSE-APACHE] files if you are at any point
uncertain what the exact requirements are.
## Trademark and Logo use
**SlimeVR is a trademark or a registered trademark of SlimeVR B.V. Usage of SlimeVR software, hardware, or other intellectual property in this or other repositories does not grant you the right to use SlimeVR trademark as your own.**
For more information, please refer to the [TRADEMARK].
## Contributions
Any contributions submitted for inclusion in this repository will be dual-licensed under
either:
@@ -64,3 +69,7 @@ okay with this and that you are authorized to provide the above licenses.
[LICENSE-MIT]: LICENSE-MIT
[LICENSE-APACHE]: LICENSE-APACHE
[TRADEMARK]: TRADEMARK.md
*if you read this, u cute*

33
TRADEMARK.md Normal file
View File

@@ -0,0 +1,33 @@
## SlimeVR is a trademark or a registered trademark of SlimeVR B.V.
**Usage of SlimeVR software, hardware, or other intellectual property in this or other repositories does not grant you the right to use SlimeVR trademark as your own.**
The purpose of a trademark is to remove uncertainty for users and customers regarding the product's manufacturer or endorsement. You're not allowed to market your product using SlimeVR name, and your usage of the name should be only factual and descriptive. For example, calling original SlimeVR products SlimeVR or describing compatibility of other products or derivatives. This applies to all products, including software, and hardware including non-official Full-Body Trackers.
**Here are a few _acceptable_ uses of SlimeVR name when selling unofficial Slime trackers:**
* SlimeVR-compatible trackers
* Unofficial SlimeVR trackers / Non-official SlimeVR trackers
* DIY SlimeVR trackers
* Third-party SlimeVR Trackers
* Custom SlimeVR-compatible trackers
* < Your Brand > Slime Trackers
* Using "SlimeVR" as a search tag
**_Unacceptable_ uses include, but are not limited to:**
* SlimeVR store
* Buy SlimeVR
* SlimeVR Trackers
* Original SlimeVR
* Official SlimeVR
* SlimeVR BMI270 (or any other IMU model along with SlimeVR name)
* < Your brand > SlimeVR / < your brand > SlimeVR Trackers
Use of the SlimeVR name that can cause confusion is not allowed in any part of the listing, including, but not limited to: product title, product description, product metadata, site title, site name, site metadata, site texts, social media posts, or other advertisement.
Also, please ensure you use the correct spelling and capitalization: only **"SlimeVR" is acceptable**. Not "Slimevr", "slimevr", or "Slime VR". You're allowed to use the word "slime" as you wish, it's not a trademark.
Please understand that we have an obligation to reduce confusion for the customers, and we believe that our usage terms are generous compared to many other companies and products. This applies to all sellers or derivative products, we do not make exceptions.
---
If you have any questions about SlimeVR trademark or copyrighted materials, you can reach out to us at *tm[at]slimevr.dev*.

242
deny.toml
View File

@@ -1,242 +0,0 @@
# This template contains all of the possible sections and their default values
# Note that all fields that take a lint level have these possible values:
# * deny - An error will be produced and the check will fail
# * warn - A warning will be produced, but the check will not fail
# * allow - No warning or error will be produced, though in some cases a note
# will be
# The values provided in this template are the default values that will be used
# when any section or field is not specified in your own configuration
# Root options
# The graph table configures how the dependency graph is constructed and thus
# which crates the checks are performed against
[graph]
# If 1 or more target triples (and optionally, target_features) are specified,
# only the specified targets will be checked when running `cargo deny check`.
# This means, if a particular package is only ever used as a target specific
# dependency, such as, for example, the `nix` crate only being used via the
# `target_family = "unix"` configuration, that only having windows targets in
# this list would mean the nix crate, as well as any of its exclusive
# dependencies not shared by any other crates, would be ignored, as the target
# list here is effectively saying which targets you are building for.
targets = [
# The triple can be any string, but only the target triples built in to
# rustc (as of 1.40) can be checked against actual config expressions
#"x86_64-unknown-linux-musl",
# You can also specify which target_features you promise are enabled for a
# particular target. target_features are currently not validated against
# the actual valid features supported by the target architecture.
#{ triple = "wasm32-unknown-unknown", features = ["atomics"] },
]
# When creating the dependency graph used as the source of truth when checks are
# executed, this field can be used to prune crates from the graph, removing them
# from the view of cargo-deny. This is an extremely heavy hammer, as if a crate
# is pruned from the graph, all of its dependencies will also be pruned unless
# they are connected to another crate in the graph that hasn't been pruned,
# so it should be used with care. The identifiers are [Package ID Specifications]
# (https://doc.rust-lang.org/cargo/reference/pkgid-spec.html)
#exclude = []
# If true, metadata will be collected with `--all-features`. Note that this can't
# be toggled off if true, if you want to conditionally enable `--all-features` it
# is recommended to pass `--all-features` on the cmd line instead
all-features = false
# If true, metadata will be collected with `--no-default-features`. The same
# caveat with `all-features` applies
no-default-features = false
# If set, these feature will be enabled when collecting metadata. If `--features`
# is specified on the cmd line they will take precedence over this option.
#features = []
# The output table provides options for how/if diagnostics are outputted
[output]
# When outputting inclusion graphs in diagnostics that include features, this
# option can be used to specify the depth at which feature edges will be added.
# This option is included since the graphs can be quite large and the addition
# of features from the crate(s) to all of the graph roots can be far too verbose.
# This option can be overridden via `--feature-depth` on the cmd line
feature-depth = 1
# This section is considered when running `cargo deny check advisories`
# More documentation for the advisories section can be found here:
# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html
[advisories]
# The path where the advisory databases are cloned/fetched into
#db-path = "$CARGO_HOME/advisory-dbs"
# The url(s) of the advisory databases to use
#db-urls = ["https://github.com/rustsec/advisory-db"]
# A list of advisory IDs to ignore. Note that ignored advisories will still
# output a note when they are encountered.
ignore = [
#"RUSTSEC-0000-0000",
#{ id = "RUSTSEC-0000-0000", reason = "you can specify a reason the advisory is ignored" },
#"a-crate-that-is-yanked@0.1.1", # you can also ignore yanked crate versions if you wish
#{ crate = "a-crate-that-is-yanked@0.1.1", reason = "you can specify why you are ignoring the yanked crate" },
]
# If this is true, then cargo deny will use the git executable to fetch advisory database.
# If this is false, then it uses a built-in git library.
# Setting this to true can be helpful if you have special authentication requirements that cargo-deny does not support.
# See Git Authentication for more information about setting up git authentication.
#git-fetch-with-cli = true
# This section is considered when running `cargo deny check licenses`
# More documentation for the licenses section can be found here:
# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html
[licenses]
# List of explicitly allowed licenses
# See https://spdx.org/licenses/ for list of possible licenses
# [possible values: any SPDX 3.11 short identifier (+ optional exception)].
allow = [
"MIT",
"Apache-2.0",
"Apache-2.0 WITH LLVM-exception",
"Unicode-3.0",
"Unicode-DFS-2016",
"MIT-0",
"ISC",
"BSD-3-Clause",
"Zlib",
"MPL-2.0",
]
# The confidence threshold for detecting a license from license text.
# The higher the value, the more closely the license text must be to the
# canonical license text of a valid SPDX license file.
# [possible values: any between 0.0 and 1.0].
confidence-threshold = 0.8
# Allow 1 or more licenses on a per-crate basis, so that particular licenses
# aren't accepted for every possible crate as with the normal allow list
exceptions = [
# Each entry is the crate and version constraint, and its specific allow
# list
#{ allow = ["Zlib"], crate = "adler32" },
]
# Some crates don't have (easily) machine readable licensing information,
# adding a clarification entry for it allows you to manually specify the
# licensing information
#[[licenses.clarify]]
# The package spec the clarification applies to
#crate = "ring"
# The SPDX expression for the license requirements of the crate
#expression = "MIT AND ISC AND OpenSSL"
# One or more files in the crate's source used as the "source of truth" for
# the license expression. If the contents match, the clarification will be used
# when running the license check, otherwise the clarification will be ignored
# and the crate will be checked normally, which may produce warnings or errors
# depending on the rest of your configuration
#license-files = [
# Each entry is a crate relative path, and the (opaque) hash of its contents
#{ path = "LICENSE", hash = 0xbd0eed23 }
#]
[licenses.private]
# If true, ignores workspace crates that aren't published, or are only
# published to private registries.
# To see how to mark a crate as unpublished (to the official registry),
# visit https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field.
ignore = false
# One or more private registries that you might publish crates to, if a crate
# is only published to private registries, and ignore is true, the crate will
# not have its license(s) checked
registries = [
#"https://sekretz.com/registry
]
# This section is considered when running `cargo deny check bans`.
# More documentation about the 'bans' section can be found here:
# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html
[bans]
# Lint level for when multiple versions of the same crate are detected
multiple-versions = "warn"
# Lint level for when a crate version requirement is `*`
wildcards = "allow"
# The graph highlighting used when creating dotgraphs for crates
# with multiple versions
# * lowest-version - The path to the lowest versioned duplicate is highlighted
# * simplest-path - The path to the version with the fewest edges is highlighted
# * all - Both lowest-version and simplest-path are used
highlight = "all"
# The default lint level for `default` features for crates that are members of
# the workspace that is being checked. This can be overridden by allowing/denying
# `default` on a crate-by-crate basis if desired.
workspace-default-features = "allow"
# The default lint level for `default` features for external crates that are not
# members of the workspace. This can be overridden by allowing/denying `default`
# on a crate-by-crate basis if desired.
external-default-features = "allow"
# List of crates that are allowed. Use with care!
allow = [
#"ansi_term@0.11.0",
#{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is allowed" },
]
# List of crates to deny
deny = [
#"ansi_term@0.11.0",
#{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is banned" },
# Wrapper crates can optionally be specified to allow the crate when it
# is a direct dependency of the otherwise banned crate
#{ crate = "ansi_term@0.11.0", wrappers = ["this-crate-directly-depends-on-ansi_term"] },
]
# List of features to allow/deny
# Each entry the name of a crate and a version range. If version is
# not specified, all versions will be matched.
#[[bans.features]]
#crate = "reqwest"
# Features to not allow
#deny = ["json"]
# Features to allow
#allow = [
# "rustls",
# "__rustls",
# "__tls",
# "hyper-rustls",
# "rustls",
# "rustls-pemfile",
# "rustls-tls-webpki-roots",
# "tokio-rustls",
# "webpki-roots",
#]
# If true, the allowed features must exactly match the enabled feature set. If
# this is set there is no point setting `deny`
#exact = true
# Certain crates/versions that will be skipped when doing duplicate detection.
skip = [
#"ansi_term@0.11.0",
#{ crate = "ansi_term@0.11.0", reason = "you can specify a reason why it can't be updated/removed" },
]
# Similarly to `skip` allows you to skip certain crates during duplicate
# detection. Unlike skip, it also includes the entire tree of transitive
# dependencies starting at the specified crate, up to a certain depth, which is
# by default infinite.
skip-tree = [
#"ansi_term@0.11.0", # will be skipped along with _all_ of its direct and transitive dependencies
#{ crate = "ansi_term@0.11.0", depth = 20 },
]
# This section is considered when running `cargo deny check sources`.
# More documentation about the 'sources' section can be found here:
# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html
[sources]
# Lint level for what to happen when a crate from a crate registry that is not
# in the allow list is encountered
unknown-registry = "warn"
# Lint level for what to happen when a crate from a git repository that is not
# in the allow list is encountered
unknown-git = "warn"
# List of URLs for allowed crate registries. Defaults to the crates.io index
# if not specified. If it is specified but empty, no registries are allowed.
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
# List of URLs for allowed Git repositories
allow-git = []
[sources.allow-org]
# 1 or more github.com organizations to allow git sources for
github = [""]
# 1 or more gitlab.com organizations to allow git sources for
gitlab = [""]
# 1 or more bitbucket.org organizations to allow git sources for
bitbucket = [""]

View File

@@ -1,121 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
dev.slimevr.SlimeVR.metainfo.xml by SlimeVR contributors
To the extent possible under law, the person who associated CC0 with
dev.slimevr.SlimeVR.metainfo.xml has waived all copyright and related or neighboring rights
to dev.slimevr.SlimeVR.metainfo.xml.
You should have received a copy of the CC0 legalcode along with this
work. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
-->
<component type="desktop-application">
<id>dev.slimevr.SlimeVR</id>
<name>SlimeVR</name>
<summary>Accessible full-body tracking in VR</summary>
<developer_name>SlimeVR Team</developer_name>
<!-- CC0 so attribution is not required -->
<metadata_license>CC0-1.0</metadata_license>
<project_license>MIT OR Apache-2.0</project_license>
<content_rating type="oars-1.1" />
<url type="homepage">https://slimevr.dev/</url>
<url type="bugtracker">https://github.com/SlimeVR/SlimeVR-Server/issues</url>
<url type="faq">https://docs.slimevr.dev/slimevr101.html</url>
<url type="donation">https://github.com/sponsors/SlimeVR</url>
<url type="vcs-browser">https://github.com/SlimeVR/SlimeVR-Server</url>
<url type="translate">https://i18n.slimevr.dev</url>
<url type="help">https://docs.slimevr.dev/server-setup/slimevr-setup.html</url>
<url type="contribute">https://github.com/SlimeVR/SlimeVR-Server/blob/main/CONTRIBUTING.md</url>
<url type="contact">https://discord.gg/SlimeVR</url>
<recommends>
<display_length compare="ge">300</display_length>
</recommends>
<supports>
<control>pointing</control>
<control>keyboard</control>
<control>touch</control>
</supports>
<branding>
<color type="primary" scheme_preference="light">#BB8AE5</color>
<color type="primary" scheme_preference="dark">#663499</color>
</branding>
<description>
<p>
SlimeVR is a set of open hardware sensors and open source software that facilitates full-body
tracking (FBT) in virtual reality. With no base station required, SlimeVR makes wireless
VR FBT affordable and comfortable.
</p>
</description>
<launchable type="desktop-id">dev.slimevr.SlimeVR.desktop</launchable>
<screenshots>
<screenshot type="default" xml:lang="en">
<caption>The onboarding for the GUI</caption>
<image>https://raw.githubusercontent.com/SlimeVR/SlimeVR-Server/main/assets/img/onboarding.png</image>
</screenshot>
</screenshots>
<provides>
<binary>slimevr</binary>
</provides>
<releases>
<release version="0.13.1" date="2024-11-05"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.13.1</url></release>
<release version="0.13.1~rc.3" type="development" date="2024-10-31"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.13.1-rc.3</url></release>
<release version="0.13.1~rc.2" type="development" date="2024-10-26"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.13.1-rc.2</url></release>
<release version="0.13.1~rc.1" type="development" date="2024-10-16"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.13.1-rc.1</url></release>
<release version="0.13.0" date="2024-09-20"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.13.0</url></release>
<release version="0.13.0~rc.4" type="development" date="2024-09-13"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.13.0-rc.4</url></release>
<release version="0.13.0~rc.3" type="development" date="2024-08-14"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.13.0-rc.3</url></release>
<release version="0.13.0~rc.2" type="development" date="2024-08-08"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.13.0-rc.2</url></release>
<release version="0.13.0~rc.1" type="development" date="2024-08-02"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.13.0-rc.1</url></release>
<release version="0.12.1" date="2024-04-29"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.12.1</url></release>
<release version="0.12.0" date="2024-04-26"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.12.0</url></release>
<release version="0.12.0~rc.4" type="development" date="2024-04-21"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.12.0-rc.4</url></release>
<release version="0.12.0~rc.3" type="development" date="2024-04-14"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.12.0-rc.3</url></release>
<release version="0.12.0~rc.2" type="development" date="2024-04-09"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.12.0-rc.2</url></release>
<release version="0.12.0~rc.1" type="development" date="2024-04-04"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.12.0-rc.1</url></release>
<release version="0.11.0" date="2023-12-23"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.11.0</url></release>
<release version="0.11.0~rc.2" type="development" date="2023-12-08"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.11.0-rc.2</url></release>
<release version="0.11.0~rc.1" type="development" date="2023-11-23"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.11.0-rc.1</url></release>
<release version="0.10.1" date="2023-09-30"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.10.1</url></release>
<release version="0.10.1~rc.1" type="development" date="2023-09-29"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.10.1-rc.1</url></release>
<release version="0.10.0" date="2023-09-22"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.10.0</url></release>
<release version="0.10.0~rc.2" type="development" date="2023-09-15"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.10.0-rc.2</url></release>
<release version="0.10.0~rc.1" type="development" date="2023-09-02"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.10.0-rc.1</url></release>
<release version="0.9.1" date="2023-08-30"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1</url></release>
<release version="0.9.1~rc.4" type="development" date="2023-08-28"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.4</url></release>
<release version="0.9.1~rc.3" type="development" date="2023-08-19"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.3</url></release>
<release version="0.9.1~rc.2" type="development" date="2023-08-15"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.2</url></release>
<release version="0.9.1~rc.1" type="development" date="2023-08-13"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.1</url></release>
<release version="0.9.0" date="2023-08-05"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.0</url></release>
<release version="0.9.0~rc.2" type="development" date="2023-08-02"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.0-rc.2</url></release>
<release version="0.9.0~rc.1" type="development" date="2023-07-31"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.0-rc.1</url></release>
<release version="0.8.3" date="2023-07-09"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.3</url></release>
<release version="0.8.2" date="2023-07-09"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.2</url></release>
<release version="0.8.2~rc.1" type="development" date="2023-07-07"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.2-rc.1</url></release>
<release version="0.8.1" date="2023-07-04"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.1</url></release>
<release version="0.8.0" date="2023-06-22"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.0</url></release>
<release version="0.8.0~rc.3" type="development" date="2023-06-20"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.0-rc.3</url></release>
<release version="0.8.0~rc.2" type="development" date="2023-06-15"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.0-rc.2</url></release>
<release version="0.8.0~rc.1" type="development" date="2023-06-01"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.0-rc.1</url></release>
<release version="0.7.1" date="2023-04-14"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.7.1</url></release>
<release version="0.7.0" date="2023-04-11"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.7.0</url></release>
<release version="0.6.3" date="2023-02-22"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.6.3</url></release>
<release version="0.6.2" date="2023-02-17"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.6.2</url></release>
<release version="0.6.1" date="2023-02-12"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.6.1</url></release>
<release version="0.6.0" date="2023-01-05"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.6.0</url></release>
<release version="0.5.1" date="2022-12-12"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.5.1</url></release>
<release version="0.5.0" date="2022-12-07"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.5.0</url></release>
<release version="0.4.0" date="2022-11-24"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.4.0</url></release>
<release version="0.3.1" date="2022-11-22"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.3.1</url></release>
<release version="0.3.0" date="2022-11-16"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.3.0</url></release>
<release version="0.2.1" date="2022-08-24"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.2.1</url></release>
<release version="0.2.0" date="2022-06-28"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.2.0</url></release>
</releases>
</component>

788
flake.lock generated
View File

@@ -1,661 +1,30 @@
{
"nodes": {
"cachix": {
"inputs": {
"devenv": "devenv_2",
"flake-compat": [
"devenv",
"flake-compat"
],
"git-hooks": [
"devenv",
"pre-commit-hooks"
],
"nixpkgs": [
"devenv",
"nixpkgs"
]
},
"locked": {
"lastModified": 1726520618,
"narHash": "sha256-jOsaBmJ/EtX5t/vbylCdS7pWYcKGmWOKg4QKUzKr6dA=",
"owner": "cachix",
"repo": "cachix",
"rev": "695525f9086542dfb09fde0871dbf4174abbf634",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "cachix",
"type": "github"
}
},
"cachix_2": {
"inputs": {
"devenv": "devenv_3",
"flake-compat": [
"devenv",
"cachix",
"devenv",
"flake-compat"
],
"nixpkgs": [
"devenv",
"cachix",
"devenv",
"nixpkgs"
],
"pre-commit-hooks": [
"devenv",
"cachix",
"devenv",
"pre-commit-hooks"
]
},
"locked": {
"lastModified": 1712055811,
"narHash": "sha256-7FcfMm5A/f02yyzuavJe06zLa9hcMHsagE28ADcmQvk=",
"owner": "cachix",
"repo": "cachix",
"rev": "02e38da89851ec7fec3356a5c04bc8349cae0e30",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "cachix",
"type": "github"
}
},
"devenv": {
"inputs": {
"cachix": "cachix",
"flake-compat": "flake-compat_2",
"nix": "nix_3",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks": "pre-commit-hooks_2"
},
"locked": {
"lastModified": 1730213537,
"narHash": "sha256-bWoeNdFISbGK8M0Xw4edmManGCkJ1oNqbfNY0Hlv9Vc=",
"owner": "cachix",
"repo": "devenv",
"rev": "5c046eeafd13f7a2b9fc733f70ea17571b24410f",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "devenv",
"type": "github"
}
},
"devenv_2": {
"inputs": {
"cachix": "cachix_2",
"flake-compat": [
"devenv",
"cachix",
"flake-compat"
],
"nix": "nix_2",
"nixpkgs": [
"devenv",
"cachix",
"nixpkgs"
],
"pre-commit-hooks": [
"devenv",
"cachix",
"git-hooks"
]
},
"locked": {
"lastModified": 1723156315,
"narHash": "sha256-0JrfahRMJ37Rf1i0iOOn+8Z4CLvbcGNwa2ChOAVrp/8=",
"owner": "cachix",
"repo": "devenv",
"rev": "ff5eb4f2accbcda963af67f1a1159e3f6c7f5f91",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "devenv",
"type": "github"
}
},
"devenv_3": {
"inputs": {
"flake-compat": [
"devenv",
"cachix",
"devenv",
"cachix",
"flake-compat"
],
"nix": "nix",
"nixpkgs": "nixpkgs",
"poetry2nix": "poetry2nix",
"pre-commit-hooks": [
"devenv",
"cachix",
"devenv",
"cachix",
"pre-commit-hooks"
]
},
"locked": {
"lastModified": 1708704632,
"narHash": "sha256-w+dOIW60FKMaHI1q5714CSibk99JfYxm0CzTinYWr+Q=",
"owner": "cachix",
"repo": "devenv",
"rev": "2ee4450b0f4b95a1b90f2eb5ffea98b90e48c196",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "python-rewrite",
"repo": "devenv",
"type": "github"
}
},
"fenix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1730270567,
"narHash": "sha256-ZTBMwsY0i5zTT6rejotc9wqcSGkEgAeejXktJBo9Z5M=",
"owner": "nix-community",
"repo": "fenix",
"rev": "6535bb2a77a3bec73cc5b2d2ff63da8a479e32bd",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"devenv",
"nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1712014858,
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1727826117,
"narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=",
"lastModified": 1762980239,
"narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1",
"type": "github"
},
"original": {
"id": "flake-parts",
"type": "indirect"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1689068808,
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_4": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"devenv",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"rev": "52a2caecc898d0b46b2b905f058ccc5081f842da",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"libgit2": {
"flake": false,
"locked": {
"lastModified": 1697646580,
"narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=",
"owner": "libgit2",
"repo": "libgit2",
"rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5",
"type": "github"
},
"original": {
"owner": "libgit2",
"repo": "libgit2",
"type": "github"
}
},
"mk-shell-bin": {
"locked": {
"lastModified": 1677004959,
"narHash": "sha256-/uEkr1UkJrh11vD02aqufCxtbF5YnhRTIKlx5kyvf+I=",
"owner": "rrbutani",
"repo": "nix-mk-shell-bin",
"rev": "ff5d8bd4d68a347be5042e2f16caee391cd75887",
"type": "github"
},
"original": {
"owner": "rrbutani",
"repo": "nix-mk-shell-bin",
"type": "github"
}
},
"nix": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"devenv",
"cachix",
"devenv",
"cachix",
"devenv",
"nixpkgs"
],
"nixpkgs-regression": "nixpkgs-regression"
},
"locked": {
"lastModified": 1712911606,
"narHash": "sha256-BGvBhepCufsjcUkXnEEXhEVjwdJAwPglCC2+bInc794=",
"owner": "domenkozar",
"repo": "nix",
"rev": "b24a9318ea3f3600c1e24b4a00691ee912d4de12",
"type": "github"
},
"original": {
"owner": "domenkozar",
"ref": "devenv-2.21",
"repo": "nix",
"type": "github"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"devenv",
"cachix",
"devenv",
"cachix",
"devenv",
"poetry2nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1688870561,
"narHash": "sha256-4UYkifnPEw1nAzqqPOTL2MvWtm3sNGw1UTYTalkTcGY=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "165b1650b753316aa7f1787f3005a8d2da0f5301",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"type": "github"
}
},
"nix2container": {
"inputs": {
"flake-utils": "flake-utils_3",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1729339656,
"narHash": "sha256-smV7HQ/OqZeRguQxNjsb3uQDwm0p6zKDbSDbPCav/oY=",
"owner": "nlewo",
"repo": "nix2container",
"rev": "cc96df7c3747c61c584d757cfc083922b4f4b33e",
"type": "github"
},
"original": {
"owner": "nlewo",
"repo": "nix2container",
"type": "github"
}
},
"nix_2": {
"inputs": {
"flake-compat": [
"devenv",
"cachix",
"devenv",
"flake-compat"
],
"nixpkgs": [
"devenv",
"cachix",
"devenv",
"nixpkgs"
],
"nixpkgs-regression": "nixpkgs-regression_2"
},
"locked": {
"lastModified": 1712911606,
"narHash": "sha256-BGvBhepCufsjcUkXnEEXhEVjwdJAwPglCC2+bInc794=",
"owner": "domenkozar",
"repo": "nix",
"rev": "b24a9318ea3f3600c1e24b4a00691ee912d4de12",
"type": "github"
},
"original": {
"owner": "domenkozar",
"ref": "devenv-2.21",
"repo": "nix",
"type": "github"
}
},
"nix_3": {
"inputs": {
"flake-compat": [
"devenv",
"flake-compat"
],
"flake-parts": "flake-parts",
"libgit2": "libgit2",
"nixpkgs": "nixpkgs_2",
"nixpkgs-23-11": "nixpkgs-23-11",
"nixpkgs-regression": "nixpkgs-regression_3",
"pre-commit-hooks": "pre-commit-hooks"
},
"locked": {
"lastModified": 1727438425,
"narHash": "sha256-X8ES7I1cfNhR9oKp06F6ir4Np70WGZU5sfCOuNBEwMg=",
"owner": "domenkozar",
"repo": "nix",
"rev": "f6c5ae4c1b2e411e6b1e6a8181cc84363d6a7546",
"type": "github"
},
"original": {
"owner": "domenkozar",
"ref": "devenv-2.24",
"repo": "nix",
"type": "github"
}
},
"nixgl": {
"inputs": {
"flake-utils": "flake-utils_4",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1713543440,
"narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
"owner": "guibou",
"repo": "nixGL",
"rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
"type": "github"
},
"original": {
"owner": "guibou",
"repo": "nixGL",
"repo": "flake-parts",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1692808169,
"narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=",
"lastModified": 1756787288,
"narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9201b5ff357e781bf014d0330d18555695df7ba8",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-23-11": {
"locked": {
"lastModified": 1717159533,
"narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1727825735,
"narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz"
}
},
"nixpkgs-regression": {
"locked": {
"lastModified": 1643052045,
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
}
},
"nixpkgs-regression_2": {
"locked": {
"lastModified": 1643052045,
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
}
},
"nixpkgs-regression_3": {
"locked": {
"lastModified": 1643052045,
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1720386169,
"narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "194846768975b7ad2c4988bdb82572c00222c0d7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1717432640,
"narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "88269ab3044128b7c2f4c7d68448b2fb50456870",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1729880355,
"narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "18536bf04cd71abd345f9579158841376fdd0c5a",
"rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1",
"type": "github"
},
"original": {
@@ -665,152 +34,25 @@
"type": "github"
}
},
"poetry2nix": {
"inputs": {
"flake-utils": "flake-utils",
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"devenv",
"cachix",
"devenv",
"cachix",
"devenv",
"nixpkgs"
]
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1692876271,
"narHash": "sha256-IXfZEkI0Mal5y1jr6IRWMqK8GW2/f28xJenZIPQqkY0=",
"lastModified": 1761765539,
"narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=",
"owner": "nix-community",
"repo": "poetry2nix",
"rev": "d5006be9c2c2417dafb2e2e5034d83fabd207ee3",
"repo": "nixpkgs.lib",
"rev": "719359f4562934ae99f5443f20aa06c2ffff91fc",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "poetry2nix",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": [
"devenv",
"nix"
],
"flake-utils": "flake-utils_2",
"gitignore": [
"devenv",
"nix"
],
"nixpkgs": [
"devenv",
"nix",
"nixpkgs"
],
"nixpkgs-stable": [
"devenv",
"nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1712897695,
"narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"pre-commit-hooks_2": {
"inputs": {
"flake-compat": [
"devenv",
"flake-compat"
],
"gitignore": "gitignore",
"nixpkgs": [
"devenv",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1726745158,
"narHash": "sha256-D5AegvGoEjt4rkKedmxlSEmC+nNLMBPWFxvmYnVLhjk=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"root": {
"inputs": {
"devenv": "devenv",
"fenix": "fenix",
"flake-parts": "flake-parts_2",
"mk-shell-bin": "mk-shell-bin",
"nix2container": "nix2container",
"nixgl": "nixgl",
"nixpkgs": "nixpkgs_3"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1730197931,
"narHash": "sha256-MjYc80pHGrD6TYMHHpXniCW0egVyHiDR23xAh7MN7Ww=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "468b5cd43023d9771996b06ab7215997895a6059",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs"
}
}
},

180
flake.nix
View File

@@ -1,155 +1,49 @@
{
description = "Affordable full-body tracking for VR!";
description = "SlimeVR Server & GUI";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
devenv = {
url = "github:cachix/devenv";
inputs.nixpkgs.follows = "nixpkgs";
};
nix2container = {
url = "github:nlewo/nix2container";
inputs.nixpkgs.follows = "nixpkgs";
};
mk-shell-bin.url = "github:rrbutani/nix-mk-shell-bin";
nixgl = {
url = "github:guibou/nixGL";
inputs.nixpkgs.follows = "nixpkgs";
};
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-parts.url = "github:hercules-ci/flake-parts";
};
nixConfig = {
extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=";
extra-substituters = "https://devenv.cachix.org";
};
outputs = inputs@{ self, nixpkgs, flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" ];
outputs = inputs @ {
self,
flake-parts,
nixgl,
...
}:
flake-parts.lib.mkFlake {inherit inputs;} {
imports = [
inputs.devenv.flakeModule
];
systems = ["x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
perSystem = { pkgs, ... }:
let
runtimeLibs = pkgs: (with pkgs; [
jdk17
perSystem = {
config,
self',
inputs',
pkgs,
system,
lib,
...
}: {
# Per-system attributes can be defined here. The self' and inputs'
# module parameters provide easy access to attributes of the same
# system.
alsa-lib at-spi2-atk at-spi2-core cairo cups dbus expat
gdk-pixbuf glib gtk3 libdrm libgbm libglvnd libnotify
libxkbcommon mesa nspr nss pango systemd vulkan-loader
wayland xorg.libX11 xorg.libXcomposite xorg.libXdamage
xorg.libXext xorg.libXfixes xorg.libXrandr xorg.libxcb
xorg.libxshmfence libusb1 udev libxcrypt-legacy
rpm fpm
# Equivalent to inputs'.nixpkgs.legacyPackages.hello;
# packages.default = pkgs.hello;
_module.args.pkgs = import self.inputs.nixpkgs {
inherit system;
overlays = [nixgl.overlay];
wine
zlib squashfsTools fakeroot libarchive icu
nodejs_22 pnpm pkg-config python3 gcc gnumake binutils git
]);
slimeShell = pkgs.buildFHSEnv {
name = "slimevr-env";
targetPkgs = runtimeLibs;
profile = ''
export JAVA_HOME=${pkgs.jdk17}
export PATH="${pkgs.jdk17}/bin:$PATH"
# Tell electron-builder to use system tools instead of downloading them
export USE_SYSTEM_FPM=true
export USE_SYSTEM_MKSQUASHFS=true
'';
runScript = "bash";
};
in
{
devShells.default = slimeShell.env;
};
devenv.shells.default = let
fenixpkgs = inputs'.fenix.packages;
rust_toolchain = lib.importTOML ./rust-toolchain.toml;
in {
name = "slimevr";
imports = [
# This is just like the imports in devenv.nix.
# See https://devenv.sh/guides/using-with-flake-parts/#import-a-devenv-module
# ./devenv-foo.nix
];
# https://devenv.sh/reference/options/
packages =
(with pkgs; [
pkgs.nixgl.nixGLIntel
cacert
])
++ lib.optionals pkgs.stdenv.isLinux (with pkgs; [
appimagekit
atk
cairo
dbus
dbus.lib
dprint
gdk-pixbuf
glib.out
glib-networking
gobject-introspection
gtk3
harfbuzz
libffi
libsoup_3
openssl
pango
pkg-config
treefmt
webkitgtk_4_1
zlib
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
librsvg
freetype
expat
libayatana-appindicator
libusb1
])
++ lib.optionals pkgs.stdenv.isDarwin [
pkgs.darwin.apple_sdk.frameworks.Security
];
languages.java = {
enable = true;
gradle.enable = true;
jdk.package = pkgs.jdk17;
};
languages.kotlin.enable = true;
languages.javascript = {
enable = true;
corepack.enable = true;
};
languages.rust = {
enable = true;
toolchain = fenixpkgs.fromToolchainName {
name = rust_toolchain.toolchain.channel;
sha256 = "sha256-VZZnlyP69+Y3crrLHQyJirqlHrTtGTsyiSnZB8jEvVo=";
};
components = rust_toolchain.toolchain.components;
};
env = {
GIO_EXTRA_MODULES = "${pkgs.glib-networking}/lib/gio/modules:${pkgs.dconf.lib}/lib/gio/modules";
};
enterShell = with pkgs; ''
# Export a LD_LIBRARY_PATH without libudev-zero as libgudev not likey
export SLIMEVR_RUST_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="${libudev-zero}/lib:$LD_LIBRARY_PATH"
# GStreamer plugins won't be found without this
export GST_PLUGIN_SYSTEM_PATH_1_0="${pkgs.gst_all_1.gstreamer.out}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-base}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-good}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-bad}/lib/gstreamer-1.0"
'';
};
};
flake = {
# The usual flake attributes can be defined here, including system-
# agnostic ones like nixosModule and system-enumerating ones, although
# those are more easily expressed in perSystem.
};
};
}

View File

@@ -14,7 +14,8 @@ android.nonTransitiveRClass=true
org.gradle.unsafe.configuration-cache=false
kotlinVersion=2.0.20
spotlessVersion=6.25.0
spotlessVersion=8.0.0
shadowJarVersion=8.3.2
buildconfigVersion=5.5.0
grgitVersion=5.2.2
ktor_version=3.0.3

Binary file not shown.

View File

@@ -1,6 +1,8 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
distributionSha256Sum=bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

34
gradlew vendored
View File

@@ -15,6 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
@@ -55,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -83,10 +85,9 @@ done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -133,10 +134,13 @@ location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
@@ -144,7 +148,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
@@ -152,7 +156,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -197,11 +201,15 @@ if "$cygwin" || "$msys" ; then
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \

22
gradlew.bat vendored
View File

@@ -13,6 +13,8 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@@ -43,11 +45,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
@@ -57,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail

8
gui/.env Normal file
View File

@@ -0,0 +1,8 @@
VITE_FIRMWARE_TOOL_URL=https://fw-tool-api-v2.slimevr.io
VITE_FIRMWARE_TOOL_S3_URL=https://fw-tool-bucket-v2.slimevr.io
FIRMWARE_TOOL_SCHEMA_URL=https://fw-tool-api-v2.slimevr.io/api-json
# VITE_FIRMWARE_TOOL_URL=http://localhost:3000
# VITE_FIRMWARE_TOOL_S3_URL=http://localhost:9099
# FIRMWARE_TOOL_SCHEMA_URL=http://localhost:3000/api-json

View File

@@ -1,51 +0,0 @@
{
"env": {
"browser": true,
"es2021": true,
"jest": true
},
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:@dword-design/import-alias/recommended"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": ["react-hooks", "@typescript-eslint"],
"rules": {
"react/react-in-jsx-scope": "off",
"react/prop-types": "off",
"spaced-comment": "error",
"quotes": ["error", "single"],
"no-duplicate-imports": "error",
"no-inline-styles": "off",
"@typescript-eslint/no-explicit-any": "off",
"react/no-unescaped-entities": "off",
"camelcase": "error",
"@typescript-eslint/no-unused-vars": [
"warn",
{
"argsIgnorePattern": "^_",
"varsIgnorePattern": "^_"
}
],
"@dword-design/import-alias/prefer-alias": [
"error",
{
"alias": {
"@": "./src/"
}
}
]
},
"settings": {
"import/resolver": {
"typescript": {}
},
"react": {
"version": "detect"
}
}
}

8
gui/.gitignore vendored
View File

@@ -28,6 +28,14 @@ yarn-error.log*
# vite
/dist
/stats.html
vite.config.ts.timestamp*
electron.vite.config.*.mjs
# eslint
.eslintcache
# Sentry Config File
.env.sentry-build-plugin
# electron
out/

View File

@@ -1,5 +1,5 @@
export default {
'**/*.{ts,tsx}': () => 'tsc -p tsconfig.json --noEmit',
'**/*.{js,jsx,ts,tsx}': 'eslint --max-warnings=0 --cache --fix',
'**/*.{js,jsx,ts,tsx,css,md,json}': 'prettier --write',
'src/**/*.{js,jsx,ts,tsx}': 'eslint --max-warnings=0 --no-warn-ignored --cache --fix',
'**/*.{js,jsx,ts,tsx,css,scss,md,json}': 'prettier --write',
};

57
gui/electron-builder.yml Normal file
View File

@@ -0,0 +1,57 @@
appId: dev.slimevr.SlimeVR
productName: SlimeVR
directories:
output: dist/artifacts
asar: true
asarUnpack:
- out/main/chunks/*.jar
electronLanguages:
- en-US
files:
- out/**/*
- index.html
- package.json
- node_modules/**
# Exclude unnecessary files from node_modules to reduce size
- "!node_modules/*/{README,readme,README.md,readme.md,CHANGELOG,CHANGELOG.md,changelog.md}"
- "!node_modules/*/{test,tests,__tests__,docs,doc,example,examples}"
- "!node_modules/*/.{git,github,vscode,editorconfig,eslintrc,prettierrc}"
- "!node_modules/**/*.{map,ts,tsx,d.ts}"
- "!**/.DS_Store"
linux:
category: Game
target:
- target: AppImage
- target: deb
- target: rpm
extraFiles:
- from: "../server/desktop/build/libs/slimevr.jar"
to: "."
- from: "./electron/resources/69-slimevr-devices.rules"
to: "."
icon: "./electron/resources/icons"
deb:
depends:
- openjdk-17-jre-headless
- udev
rpm:
depends:
- java-latest-openjdk
- udev
win:
target:
- target: portable
icon: "./electron/resources/icons/icon.ico"
mac:
target: dmg
extraFiles:
- from: "../server/desktop/build/libs/slimevr.jar"
to: "."
icon: "./electron/resources/icons/icon.icns"

View File

@@ -0,0 +1,47 @@
import { defineConfig } from 'electron-vite'
import { resolve } from 'path'
import rendererConfig from './vite.config' // Import your existing React config
export default defineConfig({
main: {
build: {
rollupOptions: {
input: resolve(__dirname, 'electron/main/index.ts'),
external: [
'pino',
'pino-pretty',
'pino-roll',
'commander',
'open'
]
}
}
},
preload: {
build: {
rollupOptions: {
input: resolve(__dirname, 'electron/preload/index.ts'),
output: {
format: 'cjs', // Force CJS for the preload
entryFileNames: 'index.js' // Change back to .js
}
}
}
},
renderer: {
...rendererConfig,
root: '.',
build: {
commonjsOptions: {
// Force Rollup to treat the protocol directory as CommonJS
// even though it's not in node_modules
include: [/solarxr-protocol/, /node_modules/],
// Required for Flatbuffers/Generated code interop
transformMixedEsModules: true,
},
rollupOptions: {
input: resolve(__dirname, 'index.html')
}
}
}
})

1
gui/electron/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
resources/java-version/JavaVersion.class

12
gui/electron/main/cli.ts Normal file
View File

@@ -0,0 +1,12 @@
import { program } from "commander";
program
.option('-p --path <path>', 'set launch path')
.option(
'--skip-server-if-running',
'gui will not launch the server if it is already running'
)
.allowUnknownOption();
program.parse(process.argv);
export const options = program.opts();

425
gui/electron/main/index.ts Normal file
View File

@@ -0,0 +1,425 @@
import {
app,
BrowserWindow,
dialog,
Menu,
nativeImage,
net,
protocol,
screen,
shell,
Tray,
} from 'electron';
import { IPC_CHANNELS } from '../shared';
import path, { dirname, join } from 'path';
import open from 'open';
import trayIcon from '../resources/icons/icon.png?asset';
import appleTrayIcon from '../resources/icons/appleTrayIcon.png?asset';
import { readFile, stat } from 'fs/promises';
import { getPlatform, handleIpc, isPortAvailable } from './utils';
import {
findServerJar,
findSystemJRE,
getGuiDataFolder,
getLogsFolder,
getExeFolder,
getServerDataFolder,
getWindowStateFile,
} from './paths';
import { stores } from './store';
import { logger } from './logger';
import { writeFileSync } from 'node:fs';
import { spawn } from 'node:child_process';
import { discordPresence } from './presence';
import { options } from './cli';
import { ServerStatusEvent } from 'electron/preload/interface';
// Register custom protocol to handle asset paths with leading slashes
protocol.registerSchemesAsPrivileged([
{
scheme: 'app',
privileges: {
standard: true,
secure: true,
supportFetchAPI: true,
corsEnabled: true,
},
},
]);
let mainWindow: BrowserWindow | null = null;
handleIpc(IPC_CHANNELS.GH_FETCH, async (e, options) => {
if (options.type === 'fw-releases') {
return fetch(
'https://api.github.com/repos/SlimeVR/SlimeVR-Tracker-ESP/releases'
).then((res) => res.json());
}
if (options.type === 'asset') {
if (
!options.url.startsWith(
'https://github.com/SlimeVR/SlimeVR-Tracker-ESP/releases/download'
)
)
return null;
return fetch(options.url).then((res) => res.json());
}
});
handleIpc(IPC_CHANNELS.OS_STATS, async () => {
return {
type: getPlatform(),
};
});
handleIpc(IPC_CHANNELS.I18N_OVERRIDE, async () => {
const overridefile = join(getServerDataFolder(), 'override.ftl');
const exists = await stat(overridefile)
.then(() => true)
.catch(() => false);
if (!exists) return false;
return readFile(overridefile, { encoding: 'utf-8' });
});
handleIpc(IPC_CHANNELS.LOG, (e, type, ...args) => {
let payload: Record<string, unknown> = {};
const messageParts: unknown[] = [];
args.forEach((arg) => {
if (arg instanceof Error) {
payload.err = arg;
} else if (typeof arg === 'object' && arg !== null) {
payload = { ...payload, ...arg };
} else {
messageParts.push(arg);
}
});
const msg = messageParts.join(' ');
switch (type) {
case 'error':
logger.error(payload, msg);
break;
case 'warn':
logger.warn(payload, msg);
break;
default:
logger.info(payload, msg);
}
});
handleIpc(IPC_CHANNELS.OPEN_URL, (e, url) => {
const allowsd_urls = [
/steam:\/\/.*/,
/ms-settings:network$/,
/https:\/\/.*\.slimevr\.dev.*/,
/https:\/\/github\.com\/.*/,
/https:\/\/discord\.gg\/slimevr$/,
];
if (allowsd_urls.find((a) => url.match(a))) open(url);
else logger.error({ url }, 'trying to open non allowed url');
});
handleIpc(IPC_CHANNELS.STORAGE, async (e, { type, method, key, value }) => {
const store = stores[type];
if (!store) throw new Error(`Storage type ${type} not found`);
switch (method) {
case 'get':
return store.get(key!);
case 'set':
return store.set(key!, value);
case 'delete':
return store.delete(key!);
case 'save':
return store.save();
}
});
handleIpc(IPC_CHANNELS.DISCORD_PRESENCE, async (e, options) => {
if (options.enable && !discordPresence.state.ready) {
await discordPresence.connect();
discordPresence.updateActivity(options.activity);
} else if (!options.enable && discordPresence.state.ready) {
discordPresence.destroy();
}
});
handleIpc(IPC_CHANNELS.OPEN_FILE, (e, folder) => {
const requestedPath = path.resolve(folder);
const isAllowed = [getServerDataFolder(), getGuiDataFolder(), getLogsFolder()].some(
(parent) => {
const absoluteParent = path.resolve(parent);
const relative = path.relative(absoluteParent, requestedPath);
return !relative.includes('..') && !path.isAbsolute(relative);
}
);
if (isAllowed) {
shell.openPath(requestedPath);
} else {
logger.error({ path: requestedPath }, 'Blocked unauthorized path');
}
});
handleIpc(IPC_CHANNELS.GET_FOLDER, (e, folder) => {
switch (folder) {
case 'config':
return getGuiDataFolder();
case 'logs':
return getLogsFolder();
case 'exe':
return getExeFolder();
}
});
const windowStateFile = await readFile(getWindowStateFile(), {
encoding: 'utf-8',
}).catch(() => null);
const defaultWindowState: {
width: number;
height: number;
x?: number;
y?: number;
minimized: boolean;
} = {
width: 1289.0,
height: 709.0,
x: undefined,
y: undefined,
minimized: false,
};
const windowState = windowStateFile ? JSON.parse(windowStateFile) : defaultWindowState;
const MIN_WIDTH = 393;
const MIN_HEIGHT = 667;
function validateWindowState(state: typeof defaultWindowState) {
if (state.x === undefined || state.y === undefined) {
return state;
}
const displays = screen.getAllDisplays();
const isVisible = displays.some((display) => {
return (
state.x! >= display.bounds.x &&
state.y! >= display.bounds.y &&
state.x! + state.width <= display.bounds.x + display.bounds.width &&
state.y! + state.height <= display.bounds.y + display.bounds.height
);
});
const minWidth = MIN_WIDTH;
const minHeight = MIN_HEIGHT;
if (!isVisible || state.width < minWidth || state.height < minHeight) {
return defaultWindowState;
}
return state;
}
function createWindow() {
const validatedState = validateWindowState(windowState);
mainWindow = new BrowserWindow({
width: validatedState.width,
height: validatedState.height,
x: validatedState.x,
y: validatedState.y,
minHeight: MIN_HEIGHT,
minWidth: MIN_WIDTH,
movable: true,
frame: false,
roundedCorners: true,
webPreferences: {
preload: join(__dirname, '../preload/index.js'),
nodeIntegration: false,
contextIsolation: true,
},
});
if (windowState.minimized) {
mainWindow.minimize();
}
if (process.env.ELECTRON_RENDERER_URL) {
mainWindow.loadURL(process.env.ELECTRON_RENDERER_URL);
mainWindow.webContents.openDevTools();
} else {
mainWindow.loadURL('app://./index.html');
}
mainWindow.on('closed', () => {
mainWindow = null;
});
handleIpc('window-actions', (e, action) => {
switch (action) {
case 'close':
mainWindow?.close();
break;
case 'minimize':
mainWindow?.minimize();
break;
case 'maximize':
mainWindow?.maximize();
break;
}
});
handleIpc('open-dialog', (e, options) => dialog.showOpenDialog(options));
handleIpc('save-dialog', (e, options) => dialog.showSaveDialog(options));
const icon = nativeImage.createFromPath(
getPlatform() === 'macos' ? appleTrayIcon : trayIcon
);
const tray = new Tray(icon);
tray.setToolTip('SlimeVR');
tray.on('click', () => {
mainWindow?.show();
});
const contextMenu = Menu.buildFromTemplate([
{
label: 'Show',
click: () => {
mainWindow?.show();
},
},
{
label: 'Hide',
click: () => {
mainWindow?.hide();
},
},
{ role: 'quit' },
]);
tray.setContextMenu(contextMenu);
const updateWindowState = () => {
if (!mainWindow) return;
windowState.minimized = mainWindow.isMinimized();
if (!mainWindow.isMinimized() && !mainWindow.isMaximized()) {
const bounds = mainWindow.getBounds();
windowState.width = bounds.width;
windowState.height = bounds.height;
windowState.x = bounds.x;
windowState.y = bounds.y;
}
};
mainWindow.on('move', updateWindowState);
mainWindow.on('resize', updateWindowState);
mainWindow.on('minimize', updateWindowState);
mainWindow.on('maximize', updateWindowState);
}
const checkEnvironmentVariables = () => {
const to_check = ['_JAVA_OPTIONS', 'JAVA_TOOL_OPTIONS'];
const set = to_check.filter((env) => !!process.env[env]);
if (set.length > 0) {
dialog.showErrorBox(
'SlimeVR',
`You have environment variables ${set.join(', ')} set, which may cause the SlimeVR Server to fail to launch properly.`
);
app.exit(0);
return;
}
};
const isServerRunning = async () => !await isPortAvailable(21110)
const spawnServer = async () => {
if (options.skipServerIfRunning && await isServerRunning()) {
logger.info({ skipServerIfRunning: options.skipServerIfRunning }, 'Server alredy running, skipping');
return;
}
const serverJar = findServerJar();
if (!serverJar) {
logger.info('server jar not found, skipping');
return;
}
const sharedDir = dirname(serverJar);
const javaBin = await findSystemJRE(sharedDir);
if (!javaBin) {
dialog.showErrorBox(
'SlimeVR',
`Couldn't find a compatible Java version, please download Java 17 or higher`
);
app.exit(0);
return;
}
logger.info({ serverJar }, 'found server jar');
const process = spawn(javaBin, ['-Xmx128M', '-jar', serverJar, 'run']);
process.stdout?.on('data', (message) => {
mainWindow?.webContents.send(IPC_CHANNELS.SERVER_STATUS, {
message: message.toString(),
type: 'stdout'
} satisfies ServerStatusEvent)
});
process.stderr?.on('data', (message) => {
mainWindow?.webContents.send(IPC_CHANNELS.SERVER_STATUS, {
message: message.toString(),
type: 'stderr'
} satisfies ServerStatusEvent)
});
return {
process: process,
close: () => {
process.kill('SIGTERM');
},
};
};
app.whenReady().then(async () => {
// Register protocol handler for app:// scheme to handle assets with leading slashes
protocol.handle('app', (request) => {
const url = request.url.slice('app://'.length);
const filePath = path.normalize(join(__dirname, '../renderer', url));
return net.fetch('file://' + filePath);
});
checkEnvironmentVariables();
const server = await spawnServer();
createWindow();
logger.info('SlimeVR started!');
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
process.on('exit', () => {
server?.close();
})
app.on('before-quit', () => {
logger.info('App quitting, saving...');
server?.close();
stores.settings.save();
stores.cache.save();
discordPresence.destroy();
writeFileSync(getWindowStateFile(), JSON.stringify(windowState));
});
});

View File

@@ -0,0 +1,26 @@
import pino from 'pino';
import { getLogsFolder } from './paths';
import { join } from 'node:path';
const transport = pino.transport({
targets: [
{
target: 'pino-roll',
options: {
file: join(getLogsFolder(), 'slimevr-gui.log'),
frequency: 'daily',
size: '10m',
mkdir: true,
limit: { count: 7 },
},
level: 'info',
},
{
target: 'pino-pretty',
options: { colorize: true },
level: 'debug',
},
],
});
export const logger = pino(transport);

125
gui/electron/main/paths.ts Normal file
View File

@@ -0,0 +1,125 @@
import { app } from 'electron';
import path, { join } from 'node:path';
import { getPlatform } from './utils';
import { glob } from 'glob';
import { spawn } from 'node:child_process';
import javaVersionJar from '../resources/java-version/JavaVersion.jar?asset&asarUnpack';
import { existsSync } from 'node:fs';
import { options } from './cli';
const javaBin = getPlatform() === 'windows' ? 'java.exe' : 'java';
export const CONFIG_IDENTIFIER = 'dev.slimevr.SlimeVR';
export const getGuiDataFolder = () => {
const platform = getPlatform();
switch (platform) {
case 'linux':
if (process.env['XDG_DATA_HOME'])
return join(process.env['XDG_DATA_HOME'], CONFIG_IDENTIFIER);
return join(app.getPath('home'), '.local/share', CONFIG_IDENTIFIER);
case 'windows':
return join(app.getPath('appData'), CONFIG_IDENTIFIER);
case 'macos':
return join(
app.getPath('home'),
'Library/Application Support',
CONFIG_IDENTIFIER
);
case 'unknown':
throw 'error';
}
};
export const getServerDataFolder = () => {
const platform = getPlatform();
switch (platform) {
case 'linux':
case 'windows':
case 'macos':
return join(app.getPath('appData'), CONFIG_IDENTIFIER);
case 'unknown':
throw 'error';
}
};
export const getLogsFolder = () => {
return join(getGuiDataFolder(), 'logs');
};
export const getExeFolder = () => {
return path.dirname(app.getPath('exe'));
}
export const getWindowStateFile = () =>
join(getGuiDataFolder(), '.window-state.json');
const localJavaBin = (sharedDir: string) => {
const jre = join(sharedDir, 'jre/bin', javaBin);
return jre;
};
const javaHomeBin = () => {
const javaHome = process.env['JAVA_HOME'];
if (!javaHome) return null;
const javaHomeJre = join(javaHome, 'bin', javaBin);
console.log(javaHomeJre);
return javaHomeJre;
};
export const findSystemJRE = async (sharedDir: string) => {
const paths = [
localJavaBin(sharedDir),
javaHomeBin(),
...(await glob('/usr/lib/jvm/*/bin/' + javaBin)),
...(await glob('/Library/Java/JavaVirtualMachines/*/Contents/Home/bin/' + javaBin)),
];
for (const path of paths) {
if (!path) continue;
const version = await new Promise<number | null>((resolve) => {
const process = spawn(path, ['-jar', javaVersionJar], {});
let version: number | null = null;
process.stdout?.once('data', (data) => {
try {
version = parseFloat(data.toString());
} catch {
version = null;
}
});
process.on('error', () => {
resolve(null);
});
process.on('exit', () => {
resolve(version);
});
});
if (version && version >= 17) return path;
}
return null;
};
export const findServerJar = () => {
const paths = [
options.path ? path.resolve(options.path) : undefined,
// AppImage passes the fakeroot in `APPDIR` env var.
process.env['APPDIR']
? path.resolve(join(process.env['APPDIR'], 'usr/share/slimevr/'))
: undefined,
path.dirname(app.getPath('exe')),
// For flatpack container
path.resolve('/app/share/slimevr/'),
path.resolve('/usr/share/slimevr/'),
];
return paths
.filter((p) => !!p)
.map((p) => join(p!, 'slimevr.jar'))
.find((p) => existsSync(p));
};

View File

@@ -0,0 +1,49 @@
import { Client } from '@xhayper/discord-rpc';
import { logger } from './logger';
export const richPresence = () => {
const initialState = () => ({ ready: false, start: Date.now() });
const state = initialState();
const client = new Client({
clientId: '1237970689009647639',
transport: { type: 'ipc' },
});
client.on('ready', () => {
state.ready = true;
});
client.on('disconnected', () => {
state.ready = false;
});
return {
state,
connect: async () => {
try {
await client.login();
} catch (e) {
logger.error(e, 'unable to connect to discord rpc');
}
},
updateActivity: (content: string) => {
if (!state.ready) return;
client.user
?.setActivity({
state: content,
largeImageKey: 'icon',
startTimestamp: state.start,
})
.catch((e) => {
logger.error(e, 'unable to update rpc activity');
});
},
destroy: () => {
client.destroy();
Object.assign(state, initialState());
},
};
};
export const discordPresence = richPresence();

View File

@@ -0,0 +1,76 @@
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
import { dirname, join } from "path";
import { logger } from "./logger";
import { getGuiDataFolder } from "./paths";
export class CustomStore {
private data: Record<string, unknown> = {};
private saveTimeout: NodeJS.Timeout | null = null;
private filePath: string;
private debounceMs: number;
constructor(filePath: string, debounceMs: number = 2000) {
this.filePath = filePath;
this.debounceMs = debounceMs;
this.load();
}
private load() {
try {
if (existsSync(this.filePath)) {
const raw = readFileSync(this.filePath, 'utf-8');
this.data = JSON.parse(raw);
}
} catch (err) {
logger.error(err, `Failed to load store at ${this.filePath}`);
this.data = {};
}
}
/** Set a key and trigger the debounced auto-save */
set(key: string, value: unknown) {
this.data[key] = value;
this.triggerAutoSave();
}
get<T>(key: string): T | undefined {
return this.data[key] as T;
}
delete(key: string): boolean {
if (key in this.data) {
delete this.data[key];
this.triggerAutoSave();
return true;
}
return false;
}
private triggerAutoSave() {
if (this.saveTimeout) clearTimeout(this.saveTimeout);
this.saveTimeout = setTimeout(() => {
this.save();
}, this.debounceMs);
}
save(): boolean {
try {
if (this.saveTimeout) clearTimeout(this.saveTimeout);
const dir = dirname(this.filePath);
if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
writeFileSync(this.filePath, JSON.stringify(this.data, null, 2), 'utf-8');
return true;
} catch (err) {
logger.error(err, 'Save failed', this.filePath);
return false;
}
}
}
export const stores = {
settings: new CustomStore(join(getGuiDataFolder(), 'gui-settings.dat'), 1000),
cache: new CustomStore(join(getGuiDataFolder(), 'gui-cache.dat'), 100),
};

View File

@@ -0,0 +1,50 @@
import os from 'os'
import { OSStats } from "../preload/interface";
import { ipcMain, IpcMainInvokeEvent } from 'electron';
import { IpcInvokeMap } from '../shared';
import net from 'net'
export const getPlatform = (): OSStats['type'] => {
switch (os.platform()) {
case 'darwin':
return 'macos';
case 'win32':
return 'windows';
case 'linux':
return 'linux';
default:
return 'unknown';
}
};
export const isPortAvailable = (port: number) => {
return new Promise((resolve) => {
const s = net.createServer();
s.once('error', (err) => {
s.close();
if ("code" in err && err["code"] == "EADDRINUSE") {
resolve(false);
} else {
resolve(false);
}
});
s.once('listening', () => {
resolve(true);
s.close();
});
s.listen(port);
});
};
export function handleIpc<K extends keyof IpcInvokeMap>(
channel: K,
handler: (
event: IpcMainInvokeEvent,
...args: Parameters<IpcInvokeMap[K]>
) => ReturnType<IpcInvokeMap[K]>
) {
ipcMain.handle(channel, (event, ...args) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return handler(event, ...args as any);
});
}

View File

@@ -0,0 +1,40 @@
import { contextBridge, ipcRenderer, IpcRendererEvent } from 'electron';
import { IElectronAPI, ServerStatusEvent } from './interface';
import { IPC_CHANNELS } from '../shared';
contextBridge.exposeInMainWorld('electronAPI', {
onServerStatus: (callback) => {
const subscription = (_event: IpcRendererEvent, value: ServerStatusEvent) =>
callback(value);
ipcRenderer.on(IPC_CHANNELS.SERVER_STATUS, subscription);
return () => ipcRenderer.removeListener(IPC_CHANNELS.SERVER_STATUS, subscription);
},
openUrl: (url) => ipcRenderer.invoke(IPC_CHANNELS.OPEN_URL, url),
osStats: () => ipcRenderer.invoke(IPC_CHANNELS.OS_STATS),
close: () => ipcRenderer.invoke(IPC_CHANNELS.WINDOW_ACTIONS, 'close'),
minimize: () => ipcRenderer.invoke(IPC_CHANNELS.WINDOW_ACTIONS, 'minimize'),
maximize: () => ipcRenderer.invoke(IPC_CHANNELS.WINDOW_ACTIONS, 'maximize'),
getStorage: async (type) => {
return {
get: (key) =>
ipcRenderer.invoke(IPC_CHANNELS.STORAGE, { type, method: 'get', key }),
set: (key, value) =>
ipcRenderer.invoke(IPC_CHANNELS.STORAGE, { type, method: 'set', key, value }),
delete: (key) =>
ipcRenderer.invoke(IPC_CHANNELS.STORAGE, { type, method: 'delete', key }),
save: () => ipcRenderer.invoke(IPC_CHANNELS.STORAGE, { type, method: 'save' }),
};
},
log: (type, ...args) => ipcRenderer.invoke(IPC_CHANNELS.LOG, type, ...args),
i18nOverride: async () => ipcRenderer.invoke(IPC_CHANNELS.I18N_OVERRIDE),
showDecorations: () => {},
setTranslations: () => {},
openDialog: (options) => ipcRenderer.invoke(IPC_CHANNELS.OPEN_DIALOG, options),
saveDialog: (options) => ipcRenderer.invoke(IPC_CHANNELS.SAVE_DIALOG, options),
openConfigFolder: async () => ipcRenderer.invoke(IPC_CHANNELS.OPEN_FILE, await ipcRenderer.invoke(IPC_CHANNELS.GET_FOLDER, 'config')),
openLogsFolder: async () => ipcRenderer.invoke(IPC_CHANNELS.OPEN_FILE, await ipcRenderer.invoke(IPC_CHANNELS.GET_FOLDER, 'logs')),
openFile: (path) => ipcRenderer.invoke(IPC_CHANNELS.OPEN_FILE, path),
ghGet: (req) => ipcRenderer.invoke(IPC_CHANNELS.GH_FETCH, req),
setPresence: (options) => ipcRenderer.invoke(IPC_CHANNELS.DISCORD_PRESENCE, options),
getInstallDir: () => ipcRenderer.invoke(IPC_CHANNELS.GET_FOLDER, 'exe')
} satisfies IElectronAPI);

65
gui/electron/preload/interface.d.ts vendored Normal file
View File

@@ -0,0 +1,65 @@
import {
OpenDialogOptions,
OpenDialogReturnValue,
SaveDialogOptions,
SaveDialogReturnValue,
} from 'electron';
export type ServerStatusEvent = {
type: 'stdout' | 'stderr' | 'error' | 'terminated' | 'other';
message: string;
};
export type OSStats = {
type: 'linux' | 'windows' | 'macos' | 'unknown';
};
export interface CrossStorage {
set(key: string, value: unknown): Promise<void>;
get<T>(key: string): Promise<T | undefined>;
delete(key: string): Promise<boolean>;
save(): Promise<boolean>;
}
export type GHGet = { type: 'fw-releases' } | { type: 'asset'; url: string };
export type GHReturn = {
asset: [number, string][] | null;
['fw-releases']:
| {
assets: { browser_download_url: string; name: string; digest: string }[];
prerelease: boolean;
tag_name: string;
body: string;
}[]
| null;
};
export type DiscordPresence = { enable: false } | { enable: true, activity: string }
export interface IElectronAPI {
onServerStatus: (cb: (data: ServerStatusEvent) => void) => () => void;
openUrl: (url: string) => Promise<void>;
osStats: () => Promise<OSStats>;
openLogsFolder: () => Promise<void>;
openConfigFolder: () => Promise<void>;
close: () => void;
minimize: () => void;
maximize: () => void;
showDecorations: (decorations: boolean) => void;
setTranslations: (translations: Record<string, string>) => void;
i18nOverride: () => Promise<string | false>;
getStorage: (type: 'settings' | 'cache') => Promise<CrossStorage>;
openDialog: (options: OpenDialogOptions) => Promise<OpenDialogReturnValue>;
saveDialog: (options: SaveDialogOptions) => Promise<SaveDialogReturnValue>;
log: (type: 'info' | 'error' | 'warn', ...args: unknown[]) => void;
openFile: (path: string) => void;
ghGet: <T extends GHGet>(options: T) => Promise<GHReturn[T['type']]>;
setPresence: (options: DiscordPresence) => void;
getInstallDir: () => Promise<string>;
}
declare global {
interface Window {
electronAPI: IElectronAPI;
}
}

View File

@@ -0,0 +1,46 @@
# Copyright 2025 Eiren Rain and SlimeVR Contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
## QinHeng
# CH340
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1A86", ATTRS{idProduct}=="7522", MODE="0660", TAG+="uaccess"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1A86", ATTRS{idProduct}=="7523", MODE="0660", TAG+="uaccess"
# CH341
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1A86", ATTRS{idProduct}=="5523", MODE="0660", TAG+="uaccess"
# CH343
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1A86", ATTRS{idProduct}=="55D3", MODE="0660", TAG+="uaccess"
# CH9102x
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1A86", ATTRS{idProduct}=="55D4", MODE="0660", TAG+="uaccess"
## Silabs
# CP210x
SUBSYSTEMS=="usb", ATTRS{idVendor}=="10C4", ATTRS{idProduct}=="EA60", MODE="0660", TAG+="uaccess"
## Espressif
# ESP32-S3 / ESP32-C3 / ESP32-C5 / ESP32-C6 / ESP32-C61 / ESP32-H2 / ESP32-P4
SUBSYSTEMS=="usb", ATTRS{idVendor}=="303A", ATTRS{idProduct}=="1001", MODE="0660", TAG+="uaccess"
# ESP32-S2
SUBSYSTEMS=="usb", ATTRS{idVendor}=="303A", ATTRS{idProduct}=="0002", MODE="0660", TAG+="uaccess"
## FTDI
# FT232BM/L/Q, FT245BM/L/Q
# FT232RL/Q, FT245RL/Q
# VNC1L with VDPS Firmware
# VNC2 with FT232Slave
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0660", TAG+="uaccess"
## SlimeVR
# smol slime dongle
SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="7690", MODE="0660", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="7690", MODE="0660", TAG+="uaccess"

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1008 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 922 B

After

Width:  |  Height:  |  Size: 922 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" stroke-miterlimit="10" clip-rule="evenodd" version="1.1" viewBox="0 0 380 380" xml:space="preserve"><rect id="bg" width="380" height="380" fill="#663499" stroke-width="1" rx="76" /><g id="logo" fill="none" stroke="#fff"><path id="left" stroke-width="13.62" d="m72.867 191.74 37-39 39 36"/><path id="right" stroke-width="13.62" d="m208.87 187.74 38-35 36 38"/><path id="outer" stroke-linecap="square" stroke-width="17" d="m56.867 253.74s130.61-31.182 248 5c13.45 4.146 20.244 2.975 20-8s1.909-126.06-46-131"/></g></svg>

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

View File

@@ -1,8 +1,8 @@
public class JavaVersion {
public static void main(String[] args)
{
var version = Runtime.version().version().get(0);
System.exit(version);
System.out.println(version);
}
}

49
gui/electron/shared.ts Normal file
View File

@@ -0,0 +1,49 @@
import {
OpenDialogOptions,
OpenDialogReturnValue,
SaveDialogOptions,
SaveDialogReturnValue,
} from 'electron';
import { DiscordPresence, GHGet, GHReturn, OSStats } from './preload/interface';
export const IPC_CHANNELS = {
SERVER_STATUS: 'server-status',
OPEN_URL: 'open-url',
OS_STATS: 'os-stats',
WINDOW_ACTIONS: 'window-actions',
LOG: 'log',
STORAGE: 'storage',
OPEN_DIALOG: 'open-dialog',
SAVE_DIALOG: 'save-dialog',
I18N_OVERRIDE: 'i18n-override',
OPEN_FILE: 'open-file',
GET_FOLDER: 'get-folder',
GH_FETCH: 'gh-fetch',
DISCORD_PRESENCE: 'discord-presence'
} as const;
export interface IpcInvokeMap {
[IPC_CHANNELS.OPEN_URL]: (url: string) => void;
[IPC_CHANNELS.OS_STATS]: () => Promise<OSStats>;
[IPC_CHANNELS.WINDOW_ACTIONS]: (action: 'close' | 'minimize' | 'maximize') => void;
[IPC_CHANNELS.LOG]: (type: 'info' | 'error' | 'warn', ...args: unknown[]) => void;
[IPC_CHANNELS.OPEN_DIALOG]: (
options: OpenDialogOptions
) => Promise<OpenDialogReturnValue>;
[IPC_CHANNELS.SAVE_DIALOG]: (
options: SaveDialogOptions
) => Promise<SaveDialogReturnValue>;
[IPC_CHANNELS.I18N_OVERRIDE]: () => Promise<string | false>;
[IPC_CHANNELS.STORAGE]: (args: {
type: 'settings' | 'cache';
method: 'get' | 'set' | 'delete' | 'save';
key?: string;
value?: unknown;
}) => Promise<unknown>;
[IPC_CHANNELS.OPEN_FILE]: (path: string) => void;
[IPC_CHANNELS.GET_FOLDER]: (folder: 'config' | 'logs' | 'exe') => string;
[IPC_CHANNELS.GH_FETCH]: <T extends GHGet>(
options: T
) => Promise<GHReturn[T['type']]>;
[IPC_CHANNELS.DISCORD_PRESENCE]: (options: DiscordPresence) => void;
}

82
gui/eslint.config.js Normal file
View File

@@ -0,0 +1,82 @@
import { FlatCompat } from '@eslint/eslintrc';
import eslint from '@eslint/js';
import globals from 'globals';
import tseslint from 'typescript-eslint';
import stylistic from '@stylistic/eslint-plugin';
const compat = new FlatCompat();
export const gui = [
eslint.configs.recommended,
...tseslint.configs.recommended,
...compat.extends('plugin:@dword-design/import-alias/recommended'),
...compat.plugins('eslint-plugin-react-hooks'),
// Add import-alias rule inside compat because plugin doesn't like flat configs
...compat.config({
rules: {
'@dword-design/import-alias/prefer-alias': [
'error',
{
alias: {
'@': './src/',
},
},
],
},
}),
{
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
parser: tseslint.parser,
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
globals: {
...globals.browser,
...globals.jest,
},
},
files: ['src/**/*.{js,jsx,ts,tsx,json}'],
plugins: {
'@typescript-eslint': tseslint.plugin,
'@stylistic': stylistic,
},
rules: {
'react/react-in-jsx-scope': 'off',
'react/prop-types': 'off',
'spaced-comment': 'error',
quotes: ['error', 'single'],
'no-duplicate-imports': 'error',
'no-inline-styles': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'react/no-unescaped-entities': 'off',
camelcase: 'error',
'@typescript-eslint/no-unused-vars': [
'warn',
{
argsIgnorePattern: '^_',
varsIgnorePattern: '^_',
ignoreRestSiblings: true,
},
],
'@stylistic/jsx-self-closing-comp': 'error',
},
settings: {
'import/resolver': {
typescript: {},
},
react: {
version: 'detect',
},
},
},
// Global ignore
{
ignores: ['**/firmware-tool-api/'],
},
];
export default gui;

View File

@@ -0,0 +1,28 @@
import {
generateSchemaTypes,
generateReactQueryComponents,
} from '@openapi-codegen/typescript';
import { defineConfig } from '@openapi-codegen/cli';
import dotenv from 'dotenv';
dotenv.config()
export default defineConfig({
firmwareTool: {
from: {
source: 'url',
url: process.env.FIRMWARE_TOOL_SCHEMA_URL ?? 'http://localhost:3000/api-json',
},
outputDir: 'src/firmware-tool-api',
to: async (context) => {
const filenamePrefix = 'firmwareTool';
const { schemasFiles } = await generateSchemaTypes(context, {
filenamePrefix,
});
await generateReactQueryComponents(context, {
filenamePrefix,
schemasFiles,
});
},
},
});

View File

@@ -1,82 +1,112 @@
{
"name": "slimevr-ui",
"version": "0.5.1",
"private": true,
"name": "slimevr",
"version": "0.0.0",
"author": "SlimeVR Team <contact@slimevr.dev>",
"homepage": "https://slimevr.dev",
"type": "module",
"dependencies": {
"@ryuziii/discord-rpc": "1.0.1-rc.1",
"@xhayper/discord-rpc": "^1.3.0",
"commander": "^14.0.3",
"discord-rich-presence": "^0.0.8",
"glob": "^13.0.3",
"open": "^11.0.0",
"pino": "^10.3.1",
"pino-pretty": "^13.1.3",
"pino-roll": "^4.0.0"
},
"scripts": {
"start": "vite --force",
"gui": "electron-vite dev --config electron.vite.config.ts --watch",
"build": "electron-vite build --config electron.vite.config.ts",
"package": "pnpm run build && electron-builder",
"preview": "electron-vite preview --config electron.vite.config.ts",
"skipbundler": "vite build",
"lint": "tsc --noEmit && eslint --max-warnings=0 \"src/**/*.{js,jsx,ts,tsx,json}\" && prettier --check \"src/**/*.{js,jsx,ts,tsx,css,scss,md,json}\"",
"lint:fix": "tsc --noEmit && eslint --fix --max-warnings=0 \"src/**/*.{js,jsx,ts,tsx,json}\" && pnpm run format",
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,css,scss,md,json}\"",
"javaversion-build": "cd electron/resources/java-version/ && javac JavaVersion.java && jar cvfe JavaVersion.jar JavaVersion JavaVersion.class",
"gen:javaversion": "cd electron/resources/java-version/ && javac JavaVersion.java && jar cvfe JavaVersion.jar JavaVersion JavaVersion.class",
"gen:firmware-tool": "openapi-codegen gen firmwareTool"
},
"devDependencies": {
"@dword-design/eslint-plugin-import-alias": "^4.0.9",
"@electron/asar": "^4.0.1",
"@fluent/bundle": "^0.18.0",
"@fluent/react": "^0.15.2",
"@fontsource/poppins": "^5.1.0",
"@formatjs/intl-localematcher": "^0.2.32",
"@react-three/drei": "^9.114.3",
"@react-three/fiber": "^8.17.10",
"@tauri-apps/api": "^2.0.2",
"@tauri-apps/plugin-dialog": "^2.0.0",
"@tauri-apps/plugin-fs": "^2.0.0",
"@tauri-apps/plugin-os": "^2.0.0",
"@tauri-apps/plugin-shell": "^2.0.0",
"@tauri-apps/plugin-store": "^2.0.0",
"browser-fs-access": "^0.35.0",
"classnames": "^2.5.1",
"flatbuffers": "22.10.26",
"intl-pluralrules": "^2.0.1",
"ip-num": "^1.5.1",
"prompts": "^2.4.2",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-error-boundary": "^4.0.13",
"react-helmet": "^6.1.0",
"react-hook-form": "^7.53.0",
"react-modal": "^3.16.1",
"react-responsive": "^10.0.0",
"react-router-dom": "^6.26.2",
"semver": "^7.6.3",
"solarxr-protocol": "file:../solarxr-protocol",
"three": "^0.163.0",
"ts-pattern": "^5.4.0",
"typescript": "^5.6.3",
"use-double-tap": "^1.3.6"
},
"scripts": {
"start": "vite --force",
"build": "vite build",
"dev": "tauri dev",
"skipbundler": "tauri build --no-bundle",
"tauri": "tauri",
"lint": "tsc --noEmit && eslint --max-warnings=0 \"src/**/*.{js,jsx,ts,tsx,json}\" && prettier --check \"src/**/*.{js,jsx,ts,tsx,css,scss,md,json}\"",
"lint:fix": "tsc --noEmit && eslint --fix --max-warnings=0 \"src/**/*.{js,jsx,ts,tsx,json}\" && pnpm run format",
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,css,scss,md,json}\"",
"preview-vite": "vite preview",
"javaversion-build": "cd src-tauri/src/ && javac JavaVersion.java && jar cvfe JavaVersion.jar JavaVersion JavaVersion.class"
},
"devDependencies": {
"@dword-design/eslint-plugin-import-alias": "^4.0.9",
"@hookform/resolvers": "^3.6.0",
"@openapi-codegen/cli": "^3.1.0",
"@openapi-codegen/typescript": "^8.0.2",
"@react-hookz/deep-equal": "^3.0.3",
"@sentry/react": "10.29.0",
"@sentry/vite-plugin": "^2.22.7",
"@stylistic/eslint-plugin": "^5.5.0",
"@tailwindcss/forms": "^0.5.9",
"@tauri-apps/cli": "^2.0.2",
"@tailwindcss/typography": "^0.5.15",
"@tanstack/react-query": "^5.48.0",
"@tweenjs/tween.js": "^25.0.0",
"@twemoji/svg": "^15.0.0",
"@types/file-saver": "^2.0.7",
"@types/node": "^24.3.1",
"@types/react": "^18.3.11",
"@types/react-dom": "^18.3.0",
"@types/react-helmet": "^6.1.11",
"@types/react-modal": "3.16.3",
"@types/semver": "^7.5.8",
"@types/three": "^0.163.0",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"@typescript-eslint/eslint-plugin": "^8.48.1",
"@typescript-eslint/parser": "^8.48.1",
"@vitejs/plugin-react": "^4.3.2",
"ajv": "^8.17.1",
"autoprefixer": "^10.4.20",
"cross-env": "^7.0.3",
"eslint": "^8.57.1",
"eslint-config-airbnb": "^19.0.4",
"eslint-import-resolver-typescript": "^3.6.3",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.0",
"eslint-plugin-react": "^7.37.1",
"eslint-plugin-react-hooks": "^4.6.2",
"browser-fs-access": "^0.35.0",
"classnames": "^2.5.1",
"convert": "^5.12.0",
"dmg-license": "^1.0.11",
"dotenv": "^16.4.5",
"electron": "^40.3.0",
"electron-builder": "^26.7.0",
"electron-vite": "^5.0.0",
"eslint": "^9.39.1",
"eslint-import-resolver-typescript": "^3.10.1",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"flatbuffers": "22.10.26",
"globals": "^15.10.0",
"intl-pluralrules": "^2.0.1",
"ip-num": "^1.5.1",
"jotai": "^2.12.2",
"prettier": "^3.3.3",
"prompts": "^2.4.2",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-error-boundary": "^4.0.13",
"react-helmet": "^6.1.0",
"react-hook-form": "^7.63.0",
"react-markdown": "^9.0.1",
"react-modal": "^3.16.1",
"react-responsive": "^10.0.0",
"react-router-dom": "^6.26.2",
"remark-gfm": "^4.0.0",
"rollup-plugin-visualizer": "^5.12.0",
"sass": "^1.79.4",
"semver": "^7.6.3",
"solarxr-protocol": "file:../solarxr-protocol",
"spdx-satisfies": "^5.0.1",
"tailwind-gradient-mask-image": "^1.2.0",
"tailwindcss": "^3.4.13",
"vite": "^5.4.8"
}
"three": "^0.163.0",
"ts-pattern": "^5.4.0",
"typescript": "^5.6.3",
"typescript-eslint": "^8.46.2",
"use-double-tap": "^1.3.6",
"uuid": "^13.0.0",
"vite": "^5.4.8",
"yup": "^1.4.0"
},
"main": "./out/main/index.js"
}

Binary file not shown.

View File

@@ -7,8 +7,13 @@
## Websocket (server) status
websocket-connecting = يتم التوصيل بالسيرفر
websocket-connection_lost = انقطع الاتصال بالسيرفر. يتم إعادة التوصيل...
websocket-connecting = جاري التحميل...
websocket-connection_lost = تعطل الخادم!
websocket-connection_lost-desc = يبدو أن خادم SlimeVR تعطل. تحقق من السجلات وأعد تشغيل البرنامج
websocket-timedout = تعذر الاتصال بالخادم
websocket-timedout-desc = يبدو أن خادم SlimeVR قد تعطل أو انتهت مهلته. تحقق من السجلات وأعد تشغيل البرنامج
websocket-error-close = الخروج من SlimeVR
websocket-error-logs = افتح مجلد السجلات
## Update notification
@@ -26,6 +31,9 @@ tips-tap_setup = يمكنك النقر ببطء مرتين على جهاز ال
tips-turn_on_tracker = هل تستخدم أجهزة تعقب SlimeVR الرسمية؟ تذكر <b><em> أن تشغل أجهزة التعقب </em></b> بعد توصيلها بالكمبيوتر!
tips-failed_webgl = فشل تهيئة WebGL.
## Units
## Body parts
body_part-NONE = غير محدد
@@ -49,12 +57,72 @@ body_part-LEFT_HAND = اليد اليسرى
body_part-LEFT_UPPER_LEG = الفخذ الأيسر
body_part-LEFT_LOWER_LEG = الكاحل الأيسر
body_part-LEFT_FOOT = القدم اليسرى
body_part-LEFT_THUMB_METACARPAL = عظم مشط الإبهام الأيسر
body_part-LEFT_THUMB_PROXIMAL = الإبهام الأيسر القريب
body_part-LEFT_THUMB_DISTAL = الإبهام الأيسر البعيد
body_part-LEFT_INDEX_PROXIMAL = السبابة اليسرى القريبة
body_part-LEFT_INDEX_INTERMEDIATE = السبابة اليسرى المتوسطة
body_part-LEFT_INDEX_DISTAL = السبابة اليسرى البعيدة
body_part-LEFT_MIDDLE_PROXIMAL = الجزء الأوسط الأيسر القريب
body_part-LEFT_MIDDLE_INTERMEDIATE = الوسط الأيسر المتوسط
body_part-LEFT_MIDDLE_DISTAL = الجزء الأوسط الأيسر البعيد
body_part-LEFT_RING_PROXIMAL = الحلقة اليسرى القريبة
body_part-LEFT_RING_INTERMEDIATE = الحلقة اليسرى المتوسطة
body_part-LEFT_RING_DISTAL = الحلقة اليسرى البعيدة
body_part-LEFT_LITTLE_PROXIMAL = الجزء الأيسر الصغير القريب
body_part-LEFT_LITTLE_INTERMEDIATE = اليسار الصغير المتوسط
body_part-LEFT_LITTLE_DISTAL = الجزء البعيد الأيسر الصغير
body_part-RIGHT_THUMB_METACARPAL = مشط الإبهام الأيمن
body_part-RIGHT_THUMB_PROXIMAL = الإبهام الأيمن القريب
body_part-RIGHT_THUMB_DISTAL = الإبهام الأيمن البعيد
body_part-RIGHT_INDEX_PROXIMAL = السبابة اليمنى القريبة
body_part-RIGHT_INDEX_INTERMEDIATE = السبابة اليمنى المتوسطة
body_part-RIGHT_INDEX_DISTAL = السبابة اليمنى البعيدة
body_part-RIGHT_MIDDLE_PROXIMAL = منتصف اليمين القريب
body_part-RIGHT_MIDDLE_INTERMEDIATE = الوسط الأيمن المتوسط
body_part-RIGHT_MIDDLE_DISTAL = منتصف اليمين البعيد
body_part-RIGHT_RING_PROXIMAL = الحلقة اليمنى القريبة
body_part-RIGHT_RING_INTERMEDIATE = الحلقة اليمنى المتوسطة
body_part-RIGHT_RING_DISTAL = الحلقة اليمنى البعيدة
body_part-RIGHT_LITTLE_PROXIMAL = الجزء القريب الأيمن الصغير
body_part-RIGHT_LITTLE_INTERMEDIATE = المتوسط ​​الصغير الأيمن
body_part-RIGHT_LITTLE_DISTAL = الجزء البعيد الصغير الأيمن
## BoardType
board_type-UNKNOWN = مجهول
board_type-NODEMCU = NodeMCU
board_type-CUSTOM = لوحة مخصصة
board_type-WROOM32 = WROOM32
board_type-WEMOSD1MINI = Wemos D1 Mini
board_type-TTGO_TBASE = TTGO T-Base
board_type-ESP01 = ESP-01
board_type-SLIMEVR = سلايم في آر
board_type-LOLIN_C3_MINI = Lolin C3 Mini
board_type-BEETLE32C3 = Beetle ESP32-C3
board_type-ESP32C3DEVKITM1 = Espressif ESP32-C3 DevKitM-1
board_type-OWOTRACK = owoTrack
board_type-WRANGLER = رانجلر جويكونز
board_type-MOCOPI = سوني موكوبي (Mocopi)
board_type-WEMOSWROOM02 = Wemos Wroom-02 D1 Mini
board_type-XIAO_ESP32C3 = Seeed Studio XIAO ESP32C3
board_type-HARITORA = Haritora
board_type-ESP32C6DEVKITC1 = Espressif ESP32-C6 DevKitC-1
board_type-GLOVE_IMU_SLIMEVR_DEV = قفاز SlimeVR تطوير IMU
## Proportions
skeleton_bone-NONE = غير محدد
skeleton_bone-HEAD = إمالة الرأس
skeleton_bone-HEAD-desc =
هذه هي المسافة من سماعة الرأس إلى منتصف رأسك.
لضبط المسافة ، هز رأسك من اليسار إلى اليمين كما لو كنت لا توافق وقم بتعديله
حتى أي حركة في أجهزة التتبع الأخرى لا تكاد تذكر.
skeleton_bone-NECK = طول العنق
skeleton_bone-NECK-desc =
هذه هي المسافة من منتصف رأسك إلى قاعدة رقبتك.
لضبطها ، حرك رأسك لأعلى ولأسفل كما لو كنت تومئ رأسك أو تميل رأسك
إلى اليسار واليمين وقم بتعديله حتى تصبح أي حركة في أجهزة التتبع الأخرى ضئيلة.
skeleton_bone-torso_group = طول الجذع
skeleton_bone-UPPER_CHEST = طول أعلى الصدر
skeleton_bone-CHEST_OFFSET = درجة تشريد الصدر
@@ -81,6 +149,14 @@ skeleton_bone-ELBOW_OFFSET = درجة تشريد الكوع
## Tracker reset buttons
reset-reset_all = إعادة تعيين جميع النسب
reset-reset_all_warning-v2 =
<b>تحذير:</b> ستتم إعادة تعيين النسب إلى الإعدادات الافتراضية التي تم تحجيمها إلى الارتفاع الذي تم تكوينه.
هل أنت متأكد من أنك تريد القيام بذلك؟
reset-reset_all_warning-reset = إعادة تعيين النسب
reset-reset_all_warning-cancel = إلغاء
reset-reset_all_warning_default-v2 =
<b>تحذير:</b> لم يتم ضبط طولك، وسيتم إعادة تعيين نسبك إلى الإعدادات الافتراضية مع الارتفاع الافتراضي.
هل أنت متأكد من أنك تريد القيام بذلك؟
reset-full = اعاده تعيين
reset-mounting = إعادة تعيين التركيب
reset-yaw = إعادة تعيين الانعراج
@@ -124,7 +200,7 @@ widget-overlay-is_mirrored_label = عكس تراكب الشاشة
widget-drift_compensation-clear = حذف تعويض الانجراف
## Widget: Clear Reset Mounting
## Widget: Clear Mounting calibration
widget-clear_mounting = مسح إعادة تعيين التركيب
@@ -142,9 +218,12 @@ widget-developer_mode-more_info = المزيد
## Widget: IMU Visualizer
widget-imu_visualizer = دوران
widget-imu_visualizer-preview = عرض
widget-imu_visualizer-hide = إخفاء
widget-imu_visualizer-rotation_raw = صافي
widget-imu_visualizer-rotation_preview = عرض مسبق
widget-imu_visualizer-rotation_hide = إخفاء
widget-imu_visualizer-acceleration = التسارع
widget-imu_visualizer-position = الموضع
## Widget: Skeleton Visualizer
@@ -196,9 +275,17 @@ tracker-infos-url = عنوان URL لجهاز التعقب
tracker-infos-version = إصدار البرنامج الثابت
tracker-infos-hardware_rev = مراجعة الأجهزة
tracker-infos-hardware_identifier = معرف الجهاز
tracker-infos-data_support = دعم البيانات
tracker-infos-imu = مستشعر IMU
tracker-infos-board_type = اللوحة الرئيسية
tracker-infos-network_version = نسخة البروتوكول
tracker-infos-magnetometer = المقياس المغناطيسي
tracker-infos-magnetometer-status-v1 =
{ $status ->
[DISABLED] ملغي
[ENABLED] فعال
*[NOT_SUPPORTED] غير مدعوم
}
## Tracker settings
@@ -213,14 +300,25 @@ tracker-settings-mounting_section-edit = تعديل التركيب
tracker-settings-drift_compensation_section = السماح بتعويض الانجراف
tracker-settings-drift_compensation_section-description = هل يجب أن يعوض جهاز التعقب عن انحرافه عند تمكين تعويض الانجراف؟
tracker-settings-drift_compensation_section-edit = السماح بتعويض الانجراف
tracker-settings-use_mag = اسمح بالمقياس المغناطيسي على هذا المتتبع
# Multiline!
tracker-settings-use_mag-description =
هل يجب أن يستخدم هذا المتتبع مقياس المغناطيسية لتقليل الانجراف عند السماح باستخدام المقياس المغناطيسي؟ <b>من فضلا لا تغلق جهاز التتبع الخاص بك أثناء تبديل هذا!</b>
تحتاج إلى السماح باستخدام مقياس المغناطيسية أولا ، <magSetting>انقر هنا للذهاب إلى الإعداد</magSetting>.
tracker-settings-use_mag-label = السماح بالمقياس المغناطيسي
# The .<name> means it's an attribute and it's related to the top key.
# In this case that is the settings for the assignment section.
tracker-settings-name_section = اسم جهاز التعقب
tracker-settings-name_section-description = أعطها لقب لطيف :)
tracker-settings-name_section-placeholder = ساق نايتي بيست اليسرى
tracker-settings-name_section-label = اسم جهاز التعقب
tracker-settings-forget = انسي جهاز التعقب
tracker-settings-forget-description = يزيل جهاز التعقب من خادم SlimeVR ويمنعه من الاتصال به حتى يتم إعادة تشغيل الخادم. لن تضيع تكوين جهاز التعقب.
tracker-settings-forget-label = ننسى جهاز التعقب
tracker-settings-update-up_to_date = حديث
tracker-settings-update = التحديث الآن
tracker-settings-update-title = إصدار البرنامج الثابت
## Tracker part card info
@@ -296,6 +394,9 @@ settings-sidebar-utils = الأدوات المساعدة
settings-sidebar-serial = وحدة التحكم التسلسلية
settings-sidebar-appearance = مظهر
settings-sidebar-notifications = إشعارات
settings-sidebar-behavior = سلوك
settings-sidebar-firmware-tool = أداة برامج الجهاز المصنوع بنفسك
settings-sidebar-advanced = متقدم
## SteamVR settings
@@ -310,10 +411,14 @@ settings-general-steamvr-description =
مفيد فقط للألعاب أو التطبيقات التي تدعم أجهزة تعقب معينة.
settings-general-steamvr-trackers-waist = الخصر
settings-general-steamvr-trackers-chest = الصدر
settings-general-steamvr-trackers-feet = القدمين
settings-general-steamvr-trackers-knees = الركبتين
settings-general-steamvr-trackers-elbows = الكوعين
settings-general-steamvr-trackers-hands = اليدين
settings-general-steamvr-trackers-left_foot = القدم اليسرى
settings-general-steamvr-trackers-right_foot = القدم اليمنى
settings-general-steamvr-trackers-left_knee = الركبة اليسرى
settings-general-steamvr-trackers-right_knee = الركبة اليمنى
settings-general-steamvr-trackers-left_elbow = الكوع الأيسر
settings-general-steamvr-trackers-right_elbow = الكوع الأيمن
settings-general-steamvr-trackers-left_hand = اليد اليسرى
settings-general-steamvr-trackers-right_hand = اليد اليمنى
settings-general-steamvr-trackers-tracker_toggling = تعيين جهاز التعقب تلقائي
settings-general-steamvr-trackers-tracker_toggling-description = يتعامل تلقائيا مع تبديل أجهزة تعقب SteamVR أو إيقاف تشغيلها اعتمادا على مهام التعقب الحالية
settings-general-steamvr-trackers-tracker_toggling-label = تعيين جهاز التعقب التلقائي
@@ -339,14 +444,39 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = ينع
settings-general-tracker_mechanics-filtering-type-prediction = التنبؤ
settings-general-tracker_mechanics-filtering-type-prediction-description = يقلل من وقت الإستجابة ويجعل الحركات أكثر سرعة ، ولكنه قد يزيد من التوتر.
settings-general-tracker_mechanics-filtering-amount = المبلغ
settings-general-tracker_mechanics-yaw-reset-smooth-time = إعادة ضبط الانعراج على نحو سلس (يتعطل التنعيم 0 ثوان)
settings-general-tracker_mechanics-drift_compensation = تعويض الانجراف
# This cares about multilines
settings-general-tracker_mechanics-drift_compensation-description =
يعوض عن انجراف انعراج وحدة IMU بتطبيق دوران عكسي.
قم بتغيير كمية التعويض وعدد عمليات إعادة التعيين التي يتم أخذها في الاعتبار.
settings-general-tracker_mechanics-drift_compensation-enabled-label = تعويض الانجراف
settings-general-tracker_mechanics-drift_compensation-prediction = التنبؤ بتعويض الانحراف
# This cares about multilines
settings-general-tracker_mechanics-drift_compensation-prediction-description =
يتنبأ بتعويض انحراف الانعراج خارج النطاق المقاس مسبقا.
قم بتمكين هذا إذا كانت أجهزة التتبع تدور باستمرار على محور الانعراج.
settings-general-tracker_mechanics-drift_compensation-prediction-label = التنبؤ بتعويض الانحراف
settings-general-tracker_mechanics-drift_compensation_warning =
<b>تحذير:</b> استخدم تعويض الانحراف فقط إذا كنت بحاجة إلى إعادة الضبط
في كثير من الأحيان (كل ~ 5-10 دقائق).
تتضمن بعض وحدات IMU المعرضة لإعادة الضبط المتكرر ما يلي:
Joy-Cons و owoTrack و MPUs (بدون برامج ثابتة حديثة).
settings-general-tracker_mechanics-drift_compensation_warning-cancel = إلغاء
settings-general-tracker_mechanics-drift_compensation_warning-done = أتفهم
settings-general-tracker_mechanics-drift_compensation-amount-label = مبلغ التعويض
settings-general-tracker_mechanics-drift_compensation-max_resets-label = استخدام ما يصل إلى x عمليات إعادة التعيين الأخيرة
settings-general-tracker_mechanics-save_mounting_reset = حفظ معايرة إعادة ضبط التركيب التلقائي
settings-general-tracker_mechanics-save_mounting_reset-description =
يحفظ معايرة إعادة تعيين التثبيت التلقائي لأجهزة التتبع بين عمليات إعادة التشغيل. مفيد
عند ارتداء بدلة حيث لا تتحرك المتتبعات بين الجلسات. <b>لا ينصح به للمستخدمين العاديين!</b>
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = حفظ إعادة تعيين التركيب
settings-general-tracker_mechanics-use_mag_on_all_trackers = استخدم المقياس المغناطيسي على جميع أجهزة تتبع IMU التي تدعمه
settings-general-tracker_mechanics-use_mag_on_all_trackers-description =
يستخدم المقياس المغناطيسي على جميع أجهزة التعقب التي تحتوي على برامج ثابتة متوافقة له ، مما يقلل من الانحراف في البيئات المغناطيسية المستقرة.
يمكن تعطيله لكل جهاز تعقب في إعدادات التعقب. <b>من فضلك لا تغلق أيا من أجهزة التعقب أثناء تبديل هذا!</b>
settings-general-tracker_mechanics-use_mag_on_all_trackers-label = استخدم المقياس المغناطيسي على أجهزة التعقب
## FK/Tracking settings
@@ -368,11 +498,17 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = يمكن أن ي
settings-general-fk_settings-leg_tweak-toe_snap-description = الانجذاب إلى أصابع القدم يحاول تخمين دوران قدميك إذا لم تكن أجهزة تعقب القدم قيد الاستخدام.
settings-general-fk_settings-leg_tweak-foot_plant-description = تثبيت اصبع القدم يحاول تخمين دوران قدميك إذا لم تكن أجهزة تعقب القدم قيد الاستخدام.
settings-general-fk_settings-leg_fk = تعقب الساق
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = تمكين إعادة ضبط تركيب القدمين عن طريق المشي على رؤوس الأصابع.
settings-general-fk_settings-leg_fk-reset_mounting_feet = إعادة تعيين تركيب القدمين
settings-general-fk_settings-enforce_joint_constraints = حدود الهيكل العظمي
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = فرض القيود
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints-description = منع المفاصل من الدوران إلى ما بعد الحد الأقصى
settings-general-fk_settings-enforce_joint_constraints-correct_constraints = التصحيح مع قيود
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = تصحيح دوران المفاصل عندما تتجاوز حدودها
settings-general-fk_settings-arm_fk = تعقب الذراع
settings-general-fk_settings-arm_fk-description = تغيير طريقة تعقب الذراعين.
settings-general-fk_settings-arm_fk-force_arms = إجبار الذراعين من ايتش أم دي
settings-general-fk_settings-reset_settings = إعادة تعيين الإعدادات
settings-general-fk_settings-reset_settings-reset_hmd_pitch-description = أعد تعيين درجة جهاز الرأس (الدوران الرأسي) عند إجراء إعادة تعيين كاملة. مفيد في حالة ارتداء جهاز الرأس على الجبهة ل VTubing أو mocap. لا تقم بتمكين لVR.
settings-general-fk_settings-reset_settings-reset_hmd_pitch = إعادة تعيين درجة جهاز الرأس
settings-general-fk_settings-arm_fk-reset_mode-description = قم بتغيير وضع الذراع المتوقع لإعادة ضبط المتصاعد.
settings-general-fk_settings-arm_fk-back = العودة
settings-general-fk_settings-arm_fk-back-description = الوضع الافتراضي، مع وضع الذراعين العلويين إلى الخلف والساعدين للأمام.
@@ -398,9 +534,6 @@ settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = مت
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = متوسط انحراف الركبتين ولفة مع الكاحلين
settings-general-fk_settings-self_localization-title = وضع Mocap
settings-general-fk_settings-self_localization-description = يسمح وضع Mocap للهيكل العظمي بتعقب موضعه تقريبا بدون سماعة رأس أو أجهزة تعقب أخرى. لاحظ أن هذا يتطلب أجهزة تعقب القدمين والرأس للعمل ولا تزال تجريبية.
settings-general-fk_settings-vive_emulation-title = محاكاة فايف
settings-general-fk_settings-vive_emulation-description = محاكاة مشاكل تعقب الخصر التي تعاني منها أجهزة تعقب فايف. هذه مزحة وتجعل التتبع أسوأ.
settings-general-fk_settings-vive_emulation-label = تمكين محاكاة فايف
## Gesture control settings (tracker tapping)
@@ -449,6 +582,9 @@ settings-general-interface-dev_mode = وضع المطوّر
settings-general-interface-dev_mode-description = يمكن أن يكون هذا الوضع مفيدًا إذا كنت بحاجة إلى بيانات متعمقة أو للتفاعل مع أجهزة التعقب المتصلة على مستوى أكثر تقدمًا.
settings-general-interface-dev_mode-label = وضع المطوّر
settings-general-interface-theme = موضوع اللون
settings-general-interface-show-navbar-onboarding = إظهار "{ navbar-onboarding }" على قائمة التنقل
settings-general-interface-show-navbar-onboarding-description = يغير هذا إذا ظهر الزر "{ navbar-onboarding }" على قائمة التنقل.
settings-general-interface-show-navbar-onboarding-label = إظهار "{ navbar-onboarding }"
settings-general-interface-lang = اختر اللغة
settings-general-interface-lang-description = قم بتغيير اللغة الافتراضية التي تريد استخدامها.
settings-general-interface-lang-placeholder = اختر اللغة التي تريد استخدامها
@@ -460,6 +596,9 @@ settings-interface-appearance-font-os_font = خط نظام التشغيل
settings-interface-appearance-font-slime_font = الخط الافتراضي
settings-interface-appearance-font_size = قياس الخط الأساسي
settings-interface-appearance-font_size-description = يؤثر هذا على حجم خط الواجهة بأكملها باستثناء لوحة الإعدادات هذه.
settings-interface-appearance-decorations = استخدم الزخارف الأصلية للنظام
settings-interface-appearance-decorations-description = لن يؤدي هذا إلى عرض الشريط الأعلى للواجهة وسيستخدم نظام التشغيل بدلا من ذلك.
settings-interface-appearance-decorations-label = استخدم الزخارف الأصلية
## Notification settings
@@ -474,9 +613,34 @@ settings-general-interface-feedback_sound-volume = حجم صوت ردود الف
settings-general-interface-connected_trackers_warning = تحذير عن أجهزة التعقب المتصلة
settings-general-interface-connected_trackers_warning-description = سيعرض هذا الخيار نافذة كل مرة تحاول فيها الخروج من SlimeVR أثناء وجود جهاز أو أكثر من أجهزة التعقب المتصلة. سيذكرك بإيقاف تشغيل أجهزة التعقب عند الانتهاء للحفاظ على عمر البطارية.
settings-general-interface-connected_trackers_warning-label = تحذير عن أجهزة التعقب المتصلة عند الخروج
## Behavior settings
settings-interface-behavior = السلوك
settings-general-interface-use_tray = تصغير إلى علبة النظام
settings-general-interface-use_tray-description = يتيح لك إغلاق النافذة دون إغلاق خادم SlimeVR حتى تتمكن من الاستمرار في استخدامه دون إزعاجك من واجهة المستخدم الرسومية.
settings-general-interface-use_tray-label = تصغير إلى علبة النظام
settings-general-interface-discord_presence = مشاركة النشاط على Discord
settings-general-interface-discord_presence-description = يخبر عميل Discord الخاص بك أنك تستخدم SlimeVR جنبا إلى جنب مع عدد أجهزة تعقب IMU التي تستخدمها.
settings-general-interface-discord_presence-label = مشاركة النشاط على Discord
settings-general-interface-discord_presence-message =
{ $amount ->
[0] صفر
[zero] صفر
[one] واحد
[two] اثنان
[few] قليل
[many] كثيرة
*[other] أخرى
}
settings-interface-behavior-error_tracking = جمع الأخطاء عبر Sentry.io
settings-interface-behavior-error_tracking-description_v2 =
<h1>هل توافق على جمع بيانات الخطأ مجهولة المصدر؟</h1>
<b>نحن لا نجمع معلومات شخصية</b> مثل عنوان IP الخاص بك أو بيانات الاعتماد اللاسلكية. يقدر SlimeVR خصوصيتك!
لتوفير أفضل تجربة للمستخدم، نقوم بجمع تقارير الأخطاء ومقاييس الأداء ومعلومات نظام التشغيل مجهولة المصدر. يساعدنا هذا في اكتشاف الأخطاء والمشكلات المتعلقة ب SlimeVR. يتم جمع هذه المقاييس عبر Sentry.io.
settings-interface-behavior-error_tracking-label = إرسال الأخطاء إلى المطورين
## Serial settings
@@ -495,10 +659,11 @@ settings-serial-factory_reset-warning =
مما يعني أن إعدادات واي فاي والمعايرة <b>ستفقد جميعا!</b>
settings-serial-factory_reset-warning-ok = أنا أعرف ماذا أفعل
settings-serial-factory_reset-warning-cancel = إلغاء
settings-serial-get_infos = احصل على معلومات
settings-serial-serial_select = اختر منفذ تسلسلي
settings-serial-auto_dropdown_item = تلقائي
settings-serial-get_wifi_scan = احصل على فحص WiFi
settings-serial-file_type = نص عادي
settings-serial-save_logs = حفظ في ملف
## OSC router settings
@@ -529,14 +694,22 @@ settings-osc-router-network-address-placeholder = عنوان آي بي في 4
settings-osc-vrchat = أجهزة تعقب "في ار تشات أوه أس سي"
# This cares about multilines
settings-osc-vrchat-description =
قم بتغيير الإعدادات الخاصة ب في ار تشات لتلقي بيانات ايتش أم دي وإرسالها
بيانات أجهزة تعقب لتعقب الجسم (يعمل على كوست مستقل).
settings-osc-vrchat-description-v1 =
تغيير الإعدادات الخاصة بمعيار أجهزة تعقب OSC المستخدم لإرسال
بيانات التعقب إلى التطبيقات التي لا تحتوي على SteamVR (مثل Quest المستقل).
تأكد من تمكين OSC في VRChat عبر قائمة الإجراءات ضمن OSC > ممكن.
settings-osc-vrchat-enable = تمكين
settings-osc-vrchat-enable-description = بتبديل إرسال واستقبال البيانات.
settings-osc-vrchat-enable-label = تمكين
settings-osc-vrchat-oscqueryEnabled = تمكين OSCQuery
settings-osc-vrchat-oscqueryEnabled-description =
يكتشف OSCQuery تلقائيا مثيلات VRChat قيد التشغيل ويرسل البيانات إليها.
يمكنه أيضا الإعلان عن نفسه لهم من أجل تلقي بيانات HMD ووحدة التحكم.
للسماح بتلقي بيانات HMD ووحدة التحكم من VRChat ، انتقل إلى إعدادات القائمة الرئيسية
ضمن "التتبع و IK (الحركة العكسية)" وتمكين "السماح بإرسال بيانات OSC لتتبع الرأس والمعصم".
settings-osc-vrchat-oscqueryEnabled-label = تمكين OSCQuery
settings-osc-vrchat-network = منافذ الشبكة
settings-osc-vrchat-network-description = قم بتعيين المنافذ للاستماع وإرسال البيانات إلى في ار تشات
settings-osc-vrchat-network-description-v1 = ضبط المنافذ الاستماع إلى البيانات وإرسالها. يمكن تركها دون أن تمس ل VRChat.
settings-osc-vrchat-network-port_in =
.label = منفذ الدخول
.placeholder = منفذ الدخول (الإفتراضي: 9001)
@@ -544,7 +717,7 @@ settings-osc-vrchat-network-port_out =
.label = منفذ الخروج
.placeholder = منفذ الخروج (الإفتراضي: 9000)
settings-osc-vrchat-network-address = عنوان الشبكة
settings-osc-vrchat-network-address-description = اختر العنوان الذي تريد إرسال البيانات إلى في ار تشات (تحقق من إعدادات واي فاي على جهازك)
settings-osc-vrchat-network-address-description-v1 = اختر العنوان الذي تريد إرسال البيانات إليه. يمكن تركها دون أن تمس ل VRChat.
settings-osc-vrchat-network-address-placeholder = عنوان آي بي الخاص بفي ار تشات
settings-osc-vrchat-network-trackers = أجهزة التعقب
settings-osc-vrchat-network-trackers-description = تبديل إرسال أجهزة تتبع محددة عبر أوه أس سي.
@@ -577,16 +750,54 @@ settings-osc-vmc-network-address-description = قم بتعيين العنوان
settings-osc-vmc-network-address-placeholder = عنوان آي بي في 4
settings-osc-vmc-vrm = نموذج في ار إم
settings-osc-vmc-vrm-description = قم بتحميل نموذج في ار إم للسماح بتركيز الرأس وتمكين توافق أعلى مع تطبيقات الأخرى
settings-osc-vmc-vrm-model_unloaded = لم يتم تحميل أي نموذج
settings-osc-vmc-vrm-model_loaded =
{ $titled ->
[true] تحميل النموذج: { $name }
*[other] تم تحميل نموذج بدون عنوان
}
settings-osc-vmc-vrm-untitled_model = نموذج بدون عنوان
settings-osc-vmc-vrm-file_select = اسحب نموذج وأفلته لاستخدامه أو <u> تصفح </ u>
settings-osc-vmc-anchor_hip = ثبت في الوركين
settings-osc-vmc-anchor_hip-description = ثبت التعقب في الوركين، هو مفيد إن كنت تيوبنغ جالسًا. في حالة التعطيل، قم بتحميل نموذج في ار إم.
settings-osc-vmc-anchor_hip-label = ثبت في الوركين
settings-osc-vmc-mirror_tracking = اعكس التعقب
settings-osc-vmc-mirror_tracking-description = اعكس التعقب أفقيا.
settings-osc-vmc-mirror_tracking-label = اعكس التعقب
## Common OSC settings
## Advanced settings
settings-utils-advanced = متقدم
settings-utils-advanced-reset-gui = إعادة تعيين إعدادات واجهة المستخدم الرسومية (GUI)
settings-utils-advanced-reset-gui-description = قم باستعادة الإعدادات الافتراضية للواجهة.
settings-utils-advanced-reset-gui-label = إعادة تعيين واجهة المستخدم الرسومية
settings-utils-advanced-reset-server = إعادة تعيين إعدادات التعقب
settings-utils-advanced-reset-server-description = استعادة الإعدادات الافتراضية للتعقب.
settings-utils-advanced-reset-server-label = إعادة تعيين التعقب
settings-utils-advanced-reset-all = إعادة تعيين جميع الإعدادات
settings-utils-advanced-reset-all-description = قم باستعادة الإعدادات الافتراضية لكل من الواجهة و التعقب.
settings-utils-advanced-reset-all-label = إعادة تعيين الكل
settings-utils-advanced-reset_warning =
{ $type ->
[gui]
<b>تحذير:</b> سيؤدي هذا إلى إعادة تعيين جميع الإعدادات الخاصة بك إلى الإعدادات الافتراضية.
هل أنت متأكد من أنك تريد القيام بذلك؟
[server] <b>تحذير:</b> سيؤدي هذا إلى إعادة تعيين إعدادات التعقب إلى الإعدادات الافتراضية. هل أنت متأكد من أنك تريد القيام بذلك؟
*[all]
<b>تحذير:</b> سيؤدي هذا إلى إعادة تعيين جميع الإعدادات الخاصة بك إلى الإعدادات الافتراضية.
هل أنت متأكد من أنك تريد القيام بذلك؟
}
settings-utils-advanced-reset_warning-reset = إعادة تعيين الإعدادات
settings-utils-advanced-reset_warning-cancel = إلغاء
settings-utils-advanced-open_data-v1 = مجلد التكوين
settings-utils-advanced-open_data-description-v1 = فتح مجلد إعدادات SlimeVR في مستكشف الملفات ، والذي يحتوي على الإعدادات
settings-utils-advanced-open_data-label = فتح المجلد
settings-utils-advanced-open_logs = مجلد السجلات
settings-utils-advanced-open_logs-description = افتح مجلد سجلات SlimeVR في مستكشف الملفات ، والذي يحتوي على سجلات التطبيق
settings-utils-advanced-open_logs-label = فتح المجلد
## Home Screen
## Tracking Checlist
## Setup/onboarding menu
@@ -603,16 +814,12 @@ onboarding-setup_warning-cancel = متابعة الإعداد
## Wi-Fi setup
onboarding-wifi_creds-back = العودة إلى المقدمة
onboarding-wifi_creds = إدخل بيانات اعتماد واي فاي
# This cares about multilines
onboarding-wifi_creds-description =
ستستخدم أجهزة التعقب بيانات الاعتماد هذه للاتصال لاسلكيًا.
الرجاء استخدام بيانات الاعتماد التي تتصل بها حاليًا.
onboarding-wifi_creds-skip = تخطى إعدادات واي فاي
onboarding-wifi_creds-submit = إرسال!
onboarding-wifi_creds-ssid =
.label = اسم الواي فاي
.placeholder = أدخل اسم الواي فاي
onboarding-wifi_creds-ssid-required = مطلوب اسم Wi-Fi
onboarding-wifi_creds-password =
.label = كلمة السر
.placeholder = أدخل كلمة السر
@@ -647,13 +854,6 @@ onboarding-reset_tutorial-2 =
onboarding-home = مرحبا بكم في سلايم في ار
onboarding-home-start = هيا نتجهز!
## Enter VR part of setup
onboarding-enter_vr-back = العودة إلى تعيين أجهزة التعقب
onboarding-enter_vr-title = حان وقت دخول في ار!
onboarding-enter_vr-description = ضع كل أجهزة التعقب ثم أدخل في ار!
onboarding-enter_vr-ready = أنا جاهز
## Setup done
onboarding-done-title = أنت جاهز تمامًا!
@@ -670,6 +870,7 @@ onboarding-connect_tracker-issue-serial = أواجه مشكلة في الاتص
onboarding-connect_tracker-usb = جهاز تعقب يو أس بي
onboarding-connect_tracker-connection_status-none = نبحث عن أجهزة التعقب
onboarding-connect_tracker-connection_status-serial_init = نتواصل بجهاز التسلسلي
onboarding-connect_tracker-connection_status-obtaining_mac_address = الحصول على عنوان mac الخاص بجهاز التعقب
onboarding-connect_tracker-connection_status-provisioning = نرسل بيانات اعتماد واي فاي
onboarding-connect_tracker-connection_status-connecting = جارٍ إرسال بيانات اعتماد الواي فاي
onboarding-connect_tracker-connection_status-looking_for_server = نبحث عن السرفر
@@ -697,12 +898,12 @@ onboarding-connect_tracker-next = لقد قمت بتوصيل جميع أجهزة
onboarding-calibration_tutorial = برنامج تعليم معايرة IMU
onboarding-calibration_tutorial-subtitle = سوف يساعد هذا في تقليل الانجراف التعقب!
onboarding-calibration_tutorial-description = كل مرة تقوم بتشغيل أجهزة التعقب، يجب أن تستريح للحظة على سطح مستوٍ للمعايرة. لنفعل الشيء نفسه بالنقر فوق الزر "{ onboarding-calibration_tutorial-calibrate }" ، <b>لا تحركها!</b>
onboarding-calibration_tutorial-calibrate = وضعت أجهزة التعقب على الطاولة
onboarding-calibration_tutorial-status-waiting = بانتظارك
onboarding-calibration_tutorial-status-calibrating = جاري المعايرة
onboarding-calibration_tutorial-status-success = رائع!
onboarding-calibration_tutorial-status-error = تم نقل جهاز التعقب
onboarding-calibration_tutorial-skip = تخطي البرنامج التعليمي
## Tracker assignment tutorial
@@ -734,6 +935,31 @@ onboarding-assign_trackers-assigned =
onboarding-assign_trackers-advanced = إظهار مواقع التعيين المتقدمة
onboarding-assign_trackers-next = لقد عينت جميع أجهزة التعقب
onboarding-assign_trackers-mirror_view = عرض المرآة
onboarding-assign_trackers-option-amount =
{ $trackersCount ->
[zero] صفر
[one] واحد
[two] اثنان
[few] قليلة
[many] كثيرة
*[other] أخرى
}
onboarding-assign_trackers-option-label =
{ $mode ->
[lower-body] الجسم السفلي
[core] أساس الجسم
[enhanced-core] الأساس المحسن
[full-body] الجسم الكامل
*[all] الكل
}
onboarding-assign_trackers-option-description =
{ $mode ->
[lower-body] الحد الأدنى لتعقب الجسم الكامل في الواقع الافتراضي
[core] + تحسين تعقب العمود الفقري
[enhanced-core] + دوران القدم
[full-body] + تعقب الكوع
*[all] جميع مهام التعقب المتاحة
}
## Tracker assignment warnings
@@ -809,16 +1035,16 @@ onboarding-choose_mounting = ما طريقة معايرة التركيب الم
# Multiline text
onboarding-choose_mounting-description = اتجاه التركيب يصحح وضع أجهزة التعقب على جسمك.
onboarding-choose_mounting-auto_mounting = التركيب التلقائي
# Italized text
onboarding-choose_mounting-auto_mounting-label = تجريبي
# Italicized text
onboarding-choose_mounting-auto_mounting-label-v2 = الموصى به
onboarding-choose_mounting-auto_mounting-description = سيكتشف هذا تلقائيًا اتجاهات التركيب لجميع أجهزة التعقب من وضعين
onboarding-choose_mounting-manual_mounting = التركيب اليدوي
# Italized text
onboarding-choose_mounting-manual_mounting-label = المستحسن
# Italicized text
onboarding-choose_mounting-manual_mounting-label-v2 = قد لا تكون الدقة كافية
onboarding-choose_mounting-manual_mounting-description = سيسمح لك باختيار اتجاه التثبيت يدويًا لكل جهاز تعقب
# Multiline text
onboarding-choose_mounting-manual_modal-title =
هل أنت متأكد من أنك تريد
هل أنت متأكد من أنك تريد
معايرة التركيب التلقائي؟
onboarding-choose_mounting-manual_modal-description = <b>يوصى بمعايرة التركيب اليدوي للمستخدمين الجدد</b> ، حيث قد يكون من الصعب الحصول على أوضاع معايرة التركيب التلقائي الصحيحة من اول مرة وقد تتطلب بعض التمرين.
onboarding-choose_mounting-manual_modal-confirm = أنا أعرف ماذا أفعل
@@ -847,44 +1073,18 @@ onboarding-automatic_mounting-mounting_reset-title = إعادة تعيين ال
onboarding-automatic_mounting-mounting_reset-step-0 = 1. قرفص في وضع "التزلج" مع ثني ساقيك ، وإمالة الجزء العلوي من جسمك إلى الأمام ، وثني ذراعيك.
onboarding-automatic_mounting-mounting_reset-step-1 = 2. اضغط على زر "إعادة تعيين التركيب" وانتظر لمدة 3 ثوان قبل إعادة تعيين دوران تركيب أجهزة التعقب.
onboarding-automatic_mounting-preparation-title = التحضير
onboarding-automatic_mounting-preparation-step-0 = 1. قف بشكل مستقيم مع ذراعيك على جانبيك.
onboarding-automatic_mounting-preparation-step-1 = اضغط على زر "إعادة ضبط" و انتظر لمدة 3 ثوانٍ قبل إعادة تعيين أجهزة التعقب.
onboarding-automatic_mounting-put_trackers_on-title = ارتدي أجهزة التعقب
onboarding-automatic_mounting-put_trackers_on-description = لمعايرة دوران التركيب، سنستخدم أجهزة التعقب التي قمت بتعيينها. ارتدي جميع أجهزة التعقب، يمكنك معرفة أي منها في المستند على اليمين.
onboarding-automatic_mounting-put_trackers_on-next = ارتديت جميع أجهزة التعقب.
## Tracker proportions method choose
## Tracker manual proportions setupa
onboarding-choose_proportions = ما هي طريقة معايرة النسب التي يجب استخدامها؟
# Multiline string
onboarding-choose_proportions-description-v1 =
تستخدم نسب الجسم لمعرفة قياسات جسمك. إنهم مطالبون لحساب مواقع أجهزة التعقب.
عندما لا تتطابق نسب جسمك مع تلك المحفوظة ، ستكون دقة التعقب أسوأ وستلاحظ أشياء مثل التزلج أو الانزلاق ، أو أن جسمك لا يتطابق مع صورتك الرمزية جيدا.
<b>ما عليك سوى قياس جسمك مرة واحدة!</b> إن لم تكن خاطئة أو تغير جسمك ، فلن تحتاج إلى القيام بها مرة أخرى.
onboarding-choose_proportions-auto_proportions = النسب التلقائية
# Italized text
onboarding-choose_proportions-auto_proportions-subtitle = الموصى به
onboarding-choose_proportions-auto_proportions-descriptionv3 =
سيؤدي ذلك إلى تخمين نسبك عن طريق تسجيل عينة من تحركاتك وتمريرها عبر خوارزمية.
<b>يتطلب ذلك توصيل جهاز الواقع الافتراضي (HMD) ب SlimeVR و وضعها على رأسك!</b>
onboarding-choose_proportions-manual_proportions = النسب اليدوية
# Italized text
onboarding-choose_proportions-manual_proportions-subtitle = للمسات الصغيرة
onboarding-choose_proportions-manual_proportions-description = سيسمح لك بتعديل النسب يدويًا عن طريق تعديلها مباشرة
onboarding-choose_proportions-export = تصدير النسب
onboarding-choose_proportions-import = استيراد النسب
onboarding-choose_proportions-import-success = تم استيراده
onboarding-choose_proportions-import-failed = فشل
onboarding-choose_proportions-file_type = ملف نسب الجسم
## Tracker manual proportions setup
onboarding-manual_proportions-back = العودة إلى برنامج تعليم إعادة التعيين
onboarding-manual_proportions-title = نسب الجسم اليدوية
onboarding-manual_proportions-precision = ضبط الدقة
onboarding-manual_proportions-auto = المعايرة التلقائية
onboarding-manual_proportions-ratio = اضبط حسب مجموعات النسب
onboarding-manual_proportions-fine_tuning_button = ضبط النسب تلقائيا
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = يرجى توصيل سماعة رأس VR لاستخدام الضبط الدقيق التلقائي
onboarding-manual_proportions-export = تصدير النسب
onboarding-manual_proportions-import = استيراد النسب
onboarding-manual_proportions-file_type = ملف نسب الجسم
## Tracker automatic proportions setup
@@ -905,21 +1105,33 @@ onboarding-automatic_proportions-requirements-descriptionv2 =
يقوم جهاز الواقع الافتراضي بالإبلاغ عن البيانات الموضعية إلى خادم SlimeVR (وهذا يعني عموما تشغيل SteamVR وتوصيله ب SlimeVR باستخدام برنامج تشغيل SteamVR الخاص ب SlimeVR).
يعمل التتبع الخاص بك ويمثل تحركاتك بدقة (على سبيل المثال ، لقد أجريت إعادة تعيين كاملة وتتحرك في الاتجاه الصحيح عند الركل, الانحناء, الجلوس, إلخ).
onboarding-automatic_proportions-requirements-next = لقد قرأت المتطلبات
onboarding-automatic_proportions-check_height-title = تحقق من طولك
onboarding-automatic_proportions-check_height-description = نستخدم طولك كأساس لقياساتنا باستخدام ارتفاع HMD كتقريب لطولك الفعلي ، ولكن من الأفضل التحقق مما إذا كانت صحيحة بنفسك!
onboarding-automatic_proportions-check_height-title-v3 = قم بقياس ارتفاع سماعة الرأس
onboarding-automatic_proportions-check_height-description-v2 = يجب أن يكون ارتفاع سماعة الرأس (HMD) أقل قليلا من طولك الكامل ، حيث تقيس سماعات الرأس ارتفاع عينيك. سيتم استخدام هذا القياس كخط أساس لنسب جسمك.
# All the text is in bold!
onboarding-automatic_proportions-check_height-calculation_warning = يرجى الضغط على الزر أثناء الوقوف <u>في وضع مستقيم</u> لحساب طولك. لديك 3 ثوان بعد الضغط على الزر!
onboarding-automatic_proportions-check_height-calculation_warning-v3 = ابدأ في القياس أثناء الوقوف <u>في وضع مستقيم</u> لقياس طولك. احرص على عدم رفع يديك أعلى من سماعة الرأس ، لأنها قد تؤثر على القياس!
onboarding-automatic_proportions-check_height-guardian_tip =
إذا كنت تستخدم سماعة رأس VR مستقلة ، فتأكد من تشغيل حدود الحارس /
لكي يكون طولك صحيحا!
onboarding-automatic_proportions-check_height-fetch_height = أنا واقف!
# Context is that the height is unknown
onboarding-automatic_proportions-check_height-unknown = مجهول
# Shows an element below it
onboarding-automatic_proportions-check_height-hmd_height1 = طولك من خلال HMD
# Shows an element below it
onboarding-automatic_proportions-check_height-height1 = لذا فإن طولك الفعلي هو
onboarding-automatic_proportions-check_height-hmd_height2 = ارتفاع سماعة الرأس هو:
onboarding-automatic_proportions-check_height-measure-start = ابدأ القياس
onboarding-automatic_proportions-check_height-measure-stop = توقف عن القياس
onboarding-automatic_proportions-check_height-measure-reset = إعادة محاولة القياس
onboarding-automatic_proportions-check_height-next_step = انهم بخير
onboarding-automatic_proportions-check_floor_height-title = قم بقياس الارتفاع عن الأرض (اختياري)
onboarding-automatic_proportions-check_floor_height-description = في بعض الحالات، قد لا يتم ضبط الارتفاع عن الأرض بشكل صحيح بواسطة سماعة الرأس، مما يتسبب في قياس ارتفاع سماعة الرأس على أنه أعلى مما ينبغي. يمكنك قياس "الارتفاع" عن الأرض لتصحيح ارتفاع سماعة الرأس.
# All the text is in bold!
onboarding-automatic_proportions-check_floor_height-calculation_warning-v2 = ابدأ بقياس و ضع وحدة التحكم على الأرض لقياس ارتفاعها. إذا كنت متأكدا من صحة الارتفاع عن الأرض ، فيمكنك تخطي هذه الخطوة.
# Shows an element below it
onboarding-automatic_proportions-check_floor_height-floor_height = الارتفاع عن الأرض هو:
onboarding-automatic_proportions-check_floor_height-full_height = طولك الكامل المقدر هو:
onboarding-automatic_proportions-check_floor_height-measure-start = ابدأ القياس
onboarding-automatic_proportions-check_floor_height-measure-stop = توقف عن القياس
onboarding-automatic_proportions-check_floor_height-measure-reset = إعد محاولة القياس
onboarding-automatic_proportions-check_floor_height-skip_step = تخطي الخطوة وحفظ
onboarding-automatic_proportions-check_floor_height-next_step = استخدم الارتفاع عن الأرض وحفظه
onboarding-automatic_proportions-start_recording-title = استعد للتحرك
onboarding-automatic_proportions-start_recording-description = سنقوم الآن بتسجيل بعض الوضعيات والحركات المحددة. ستتم مطالبتك بذلك في الشاشة التالية. كن مستعدا للبدء عند الضغط على الزر!
onboarding-automatic_proportions-start_recording-next = بدء التسجيل
@@ -953,10 +1165,21 @@ onboarding-automatic_proportions-verify_results-redo = إعادة التسجيل
onboarding-automatic_proportions-verify_results-confirm = تبدو صحيحة
onboarding-automatic_proportions-done-title = تم قياس الجسم و حفظه.
onboarding-automatic_proportions-done-description = اكتملت معايرة نسب جسمك!
onboarding-automatic_proportions-error_modal =
<b>تحذير:</b> تم العثور على خطأ أثناء تقدير النسب!
يرجى <docs>التحقق من المستندات</docs> أو الانضمام إلى <discord>Discord</discord> للحصول على المساعدة ^_^
onboarding-automatic_proportions-error_modal-v2 =
<b>تحذير:</b> حدث خطأ أثناء تقدير النسب!
من المحتمل أن تكون هذه مشكلة معايرة التركيب. تأكد من أن التعقب يعمل بشكل صحيح قبل المحاولة مرة أخرى.
يرجى <docs>التحقق من التعليمات</docs> أو الانضمام إلى <discord>Discord</discord> للحصول على المساعدة ^_^
onboarding-automatic_proportions-error_modal-confirm = مفهوم!
onboarding-automatic_proportions-smol_warning =
الارتفاع الذي تم تكوينه هو { $height } و هو أصغر من الحد الأدنى للارتفاع المقبول البالغ { $minHeight }.
<b>يرجى إعادة القياسات والتأكد من صحتها.</b>
onboarding-automatic_proportions-smol_warning-cancel = الرجوع
## User height calibration
## Stay Aligned setup
## Home
@@ -980,6 +1203,36 @@ status_system-StatusSteamVRDisconnected =
*[other] حاليًا غير متصل بـ SteamVR عبر برنامج تشغيل SlimeVR.
}
status_system-StatusTrackerError = يحتوي جهاز التعقب { $trackerName } على خطأ.
status_system-StatusUnassignedHMD = يجب تعيين سماعة رأس VR كجهاز تعقب للرأس.
## Firmware tool globals
firmware_tool-next_step = الخطوة التالية
firmware_tool-previous_step = الخطوة السابقة
firmware_tool-ok = تبدو جيدة
firmware_tool-retry = اعادة المحاولة
firmware_tool-loading = تحميل...
## Firmware tool Steps
firmware_tool = أداة البرامج الثابتة DIY
firmware_tool-description = يسمح لك بتكوين و لتحديث أجهزة التعقب DIY الخاصة بك
firmware_tool-not_available = عفوا ، أداة البرامج الثابتة غير متوفرة في الوقت الحالي. عد لاحقا!
firmware_tool-not_compatible = أداة البرنامج الثابت غير متوافقة مع هذا الإصدار من الخادم. يرجى تحديث الخادم الخاص بك!
firmware_tool-flash_method_step = طريقة التثبيت
firmware_tool-flash_method_step-description = الرجاء حدد طريقة التثبيت التي تريد استخدامها
firmware_tool-flashbtn_step = اضغط على زر التمهيد
firmware_tool-flashbtn_step-description = قبل الانتقال إل الخطوة التالية، هناك بعض الأشياء التي عليك القيام بها
firmware_tool-flashbtn_step-board_SLIMEVR = أوقف تشغيل جهاز التعقب، قم بإزالة العلبة (إن وجدت)، وقم بتوصيل كابل USB بهذا الكمبيوتر ، ثم قم بإحدى الخطوات التالية وفقا لمراجعة لوحة SlimeVR:
## firmware tool build status
## Firmware update status
## Dedicated Firmware Update Page
## Tray Menu
@@ -1008,3 +1261,9 @@ unknown_device-modal-description =
هل تريد توصيله ب SlimeVR؟
unknown_device-modal-confirm = أكيد
unknown_device-modal-forget = تجاهلها
## Error collection consent modal
## Tracking checklist section

View File

@@ -9,6 +9,11 @@
websocket-connecting = Připojování k serveru
websocket-connection_lost = Ztraceno spojení se serverem. Pokouším se znovu připojit...
websocket-connection_lost-desc = Vypadá to že SlimeVR server spadl. Zkontrolujte záznamy protokolů a restartuje aplikaci
websocket-timedout = Nelze se připojit k serveru
websocket-timedout-desc = Vypadá to že buď vypršel časový limit SlimeVR serveru, a nebo došlo k zhroucení. Zkontrolujte záznamy protokolů a restartuje aplikaci
websocket-error-close = Ukončit SlimeVR
websocket-error-logs = Otevření složku s záznamy protokolů
## Update notification
@@ -26,6 +31,9 @@ tips-tap_setup = Pro výběr trackeru na něj můžete dvakrát pomalu poklepat,
tips-turn_on_tracker = Máte oficiální SlimeVR trackery? <b><em>Po připojení k PC je nezapomeňte zapnout!</em></b>
tips-failed_webgl = Načtení WebGL selhalo.
## Units
## Body parts
body_part-NONE = Nepřiřazeno
@@ -49,6 +57,33 @@ body_part-LEFT_HAND = Levá ruka
body_part-LEFT_UPPER_LEG = Levé stehno
body_part-LEFT_LOWER_LEG = Levý kotník
body_part-LEFT_FOOT = Levá noha
body_part-LEFT_THUMB_DISTAL = Vzdálená falanga levého palce
body_part-LEFT_INDEX_DISTAL = Vzálená kůstka levého ukazováku
body_part-LEFT_MIDDLE_DISTAL = Vzálená kůstka levého prostředníku
body_part-LEFT_RING_DISTAL = Vzálená kůstka levého prsteníku
body_part-RIGHT_THUMB_DISTAL = Vzálená falanga pravého pacle
## BoardType
board_type-UNKNOWN = Neznámý
board_type-NODEMCU = NodeMCU
board_type-CUSTOM = Vlastní deska
board_type-WROOM32 = WROOM32
board_type-WEMOSD1MINI = Wemos D1 Mini
board_type-TTGO_TBASE = TTGO T-Base
board_type-ESP01 = ESP-01
board_type-SLIMEVR = SlimeVR
board_type-LOLIN_C3_MINI = Lolin C3 Mini
board_type-BEETLE32C3 = Beetle ESP32-C3
board_type-ESP32C3DEVKITM1 = Espressif ESP32-C3 DevKitM-1
board_type-OWOTRACK = owoTrack
board_type-WRANGLER = Wrangler Joycony
board_type-MOCOPI = Sony Mocopi
board_type-WEMOSWROOM02 = Wemos Wroom-02 D1 Mini
board_type-XIAO_ESP32C3 = Seeed Studio XIAO ESP32C3
board_type-HARITORA = Haritora
board_type-ESP32C6DEVKITC1 = Espressif ESP32-C6 DevKitC-1
board_type-GLOVE_IMU_SLIMEVR_DEV = SlimeVR vývojářská IMU rukavice
## Proportions
@@ -67,6 +102,9 @@ skeleton_bone-leg_group = Délka nohy
skeleton_bone-UPPER_LEG = Délka horní části nohy
skeleton_bone-LOWER_LEG = Délka dolní části nohy
skeleton_bone-FOOT_LENGTH = Délka chodidla
skeleton_bone-FOOT_LENGTH-desc =
Toto je vzdálenost mezi vaši kotníky a prsty na nohou.
Pro upravení, Chodtě po špičkách dokud vaše virtuální nohy nezůstanou na místě.
skeleton_bone-FOOT_SHIFT = Odsazení chodidla
skeleton_bone-SKELETON_OFFSET = Odsazení kostry
skeleton_bone-SHOULDERS_DISTANCE = Vzdálenost ramen
@@ -81,6 +119,14 @@ skeleton_bone-ELBOW_OFFSET = Odsazení loktů
## Tracker reset buttons
reset-reset_all = Obnovit nastavení proporcí
reset-reset_all_warning-v2 =
<b>Varování:</b> vyše proporce budou obnoveny do výchozích hodnot založených na vaší nakonfigurované výšce.
Jste si jistí že chcete udělat?
reset-reset_all_warning-reset = Obnovit proporce
reset-reset_all_warning-cancel = Zrušit
reset-reset_all_warning_default-v2 =
<b>Varování:</b> Vaše výška ještě nebyla nakonfigurována, vaše proporce se obnoví do výchozích hodnot založených na výchozí výšce.
Jste si jistí že to chcete udělat?
reset-full = Plný Reset
reset-mounting = Znovu nastavit nasazení
reset-yaw = Rychlý reset
@@ -112,7 +158,7 @@ bvh-recording = Nahrávání...
## Tracking pause
tracking-unpaused = Pozastavit sledování
tracking-paused = Pokračovat se sledováním
tracking-paused = Pokračovat v sledování
## Widget: Overlay settings
@@ -124,7 +170,7 @@ widget-overlay-is_mirrored_label = Zobrazit překrytí jako zrcadlo
widget-drift_compensation-clear = Vymazat kompenzaci driftu
## Widget: Clear Reset Mounting
## Widget: Clear Mounting calibration
widget-clear_mounting = Vymazat reset nasazení
@@ -142,9 +188,13 @@ widget-developer_mode-more_info = Více informací
## Widget: IMU Visualizer
widget-imu_visualizer = Rotace
widget-imu_visualizer-preview = Náhled
widget-imu_visualizer-hide = Skrýt
widget-imu_visualizer-rotation_raw = Nezpracované
widget-imu_visualizer-rotation_preview = Náhled
widget-imu_visualizer-rotation_hide = Skrýt
widget-imu_visualizer-acceleration = Akcelerace
widget-imu_visualizer-position = Pozice
widget-imu_visualizer-stay_aligned = Zůstaň Srovaný (Stay Aligned)
## Widget: Skeleton Visualizer
@@ -172,6 +222,7 @@ tracker-table-column-temperature = Teplota °C
tracker-table-column-linear-acceleration = Akcel. X/Y/Z
tracker-table-column-rotation = Rotace X/Y/Z
tracker-table-column-position = Pozice X/Y/Z
tracker-table-column-stay_aligned = Zůstaň Srovaný (Stay Aligned)
tracker-table-column-url = URL
## Tracker rotation
@@ -196,9 +247,17 @@ tracker-infos-url = URL Trackeru
tracker-infos-version = Verze firmwaru
tracker-infos-hardware_rev = Revize hardwaru
tracker-infos-hardware_identifier = ID hardwaru
tracker-infos-data_support = Datový typ
tracker-infos-imu = Senzor IMU
tracker-infos-board_type = Základní deska
tracker-infos-network_version = Verze protokolu
tracker-infos-magnetometer = Magnetometr
tracker-infos-magnetometer-status-v1 =
{ $status ->
[DISABLED] Zakázáno
[ENABLED] Povoleno
*[NOT_SUPPORTED] Není podporováno
}
## Tracker settings
@@ -213,13 +272,26 @@ tracker-settings-mounting_section-edit = Upravit nasazení
tracker-settings-drift_compensation_section = Povolit kompenzaci driftu
tracker-settings-drift_compensation_section-description = Měl by tento tracker kompenzovat svůj drift, když je zapnuta kompenzace driftu?
tracker-settings-drift_compensation_section-edit = Povolit kompenzaci driftu
tracker-settings-use_mag = Povolit magnetometr na tomto trackeru
# Multiline!
tracker-settings-use_mag-description =
Měl by tento tracker používat magnetometer k redukci driftu když je použití magnetometru povoleno? <b> Prosím nevypínejte váš tracker při přepínání tohoto nastavení!</b>
Nejprve musíte povolit používání magnetometru, <magSetting>Kliknutím zde přejdete k nastavená magnetometru</magSetting>.
tracker-settings-use_mag-label = Povolit magnetometr
# The .<name> means it's an attribute and it's related to the top key.
# In this case that is the settings for the assignment section.
tracker-settings-name_section = Název trackeru
tracker-settings-name_section-description = Třeba nějakou roztomilou přezdívku :)
tracker-settings-name_section-placeholder = Erimelova levá tlapka
tracker-settings-name_section-label = Název trackeru
tracker-settings-forget = Zapomenout tracker
tracker-settings-forget-description = Odebere tracker z SlimeVR Serveru a zabrání jeho opětovnému připojení do té doby, dokud nebude server restarován. Konfigurace trackeru nebude ztracena.
tracker-settings-forget-label = Zapomenout tracker
tracker-settings-update-low-battery = Nelze provést aktualizaci. Baterie má méně než 50%
tracker-settings-update-up_to_date = Aktuální
tracker-settings-update = Aktualizovat nyní
tracker-settings-update-title = Verze Firmwareu
## Tracker part card info
@@ -286,6 +358,7 @@ mounting_selection_menu-close = Zavřít
settings-sidebar-title = Nastavení
settings-sidebar-general = Obecné
settings-sidebar-tracker_mechanics = Mechanika trackerů
settings-sidebar-stay_aligned = Zůstaň Srovaný (Stay Aligned)
settings-sidebar-fk_settings = Nastavení trackování
settings-sidebar-gesture_control = Ovládání gesty
settings-sidebar-interface = Rozhraní
@@ -295,6 +368,10 @@ settings-sidebar-utils = Nástroje
settings-sidebar-serial = Sériová konzole
settings-sidebar-appearance = Vzhled
settings-sidebar-notifications = Notifikace
settings-sidebar-behavior = Chování
settings-sidebar-firmware-tool = Nástroj pro DIY firmware
settings-sidebar-vrc_warnings = Varovaní VRChat konfigurace
settings-sidebar-advanced = Pokročilé
## SteamVR settings
@@ -309,8 +386,20 @@ settings-general-steamvr-description =
Užitečné pro hry nebo aplikace, které podporují pouze určité trackery.
settings-general-steamvr-trackers-waist = Pás
settings-general-steamvr-trackers-chest = Hrudník
settings-general-steamvr-trackers-left_foot = Levá noha
settings-general-steamvr-trackers-right_foot = Pravá noha
settings-general-steamvr-trackers-left_knee = Levé koleno
settings-general-steamvr-trackers-right_knee = Pravé koleno
settings-general-steamvr-trackers-left_elbow = Levý loket
settings-general-steamvr-trackers-right_elbow = Pravý loket
settings-general-steamvr-trackers-left_hand = Levá ruka
settings-general-steamvr-trackers-right_hand = Pravá ruka
settings-general-steamvr-trackers-tracker_toggling = Automatické přiřazení trackeru
settings-general-steamvr-trackers-tracker_toggling-description = Automaticky zapne trackery ve SteamVR v závislosti na aktuálním přiřazením trackerů.
settings-general-steamvr-trackers-tracker_toggling-label = Automatické přiřazení trackeru
settings-general-steamvr-trackers-hands-warning =
<b>Varování:</b> trackery rukou přepíší vaše ovladače.
Jste si jistí?
settings-general-steamvr-trackers-hands-warning-cancel = Zrušit
settings-general-steamvr-trackers-hands-warning-done = Ano
@@ -330,15 +419,52 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = Vyhlaz
settings-general-tracker_mechanics-filtering-type-prediction = Predikce
settings-general-tracker_mechanics-filtering-type-prediction-description = Zkracuje prodlevu a zrychluje pohyby, ale může způsobit třesení trackerů.
settings-general-tracker_mechanics-filtering-amount = Množství
settings-general-tracker_mechanics-yaw-reset-smooth-time = Čas vyhlazení resetu svislé osy (0s pro vypnutí vyhlazení)
settings-general-tracker_mechanics-drift_compensation = Kompenzace driftu
# This cares about multilines
settings-general-tracker_mechanics-drift_compensation-description =
Kompenzuje vychýlení IMU použitím inverzní rotace.
Změňte velikost kompenzace a počet resetů, které jsou brány v úvahu.
settings-general-tracker_mechanics-drift_compensation-enabled-label = Kompenzace driftu
settings-general-tracker_mechanics-drift_compensation-prediction = Predikce kompenzace driftu
# This cares about multilines
settings-general-tracker_mechanics-drift_compensation-prediction-description =
Předpovídá kompenzaci driftu svislé osy přes předešle změřený rozsah.
Povolte toto pokud se vaše trackery neustále otáčejí na vertikální ose.
settings-general-tracker_mechanics-drift_compensation-prediction-label = Predikce kompenzace driftu
settings-general-tracker_mechanics-drift_compensation_warning =
<b>Varování:</b> Kompenzaci driftu používejte pouze tehdy kdy musíte resetovat
Neobvykle často (každých ~5-10 minut).
Některé IMU které náchylné k častým resetům zahrnují:
Joy-Cons, owoTrack a MPU (bez aktuálního firmwaru).
settings-general-tracker_mechanics-drift_compensation_warning-cancel = Zrušit
settings-general-tracker_mechanics-drift_compensation_warning-done = Rozumím
settings-general-tracker_mechanics-drift_compensation-amount-label = Množství kompenzace
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Použít až x posledních obnovení
settings-general-tracker_mechanics-save_mounting_reset = Uložit automatickou kalibraci obnovení připevnění
settings-general-tracker_mechanics-save_mounting_reset-description =
Uloží automatické kalibrování resetování umístění pro trackery mezi restarty. Užitečné
pokud máte oblek, na kterém se umístění trackeru nemění mezi relacemi. <b>Nedoporučováno pro uživatele s běžnou sestavou</b>
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Uložit "Kalibraci nasazení"
settings-general-tracker_mechanics-use_mag_on_all_trackers = Použít magnetometr na všech IMU trackerech, které jej podporují
settings-general-tracker_mechanics-use_mag_on_all_trackers-description =
Použití magnetometr na všech trackerech které pro to mají kompatibilní firmware, snížení drifutu v stailních magnetických prostředích.
Může být vypnuto pro jednotivé trackery v jejich nastaveních. <b> Prosíme nevypínejte žádný z trackerů při přepínání tohoto nastavení! </b>
settings-general-tracker_mechanics-use_mag_on_all_trackers-label = Použít magnetometru na trackerech
settings-stay_aligned = Zůstaň Srovaný (Stay Aligned)
settings-stay_aligned-description = Zůstaň Srovaný redukuje drift pomocí postupného upravování vašich trackerů do vaší relaxůjící pózy.
settings-stay_aligned-setup-label = Nastavte Zůstaň Sronaný
settings-stay_aligned-setup-description = Musíte dokončit "Nastvení Zůstaň Srovaný" pro zapnutí Zůstaň Srovnaný.
settings-stay_aligned-warnings-drift_compensation = ⚠ Prosím vypněte Kompenzaci Driftu! Kompenzace driftu bude narušovat funkčnost Zůstaň Srovnaný.
settings-stay_aligned-enabled-label = Upravit trackery
settings-stay_aligned-general-label = Obecné
settings-stay_aligned-relaxed_poses-label = Relaxovací Póza
settings-stay_aligned-relaxed_poses-standing = Upravit trackery při stoje
settings-stay_aligned-relaxed_poses-reset_pose = Obnovit pózu
settings-stay_aligned-relaxed_poses-close = Zavřít
settings-stay_aligned-debug-label = Ladění
settings-stay_aligned-debug-copy-label = Zkopírovat nastavení do schránky
## FK/Tracking settings
@@ -360,11 +486,16 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = Připnutí k pod
settings-general-fk_settings-leg_tweak-toe_snap-description = Přichycení špiček se pokouší odhadnout rotaci vašich chodidel v případě, že nepoužíváte trackery chodidel.
settings-general-fk_settings-leg_tweak-foot_plant-description = Narovnání chodidla při dotyku narovnává chodidla tak, aby byla rovnoběžně se zemí.
settings-general-fk_settings-leg_fk = Sledování nohou
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Aktivovat reset nasazení nohou stoupnutím na špičky.
settings-general-fk_settings-leg_fk-reset_mounting_feet = Reset nasazení nohou
settings-general-fk_settings-enforce_joint_constraints = Limity kostry
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = Prosazování omezení
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints-description = Zabránit rotaci kloubům za jejich limit
settings-general-fk_settings-enforce_joint_constraints-correct_constraints = Opravit pomocí omezení
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = Opravit rotaci kloubů, když překročí svůj limit
settings-general-fk_settings-arm_fk = Trackování ramen
settings-general-fk_settings-arm_fk-description = Vynutit sledování rukou z VR headsetu, i když jsou k dispozici údaje o poloze rukou z trackerů.
settings-general-fk_settings-arm_fk-force_arms = Vynutit ruce z VR Headsetu
settings-general-fk_settings-reset_settings = Obnovit nastavení
settings-general-fk_settings-reset_settings-reset_hmd_pitch = Obnovit HMD pitch
settings-general-fk_settings-arm_fk-reset_mode-description = Nastavte pózu rukou použitá pro reset nasazení.
settings-general-fk_settings-arm_fk-back = Paže dozadu
settings-general-fk_settings-arm_fk-back-description = Výchozí režim: paže směřují dozadu, předloktí dopředu.
@@ -374,11 +505,15 @@ settings-general-fk_settings-arm_fk-tpose_down = T-póza (ruce dolů)
settings-general-fk_settings-arm_fk-tpose_down-description = Před zahájením plného resetu, očekává že zaujmete uvolněný postoj a pomalu zvednete paže do pozice Téčka (90 stupňů jako písmeno T). A pro reset umístění, že stojíte vzpřímeně a máte paže volně spuštěné podél těla.
settings-general-fk_settings-arm_fk-forward = Vpřed
settings-general-fk_settings-arm_fk-forward-description = Ideální pozice pro Vtubing: zvedněte paže do 90 stupňového úhlu. (90 stupňů jako písmeno T).
settings-general-fk_settings-skeleton_settings-toggles = Přepínače kostry
settings-general-fk_settings-skeleton_settings-description = Zapnutí nebo vypnutí nastavení kostry. Je doporučeno je ponechat zapnuté.
settings-general-fk_settings-skeleton_settings-extended_spine_model = Prodloužení modelu páteře
settings-general-fk_settings-skeleton_settings-extended_pelvis_model = Model s prodloužením pánve
settings-general-fk_settings-skeleton_settings-extended_knees_model = Model s prodloužením kolene
settings-general-fk_settings-skeleton_settings-ratios = Poměry kostry
settings-general-fk_settings-skeleton_settings-ratios-description = Změňte hodnoty nastavení kostry, Po změně budete možná muset poupravit vaše proporce.
settings-general-fk_settings-self_localization-title = Režim Mocap
settings-general-fk_settings-self_localization-description = Režim Mocap je experimentální funkce, která dokáže přibližně určit polohu vašeho těla bez VR Headsetu a dalších trackerů. Pro správnou funkci je však nutné mít trackery pro nohy a hlavu.
settings-general-fk_settings-vive_emulation-title = Vive emulace
settings-general-fk_settings-vive_emulation-description = Napodobit problémy Vive trackerů. Tohle je jenom pro vtip a zhoršuje trackování.
settings-general-fk_settings-vive_emulation-label = Povolení emulace Vive
## Gesture control settings (tracker tapping)
@@ -402,9 +537,17 @@ settings-general-gesture_control-trackers =
[many] { $amount } trackerů
*[other] { $amount } trackerů
}
settings-general-gesture_control-yawResetEnabled = Povolit klepnutí pro reset odklonu
settings-general-gesture_control-yawResetDelay = Zpoždění resetu vybočení
settings-general-gesture_control-yawResetTaps = Klepnutí pro resetování rotace
settings-general-gesture_control-fullResetEnabled = Povolit klepnutí pro úplné restartování
settings-general-gesture_control-fullResetDelay = Zpoždění úplného obnovení
settings-general-gesture_control-fullResetTaps = Klepnutí pro úplný reset
settings-general-gesture_control-mountingResetEnabled = Povolit klepnutí pro resetování montáže
settings-general-gesture_control-mountingResetDelay = Zpoždění resetování montáže
settings-general-gesture_control-mountingResetTaps = Klepnutí pro resetování montáže
# The number of trackers that can have higher acceleration before a tap is rejected
settings-general-gesture_control-numberTrackersOverThreshold = Trackery překročily práh
settings-general-gesture_control-numberTrackersOverThreshold-description = Zvyšte tuto hodnotu, pokud detekce klepnutí nefunguje. Nepřekračujte ji nad hodnotu, která je potřebná k tomu, aby detekce klepnutí fungovala, protože by to mohlo způsobit více falešně pozitivních klepnutí.
## Appearance settings
@@ -414,16 +557,23 @@ settings-general-interface-dev_mode = Vývojářský režim
settings-general-interface-dev_mode-description = Tento režim může být užitečný, pokud potřebujete podrobné údaje nebo omunikovat s trackerama na pokročilejší úrovni.
settings-general-interface-dev_mode-label = Vývojářský režim
settings-general-interface-theme = Barva tématu
settings-general-interface-show-navbar-onboarding = Zobrazit "{ navbar-onboarding }" na navigačním panelu
settings-general-interface-show-navbar-onboarding-description = Tohle mění jestli bude tlačítko pro "{ navbar-onboarding }" zobrazeno na navigačním panelu
settings-general-interface-show-navbar-onboarding-label = Zobrazit "{ navbar-onboarding }"
settings-general-interface-lang = Zvolte jazyk
settings-general-interface-lang-description = Změňte výchozí jazyk, který chcete používat.
settings-general-interface-lang-placeholder = Zvolte jazyk, který chcete používat.
# Keep the font name untranslated
settings-interface-appearance-font = Font rozhraní
settings-interface-appearance-font-description = Tohle mění font který používá rozhraní
settings-interface-appearance-font-placeholder = Toto změní písmo používané v rozhraní.
settings-interface-appearance-font-os_font = Systémový font
settings-interface-appearance-font-slime_font = Výchozí font
settings-interface-appearance-font_size = Výchozí velikost písma
settings-interface-appearance-font_size-description = Toto ovlivňuje velikost písma celého rozhraní, s výjimkou panelu nastavení.
settings-interface-appearance-decorations = Použít nativní dekorace systému
settings-interface-appearance-decorations-description = Tímto se nebude vykreslovat horní lišta rozhraní, a místo toho se použije vlastní barva lišty zvolená v operačním systému.
settings-interface-appearance-decorations-label = Použít nativní dekorace
## Notification settings
@@ -438,9 +588,32 @@ settings-general-interface-feedback_sound-volume = Hlasitost zvuku zpětné vazb
settings-general-interface-connected_trackers_warning = Upozornění o připojených trackerů
settings-general-interface-connected_trackers_warning-description = Tato možnost zobrazí vyskakovací okno pokaždé, když se pokusíte opustit SlimeVR, když máte připojen jeden nebo více trackerů. Připomene vám, abyste vypnuli své trackery, až budete hotovi, abyste prodloužili životnost baterie.
settings-general-interface-connected_trackers_warning-label = Upozornění o připojených trackerech při ukončení
## Behavior settings
settings-interface-behavior = Chování
settings-general-interface-use_tray = Minimalizovat do oznamovací oblasti
settings-general-interface-use_tray-description = Umožňuje vám zavřít okno, aniž byste zavřeli SlimeVR Server, takže ho můžete nadále používat bez rozhraní.
settings-general-interface-use_tray-label = Minimalizovat do oznamovací oblasti
settings-general-interface-discord_presence = Sdílet aktivitu na Discordu
settings-general-interface-discord_presence-description = Sdělí Discord klientu, že používáte SlimeVR společně s počtem trackerů IMU, které používáte.
settings-general-interface-discord_presence-label = Sdílet aktivitu na Discordu
settings-general-interface-discord_presence-message =
{ $amount ->
[0] Sliming around
[one] Používá 1 tracker
[few] Používá { $amount } trackery
[many] Používá { $amount } trackerů
*[other] Používá { $amount } trackerů
}
settings-interface-behavior-error_tracking = Sběr chyb prostřednictvím Sentry.io
settings-interface-behavior-error_tracking-description_v2 =
<h1>Souhlasíte se shromažďováním anonymizovaých údajů o chybých?</h1>
<b>Neschrožďujeme osobní udaje!</b> pro příklad IP adresy nebo přihlašovací údaje k sítím Wi-Fi. SlimeVR respektuje vaše soukromí!
Aby jsme mohli poskytnout nejlepší zážitek uživatelům, schromažďujeme proto anonymizované zprávy o chybých, metriky výkon a informace o operačním systém. To nám pomáhá zjištovat chyby a problémy s SlimeVR. Tyto matriky jsou schromažďovány prostřednictvím Sentry.io.
settings-interface-behavior-error_tracking-label = Odeslat chyby vývojářům
## Serial settings
@@ -459,10 +632,11 @@ settings-serial-factory_reset-warning =
To znamená, že nastavení Wi-Fi a kalibrace <b>budou ztracena!</b>
settings-serial-factory_reset-warning-ok = Vím, co dělám
settings-serial-factory_reset-warning-cancel = Zrušit
settings-serial-get_infos = Získat informace
settings-serial-serial_select = Vyberte sériový port
settings-serial-auto_dropdown_item = Auto
settings-serial-get_wifi_scan = Skenovat WiFi
settings-serial-file_type = Prostý text
settings-serial-save_logs = Uložit jako soubor
## OSC router settings
@@ -492,10 +666,18 @@ settings-osc-router-network-address-placeholder = Adresa IPV4
## OSC VRChat settings
settings-osc-vrchat = Trackery VRChat OSC
# This cares about multilines
settings-osc-vrchat-description-v1 =
Pro změnu nastavení specifických pro standart OSC pro odesílání
sledovacích dat aplikacím bez SteamVR (např. Quest standalone).
Ujistěte se že jste povolili OSC ve VRChat přes nabídku v menu Akcí pod OSC > Povoleno.
settings-osc-vrchat-enable = Zapnout
settings-osc-vrchat-enable-description = Vypnutí a zapnutí odesílání a přijímání dat.
settings-osc-vrchat-enable-label = Zapnout
settings-osc-vrchat-oscqueryEnabled = Povolit OSCQuery
settings-osc-vrchat-oscqueryEnabled-label = Povolit OSCQuery
settings-osc-vrchat-network = Síťové porty
settings-osc-vrchat-network-description-v1 = Nastavte port pro komunikaci. Může zůstat tak jak je pro VRChat.
settings-osc-vrchat-network-port_in =
.label = Vstup portu
.placeholder = Vstup portu (výchozí: 9001)
@@ -503,6 +685,7 @@ settings-osc-vrchat-network-port_out =
.label = Výstup portu
.placeholder = Výstup portu (výchozí: 9000)
settings-osc-vrchat-network-address = Síťová adresa
settings-osc-vrchat-network-address-description-v1 = Zvolte na jakou adresu zasílat data, Může zůstat nezměneno pro Vrchat.
settings-osc-vrchat-network-address-placeholder = VRChat ip adresa
settings-osc-vrchat-network-trackers = Trackery
settings-osc-vrchat-network-trackers-description = Vypnuti a zapnutí odesílání konkrétních trackerů přes OSC.
@@ -515,6 +698,10 @@ settings-osc-vrchat-network-trackers-elbows = Lokty
## VMC OSC settings
settings-osc-vmc = Virtuální snímání pohybu (Také známo jako Virtual Motion Capture)
# This cares about multilines
settings-osc-vmc-description =
Změna nastavení specificky pro VCM (Virtual Motion Capture) protokol
odesílat data o kostech SlimeVR a přijímat data o kostech z jiných aplikací.
settings-osc-vmc-enable = Zapnout
settings-osc-vmc-enable-description = Vypnutí a zapnutí odesílání a přijímání dat.
settings-osc-vmc-enable-label = Zapnout
@@ -531,16 +718,56 @@ settings-osc-vmc-network-address-description = Vyberte, na kterou adresu odesíl
settings-osc-vmc-network-address-placeholder = Adresa IPV4
settings-osc-vmc-vrm = VRM Model
settings-osc-vmc-vrm-description = Načtěte VRM model, k umožnení lepšímu sledování hlavy a zlepšení kompatibility s dalšími aplikacemi.
settings-osc-vmc-vrm-model_unloaded = Není načten žádný model
settings-osc-vmc-vrm-model_loaded =
{ $titled ->
[true] Model načten: { $name }
*[false] Načten neznámý model
}
settings-osc-vmc-vrm-untitled_model = Nepojmenovaný model
settings-osc-vmc-vrm-file_select = Přetáhněte zde model, který chcete použít, nebo <u>procházejte</u>
settings-osc-vmc-anchor_hip = Zakotvit v bocích
settings-osc-vmc-anchor_hip-description = Zakotvit sledování u boků, užitečné pro VTubing kde sedíte. Pokud je deaktivováno, načíst VRM model.
settings-osc-vmc-anchor_hip-label = Zakotvit v bocích
settings-osc-vmc-mirror_tracking = Zrcadlení sledování
settings-osc-vmc-mirror_tracking-description = Zrcadlit trakování horizontálně.
settings-osc-vmc-mirror_tracking-label = Zrcadlení trackování
## Common OSC settings
## Advanced settings
settings-utils-advanced = Pokročilé
settings-utils-advanced-reset-gui = Obnovení GUI nastavení
settings-utils-advanced-reset-gui-description = Obnovení výchozího nastavení pro rozhraní.
settings-utils-advanced-reset-gui-label = Obnovit GUI
settings-utils-advanced-reset-server = Obnovení nastavení sledování
settings-utils-advanced-reset-server-description = Obnovit výchozí nastavení pro sledovaní.
settings-utils-advanced-reset-server-label = Obnovení sledování
settings-utils-advanced-reset-all = Obnovit všechna nastavení
settings-utils-advanced-reset-all-description = Obnoví výchozí nastavení pro rozhraní a sledování.
settings-utils-advanced-reset-all-label = Obnovit vše
settings-utils-advanced-reset_warning =
{ $type ->
[gui]
<b>Varování:</b> Tímhle se všechna vaše nastavení GUI obnoví na výchozí hodnoty.
Jste si jisti že to chcete udělat?
[server]
<b>Varování:</b> Tímhle se všechna vaše nastavení Sledování obnoví na výchozí hodnoty.
Jste si jisti že to chcete udělat?
*[all]
<b>Varování:</b> Tímhle se všechna vaše nastavení obnoví na výchozí hodnoty.
Jste si jisti že to chcete udělat?
}
settings-utils-advanced-reset_warning-reset = Obnovit nastavení
settings-utils-advanced-reset_warning-cancel = Zrušit
settings-utils-advanced-open_data-v1 = Složka s konfigurací
settings-utils-advanced-open_data-description-v1 = Otevřít složku s konfiguračními soubory pro SlimeVR v průzkumníku souborů?
settings-utils-advanced-open_data-label = Otevřít složku
settings-utils-advanced-open_logs = Složka s záznamy protokolů
settings-utils-advanced-open_logs-description = Otevřít složku s konfiguračními soubory pro SlimeVR v průzkumníku souborů?
settings-utils-advanced-open_logs-label = Otevřít složku
## Home Screen
## Tracking Checlist
## Setup/onboarding menu
@@ -557,16 +784,12 @@ onboarding-setup_warning-cancel = Pokračovat v nastavení
## Wi-Fi setup
onboarding-wifi_creds-back = Zpět na úvod
onboarding-wifi_creds = Zadání přihlašovacích údajů k Wi-Fi
# This cares about multilines
onboarding-wifi_creds-description =
Sledovací zařízení budou tato přihlašovací údaje používat k připojení.
Použijte prosím přihlašovací údaje, ke kterým jste aktuálně připojeni.
onboarding-wifi_creds-skip = Přeskočit nastavení Wi-Fi
onboarding-wifi_creds-submit = Odeslat!
onboarding-wifi_creds-ssid =
.label = Název Wi-Fi
.placeholder = Zadejte název Wi-Fi
onboarding-wifi_creds-ssid-required = Je vyžadován název sítě Wi-Fi
onboarding-wifi_creds-password =
.label = Heslo
.placeholder = Zadejte heslo
@@ -594,13 +817,6 @@ onboarding-reset_tutorial-1 =
onboarding-home = Vítejte k SlimeVR
onboarding-home-start = Pusťme se do toho!
## Enter VR part of setup
onboarding-enter_vr-back = Zpět na přiřazení trackerů
onboarding-enter_vr-title = Čas vstoupit do VR!
onboarding-enter_vr-description = Nasaďte si všechny trackery a pak vstupte do VR!
onboarding-enter_vr-ready = Jsem připraven
## Setup done
onboarding-done-title = Vše je připraveno!
@@ -611,16 +827,24 @@ onboarding-done-close = Zavřít průvodce
onboarding-connect_tracker-back = Zpět na přihlašovací údaje Wi-Fi
onboarding-connect_tracker-title = Připojení trackerů
onboarding-connect_tracker-description-p0-v1 = A nyní k té zábavné části, Připojte trackery
onboarding-connect_tracker-description-p1-v1 = Připojte po jednom postupně všechny tracker přes USB port.
onboarding-connect_tracker-issue-serial = Mám potíže s připojením!
onboarding-connect_tracker-usb = USB Tracker
onboarding-connect_tracker-connection_status-none = Hledám trackery
onboarding-connect_tracker-connection_status-serial_init = Připojuji se k sériovému zařízení
onboarding-connect_tracker-connection_status-obtaining_mac_address = Získávání MAC adresy trackeru
onboarding-connect_tracker-connection_status-provisioning = Odesílám přihlašovací údaje WiFi
onboarding-connect_tracker-connection_status-connecting = Pokouším se připojit k WiFi
onboarding-connect_tracker-connection_status-looking_for_server = Hledám server
onboarding-connect_tracker-connection_status-connection_error = Nelze se připojit k síti Wi-Fi
onboarding-connect_tracker-connection_status-could_not_find_server = Nelze najít server
onboarding-connect_tracker-connection_status-done = Připojeno k serveru
onboarding-connect_tracker-connection_status-no_serial_log = Nepodařilo se získat protokoly z trackeru
onboarding-connect_tracker-connection_status-no_serial_device_found = Nepodařilo se nalézt tracker přes USB
onboarding-connect_serial-error-modal-no_serial_log = Je tracker zapnutý?
onboarding-connect_serial-error-modal-no_serial_log-desc = Ujistěte se, že je tracker zapnutý a připojený k vašemu počátači
onboarding-connect_serial-error-modal-no_serial_device_found = Nebyly nalezeny žádné trackery
# $amount (Number) - Amount of trackers connected (this is a number, but you can use CLDR plural rules for your language)
# More info on https://www.unicode.org/cldr/cldr-aux/charts/22/supplemental/language_plural_rules.html
# English in this case only has 2 plural rules, which are "one" and "other",
@@ -639,12 +863,12 @@ onboarding-connect_tracker-next = Připojil jsem všechny své trackery
onboarding-calibration_tutorial = Kalibrační návod pro IMU
onboarding-calibration_tutorial-subtitle = Tohle pomůže snížit drift trackerů!
onboarding-calibration_tutorial-description = Po každém zapnutí trackerů je potřeba je na chvíli položit na rovný povrch, aby se zkalibrovaly. Stejný postup provedeme teď kliknutím na tlačítko "{ onboarding-calibration_tutorial-calibrate }". <b>Během kalibrace jimi prosím nehýbejte!</b>
onboarding-calibration_tutorial-calibrate = Položil jsem trackery na stůl
onboarding-calibration_tutorial-status-waiting = Čekám na tebe
onboarding-calibration_tutorial-status-calibrating = Kalibruji
onboarding-calibration_tutorial-status-success = Super!
onboarding-calibration_tutorial-status-error = Trackerem bylo pohnuto.
onboarding-calibration_tutorial-skip = Přeskočit návod
## Tracker assignment tutorial
@@ -673,6 +897,22 @@ onboarding-assign_trackers-assigned =
onboarding-assign_trackers-advanced = Zobrazit pokročilá místa na přiřazení trackerů
onboarding-assign_trackers-next = Přiřadil jsem všechny trackery
onboarding-assign_trackers-mirror_view = Zrcadlit náhled
onboarding-assign_trackers-option-label =
{ $mode ->
[lower-body] Spodní část těla
[core] Základ
[enhanced-core] Vylepšený základ
[full-body] Celé tělo
*[all] Všechny trackery
}
onboarding-assign_trackers-option-description =
{ $mode ->
[lower-body] Minimum pro sledování celého těla ve VR
[core] + Vylepšené sledování páteře
[enhanced-core] + Rotace chodidel
[full-body] + Sledování loktů
*[all] Přrazení všech dostupný trackerů
}
## Tracker assignment warnings
@@ -696,8 +936,12 @@ onboarding-choose_mounting = Jakou metodu nasazení trackerů použít?
# Multiline text
onboarding-choose_mounting-description = Správná orientace nasazení zajistí přesné sledování trackerů na těle.
onboarding-choose_mounting-auto_mounting = Automatická detekce nasazení
# Italicized text
onboarding-choose_mounting-auto_mounting-label-v2 = Doporučeno
onboarding-choose_mounting-auto_mounting-description = Orientace nasazení všech trackerů bude automaticky rozpoznána ze 2 pozic.
onboarding-choose_mounting-manual_mounting = Manuální nastavení
# Italicized text
onboarding-choose_mounting-manual_mounting-label-v2 = Nemusí být dostatečně přesné
onboarding-choose_mounting-manual_mounting-description = Ručně zadejte orientaci nasazení každého trackeru.
# Multiline text
onboarding-choose_mounting-manual_modal-title =
@@ -730,44 +974,24 @@ onboarding-automatic_mounting-mounting_reset-title = Reset nasazení trackerů
onboarding-automatic_mounting-mounting_reset-step-0 = 1. Dřepněte si, jako při lyžování: nohy pokrčte v kolenou, trup nakloňte mírně dopředu a paže pokrčte.
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Stiskněte tlačítko "Resetovat nasazení trackerů" a vyčkejte 3 sekundy. Orientace nasazení trackerů se nastaví na základní hodnoty.
onboarding-automatic_mounting-preparation-title = Příprava
onboarding-automatic_mounting-preparation-step-0 = 1. Postavte se vzpřímeně s rukama na bocích.
onboarding-automatic_mounting-preparation-step-1 = 2. Stiskněte tlačítko "Reset" a počkejte 3 sekundy, než se trackery resetují.
onboarding-automatic_mounting-preparation-v2-step-0 = 1. Stiskněte tlačítko pro "Plný Reset"
onboarding-automatic_mounting-put_trackers_on-title = Nasaďte si trackery
onboarding-automatic_mounting-put_trackers_on-description = Pro kalibraci směru nasazení použijeme právě přiřazené trackery. Nasaďte si prosím všechny trackery. Můžete zkontrolovat jejich umístění na obrázku vpravo.
onboarding-automatic_mounting-put_trackers_on-next = Mám nasazené všechny trackery
## Tracker proportions method choose
## Tracker manual proportions setupa
onboarding-choose_proportions = Jakou metodu kalibrace chcete použít?
# Multiline string
onboarding-choose_proportions-description-v1 =
Proporce těla potřebujeme, abychom dobře změřili tvoje pohyby. Trackerům totiž pomáhají zjistit, kde přesně se na těle nachází.
Když jsou proporce nastaveny špatně, sledování nebude fungovat dobře. Může to způsobit efekt kde tvůj avatar divně klouže, nebo že se divně hýbe.
<b>Proporce stačí změřit jednou a máš to vyřešené!</b> Pokud nezměníš výrazně postavu nebo to napoprvé nedopadne dobře, nemusíš už nic měřit.
onboarding-choose_proportions-auto_proportions = Automatická detekce proporcí
# Italized text
onboarding-choose_proportions-auto_proportions-subtitle = Doporučeno
onboarding-choose_proportions-auto_proportions-descriptionv3 =
Toto odhadne vaše proporce z krátkého záznamu vašich pohybů pomocí speciálního algoritmu.
<b>K tomu JE NUTNÉ mít VR headset připojený k SlimeVR a nasazený na hlavě!</b>
onboarding-choose_proportions-manual_proportions = Manuální nastavení proporcí
# Italized text
onboarding-choose_proportions-manual_proportions-subtitle = Pro drobné úpravy
onboarding-choose_proportions-manual_proportions-description = Nastavte si vaše proporce ručně dle vašich potřeb.
onboarding-choose_proportions-export = Exportovat proporce
onboarding-choose_proportions-import = Importovat proporce
onboarding-choose_proportions-import-success = Importováno!
onboarding-choose_proportions-import-failed = Import byl neúspěšný
onboarding-choose_proportions-file_type = Soubor tělesných proporcí
## Tracker manual proportions setup
onboarding-manual_proportions-back = Zpět na tutoriál
onboarding-manual_proportions-title = Manuální proporce těla
onboarding-manual_proportions-precision = Přesná úprava
onboarding-manual_proportions-auto = Automatická kalibrace proporcí
onboarding-manual_proportions-ratio = Upravit podle poměrů končetin
onboarding-manual_proportions-fine_tuning_button = Automatické jemné doladění proporcí
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Pro použití automatického jemného lazení, prosím připojte VR headset
onboarding-manual_proportions-export = Exportovat proporce
onboarding-manual_proportions-import = Importovat proporce
onboarding-manual_proportions-file_type = Soubor tělesných proporcí
onboarding-manual_proportions-normal_increment = Normální škála
onboarding-manual_proportions-precise_increment = Přesná škála
onboarding-manual_proportions-grouped_proportions = Skupinové proporce
onboarding-manual_proportions-all_proportions = Všechny proporce
onboarding-manual_proportions-estimated_height = Odhadovaná výška uživatele
## Tracker automatic proportions setup
@@ -788,18 +1012,33 @@ onboarding-automatic_proportions-requirements-descriptionv2 =
SteamVR a SlimeVR: Headset odesílá pozici do serveru SlimeVR (obvykle je potřeba mít spuštěný SteamVR a připojený k SlimeVR pomocí ovladače SlimeVR pro SteamVR).
Přesné sledování: Sledování funguje a přesně zaznamenává vaše pohyby (například jste provedli kompletní reset a trackery se správně pohybují při kopání, předklonu, sezení apod.).
onboarding-automatic_proportions-requirements-next = Přečetl jsem si požadavky
onboarding-automatic_proportions-check_height-title = Ujistěte se, že máte správnou výšku
onboarding-automatic_proportions-check_height-description = Vaši výšku využíváme jako základ pro měření pohybů. Pro přibližné zjištění výšky používáme výšku vašeho VR headsetu, ale je přesnější, když si svoji skutečnou výšku zadáte sami!
onboarding-automatic_proportions-check_height-title-v3 = Měření výšky vašeho headsetu
onboarding-automatic_proportions-check_height-description-v2 = Váš headset HMD výška by měla být o trochu menší než vaše celá výška, protože headset měří výšku úrovně vašich očí. Toto měření bude použito pro výchozí hodnoty vaších tělesných proporcí.
# All the text is in bold!
onboarding-automatic_proportions-check_height-calculation_warning = Pro změření výšky stiskněte tlačítko <u>ve vzpřímeném postoji.</u> Máte na to 3 sekundy od stisknutí!
onboarding-automatic_proportions-check_height-fetch_height = Stojím vzpřímeně!
onboarding-automatic_proportions-check_height-calculation_warning-v3 = Započněte měření při tom když stojíte <u>vzpřímeně</u> aby jste změřili vaší výšku. Dávejte pozor aby jste nezvedly vaše ruce nad váš headset, mohlo by to ovlivnit výsledky měření!
onboarding-automatic_proportions-check_height-guardian_tip =
Pokud používáte Samostatný VR headset, ujistěte se že váš opatrovník /
Hranice zapnutá aby byla vaše výška správně!
# Context is that the height is unknown
onboarding-automatic_proportions-check_height-unknown = Neznámá
# Shows an element below it
onboarding-automatic_proportions-check_height-hmd_height1 = Výška vašeho headsetu je
# Shows an element below it
onboarding-automatic_proportions-check_height-height1 = takže vaše výška by měla být
onboarding-automatic_proportions-check_height-hmd_height2 = Výška vašeho headsetu je:
onboarding-automatic_proportions-check_height-measure-start = Zahájit měření
onboarding-automatic_proportions-check_height-measure-stop = Ukončit měření
onboarding-automatic_proportions-check_height-measure-reset = Opakovat měření
onboarding-automatic_proportions-check_height-next_step = Je to v pořádku!
onboarding-automatic_proportions-check_floor_height-title = Změřte vaší výšku podlahy (dobrovolné)
onboarding-automatic_proportions-check_floor_height-description = V některých případech, výška vaší podlahy nemusí být správně nastavena vaším headsetem, což způsobí že výška headsetu bude zaznamenána víš než by měla být. Můžete změřit "výšku" vaší podlahy aby jste opravily výšku vašeho headsetu
# All the text is in bold!
onboarding-automatic_proportions-check_floor_height-calculation_warning-v2 = Začněte s měřením a přiložte ovladač proti vaší podlaze pro změření její výšky. pokud jste si jistí že výška podlahy je správně nastavená, můžete tento krok přeskočit
# Shows an element below it
onboarding-automatic_proportions-check_floor_height-floor_height = Výška vaší podlahy je:
onboarding-automatic_proportions-check_floor_height-full_height = Vaše odhadnutá celá výška je:
onboarding-automatic_proportions-check_floor_height-measure-start = Zahájit měření
onboarding-automatic_proportions-check_floor_height-measure-stop = Ukončit měření
onboarding-automatic_proportions-check_floor_height-measure-reset = Opakovat měření
onboarding-automatic_proportions-check_floor_height-skip_step = Přeskočit krok a uložit
onboarding-automatic_proportions-check_floor_height-next_step = Použít výšku podlahy a uložit
onboarding-automatic_proportions-start_recording-title = Připravte se hýbat
onboarding-automatic_proportions-start_recording-description = Připravte se na nahrání několika póz a pohybů. Dostanete přesné instrukce na další obrazovce. Až budete připraveni, stiskněte tlačítko a začněte!
onboarding-automatic_proportions-start_recording-next = Spustit nahrávání
@@ -830,8 +1069,35 @@ onboarding-automatic_proportions-verify_results-redo = Znovu provést záznam
onboarding-automatic_proportions-verify_results-confirm = Jsou správné
onboarding-automatic_proportions-done-title = Tělo změřeno a uloženo.
onboarding-automatic_proportions-done-description = Kalibrace proporcí vašeho těla je dokončena!
onboarding-automatic_proportions-error_modal = <b>Chyba:</b> Při odhadování proporcí došlo k chybě! Prosím, přečtěte si <docs>dokumentaci</docs> nebo se připojte k našemu serveru <discord>Discord</discord> a požádejte o pomoc ^_^
onboarding-automatic_proportions-error_modal-v2 =
<b>Varování:</b> Nastala chyba při odhadu proporcí!
Pravděpodobně jde o nesprávnou kalibraci umístění trackerů. Ujistěte se že vaše sledování funguje správě než to zkusíte znovu.
Prosím <docs>Zkontrolujte dokumentaci</docs> nebo se připojte na náš <discord>Discord server</discord> a požádejte o pomoc ^_^
onboarding-automatic_proportions-error_modal-confirm = Rozumím!
onboarding-automatic_proportions-smol_warning =
Vaše nakonfigurovaná výška { $height } je menší než minimální přijatelná výška { $minHeight }.
<b>Proveďte prosím přeměření a ujistěte se, že jsou hodnoty správné.</b>
onboarding-automatic_proportions-smol_warning-cancel = Jít zpět
## User height calibration
## Stay Aligned setup
onboarding-stay_aligned-title = Zůstaň Srovaný!
onboarding-stay_aligned-description = Nakonfigurujte Zustaň Srovnaný, aby byly vaše trackery srovnáný.
onboarding-stay_aligned-put_trackers_on-title = Nasaďte si trackery
onboarding-stay_aligned-put_trackers_on-next = Mám nasazené všechny trackery
onboarding-stay_aligned-verify_mounting-title = Zkotrolujte nasazení
onboarding-stay_aligned-verify_mounting-step-1 = 1. Pohybujte se ve stoje.
onboarding-stay_aligned-verify_mounting-step-2 = 2. Posaďte se a pohybujte nohama a chodidly.
onboarding-stay_aligned-relaxed_poses-standing-step-0 = 1. Stůjte v pohodlné pozici. Relaxujte!
onboarding-stay_aligned-relaxed_poses-skip_step = Přeskočit
onboarding-stay_aligned-done-title = Zustaň Srovnaný zapnuto!
onboarding-stay_aligned-previous_step = Předchozí
onboarding-stay_aligned-next_step = Další
onboarding-stay_aligned-restart = Restart
onboarding-stay_aligned-done = Hotovo
## Home
@@ -855,6 +1121,82 @@ status_system-StatusSteamVRDisconnected =
*[steamvr] Nejste připojeni ke SteamVR zapomocí ovladače SlimeVR.
}
status_system-StatusTrackerError = Tracker { $trackerName } není v pořádku.
status_system-StatusUnassignedHMD = Váš VR Headset by měl být přiřazen jako tracker hlavy.
## Firmware tool globals
firmware_tool-next_step = Další krok
firmware_tool-previous_step = Předchozí krok
firmware_tool-ok = Vypadá to dobře
firmware_tool-retry = Zkusit znovu
firmware_tool-loading = Načítání...
## Firmware tool Steps
firmware_tool = Nástroj pro DIY firmwere
firmware_tool-description = Umožní vám konfigurovat a flashovat vaše DIY trackery
firmware_tool-not_available = Jejda, nástroj pro firmware není v momentální chvíli k dispozici, Vraťte se později!
firmware_tool-not_compatible = Nástroj pro firmware není kompatibilní s touhle verzí serveru. Aktualizujte prosím svůj server.
firmware_tool-flash_method_step = Metoda flashování
firmware_tool-flash_method_step-description = Prosím zvolte metodu flashování, kterou chcete použít
firmware_tool-flashbtn_step = Stiskněte tlačítko bootu btn
firmware_tool-flashbtn_step-description = Než přejdeme na další krok, je tady pár věcí které musíte udělat
firmware_tool-flashbtn_step-board_SLIMEVR = Vypněte tracker, vyndejte z obalu (jestli v nějakém je), Připojte USB kabel k tomuto počítači a poté následujte jeden z kroků revize odpovídající k vaší verzi desky trackeru SlimeVR:
firmware_tool-flashbtn_step-board_OTHER =
Před flashováním, pravděpodobně budete muset přepnout tracker do bootloader režimu.
Ve většině případů to znamená stisknutí boot tlačítka na desce trakeru před tím než začne proces flashování.
Pokud procesu flashování vyprší čas hned na začátku flashování, to nejspíš znamená že tracker nebyl v řežimu bootloaderu
Podívejte se prosím na instrukce procesu flashování pro desku vašeho zařízení, aby jste zjistili jak se dostat do režimu bootloaderu
firmware_tool-flash_method_ota-devices = Byla detekována zařízení s OTA:
firmware_tool-flash_method_ota-no_devices = Nebyly nalezeny žádné zákadní desky které by mohly být aktualizované pomocí OTA, prosím ujistěte se že jste zvolily správný typ základní desky
firmware_tool-flash_method_serial-wifi = Přihlašovací údaje Wi-Fi:
firmware_tool-flash_method_serial-devices-label = Detekována Sériová Zařízení:
firmware_tool-flash_method_serial-devices-placeholder = Vyberte sériové zařízení
firmware_tool-flash_method_serial-no_devices = Nebyla nalezena žádná kompatibilní seriová zařízení, prosím ujistěte se že trackery jsou připojeny
firmware_tool-build_step = Sestavování
firmware_tool-build_step-description = Firmwere se sestavuje, čekejte prosím
firmware_tool-flashing_step = Flashování
firmware_tool-flashing_step-description = Probíhá flashování vašich trackerů, prosím postupujte dle instrukcí na obrazovce
firmware_tool-flashing_step-flash_more = Flashnout více trackerů
firmware_tool-flashing_step-exit = Odejít
## firmware tool build status
firmware_tool-build-CREATING_BUILD_FOLDER = Vytváření složky pro sestavení
firmware_tool-build-BUILDING = Sestavování firmweru
firmware_tool-build-SAVING = Ukládání sestavení
firmware_tool-build-DONE = Sestavení dokončeno
firmware_tool-build-ERROR = Nepodařilo se sestavit firmwere
## Firmware update status
firmware_update-status-DOWNLOADING = Stahování firmwaru
firmware_update-status-AUTHENTICATING = Autentifikování s mcu
firmware_update-status-UPLOADING = Nahrávání firmwaru
firmware_update-status-SYNCING_WITH_MCU = Synchronizace s MCU
firmware_update-status-REBOOTING = Restartování trackeru
firmware_update-status-PROVISIONING = Nastavování přihlašovacích údajů pro síť Wi-Fi
firmware_update-status-DONE = Aktualizace byla dokončena!
firmware_update-status-ERROR_DEVICE_NOT_FOUND = Zařízení se nepodařilo nalézt
firmware_update-status-ERROR_TIMEOUT = Vypršel časový limit pro proces aktualizace
firmware_update-status-ERROR_DOWNLOAD_FAILED = Nepodařilo se stáhnout firmware
firmware_update-status-ERROR_AUTHENTICATION_FAILED = Ověření MCU se nezdařilo
firmware_update-status-ERROR_UPLOAD_FAILED = Nepodařilo se nahrát firmware
firmware_update-status-ERROR_PROVISIONING_FAILED = Nepodařilo se nastavit přihlašovací údaje pro Wi-Fi
firmware_update-status-ERROR_UNSUPPORTED_METHOD = Metoda aktualizace není podporována
firmware_update-status-ERROR_UNKNOWN = Neznámá chyba
## Dedicated Firmware Update Page
firmware_update-title = Aktualizace firmwaru
firmware_update-devices = Dostupná zařízení
firmware_update-devices-description = Prosím zvolte tracker, který chcete aktualizovat na nejnovější verzi SlimeVR firmwaru
firmware_update-no_devices = Prosím ujistěte se, že tracker který chcete aktualizovat je ZAPNUTO a připojeno k Wi-Fi!
firmware_update-changelog-title = Aktualizování na { $version }
firmware_update-looking_for_devices = Hledání zařízení pro aktualizaci
firmware_update-retry = Opakovat
firmware_update-update = Aktualizovat Zvolený/é Tracker/y
firmware_update-exit = Odejít
## Tray Menu
@@ -877,5 +1219,56 @@ tray_or_exit_modal-cancel = Zrušit
## Unknown device modal
unknown_device-modal-title = Byl nalezen nový tracker!
unknown_device-modal-description =
Byl objeven nový tracker s MAC adresou <b>{ $deviceId }</b>.
Chcete jej připojit k SlimeVR?
unknown_device-modal-confirm = Jasně!
unknown_device-modal-forget = Ignoruj
vrc_config-page-help = Nemůžete najít specifické nastavení?
vrc_config-page-big_menu = Sledování & IK (Velké Menu)
vrc_config-page-big_menu-desc = Nastavení souvicející s IK ve velké nabídce nastavení
vrc_config-page-wrist_menu = Sledování & IK (Zápěstní menu)
vrc_config-on = Zapnuto
vrc_config-off = Vypnuto
vrc_config-invalid = Máte špatně nakonfigurované VRChat nastavení!
vrc_config-show_more = Ukázat více
vrc_config-setting_name = Jméno nastavení v VRChat
vrc_config-recommended_value = Doporučená hodnota
vrc_config-current_value = Aktuální hodnota
vrc_config-mute = Upozornění na ztlumení
vrc_config-mute-btn = Ztlumení
vrc_config-unmute-btn = Zrušit ztlumení
vrc_config-legacy_mode = Použít starší řešení IK
vrc_config-disable_shoulder_tracking = Vypnout sledování ramen
vrc_config-spine_mode = Režim páteře FTB
vrc_config-tracker_model = Model FBT trackeru
vrc_config-avatar_measurement_type = Meření avataru
vrc_config-calibration_range = Kalibrační rozsah
vrc_config-calibration_visuals = Zobrazit vizualizaci kalibrace
vrc_config-user_height = Reálná výška uživatele
vrc_config-spine_mode-UNKNOWN = Neznámý
vrc_config-spine_mode-LOCK_BOTH = Uzamknout obojí
vrc_config-spine_mode-LOCK_HEAD = Uzamknout hlavu
vrc_config-spine_mode-LOCK_HIP = Uzamknout boky
vrc_config-tracker_model-UNKNOWN = Neznýmý
vrc_config-tracker_model-AXIS = Osy
vrc_config-tracker_model-BOX = Box
vrc_config-tracker_model-SPHERE = Sféra
vrc_config-tracker_model-SYSTEM = Systém
vrc_config-avatar_measurement_type-UNKNOWN = Neznámý
vrc_config-avatar_measurement_type-HEIGHT = Výška
vrc_config-avatar_measurement_type-ARM_SPAN = Rozpětí paží
## Error collection consent modal
error_collection_modal-title = Můžeme sbírat chyby?
error_collection_modal-description_v2 =
{ settings-interface-behavior-error_tracking-description_v2 }
Tohle lze později změnit v sekci Chování v nastavení.
error_collection_modal-confirm = Souhlasím
error_collection_modal-cancel = Nesouhlasím
## Tracking checklist section

View File

@@ -1,6 +1,3 @@
### SlimeVR complete GUI translations
# Please developers (not translators) don't reuse a key inside another key
# or concat text with a translation string in the code, use the appropriate
# features like variables and selectors in each appropriate case!
@@ -27,6 +24,9 @@ tips-do_not_move_heels = Sørg for, at dine hæle ikke bevæger sig under optage
tips-file_select = Træk og slip filer for at bruge, eller <u>gennemse</u>.
tips-tap_setup = Du kan trykke langsomt 2 gange på din tracker for at vælge den i stedet for at vælge den i menuen.
## Units
## Body parts
body_part-NONE = Ikke tildelt
@@ -50,14 +50,17 @@ body_part-LEFT_UPPER_LEG = Venstre lår
body_part-LEFT_LOWER_LEG = Venstre ankel
body_part-LEFT_FOOT = Venstre fod
## BoardType
## Proportions
skeleton_bone-NONE = Ingen
skeleton_bone-HEAD = Hoved skift
skeleton_bone-NECK = Hals længde
skeleton_bone-torso_group = Torso Længde
skeleton_bone-CHEST = Bryst Længde
skeleton_bone-CHEST_OFFSET = Bryst Juster
skeleton_bone-CHEST = Bryst Længde
skeleton_bone-WAIST = Taljelængde
skeleton_bone-HIP = Hoftelængde
skeleton_bone-HIP_OFFSET = Hofte Juster
@@ -103,11 +106,14 @@ navbar-mounting = Montage Kalibrering
navbar-onboarding = Opsætningsguide
navbar-settings = Indstillinger
## Bounding volume hierarchy recording
## Biovision hierarchy recording
bvh-start_recording = Optag BVH
bvh-recording = Optager...
## Tracking pause
## Widget: Overlay settings
widget-overlay = Overlejring
@@ -118,6 +124,9 @@ widget-overlay-is_mirrored_label = Vis Overlejring som Spejl
widget-drift_compensation-clear = Klar afdriftskompensation
## Widget: Clear Mounting calibration
## Widget: Developer settings
widget-developer_mode = Udviklertilstand
@@ -134,7 +143,9 @@ widget-developer_mode-more_info = Mere info
widget-imu_visualizer = Rotation
widget-imu_visualizer-rotation_raw = Rå
widget-imu_visualizer-rotation_preview = Forhåndsvisning
widget-imu_visualizer-rotation_hide = Skjul
## Widget: Skeleton Visualizer
## Tracker status
@@ -279,10 +290,6 @@ settings-general-steamvr-description =
Nyttig til spil eller apps, der kun understøtter bestemte trackere.
settings-general-steamvr-trackers-waist = Talje
settings-general-steamvr-trackers-chest = Bryst
settings-general-steamvr-trackers-feet = Fødder
settings-general-steamvr-trackers-knees = Knæ
settings-general-steamvr-trackers-elbows = Albuer
settings-general-steamvr-trackers-hands = Hænder
## Tracker mechanics
@@ -326,14 +333,7 @@ settings-general-fk_settings-leg_fk = Bensporing
settings-general-fk_settings-arm_fk = Arm sporing
settings-general-fk_settings-arm_fk-description = Tving arme til spore fra HMD, selvom positionshånddata er tilgængelige.
settings-general-fk_settings-arm_fk-force_arms = Tving arme fra HMD
settings-general-fk_settings-skeleton_settings = Indstillinger for skelet
settings-general-fk_settings-skeleton_settings-description = Slå skeletindstillinger til eller fra. Det anbefales at lade disse være på.
settings-general-fk_settings-skeleton_settings-extended_spine = Udvidet rygsøjle
settings-general-fk_settings-skeleton_settings-extended_pelvis = Forlænget pelvis
settings-general-fk_settings-skeleton_settings-extended_knees = Forlænget knæ
settings-general-fk_settings-vive_emulation-title = Vive emulering
settings-general-fk_settings-vive_emulation-description = Emuler de taljetrackerproblemer, som Vive-trackere har. Dette er en joke og gør sporing værre.
settings-general-fk_settings-vive_emulation-label = Aktivér Vive-emulering
## Gesture control settings (tracker tapping)
@@ -347,12 +347,18 @@ settings-general-gesture_control-taps =
}
settings-general-gesture_control-yawResetEnabled = Aktivér tryk for at yaw resette
## Interface settings
## Appearance settings
settings-general-interface = Brugergrænseflade
settings-general-interface-dev_mode = Udvikler-tilstand
settings-general-interface-dev_mode-description = Denne tilstand kan være nyttig, hvis du har brug for dybdegående data eller for at interagere med tilsluttede trackere på et mere avanceret niveau.
settings-general-interface-dev_mode-label = Udvikler-tilstand
settings-general-interface-theme = Farvetema
settings-general-interface-lang = Vælg sprog
settings-general-interface-lang-description = Skift det standardsprog, du vil bruge.
settings-general-interface-lang-placeholder = Vælg det sprog, der skal bruges
## Notification settings
settings-general-interface-serial_detection = Seriel enhedsregistrering
settings-general-interface-serial_detection-description = Denne mulighed viser en pop-up, hver gang du tilslutter en ny seriel enhed, der kan være en tracker. Det hjælper med at forbedre opsætningsprocessen for en tracker.
settings-general-interface-serial_detection-label = Seriel enhedsregistrering
@@ -360,10 +366,9 @@ settings-general-interface-feedback_sound = Feedback lyd
settings-general-interface-feedback_sound-description = Denne indstilling afspiller en lyd, når du nulstiller
settings-general-interface-feedback_sound-label = Feedback lyd
settings-general-interface-feedback_sound-volume = Feedback lydstyrke
settings-general-interface-theme = Farvetema
settings-general-interface-lang = Vælg sprog
settings-general-interface-lang-description = Skift det standardsprog, du vil bruge.
settings-general-interface-lang-placeholder = Vælg det sprog, der skal bruges
## Behavior settings
## Serial settings
@@ -378,7 +383,6 @@ settings-serial-factory_reset-warning =
Hvilket betyder, at alle Wi-Fi- og kalibreringsindstillinger <b>går tabt!</b>
settings-serial-factory_reset-warning-ok = Jeg ved hvad jeg laver
settings-serial-factory_reset-warning-cancel = Annuller
settings-serial-get_infos = Hent oplysninger
settings-serial-serial_select = Vælg en seriel port
settings-serial-auto_dropdown_item = Auto
@@ -409,14 +413,9 @@ settings-osc-router-network-address-placeholder = IPV4-adresse
## OSC VRChat settings
settings-osc-vrchat = VRChat OSC trackere
# This cares about multilines
settings-osc-vrchat-description =
Skift VRChat-specifikke indstillinger for at modtage HMD-data og sende
trackerdata til FBT uden SteamVR (f.eks. Quest standalone).
settings-osc-vrchat-enable = Aktiver
settings-osc-vrchat-enable-label = Aktiver
settings-osc-vrchat-network = Netværksporte
settings-osc-vrchat-network-description = Indstil portene til at lytte og sende data til VRChat.
settings-osc-vrchat-network-port_in =
.label = Port ind
.placeholder = Port ind (standard: 9001)
@@ -424,7 +423,6 @@ settings-osc-vrchat-network-port_out =
.label = Port ud
.placeholder = Port ud (standard: 9000)
settings-osc-vrchat-network-address = Netværksadresse
settings-osc-vrchat-network-address-description = Vælg hvilken adresse der skal sende data til VRChat (tjek dine Wi-Fi-indstillinger på din enhed).
settings-osc-vrchat-network-address-placeholder = VRChat ip-adresse
settings-osc-vrchat-network-trackers = Trackere
settings-osc-vrchat-network-trackers-description = Skift afsendelse af specifikke trackere via OSC.
@@ -457,9 +455,20 @@ settings-osc-vmc-network-address-description = Vælg hvilken adresse du vil send
settings-osc-vmc-network-address-placeholder = IPV4-adresse
settings-osc-vmc-vrm = VRM-model
settings-osc-vmc-vrm-description = Indlæs en VRM-model for at tillade hovedanker og muliggøre en højere kompatibilitet med andre applikationer
settings-osc-vmc-vrm-model_unloaded = Ingen model indlæst
settings-osc-vmc-vrm-file_select = Træk og slip en model, du vil bruge, eller <u>gennemse</u>
## Common OSC settings
## Advanced settings
## Home Screen
## Tracking Checlist
## Setup/onboarding menu
onboarding-skip = Spring opsætning over
@@ -474,11 +483,6 @@ onboarding-setup_warning-cancel = Fortsæt konfigurationen
## Wi-Fi setup
onboarding-wifi_creds-back = Gå tilbage til introduktion
onboarding-wifi_creds = Indtast Wi-Fi-oplysninger
# This cares about multilines
onboarding-wifi_creds-description =
Trackerne bruger disse oplysninger til at oprette forbindelse trådløst.
Brug de oplysninger, du i øjeblikket har forbindelse til.
onboarding-wifi_creds-skip = Spring Wi-Fi-indstillinger over
onboarding-wifi_creds-submit = Færdig!
onboarding-wifi_creds-ssid =
@@ -492,20 +496,12 @@ onboarding-wifi_creds-password =
onboarding-reset_tutorial-back = Gå tilbage til monteringskalibrering
onboarding-reset_tutorial = Start forfra
onboarding-reset_tutorial-description = Denne funktion er ikke færdig, bare tryk på fortsæt
## Setup start
onboarding-home = Velkommen til SlimeVR
onboarding-home-start = Lad os komme i gang!
## Enter VR part of setup
onboarding-enter_vr-back = Gå tilbage til Tracker-tildeler
onboarding-enter_vr-title = Tid til at gå ind i VR!
onboarding-enter_vr-description = Tag alle dine trackere på, og gå derefter på VR!
onboarding-enter_vr-ready = Jeg er klar
## Setup done
onboarding-done-title = Du er klar!
@@ -516,8 +512,6 @@ onboarding-done-close = Luk opsætning
onboarding-connect_tracker-back = Gå tilbage til Wi-Fi-oplysninger
onboarding-connect_tracker-title = Tilslut trackere
onboarding-connect_tracker-description-p0 = Nu til den sjove del, forbind alle trackere!
onboarding-connect_tracker-description-p1 = Du skal blot tilslutte alle, der ikke er tilsluttet endnu, via en USB-port.
onboarding-connect_tracker-issue-serial = Jeg har problemer med at oprette forbindelse!
onboarding-connect_tracker-usb = USB-tracker
onboarding-connect_tracker-connection_status-none = Leder efter trackere
@@ -544,6 +538,9 @@ onboarding-connect_tracker-next = Jeg har tilsluttet alle mine trackere
## Tracker calibration tutorial
## Tracker assignment tutorial
## Tracker assignment setup
onboarding-assign_trackers-back = Gå tilbage til Wi-Fi-oplysninger
@@ -567,12 +564,8 @@ onboarding-assign_trackers-next = Jeg har tildelt alle trackerene
onboarding-choose_mounting = Hvilken monteringskalibreringsmetode vil du bruge?
onboarding-choose_mounting-auto_mounting = Automatisk montering
# Italized text
onboarding-choose_mounting-auto_mounting-subtitle = Anbefalet
onboarding-choose_mounting-auto_mounting-description = Dette registrerer automatisk monteringsretningerne til alle dine trackere fra 2 stillinger
onboarding-choose_mounting-manual_mounting = Manuel montering
# Italized text
onboarding-choose_mounting-manual_mounting-subtitle = Hvis du ved hvad du laver
onboarding-choose_mounting-manual_mounting-description = Dette giver dig mulighed for manuelt at vælge monteringsretningen for hver tracker
## Tracker manual mounting setup
@@ -593,12 +586,7 @@ onboarding-automatic_mounting-put_trackers_on-title = Tag dine trackere på
onboarding-automatic_mounting-put_trackers_on-description = For at kalibrere rotationer bruger vi de trackere, du lige har tildelt. Tag alle dine trackere på du kan se hvilke der er hvilke i figuren til højre.
onboarding-automatic_mounting-put_trackers_on-next = Jeg har alle mine trackere på
## Tracker proportions method choose
# Italized text
onboarding-choose_proportions-auto_proportions-subtitle = Anbefalet
## Tracker manual proportions setup
## Tracker manual proportions setupa
## Tracker automatic proportions setup
@@ -621,6 +609,48 @@ onboarding-automatic_proportions-verify_results-redo = prøv igen
onboarding-automatic_proportions-done-title = Krop målt og gemt.
onboarding-automatic_proportions-done-description = Kalibreringen af dine kropsproportioner er fuldført!
## User height calibration
## Stay Aligned setup
## Home
home-no_trackers = Ingen trackere registreret eller tildelt
## Trackers Still On notification
## Status system
## Firmware tool globals
## Firmware tool Steps
## firmware tool build status
## Firmware update status
## Dedicated Firmware Update Page
## Tray Menu
## First exit modal
## Unknown device modal
## Error collection consent modal
## Tracking checklist section

View File

@@ -9,6 +9,11 @@
websocket-connecting = Verbindung zum Server wird hergestellt...
websocket-connection_lost = Verbindung zum Server verloren. Versuche Verbindung wiederherzustellen ...
websocket-connection_lost-desc = Es sieht so aus, als wäre der SlimeVR-Server abgestürzt. Überprüfen Sie die Protokolle und starten Sie das Programm neu.
websocket-timedout = Es konnte keine Verbindung zum Server hergestellt werden.
websocket-timedout-desc = Es sieht so aus, als ob der SlimeVR-Server abgestürzt ist oder nicht rechtzeitig geantwortet hat. Überprüfen Sie die Protokolle und starten Sie das Programm neu.
websocket-error-close = SlimeVR beenden
websocket-error-logs = Öffne den Logs-Ordner
## Update notification
@@ -26,6 +31,13 @@ tips-tap_setup = Sie können langsam 2 Mal auf Ihren Tracker tippen, um ihn ausz
tips-turn_on_tracker = Verwenden Sie offizielle SlimeVR-Tracker? Vergessen Sie nicht den <b><em>Tracker einzuschalten</em></b>, nachdem Sie ihn an den PC angeschlossen haben!
tips-failed_webgl = Fehler beim Initialisieren von WebGL.
## Units
unit-meter = Meter
unit-foot = Fuß
unit-inch = Zoll
unit-cm = Zentimeter
## Body parts
body_part-NONE = Nicht zugewiesen
@@ -49,16 +61,88 @@ body_part-LEFT_HAND = Linke Hand
body_part-LEFT_UPPER_LEG = Linker Oberschenkel
body_part-LEFT_LOWER_LEG = Linker Knöchel
body_part-LEFT_FOOT = Linker Fuß
body_part-LEFT_THUMB_METACARPAL = Linker Daumen-Mittelhandknochen
body_part-LEFT_THUMB_PROXIMAL = Linkes Daumengrundglied
body_part-LEFT_THUMB_DISTAL = Linkes Daumenendglied
body_part-LEFT_INDEX_PROXIMAL = Linkes Zeigefinger-Grundglied
body_part-LEFT_INDEX_INTERMEDIATE = Linkes Zeigefinger-Mittelglied
body_part-LEFT_INDEX_DISTAL = Linkes Zeigefinger-Endglied
body_part-LEFT_MIDDLE_PROXIMAL = Linkes Mittelfinger-Grundglied
body_part-LEFT_MIDDLE_INTERMEDIATE = Linkes Mittelfinger-Mittelglied
body_part-LEFT_MIDDLE_DISTAL = Linkes Mittelfinger-Endglied
body_part-LEFT_RING_PROXIMAL = Linkes Ringfinger-Grundglied
body_part-LEFT_RING_INTERMEDIATE = Linkes Ringfinger-Mittelglied
body_part-LEFT_RING_DISTAL = Linkes Ringfinger-Endglied
body_part-LEFT_LITTLE_PROXIMAL = Linkes Kleinfinger-Grundglied
body_part-LEFT_LITTLE_INTERMEDIATE = Linkes Kleinfinger-Mittelglied
body_part-LEFT_LITTLE_DISTAL = Linkes Kleinfinger-Endglied
body_part-RIGHT_THUMB_METACARPAL = Rechter Daumen-Mittelhandknochen
body_part-RIGHT_THUMB_PROXIMAL = Rechtes Daumengrundglied
body_part-RIGHT_THUMB_DISTAL = Rechtes Daumenendglied
body_part-RIGHT_INDEX_PROXIMAL = Rechtes Zeigefinger-Grundglied
body_part-RIGHT_INDEX_INTERMEDIATE = Rechtes Zeigefinger-Mittelglied
body_part-RIGHT_INDEX_DISTAL = Rechtes Zeigefinger-Endglied
body_part-RIGHT_MIDDLE_PROXIMAL = Rechtes Mittelfinger-Grundglied
body_part-RIGHT_MIDDLE_INTERMEDIATE = Rechtes Mittelfinger-Mittelglied
body_part-RIGHT_MIDDLE_DISTAL = Rechtes Mittelfinger-Endglied
body_part-RIGHT_RING_PROXIMAL = Rechtes Ringfinger-Grundglied
body_part-RIGHT_RING_INTERMEDIATE = Rechtes Ringfinger-Mittelglied
body_part-RIGHT_RING_DISTAL = Rechtes Ringfinger-Endglied
body_part-RIGHT_LITTLE_PROXIMAL = Rechtes Kleinfinger-Grundglied
body_part-RIGHT_LITTLE_INTERMEDIATE = Rechtes Kleinfinger-Mittelglied
body_part-RIGHT_LITTLE_DISTAL = Rechtes Kleinfinger-Endglied
## BoardType
board_type-UNKNOWN = Unbekannt
board_type-NODEMCU = NodeMCU
board_type-CUSTOM = Benutzerdefiniertes Board
board_type-WROOM32 = WROOM32
board_type-WEMOSD1MINI = Wemos D1 Mini
board_type-TTGO_TBASE = TTGO T-Base
board_type-ESP01 = ESP-01
board_type-SLIMEVR = SlimeVR
board_type-SLIMEVR_DEV = SlimeVR Dev Board
board_type-SLIMEVR_V1_2 = SlimeVR v1.2
board_type-LOLIN_C3_MINI = Lolin C3 Mini
board_type-BEETLE32C3 = Beetle ESP32-C3
board_type-ESP32C3DEVKITM1 = Espressif ESP32-C3 DevKitM-1
board_type-OWOTRACK = owoTrack
board_type-WRANGLER = Wrangler Joycons
board_type-MOCOPI = Sony Mocopi
board_type-WEMOSWROOM02 = Wemos Wroom-02 D1 Mini
board_type-XIAO_ESP32C3 = Seeed Studio XIAO ESP32C3
board_type-HARITORA = Haritora
board_type-ESP32C6DEVKITC1 = Espressif ESP32-C6 DevKitC-1
board_type-GLOVE_IMU_SLIMEVR_DEV = SlimeVR Dev-IMU-Handschuh
## Proportions
skeleton_bone-NONE = Keine
skeleton_bone-HEAD = Kopfverschiebung
skeleton_bone-HEAD-desc =
Dies ist der Abstand von Ihrem Headset zur Mitte Ihres Kopfes.
Um ihn anzupassen, bewegen Sie den Kopf von links nach rechts, als würden Sie „nein“ sagen. Ändern Sie den Wert so lange, bis sich die anderen Tracker nicht mehr mitbewegen.
skeleton_bone-NECK = Halslänge
skeleton_bone-NECK-desc =
Dies ist der Abstand von der Mitte Ihres Kopfes bis zum Ansatz Ihres Nackens.
Um diesen anzupassen, nicken Sie mit Ihren Kopf, als würden Sie "ja" sagen, oder neigen Sie Ihren Kopf nach links und rechts. und modifizieren Sie es, bis die Bewegung in anderen Trackern vernachlässigbar ist. Passen Sie den Wert so lange an, bis Bewegungen anderer Tracker kaum noch vorhanden sind.
skeleton_bone-torso_group = Oberkörperhöhe
skeleton_bone-torso_group-desc =
Dies ist der Abstand vom Ansatz Ihres Nackens bis zu Ihren Hüften.
Stehen Sie aufrecht und ändern Sie den Wert, bis Ihre virtuellen Hüften mit Ihren echten übereinstimmen.
skeleton_bone-UPPER_CHEST = Obere Brustlänge
skeleton_bone-UPPER_CHEST-desc =
Dies ist der Abstand vom Ansatz Ihres Nackens bis zur Mitte Ihrer Brust.
Passen Sie zunächst Ihre Rumpflänge korrekt an und verändern Sie dann diesen Wert in verschiedenen Positionen (z.B. im Sitzen, beim Bücken oder Liegen), bis Ihre virtuelle Wirbelsäule mit Ihrer echten übereinstimmt.
skeleton_bone-CHEST_OFFSET = Brustversatz
skeleton_bone-CHEST_OFFSET-desc =
Dies kann angepasst werden, um Ihren virtuellen Brust-Tracker nach oben oder unten zu verschieben, um
die Kalibrierung in bestimmten Spielen oder Anwendungen zu unterstützen, die möglicherweise einen höheren oder niedrigeren Wert erwarten.
skeleton_bone-CHEST = Brustabstand
skeleton_bone-CHEST-desc =
Dies ist der Abstand vom Ansatz der Brust bis zur Mitte Ihrer Wirbelsäule.
Passen Sie zunächst Ihre Rumpflänge korrekt an und verändern Sie dann diesen Wert in verschiedenen Positionen (z.B. im Sitzen, beim Bücken oder Liegen), bis Ihre virtuelle Wirbelsäule mit Ihrer echten übereinstimmt.
skeleton_bone-WAIST = Taillenabstand
skeleton_bone-HIP = Hüftlänge
skeleton_bone-HIP_OFFSET = Hüftversatz
@@ -81,14 +165,21 @@ skeleton_bone-ELBOW_OFFSET = Ellbogenversatz
## Tracker reset buttons
reset-reset_all = Alle Proportionen zurücksetzen
reset-reset_all_warning =
<b>Achtung:</b> Die Proportionen werden zurückgesetzt und auf Basis ihrer Körpergröße neu berechnet.
Sind sie sich sicher?
reset-reset_all_warning-v2 =
<b>Warnung:</b>Ihre Proportionen werden auf die Standardwerte zurückgesetzt und entsprechend Ihrer konfigurierten Körpergröße skaliert.
Möchten Sie dies wirklich tun?
reset-reset_all_warning-reset = Proportionen zurücksetzen
reset-reset_all_warning-cancel = Abbrechen
reset-reset_all_warning_default-v2 =
<b>Warnung:</b> Ihre Körpergröße wurde nicht konfiguriert. Ihre Proportionen werden auf die Standardwerte mit der Standardgröße zurückgesetzt.
Möchten Sie dies wirklich tun?
reset-full = Reset
reset-mounting = Befestigungs-Reset
reset-mounting-feet = Fuß-Befestigungs-Reset
reset-mounting-fingers = Fingerkalibrierung
reset-yaw = Horizontaler Reset
reset-error-no_feet_tracker = Kein Fußtracker zugewiesen
reset-error-no_fingers_tracker = Kein Fingertracker zugewiesen
## Serial detection stuff
@@ -103,7 +194,7 @@ serial_detection-close = Schließen
## Navigation bar
navbar-home = Start
navbar-body_proportions = Körpermaße
navbar-body_proportions = Körperproportionen
navbar-trackers_assign = Tracker-Zuordnung
navbar-mounting = Tracker-Ausrichtung
navbar-onboarding = Einrichtungs-Assistent
@@ -112,7 +203,9 @@ navbar-settings = Einstellungen
## Biovision hierarchy recording
bvh-start_recording = BVH aufnehmen
bvh-stop_recording = BVH-Aufnahme speichern
bvh-recording = Aufnahme läuft...
bvh-save_title = BVH-Aufnahme speichern
## Tracking pause
@@ -129,9 +222,9 @@ widget-overlay-is_mirrored_label = Visualisierung spiegeln
widget-drift_compensation-clear = Driftkompensation zurücksetzen
## Widget: Clear Reset Mounting
## Widget: Clear Mounting calibration
widget-clear_mounting = Befestigungs-Reset zurücksetzen
widget-clear_mounting = Tracker-Ausrichtung zurücksetzen
## Widget: Developer settings
@@ -153,6 +246,7 @@ widget-imu_visualizer-rotation_raw = Rohe Drehung
widget-imu_visualizer-rotation_preview = Vorschau
widget-imu_visualizer-acceleration = Beschleunigung
widget-imu_visualizer-position = Position
widget-imu_visualizer-stay_aligned = Stay Aligned
## Widget: Skeleton Visualizer
@@ -180,6 +274,7 @@ tracker-table-column-temperature = Temp. °C
tracker-table-column-linear-acceleration = Beschleunigung X/Y/Z
tracker-table-column-rotation = Rotation X/Y/Z
tracker-table-column-position = Position X/Y/Z
tracker-table-column-stay_aligned = Stay Aligned
tracker-table-column-url = Adresse
## Tracker rotation
@@ -193,7 +288,7 @@ tracker-rotation-back = Hinten
tracker-rotation-back_left = Hinten-Links
tracker-rotation-back_right = Hinten-Rechts
tracker-rotation-custom = Benutzerdefiniert
tracker-rotation-overriden = (von Befestigungs-Reset überschrieben)
tracker-rotation-overriden = (von der Tracker-Ausrichtung überschrieben)
## Tracker information
@@ -204,6 +299,7 @@ tracker-infos-url = Tracker-Adresse
tracker-infos-version = Firmware-Version
tracker-infos-hardware_rev = Hardware-Version
tracker-infos-hardware_identifier = Hardware-ID
tracker-infos-data_support = Daten-Support
tracker-infos-imu = IMU-Sensor
tracker-infos-board_type = Platine
tracker-infos-network_version = Protokoll Version
@@ -244,6 +340,13 @@ tracker-settings-name_section-label = Trackername
tracker-settings-forget = Tracker Vergessen
tracker-settings-forget-description = Entfernt den Tracker vom SlimeVR Server und verhindert, dass er sich wieder verbindet, bis der Server neu gestartet wurde. Die Konfiguration des Trackers geht nicht verloren.
tracker-settings-forget-label = Tracker Vergessen
tracker-settings-update-unavailable-v2 = Keine Veröffentlichungen gefunden
tracker-settings-update-incompatible = Update nicht möglich. Board inkompatibel
tracker-settings-update-low-battery = Aktualisierung nicht möglich. Akku unter 50 %
tracker-settings-update-up_to_date = Auf dem neusten Stand
tracker-settings-update-blocked = Update nicht verfügbar. Weitere Veröffentlichungen sind nicht verfügbar.
tracker-settings-update = Jetzt aktualisieren
tracker-settings-update-title = Firmware-Version
## Tracker part card info
@@ -309,16 +412,24 @@ mounting_selection_menu-close = Schließen
settings-sidebar-title = Einstellungen
settings-sidebar-general = Allgemein
settings-sidebar-steamvr = SteamVR
settings-sidebar-tracker_mechanics = Tracker-Mechanik
settings-sidebar-stay_aligned = Stay Aligned
settings-sidebar-fk_settings = FK-Einstellungen
settings-sidebar-gesture_control = Gestensteuerung
settings-sidebar-interface = Bedienoberfläche
settings-sidebar-osc_router = OSC-Router
settings-sidebar-osc_trackers = VRChat OSC-Tracker
settings-sidebar-osc_vmc = VMC
settings-sidebar-utils = Werkzeuge
settings-sidebar-serial = Serielle Konsole
settings-sidebar-appearance = Erscheinungsbild
settings-sidebar-home = Startbildschirm
settings-sidebar-checklist = Tracking-Checkliste
settings-sidebar-notifications = Benachrichtigungen
settings-sidebar-behavior = Verhalten
settings-sidebar-firmware-tool = DIY Firmware-Tool
settings-sidebar-vrc_warnings = VRChat Konfigurations-Warnungen
settings-sidebar-advanced = Erweitert
## SteamVR settings
@@ -381,7 +492,7 @@ settings-general-tracker_mechanics-drift_compensation-prediction-description =
Aktivieren Sie diese Funktion, wenn sich der Tracker kontinuierlich um die gier-Achse dreht.
settings-general-tracker_mechanics-drift_compensation-prediction-label = Prognose der Driftkompensation
settings-general-tracker_mechanics-drift_compensation_warning =
<b>Warnung:</b> Verwenden Sie die Driftkompensation nur, wenn sie sehr oft
<b>Warnung:</b> Verwenden Sie die Driftkompensation nur, wenn sie sehr oft
reseten müssen (alle ~5-10 Minuten).
Zu den IMUs, die häufig einen Reset benötigen, gehören:
@@ -390,16 +501,30 @@ settings-general-tracker_mechanics-drift_compensation_warning-cancel = Abbrechen
settings-general-tracker_mechanics-drift_compensation_warning-done = Ich verstehe
settings-general-tracker_mechanics-drift_compensation-amount-label = Kompensierungsmenge
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Nutze die letzten x Resets
settings-general-tracker_mechanics-save_mounting_reset = Automatische Befestigungs-Reset Kalibrierung speichern
settings-general-tracker_mechanics-save_mounting_reset = Automatische Tracker-Ausrichtung speichern
settings-general-tracker_mechanics-save_mounting_reset-description =
Speichert die automatische Befestigungs-Reset Kalibrierung für die Tracker zwischen den Neustarts. Nützlich
Speichert die automatische Tracker-Ausrichtung für die Tracker zwischen den Neustarts. Nützlich
wenn Sie einen Anzug tragen, bei dem sich die Tracker zwischen den Sitzungen nicht bewegen. <b>Für normale Benutzer nicht zu empfehlen!</b>
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Befestigungs-Reset speichern
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Tracker-Ausrichtung speichern
settings-general-tracker_mechanics-use_mag_on_all_trackers = Verwende das Magnetometer auf allen IMU-Trackern, die dies unterstützen.
settings-general-tracker_mechanics-use_mag_on_all_trackers-description =
Verwendet das Magnetometer auf allen Trackern, die über eine kompatible Firmware verfügen, um den Drift in stabilen magnetischen Umgebungen zu reduzieren.
Kann pro Tracker in den Einstellungen des Trackers deaktiviert werden. <b>Bitte schalten Sie keinen der Tracker aus, während Sie dies umschalten!</b>
settings-general-tracker_mechanics-use_mag_on_all_trackers-label = Magnetometer auf Trackern verwenden
settings-stay_aligned = Stay Aligned
settings-stay_aligned-description = Stay Aligned reduziert Drift, indem es deine Tracker schrittweise an deine entspannten Posen anpasst.
settings-stay_aligned-setup-label = Stay Aligned einrichten
settings-stay_aligned-setup-description = Sie müssen Stay Aligned einrichten, um es zu aktivieren.
settings-stay_aligned-warnings-drift_compensation = ⚠ Bitte schalten Sie die Driftkompensation aus! Diese steht in Konflikt mit Stay Aligned.
settings-stay_aligned-enabled-label = Tracker anpassen
settings-stay_aligned-general-label = Allgemein
settings-stay_aligned-relaxed_poses-label = Entspannte Posen
settings-stay_aligned-relaxed_poses-save_pose = Pose speichern
settings-stay_aligned-relaxed_poses-reset_pose = Pose zurücksetzen
settings-stay_aligned-relaxed_poses-close = Schließen
settings-stay_aligned-debug-label = Debuggen
settings-stay_aligned-debug-description = Bitte geben Sie Ihre Einstellungen mit an, wenn Sie Probleme mit Stay Aligned melden.
settings-stay_aligned-debug-copy-label = Einstellungen in die Zwischenablage kopieren
## FK/Tracking settings
@@ -421,19 +546,24 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = Bodenclip kann d
settings-general-fk_settings-leg_tweak-toe_snap-description = Zehen-Ausrichtung versucht, die Rotation Ihrer Füße zu erraten, wenn keine Fuß-Tracker verwendet werden.
settings-general-fk_settings-leg_tweak-foot_plant-description = Fußkorrektur richtet Ihre Füße parallel zum Boden aus, wenn sie den Boden berühren.
settings-general-fk_settings-leg_fk = Beintracking
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Aktiviert das Zurücksetzen der Fußausrichtung, indem Sie auf die Zehenspitzen stehen.
settings-general-fk_settings-leg_fk-reset_mounting_feet = Fußausrichtung zurücksetzen
settings-general-fk_settings-enforce_joint_constraints = Gelenkgrenzen
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = Grenzen erzwingen
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints-description = Verhindert, dass sich Gelenke über ihre Grenzen hinaus drehen
settings-general-fk_settings-enforce_joint_constraints-correct_constraints = Mit Grenzen korrigieren
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = Korrigiert Gelenkrotationen, wenn diese über ihre Grenzen hinausgehen
settings-general-fk_settings-ik = Positionsdaten
settings-general-fk_settings-ik-use_position = Positionsdaten verwenden
settings-general-fk_settings-arm_fk = Arm-Tracking
settings-general-fk_settings-arm_fk-description = Ändern Sie die Art und Weise, wie die Arme berechnet werden.
settings-general-fk_settings-arm_fk-force_arms = Arme vom VR-Headset erzwingen
settings-general-fk_settings-reset_settings = Einstellungen zurücksetzen
settings-general-fk_settings-reset_settings-reset_hmd_pitch-description = Setzen Sie die Neigung (vertikale Drehung) Ihres Headsets zurück, wenn Sie einen vollständigen Reset durchführen. Nützlich, wenn Sie ein Headset auf der Stirn für VTubing oder Mocap tragen. Nicht für VR aktivieren.
settings-general-fk_settings-reset_settings-reset_hmd_pitch = Headset-Nick (vertikale Drehung) zurücksetzen
settings-general-fk_settings-arm_fk-reset_mode-description = Ändern Sie, welche Armhaltung für den Befestigungs-Reset erwartet wird.
settings-general-fk_settings-arm_fk-reset_mode-description = Ändern Sie, welche Armhaltung für den Reset der Tracker-Ausrichtung erwartet wird.
settings-general-fk_settings-arm_fk-back = nach Hinten
settings-general-fk_settings-arm_fk-back-description = Der Standardmodus, bei dem die Oberarme nach hinten und die Unterarme nach vorne gehen.
settings-general-fk_settings-arm_fk-tpose_up = T-Pose (oben)
settings-general-fk_settings-arm_fk-tpose_up-description = Erwartet, dass deine Arme während des vollständigen Zurücksetzens seitlich nach unten gerichtet sind und während des Befestigungs-Reset um 90 Grad nach außen gerichtet sind.
settings-general-fk_settings-arm_fk-tpose_up-description = Erwartet, dass deine Arme während des vollständigen Zurücksetzens seitlich nach unten gerichtet sind und während des Reset der Tracker-Ausrichtung um 90 Grad nach außen gerichtet sind.
settings-general-fk_settings-arm_fk-tpose_down = T-Pose (unten)
settings-general-fk_settings-arm_fk-tpose_down-description = Erwartet, dass deine Arme während des vollständigen Zurücksetzens um 90 Grad nach außen gerichtet sind und während des Befestigungs-Reset seitlich nach unten.
settings-general-fk_settings-arm_fk-forward = Vorwärts
@@ -454,15 +584,12 @@ settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = Inter
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = Interpolation der horizontalen und Torsionsrotationen der Knie mit denen der Fußgelenke
settings-general-fk_settings-self_localization-title = Motion-Capture-Modus
settings-general-fk_settings-self_localization-description = Der Motion-Capture-Modus ermöglicht es dem Skelett, ungefähr die eigene Position ohne Headset oder Tracker zu verfolgen. Beachten Sie, dass diese Funktion Fuß- und Kopf-Tracker benötigt und noch experimentell ist.
settings-general-fk_settings-vive_emulation-title = Vive-Simulierung
settings-general-fk_settings-vive_emulation-description = Simuliere die Tracking-Probleme, welche bei Vive-Trackern auftreten. Dies ist ein Scherz und verschlechtert das Tracking.
settings-general-fk_settings-vive_emulation-label = Vive-Simulierung
## Gesture control settings (tracker tapping)
settings-general-gesture_control = Gestensteuerung
settings-general-gesture_control-subtitle = Reset durch Antippen
settings-general-gesture_control-description = Erlaubt Reset durch das Antippen eines Trackers auszulösen. Der höchste Tracker auf dem Oberkörper wird für schnelle Resets genutzt, der höchste Tracker auf dem linken Bein wird für Reset genutzt und der höchste Tracker auf dem rechten Bein wird für Befestigungs-Reset genutzt. Das Antippen muss innerhalb von 0.5 Sekunden erfolgen, um erkannt zu werden.
settings-general-gesture_control-description = Erlaubt Reset durch das Antippen eines Trackers auszulösen. Der höchste Tracker auf dem Oberkörper wird für schnelle Resets genutzt, der höchste Tracker auf dem linken Bein wird für Reset genutzt und der höchste Tracker auf dem rechten Bein wird für Reset der Tracker-Ausrichtung genutzt. Das Antippen muss innerhalb von 0.5 Sekunden erfolgen, um erkannt zu werden.
# This is a unit: 3 taps, 2 taps, 1 tap
# $amount (Number) - Amount of taps (touches to the tracker's case)
settings-general-gesture_control-taps =
@@ -483,8 +610,8 @@ settings-general-gesture_control-yawResetTaps = Antipp-Anzahl für einen horizon
settings-general-gesture_control-fullResetEnabled = Vollständiger Reset durch Antippen
settings-general-gesture_control-fullResetDelay = Verzögerung für einen vollständigen Reset
settings-general-gesture_control-fullResetTaps = Antipp-Anzahl für einen vollständigen Reset
settings-general-gesture_control-mountingResetEnabled = Antippen für Befestigungs-Reset
settings-general-gesture_control-mountingResetDelay = Befestigungs-Reset-Verzögerung
settings-general-gesture_control-mountingResetEnabled = Aktivieren von Antippen für Reset der Tracker-Ausrichtung
settings-general-gesture_control-mountingResetDelay = Verzögerung von Reset der Tracker-Ausrichtung
settings-general-gesture_control-mountingResetTaps = Anzahl für Befestigungs-Reset
# The number of trackers that can have higher acceleration before a tap is rejected
settings-general-gesture_control-numberTrackersOverThreshold = Tracker über Schwellwert
@@ -528,6 +655,10 @@ settings-general-interface-feedback_sound-volume = Feedback-Sound-Lautstärke
settings-general-interface-connected_trackers_warning = Warnung zu verbundenen Trackern
settings-general-interface-connected_trackers_warning-description = Diese Option zeigt jedes Mal ein Pop-up-Fenster an, wenn Sie versuchen, SlimeVR zu beenden, während ein oder mehrere Tracker verbunden sind. Es erinnert Sie daran, die Tracker auszuschalten, um die Akkulaufzeit zu verlängern.
settings-general-interface-connected_trackers_warning-label = Warnung vor verbundenen Trackern beim Verlassen
## Behavior settings
settings-interface-behavior = Verhalten
settings-general-interface-use_tray = In den Infobereich minimieren
settings-general-interface-use_tray-description = Erlaubt Ihnen, das Fenster zu schließen, ohne den SlimeVR-Server zu beenden. Dies erlaubt Ihnen diesen weiterzuverwenden, ohne dass das Fenster stört.
settings-general-interface-use_tray-label = In den Infobereich minimieren
@@ -540,6 +671,16 @@ settings-general-interface-discord_presence-message =
[one] nutzt 1 Tracker
*[other] nutzt { $amount } Tracker
}
settings-interface-behavior-error_tracking = Fehlererfassung über Sentry.io
settings-interface-behavior-error_tracking-description_v2 =
<h1>Sind Sie mit der Erhebung anonymisierter Fehlerdaten einverstanden?</h1>
<b>Wir erfassen keine personenbezogenen Daten,</b> wie Ihre IP-Adresse oder WLAN-Zugangsdaten. SlimeVR respektiert Ihre Privatsphäre!
Um die bestmögliche Benutzererfahrung zu bieten, erfassen wir anonymisierte Fehlerberichte, Leistungsmetriken und Informationen zum Betriebssystem. Dies hilft uns, Fehler und Probleme mit SlimeVR zu erkennen. Diese Metriken werden über Sentry.io erfasst.
settings-interface-behavior-error_tracking-label = Fehler an Entwickler senden
settings-interface-behavior-bvh_directory = Verzeichnis zum Speichern von BVH-Aufnahmen
settings-interface-behavior-bvh_directory-label = Verzeichnis für BVH-Aufnahmen
## Serial settings
@@ -555,15 +696,19 @@ settings-serial-factory_reset = Werkseinstellungen zurücksetzen
# <b>text</b> means that the text should be bold
settings-serial-factory_reset-warning =
<b>Warnung:</b> Dadurch wird der Tracker auf die Werkseinstellungen zurückgesetzt.
Das bedeutet, dass Wi-Fi- und Kalibrierungseinstellungen <b>verloren gehen!</b>
Das bedeutet, dass die WLAN- und Kalibrierungseinstellungen <b>verloren gehen!</b>
settings-serial-factory_reset-warning-ok = Ich weiß, was ich tue
settings-serial-factory_reset-warning-cancel = Abbruch
settings-serial-get_infos = Informationen abrufen
settings-serial-serial_select = Wählen Sie einen seriellen Anschluss
settings-serial-auto_dropdown_item = Auto
settings-serial-get_wifi_scan = WLAN-Scan
settings-serial-file_type = Klartext
settings-serial-save_logs = In Datei speichern
settings-serial-send_command = Senden
settings-serial-send_command-placeholder = Befehl...
settings-serial-send_command-warning = <b>Warnung:</b> Das Ausführen serieller Befehle kann zu Datenverlust führen oder die Tracker unbrauchbar machen.
settings-serial-send_command-warning-ok = Ich weiß, was ich tue
settings-serial-send_command-warning-cancel = Abbruch
## OSC router settings
@@ -596,12 +741,19 @@ settings-osc-vrchat = VRChat-OSC-Trackers
# This cares about multilines
settings-osc-vrchat-description-v1 =
Ändern Sie die Einstellungen, die speziell für den OSC-Trackers-Standard verwendet werden, um Tracking-Daten an Anwendungen ohne SteamVR zu senden (z. B. für Quest Standalone).
Stellen Sie sicher, dass Sie OSC in VRChat über das Aktionsmenü unter OSC > Aktiviert einschalten.
Stellen Sie sicher, dass Sie OSC in VRChat über das Aktionsmenü unter OSC > Aktiviert einschalten.
Um das Empfangen von HMD- und Controller-Daten von VRChat zu ermöglichen, gehen Sie in Ihrem Hauptmenü
zu den Einstellungen unter Tracking & IK > Erlaube das Senden von Kopf- und Handgelenk-VR-Tracking-OSC-Daten.
settings-osc-vrchat-enable = Aktivieren
settings-osc-vrchat-enable-description = Ein- und Ausschalten des Sendens und Empfangen von Daten
settings-osc-vrchat-enable-label = Aktivieren
settings-osc-vrchat-oscqueryEnabled = OSCQuery aktivieren
settings-osc-vrchat-oscqueryEnabled-description =
OSCQuery erkennt laufende Instanzen von VRChat automatisch und sendet Daten an sie.
Es kann sich auch selbst bei diesen Instanzen bekannt machen, um HMD- und Controller-Daten zu empfangen.
Um den Empfang von HMD- und Controller-Daten aus VRChat zu ermöglichen, öffnen Sie das Hauptmenü,
gehen Sie zu den Einstellungen unter "Tracking & IK" und aktivieren Sie "Erlaube das Senden von Kopf- und Handgelenk-VR-Tracking-OSC-Daten".
settings-osc-vrchat-oscqueryEnabled-label = OSCQuery aktivieren
settings-osc-vrchat-network = Netzwerk-Ports
settings-osc-vrchat-network-description-v1 = Legt die Ports für das Empfangen und Senden von Daten fest. Kann für VRChat unverändert bleiben.
settings-osc-vrchat-network-port_in =
@@ -642,12 +794,7 @@ settings-osc-vmc-network-address-description = Setze die Adresse, wo die Daten h
settings-osc-vmc-network-address-placeholder = IPv4-Adresse
settings-osc-vmc-vrm = VRM-Model
settings-osc-vmc-vrm-description = Lade ein VRM-Modell um die Kopfverankerung anzuschalten und eine bessere Kompatibilität mit anderen Anwendungen zu bekommen.
settings-osc-vmc-vrm-model_unloaded = Kein Modell geladen
settings-osc-vmc-vrm-model_loaded =
{ $titled ->
[true] Modell geladen: { $name }
*[other] Unbenanntes Modell geladen
}
settings-osc-vmc-vrm-untitled_model = Unbenanntes Modell
settings-osc-vmc-vrm-file_select = Modell per Drag & Drop laden oder <u>durchsuchen</u>
settings-osc-vmc-anchor_hip = Hüftenverankerung
settings-osc-vmc-anchor_hip-description = Die Hüften-Verankerung für das Tracking ist nützlich für VTubing im Sitzen. Beim Deaktivieren muss ein VRM-Model geladen werden.
@@ -656,6 +803,11 @@ settings-osc-vmc-mirror_tracking = Tracking spiegeln
settings-osc-vmc-mirror_tracking-description = Tracking horizontal spiegeln
settings-osc-vmc-mirror_tracking-label = Tracking spiegeln
## Common OSC settings
settings-osc-common-network-ports_match_error = Die Ein- und Ausgänge des OSC-Routers können nicht gleich sein!
settings-osc-common-network-port_banned_error = Der Port { $port } kann nicht verwendet werden!
## Advanced settings
settings-utils-advanced = Erweitert
@@ -682,9 +834,21 @@ settings-utils-advanced-reset_warning =
}
settings-utils-advanced-reset_warning-reset = Einstellungen zurücksetzen
settings-utils-advanced-reset_warning-cancel = Abbrechen
settings-utils-advanced-open_data = Daten-Ordner
settings-utils-advanced-open_data-description = Öffnet den Daten-Ordner von SlimeVR im Explorer, der Konfigurations- und Protokolldateien enthält.
settings-utils-advanced-open_data-v1 = Konfigurationsordner
settings-utils-advanced-open_data-description-v1 = Öffnet den Konfigurationsordner von SlimeVR im Explorer, der Konfigurationsdateien enthält
settings-utils-advanced-open_data-label = Ordner öffnen
settings-utils-advanced-open_logs = Logs-Ordner
settings-utils-advanced-open_logs-description = Öffnet den Logs-Ordner von SlimeVR im Explorer, der die Protokolle der App enthält.
settings-utils-advanced-open_logs-label = Ordner öffnen
## Home Screen
settings-home-list-layout = Layout der Tracker-Liste
settings-home-list-layout-desc = Wählen Sie eines der möglichen Startbildschirm-Layouts aus
settings-home-list-layout-table = Tabelle
## Tracking Checlist
## Setup/onboarding menu
@@ -699,24 +863,19 @@ onboarding-setup_warning-cancel = Einrichtung fortsetzen
## Wi-Fi setup
onboarding-wifi_creds-back = Zurück zur Einführung
onboarding-wifi_creds = WLAN-Zugangsdaten eingeben
# This cares about multilines
onboarding-wifi_creds-description =
Die Tracker nutzen diese Zugangsdaten, um sich mit dem WLAN zu verbinden.
Bitte verwenden Sie die Zugangsdaten, mit denen ihr PC gerade verbunden sind.
Dieses WLAN-Netzwerk muss ein 2.4 GHz-Netzwerk sein.
onboarding-wifi_creds-skip = WLAN-Zugangsdaten überspringen
onboarding-wifi_creds-submit = Weiter!
onboarding-wifi_creds-ssid =
.label = WLAN-Name
.placeholder = WLAN-Name eingeben
onboarding-wifi_creds-ssid-required = WLAN-Name ist erforderlich
onboarding-wifi_creds-password =
.label = Passwort
.placeholder = Passwort eingeben
## Mounting setup
onboarding-reset_tutorial-back = Zurück zur Trackerausrichtung
onboarding-reset_tutorial-back = Zurück zur Tracker-Ausrichtung
onboarding-reset_tutorial = Tutorial neustarten
onboarding-reset_tutorial-explanation = Während Sie Ihre Tracker verwenden, können sie aufgrund der IMU-Gierdrift oder weil Sie sie physisch bewegt haben, aus der Ausrichtung geraten. Sie haben mehrere Möglichkeiten, dies zu beheben.
onboarding-reset_tutorial-skip = Schritt überspringen
@@ -733,24 +892,17 @@ onboarding-reset_tutorial-1 =
Dadurch werden die Position und Rotation aller Ihrer Tracker vollständig zurückgesetzt. Dies sollte die meisten Probleme beheben.
# Cares about multiline
onboarding-reset_tutorial-2 =
Tippen Sie { $taps } mal auf den markierten Tracker um einen Befestigungs-Reset auszulösen.
Tippen Sie { $taps } mal auf den markierten Tracker um einen Reset der Tracker-Ausrichtung auszulösen.
Ein Befestigungs-Reset hilft dabei, die Tracker neu auszurichten, so wie diese tatsächlich an Ihnen angebracht sind. Zum Beispiel, wenn Sie ein Tracker versehentlich verschoben haben und dessen Orientierung sich stark verändert hat.
Ein Reset der Tracker-Ausrichtung hilft dabei, die Tracker neu auszurichten, so wie diese tatsächlich an Ihnen angebracht sind. Zum Beispiel, wenn Sie ein Tracker versehentlich verschoben haben und dessen Orientierung sich stark verändert hat.
Sie müssen sich in einer "Skifahren"-Pose, wie im Befestigungs-Assistenten gezeigt wird, befinden. Nach dem Auslösen wird der Reset nach 3 Sekunden (konfigurierbar) durchgeführt.
Sie müssen sich in einer "Skifahren"-Pose, wie im Tracker-Ausrichtung-Assistenten gezeigt wird, befinden. Nach dem Auslösen wird der Reset nach 3 Sekunden (konfigurierbar) durchgeführt.
## Setup start
onboarding-home = Willkommen zu SlimeVR
onboarding-home-start = Los gehts!
## Enter VR part of setup
onboarding-enter_vr-back = Zurück zur Trackerzuweisung
onboarding-enter_vr-title = Zeit für VR!
onboarding-enter_vr-description = Ziehen Sie alle Tracker an und betreten Sie dann VR!
onboarding-enter_vr-ready = Ich bin bereit!
## Setup done
onboarding-done-title = Alles eingerichtet!
@@ -767,12 +919,18 @@ onboarding-connect_tracker-issue-serial = Ich habe Schwierigkeiten die Tracker z
onboarding-connect_tracker-usb = USB Tracker
onboarding-connect_tracker-connection_status-none = Suche nach Trackern
onboarding-connect_tracker-connection_status-serial_init = Verbindung zum seriellen Gerät wird hergestellt
onboarding-connect_tracker-connection_status-obtaining_mac_address = Ermittle die MAC-Adresse des Trackers
onboarding-connect_tracker-connection_status-provisioning = Sende WLAN-Zugangsdaten
onboarding-connect_tracker-connection_status-connecting = Sende WLAN-Zugangsdaten
onboarding-connect_tracker-connection_status-looking_for_server = Suche nach Server
onboarding-connect_tracker-connection_status-connection_error = Es kann keine WLAN-Verbindung hergestellt werden
onboarding-connect_tracker-connection_status-could_not_find_server = Server konnte nicht gefunden werden
onboarding-connect_tracker-connection_status-done = Verbindung zum Server hergestellt.
onboarding-connect_tracker-connection_status-no_serial_log = Konnte keine Logs vom Tracker abrufen
onboarding-connect_tracker-connection_status-no_serial_device_found = Konnte keinen Tracker über USB finden
onboarding-connect_serial-error-modal-no_serial_log = Ist der Tracker eingeschaltet?
onboarding-connect_serial-error-modal-no_serial_log-desc = Stellen Sie sicher, dass der Tracker eingeschaltet und mit Ihrem Computer verbunden ist.
onboarding-connect_serial-error-modal-no_serial_device_found = Keine Tracker erkannt
# $amount (Number) - Amount of trackers connected (this is a number, but you can use CLDR plural rules for your language)
# More info on https://www.unicode.org/cldr/cldr-aux/charts/22/supplemental/language_plural_rules.html
# English in this case only has 2 plural rules, which are "one" and "other",
@@ -780,17 +938,16 @@ onboarding-connect_tracker-connection_status-done = Verbindung zum Server herges
# if $amount is 0 then we say "No trackers connected"
onboarding-connect_tracker-connected_trackers =
{ $amount ->
[0] Kein Tracker
[one] 1 Tracker
*[other] { $amount } Tracker
} verbunden
[0] Kein Tracker verbunden
[one] 1 Tracker verbunden
*[other] { $amount } Tracker verbunden
}
onboarding-connect_tracker-next = Ich habe alle meine Tracker verbunden.
## Tracker calibration tutorial
onboarding-calibration_tutorial = IMU-Kalibrierungs-Tutorial
onboarding-calibration_tutorial-subtitle = Dies wird dazu beitragen, das Driften der Tracker zu reduzieren!
onboarding-calibration_tutorial-description = Jedes Mal, wenn Sie Ihre Tracker einschalten, müssen diese für einen Moment auf einer ebenen Oberfläche ruhen, um sie zu kalibrieren. Lassen Sie uns dies nun tun, indem Sie auf die Schaltfläche "Kalibrieren" klicken. <b>Verschieben Sie die Tracker nicht!</b>
onboarding-calibration_tutorial-calibrate = Ich habe meine Tracker auf den Tisch gelegt
onboarding-calibration_tutorial-status-waiting = Wir warten auf Sie
onboarding-calibration_tutorial-status-calibrating = Kalibriere
@@ -817,10 +974,10 @@ onboarding-assign_trackers-description = Wählen Sie nun aus, welcher Tracker wo
# $assigned (Number) - Trackers that have been assigned a body part
# $trackers (Number) - Trackers connected to the server
onboarding-assign_trackers-assigned =
{ $assigned } von { $trackers ->
[one] 1 Tracker
*[other] { $trackers } Tracker
} zugewiesen
{ $trackers ->
[one] { $assigned } von 1 Tracker zugewiesen
*[other] { $assigned } von { $trackers } Tracker zugewiesen
}
onboarding-assign_trackers-advanced = Erweiterte Zuweisungspositionen anzeigen
onboarding-assign_trackers-next = Ich habe alle Tracker zugewiesen
onboarding-assign_trackers-mirror_view = Ansicht spiegeln
@@ -958,43 +1115,21 @@ onboarding-automatic_mounting-mounting_reset-title = Befestigungs-Reset
onboarding-automatic_mounting-mounting_reset-step-0 = 1. Beugen Sie sich in die "Skifahren"-Pose mit gebeugten Beinen, geneigtem Oberkörper und gebeugten Armen.
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Drücken Sie die Schaltfläche "Befestigungs-Reset" und warten Sie 3 Sekunden, bevor die Drehungen der Tracker gesetzt werden.
onboarding-automatic_mounting-preparation-title = Vorbereitung
onboarding-automatic_mounting-preparation-step-0 = 1. Stehen Sie aufrecht mit Ihren Armen an den Seiten.
onboarding-automatic_mounting-preparation-step-1 = 2. Drücken Sie die Schaltfläche "Reset" und warten Sie 3 Sekunden, bevor die Tracker zurückgesetzt werden.
onboarding-automatic_mounting-put_trackers_on-title = Legen Sie Ihre Tracker an
onboarding-automatic_mounting-put_trackers_on-description = Um die Drehung der Tracker zu kalibrieren, werden die Tracker verwendet, welche Sie gerade zugewiesen haben. Ziehen Sie alle Ihre Tracker an, in der Abbildung rechts können sie sehen um welchen Tracker es sich handelt.
onboarding-automatic_mounting-put_trackers_on-next = Ich habe alle meine Tracker angelegt
onboarding-automatic_mounting-return-home = Fertig
## Tracker proportions method choose
## Tracker manual proportions setupa
onboarding-choose_proportions = Welche Kalibrierungsmethode ist zu verwenden?
# Multiline string
onboarding-choose_proportions-description-v1 =
Wenn die Proportionen Ihres Körpers nicht mit den Gespeicherten übereinstimmen, ist die Präzision des Trackings schlechter. Außerdem können Probleme wie Skaten oder Rutschen auftreten oder, dass die Bewegungen Ihres Avatars nicht gut mit den Bewegungen Ihres Körpers übereinstimmen.
<b>Sie müssen Ihren Körper nur einmal messen!</b> Es sei denn, die Messwerte sind falsch oder Ihr Körper hat sich verändert, dann müssen Sie die Körperproportionen nochmal bestimmen.
onboarding-choose_proportions-auto_proportions = Automatische Proportionen
# Italicized text
onboarding-choose_proportions-auto_proportions-subtitle = Empfohlen
onboarding-choose_proportions-auto_proportions-descriptionv3 =
Dies wird versuchen, Ihre Proportionen mit Hilfe einer Bewegungsaufnahme zu bestimmen, welche von einem Algorithmus verarbeitet wird.
<b>Dazu muss Ihr Headset (HMD) mit SlimeVR verbunden sein und Sie müssen es an haben!</b>
onboarding-choose_proportions-manual_proportions = Manuelle Körperproportionen
# Italicized text
onboarding-choose_proportions-manual_proportions-subtitle = Für kleine Anpassungen
onboarding-choose_proportions-manual_proportions-description = Auf diese Weise können Sie Ihre Proportionen manuell anpassen, indem Sie diese direkt ändern
onboarding-choose_proportions-export = Proportionen exportieren
onboarding-choose_proportions-import = Proportionen importieren
onboarding-choose_proportions-import-success = Importiert
onboarding-choose_proportions-import-failed = Fehlgeschlagen
onboarding-choose_proportions-file_type = Körperproportions-Datei
## Tracker manual proportions setup
onboarding-manual_proportions-back = Gehen Sie zurück zum Reset-Tutorial
onboarding-manual_proportions-title = Manuelle Körperproportionen
onboarding-manual_proportions-precision = Feinanpassung
onboarding-manual_proportions-auto = Automatische Kalibrierung
onboarding-manual_proportions-ratio = Anpassung nach Proportionen
onboarding-manual_proportions-fine_tuning_button = Automatische Feinabstimmung der Proportionen
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Bitte schließen Sie ein VR-Headset an, um die automatische Feinabstimmung zu nutzen
onboarding-manual_proportions-export = Proportionen exportieren
onboarding-manual_proportions-import = Proportionen importieren
onboarding-manual_proportions-file_type = Körperproportions-Datei
onboarding-manual_proportions-all_proportions = Alle Proportionen
onboarding-manual_proportions-estimated_height = Geschätzte Benutzergröße
## Tracker automatic proportions setup
@@ -1015,19 +1150,31 @@ onboarding-automatic_proportions-requirements-descriptionv2 =
Ihr Headset sendet Positionsdaten an den SlimeVR-Server (das bedeutet allgemein, dass SteamVR läuft und über den SlimeVR-SteamVR Treiber mit SteamVR verbunden ist).
Ihr Tracking funktioniert und stellt Ihre Bewegungen akkurat dar (z.B.: Sie haben einen Reset durchgeführt und Ihre Tracker bewegen sich beim Treten, Bücken, Sitzen, usw. richtig).
onboarding-automatic_proportions-requirements-next = Ich habe die Anforderungen gelesen
onboarding-automatic_proportions-check_height-title = Überprüfen Sie Ihre Körpergröße
onboarding-automatic_proportions-check_height-description = Wir benutzen die Höhe des Headsets (HMD) als eine Schätzung für Ihre tatsächliche Grösse, doch es ist besser dass Sie diese selbst überprüfen!
onboarding-automatic_proportions-check_height-title-v3 = Messen der Höhe Ihres Headsets
onboarding-automatic_proportions-check_height-description-v2 = Die Höhe Ihres Headsets (HMD) sollte etwas geringer sein als Ihre vollständige Körpergröße, da Headsets die Höhe Ihrer Augen messen. Diese Messung wird als Grundlage für Ihre Körperproportionen verwendet.
# All the text is in bold!
onboarding-automatic_proportions-check_height-calculation_warning = Bitte betätigen Sie auf den Knopf während Sie <u>aufrecht</u> stehen, um Ihre Körpergröße zu berechnen. Sie haben 3 Sekunden Zeit, nachdem Sie auf den Knopf gedrückt haben.
onboarding-automatic_proportions-check_height-calculation_warning-v3 = Um Ihre Körpergröße zu messen, beginnen Sie mit der Messung, während Sie <u>aufrecht</u> stehen. Achten Sie darauf, dass Sie Ihre Hände nicht höher als Ihr Headset heben, da dies die Messung beeinflussen könnte!
onboarding-automatic_proportions-check_height-guardian_tip = Wenn Sie ein eigenständiges VR Headset verwenden, stellen Sie sicher, dass Ihr Guardian Begrenzung aktiviert ist und damit Ihre Größe korrekt ist!
onboarding-automatic_proportions-check_height-fetch_height = Ich stehe!
# Context is that the height is unknown
onboarding-automatic_proportions-check_height-unknown = Unbekannt
# Shows an element below it
onboarding-automatic_proportions-check_height-hmd_height1 = Ihre Headset-Höhe ist
onboarding-automatic_proportions-check_height-hmd_height2 = Die Höhe Ihres Headsets beträgt:
onboarding-automatic_proportions-check_height-measure-start = Messung starten
onboarding-automatic_proportions-check_height-measure-stop = Messung stoppen
onboarding-automatic_proportions-check_height-measure-reset = Messung wiederholen
onboarding-automatic_proportions-check_height-next_step = Headset-Höhe verwenden
onboarding-automatic_proportions-check_floor_height-title = Messen der Bodenhöhe (optional)
onboarding-automatic_proportions-check_floor_height-description = In einigen Fällen wird die Bodenhöhe möglicherweise nicht korrekt von Ihrem Headset erfasst, wodurch die Headset-Höhe höher gemessen wird, als sie sein sollte. Sie können die „Höhe“ Ihres Bodens messen, um die Headset-Höhe zu korrigieren.
# All the text is in bold!
onboarding-automatic_proportions-check_floor_height-calculation_warning-v2 = Starten Sie die Messung und legen Sie einen Controller auf den Boden, um dessen Höhe zu messen. Wenn Sie sicher sind, dass die Bodenhöhe korrekt ist, können Sie diesen Schritt überspringen.
# Shows an element below it
onboarding-automatic_proportions-check_height-height1 = Ihre tatsächliche Körpergröße ist
onboarding-automatic_proportions-check_height-next_step = Werte sind korrekt
onboarding-automatic_proportions-check_floor_height-floor_height = Die Bodenhöhe beträgt:
onboarding-automatic_proportions-check_floor_height-full_height = Die geschätzte Körpergröße ist:
onboarding-automatic_proportions-check_floor_height-measure-start = Messung starten
onboarding-automatic_proportions-check_floor_height-measure-stop = Messung stoppen
onboarding-automatic_proportions-check_floor_height-measure-reset = Messung wiederholen
onboarding-automatic_proportions-check_floor_height-skip_step = Schritt überspringen und speichern
onboarding-automatic_proportions-check_floor_height-next_step = Bodenhöhe verwenden und speichern
onboarding-automatic_proportions-start_recording-title = Bereiten Sie sich auf ein paar Bewegungen vor
onboarding-automatic_proportions-start_recording-description = Wir werden nun einige bestimmte Posen und Bewegungen aufnehmen. Diese werden im nächsten Schritt angezeigt. Sei bereit damit zu beginnen, wenn du auf den Knopf drückst!
onboarding-automatic_proportions-start_recording-next = Aufnahme starten
@@ -1062,10 +1209,42 @@ onboarding-automatic_proportions-error_modal-v2 =
Dies ist wahrscheinlich ein Problem mit der Tracker-Ausrichtung. Vergewissern Sie sich, dass Ihre Tracker ordnungsgemäß funktioniert, bevor Sie es erneut versuchen.
Bitte <docs>überprüfen Sie die Dokumentation</docs> oder treten Sie unserem <discord>Discord</discord> bei, um Hilfe zu erhalten ^_^
onboarding-automatic_proportions-error_modal-confirm = Verstanden!
onboarding-automatic_proportions-smol_warning =
Ihre konfigurierte Höhe von { $height } ist kleiner als die minimale akzeptierte Höhe von { $minHeight }.
<b>Bitte wiederholen Sie die Messungen und stellen Sie sicher, dass sie korrekt sind.</b>
onboarding-automatic_proportions-smol_warning-cancel = Zurück
## User height calibration
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-low = Schauen sie nicht auf den Boden
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-high = Schauen sie nicht zu hoch nach oben
onboarding-user_height-calibration-WAITING_FOR_CONTROLLER_PITCH = Achten sie darauf, dass der Controller nach unten zeigt
onboarding-user_height-calibration-DONE = Erfolg!
## Stay Aligned setup
onboarding-stay_aligned-title = Stay Aligned
onboarding-stay_aligned-description = Konfigurieren Sie Stay Aligned, um Ihre Tracker ausgerichtet zu halten.
onboarding-stay_aligned-put_trackers_on-title = Legen Sie Ihre Tracker an
onboarding-stay_aligned-put_trackers_on-description = Um Ihre Ruheposen zu speichern, verwenden wir die Tracker, die Sie gerade zugewiesenen haben. Legen Sie all Ihre Tracker an. In der Abbildung rechts können Sie sehen, welcher welcher ist.
onboarding-stay_aligned-put_trackers_on-trackers_warning = Sie haben derzeit weniger als 5 Tracker verbunden und zugewiesen! Dies ist die Mindestanzahl an Trackern, die erforderlich sind, damit Stay Aligned richtig funktioniert.
onboarding-stay_aligned-put_trackers_on-next = Ich habe alle meine Tracker angelegt
onboarding-stay_aligned-verify_mounting-title = Tracker-Ausrichtung
onboarding-stay_aligned-verify_mounting-redo_mounting = Tracker-Ausrichtungskalibrierung wiederholen
onboarding-stay_aligned-preparation-title = Vorbereitung
onboarding-stay_aligned-preparation-tip = Achten Sie darauf, aufrecht zu stehen. Schauen Sie nach vorne und lassen Sie die Arme an den Seiten hängen.
onboarding-stay_aligned-relaxed_poses-standing-step-0 = 1. Nehmen Sie eine bequeme Haltung ein. Entspannen Sie sich!
onboarding-stay_aligned-relaxed_poses-standing-step-1-v2 = 2. Drücken Sie die Taste „Pose speichern“.
onboarding-stay_aligned-relaxed_poses-skip_step = Überspringen
onboarding-stay_aligned-previous_step = Zurück
onboarding-stay_aligned-next_step = Weiter
onboarding-stay_aligned-restart = Neu starten
onboarding-stay_aligned-done = Fertig
## Home
home-no_trackers = Keine Tracker erkannt oder zugewiesen
home-settings-close = Schließen
## Trackers Still On notification
@@ -1087,6 +1266,108 @@ status_system-StatusSteamVRDisconnected =
status_system-StatusTrackerError = Der Tracker "{ $trackerName }" weist einen Fehler auf.
status_system-StatusUnassignedHMD = Das VR-Headset sollte als Kopf-Tracker zugewiesen sein.
## Firmware tool globals
firmware_tool-next_step = Nächster Schritt
firmware_tool-previous_step = Vorheriger Schritt
firmware_tool-ok = Sieht gut aus
firmware_tool-retry = Erneut versuchen
firmware_tool-loading = Lade...
## Firmware tool Steps
firmware_tool = DIY Firmware-Tool
firmware_tool-description = Erlaubt ihnen das Konfigurieren und Flashen von DIY Trackern
firmware_tool-not_available = Das Firmware Tool ist im Moment nicht verfügbar. Versuche sie später erneut!
firmware_tool-not_compatible = Das Firmware Tool ist nicht mit dieser Version des Servers kompatibel. Bitte den Server aktualisieren!
firmware_tool-select_source-board_type = Boardtyp
firmware_tool-select_source-firmware = Firmware-Quelle
firmware_tool-select_source-version = Firmware-Version
firmware_tool-select_source-official = Offiziell
firmware_tool-select_source-dev = Dev
firmware_tool-board_defaults = Konfigurieren Sie Ihr Board
firmware_tool-board_defaults-add = Hinzufügen
firmware_tool-board_defaults-reset = Auf Standard zurücksetzen
firmware_tool-board_defaults-error-required = Erforderliches Feld
firmware_tool-board_defaults-error-format = Ungültiges Format
firmware_tool-board_defaults-error-format-number = Keine Zahl
firmware_tool-flash_method_step = Flash-Methode
firmware_tool-flash_method_step-description = Bitte wählen Sie die Flash-Methode aus, die Sie verwenden möchten.
firmware_tool-flash_method_step-ota-v2 =
.label = WLAN
.description = Verwenden Sie die Over-the-Air-Methode. Ihr Tracker wird seine Firmware über WLAN aktualisieren. Funktioniert nur bei Trackern, die bereits eingerichtet wurden.
firmware_tool-flash_method_step-ota-info =
Wir nutzen Ihre WLAN-Zugangsdaten, um den Tracker zu flashen und zu bestätigen, dass alles korrekt funktioniert hat.
<b>Wir speichern Ihre WLAN-Zugangsdaten nicht!</b>
firmware_tool-flash_method_step-serial-v2 =
.label = USB
.description = Verwenden Sie ein USB-Kabel, um Ihren Tracker zu aktualisieren.
firmware_tool-flashbtn_step = Drücken Sie den Boot-Button
firmware_tool-flashbtn_step-description = Bevor Sie mit dem nächsten Schritt fortfahren, gibt es ein paar Dinge, die Sie erledigen müssen.
firmware_tool-flashbtn_step-board_SLIMEVR = Schalten Sie den Tracker aus, entfernen Sie das Gehäuse (falls vorhanden), verbinden Sie ein USB-Kabel mit diesem Computer und führen Sie dann einen der folgenden Schritte entsprechend Ihrer SlimeVR-Board-Revision aus:
firmware_tool-flashbtn_step-board_OTHER =
Bevor Sie den Tracker flashen, müssen Sie ihn wahrscheinlich in den Bootloader-Modus versetzen.
In den meisten Fällen bedeutet das, dass Sie die Boot-Taste auf dem Board drücken müssen, bevor der Flash-Vorgang beginnt.
Wenn der Flash-Vorgang zu Beginn aufgrund eines Timeouts fehlschlägt, bedeutet das wahrscheinlich, dass der Tracker nicht im Bootloader-Modus war.
Bitte beziehen Sie sich auf die Flash-Anweisungen Ihres Boards, um zu erfahren, wie Sie den Bootloader-Modus aktivieren.
firmware_tool-flash_method_ota-title = Flashen über WLAN
firmware_tool-flash_method_ota-devices = Erkannte OTA-Geräte:
firmware_tool-flash_method_ota-no_devices = Es sind keine Boards vorhanden, die über OTA aktualisiert werden können. Stellen Sie sicher, dass Sie den richtigen Board-Typ ausgewählt haben.
firmware_tool-flash_method_serial-title = Über USB flashen
firmware_tool-flash_method_serial-wifi = WLAN-Zugangsdaten:
firmware_tool-flash_method_serial-devices-label = Erkannte serielle Geräte:
firmware_tool-flash_method_serial-devices-placeholder = Wählen Sie ein serielles Gerät aus
firmware_tool-flash_method_serial-no_devices = Es wurden keine kompatiblen seriellen Geräte erkannt. Stellen Sie sicher, dass der Tracker angeschlossen ist.
firmware_tool-build_step = Building
firmware_tool-build_step-description = Die Firmware wird erstellt, bitte warten.
firmware_tool-flashing_step = Flashen
firmware_tool-flashing_step-description = Ihre Tracker werden geflasht, bitte folgen Sie den Anweisungen auf dem Bildschirm.
firmware_tool-flashing_step-warning-v2 = Trennen oder schalten Sie den Tracker während des Upload-Vorgangs nicht aus, es sei denn, Sie werden dazu aufgefordert, da dies den Tracker unbrauchbar machen kann.
firmware_tool-flashing_step-flash_more = Weitere Tracker flashen
firmware_tool-flashing_step-exit = Schließen
## firmware tool build status
firmware_tool-build-QUEUED = Warte darauf, zu bauen....
firmware_tool-build-CREATING_BUILD_FOLDER = Erstelle den Build-Ordner
firmware_tool-build-DOWNLOADING_SOURCE = Lade den Quellcode herunter
firmware_tool-build-EXTRACTING_SOURCE = Entpacken des Quellcode
firmware_tool-build-BUILDING = Erstellen der Firmware
firmware_tool-build-SAVING = Speichern des Builds
firmware_tool-build-DONE = Erstellen abgeschlossen
firmware_tool-build-ERROR = Die Firmware konnte nicht erstellt werden
## Firmware update status
firmware_update-status-DOWNLOADING = Lade die Firmware herunter
firmware_update-status-NEED_MANUAL_REBOOT-v2 = Bitte schalten Sie Ihren Tracker aus und wieder ein.
firmware_update-status-AUTHENTICATING = Authentifizierung mit dem Mikrokontroller
firmware_update-status-UPLOADING = Lade die Firmware hoch
firmware_update-status-SYNCING_WITH_MCU = Synchronisieren mit dem Mikrokontroller
firmware_update-status-REBOOTING = Wende das Update an
firmware_update-status-PROVISIONING = WLAN-Zugangsdaten werden gesendet
firmware_update-status-DONE = Update abgeschlossen!
firmware_update-status-ERROR_DEVICE_NOT_FOUND = Gerät konnte nicht gefunden werden
firmware_update-status-ERROR_TIMEOUT = Während des Updates ist eine Zeitüberschreitung aufgetreten
firmware_update-status-ERROR_DOWNLOAD_FAILED = Die Firmware konnte nicht heruntergeladen werden
firmware_update-status-ERROR_AUTHENTICATION_FAILED = Authentifizierung mit dem Mikrokontroller fehlgeschlagen
firmware_update-status-ERROR_UPLOAD_FAILED = Die Firmware konnte nicht hochgeladen werden
firmware_update-status-ERROR_PROVISIONING_FAILED = Die WLAN-Zugangsdaten konnten nicht festgelegt werden
firmware_update-status-ERROR_UNSUPPORTED_METHOD = Die Update-Methode wird nicht unterstützt
firmware_update-status-ERROR_UNKNOWN = Unbekannter Fehler
## Dedicated Firmware Update Page
firmware_update-title = Firmware-Update
firmware_update-devices = Verfügbare Geräte
firmware_update-devices-description = Bitte wählen Sie die Tracker aus, die Sie auf die neueste Version der SlimeVR-Firmware aktualisieren möchten
firmware_update-no_devices = Bitte stellen Sie sicher, dass die Tracker, die Sie aktualisieren möchten, eingeschaltet und mit dem WLAN verbunden sind!
firmware_update-changelog-title = Aktualisieren auf { $version }
firmware_update-looking_for_devices = Suche nach Geräten zum Aktualisieren...
firmware_update-retry = Erneut versuchen
firmware_update-update = Aktualisiere ausgewählte Tracker
firmware_update-exit = Schließen
## Tray Menu
tray_menu-show = Anzeigen
@@ -1114,3 +1395,68 @@ unknown_device-modal-description =
Möchten Sie diesen mit SlimeVR verbinden?
unknown_device-modal-confirm = Sicher!
unknown_device-modal-forget = Ignorieren
# VRChat config warnings
vrc_config-page-title = VRChat Konfigurations-Warnungen
vrc_config-page-desc = Diese Seite zeigt den Zustand deiner VRChat-Einstellungen und zeigt, welche Einstellungen mit SlimeVR inkompatibel sind. Es wird dringend empfohlen, alle hier angezeigten Warnungen zu beheben, um das beste Nutzererlebnis mit SlimeVR zu gewährleisten.
vrc_config-page-help-desc = Schauen Sie sich unsere <a>Dokumentation zu diesem Thema</a> an!
vrc_config-on = An
vrc_config-off = Aus
vrc_config-invalid = Sie haben falsch konfigurierte VRChat-Einstellungen!
vrc_config-show_more = Mehr anzeigen
vrc_config-setting_name = Name der VRChat-Einstellung
vrc_config-recommended_value = Empfohlener Wert
vrc_config-current_value = Aktueller Wert
vrc_config-mute = Warnung stummschalten
vrc_config-mute-btn = Stummschalten
vrc_config-unmute-btn = Stummschaltung aufheben
vrc_config-disable_shoulder_tracking = Schultertracking deaktivieren
vrc_config-user_height = Echte Benutzergröße
vrc_config-spine_mode-UNKNOWN = Unbekannt
vrc_config-spine_mode-LOCK_HEAD = Kopf sperren
vrc_config-spine_mode-LOCK_HIP = Hüfte sperren
vrc_config-tracker_model-UNKNOWN = Unbekannt
vrc_config-tracker_model-AXIS = Achse
vrc_config-tracker_model-SYSTEM = System
vrc_config-avatar_measurement_type-UNKNOWN = Unbekannt
vrc_config-avatar_measurement_type-HEIGHT = Höhe
vrc_config-avatar_measurement_type-ARM_SPAN = Armspannweite
## Error collection consent modal
error_collection_modal-title = Können wir Fehler sammeln?
error_collection_modal-description_v2 =
{ settings-interface-behavior-error_tracking-description_v2 }
Sie können diese Einstellung später im Abschnitt Verhalten auf der Einstellungsseite ändern.
error_collection_modal-confirm = Ich stimme zu
error_collection_modal-cancel = Ich will nicht
## Tracking checklist section
tracking_checklist-settings-close = Schließen
tracking_checklist-status-partial =
{ $count ->
[one] Sie haben 1 Warnung!
*[other] Sie haben { $count } Warnungen!
}
tracking_checklist-MOUNTING_CALIBRATION = Tracker-Ausrichtung durchführen
tracking_checklist-STEAMVR_DISCONNECTED = SteamVR läuft nicht
tracking_checklist-STEAMVR_DISCONNECTED-desc = SteamVR läuft nicht. Nutzen sie es für VR?
tracking_checklist-STEAMVR_DISCONNECTED-open = SteamVR starten
tracking_checklist-TRACKERS_REST_CALIBRATION-desc = Sie haben keine Tracker-Kalibrierung durchgeführt. Bitte lassen Sie Ihre Tracker (gelb markiert) für einige Sekunden auf einer stabilen Oberfläche ruhen.
tracking_checklist-TRACKER_ERROR = Tracker mit Fehlern
tracking_checklist-VRCHAT_SETTINGS = VRChat-Einstellungen konfigurieren
tracking_checklist-VRCHAT_SETTINGS-open = Gehen sie zu den VRChat-Warnungen
tracking_checklist-NETWORK_PROFILE_PUBLIC-open = Kontrollpanel öffnen
tracking_checklist-STAY_ALIGNED_CONFIGURED = Stay Aligned konfigurieren
tracking_checklist-STAY_ALIGNED_CONFIGURED-open = Öffne den Stay Aligned Assistent
tracking_checklist-ignore = Ignorieren
preview-mocap_mode_soon = Mocap-Modus (Bald™)
preview-disable_render = Vorschau deaktivieren
preview-disabled_render = Vorschau deaktiviert
toolbar-mounting_calibration = Tracker-Ausrichtung
toolbar-mounting_calibration-default = Körper
toolbar-mounting_calibration-feet = Füße
toolbar-mounting_calibration-fingers = Finger
toolbar-assigned_trackers = { $count } Tracker zugewiesen
toolbar-unassigned_trackers = { $count } Tracker nicht zugewiesen

View File

@@ -18,6 +18,9 @@ websocket-connection_lost = Η σύνδεση μεταξύ του διακομι
tips-find_tracker = Δεν είστε σίγουροι ποιος ανιχνευτής είναι ποιος; Κουνήστε έναν ανιχνευτή και θα επισημάνει το αντίστοιχο στοιχείο.
tips-do_not_move_heels = Βεβαιωθείτε ότι οι φτέρνες σας δεν κινούνται κατά την εγγραφή!
## Units
## Body parts
body_part-NONE = Μη εκχωρημένο
@@ -41,13 +44,16 @@ body_part-LEFT_UPPER_LEG = Αριστερός μηρός
body_part-LEFT_LOWER_LEG = Αριστερός αστράγαλος
body_part-LEFT_FOOT = Αριστερό πόδι
## BoardType
## Proportions
skeleton_bone-NONE = Τίποτα
skeleton_bone-HEAD = Μετατόπιση κεφαλής
skeleton_bone-NECK = Μήκος λαιμού
skeleton_bone-CHEST = Μήκος στήθους
skeleton_bone-CHEST_OFFSET = Μετατόπιση στήθους
skeleton_bone-CHEST = Μήκος στήθους
skeleton_bone-WAIST = Μήκος μέσης
skeleton_bone-HIP = Μήκος γοφών
skeleton_bone-HIP_OFFSET = Μετατόπιση γοφών
@@ -106,6 +112,9 @@ widget-overlay-is_mirrored_label = Εμφάνιση υπέρθεσης ως κα
widget-drift_compensation-clear = Επαναφορά αντιστάθμισης drift
## Widget: Clear Mounting calibration
## Widget: Developer settings
widget-developer_mode = Λειτουργία προγραμματιστή
@@ -123,6 +132,9 @@ widget-imu_visualizer = Περιστροφή
widget-imu_visualizer-rotation_raw = Ακατέργαστο
widget-imu_visualizer-rotation_preview = Προεπισκόπηση
## Widget: Skeleton Visualizer
## Tracker status
tracker-status-none = Χωρίς κατάσταση
@@ -231,8 +243,6 @@ tracker_selection_menu-LEFT_FOOT = { -tracker_selection-part } αριστερό
settings-general-steamvr = SteamVR
settings-general-steamvr-trackers-waist = Μέση
settings-general-steamvr-trackers-chest = Στήθος
settings-general-steamvr-trackers-feet = Πόδια
settings-general-steamvr-trackers-hands = Χέρια
## Tracker mechanics
@@ -243,7 +253,13 @@ settings-general-steamvr-trackers-hands = Χέρια
## Gesture control settings (tracker tapping)
## Interface settings
## Appearance settings
## Notification settings
## Behavior settings
## Serial settings
@@ -260,6 +276,18 @@ settings-osc-vrchat-network-trackers-feet = Πόδια
## VMC OSC settings
## Common OSC settings
## Advanced settings
## Home Screen
## Tracking Checlist
## Setup/onboarding menu
@@ -272,9 +300,6 @@ settings-osc-vrchat-network-trackers-feet = Πόδια
## Setup start
## Enter VR part of setup
## Setup done
@@ -302,17 +327,53 @@ settings-osc-vrchat-network-trackers-feet = Πόδια
## Tracker automatic mounting setup
## Tracker proportions method choose
## Tracker manual proportions setup
## Tracker manual proportions setupa
## Tracker automatic proportions setup
## User height calibration
## Stay Aligned setup
## Home
## Trackers Still On notification
## Status system
## Firmware tool globals
## Firmware tool Steps
## firmware tool build status
## Firmware update status
## Dedicated Firmware Update Page
## Tray Menu
## First exit modal
## Unknown device modal
## Error collection consent modal
## Tracking checklist section

View File

@@ -9,6 +9,11 @@
websocket-connecting = connyecting to teh sewvew
websocket-connection_lost = oopsie woopsie~ connyection wost to teh sewvew ;m;... uwu am twying to weconnyect owo!
websocket-connection_lost-desc = uh ohs! it look like da swimevr serber cwashed... check ur logs and stuffs and maybe westawt da pwogwam.
websocket-timedout = could nawt connec to da serwer
websocket-timedout-desc = it look like da swimevr serwer cwashed ow time out, omg!! check da log and westawt da pwogwam.
websocket-error-close = Exit SwimeVR
websocket-error-logs = open da logs fowder
## Update notification
@@ -26,6 +31,9 @@ tips-tap_setup = u can swowly tap youw twackew 2 times to choose it insted of se
tips-turn_on_tracker = erm.. are u using offishal SlaiemVR twackews??! rember to <b><em>tuwn on yuor twackew</em></b> aftwew coneccting it to teh PC!
tips-failed_webgl = oh nooooo :( faiwled to initiawizwe WebGL...
## Units
## Body parts
body_part-NONE = unassyigned
@@ -49,6 +57,58 @@ body_part-LEFT_HAND = weft pawb
body_part-LEFT_UPPER_LEG = weft uppew weg
body_part-LEFT_LOWER_LEG = weft wowwe weg
body_part-LEFT_FOOT = weft pawb
body_part-LEFT_THUMB_METACARPAL = weft thum medacarpool
body_part-LEFT_THUMB_PROXIMAL = weft thum pwoximal
body_part-LEFT_THUMB_DISTAL = weft thum dital
body_part-LEFT_INDEX_PROXIMAL = weft index pwoximal
body_part-LEFT_INDEX_INTERMEDIATE = weft index indamedeate
body_part-LEFT_INDEX_DISTAL = weft index dissal
body_part-LEFT_MIDDLE_PROXIMAL = weft middol pwoximal
body_part-LEFT_MIDDLE_INTERMEDIATE = weft middol intermediation
body_part-LEFT_MIDDLE_DISTAL = weft middol dittol
body_part-LEFT_RING_PROXIMAL = weft wing woxiwal
body_part-LEFT_RING_INTERMEDIATE = weft wing wintamediate
body_part-LEFT_RING_DISTAL = weft wing distol
body_part-LEFT_LITTLE_PROXIMAL = weft widdle woximol
body_part-LEFT_LITTLE_INTERMEDIATE = weft widdle imtermedate
body_part-LEFT_LITTLE_DISTAL = weft widdle dital
body_part-RIGHT_THUMB_METACARPAL = wight thum medacarpool
body_part-RIGHT_THUMB_PROXIMAL = wight thum thoximal
body_part-RIGHT_THUMB_DISTAL = wight thum distol
body_part-RIGHT_INDEX_PROXIMAL = wight index poximal
body_part-RIGHT_INDEX_INTERMEDIATE = wight index imtertediate
body_part-RIGHT_INDEX_DISTAL = wight index distal
body_part-RIGHT_MIDDLE_PROXIMAL = wight middol pwoximal
body_part-RIGHT_MIDDLE_INTERMEDIATE = wight middol intertediate
body_part-RIGHT_MIDDLE_DISTAL = wight middol distol
body_part-RIGHT_RING_PROXIMAL = wight wing roximal
body_part-RIGHT_RING_INTERMEDIATE = wight wing imterdemiate
body_part-RIGHT_RING_DISTAL = wight wing distol
body_part-RIGHT_LITTLE_PROXIMAL = wight widdle pwoximal
body_part-RIGHT_LITTLE_INTERMEDIATE = wight widdle imternediate
body_part-RIGHT_LITTLE_DISTAL = wight widdle distol
## BoardType
board_type-UNKNOWN = unnown
board_type-NODEMCU = nowdemcu
board_type-CUSTOM = cusom boawd
board_type-WROOM32 = wroom32
board_type-WEMOSD1MINI = wemo d1 meenee
board_type-TTGO_TBASE = ttgo tbase
board_type-ESP01 = esp01
board_type-SLIMEVR = swimevr
board_type-LOLIN_C3_MINI = lol c3 meenee
board_type-BEETLE32C3 = 🪲 (beetle) esp32-c3
board_type-ESP32C3DEVKITM1 = expressive esp32-c3 devkitm1
board_type-OWOTRACK = owo!!Track
board_type-WRANGLER = wrangle joycons (yeehaw)
board_type-MOCOPI = soni mocopi
board_type-WEMOSWROOM02 = memos vroom-02 d1 meenee
board_type-XIAO_ESP32C3 = seeeed studio xiao esp32c3
board_type-HARITORA = hawitowa
board_type-ESP32C6DEVKITC1 = espresso esp32-c6 devkitc1
board_type-GLOVE_IMU_SLIMEVR_DEV = swimevr dev imu gwove
## Proportions
@@ -81,6 +141,14 @@ skeleton_bone-ELBOW_OFFSET = ewbow awfsewt
## Tracker reset buttons
reset-reset_all = weset aww pwopowtions~
reset-reset_all_warning-v2 =
<b>warnings!!!</b> ur pwopawshuns will be weset to default scaled to ur configuwed heit.
are u SHURE you want to do dis?!? >~>
reset-reset_all_warning-reset = weset pwopawshuns
reset-reset_all_warning-cancel = cancew :o
reset-reset_all_warning_default-v2 =
<b>wawnin!!</b> ur heit has nawt been configure, ur pwopawshuns will be weset to defawts wiff da defawt heit.
are u REALLY sure you want to do this?! <~<
reset-full = fuww weset~
reset-mounting = weset meownting
reset-yaw = yaw weset
@@ -124,7 +192,7 @@ widget-overlay-is_mirrored_label = dispway owovelay as miwwow
widget-drift_compensation-clear = cwear dwift compensation
## Widget: Clear Reset Mounting
## Widget: Clear Mounting calibration
widget-clear_mounting = cweaw weset meownting
@@ -142,9 +210,12 @@ widget-developer_mode-more_info = mowe info
## Widget: IMU Visualizer
widget-imu_visualizer = wotation
widget-imu_visualizer-preview = pwewiew
widget-imu_visualizer-hide = hoide
widget-imu_visualizer-rotation_raw = waw
widget-imu_visualizer-rotation_preview = pwewiew
widget-imu_visualizer-rotation_hide = hoide
widget-imu_visualizer-acceleration = accewewation
widget-imu_visualizer-position = pawsition
## Widget: Skeleton Visualizer
@@ -196,9 +267,17 @@ tracker-infos-url = twackaw uawl
tracker-infos-version = fiwmwawe vewsion
tracker-infos-hardware_rev = hawdwawe revision
tracker-infos-hardware_identifier = hawdwawe id
tracker-infos-data_support = deyta suppowt
tracker-infos-imu = imu sensow
tracker-infos-board_type = mane bored
tracker-infos-network_version = pwotocol vewsiowon
tracker-infos-magnetometer = magentometer
tracker-infos-magnetometer-status-v1 =
{ $status ->
[DISABLED] disabled.
[ENABLED] enabled!!
*[NOT_SUPPORTED] nawt suppowted...
}
## Tracker settings
@@ -213,14 +292,19 @@ tracker-settings-mounting_section-edit = edit meownting
tracker-settings-drift_compensation_section = awwow dwift compensation
tracker-settings-drift_compensation_section-description = shouwd this twackew compensate fow its dwift when dwift compensation is enabwed?
tracker-settings-drift_compensation_section-edit = awwow dwift compensation
tracker-settings-use_mag = awwow magentometer on dis twackew
tracker-settings-use_mag-label = awwow magnetomemer
# The .<name> means it's an attribute and it's related to the top key.
# In this case that is the settings for the assignment section.
tracker-settings-name_section = twackaw name
tracker-settings-name_section-description = owo whats dis?
tracker-settings-name_section-placeholder = ewimewl's weft pawb
tracker-settings-name_section-label = twackaw name
tracker-settings-forget = *forgors the tracker*
tracker-settings-forget-description = remooves teh twackew fwom da SwimeVR sewvew n pwevent it frum conecting to it til fhe sewvew iz westawtied. the cowonfigyuwatsin of da twackew woant b wost.
tracker-settings-forget-label = *forgors the tracker*
tracker-settings-update-up_to_date = up to dayte!! ^w^
tracker-settings-update = uwupdate meow!
## Tracker part card info
@@ -296,6 +380,7 @@ settings-sidebar-utils = utiwities
settings-sidebar-serial = sewiaw cownsaw
settings-sidebar-appearance = appeawance
settings-sidebar-notifications = notificashuns
settings-sidebar-behavior = behavur
## SteamVR settings
@@ -350,6 +435,7 @@ settings-general-tracker_mechanics-drift_compensation-description =
compensates imu yaw dwift by appwying an invewse wotation.
change amownt of compensation and how many wesets awe taken into accouwnt.
settings-general-tracker_mechanics-drift_compensation-enabled-label = dwift compensation
settings-general-tracker_mechanics-drift_compensation_warning-cancel = cancew :o
settings-general-tracker_mechanics-drift_compensation-amount-label = compensation amownt
settings-general-tracker_mechanics-drift_compensation-max_resets-label = nuwmbew of wesets uwsed
settings-general-tracker_mechanics-save_mounting_reset = saiv awtomatic meownting weset calibwaytion
@@ -357,6 +443,10 @@ settings-general-tracker_mechanics-save_mounting_reset-description =
saves the auwtoemyatic meownting weset cawybwationz for da twackews betwean westawts. useful
wen weawing a sUwUit whewe twackews dont move between sesshuns. <b>nawt wecomended for noarmal UwUsews!</b>
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = save meownting weset
settings-general-tracker_mechanics-use_mag_on_all_trackers-description =
uses magnemometer on da twackews dat have a compatubble firmwear fow it, weduces dwift in stable magnettic enviwoments.
can be disable per twackew in da twackew setting! <b>pwease dont shut down any twackew when u toggle dis!</b>
settings-general-tracker_mechanics-use_mag_on_all_trackers-label = use mangenmometer on twackews
## FK/Tracking settings
@@ -378,8 +468,11 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = fwoow-cwip can r
settings-general-fk_settings-leg_tweak-toe_snap-description = toe-snap atempts to gwess da wotation of ur fweet if fweet tracker thingys arewnt in use
settings-general-fk_settings-leg_tweak-foot_plant-description = pawb-pwant wotates youw feet to be pawawwew to the gwound wen in cawntact.
settings-general-fk_settings-leg_fk = leg twacking
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Enyabwe pawb Meownting Weset by tiptoeing.
settings-general-fk_settings-leg_fk-reset_mounting_feet = Pawb Meownting Weset
settings-general-fk_settings-enforce_joint_constraints = skewetal wimits
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = enfourse constwaints
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints-description = pwevents da joins fwom wotating past da wimit
settings-general-fk_settings-enforce_joint_constraints-correct_constraints = cowwect wit constwaints
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = cowwect joint wotashuns when dey push past their wimit
settings-general-fk_settings-arm_fk = awm twacking
settings-general-fk_settings-arm_fk-description = chawnge teh way teh awms awe twacked.
settings-general-fk_settings-arm_fk-force_arms = fowce awms fwom hmd
@@ -411,9 +504,6 @@ settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = awewa
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = Avewage the knees' yaw and woww with the ankews'
settings-general-fk_settings-self_localization-title = mocap mowd
settings-general-fk_settings-self_localization-description = mocap mowd awwows da skeweton to wuffly twack is own posishun without a hedset or other twackews. note dat dis wequiwes feet and hed twackews to wowk and is stiwll expewimentaw.
settings-general-fk_settings-vive_emulation-title = vive emuwation
settings-general-fk_settings-vive_emulation-description = emuwate the waist twackew pwobwems that vive twackews hawe. tis is a jowke and mawkes twacking wowse eheh ^^
settings-general-fk_settings-vive_emulation-label = enabwe vive emuwation
## Gesture control settings (tracker tapping)
@@ -454,6 +544,9 @@ settings-general-interface-dev_mode = devwowwewow mode
settings-general-interface-dev_mode-description = this mode can be wowseffuw if you need in-dipth data owow to intewact with cownnected twackaws on a wowowe wowadvanced wowwevew
settings-general-interface-dev_mode-label = devwowwewow mode
settings-general-interface-theme = cowor theem
settings-general-interface-show-navbar-onboarding = show "{ navbar-onboarding }" on da nawigation bar
settings-general-interface-show-navbar-onboarding-description = dis change if da "{ navbar-onboarding }" button show on da nawigashun bar!
settings-general-interface-show-navbar-onboarding-label = show "{ navbar-onboarding }"
settings-general-interface-lang = sewect wanguage
settings-general-interface-lang-description = change the defawwt wanguage yuw want to use
settings-general-interface-lang-placeholder = sewect teh wanguage to use
@@ -465,6 +558,9 @@ settings-interface-appearance-font-os_font = os fawnt
settings-interface-appearance-font-slime_font = defawt fawnt
settings-interface-appearance-font_size = bass fawn scawing
settings-interface-appearance-font_size-description = dis affects da fawnt size of da whol intewface except dis setting panew.
settings-interface-appearance-decorations = use da sysem native decowashuns
settings-interface-appearance-decorations-description = dis wiw not wendew da top bar of da interfase an will use da opewating syssem's insted.
settings-interface-appearance-decorations-label = use native decowashuns
## Notification settings
@@ -479,6 +575,10 @@ settings-general-interface-feedback_sound-volume = feedback sownd volyume
settings-general-interface-connected_trackers_warning = Connected twackews wawning
settings-general-interface-connected_trackers_warning-description = This option wiww show a pop-up evewy time you twy exiting SwimeVR whiwe having one ow mowe connected twackews. It weminds you to tuwn off youw twackews when you awe done to pwesewve battewy wife.
settings-general-interface-connected_trackers_warning-label = Connected twackews wawning on exit
## Behavior settings
settings-interface-behavior = behavur
settings-general-interface-use_tray = minimaize to systewm tway
settings-general-interface-use_tray-description = wets u cwose the wimdOwOw wifhout cwosing da SwimeVR Sewvew so uou can keep using it withowt da GUI bohtewing u.
settings-general-interface-use_tray-label = minimaize to systewm tway
@@ -509,7 +609,6 @@ settings-serial-factory_reset-warning =
which means wi-fi and cawibwation settings <b>wiww aww be wost!</b>
settings-serial-factory_reset-warning-ok = i know what I'm doing :3
settings-serial-factory_reset-warning-cancel = cancew
settings-serial-get_infos = get infows
settings-serial-serial_select = sewect a shewyaw pawt
settings-serial-auto_dropdown_item = awto
settings-serial-get_wifi_scan = get wifi scan uwu
@@ -588,12 +687,6 @@ settings-osc-vmc-network-address-description = choose which addwess to send out
settings-osc-vmc-network-address-placeholder = IPV4 addwess
settings-osc-vmc-vrm = VRM modew
settings-osc-vmc-vrm-description = woad a VRM modew to awwow head anchow and enabwe a highew compatibiwity with othew appwications
settings-osc-vmc-vrm-model_unloaded = no modew woaded
settings-osc-vmc-vrm-model_loaded =
{ $titled ->
[true] modew woaded: { $name }
*[other] untitwed modew woaded
}
settings-osc-vmc-vrm-file_select = dwag & dwop a modew to use OwO, ow <u>bwowse</u>
settings-osc-vmc-anchor_hip = anchow at hips
settings-osc-vmc-anchor_hip-description = anchow the twacking at the hips, usefuw fow seated vtubing
@@ -602,6 +695,38 @@ settings-osc-vmc-mirror_tracking = miwwow twacking
settings-osc-vmc-mirror_tracking-description = miwwow da twacking howizawntawwy.
settings-osc-vmc-mirror_tracking-label = miwwow twacking
## Common OSC settings
## Advanced settings
settings-utils-advanced-reset_warning =
{ $type ->
[gui]
<b>wawning!!</b> this wiww weset youw gui settings to defawts :(
aw you supew dupew sure?
[server]
<b>wawning!!</b> this wiww weset youw twacking settings to defawts :(
aw you supew dupew sure?
*[all]
<b>wawning!!</b> this wiww make aww youw settings go bye-bye!!
aw you supew dupew sure??
}
settings-utils-advanced-reset_warning-reset = weset setings
settings-utils-advanced-reset_warning-cancel = cancew :o
settings-utils-advanced-open_data-v1 = config fowdew
settings-utils-advanced-open_data-description-v1 = open swimevr's config fowdew in da fiwe explowew, containing teh configuwation
settings-utils-advanced-open_data-label = open fowdew
settings-utils-advanced-open_logs = logs fowdew
settings-utils-advanced-open_logs-description = open swimevr's logs fowdew in da fiwe explowew, containing teh logs of da app
settings-utils-advanced-open_logs-label = open fowdew
## Home Screen
## Tracking Checlist
## Setup/onboarding menu
onboarding-skip = skipy setup
@@ -617,16 +742,12 @@ onboarding-setup_warning-cancel = continu setup
## Wi-Fi setup
onboarding-wifi_creds-back = gaww bawwk to intwoduction
onboarding-wifi_creds = input wi-fi cwedentials
# This cares about multilines
onboarding-wifi_creds-description =
teh twawckaws will use these cwedentials to connect wirelessly
pwease use teh cwedentials that yaww awe cwowently cownyected to
onboarding-wifi_creds-skip = skipy wi-fi settiwyngs
onboarding-wifi_creds-submit = suwbmyt!
onboarding-wifi_creds-ssid =
.label = wi-fi nawme
.placeholder = entew wi-fi nawme
onboarding-wifi_creds-ssid-required = wifi name is wequiwed!!
onboarding-wifi_creds-password =
.label = passwowod
.placeholder = entew passwowod
@@ -661,13 +782,6 @@ onboarding-reset_tutorial-2 =
onboarding-home = wewcome to SwimeVR
onboarding-home-start = wets get set up!
## Enter VR part of setup
onboarding-enter_vr-back = gaww bawwk to twacker assignyment
onboarding-enter_vr-title = time to entew vr!
onboarding-enter_vr-description = put on awe yoaww twackaws and then entew vr!
onboarding-enter_vr-ready = iym weady
## Setup done
onboarding-done-title = yaww awe awe set!
@@ -684,6 +798,7 @@ onboarding-connect_tracker-issue-serial = i'm having twouble connecting!
onboarding-connect_tracker-usb = usb twackew
onboarding-connect_tracker-connection_status-none = wooking fow twackaws
onboarding-connect_tracker-connection_status-serial_init = conectin too da sewiaw dewise
onboarding-connect_tracker-connection_status-obtaining_mac_address = obtainin teh twacker mac addwess
onboarding-connect_tracker-connection_status-provisioning = sending wi-fi cwedentials
onboarding-connect_tracker-connection_status-connecting = sending wi-fi cwedentials
onboarding-connect_tracker-connection_status-looking_for_server = wookin fow da sewvew
@@ -697,22 +812,22 @@ onboarding-connect_tracker-connection_status-done = cownyected to teh sewvew
# if $amount is 0 then we say "No trackers connected"
onboarding-connect_tracker-connected_trackers =
{ $amount ->
[0] no twackers
[one] 1 twackers
*[other] { $amount } twackers
} cownyected
[0] no twackers cownyected
[one] 1 twackers cownyected
*[other] { $amount } twackers cownyected
}
onboarding-connect_tracker-next = i cownyected awe my twackaws
## Tracker calibration tutorial
onboarding-calibration_tutorial = imu cawibwashun tutowiawl
onboarding-calibration_tutorial-subtitle = dis will hewp weduce twackew dwifting!!!
onboarding-calibration_tutorial-description = evewy time you tuwn on youw twackews, dey need to west fow a moment on a fwat suwface to cawibwate. wet's do da same ting by booping da "{ onboarding-calibration_tutorial-calibrate }" buddon, <b>do nyot move dem!!!</b>
onboarding-calibration_tutorial-calibrate = i pwace da twackew on da tabwe
onboarding-calibration_tutorial-status-waiting = waiiiting fur u
onboarding-calibration_tutorial-status-calibrating = cawibwating
onboarding-calibration_tutorial-status-success = congwats~!!
onboarding-calibration_tutorial-status-error = da twackew was move ;w;
onboarding-calibration_tutorial-skip = skip tutowiaw
## Tracker assignment tutorial
@@ -733,10 +848,10 @@ onboarding-assign_trackers-description = wets choyse which twackaw goes whewe. c
# $assigned (Number) - Trackers that have been assigned a body part
# $trackers (Number) - Trackers connected to the server
onboarding-assign_trackers-assigned =
{ $assigned } of { $trackers ->
[one] 1 twackaws
*[other] { $trackers } twackaws
} assigned
{ $trackers ->
[one] { $assigned } of 1 twackaws assigned
*[other] { $assigned } of { $trackers } twackaws assigned
}
onboarding-assign_trackers-advanced = show advanced assign wocations
onboarding-assign_trackers-next = i assigned awe the twackaws
onboarding-assign_trackers-mirror_view = miwwow vyew
@@ -836,11 +951,11 @@ onboarding-choose_mounting = wut meownting cawibwation mefod to use?
# Multiline text
onboarding-choose_mounting-description = meownting owientation correct fow da pwacement of twackews on u body.
onboarding-choose_mounting-auto_mounting = awtomawic meownting
# Italized text
# Italicized text
onboarding-choose_mounting-auto_mounting-label-v2 = wecommended
onboarding-choose_mounting-auto_mounting-description = dis will automaticawwy detec da meownting diwecshuns fow aww of ya twackews fwom 2 poses
onboarding-choose_mounting-manual_mounting = manyul meownting
# Italized text
# Italicized text
onboarding-choose_mounting-manual_mounting-label-v2 = might nawt b pwecise enuff ;w;
onboarding-choose_mounting-manual_mounting-description = dis will let u chose da meownting diwecshun manuwawwy fow eech twackew
# Multiline text
@@ -874,44 +989,15 @@ onboarding-automatic_mounting-mounting_reset-title = meownting weset
onboarding-automatic_mounting-mounting_reset-step-0 = 1. squawt in a "skiing" pose with yowo wegs bent, yowo upper body tilted fowwawds, and yowo awems bent.
onboarding-automatic_mounting-mounting_reset-step-1 = 2. pwess the "weset meownting" button and wait fow 3 seconds befowe the twackaws' meownting wowations will weset.
onboarding-automatic_mounting-preparation-title = pwepaiwation
onboarding-automatic_mounting-preparation-step-0 = 1. stand upwight with yowo awems to yowo sides.
onboarding-automatic_mounting-preparation-step-1 = 2. pwess the "fuww weset" button and wait fow 3 seconds befowe the twackaws will weset.
onboarding-automatic_mounting-put_trackers_on-title = put on yowo twackaws
onboarding-automatic_mounting-put_trackers_on-description = to cawibwate meownting wowations, we'we gonna use the twackaws yowo just assigned. put on awe yowo twackaws, yowo can see which awe which in the figuwe to the wowight.
onboarding-automatic_mounting-put_trackers_on-next = i haff awe my twackaws on
## Tracker proportions method choose
## Tracker manual proportions setupa
onboarding-choose_proportions = wut pwopowshun cawibwation mefod to use?
# Multiline string
onboarding-choose_proportions-description-v1 =
bawdy pwopowotions r used to knwo da mehsuwementz of youw bawdy. they'we wequiewed to cawcuwate da twackews' pawsitshons.
wen pwopowotiosn of ur bawdey don match teh ones saeved, yow twacking pwecisiown wiww b wowse and u wiww nowotice tingz wike skayting ow slaiding, ow yor bodiey matching uor avataw wel.
<b>u only need to mewhsuwe your bawdee once!!</b> unwess dey awe rong ow yer boady haz chaenged, you dont need to do them agen. UwU
onboarding-choose_proportions-auto_proportions = awtomatic pwopowtions
# Italized text
onboarding-choose_proportions-auto_proportions-subtitle = wecommended
onboarding-choose_proportions-auto_proportions-descriptionv3 =
This wiww guess youw pwopowtions by wecowding a sampwe of youw movements and passing it thwough an awgowithm.
<b>This wequiwes having youw headset (HMD) connected to SwimeVR and on youw head!</b>
onboarding-choose_proportions-manual_proportions = manuwal pwopowtions
# Italized text
onboarding-choose_proportions-manual_proportions-subtitle = fow smol touchies
onboarding-choose_proportions-manual_proportions-description = dis will let u ajust ur pwopowtions manuwally by modifying dem diwectwy
onboarding-choose_proportions-export = expowt pawpowshuns
onboarding-choose_proportions-import = Impowt pwopowtions
onboarding-choose_proportions-import-success = Impowted
onboarding-choose_proportions-import-failed = Faiwed
onboarding-choose_proportions-file_type = body pawpowshuns file
## Tracker manual proportions setup
onboarding-manual_proportions-back = go bawck to weset tutowiaw
onboarding-manual_proportions-title = manyuaw bodee pwopowtiesions
onboarding-manual_proportions-precision = pwecision adjusty
onboarding-manual_proportions-auto = owtomatic cawybwation
onboarding-manual_proportions-ratio = ajust by watio gwoups
onboarding-manual_proportions-fine_tuning_button = automaticawwy fine tuwune propowtions
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = pwease connect a vr headset to use automatic fine tuwuning
## Tracker automatic proportions setup
@@ -932,21 +1018,33 @@ onboarding-automatic_proportions-requirements-descriptionv2 =
Youw headset is wepowting positionaw data to the SwimeVR sewvew (this genewawwy means having SteamVR wunning and connected to SwimeVR using SwimeVR's SteamVR dwivew).
Youw twacking is wowking and is accuwatewy wepwesenting youw movements (ex. you have pewfowmed a fuww weset and they move the wight diwection when kicking, bending ovew, sitting, etc).
onboarding-automatic_proportions-requirements-next = i have wed da wequiwemens
onboarding-automatic_proportions-check_height-title = check youw height
onboarding-automatic_proportions-check_height-description = we use youw height as a basis of ouw measuwements by using da hmd's height as an appwoximashun of youw actuwaw height, but is better to check if they are right youwsewf!
onboarding-automatic_proportions-check_height-title-v3 = measuwe youw headset heit
onboarding-automatic_proportions-check_height-description-v2 = youw hedset heit shuld be swightwy less than youw fuww heit, becoz hedsets measuwe youw eye heit. dis measuwement wiww be used az a basewine fow youw body pwopowtions.
# All the text is in bold!
onboarding-automatic_proportions-check_height-calculation_warning = pwease pwess da button while standing <u>upwight</u> to cawcuwate youw height. you hav 3 second aftew you pwess da button! >w<
onboarding-automatic_proportions-check_height-calculation_warning-v3 = stawt measuwing whiwe standin <u>upwite</u> to measuwe youw heit. be cawefuw to not waise youw hands highew than youw hedset, becoz dey may affect teh measuwement!
onboarding-automatic_proportions-check_height-guardian_tip =
if u r using a standowone VR hedset, make suwe to have youw gawrdian /
bowndawy tuwned on so ur heit iz cowwect!!
onboarding-automatic_proportions-check_height-fetch_height = am standing!
# Context is that the height is unknown
onboarding-automatic_proportions-check_height-unknown = unnown
# Shows an element below it
onboarding-automatic_proportions-check_height-hmd_height1 = youw hmd heit is
# Shows an element below it
onboarding-automatic_proportions-check_height-height1 = so youw actuaw heit is
onboarding-automatic_proportions-check_height-hmd_height2 = youw hedset heit is:
onboarding-automatic_proportions-check_height-measure-start = stawt measuwing
onboarding-automatic_proportions-check_height-measure-stop = stawp measuwing
onboarding-automatic_proportions-check_height-measure-reset = wetwy measuwing
onboarding-automatic_proportions-check_height-next_step = dey awe fine
onboarding-automatic_proportions-check_floor_height-title = measuwe youw fwoor heit (opshunaw)
onboarding-automatic_proportions-check_floor_height-description = sometimez youw fwoor heit may nawt be set cowwectwy by youw hedset, cawsing da hedset heit 2 be measuwed too high (ono :c). u can measuwe da "heit" of youw fwoor to cowwect youw hedset heit.
# All the text is in bold!
onboarding-automatic_proportions-check_floor_height-calculation_warning-v2 = stawt measuwing and put a contwowwew agens youw fwoor to measuwe its heit. if u r suwe dat youw fwoor heit is cowwect, u can skip dis step.
# Shows an element below it
onboarding-automatic_proportions-check_floor_height-floor_height = youw fwoor heit is:
onboarding-automatic_proportions-check_floor_height-full_height = youw estimated fuww heit is:
onboarding-automatic_proportions-check_floor_height-measure-start = stawt measuwing
onboarding-automatic_proportions-check_floor_height-measure-stop = stawp measuwing
onboarding-automatic_proportions-check_floor_height-measure-reset = wetwy measuwing
onboarding-automatic_proportions-check_floor_height-skip_step = skip dis and saiv
onboarding-automatic_proportions-check_floor_height-next_step = use fwoor heit and saiv
onboarding-automatic_proportions-start_recording-title = get wowdy to move
onboarding-automatic_proportions-start_recording-description = we'we now going to wowcawd some specific poses and moves. these will be pwompted in teh wowst screen. be wowdy to stawt when teh buttawn is pwessed!
onboarding-automatic_proportions-start_recording-next = stawt wowcawding
@@ -976,10 +1074,21 @@ onboarding-automatic_proportions-verify_results-redo = wedo wecowding
onboarding-automatic_proportions-verify_results-confirm = tehywee coowect
onboarding-automatic_proportions-done-title = bawdy meowsured anwd sayved uwu
onboarding-automatic_proportions-done-description = yoww body pwopowwtions cawybowwation is cowowplete! ^w^
onboarding-automatic_proportions-error_modal =
<b>wawning:</b> an ewwow was fownd whiwe estimating pawpowshuns! ;w;
pwease <docs>check da docs</docs> or join ouw <discord>Discord</discord> fow hewp >~>
onboarding-automatic_proportions-error_modal-v2 =
<b>oh nyo...</b> thewe wuz an ewwow whiwe estimatin da pwopowtions... :(
dis is wikewy a mountin cawibwation issue. make suwe youw twackin wowks pwopewy befow twying agen.
pwease <docs>chek da docs</docs> ow join ouw <discord>discowd</discord> fow hewp :3
onboarding-automatic_proportions-error_modal-confirm = undewstood!
onboarding-automatic_proportions-smol_warning =
youw configuwed heit of { $height } iz way 2 widdle den da { $minHeight }.
<b>pwease wedo da measuwments and ensuwe dey r cowwect.</b>
onboarding-automatic_proportions-smol_warning-cancel = go bak
## User height calibration
## Stay Aligned setup
## Home
@@ -1005,6 +1114,81 @@ status_system-StatusSteamVRDisconnected =
status_system-StatusTrackerError = da { $trackerName } twackew has ewwow. >~<
status_system-StatusUnassignedHMD = teh VR hedset shud be awssaignd as a hed twackew.
## Firmware tool globals
firmware_tool-next_step = next step
firmware_tool-previous_step = pwevious step
firmware_tool-ok = wooks gud
firmware_tool-retry = wetwy
firmware_tool-loading = woadin...
## Firmware tool Steps
firmware_tool = DIY fiwmwawe toow
firmware_tool-description = awwows u to configuwe an fwash youw DIY twackews
firmware_tool-not_available = oopsie woopsie! da fiwmwawe toow iz nawt avaiwabwe wight meow :3 twy agen laitew!
firmware_tool-not_compatible = teh fiwmwawe toow iz nawt compatibwe wit dis vershun of teh sewvew. pwease uwupdate youw sewvew!
firmware_tool-flash_method_step = fwashin mefod
firmware_tool-flash_method_step-description = pwease sewect teh fwashin mefod u wanna use
firmware_tool-flashbtn_step = pwess da buwut buddon
firmware_tool-flashbtn_step-description = befow goin into da next step thewe's stuff u gotta do
firmware_tool-flashbtn_step-board_SLIMEVR = tuwn awf da twackew, wemove da case if u got wun, conecc an usb cabwe to dis compooper, den do wun of da fowwowin steps dependin on wat swimevr boawd u got:
firmware_tool-flashbtn_step-board_OTHER =
befow fwashin u prob need 2 put da twackew into buwutwoadew mowd :3
mowst of da time it meens pressin da buwut buddon on da boawd befow da fwashin pwocess stawts.
if da fwashin pwocess timeout at da stawt of da fwashin it prob meens dat da twackew wuz nawt in buwutwoadew mowd ono
pwease wefew to da fwashin instwucshuns of youw boawd to no how 2 tuwn on da buwutwoadew mowd :3
firmware_tool-flash_method_ota-devices = detectewed ovew teh aiw dewices:
firmware_tool-flash_method_ota-no_devices = thewe r no boawds dat can be uwupdated usin ovew teh aiw, make suwe u sewected da cowwect boawd taip
firmware_tool-flash_method_serial-wifi = wifi cwedenshuls:
firmware_tool-flash_method_serial-devices-label = detectewed sewiaw dewices:
firmware_tool-flash_method_serial-devices-placeholder = sewect a sewiaw dewice
firmware_tool-flash_method_serial-no_devices = thewe r no compatibwe sewiaw dewices detectewed, make suwe da twackew is pwugged in
firmware_tool-build_step = bildin
firmware_tool-build_step-description = da fiwmwawe is bildin pwease wait :3
firmware_tool-flashing_step = fwashin
firmware_tool-flashing_step-description = youw twackews r fwashin, pwease fowwow da instwucshuns on da scween
firmware_tool-flashing_step-flash_more = fwash mowe twackews
firmware_tool-flashing_step-exit = exit
## firmware tool build status
firmware_tool-build-CREATING_BUILD_FOLDER = cweatin da bild fowdew
firmware_tool-build-BUILDING = bildin da fiwmwawe
firmware_tool-build-SAVING = savin da bild
firmware_tool-build-DONE = bild compwete!
firmware_tool-build-ERROR = unabwe to bild da fiwmwawe...
## Firmware update status
firmware_update-status-DOWNLOADING = downwoadin da fiwmwawe
firmware_update-status-AUTHENTICATING = awthenticatin wit da mcu
firmware_update-status-UPLOADING = upwoadin da fiwmwawe
firmware_update-status-SYNCING_WITH_MCU = syncin wit da mcu
firmware_update-status-REBOOTING = appwyin da uwupdate
firmware_update-status-PROVISIONING = settin da wifi cwedenshuls
firmware_update-status-DONE = uwupdate compwete!!
firmware_update-status-ERROR_DEVICE_NOT_FOUND = culd nawt find da dewice
firmware_update-status-ERROR_TIMEOUT = da uwupdate pwocess timed owt
firmware_update-status-ERROR_DOWNLOAD_FAILED = culd nawt downwoad da fiwmwawe
firmware_update-status-ERROR_AUTHENTICATION_FAILED = culd nawt awthenticate wit da mcu
firmware_update-status-ERROR_UPLOAD_FAILED = culd nawt upwoad da fiwmwawe
firmware_update-status-ERROR_PROVISIONING_FAILED = culd nawt set da wifi cwedenshuls
firmware_update-status-ERROR_UNSUPPORTED_METHOD = da uwupdate mefod is nawt suppowted
firmware_update-status-ERROR_UNKNOWN = unyown ewwow
## Dedicated Firmware Update Page
firmware_update-title = fiwmwawe uwupdate
firmware_update-devices = avaiwabwe dewices
firmware_update-devices-description = pwease sewect da twackews u want to uwupdate to da latest vershun of swimevr fiwmwawe
firmware_update-no_devices = pwease make suwe dat da twackews u want to uwupdate r AWN an conecced to da wifi!
firmware_update-changelog-title = uwupdatin to { $version }
firmware_update-looking_for_devices = lookin fow dewices to uwupdate...
firmware_update-retry = wetwy
firmware_update-update = uwupdate sewected twackews
firmware_update-exit = exit
## Tray Menu
tray_menu-show = show
@@ -1032,3 +1216,9 @@ unknown_device-modal-description =
d-do u wanna conect it to SwimeVR?
unknown_device-modal-confirm = sure!!
unknown_device-modal-forget = ignowe it
## Error collection consent modal
## Tracking checklist section

File diff suppressed because it is too large Load Diff

View File

@@ -7,8 +7,13 @@
## Websocket (server) status
websocket-connecting = Conectando al servidor
websocket-connection_lost = Conexión al servidor perdida. Intentando reconectar...
websocket-connecting = Cargando...
websocket-connection_lost = ¡El servidor falló!
websocket-connection_lost-desc = Parece que el servidor de SlimeVR ha dejado de funcionar. Revise los registros y reinicie el programa.
websocket-timedout = No se ha podido conectar al servidor.
websocket-timedout-desc = Parece que el servidor de SlimeVR ha dejado de funcionar o se agotó el tiempo de espera de la conexión. Revise los registros y reinicie el programa
websocket-error-close = Salir de SlimeVR
websocket-error-logs = Abrir la carpeta de registros
## Update notification
@@ -26,6 +31,9 @@ tips-tap_setup = Puedes tocar lentamente 2 veces el sensor para seleccionarlo en
tips-turn_on_tracker = ¿Estas usando trackers de SlimeVR oficiales? ¡Recuerda <b><em>encender tus trackers<em><b> después de conectarlos al PC!
tips-failed_webgl = Fallo al inicializar WebGL.
## Units
## Body parts
body_part-NONE = Sin asignar
@@ -49,45 +57,200 @@ body_part-LEFT_HAND = Mano izquierda
body_part-LEFT_UPPER_LEG = Muslo izquierdo
body_part-LEFT_LOWER_LEG = Tobillo izquierdo
body_part-LEFT_FOOT = Pie izquierdo
body_part-LEFT_THUMB_METACARPAL = Metacarpiano del pulgar izquierdo
body_part-LEFT_THUMB_PROXIMAL = Proximal del pulgar izquierdo
body_part-LEFT_THUMB_DISTAL = Distal del pulgar izquierdo
body_part-LEFT_INDEX_PROXIMAL = Proximal del índice izquierdo
body_part-LEFT_INDEX_INTERMEDIATE = Medial del índice izquierdo
body_part-LEFT_INDEX_DISTAL = Distal del índice izquierdo
body_part-LEFT_MIDDLE_PROXIMAL = Proximal del dedo medio izquierdo
body_part-LEFT_MIDDLE_INTERMEDIATE = Medial del dedo medio izquierdo
body_part-LEFT_MIDDLE_DISTAL = Distal del dedo medio izquierdo
body_part-LEFT_RING_PROXIMAL = Proximal del dedo anular izquierdo
body_part-LEFT_RING_INTERMEDIATE = Medial del dedo anular izquierdo
body_part-LEFT_RING_DISTAL = Distal del dedo anular izquierdo
body_part-LEFT_LITTLE_PROXIMAL = Proximal del meñique izquierdo
body_part-LEFT_LITTLE_INTERMEDIATE = Medial del meñique izquierdo
body_part-LEFT_LITTLE_DISTAL = Distal del meñique izquierdo
body_part-RIGHT_THUMB_METACARPAL = Metacarpiano del pulgar derecho
body_part-RIGHT_THUMB_PROXIMAL = Proximal del pulgar derecho
body_part-RIGHT_THUMB_DISTAL = Distal del pulgar derecho
body_part-RIGHT_INDEX_PROXIMAL = Proximal del índice derecho
body_part-RIGHT_INDEX_INTERMEDIATE = Medial del índice derecho
body_part-RIGHT_INDEX_DISTAL = Distal del índice derecho
body_part-RIGHT_MIDDLE_PROXIMAL = Proximal del dedo medio derecho
body_part-RIGHT_MIDDLE_INTERMEDIATE = Medial del dedo medio derecho
body_part-RIGHT_MIDDLE_DISTAL = Distal del dedo medio derecho
body_part-RIGHT_RING_PROXIMAL = Proximal del dedo anular derecho
body_part-RIGHT_RING_INTERMEDIATE = Medial del dedo anular derecho
body_part-RIGHT_RING_DISTAL = Distal del dedo anular derecho
body_part-RIGHT_LITTLE_PROXIMAL = Proximal del meñique derecho
body_part-RIGHT_LITTLE_INTERMEDIATE = Medial del meñique derecho
body_part-RIGHT_LITTLE_DISTAL = Distal del meñique derecho
## BoardType
board_type-UNKNOWN = Desconocido
board_type-NODEMCU = NodeMCU
board_type-CUSTOM = Placa personalizada
board_type-WROOM32 = WROOM32
board_type-WEMOSD1MINI = Wemos D1 Mini
board_type-TTGO_TBASE = TTGO T-Base
board_type-ESP01 = ESP-01
board_type-SLIMEVR = SlimeVR
board_type-SLIMEVR_DEV = Placa de Desarrollo de SlimeVR
board_type-SLIMEVR_V1_2 = SlimeVR v1.2
board_type-LOLIN_C3_MINI = Lolin C3 Mini
board_type-BEETLE32C3 = Beetle ESP32-C3
board_type-ESP32C3DEVKITM1 = Espressif ESP32-C3 DevKitM-1
board_type-OWOTRACK = owoTrack
board_type-WRANGLER = Wrangler Joycons
board_type-MOCOPI = Sony Mocopi
board_type-WEMOSWROOM02 = Wemos Wroom-02 D1 Mini
board_type-XIAO_ESP32C3 = Seeed Studio XIAO ESP32C3
board_type-HARITORA = Haritora
board_type-ESP32C6DEVKITC1 = Espressif ESP32-C6 DevKitC-1
board_type-GLOVE_IMU_SLIMEVR_DEV = Guante SlimeVR Dev IMU
## Proportions
skeleton_bone-NONE = Nada
skeleton_bone-HEAD = Inclinación de cabeza
skeleton_bone-HEAD-desc =
Esta es la distancia entre tu casco y el medio de tu cabeza.
Para ajustarlo, mueve tu cabeza de izquierda a derecha como si no estuvieras de acuerdo
y modifícalo hasta que cualquier movimiento con otros trackers sea insignificante.
skeleton_bone-NECK = Largo del cuello
skeleton_bone-NECK-desc =
Esta es la distancia entre el medio de tu cabeza hacia la base de tu nuca.
Para ajustarlo, mueve tu cabeza de arriba a abajo como su estuvieras asintiendo o ladea tu cabeza
hacia la izquierda y derecha y modifícalo hasta que cualquier movimiento con otros trackers sea insignificante.
skeleton_bone-torso_group = Largo del torso
skeleton_bone-torso_group-desc =
Esta es la distancia entre la base de tu nuca con tus caderas.
Para ajustarlo, modifícalo parándote recto hasta que tus caderas virtuales se alineen
con las reales.
skeleton_bone-UPPER_CHEST = Largo del pecho superior
skeleton_bone-UPPER_CHEST-desc =
Esta es la distancia entre la base de tu nuca hacia el medio de tu pecho.
Para ajustarlo, ajusta el largo de tu torso apropiadamente y modifícalo en varias posiciones
(Sentándote, agachándote, acostándote, etc.) hasta que tu columna virtual se alinee con la real.
skeleton_bone-CHEST_OFFSET = Chest Offset
skeleton_bone-CHEST_OFFSET-desc =
Esto se puede ajustar para mover tu tracker de pecho virtual hacia arriba o abajo para ayudar
con la calibración en ciertos juegos o aplicaciones que lo esperan mas alto o bajo.
skeleton_bone-CHEST = Largo del pecho
skeleton_bone-CHEST-desc =
Esta es la distancia entre la mitad de tu pecho hasta la mitad de tu columna.
Para ajustarlo, ajusta el largo de tu torso apropiadamente y modifícalo en varias posiciones
(sentándote, agachándote, acostándote, etc.) hasta que tu columna virtual se alinee con la real.
skeleton_bone-WAIST = Largo de la cintura
skeleton_bone-WAIST-desc =
Esta es la distancia entre la mitad de tu columna con tu ombligo.
Para ajustarlo, ajusta el largo de tu torso apropiadamente y modifícalo en varias posiciones
(sentándote, agachándote, acostándote, etc.) hasta que tu columna virtual se alinee con la real.
skeleton_bone-HIP = Largo de la cadera
skeleton_bone-HIP-desc =
Esta es la distancia entre tu ombligo hacia tus caderas
Para ajustarla, ajusta el largo de tu torso apropiadamente y modifícala en varias posiciones
(sentándote, agachándote, acostándote, etc.) hasta que tu columna virtual se alinee con la real.
skeleton_bone-HIP_OFFSET = Desplazamiento de la cadera
skeleton_bone-HIP_OFFSET-desc =
Esto se puede ajustar para mover tu cadera virtual hacia arriba o hacia abajo para ayudar
con la calibración en ciertos juegos o aplicaciones que lo esperen en tu cintura.
skeleton_bone-HIPS_WIDTH = Ancho de la cadera
skeleton_bone-HIPS_WIDTH-desc =
Esta es la distancia entre el comienzo de tus piernas.
Para ajustarlo, inicia un reinicio completo con tus piernas rectas y modifícalo hasta que
tus piernas virtuales se alineen con las reales horizontalmente.
skeleton_bone-leg_group = Largo de la pierna
skeleton_bone-leg_group-desc =
Esta es la distancia entre tus caderas hacia tus pies.
Para ajustarlo, ajusta el largo de tu torso apropiadamente y modifícalo
hasta que tus pies virtuales estén al mismo nivel que los tuyos.
skeleton_bone-UPPER_LEG = Largo del muslo
skeleton_bone-UPPER_LEG-desc =
Esta es la distancia entre tus caderas hacia tus rodillas.
Para ajustarlo, ajusta el largo de tus piernas apropiadamente y modifícalo
hasta que tus rodillas virtuales estén al mismo nivel que las tuyas.
skeleton_bone-LOWER_LEG = Largo de la tibia
skeleton_bone-LOWER_LEG-desc =
Esta es la distancia entre tus rodillas hacia tus tobillos.
Para ajustarlo, ajusta el largo de tus piernas apropiadamente y modifícalo
hasta que tus rodillas virtuales estén al mismo nivel que las tuyas.
skeleton_bone-FOOT_LENGTH = Largo del pie
skeleton_bone-FOOT_LENGTH-desc =
Esta es la distancia entre tus tobillos hacia tus dedos del pie.
Para ajustarla, párate de puntillas y modifícalo hasta que tus pies virtuales se mantengan en su lugar.
skeleton_bone-FOOT_SHIFT = Desplazamiento de pies
skeleton_bone-FOOT_SHIFT-desc =
Este valor es la distancia horizontal entre tu rodilla hacia tu tobillo.
Toma en cuenta las piernas bajas yendo hacia atrás cuando te paras recto.
Para ajustarlo, pon el largo de los pies en 0, inicia un reinicio completo y modifícalo hasta que tus pies
virtuales se alineen con el medio de tus tobillos.
skeleton_bone-SKELETON_OFFSET = Desplazamiento del esqueleto
skeleton_bone-SKELETON_OFFSET-desc =
Esto puede ser ajustado para compensar todos tus trackers hacia adelante o hacia atrás.
Se puede usar para ayudar con la calibración en ciertos juegos o aplicaciones
que pueden esperar tus trackers estando más adelante.
skeleton_bone-SHOULDERS_DISTANCE = Distancia de los hombros
skeleton_bone-SHOULDERS_DISTANCE-desc =
Esta es la distancia vertical desde la base de tu nuca hasta tus hombros.
Para ajustarlo, pon el largo del brazo superior en 0 y modifícalo hasta que tus trackers de codo virtuales
se alineen verticalmente con tus hombros reales.
skeleton_bone-SHOULDERS_WIDTH = Ancho de los hombros
skeleton_bone-SHOULDERS_WIDTH-desc =
Esta es la distancia horizontal desde la base de tu nuca hasta tus hombros.
Para ajustarlo, pon el largo del brazo superior en 0 y modifícalo hasta que tus trackers de codo virtuales
se alineen horizontalmente con tus hombros reales.
skeleton_bone-arm_group = Largo del brazo
skeleton_bone-arm_group-desc =
Esta es la distancia desde tus hombros hasta tus muñecas.
Para ajustarlo, ajusta la distancia de los hombros apropiadamente, pon la distancia de las manos Y
en 0 y modifícalo hasta que tus trackers de mano se alineen con tus muñecas.
skeleton_bone-UPPER_ARM = Largo del brazo superior
skeleton_bone-UPPER_ARM-desc =
Esta es la distancia desde tus hombros hasta tus codos.
Para ajustarlo, ajusta el largo de los brazos apropiadamente y modifícalo hasta que
tus trackers de codos se alineen con tus codos reales.
skeleton_bone-LOWER_ARM = Distancia del antebrazo
skeleton_bone-LOWER_ARM-desc =
Esta es la distancia desde tus codos hasta tus muñecas.
Para ajustarlo, ajusta el largo de los brazos apropiadamente y modifícalo hasta que
tus trackers de codos se alineen con tus codos reales.
skeleton_bone-HAND_Y = Distancia Y de la mano
skeleton_bone-HAND_Y-desc =
Esta es la distancia vertical desde tus muñecas hasta la mitad de tu mano.
Para ajustarlo para captura de movimiento, ajusta el largo de los brazos apropiadamente y modifícalo hasta que tus
trackers de manos se alineen verticalmente con el medio de tus manos.
Para ajustarlo para tracking de codo desde tus controles, pon el largo de los brazos en 0 y
modifícalo hasta que tus trackers de codos se alineen verticalmente con tus muñecas.
skeleton_bone-HAND_Z = Distancia Z de la mano
skeleton_bone-HAND_Z-desc =
Esta es la distancia horizontal desde tus muñecas hasta la mitad de tu mano.
Para ajustarlo para captura de movimiento, ponlo en 0.
Para ajustarlo para tracking de codos desde tus controles, pon el largo de los brazos en 0 y
modifícalo hasta que tus trackers de codos se alineen horizontalmente con tus muñecas.
skeleton_bone-ELBOW_OFFSET = Desplazamiento del codo
skeleton_bone-ELBOW_OFFSET-desc =
Esto se puede ajustar para mover tus trackers de codos virtuales hacia arriba o hacia abajo para ayudar
con VRChat accidentalmente colocando un tracker de codo al pecho.
## Tracker reset buttons
reset-reset_all = Reiniciar todas las proporciones
reset-reset_all_warning =
<b>Advertencia:</b> Esto reiniciará tus proporciones para ser basadas solamente en tu altura.
¿Estás seguro de que quieres seguir?
reset-reset_all_warning-v2 =
<b>Advertencia:</b> Sus proporciones se restablecerán a los valores predeterminados escalados a su altura configurada.
¿Estás seguro de que quiere hacer esto?
reset-reset_all_warning-reset = Reiniciar proporciones
reset-reset_all_warning-cancel = Cancelar
reset-reset_all_warning_default-v2 =
<b>Advertencia:</b> Su altura no ha sido configurada, sus proporciones se restablecerán a los valores predeterminados con la altura predeterminada.
¿Estás seguro de que quieres hacer esto?
reset-full = Reinicio completo
reset-mounting = Reinicio de montura
reset-mounting-feet = Restablecer montura de los pies
reset-mounting-fingers = Restablecer montura de los dedos
reset-yaw = Reinicio horizontal
## Serial detection stuff
@@ -113,6 +276,7 @@ navbar-settings = Ajustes
bvh-start_recording = Grabar BVH
bvh-recording = Grabando...
bvh-save_title = Guardar grabación BVH
## Tracking pause
@@ -129,7 +293,7 @@ widget-overlay-is_mirrored_label = Mostrar interfaz reflejada
widget-drift_compensation-clear = Olvidar compensación de drift
## Widget: Clear Reset Mounting
## Widget: Clear Mounting calibration
widget-clear_mounting = Olvidar reinicio de montura
@@ -153,6 +317,7 @@ widget-imu_visualizer-rotation_raw = Raw
widget-imu_visualizer-rotation_preview = Preview
widget-imu_visualizer-acceleration = Aceleración
widget-imu_visualizer-position = Posición
widget-imu_visualizer-stay_aligned = Mantente Alineado
## Widget: Skeleton Visualizer
@@ -180,6 +345,7 @@ tracker-table-column-temperature = Temp. °C
tracker-table-column-linear-acceleration = Accel. X/Y/Z
tracker-table-column-rotation = Rotación X/Y/Z
tracker-table-column-position = Posición X/Y/Z
tracker-table-column-stay_aligned = Mantente Alineado
tracker-table-column-url = URL
## Tracker rotation
@@ -204,6 +370,7 @@ tracker-infos-url = URL del sensor
tracker-infos-version = Versión del firmware
tracker-infos-hardware_rev = Revisión del hardware
tracker-infos-hardware_identifier = ID del hardware
tracker-infos-data_support = Dato soportado
tracker-infos-imu = Sensor IMU
tracker-infos-board_type = Placa principal
tracker-infos-network_version = Versión del protocolo
@@ -244,6 +411,13 @@ tracker-settings-name_section-label = Nombre del sensor
tracker-settings-forget = Olvidar tracker
tracker-settings-forget-description = Remueve el tracker del servidor de SlimeVR y lo previene de conectarse hasta que el servidor se reinicie. La configuración del tracker no se perderá.
tracker-settings-forget-label = Olvidar tracker
tracker-settings-update-unavailable-v2 = No se encontraron lanzamientos
tracker-settings-update-incompatible = No se puede actualizar. Placa incompatible
tracker-settings-update-low-battery = No se puede actualizar. Batería por debajo del 50%
tracker-settings-update-up_to_date = Actualizado
tracker-settings-update-blocked = Actualización no disponible. No hay otras versiones disponibles
tracker-settings-update = Actualizar ahora
tracker-settings-update-title = Versión del firmware
## Tracker part card info
@@ -309,16 +483,22 @@ mounting_selection_menu-close = Cerrar
settings-sidebar-title = Ajustes
settings-sidebar-general = General
settings-sidebar-steamvr = SteamVR
settings-sidebar-tracker_mechanics = Mecánicas del sensor
settings-sidebar-stay_aligned = Mantente Alineado
settings-sidebar-fk_settings = Ajustes de FK
settings-sidebar-gesture_control = Control de gestos
settings-sidebar-interface = Interfaz
settings-sidebar-osc_router = Router OSC
settings-sidebar-osc_trackers = Sensores OSC de VRChat
settings-sidebar-osc_vmc = VMC
settings-sidebar-utils = Utilidades
settings-sidebar-serial = Consola serial
settings-sidebar-appearance = Apariencia
settings-sidebar-notifications = Notificaciones
settings-sidebar-behavior = Comportamiento
settings-sidebar-firmware-tool = Herramienta de firmware DIY
settings-sidebar-vrc_warnings = Advertencias de la configuración de VRChat
settings-sidebar-advanced = Avanzado
## SteamVR settings
@@ -400,6 +580,25 @@ settings-general-tracker_mechanics-use_mag_on_all_trackers-description =
Usa el magnetómetro en todos los trackers que tienen un firmware compatible, lo que reduce la desviación en entornos magnéticos estables.
Se puede desactivar por sensor en la configuración del sensor. <b>¡Por favor, no apagues ninguno de los trackers mientras activas esta opción!</b>
settings-general-tracker_mechanics-use_mag_on_all_trackers-label = Usar magnetómetro en trackers
settings-stay_aligned = Mantente Alineado
settings-stay_aligned-description = Mantente Alineado reduce el desvío ajustando gradualmente tus trackers para calzar tus poses relajadas.
settings-stay_aligned-setup-label = Configurar Mantente Alineado
settings-stay_aligned-setup-description = Debes completar «Configurar Mantente Alineado» para activar Mantente Alineado.
settings-stay_aligned-warnings-drift_compensation = ⚠ ¡Por favor desactiva la compensación de desvío! La compensación de desvío causará conflictos con Mantente Alineado.
settings-stay_aligned-enabled-label = Ajustar trackers
settings-stay_aligned-hide_yaw_correction-label = Ocultar ajustes (para comparar sin Mantente Alineado)
settings-stay_aligned-general-label = General
settings-stay_aligned-relaxed_poses-label = Poses relajadas
settings-stay_aligned-relaxed_poses-description = Mantente Alineado utiliza tus poses relajadas para mantener tus trackers alineados. Utiliza «Configurar Mantente Alineado» para actualizar estas poses.
settings-stay_aligned-relaxed_poses-standing = Ajustar trackers al estar parado
settings-stay_aligned-relaxed_poses-sitting = Ajustar trackers al sentarse en una silla
settings-stay_aligned-relaxed_poses-flat = Ajustar trackers al sentarse en el suelo o recostándose en su espalda.
settings-stay_aligned-relaxed_poses-save_pose = Guardar pose
settings-stay_aligned-relaxed_poses-reset_pose = Reiniciar pose
settings-stay_aligned-relaxed_poses-close = Cerrar
settings-stay_aligned-debug-label = Depuración
settings-stay_aligned-debug-description = Por favor incluye tus ajustes cuando reportes problemas acerca de Mantente Alineado.
settings-stay_aligned-debug-copy-label = Copiar ajustes al portapapeles
## FK/Tracking settings
@@ -421,8 +620,16 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = El clip del suel
settings-general-fk_settings-leg_tweak-toe_snap-description = El encajado de dedos intenta adivinar la rotación de los pies si sus respectivos trackers no están en uso.
settings-general-fk_settings-leg_tweak-foot_plant-description = El plantado del pie rota los pies para que sean paralelos con el suelo al entrar en contacto.
settings-general-fk_settings-leg_fk = Tracking de piernas
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Activar reinicio de montura para el pie mediante el pararse de puntillas.
settings-general-fk_settings-leg_fk-reset_mounting_feet = Reinicio de montura de pies
settings-general-fk_settings-leg_fk-reset_mounting_feet-description-v1 = Forzar el reinicio de la montura de los pies durante los reinicios generales del montaje.
settings-general-fk_settings-leg_fk-reset_mounting_feet-v1 = Forzar reinicio de montura de pies
settings-general-fk_settings-enforce_joint_constraints = Límites esqueléticos
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = Imponer restricciones
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints-description = Evita que las articulaciones giren más allá de su límite
settings-general-fk_settings-enforce_joint_constraints-correct_constraints = Corregir con las limitaciones
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = Corregir las rotaciones de las articulaciones cuando superan su límite
settings-general-fk_settings-ik = Datos de posición
settings-general-fk_settings-ik-use_position = Usar datos de posición
settings-general-fk_settings-ik-use_position-description = Permite el uso de los datos de posición de los trackers que lo proveen. Cuando actives esto asegúrate de hacer un reinicio completo y recalibrar en el juego.
settings-general-fk_settings-arm_fk = Trackeo de brazos
settings-general-fk_settings-arm_fk-description = Cambia cómo el movimiento de los brazos es detectado.
settings-general-fk_settings-arm_fk-force_arms = Forzar brazos desde el HMD
@@ -454,9 +661,6 @@ settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = Prome
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = Promediar la rotación del eje vertical y horizontal de las rodillas con la de los tobillos
settings-general-fk_settings-self_localization-title = Modo mocap
settings-general-fk_settings-self_localization-description = El modo mocap permite al esqueleto rastrear de forma aproximada su propia posición sin un casco o otros sensores. Nota que esto requiere que los trackers en el pie y cabeza estén y sigue siendo experimental.
settings-general-fk_settings-vive_emulation-title = Vive emulation
settings-general-fk_settings-vive_emulation-description = Emulate the waist tracker problems that Vive trackers have. This is a joke and makes tracking worse.
settings-general-fk_settings-vive_emulation-label = Habilitar emulación de Vive
## Gesture control settings (tracker tapping)
@@ -497,9 +701,9 @@ settings-general-interface-dev_mode = Modo desarrollador
settings-general-interface-dev_mode-description = Este modo puede ser útil si es que necesitas información a fondo o para un nivel de interacción más avanzado con los sensores conectados.
settings-general-interface-dev_mode-label = Modo desarrollador
settings-general-interface-theme = Tema de color
settings-general-interface-show-navbar-onboarding = Mostrar "{ navbar-onboarding }" en la barra de navegación
settings-general-interface-show-navbar-onboarding = Mostrar «{ navbar-onboarding }» en la barra de navegación
settings-general-interface-show-navbar-onboarding-description = Esto cambia si el botón "{ navbar-onboarding }" se muestra en la barra de navegación.
settings-general-interface-show-navbar-onboarding-label = Mostrar "{ navbar-onboarding }"
settings-general-interface-show-navbar-onboarding-label = Mostrar «{ navbar-onboarding }»
settings-general-interface-lang = Selecciona un idioma
settings-general-interface-lang-description = Cambia el idioma que quieras usar.
settings-general-interface-lang-placeholder = Selecciona el idioma a utilizar
@@ -528,6 +732,10 @@ settings-general-interface-feedback_sound-volume = Volumen del sonido de feedbac
settings-general-interface-connected_trackers_warning = Advertencia de trackers conectados
settings-general-interface-connected_trackers_warning-description = Esta opción hará que aparezca un pop-up cada vez que intentas salir de SlimeVR mientras tienes uno o más trackers conectados. Te recuerda de apagar tus trackers cuando ya paraste de usarlos así preservas la duración de la batería.
settings-general-interface-connected_trackers_warning-label = Advertencia de trackers conectados al salir
## Behavior settings
settings-interface-behavior = Comportamiento
settings-general-interface-use_tray = Minimizar a la bandeja del sistema
settings-general-interface-use_tray-description = Permite cerrar la ventana sin cerrar el servidor de SlimeVR para que puedas continuar usándolo sin que te moleste la interfaz.
settings-general-interface-use_tray-label = Minimizar a la bandeja del sistema
@@ -541,6 +749,17 @@ settings-general-interface-discord_presence-message =
[many] Usando { $amount } de sensores
*[other] Usando { $amount } sensores
}
settings-interface-behavior-error_tracking = Recopilación de errores a través de Sentry.io
settings-interface-behavior-error_tracking-description_v2 =
<h1>Consientes a la recopilación de datos de errores anonimizados?</h1>
<b>No recopilamos información personal</b> como tu dirección IP o credenciales del Wi-Fi. ¡SlimeVR respeta tu privacidad!
Para proveer la mejor experiencia de usuario, recopilamos reportes de errores anonimizados, métricas de rendimiento, e información del sistema operativo. Esto nos ayuda a detectar errores y problemas con SlimeVR. Estas métricas son recopiladas a través de Sentry.io.
settings-interface-behavior-error_tracking-label = Enviar errores a los desarrolladores
settings-interface-behavior-bvh_directory = Carpeta para guardar grabaciones de BVH
settings-interface-behavior-bvh_directory-description = Elige una carpeta para guardar tus grabaciones BVH en lugar de tener que elegir dónde guardarlas cada vez.
settings-interface-behavior-bvh_directory-label = Carpeta de grabaciones BVH
## Serial settings
@@ -559,12 +778,16 @@ settings-serial-factory_reset-warning =
¡Esto significa que los ajustes de calibración y Wi-Fi <b>se perderán</b>!
settings-serial-factory_reset-warning-ok = Sé lo que estoy haciendo
settings-serial-factory_reset-warning-cancel = Cancelar
settings-serial-get_infos = Obtener información
settings-serial-serial_select = Selecciona un puerto serial
settings-serial-auto_dropdown_item = Auto
settings-serial-get_wifi_scan = Obtener escaneo WiFi
settings-serial-file_type = Texto sin formato
settings-serial-save_logs = Guardar en archivo
settings-serial-send_command = Enviar
settings-serial-send_command-placeholder = Comando...
settings-serial-send_command-warning = <b>Peligro:</b> Ejecutar comandos seriales puede causar perdida de datos o romper los trackers.
settings-serial-send_command-warning-ok = Sé lo que estoy haciendo
settings-serial-send_command-warning-cancel = Cancelar
## OSC router settings
@@ -604,6 +827,13 @@ settings-osc-vrchat-description-v1 =
settings-osc-vrchat-enable = Habilitar
settings-osc-vrchat-enable-description = Habilita el envio y recibo de datos.
settings-osc-vrchat-enable-label = Habilitar
settings-osc-vrchat-oscqueryEnabled = Habilitar OSCQuery
settings-osc-vrchat-oscqueryEnabled-description =
OSCQuery detecta automáticamente las instancias en ejecución de VRChat y les envía datos.
También puede anunciarse a ellos para recibir datos del HMD y los mandos.
Para permitir la recepción de datos de HMD y mandos de VRChat, vaya a la configuración de su menú principal
en «Seguimiento e IK» y habilite «Permitir el envío de datos OSC de seguimiento de VR de cabeza y muñeca».
settings-osc-vrchat-oscqueryEnabled-label = Habilitar OSCQuery
settings-osc-vrchat-network = Puertos de conexión
settings-osc-vrchat-network-description-v1 = Establece los puertos para recibir y enviar datos. Se puede dejar sin cambiar para VRChat.
settings-osc-vrchat-network-port_in =
@@ -646,12 +876,7 @@ settings-osc-vmc-network-address-description = Establece la dirección donde se
settings-osc-vmc-network-address-placeholder = Dirección IPv4
settings-osc-vmc-vrm = Modelo VRM
settings-osc-vmc-vrm-description = Carga un modelo VRM para permitir el anclaje de cabeza y habilitar una mejor compatibilidad con otras aplicaciones
settings-osc-vmc-vrm-model_unloaded = Ningún modelo cargado
settings-osc-vmc-vrm-model_loaded =
{ $titled ->
[true] Modelo cargado: { $name }
*[other] Modelo sin nombre cargado
}
settings-osc-vmc-vrm-untitled_model = Modelo sin nombre
settings-osc-vmc-vrm-file_select = Arrastra y suelta un modelo para usar, o <u>selecciona uno</u>.
settings-osc-vmc-anchor_hip = Anclaje por cadera
settings-osc-vmc-anchor_hip-description = Anclar el tracking a la cadera, útil para hacer de VTuber sentado. Si lo desactivas, carga un modelo VRM.
@@ -660,6 +885,11 @@ settings-osc-vmc-mirror_tracking = Invertir el tracking
settings-osc-vmc-mirror_tracking-description = invierte el tracking horizontalmente.
settings-osc-vmc-mirror_tracking-label = Invertir el tracking
## Common OSC settings
settings-osc-common-network-ports_match_error = ¡Los puertos de entrada y salida del Router OSC no pueden ser los mismos!
settings-osc-common-network-port_banned_error = ¡El puerto { $port } no se puede usar!
## Advanced settings
settings-utils-advanced = Avanzado
@@ -686,9 +916,18 @@ settings-utils-advanced-reset_warning =
}
settings-utils-advanced-reset_warning-reset = Reiniciar ajustes
settings-utils-advanced-reset_warning-cancel = Cancelar
settings-utils-advanced-open_data = Carpeta de datos
settings-utils-advanced-open_data-description = Abre la carpeta de datos de SlimeVR en el explorador de archivos, conteniendo archivos de configuración y registros.
settings-utils-advanced-open_data-v1 = Carpeta de configuración
settings-utils-advanced-open_data-description-v1 = Abre la carpeta de configuración de SlimeVR en el explorador de archivos, que contiene la configuración
settings-utils-advanced-open_data-label = Abrir carpeta
settings-utils-advanced-open_logs = Carpeta de registros
settings-utils-advanced-open_logs-description = Abre la carpeta de registros de SlimeVR en el explorador de archivos, que contiene los registros de la aplicación
settings-utils-advanced-open_logs-label = Abrir carpeta
## Home Screen
## Tracking Checlist
## Setup/onboarding menu
@@ -705,16 +944,12 @@ onboarding-setup_warning-cancel = Continuar configuración
## Wi-Fi setup
onboarding-wifi_creds-back = Volver a la introducción
onboarding-wifi_creds = Ingresar credenciales del Wi-Fi
# This cares about multilines
onboarding-wifi_creds-description =
Los sensores utilizarán estas credenciales para conectarse inalámbricamente.
Por favor usa las credenciales del Wi-Fi al cuál estás conectado actualmente.
onboarding-wifi_creds-skip = Saltar ajustes de Wi-Fi
onboarding-wifi_creds-submit = ¡Enviar!
onboarding-wifi_creds-ssid =
.label = Nombre del WiFi
.placeholder = Ingresa el nombre del WiFi
onboarding-wifi_creds-ssid-required = Se requiere el nombre del Wi-Fi
onboarding-wifi_creds-password =
.label = Contraseña
.placeholder = Ingresa la contraseña
@@ -749,13 +984,6 @@ onboarding-reset_tutorial-2 =
onboarding-home = Bienvenido a SlimeVR
onboarding-home-start = ¡Comencemos!
## Enter VR part of setup
onboarding-enter_vr-back = Volver a la asignación de sensores
onboarding-enter_vr-title = ¡Es hora de entrar a la RV!
onboarding-enter_vr-description = ¡Ponte todos tus sensores y luego entra a la RV!
onboarding-enter_vr-ready = Estoy listo
## Setup done
onboarding-done-title = ¡Estás listo!
@@ -772,12 +1000,24 @@ onboarding-connect_tracker-issue-serial = ¡Tengo problemas conectándolos!
onboarding-connect_tracker-usb = Sensor USB
onboarding-connect_tracker-connection_status-none = Buscando sensores
onboarding-connect_tracker-connection_status-serial_init = Conectando al dispositivo serial
onboarding-connect_tracker-connection_status-obtaining_mac_address = Obteniendo la dirección MAC del sensor
onboarding-connect_tracker-connection_status-provisioning = Enviando credenciales Wi-Fi
onboarding-connect_tracker-connection_status-connecting = Enviando credenciales Wi-Fi
onboarding-connect_tracker-connection_status-looking_for_server = Buscando servidor
onboarding-connect_tracker-connection_status-connection_error = Incapaz de conectar al Wi-Fi
onboarding-connect_tracker-connection_status-could_not_find_server = No se pudo encontrar el servidor
onboarding-connect_tracker-connection_status-done = Conectado con el servidor
onboarding-connect_tracker-connection_status-no_serial_log = No se pudieron obtener los registros del tracker
onboarding-connect_tracker-connection_status-no_serial_device_found = No se pudo encontrar un tracker por USB
onboarding-connect_serial-error-modal-no_serial_log = ¿El tracker esta encendido?
onboarding-connect_serial-error-modal-no_serial_log-desc = Asegúrate de que el tracker esté encendido y conectado a tu computadora
onboarding-connect_serial-error-modal-no_serial_device_found = No se detectan trackers
onboarding-connect_serial-error-modal-no_serial_device_found-desc =
Por favor conecta un tracker con el cable usb hacia tu computadora y enciende el tracker.
Si esto no funciona:
- intenta con otro cable usb
- intenta con otro puerto usb
- intenta reinstalando el servidor de SlimeVR y selecciona «Drivers USB» en la sección de componentes
# $amount (Number) - Amount of trackers connected (this is a number, but you can use CLDR plural rules for your language)
# More info on https://www.unicode.org/cldr/cldr-aux/charts/22/supplemental/language_plural_rules.html
# English in this case only has 2 plural rules, which are "one" and "other",
@@ -795,7 +1035,7 @@ onboarding-connect_tracker-next = He conectado todos mis sensores
onboarding-calibration_tutorial = Tutorial de calibración de IMU
onboarding-calibration_tutorial-subtitle = ¡Esto te ayudara a reducir la desviación del tracker!
onboarding-calibration_tutorial-description = Cada vez que enciendes tus trackers, van a necesitar descansar un ratito en una superficie plana para calibrarse. Tratemos de hacer lo mismo presionando el botón «{ onboarding-calibration_tutorial-calibrate }», <b>¡No los muevas!</b>
onboarding-calibration_tutorial-description-v1 = Después de encender tus trackers, colócalos en una superficie estable por un momento para permitir la calibración. La calibración se puede realizar en cualquier momento después de encender los trackers—esta página simplemente proporciona un tutorial. Para comenzar, haz clic en el botón «{ onboarding-calibration_tutorial-calibrate }», y luego <b>¡no muevas tus trackers!</b>
onboarding-calibration_tutorial-calibrate = Puse los sensores en una mesa.
onboarding-calibration_tutorial-status-waiting = Esperando por ti
onboarding-calibration_tutorial-status-calibrating = Calibrando
@@ -822,9 +1062,9 @@ onboarding-assign_trackers-description = Debes escoger dónde van los sensores.
# $assigned (Number) - Trackers that have been assigned a body part
# $trackers (Number) - Trackers connected to the server
onboarding-assign_trackers-assigned =
{ $assigned } de { $trackers ->
[one] 1 sensor asignado
*[other] { $trackers } sensores asignados
{ $trackers ->
[one] { $assigned } de 1 sensor asignado
*[other] { $assigned } de { $trackers } sensores asignados
}
onboarding-assign_trackers-advanced = Mostrar ubicación de asignaciones avanzados.
onboarding-assign_trackers-next = He asignado todos los sensores
@@ -964,44 +1204,27 @@ onboarding-automatic_mounting-mounting_reset-title = Reinicio de montura
onboarding-automatic_mounting-mounting_reset-step-0 = 1. Arrodíllate en una posición de «esquiar» con tus piernas dobladas, la parte superior de tu cuerpo inclinada hacia adelante, y tus brazos doblados.
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Presiona el botón «Reinicio de montura» y espera 3 segundos hasta que se reinicie la montura.
onboarding-automatic_mounting-preparation-title = Preparación
onboarding-automatic_mounting-preparation-step-0 = 1. Párate derecho con tus brazos a los costados.
onboarding-automatic_mounting-preparation-step-1 = 2. Presiona el botón «Reiniciar» y espera 3 segundos hasta que se reinicien los sensores.
onboarding-automatic_mounting-preparation-v2-step-0 = 1. Presiona el botón «Reinicio completo».
onboarding-automatic_mounting-preparation-v2-step-1 = 2. Párate recto con los brazos a tus lados. Asegúrate de mirar hacia adelante.
onboarding-automatic_mounting-preparation-v2-step-2 = 3. Mantén la posición hasta que el temporizador de 3s termine.
onboarding-automatic_mounting-put_trackers_on-title = Ponte tus sensores
onboarding-automatic_mounting-put_trackers_on-description = Para calibrar la ubicación de tus monturas, usaremos los sensores que has asignado. Ponte todos tus sensores, puedes ver cuál es cual en la figura de la derecha.
onboarding-automatic_mounting-put_trackers_on-next = Tengo puestos todos mis sensores
onboarding-automatic_mounting-return-home = Hecho
## Tracker proportions method choose
## Tracker manual proportions setupa
onboarding-choose_proportions = ¿Qué método de calibración de proporciones quiere usar?
# Multiline string
onboarding-choose_proportions-description-v1 =
Las proporciones corporales son utilizadas para saber las medidas de tu cuerpo. Se requieren para calcular la posición de los trackers.
Cuando las proporciones de tu cuerpo no encajan con las guardadas, la precisión de tu tracking será peor y notarás cosas como deslizamiento o desplazamiento, o tu cuerpo no encajando bien con tu avatar.
<b>¡Solo necesitas medir tu cuerpo una vez!</b> A menos que estén mal o tu cuerpo haya cambiado, no necesitas hacerlo de nuevo.
onboarding-choose_proportions-auto_proportions = Proporciones automáticas
# Italicized text
onboarding-choose_proportions-auto_proportions-subtitle = Recomendado
onboarding-choose_proportions-auto_proportions-descriptionv3 =
Esto estimará tus proporciones grabando una muestra de tus movimientos y pasándolos a través de un algoritmo.
<b>¡Esto requiere tener tu visor (HMD) conectado a SlimeVR y en tu cabeza!</b>
onboarding-choose_proportions-manual_proportions = Proporciones manuales
# Italicized text
onboarding-choose_proportions-manual_proportions-subtitle = Para toques pequeños
onboarding-choose_proportions-manual_proportions-description = Esto te permitirá ajustar tus proporciones manualmente de forma directa
onboarding-choose_proportions-export = Exportar proporciones
onboarding-choose_proportions-import = Importar proporciones
onboarding-choose_proportions-import-success = Importado
onboarding-choose_proportions-import-failed = Error
onboarding-choose_proportions-file_type = Archivo de proporciones del cuerpo
## Tracker manual proportions setup
onboarding-manual_proportions-back = Volver al tutorial de reinicio
onboarding-manual_proportions-title = Proporciones de cuerpo manuales
onboarding-manual_proportions-precision = Ajuste con precisión
onboarding-manual_proportions-auto = Calibración automática
onboarding-manual_proportions-ratio = Ajustar por porcentajes
onboarding-manual_proportions-fine_tuning_button = Ajustar automáticamente las proporciones
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Por favor conecte un visor VR para utilizar el ajuste automático
onboarding-manual_proportions-export = Exportar proporciones
onboarding-manual_proportions-import = Importar proporciones
onboarding-manual_proportions-file_type = Archivo de proporciones del cuerpo
onboarding-manual_proportions-normal_increment = Incremento normal
onboarding-manual_proportions-precise_increment = Incremento preciso
onboarding-manual_proportions-grouped_proportions = Proporciones agrupadas
onboarding-manual_proportions-all_proportions = Todas las proporciones
onboarding-manual_proportions-estimated_height = Altura de usuario estimada
## Tracker automatic proportions setup
@@ -1022,21 +1245,33 @@ onboarding-automatic_proportions-requirements-descriptionv2 =
Tu visor esta reportando datos posicionales al servidor de SlimeVR (esto generalmente significa tener SteamVR abierto y conectado a SlimeVR usando el driver de SlimeVR para SteamVR).
Tus sensores están funcionando y están representando tus movimientos con precisión (ej: Realizaste un reinicio completo y se mueven en la dirección correcta cuando pateas, te agachas, te sientas, etc).
onboarding-automatic_proportions-requirements-next = He leído los requisitos
onboarding-automatic_proportions-check_height-title = Compruebe su altura
onboarding-automatic_proportions-check_height-description = Utilizamos tu altura como base de nuestras mediciones utilizando la altura del VR como aproximación a tu altura real, ¡Pero es mejor que compruebes tú mismo si son correctas!
onboarding-automatic_proportions-check_height-title-v3 = Mide la altura de tu visor
onboarding-automatic_proportions-check_height-description-v2 = La altura de su casco (HMD) debe ser ligeramente menor que su altura total, ya que el casco está a la altura de sus ojos. Esta medida se utilizará como punto de partida para las proporciones de su cuerpo.
# All the text is in bold!
onboarding-automatic_proportions-check_height-calculation_warning = Por favor, pulse el botón mientras está <u>de pie</u> para calcular su altura. ¡Tienes unos 3 segundos después de pulsar el botón!
onboarding-automatic_proportions-check_height-calculation_warning-v3 = Empieza a medir mientras estás <u>de pié</u> para medir tu altura. Ten cuidado con no levantar tus manos más allá de tu visor, ¡Ya que esto puede afectar la medición!
onboarding-automatic_proportions-check_height-guardian_tip =
Si está utilizando un casco de VR portable, asegúrese de tener el guardián/
barrera activado así la altura es detectada correctamente!
onboarding-automatic_proportions-check_height-fetch_height = Estoy de pie
# Context is that the height is unknown
onboarding-automatic_proportions-check_height-unknown = Desconocida
# Shows an element below it
onboarding-automatic_proportions-check_height-hmd_height1 = La altura de tu HMD es
onboarding-automatic_proportions-check_height-hmd_height2 = La altura de su casco es:
onboarding-automatic_proportions-check_height-measure-start = Empezar a medir
onboarding-automatic_proportions-check_height-measure-stop = Dejar de medir
onboarding-automatic_proportions-check_height-measure-reset = Volver a intentar la medición
onboarding-automatic_proportions-check_height-next_step = Usar la altura del visor
onboarding-automatic_proportions-check_floor_height-title = Medir la altura de su piso (opcional)
onboarding-automatic_proportions-check_floor_height-description = En algunos casos, es posible que el casco no ajuste correctamente la altura del piso, lo que hace que la altura del casco sea más alta de lo que debería ser. Puede medir la "altura" de su piso para corregir la altura de su casco.
# All the text is in bold!
onboarding-automatic_proportions-check_floor_height-calculation_warning-v2 = Empieza la medición y pon un mando en el piso para medir la altura. Si estás seguro de que la altura de tu piso es correcta, puedes saltar este paso.
# Shows an element below it
onboarding-automatic_proportions-check_height-height1 = entonces tu altura real es
onboarding-automatic_proportions-check_height-next_step = Están bien
onboarding-automatic_proportions-check_floor_height-floor_height = La altura de su piso es:
onboarding-automatic_proportions-check_floor_height-full_height = Su altura total estimada es:
onboarding-automatic_proportions-check_floor_height-measure-start = Empezar a medir
onboarding-automatic_proportions-check_floor_height-measure-stop = Dejar de medir
onboarding-automatic_proportions-check_floor_height-measure-reset = Volver a intentar la medición
onboarding-automatic_proportions-check_floor_height-skip_step = Saltar paso y guardar
onboarding-automatic_proportions-check_floor_height-next_step = Utilice la altura del piso y guardar
onboarding-automatic_proportions-start_recording-title = Prepárate para moverte
onboarding-automatic_proportions-start_recording-description = Ahora vamos a grabar poses y movimientos en específico. Estas serán mostradas en la siguiente ventana. ¡Prepárate para empezar cuando presiones el botón!
onboarding-automatic_proportions-start_recording-next = Empezar grabación
@@ -1071,10 +1306,52 @@ onboarding-automatic_proportions-error_modal-v2 =
Esto es posiblemente debido a un problema con la calibración de montura. Asegúrate de que tu tracking funcione adecuadamente antes de intentarlo nuevamente.
Por favor <docs>revisa la documentación</docs> o únete a nuestro <discord>Discord</discord> por ayuda ^_^
onboarding-automatic_proportions-error_modal-confirm = ¡Entendido!
onboarding-automatic_proportions-smol_warning =
La altura configurada de { $height } es menor que la altura mínima aceptada de { $minHeight }.
<b>Por favor vuelva a hacer las mediciones y asegúrese de que sean correctas.</b>
onboarding-automatic_proportions-smol_warning-cancel = Volver
## User height calibration
## Stay Aligned setup
onboarding-stay_aligned-title = Mantente Alineado
onboarding-stay_aligned-description = Configura Mantente Alineado para mantener tus trackers alineados.
onboarding-stay_aligned-put_trackers_on-title = Ponte tus trackers
onboarding-stay_aligned-put_trackers_on-description = Para guardar tus poses de descanso, usaremos los trackers que acabas de asignar. Colócate todos tus trackers, puedes ver cuál es cuál en la figura de la derecha.
onboarding-stay_aligned-put_trackers_on-trackers_warning = ¡Tienes menos de 5 trackers actualmente conectados y asignados! Este es el monto mínimo de trackers requeridos para que Mantente Alineado funcione apropiadamente.
onboarding-stay_aligned-put_trackers_on-next = Tengo puestos todos mis sensores
onboarding-stay_aligned-verify_mounting-title = Revisa tu montura
onboarding-stay_aligned-verify_mounting-step-0 = Mantente Alineado requiere buena montura. De otra manera, no obtendrás una buena experiencia con Mantente Alineado.
onboarding-stay_aligned-verify_mounting-step-1 = 1. Camina mientras estás parado.
onboarding-stay_aligned-verify_mounting-step-2 = 2. Siéntate y mueve tus piernas y pies.
onboarding-stay_aligned-verify_mounting-step-3 = 3. Si tus trackers no están en el lugar correcto, presiona «Reiniciar calibración de montura»
onboarding-stay_aligned-verify_mounting-redo_mounting = Reiniciar calibración de montura
onboarding-stay_aligned-preparation-title = Preparación
onboarding-stay_aligned-preparation-tip = Asegúrate de pararte recto. Debes estar mirando hacia enfrente y tus brazos deben estar hacia tus lados.
onboarding-stay_aligned-relaxed_poses-standing-title = Pose de pie relajada
onboarding-stay_aligned-relaxed_poses-standing-step-0 = 1. Párate en una posición cómoda. ¡Relájate!
onboarding-stay_aligned-relaxed_poses-standing-step-1-v2 = 2. Presiona el botón «Guardar pose».
onboarding-stay_aligned-relaxed_poses-sitting-title = Pose sentado en silla relajada
onboarding-stay_aligned-relaxed_poses-sitting-step-0 = 1. Siéntate en una posición cómoda. ¡Relajate!
onboarding-stay_aligned-relaxed_poses-sitting-step-1-v2 = 2. Presiona el botón «Guardar pose».
onboarding-stay_aligned-relaxed_poses-flat-title = Pose sentado en piso relajada
onboarding-stay_aligned-relaxed_poses-flat-step-0 = 1. Siéntate en el piso con tus piernas en frente ¡Relájate!
onboarding-stay_aligned-relaxed_poses-flat-step-1-v2 = 2. Presiona el botón «Guardar pose».
onboarding-stay_aligned-relaxed_poses-skip_step = Saltar
onboarding-stay_aligned-done-title = ¡Mantente Alineado activado!
onboarding-stay_aligned-done-description = ¡Tu configuración de Mantente Alineado está completa!
onboarding-stay_aligned-done-description-2 = ¡Configuración completa! Puedes reiniciar el proceso si quieres re-calibrar las poses
onboarding-stay_aligned-previous_step = Atrás
onboarding-stay_aligned-next_step = Siguiente
onboarding-stay_aligned-restart = Reiniciar
onboarding-stay_aligned-done = Hecho
## Home
home-no_trackers = No hay sensores detectados o asignados
home-settings-close = Cerrar
## Trackers Still On notification
@@ -1095,6 +1372,112 @@ status_system-StatusSteamVRDisconnected =
}
status_system-StatusTrackerError = El tracker { $trackerName } tiene un error.
status_system-StatusUnassignedHMD = El casco de RV debe ser asignado como un sensor de cabeza.
status_system-StatusPublicNetwork = Tu perfil de red está actualmente configurado como Público. Esto no es recomendado para el correcto funcionamiento de SlimeVR. <PublicFixLink>Ve como arreglarlo aquí.</PublicFixLink>
## Firmware tool globals
firmware_tool-next_step = Siguiente paso
firmware_tool-previous_step = Paso anterior
firmware_tool-ok = Se ve bien
firmware_tool-retry = Reintentar
firmware_tool-loading = Cargando...
## Firmware tool Steps
firmware_tool = Herramienta de firmware DIY
firmware_tool-description = Le permite configurar y actualizar sus sensores construidos por usted
firmware_tool-not_available = Vaya, la herramienta de firmware no está disponible en este momento. ¡Vuelva más tarde!
firmware_tool-not_compatible = La herramienta de firmware no es compatible con esta versión del servidor. ¡Por favor, actualice la app!
firmware_tool-select_source = Selecciona el firmware para flashear
firmware_tool-select_source-description = Selecciona el firmware que quieres flashear en tu placa
firmware_tool-select_source-error = Incapaz de cargar fuentes
firmware_tool-select_source-board_type = Tipo de placa
firmware_tool-select_source-firmware = Fuente del Firmware
firmware_tool-select_source-version = Versión del Firmware
firmware_tool-select_source-official = Oficial
firmware_tool-select_source-dev = Desarrollo
firmware_tool-board_defaults = Configura tu placa
firmware_tool-board_defaults-description = Establece los pines o ajustes relativos a tu hardware
firmware_tool-board_defaults-add = Añadir
firmware_tool-board_defaults-reset = Reestablecer a predeterminado
firmware_tool-board_defaults-error-required = Campo requerido
firmware_tool-board_defaults-error-format = Formato inválido
firmware_tool-board_defaults-error-format-number = No es un número
firmware_tool-flash_method_step = Método de flasheo
firmware_tool-flash_method_step-description = Por favor seleccione el método de flasheo que desea utilizar
firmware_tool-flash_method_step-ota-v2 =
.label = Wi-Fi
.description = Utilizar el método sobre-el-aire. Tu tracker utilizará Wi-Fi para actualizar su firmware. Solo funciona en trackers que han sido configurados.
firmware_tool-flash_method_step-ota-info =
Utilizamos tus credenciales de wifi para flashear el tracker y confirmar que todo funcionó correctamente.
<b>¡Nosotros no guardamos tus credenciales wifi!</b>
firmware_tool-flash_method_step-serial-v2 =
.label = USB
.description = Utilizar un cable USB para actualizar tu tracker.
firmware_tool-flashbtn_step = Presione el botón de boot
firmware_tool-flashbtn_step-description = Antes de pasar al siguiente paso, hay algunas cosas que debe hacer
firmware_tool-flashbtn_step-board_SLIMEVR = Apague el sensor, retire la carcasa (si la hay), conecte un cable USB a esta computadora y, a continuación, realice uno de los siguientes pasos de acuerdo con la revisión de la placa SlimeVR:
firmware_tool-flashbtn_step-board_OTHER =
Antes de flashear, probablemente tendrá que poner el sensor en modo bootloader.
La mayoría de las veces, esto significa presionar el botón de boot en la placa antes de que comience el proceso de flasheo. Si el proceso de flasheo se agota al comienzo, probablemente significa que el sensor no estaba en modo bootloader.
Por favor, consulte las instrucciones de flasheo de su placa para saber cómo activar el modo bootloader.
firmware_tool-flash_method_ota-title = Flashear por Wi-Fi
firmware_tool-flash_method_ota-devices = Dispositivos OTA detectados:
firmware_tool-flash_method_ota-no_devices = No hay placas que se puedan actualizar mediante OTA, asegúrese de seleccionar el tipo de placa correcto
firmware_tool-flash_method_serial-title = Flashear por USB
firmware_tool-flash_method_serial-wifi = Credenciales del Wi-Fi:
firmware_tool-flash_method_serial-devices-label = Dispositivos serial detectados:
firmware_tool-flash_method_serial-devices-placeholder = Seleccione un dispositivo serial
firmware_tool-flash_method_serial-no_devices = No se han detectado dispositivos serial compatibles, asegúrese de que el sensor esté conectado
firmware_tool-build_step = Compilando
firmware_tool-build_step-description = El firmware se está compilando, por favor espere
firmware_tool-flashing_step = Flasheando
firmware_tool-flashing_step-description = Sus sensores se están flasheando, por favor siga las instrucciones en la pantalla
firmware_tool-flashing_step-warning-v2 = No desconectes o apagues el tracker durante el proceso de subida a menos que se te indique, puede causar que tu placa quede inutilizable.
firmware_tool-flashing_step-flash_more = Flashear más sensores
firmware_tool-flashing_step-exit = Salir
## firmware tool build status
firmware_tool-build-QUEUED = Esperando a construir....
firmware_tool-build-CREATING_BUILD_FOLDER = Creando la carpeta de compilación
firmware_tool-build-DOWNLOADING_SOURCE = Descargando el código fuente
firmware_tool-build-EXTRACTING_SOURCE = Extrayendo el código fuente
firmware_tool-build-BUILDING = Compilando el firmware
firmware_tool-build-SAVING = Guardando la compilación
firmware_tool-build-DONE = Compilación completa
firmware_tool-build-ERROR = No se pudo compilar el firmware
## Firmware update status
firmware_update-status-DOWNLOADING = Descargando el firmware
firmware_update-status-NEED_MANUAL_REBOOT-v2 = Por favor apaga tu tracker y enciéndelo de nuevo
firmware_update-status-AUTHENTICATING = Autenticando con el microcontrolador
firmware_update-status-UPLOADING = Cargando el firmware
firmware_update-status-SYNCING_WITH_MCU = Sincronizando con el microcontrolador
firmware_update-status-REBOOTING = Aplicando la actualización
firmware_update-status-PROVISIONING = Configurando las credenciales del Wi-Fi
firmware_update-status-DONE = ¡Actualización completa!
firmware_update-status-ERROR_DEVICE_NOT_FOUND = No se pudo encontrar el dispositivo
firmware_update-status-ERROR_TIMEOUT = Se agotó el tiempo de espera del proceso de actualización
firmware_update-status-ERROR_DOWNLOAD_FAILED = No se pudo descargar el firmware
firmware_update-status-ERROR_AUTHENTICATION_FAILED = No se pudo autenticar con el microcontrolador
firmware_update-status-ERROR_UPLOAD_FAILED = No se pudo cargar el firmware
firmware_update-status-ERROR_PROVISIONING_FAILED = No se pudieron configurar las credenciales del Wi-Fi
firmware_update-status-ERROR_UNSUPPORTED_METHOD = El método de actualización no es compatible
firmware_update-status-ERROR_UNKNOWN = Error desconocido
## Dedicated Firmware Update Page
firmware_update-title = Actualización de firmware
firmware_update-devices = Dispositivos disponibles
firmware_update-devices-description = Seleccione los sensores que desea actualizar a la última versión del firmware de SlimeVR
firmware_update-no_devices = ¡Asegúrese de que los sensores que desea actualizar estén encendidos y conectados al Wi-Fi!
firmware_update-changelog-title = Actualizando a { $version }
firmware_update-looking_for_devices = Buscando dispositivos para actualizar...
firmware_update-retry = Reintentar
firmware_update-update = Actualizar sensores seleccionados
firmware_update-exit = Salir
## Tray Menu
@@ -1123,3 +1506,62 @@ unknown_device-modal-description =
¿Lo quieres conectar a SlimeVR?
unknown_device-modal-confirm = ¡Claro!
unknown_device-modal-forget = Ignorarlo
# VRChat config warnings
vrc_config-page-title = Advertencias de la configuración de VRChat
vrc_config-page-desc = Esta página muestra el estado de tus ajustes de VRChat y muestra que ajustes son incompatibles con SlimeVR. Es altamente recomendado que arregles cualquier advertencia mostrada aquí para la mejor experiencia de usuario con SlimeVR.
vrc_config-page-help = ¿No puedes encontrar los ajustes?
vrc_config-page-help-desc = ¡Revisa nuestra <a>documentación en este tema!</a>
vrc_config-page-big_menu = Tracking e IK (Menú Grande)
vrc_config-page-big_menu-desc = Ajustes relacionados a IK en el menú de ajustes grande
vrc_config-page-wrist_menu = Tracking e IK (Menú de Muñeca)
vrc_config-page-wrist_menu-desc = Ajustes relacionados a IK en el menú de ajustes pequeño (menú de muñeca)
vrc_config-on = Encendido
vrc_config-off = Apagado
vrc_config-invalid = ¡Tienes ajustes de VRChat mal configurados!
vrc_config-show_more = Mostrar más
vrc_config-setting_name = Nombre del ajuste de VRChat
vrc_config-recommended_value = Valor recomendado
vrc_config-current_value = Valor actual
vrc_config-mute = Silenciar advertencia
vrc_config-mute-btn = Silenciar
vrc_config-unmute-btn = De-silenciar
vrc_config-legacy_mode = Usar solución de IK de legado
vrc_config-disable_shoulder_tracking = Desactivar tracking de hombros
vrc_config-shoulder_width_compensation = Compensación de ancho de hombros
vrc_config-spine_mode = Modo columna de FBT
vrc_config-tracker_model = Modelo de tracker FBT
vrc_config-avatar_measurement_type = Medida de avatar
vrc_config-calibration_range = Rango de calibración
vrc_config-calibration_visuals = Mostrar visualización de calibración
vrc_config-user_height = Altura real del usuario
vrc_config-spine_mode-UNKNOWN = Desconocido
vrc_config-spine_mode-LOCK_BOTH = Bloquear ambas
vrc_config-spine_mode-LOCK_HEAD = Bloquear cabeza
vrc_config-spine_mode-LOCK_HIP = Bloquear cadera
vrc_config-tracker_model-UNKNOWN = Desconocido
vrc_config-tracker_model-AXIS = Eje
vrc_config-tracker_model-BOX = Caja
vrc_config-tracker_model-SPHERE = Esfera
vrc_config-tracker_model-SYSTEM = Sistema
vrc_config-avatar_measurement_type-UNKNOWN = Desconocido
vrc_config-avatar_measurement_type-HEIGHT = Altura
vrc_config-avatar_measurement_type-ARM_SPAN = Longitud del brazo
## Error collection consent modal
error_collection_modal-title = ¿Podemos recopilar errores?
error_collection_modal-description_v2 =
{ settings-interface-behavior-error_tracking-description_v2 }
Tu puedes cambiar esta configuración más tarde en la sección de comportamiento de la pagina de configuración.
error_collection_modal-confirm = Acepto
error_collection_modal-cancel = No quiero
## Tracking checklist section
tracking_checklist-settings-close = Cerrar
tracking_checklist-STEAMVR_DISCONNECTED-open = Abrir SteamVR
tracking_checklist-TRACKERS_REST_CALIBRATION = Calibra tus trackers
tracking_checklist-ignore = Ignorar
toolbar-assigned_trackers = { $count } trackers asignados
toolbar-unassigned_trackers = { $count } trackers sin asignar

View File

@@ -9,6 +9,11 @@
websocket-connecting = Conectándose al servidor
websocket-connection_lost = Conexión con el servidor perdida. Intentando reconectar...
websocket-connection_lost-desc = Parece que el servidor de SlimeVR ha dejado de funcionar. Revise los registros y reinicie el programa
websocket-timedout = No se ha podido conectar al servidor
websocket-timedout-desc = Parece que el servidor de SlimeVR ha dejado de funcionar o se agotó el tiempo de espera de la conexión. Revise los registros y reinicie el programa
websocket-error-close = Salir de SlimeVR
websocket-error-logs = Abra la carpeta de registros
## Update notification
@@ -26,6 +31,9 @@ tips-tap_setup = Haz clic en el menú o golpea suavemente el tracker 2 veces par
tips-turn_on_tracker = ¿Estás usando trackers oficiales de SlimeVR? Recuerda <b><em>encender el tracker</em></b> antes de conectarlo a la PC!
tips-failed_webgl = No se pudo iniciar WebGL.
## Units
## Body parts
body_part-NONE = Sin asignar
@@ -49,27 +57,147 @@ body_part-LEFT_HAND = Mano izquierda
body_part-LEFT_UPPER_LEG = Muslo izquierdo
body_part-LEFT_LOWER_LEG = Tobillo Izquierdo
body_part-LEFT_FOOT = Pie izquierdo
body_part-LEFT_THUMB_METACARPAL = Metacarpiano del pulgar izquierdo
body_part-LEFT_THUMB_PROXIMAL = Proximal del pulgar izquierdo
body_part-LEFT_THUMB_DISTAL = Distal del pulgar izquierdo
body_part-LEFT_INDEX_PROXIMAL = Proximal del índice izquierdo
body_part-LEFT_INDEX_INTERMEDIATE = Intermedio del índice izquierdo
body_part-LEFT_INDEX_DISTAL = Distal del indice izquierdo
body_part-LEFT_MIDDLE_PROXIMAL = Proximal del medio izquierdo
body_part-LEFT_MIDDLE_INTERMEDIATE = Intermedio del medio izquierdo
body_part-LEFT_MIDDLE_DISTAL = Distal del medio izquierdo
body_part-LEFT_RING_PROXIMAL = Proximal del anular izquierdo
body_part-LEFT_RING_INTERMEDIATE = Intermedio de anular izquierdo
body_part-LEFT_RING_DISTAL = Distal del anular izquierdo
body_part-LEFT_LITTLE_PROXIMAL = Proximal del meñique izquierdo
body_part-LEFT_LITTLE_INTERMEDIATE = Intermedio del meñique izquierdo
body_part-LEFT_LITTLE_DISTAL = Distal del meñique izquierdo
body_part-RIGHT_THUMB_METACARPAL = Metacarpiano del pulgar derecho
body_part-RIGHT_THUMB_PROXIMAL = Proximal del pulgar derecho
body_part-RIGHT_THUMB_DISTAL = Distal del pulgar derecho
body_part-RIGHT_INDEX_PROXIMAL = Proximal del indice derecho
body_part-RIGHT_INDEX_INTERMEDIATE = Indermedio del indice derecho
body_part-RIGHT_INDEX_DISTAL = Distal del indice derecho
body_part-RIGHT_MIDDLE_PROXIMAL = Proximal del medio derecho
body_part-RIGHT_MIDDLE_INTERMEDIATE = Intermedio del medio derecho
body_part-RIGHT_MIDDLE_DISTAL = Distal del medio derecho
body_part-RIGHT_RING_PROXIMAL = Proximal del anular derecho
body_part-RIGHT_RING_INTERMEDIATE = Intermedio del anular derecho
body_part-RIGHT_RING_DISTAL = Distal del anular derecho
body_part-RIGHT_LITTLE_PROXIMAL = Proximal del meñique derecho
body_part-RIGHT_LITTLE_INTERMEDIATE = Intermedio del meñique derecho
body_part-RIGHT_LITTLE_DISTAL = Distal del meñique derecho
## BoardType
board_type-UNKNOWN = Desconocido
board_type-NODEMCU = NodeMCU
board_type-CUSTOM = Placa Desconocida
board_type-WROOM32 = WROOM32
board_type-WEMOSD1MINI = Wemos D1 Mini
board_type-TTGO_TBASE = TTGO T-Base
board_type-ESP01 = ESP-01
board_type-SLIMEVR = SlimeVR
board_type-SLIMEVR_V1_2 = SlimeVR v1.2
board_type-LOLIN_C3_MINI = Lolin C3 Mini
board_type-BEETLE32C3 = Beetle ESP32-C3
board_type-ESP32C3DEVKITM1 = Espressif ESP32-C3 DevKitM-1
board_type-OWOTRACK = owoTrack
board_type-WRANGLER = Wrangler Joycons
board_type-MOCOPI = Sony Mocopi
board_type-WEMOSWROOM02 = Wemos Wroom-02 D1 Mini
board_type-XIAO_ESP32C3 = Seeed Studio XIAO ESP32C3
board_type-HARITORA = Haritora
board_type-ESP32C6DEVKITC1 = Espressif ESP32-C6 DevKitC-1
board_type-GLOVE_IMU_SLIMEVR_DEV = Guante SlimeVR Dev IMU
## Proportions
skeleton_bone-NONE = Ninguno
skeleton_bone-HEAD = Desplazamiento de la cabeza
skeleton_bone-HEAD-desc =
Esta es la distancia desde el visor hasta la mitad de la cabeza.
Para ajustarlo, mueve la cabeza de izquierda a derecha como si no estuvieras de acuerdo y modifícalo
hasta que el movimiento en otros trackers sea insignificante.
skeleton_bone-NECK = Longitud del cuello
skeleton_bone-NECK-desc =
Esta es la distancia desde el medio de tu cabeza hasta la base de tu cuello.
Para ajustarla, mueve tu cabeza para arriba y abajo como si estuvieras asintiendo
o inclinalo a la izquierda y la derecha, continuando modificando
hasta que el movimiento en otros rastreadores es insignificante.
skeleton_bone-torso_group = Longitud del torso
skeleton_bone-torso_group-desc =
Esta es la distacia desde la base de tu cuello hasta tus caderas.
Para ajustarla, modifícala mientras estes de pie derecho hasta que tus caderas virtuales
estan en posicion con las verdaderas.
skeleton_bone-UPPER_CHEST = Longitud del torso superior
skeleton_bone-UPPER_CHEST-desc =
Esta es la distancia desde la base del cuello hasta la mitad del pecho.
Para ajustarlo, ajuste la longitud de su torso correctamente y modifíquelo en varias posiciones
(sentado, inclinado, acostado, etc.) hasta que tu columna vertebral virtual coincida con la real.
skeleton_bone-CHEST_OFFSET = Compensacion del pecho
skeleton_bone-CHEST_OFFSET-desc =
Esto puede ser ajustado para mover su tracker de pecho virtual hacia arriba o hacia abajo para ayudar
con la calibración en ciertos juegos o aplicaciones que pueden esperar que este sea mayor o menor.
skeleton_bone-CHEST = Longitud del pecho
skeleton_bone-CHEST-desc =
Esta es la distancia desde la mitad de su pecho hasta la mitad de su columna vertebral.
Para ajustarlo, ajuste la longitud de su torso correctamente y modifíquelo en varias posiciones
(sentado, inclinado, acostado, etc.) hasta que su columna vertebral virtual coincida con la real.
skeleton_bone-WAIST = Longitud de cintura
skeleton_bone-WAIST-desc =
Esta es la distancia desde la mitad de la columna vertebral hasta el ombligo.
Para ajustarlo, ajuste la longitud de su torso correctamente y modifíquelo en varias posiciones
(sentado, inclinado, acostado, etc.) hasta que tu columna vertebral virtual coincida con la real.
skeleton_bone-HIP = Longitud de cadera
skeleton_bone-HIP-desc =
Esta es la distancia desde el ombligo hasta tus caderas.
Para ajustarlo, configure la longitud de su torso correctamente y modifíquelo en varias posiciones
(sentado, inclinado, acostado, etc.) hasta que tu columna virtual coincida con la real.
skeleton_bone-HIP_OFFSET = Compensacion de cadera
skeleton_bone-HIP_OFFSET-desc =
Esto se puede ajustar para mover su tracker virtual de cadera hacia arriba o hacia abajo para ayudar
con la calibración en ciertos juegos o aplicaciones que pueden esperar que esté en su cintura.
skeleton_bone-HIPS_WIDTH = Ancho de la cadera
skeleton_bone-HIPS_WIDTH-desc =
Esta es la distancia entre el inicio de las piernas.
Para ajustarlo, realice un reinicio completo con las piernas rectas y modifíquelo hasta
que tus piernas virtuales coinciden con las reales horizontalmente.
skeleton_bone-leg_group = Longitud de la espinilla
skeleton_bone-leg_group-desc =
Esta es la distancia desde tus caderas hasta los pies.
Para ajustarlo, ajuste la longitud de su torso correctamente y modifíquelo
hasta que tus pies virtuales estén al mismo nivel que los reales.
skeleton_bone-UPPER_LEG = Longitud del muslo
skeleton_bone-UPPER_LEG-desc =
Esta es la distancia desde las caderas hasta las rodillas.
Para ajustarlo, ajuste la longitud de la pierna correctamente y modifíquelo
hasta que tus rodillas virtuales estén al mismo nivel que las reales.
skeleton_bone-LOWER_LEG = Longitud de la espinilla
skeleton_bone-LOWER_LEG-desc =
Esta es la distancia desde tus rodillas hasta tus tobillos.
Para ajustarlo, ajuste la longitud de la pierna correctamente y modifíquelo
hasta que tus rodillas virtuales estén al mismo nivel que las reales.
skeleton_bone-FOOT_LENGTH = Longitud del pie
skeleton_bone-FOOT_LENGTH-desc =
Esta es la distancia desde tus tobillos hasta los dedos de tus pies.
Para ajustarlo, camina de puntillas y modifícalo hasta que tus pies virtuales permanezcan en su lugar.
skeleton_bone-FOOT_SHIFT = Desplazamiento del pie
skeleton_bone-FOOT_SHIFT-desc =
Este valor es la distancia horizontal desde tu rodilla hacia tu tobillo.
Toma en cuenta la parte baja de tus piernas yendo hacia atrás cuando estes de pie.
Para ajustarlo, pon el largo de los pies a 0, inicie un reinicio completo y modifícalo hasta que tus pies
virtuales se alineen con el medio de tus tobillos.
skeleton_bone-SKELETON_OFFSET = Compensacion del esqueleto
skeleton_bone-SKELETON_OFFSET-desc =
Esto se puede ajustar para desplazar todos sus trackers hacia adelante o hacia atrás.
Se puede utilizar para ayudar con la calibración en ciertos juegos o aplicaciones
que pueden esperar que tus trackers esten mas alante.
skeleton_bone-SHOULDERS_DISTANCE = Distancia de hombros
skeleton_bone-SHOULDERS_DISTANCE-desc =
Esta es la distancia vertical desde la base del cuello hasta tus hombros.
Para ajustarlo, establezca la longitud de la parte superior del brazo en 0 y modifíquelo hasta que tus rastreadores virtuales de tus codos
se alineen verticalmente con tus hombros reales.
skeleton_bone-SHOULDERS_WIDTH = Ancho de hombros
skeleton_bone-arm_group = Longitud del brazo
skeleton_bone-UPPER_ARM = Longitud del brazo
@@ -81,8 +209,18 @@ skeleton_bone-ELBOW_OFFSET = Compensacion de los codos
## Tracker reset buttons
reset-reset_all = Reiniciar todas las proporciones
reset-reset_all_warning-v2 =
<b>Advertencia:</b> Sus proporciones se restablecerán a los valores predeterminados escalados a su altura configurada.
¿Estás seguro de que quiere hacer esto?
reset-reset_all_warning-reset = Restablecer proporciones
reset-reset_all_warning-cancel = Cancelar
reset-reset_all_warning_default-v2 =
<b>Advertencia:</b> Su altura no ha sido configurado, sus proporciones se restablecerán a los valores predeterminados con la altura predeterminada.
¿Estás seguro de que quieres hacer esto?
reset-full = Reinicio completo
reset-mounting = Reiniciar montura
reset-mounting-feet = Reiniciar montura de los pies
reset-mounting-fingers = Reiniciar montura de los dedos
reset-yaw = Restablecimiento horizontal
## Serial detection stuff
@@ -108,6 +246,7 @@ navbar-settings = Configuración
bvh-start_recording = Grabar BVH
bvh-recording = Grabando...
bvh-save_title = Guardar grabación BVH
## Tracking pause
@@ -124,7 +263,7 @@ widget-overlay-is_mirrored_label = Mostrar overlay como espejo
widget-drift_compensation-clear = Eliminar compensacion del drift
## Widget: Clear Reset Mounting
## Widget: Clear Mounting calibration
widget-clear_mounting = Limpiar reinicio de montura
@@ -142,8 +281,13 @@ widget-developer_mode-more_info = Más información
## Widget: IMU Visualizer
widget-imu_visualizer = Rotación
widget-imu_visualizer-preview = Previsualización
widget-imu_visualizer-hide = Ocultar
widget-imu_visualizer-rotation_raw = Sin filtrar
widget-imu_visualizer-rotation_preview = Previsualización
widget-imu_visualizer-acceleration = Aceleración
widget-imu_visualizer-position = Posición
widget-imu_visualizer-stay_aligned = Mantener Alineado
## Widget: Skeleton Visualizer
@@ -171,6 +315,7 @@ tracker-table-column-temperature = Temperatura °C
tracker-table-column-linear-acceleration = Aceleración X/Y/Z
tracker-table-column-rotation = Rotación X/Y/Z
tracker-table-column-position = Posición X/Y/Z
tracker-table-column-stay_aligned = Mantener Alineado
tracker-table-column-url = URL
## Tracker rotation
@@ -195,9 +340,17 @@ tracker-infos-url = URL del Tracker
tracker-infos-version = Versión del firmware
tracker-infos-hardware_rev = Revisión del hardware
tracker-infos-hardware_identifier = ID de hardware
tracker-infos-data_support = Soporte de datos
tracker-infos-imu = Sensor IMU
tracker-infos-board_type = Placa principal
tracker-infos-network_version = Versión de protocolo
tracker-infos-magnetometer = Magnetómetro
tracker-infos-magnetometer-status-v1 =
{ $status ->
[DISABLED] Deshabilitado
[ENABLED] Habilitado
*[NOT_SUPPORTED] Incompatible
}
## Tracker settings
@@ -212,14 +365,27 @@ tracker-settings-mounting_section-edit = Editar montura
tracker-settings-drift_compensation_section = Permitir compensación de drift
tracker-settings-drift_compensation_section-description = ¿Debería este tracker compensar el drifteo cuando la compensación de drifteo está activada?
tracker-settings-drift_compensation_section-edit = Permitir compensación de drift
tracker-settings-use_mag = Permitir magnetómetro en este tracker
# Multiline!
tracker-settings-use_mag-description =
¿Debería este tracker usar el magnetómetro para reducir el drift cuando se permita el uso de este? <b>¡Por favor, no apague su tracker mientras activas esto!</b>
Primero debe permitir el uso del magnetómetro, <magSetting>haga clic aquí para ir a la configuración</magSetting>.
tracker-settings-use_mag-label = Permitir magnetómetro
# The .<name> means it's an attribute and it's related to the top key.
# In this case that is the settings for the assignment section.
tracker-settings-name_section = Nombre del tracker
tracker-settings-name_section-description = Dale un sobrenombre lindo :)
tracker-settings-name_section-placeholder = Pata izquierda del Eevee
tracker-settings-name_section-label = Nombre del tracker
tracker-settings-forget = Olvidar tracker
tracker-settings-forget-description = Elimina el tracker del servidor SlimeVR y evita que se conecte a él hasta que se reinicie el servidor. La configuración del tracker no se perderá.
tracker-settings-forget-label = Olvidar tracker
tracker-settings-update-low-battery = No se puede actualizar. Batería inferior al 50%
tracker-settings-update-up_to_date = Actualizado
tracker-settings-update-blocked = Actualización no disponible. No hay otras versiones disponibles
tracker-settings-update = Actualizar ahora
tracker-settings-update-title = Versión del firmware
## Tracker part card info
@@ -286,6 +452,7 @@ mounting_selection_menu-close = Cerrar
settings-sidebar-title = Configuración
settings-sidebar-general = General
settings-sidebar-tracker_mechanics = Mecánicas del tracker
settings-sidebar-stay_aligned = Mantener Alineado
settings-sidebar-fk_settings = Configuración del tracking
settings-sidebar-gesture_control = Control de los gestos
settings-sidebar-interface = Interfaz
@@ -295,6 +462,10 @@ settings-sidebar-utils = Utilidades
settings-sidebar-serial = Consola serial
settings-sidebar-appearance = Apariencia
settings-sidebar-notifications = Notificaciones
settings-sidebar-behavior = Comportamiento
settings-sidebar-firmware-tool = Herramienta de firmware DIY
settings-sidebar-vrc_warnings = Advertencias de la configuración de VRChat
settings-sidebar-advanced = Avanzado
## SteamVR settings
@@ -341,20 +512,57 @@ settings-general-tracker_mechanics-filtering-type-prediction = Predicción
settings-general-tracker_mechanics-filtering-type-prediction-description = Reduce la latencia y hace que los movimientos sean mas inmediatos, pero puede aumentar la fluctuación.
settings-general-tracker_mechanics-filtering-amount = Cantidad
settings-general-tracker_mechanics-yaw-reset-smooth-time = Tiempo de suavizado al restablecer el eje horizontal (0s deshabilita el suavizado)
settings-general-tracker_mechanics-drift_compensation = Compensación en la desviación
settings-general-tracker_mechanics-drift_compensation = Compensación de drift
# This cares about multilines
settings-general-tracker_mechanics-drift_compensation-description =
Compensa la desviación horizontal del IMU aplicando una rotación inversa.
Cambia la cantidad de compensación y de reinicios que se tienen en cuenta.
settings-general-tracker_mechanics-drift_compensation-enabled-label = Compensación en la desviación
settings-general-tracker_mechanics-drift_compensation-enabled-label = Compensación de drift
settings-general-tracker_mechanics-drift_compensation-prediction = Predicción de compensación de drift
# This cares about multilines
settings-general-tracker_mechanics-drift_compensation-prediction-description =
Predice la compensación de drift horizontal más allá del rango medido anteriormente.
Habilite esta opción si sus rastreadores están girando continuamente en el eje horizontal.
settings-general-tracker_mechanics-drift_compensation-prediction-label = Predicción de compensación de drift
settings-general-tracker_mechanics-drift_compensation_warning =
<b>Advertencia:</b> Utilice la compensación de drift solo si necesita restablecer
muy a menudo (cada ~5-10 minutos).
Algunas IMU propensas a restablecimientos frecuentes incluyen:
Joy-Cons, owoTrack y MPUs (sin firmware reciente).
settings-general-tracker_mechanics-drift_compensation_warning-cancel = Cancelar
settings-general-tracker_mechanics-drift_compensation_warning-done = Yo entiendo
settings-general-tracker_mechanics-drift_compensation-amount-label = Cantidad de compensación
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Usar los últimos X reinicios.
settings-general-tracker_mechanics-save_mounting_reset = Guardar la calibración de reajuste de montaje automático
settings-general-tracker_mechanics-save_mounting_reset-description =
Guarda las calibraciones de reajuste de montaje automático para los trackers entre reinicios. Útil
Guarda las calibraciones de reajuste de montaje automático para los trackers entre reinicios. Útil
cuando se lleva un traje en el que los trackers no se mueven entre sesiones. <b>No recomendado para usuarios normales!</b>
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Guardar restablecimiento de montaje
settings-general-tracker_mechanics-use_mag_on_all_trackers = Usar el magnetómetro en todos los trackers IMU que lo soporten
settings-general-tracker_mechanics-use_mag_on_all_trackers-description =
Utiliza el magnetómetro en todos los trackers que tienen un firmware compatible con él, lo que reduce el drift en entornos magnéticos estables.
Se puede desactivar por rastreador en la configuración de los trackers. <b>¡Por favor, no apagues ninguno de los trackers mientras activas esta opción!</b>
settings-general-tracker_mechanics-use_mag_on_all_trackers-label = Usar magnetómetro en los rastreadores
settings-stay_aligned = Mantener Alineado
settings-stay_aligned-description = Mantener Alineado reduce el drift ajustando gradualmente tus trackers para que coincidan con tus poses relajadas
settings-stay_aligned-setup-label = Configurar Mantener Alineado
settings-stay_aligned-setup-description = Debe completar "Configurar Mantener Alineado" para habilitar Mantener Alineado.
settings-stay_aligned-warnings-drift_compensation = ⚠ ¡Desactive la compensación de drift! La compensación de drift entrará en conflicto con Mantener Alineado.
settings-stay_aligned-enabled-label = Ajustar trackers
settings-stay_aligned-hide_yaw_correction-label = Ocultar ajuste (para comparar sin Mantener Alineado)
settings-stay_aligned-general-label = General
settings-stay_aligned-relaxed_poses-label = Posturas relajadas
settings-stay_aligned-relaxed_poses-description = Mantener Alineado utiliza tus posturas relajadas para mantener los trackers alineados. Usa "Configurar Mantener Alineado" para actualizar estas posturas.
settings-stay_aligned-relaxed_poses-standing = Ajustar los trackers mientras estás de pie
settings-stay_aligned-relaxed_poses-sitting = Ajustar los trackers mientras estás sentado en una silla
settings-stay_aligned-relaxed_poses-flat = Ajuste los trackers mientras estás sentado en el suelo o acostado boca arriba
settings-stay_aligned-relaxed_poses-save_pose = Guardar pose
settings-stay_aligned-relaxed_poses-reset_pose = Restablecer pose
settings-stay_aligned-relaxed_poses-close = Cierra
settings-stay_aligned-debug-label = Depuración
settings-stay_aligned-debug-description = Incluya su configuración cuando informe problemas sobre Mantener Alineado.
settings-stay_aligned-debug-copy-label = Copiar ajustes al portapapeles
## FK/Tracking settings
@@ -376,8 +584,13 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = Anclado al suelo
settings-general-fk_settings-leg_tweak-toe_snap-description = "Acople de puntera" intenta adivinar la rotación de tus pies si los trackers de estos no están en uso.
settings-general-fk_settings-leg_tweak-foot_plant-description = El plantado de pie gira los pies para que queden paralelos al suelo en el momento del contacto.
settings-general-fk_settings-leg_fk = Tracking de piernas
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Habilitar reinicio de montura de los pies al estar de puntillas.
settings-general-fk_settings-leg_fk-reset_mounting_feet = Reinicio de montura de los pies.
settings-general-fk_settings-leg_fk-reset_mounting_feet-description-v1 = Forzar el restablecimiento del montaje de los pies durante los reinicios generales del montaje.
settings-general-fk_settings-leg_fk-reset_mounting_feet-v1 = Forzar reinicio de la montura de los pies.
settings-general-fk_settings-enforce_joint_constraints = Límites esqueléticos
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = Imponer restricciones
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints-description = Evita que las articulaciones giren más allá de su límite
settings-general-fk_settings-enforce_joint_constraints-correct_constraints = Corregir con las limitaciones
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = Corregir las rotaciones de las articulaciones cuando superan su límite
settings-general-fk_settings-arm_fk = Tracking de brazos
settings-general-fk_settings-arm_fk-description = Forzar el seguimiento de los brazos desde el HMD incluso si hay datos de posición de la mano disponibles.
settings-general-fk_settings-arm_fk-force_arms = Forzar brazos desde el HMD
@@ -409,9 +622,6 @@ settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = Prome
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = Promedia el balanceo de las rodillas con la de los tobillos
settings-general-fk_settings-self_localization-title = Modo Captura de movimiento
settings-general-fk_settings-self_localization-description = El modo captura de movimiento permite al esqueleto seguir aproximadamente tu posición sin auriculares ni otros trackers. Ten en cuenta que esto requiere trrackers de pies y cabeza para funcionar y que aún está en fase experimental.
settings-general-fk_settings-vive_emulation-title = Emulación Vive
settings-general-fk_settings-vive_emulation-description = Emula los problemas de cintura que lo Vive trackers producen. Es una broma y produce peor tracking.
settings-general-fk_settings-vive_emulation-label = Habilitar emulación Vive
## Gesture control settings (tracker tapping)
@@ -422,9 +632,9 @@ settings-general-gesture_control-description = Permite que los reinicios se acti
# $amount (Number) - Amount of taps (touches to the tracker's case)
settings-general-gesture_control-taps =
{ $amount ->
[one] toque
[many] toques
*[other] toques
[one] 1 toque
[many] { $amount } toques
*[other] { $amount } toques
}
# This is a unit: 3 trackers, 2 trackers, 1 tracker
# $amount (Number) - Amount of trackers
@@ -468,6 +678,8 @@ settings-interface-appearance-font-os_font = Fuente SO
settings-interface-appearance-font-slime_font = Fuente predeterminada
settings-interface-appearance-font_size = Escala de la fuente base
settings-interface-appearance-font_size-description = Esto afecta al tamaño de la fuente de toda la interfaz excepto este panel de configuración
settings-interface-appearance-decorations = Utilizar las decoraciones nativas del sistema
settings-interface-appearance-decorations-description = Esto no renderizará la barra superior de la interfaz y utilizará la del sistema operativo en su lugar.
settings-interface-appearance-decorations-label = Usar decoraciones nativos.
## Notification settings
@@ -483,6 +695,10 @@ settings-general-interface-feedback_sound-volume = Volumen del sonido de feedbac
settings-general-interface-connected_trackers_warning = Advertencia de trackers conectados
settings-general-interface-connected_trackers_warning-description = Esta opción mostrará una ventana emergente cada vez que intentes salir de SlimeVR mientras tengas uno o más trackers conectados. Te recuerda que debes apagar los trackers cuando hayas terminado para ahorrar batería.
settings-general-interface-connected_trackers_warning-label = Aviso de trackers conectados al cerrar
## Behavior settings
settings-interface-behavior = Comportamiento
settings-general-interface-use_tray = Minimizar a la bandeja
settings-general-interface-use_tray-description = Te permite cerrar la ventana sin cerrar SlimeVR para que pueda seguir usándolo sin que la interfaz te moleste.
settings-general-interface-use_tray-label = Minimizar en la bandeja del sistema
@@ -495,6 +711,17 @@ settings-general-interface-discord_presence-message =
[one] Usando 1 tracker
*[other] Usando { $amount } trackers
}
settings-interface-behavior-error_tracking = Recopilación de errores a través de Sentry.io
settings-interface-behavior-error_tracking-description_v2 =
<h1>¿Da su consentimiento para la recopilación de datos de error anónimos?</h1>
<b>No recopilamos información personal</b> , como su dirección IP o credenciales inalámbricas. ¡SlimeVR valora tu privacidad!
Para proporcionar la mejor experiencia de usuario, recopilamos informes de errores anónimos, métricas de rendimiento e información del sistema operativo. Esto nos ayuda a detectar errores y problemas con SlimeVR. Estas métricas se recopilan a través de Sentry.io.
settings-interface-behavior-error_tracking-label = Enviar errores a los desarrolladores
settings-interface-behavior-bvh_directory = Directorio para guardar grabaciones BVH
settings-interface-behavior-bvh_directory-description = Elija un directorio para guardar sus grabaciones BVH en lugar de tener que elegir dónde guardarlas cada vez.
settings-interface-behavior-bvh_directory-label = Directorio de grabaciones BVH
## Serial settings
@@ -513,12 +740,13 @@ settings-serial-factory_reset-warning =
Esto significa que los ajustes de Wi-Fi y calibración <b>se perderán</b>.
settings-serial-factory_reset-warning-ok = Sé lo que estoy haciendo
settings-serial-factory_reset-warning-cancel = Cancelar
settings-serial-get_infos = Obtener información
settings-serial-serial_select = Selecciona un puerto serial
settings-serial-auto_dropdown_item = Automático
settings-serial-get_wifi_scan = Obtener escaneo WiFi
settings-serial-file_type = Texto sin formato
settings-serial-save_logs = Guardar en archivo
settings-serial-send_command = Enviar
settings-serial-send_command-warning-cancel = Cancelar
## OSC router settings
@@ -558,6 +786,13 @@ settings-osc-vrchat-description-v1 =
settings-osc-vrchat-enable = Habilitar
settings-osc-vrchat-enable-description = Alternar el envío y la recepción de datos
settings-osc-vrchat-enable-label = Habilitar
settings-osc-vrchat-oscqueryEnabled = Habilitar OSCQuery
settings-osc-vrchat-oscqueryEnabled-description =
OSCQuery detecta automáticamente las instancias en ejecución de VRChat y les envía datos.
También puede anunciarse a ellos para recibir datos de HMD y mandos.
Para permitir la recepción de datos de HMD y mandos de VRChat, vaya a la configuración de su menú principal
en "Seguimiento e IK" y habilite "Permitir el envío de datos OSC de seguimiento de VR de cabeza y muñeca".
settings-osc-vrchat-oscqueryEnabled-label = Habilitar OSCQuery
settings-osc-vrchat-network = Puertos de red
settings-osc-vrchat-network-description-v1 = Establece los puertos para recibir y enviar datos. Se puede dejar sin modificar para VRChat.
settings-osc-vrchat-network-port_in =
@@ -598,12 +833,7 @@ settings-osc-vmc-network-address-description = Elige la dirección a la que se e
settings-osc-vmc-network-address-placeholder = Dirección IPV4
settings-osc-vmc-vrm = Modelo VRM
settings-osc-vmc-vrm-description = Cargar un modelo VRM para permitir el anclaje de la cabeza y posibilitar una mayor compatibilidad con otras aplicaciones.
settings-osc-vmc-vrm-model_unloaded = No hay modelo cargado
settings-osc-vmc-vrm-model_loaded =
{ $titled ->
[true] Modelo cargado: { $name }
*[false] Modelo sin título cargado
}
settings-osc-vmc-vrm-untitled_model = Modelo sin título
settings-osc-vmc-vrm-file_select = Arrastre y suelte un modelo para utilizarlo, o <u>busquelo</u>
settings-osc-vmc-anchor_hip = Anclar a la cadera
settings-osc-vmc-anchor_hip-description = Ancla el tracking a la cadera, útil para VTubing sentado. Si se deshabilita, carga un modelo VRM.
@@ -612,6 +842,9 @@ settings-osc-vmc-mirror_tracking = Invertir el tracking
settings-osc-vmc-mirror_tracking-description = Invierte el tracking horizontalmente.
settings-osc-vmc-mirror_tracking-label = Invertir el tracking
## Common OSC settings
## Advanced settings
settings-utils-advanced = Avanzado
@@ -623,9 +856,33 @@ settings-utils-advanced-reset-server-description = Restaurar la configuración p
settings-utils-advanced-reset-server-label = Restablecer el tracking,
settings-utils-advanced-reset-all = Restablecer todas las configuraciónes
settings-utils-advanced-reset-all-description = Restaurar la configuración predeterminada para el interfaz y el tracking.
settings-utils-advanced-reset-all-label = Restablecer todo
settings-utils-advanced-reset_warning =
{ $type ->
[gui]
<b>Advertencia:</b> Esto restablecerá la configuración de la interfaz a los valores predeterminados
¿Esta seguro de que quiere hacer esto?
[server]
<b>Advertencia:</b> Esto restablecerá la configuración de los trackers a los valores predeterminados
¿Esta seguro de que quiere hacer esto?
*[all]
<b>Advertencia:</b> Esto restablecerá todas las configuraciones a los valores predeterminados
¿Esta seguro de que quiere hacer esto?
}
settings-utils-advanced-reset_warning-reset = Restablecer la configuración
settings-utils-advanced-reset_warning-cancel = Cancelar
settings-utils-advanced-open_data = Carpeta de datos
settings-utils-advanced-open_data-v1 = Carpeta de configuración
settings-utils-advanced-open_data-description-v1 = Abrirá la carpeta de configuración de SlimeVR en el explorador de archivos, que contiene la configuración
settings-utils-advanced-open_data-label = Abrir carpeta
settings-utils-advanced-open_logs = Carpeta de registros
settings-utils-advanced-open_logs-description = Abra la carpeta de registros de SlimeVR en el explorador de archivos, que contiene los registros de la aplicación
settings-utils-advanced-open_logs-label = Abrir carpeta
## Home Screen
## Tracking Checlist
## Setup/onboarding menu
@@ -642,16 +899,12 @@ onboarding-setup_warning-cancel = Continuar con la configuración
## Wi-Fi setup
onboarding-wifi_creds-back = Volver a la introducción
onboarding-wifi_creds = Introduce credenciales de Wi-Fi
# This cares about multilines
onboarding-wifi_creds-description =
Los trackers utilizarán estas credenciales para conectarse de forma inalámbrica.
Por favor, utiliza las credenciales a las que está conectado actualmente.
onboarding-wifi_creds-skip = Omitir configuración Wi-Fi
onboarding-wifi_creds-submit = ¡Enviar!
onboarding-wifi_creds-ssid =
.label = Nombre Wi-Fi
.placeholder = Introduce nombre de Wi-Fi
onboarding-wifi_creds-ssid-required = Es necesario el nombre del Wi-Fi
onboarding-wifi_creds-password =
.label = Contraseña
.placeholder = Introduce contraseña
@@ -686,13 +939,6 @@ onboarding-reset_tutorial-2 =
onboarding-home = Bienvenido a SlimeVR
onboarding-home-start = ¡Vamos a prepararnos!
## Enter VR part of setup
onboarding-enter_vr-back = Volver a la asignación del tracker
onboarding-enter_vr-title = ¡Hora de entrar en VR!
onboarding-enter_vr-description = ¡Ponte todos tus trackers y luego entra a la realidad virtual!
onboarding-enter_vr-ready = Estoy listo
## Setup done
onboarding-done-title = ¡Todo listo!
@@ -709,12 +955,24 @@ onboarding-connect_tracker-issue-serial = ¡Tengo problemas para conectarme!
onboarding-connect_tracker-usb = Tracker USB
onboarding-connect_tracker-connection_status-none = Buscando trackers
onboarding-connect_tracker-connection_status-serial_init = Conectándose al dispositivo serial
onboarding-connect_tracker-connection_status-obtaining_mac_address = Obteniendo la dirección MAC del tracker
onboarding-connect_tracker-connection_status-provisioning = Enviando credenciales Wi-Fi
onboarding-connect_tracker-connection_status-connecting = Intentando conectarse a una red Wi-Fi
onboarding-connect_tracker-connection_status-looking_for_server = Buscando servidor
onboarding-connect_tracker-connection_status-connection_error = No se puede conectar al Wi-Fi
onboarding-connect_tracker-connection_status-could_not_find_server = No se pudo encontrar el servidor
onboarding-connect_tracker-connection_status-done = Conectado al Server
onboarding-connect_tracker-connection_status-no_serial_log = No se pudieron obtener los registros del tracker
onboarding-connect_tracker-connection_status-no_serial_device_found = No se pudo encontrar un tracker conectado por USB
onboarding-connect_serial-error-modal-no_serial_log = ¿Está encendido el tracker?
onboarding-connect_serial-error-modal-no_serial_log-desc = Asegúrate de que el tracker esté encendido y conectado a tu ordenador.
onboarding-connect_serial-error-modal-no_serial_device_found = No se detectaron trackers
onboarding-connect_serial-error-modal-no_serial_device_found-desc =
Conecte un tracker con el cable USB proporcionado a su ordenador y enciéndalo.
Si esto no funciona:
- intente usar un cable USB diferente
- intente usar un puerto USB diferente
- intente reinstalar el servidor SlimeVR y seleccione "Controladores USB" en la sección de componentes
# $amount (Number) - Amount of trackers connected (this is a number, but you can use CLDR plural rules for your language)
# More info on https://www.unicode.org/cldr/cldr-aux/charts/22/supplemental/language_plural_rules.html
# English in this case only has 2 plural rules, which are "one" and "other",
@@ -732,12 +990,12 @@ onboarding-connect_tracker-next = He conectado todos mis trackers
onboarding-calibration_tutorial = Tutorial de calibración de IMU
onboarding-calibration_tutorial-subtitle = ¡Esto ayudará a reducir el drift de los trackers!
onboarding-calibration_tutorial-description = Cada vez que enciendas tus trackers, estos necesitan descansar sobre una superficie plana para calibrarse. Hagamos lo mismo pulsando el botón «{ onboarding-calibration_tutorial-calibrate }», <b>¡no los muevas!</b>
onboarding-calibration_tutorial-calibrate = Mis trackers estan en una superficie plana
onboarding-calibration_tutorial-status-waiting = Esperando por ti
onboarding-calibration_tutorial-status-calibrating = Calibrando
onboarding-calibration_tutorial-status-success = ¡Bien!
onboarding-calibration_tutorial-status-error = El tracker se ha movido
onboarding-calibration_tutorial-skip = Saltar tutorial
## Tracker assignment tutorial
@@ -899,44 +1157,27 @@ onboarding-automatic_mounting-mounting_reset-title = Reinicio de montura
onboarding-automatic_mounting-mounting_reset-step-0 = 1. Ponte en cuclillas en postura de "esquí" con las piernas dobladas, la parte superior del cuerpo inclinada hacia adelante y los brazos doblados.
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Presiona el botón "Restablecer montaje" y espera 3 segundos antes de que se restablezcan las orientaciones de montaje de los trackers.
onboarding-automatic_mounting-preparation-title = Preparación
onboarding-automatic_mounting-preparation-step-0 = 1. Mantente erguido con los brazos a los lados.
onboarding-automatic_mounting-preparation-step-1 = 2. Pulse el botón "Reinicio completo" y espere 3 segundos antes de que los trackers se reinicien.
onboarding-automatic_mounting-preparation-v2-step-0 = 1. Presione el botón de "Reinicio completo".
onboarding-automatic_mounting-preparation-v2-step-1 = 2. Ponte de pie con los brazos a los lados. Asegúrate de mirar hacia adelante.
onboarding-automatic_mounting-preparation-v2-step-2 = 3. Mantenga la posición hasta que finalice el temporizador de 3 segundos.
onboarding-automatic_mounting-put_trackers_on-title = Ponte los trackers
onboarding-automatic_mounting-put_trackers_on-description = Para calibrar la posiciones de montura, vamos a utilizar los trackers que acabas de asignar. Colocate todos tus trackers, puedes ver cuales son cuales en la figura de la derecha.
onboarding-automatic_mounting-put_trackers_on-next = Tengo todos mis trackers en posicion
onboarding-automatic_mounting-return-home = Hecho
## Tracker proportions method choose
## Tracker manual proportions setupa
onboarding-choose_proportions = ¿Qué método de calibración de proporciones utilizara?
# Multiline string
onboarding-choose_proportions-description-v1 =
Las proporciones corporales se utilizaran para conocer las medidas de tu cuerpo. Son necesarias para calcular las posiciones de los trackers.
Cuando las proporciones de tu cuerpo no coincidan con las guardadas, la precisión del tracking será peor y notarás cosas como que patinas o te deslizas, o que tu cuerpo no se ajusta bien a tu avatar.
<b>¡Sólo necesitas medir tu cuerpo una vez!</b> A menos que estén mal o tu cuerpo haya cambiado, entonces no necesitas volver a hacerlo.
onboarding-choose_proportions-auto_proportions = Proporciones automáticas
# Italicized text
onboarding-choose_proportions-auto_proportions-subtitle = Recomendado
onboarding-choose_proportions-auto_proportions-descriptionv3 =
Adivinará tus proporciones grabando una muestra de tus movimientos y pasándola por un algoritmo.
<b>¡Esto requiere tener tu visor (HMD) conectado a SlimeVR y en tu cabeza!</b>
onboarding-choose_proportions-manual_proportions = Proporciones manuales
# Italicized text
onboarding-choose_proportions-manual_proportions-subtitle = Para pequeños retoques
onboarding-choose_proportions-manual_proportions-description = Esto te permitirá ajustar tus proporciones manualmente modificándolas directamente
onboarding-choose_proportions-export = Exportar proporciones
onboarding-choose_proportions-import = Importar proporciones
onboarding-choose_proportions-import-success = Importado
onboarding-choose_proportions-import-failed = Fallido
onboarding-choose_proportions-file_type = Archivo de proporciones físicas
## Tracker manual proportions setup
onboarding-manual_proportions-back = Volver al tutorial de reinicios
onboarding-manual_proportions-title = Proporciones físicas manuales
onboarding-manual_proportions-precision = Ajuste por precisión
onboarding-manual_proportions-auto = Proporciones automáticas
onboarding-manual_proportions-ratio = Ajustar por grupos de ratio
onboarding-manual_proportions-fine_tuning_button = Ajuste automático de las proporciones
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Conecte el visor RV para usar el ajuste automatico
onboarding-manual_proportions-export = Exportar proporciones
onboarding-manual_proportions-import = Importar proporciones
onboarding-manual_proportions-file_type = Archivo de proporciones físicas
onboarding-manual_proportions-normal_increment = Incremento normal
onboarding-manual_proportions-precise_increment = Incremento preciso
onboarding-manual_proportions-grouped_proportions = Proporciones agrupadas
onboarding-manual_proportions-all_proportions = Todas las proporciones
onboarding-manual_proportions-estimated_height = Altura estimada del usuario
## Tracker automatic proportions setup
@@ -957,21 +1198,33 @@ onboarding-automatic_proportions-requirements-descriptionv2 =
Tu visor están reportando datos de posición al servidor de SlimeVR (esto generalmente significa tener SteamVR ejecutándose y conectado a SlimeVR usando el driver para SteamVR de SlimeVR).
Su tracking está funcionando y está representando con precisión sus movimientos (ej. usted ha realizado un reinicio completo y se mueven en la dirección correcta al patear, agacharse, sentarse, etc).
onboarding-automatic_proportions-requirements-next = He leído los requisitos
onboarding-automatic_proportions-check_height-title = Comprueba tu altura
onboarding-automatic_proportions-check_height-description = Utilizamos tu estatura como base de nuestras mediciones utilizando la altura de tu visor (HMD) como aproximación a tu estatura real, ¡pero es mejor que compruebes tú mismo si son correctas!
onboarding-automatic_proportions-check_height-title-v3 = Medir la altura del visor
onboarding-automatic_proportions-check_height-description-v2 = La altura se su visor (HMD) deberia ser un poco menos que su altura total, ya que el visor mide la altura hasta sus ojos. Esta medición sera usada como base para las proporciones de su cuerpo.
# All the text is in bold!
onboarding-automatic_proportions-check_height-calculation_warning = Por favor, pulse el botón mientras esté <u>derecho</u> para calcular su altura. ¡Tienes 3 segundos después de pulsar el botón!
onboarding-automatic_proportions-check_height-calculation_warning-v3 = Empieze a medir mientras este <u>de pie</u> para medir su altura. ¡Tenga cuidado de no levantar las manos mas alto que su visor, ya que podria afectar la medición!
onboarding-automatic_proportions-check_height-guardian_tip =
Si usted está usando un visor VR standalone, ¡asegúrese de tener su guardián /
limite activado para que tu altura sea la correcta!
onboarding-automatic_proportions-check_height-fetch_height = ¡Estoy de pie!
# Context is that the height is unknown
onboarding-automatic_proportions-check_height-unknown = Desconocida
# Shows an element below it
onboarding-automatic_proportions-check_height-hmd_height1 = La altura de tu HMD es
onboarding-automatic_proportions-check_height-hmd_height2 = La altura del visor es:
onboarding-automatic_proportions-check_height-measure-start = Empezar a medir
onboarding-automatic_proportions-check_height-measure-stop = Parar de medir
onboarding-automatic_proportions-check_height-measure-reset = Reintentar medición
onboarding-automatic_proportions-check_height-next_step = Usar la altura del visor
onboarding-automatic_proportions-check_floor_height-title = Medir la altura del piso (opcional)
onboarding-automatic_proportions-check_floor_height-description = En algunos casos, es posible que la altura del suelo no esté configurada correctamente por su visor, lo que hace esta sea más alta de lo que debería ser. Puede medir la "altura" de su piso para corregir la altura del visor.
# All the text is in bold!
onboarding-automatic_proportions-check_floor_height-calculation_warning-v2 = Comience a medir y coloque un mando contra su piso para medir su altura. Si está seguro de que la altura de su suelo es la correcta, puede omitir este paso.
# Shows an element below it
onboarding-automatic_proportions-check_height-height1 = por lo que tu altura real es
onboarding-automatic_proportions-check_height-next_step = Están bien
onboarding-automatic_proportions-check_floor_height-floor_height = La altura del suelo es:
onboarding-automatic_proportions-check_floor_height-full_height = Su altura total estimada es:
onboarding-automatic_proportions-check_floor_height-measure-start = Empezar a medir
onboarding-automatic_proportions-check_floor_height-measure-stop = Parar de medir
onboarding-automatic_proportions-check_floor_height-measure-reset = Reintentar medición
onboarding-automatic_proportions-check_floor_height-skip_step = Saltar paso y guardar
onboarding-automatic_proportions-check_floor_height-next_step = Usar altura del suelo y guardar
onboarding-automatic_proportions-start_recording-title = Prepárate para moverte
onboarding-automatic_proportions-start_recording-description = Ahora vamos a grabar algunas poses y movimientos específicos. Se le indicarán en la siguiente pantalla. ¡Prepárate para empezar cuando pulse el botón!
onboarding-automatic_proportions-start_recording-next = Iniciar grabación
@@ -1001,7 +1254,52 @@ onboarding-automatic_proportions-verify_results-redo = Rehacer la grabación
onboarding-automatic_proportions-verify_results-confirm = Estan correctas
onboarding-automatic_proportions-done-title = Proporciones medidas y guardadas.
onboarding-automatic_proportions-done-description = ¡Calibración de las proporciones físicas completada!
onboarding-automatic_proportions-error_modal-v2 =
<b>Advertencia:</b> ¡Hubo un error al estimar las proporciones!
Es probable que se trate de un problema de calibración de montura. Asegúrate de que el tracking funciona correctamente antes de volver a intentarlo.
<docs>Consulta la documentación</docs> o únete a nuestro <discord>Discord</discord> para obtener ayuda ^_^
onboarding-automatic_proportions-error_modal-confirm = ¡Entendido!
onboarding-automatic_proportions-smol_warning =
La altura configurada de { $height } es menor que la altura mínima aceptada de { $minHeight }.
<b>Vuelva a hacer las mediciones y asegúrese de que sean correctas.</b>
onboarding-automatic_proportions-smol_warning-cancel = Volver
## User height calibration
## Stay Aligned setup
onboarding-stay_aligned-title = Mantener Alineado
onboarding-stay_aligned-description = Configure Mantener Alineado para mantener sus trackers alineados.
onboarding-stay_aligned-put_trackers_on-title = Ponte los trackers
onboarding-stay_aligned-put_trackers_on-description = Para guardar tus posturas de descanso, vamos a utilizar los trackers que acabas de asignar. Ponte todos tus trackers, puedes ver cuál es cuál en la figura de la derecha.
onboarding-stay_aligned-put_trackers_on-trackers_warning = ¡Tiene menos de 5 trackers actualmente conectados y asignados! Esta es la cantidad mínima de trackers necesarios para que Mantener Alineado funcione correctamente.
onboarding-stay_aligned-put_trackers_on-next = Tengo todos mis trackers puestos
onboarding-stay_aligned-verify_mounting-title = Verifique su montaje
onboarding-stay_aligned-verify_mounting-step-0 = Mantener Alineado requiere un buen montaje. De lo contrario, no obtendrá una buena experiencia con Mantener Alineado.
onboarding-stay_aligned-verify_mounting-step-1 = 1. Muévete mientras estás de pie.
onboarding-stay_aligned-verify_mounting-step-2 = 2. Siéntate y mueve las piernas y los pies.
onboarding-stay_aligned-verify_mounting-step-3 = 3. Si sus trackers no están en el lugar correcto, presione "Rehacer calibración de montaje".
onboarding-stay_aligned-verify_mounting-redo_mounting = Rehacer calibración de montaje
onboarding-stay_aligned-preparation-title = Preparación
onboarding-stay_aligned-preparation-tip = Asegúrate de estar de pie. Sigue mirando hacia adelante con los brazos hacia abajo a los lados.
onboarding-stay_aligned-relaxed_poses-standing-title = Postura de pie relajada
onboarding-stay_aligned-relaxed_poses-standing-step-0 = 1. Párese en una posición cómoda. ¡Relájate!
onboarding-stay_aligned-relaxed_poses-standing-step-1-v2 = 2. Presione el botón "Guardar pose".
onboarding-stay_aligned-relaxed_poses-sitting-title = Postura relajada sentado en silla
onboarding-stay_aligned-relaxed_poses-sitting-step-0 = 1. Siéntese en una posición cómoda. ¡Relájate!
onboarding-stay_aligned-relaxed_poses-sitting-step-1-v2 = 2. Presione el botón "Guardar pose".
onboarding-stay_aligned-relaxed_poses-flat-title = Postura relajada sentado en el suelo
onboarding-stay_aligned-relaxed_poses-flat-step-0 = 1. Siéntate en el suelo con las piernas al frente. ¡Relájate!
onboarding-stay_aligned-relaxed_poses-flat-step-1-v2 = 2. Presione el botón "Guardar pose".
onboarding-stay_aligned-relaxed_poses-skip_step = Omitir
onboarding-stay_aligned-done-title = ¡Mantener Alineado habilitado!
onboarding-stay_aligned-done-description = ¡Su configuración de Mantener Alineado está completa!
onboarding-stay_aligned-done-description-2 = ¡La configuración está completa! Puede reiniciar el proceso si desea recalibrar las poses.
onboarding-stay_aligned-previous_step = Atrás
onboarding-stay_aligned-next_step = Siguiente
onboarding-stay_aligned-restart = Reiniciar
onboarding-stay_aligned-done = Hecho
## Home
@@ -1027,6 +1325,83 @@ status_system-StatusSteamVRDisconnected =
status_system-StatusTrackerError = El tracker { $trackerName } tiene un error.
status_system-StatusUnassignedHMD = El casco de RV debe asignarse como tracker de cabeza.
## Firmware tool globals
firmware_tool-next_step = Siguiente paso
firmware_tool-previous_step = Paso anterior
firmware_tool-ok = Se ve bien
firmware_tool-retry = Reintentar
firmware_tool-loading = Cargando...
## Firmware tool Steps
firmware_tool = Herramienta de firmware DIY
firmware_tool-description = Le permite configurar y actualizar sus trackers DIY
firmware_tool-not_available = Vaya, la herramienta de firmware no está disponible en este momento. ¡Vuelve más tarde!
firmware_tool-not_compatible = La herramienta de firmware no es compatible con esta versión del servidor. ¡Por favor, actualice su servidor!
firmware_tool-flash_method_step = Método de flasheado
firmware_tool-flash_method_step-description = Seleccione el método de flasheado que desea utilizar
firmware_tool-flashbtn_step = Pulse el botón de boot
firmware_tool-flashbtn_step-description = Antes de pasar al siguiente paso, hay algunas cosas que debe hacer
firmware_tool-flashbtn_step-board_SLIMEVR = Apague el tracker, retire la carcasa (si la hay), conecte un cable USB a este ordenador y, a continuación, realice uno de los siguientes pasos de acuerdo con la revisión de la placa SlimeVR:
firmware_tool-flashbtn_step-board_OTHER =
Antes de flashear, probablemente tendrá que poner el tracker en modo bootloader.
La mayoría de las veces significa presionar el botón de boot en la placa antes de que comience el proceso de flasheo.
Si el tiempo de espera del proceso de flasheo se agota al comienzo, probablemente signifique que el tracker no estaba en modo bootloader
Consulte las instrucciones de flasheo de su placa para saber cómo activar el modo bootloader
firmware_tool-flash_method_ota-devices = Dispositivos OTA detectados:
firmware_tool-flash_method_ota-no_devices = No hay placas que se puedan actualizar mediante OTA, asegúrese de seleccionar el tipo de placa correcto
firmware_tool-flash_method_serial-wifi = Credenciales del Wi-Fi:
firmware_tool-flash_method_serial-devices-label = Dispositivos seriales detectados:
firmware_tool-flash_method_serial-devices-placeholder = Seleccione un dispositivo serial
firmware_tool-flash_method_serial-no_devices = No se han detectado dispositivos serial compatibles, asegúrese de que el tracker esté enchufado
firmware_tool-build_step = Compilando
firmware_tool-build_step-description = El firmware se está compilando, espere por favor
firmware_tool-flashing_step = Flasheando
firmware_tool-flashing_step-description = Sus trackers estan siendo flasheados, por favor siga las instrucciones en pantalla
firmware_tool-flashing_step-warning-v2 = No desconectes ni apagues el tracker durante el proceso de carga a menos que se le indique, ya que puede hacer que tu placa quede inutilizable
firmware_tool-flashing_step-flash_more = Flashear más trackers
firmware_tool-flashing_step-exit = Salir
## firmware tool build status
firmware_tool-build-CREATING_BUILD_FOLDER = Creando la carpeta de compilación
firmware_tool-build-BUILDING = Compilando el firmware
firmware_tool-build-SAVING = Guardando la compilación
firmware_tool-build-DONE = Compilación completa
firmware_tool-build-ERROR = No se ha podido compilar el firmware
## Firmware update status
firmware_update-status-DOWNLOADING = Descargando el firmware
firmware_update-status-NEED_MANUAL_REBOOT-v2 = Por favor, apague y vuelva a encender su rastreador
firmware_update-status-AUTHENTICATING = Autenticando con el microcontrolador
firmware_update-status-UPLOADING = Cargando el firmware
firmware_update-status-SYNCING_WITH_MCU = Sincronizando con el microcontrolador
firmware_update-status-REBOOTING = Aplicando la actualización
firmware_update-status-PROVISIONING = Aplicando credenciales Wi-Fi
firmware_update-status-DONE = ¡Actualización completa!
firmware_update-status-ERROR_DEVICE_NOT_FOUND = No se ha podido encontrar el dispositivo
firmware_update-status-ERROR_TIMEOUT = Se agotó el tiempo de espera del proceso de actualización
firmware_update-status-ERROR_DOWNLOAD_FAILED = No se pudo descargar el firmware
firmware_update-status-ERROR_AUTHENTICATION_FAILED = No se pudo autenticar con el microcontrolador
firmware_update-status-ERROR_UPLOAD_FAILED = No se pudo cargar el firmware
firmware_update-status-ERROR_PROVISIONING_FAILED = No se pudieron configurar las credenciales de Wi-Fi
firmware_update-status-ERROR_UNSUPPORTED_METHOD = El metodo de actualización no es compatible
firmware_update-status-ERROR_UNKNOWN = Error desconocido
## Dedicated Firmware Update Page
firmware_update-title = Actualización de firmware
firmware_update-devices = Dispositivos disponibles
firmware_update-devices-description = Seleccione los trackers que desea actualizar a la última versión del firmware de SlimeVR
firmware_update-no_devices = ¡Asegúrese de que los trackers que desea actualizar estén encendidos y conectados al Wi-Fi!
firmware_update-changelog-title = Actualizando a { $version }
firmware_update-looking_for_devices = Buscando dispositivos para actualizar...
firmware_update-retry = Reintentar
firmware_update-update = Actualizar rastreadores seleccionados
firmware_update-exit = Salir
## Tray Menu
tray_menu-show = Mostrar
@@ -1054,3 +1429,56 @@ unknown_device-modal-description =
¿Quieres conectarlo a SlimeVR?
unknown_device-modal-confirm = ¡Claro!
unknown_device-modal-forget = Ignóralo
# VRChat config warnings
vrc_config-page-title = Advertencias sobre la configuración de VRChat
vrc_config-page-desc = Esta página muestra el estado de la configuración de VRChat y dice qué configuración es incompatible con SlimeVR. Se recomienda encarecidamente que corrijas las advertencias que aparecen aquí para obtener la mejor experiencia con SlimeVR.
vrc_config-page-help = ¿No encuentras los ajustes?
vrc_config-page-help-desc = ¡Consulte nuestra <a>documentación sobre este tema!</a>
vrc_config-page-big_menu = Seguimiento e IK (Menú grande)
vrc_config-page-big_menu-desc = Configuración relacionada al IK en el menú grande de configuración
vrc_config-page-wrist_menu = Seguimiento e IK (Menú de muñeca)
vrc_config-page-wrist_menu-desc = Ajustes relacionados al IK en el pequeño menú de ajustes (menú de muñeca)
vrc_config-on = Encendido
vrc_config-off = Apagado
vrc_config-invalid = ¡Tienes ajustes de VRChat mal configurados!
vrc_config-show_more = Mostrar más
vrc_config-setting_name = Nombre del ajuste de VRChat
vrc_config-recommended_value = Valor recomendado
vrc_config-current_value = Valor actual
vrc_config-mute = Silenciar advertencia
vrc_config-mute-btn = Silenciar
vrc_config-unmute-btn = Desilenciar
vrc_config-legacy_mode = Utilizar la resolución de IK antigua
vrc_config-disable_shoulder_tracking = Desactivar el seguimiento de hombros
vrc_config-shoulder_width_compensation = Compensación de la anchura del hombro
vrc_config-spine_mode = Modo columna FBT
vrc_config-tracker_model = Modelo de rastreador para "FBT"
vrc_config-avatar_measurement_type = Medida del avatar
vrc_config-calibration_range = Rango de calibración
vrc_config-calibration_visuals = Mostrar elementos visuales de la calibración
vrc_config-user_height = Altura real del usuario
vrc_config-spine_mode-UNKNOWN = Desconocido
vrc_config-spine_mode-LOCK_BOTH = Bloquear ambos
vrc_config-spine_mode-LOCK_HEAD = Bloquear cabeza
vrc_config-spine_mode-LOCK_HIP = Bloquear cadera
vrc_config-tracker_model-UNKNOWN = Desconocido
vrc_config-tracker_model-AXIS = Eje
vrc_config-tracker_model-BOX = Caja
vrc_config-tracker_model-SPHERE = Esfera
vrc_config-tracker_model-SYSTEM = Sistema
vrc_config-avatar_measurement_type-UNKNOWN = Desconocido
vrc_config-avatar_measurement_type-HEIGHT = Altura
vrc_config-avatar_measurement_type-ARM_SPAN = Amplitud de los brazos
## Error collection consent modal
error_collection_modal-title = ¿Podemos recopilar errores?
error_collection_modal-description_v2 =
{ settings-interface-behavior-error_tracking-description_v2 }
Puede cambiar esta configuración más adelante en la sección Comportamiento de la página de configuración.
error_collection_modal-confirm = Acepto
error_collection_modal-cancel = No quiero
## Tracking checklist section

View File

@@ -24,6 +24,9 @@ tips-do_not_move_heels = Veenduge, et teie kannad ei liigu salvestamise ajal!
tips-file_select = Pukseerige failid kasutamiseks, või <u>sirvi</u>.
tips-tap_setup = Saate jälgija valimiseks menüüst valimise asemel aeglaselt oma jälgijat 2 korda puudutada.
## Units
## Body parts
body_part-NONE = Määramata
@@ -48,6 +51,9 @@ body_part-LEFT_UPPER_LEG = Vasak reis
body_part-LEFT_LOWER_LEG = Vasak säär
body_part-LEFT_FOOT = Vasak jalg
## BoardType
## Proportions
skeleton_bone-NONE = Mitte midagi
@@ -122,7 +128,7 @@ widget-overlay-is_mirrored_label = Näita Ülekatet Peeglina
widget-drift_compensation-clear = Selgem triivi kompenseerimine
## Widget: Clear Reset Mounting
## Widget: Clear Mounting calibration
widget-clear_mounting = Lähtesta paigaldusasend
@@ -142,7 +148,9 @@ widget-developer_mode-more_info = Rohkem infot
widget-imu_visualizer = Rotatsiooni
widget-imu_visualizer-rotation_raw = Toores
widget-imu_visualizer-rotation_preview = Eelvaade
widget-imu_visualizer-rotation_hide = Peida
## Widget: Skeleton Visualizer
## Tracker status
@@ -298,10 +306,6 @@ settings-general-steamvr-description =
Kasulik teatud mängudele või äppidele, mis toetavad ainult teatuid jälgijaid.
settings-general-steamvr-trackers-waist = Vöökoht
settings-general-steamvr-trackers-chest = Rind
settings-general-steamvr-trackers-feet = Jalad
settings-general-steamvr-trackers-knees = Põlved
settings-general-steamvr-trackers-elbows = Küünarnukid
settings-general-steamvr-trackers-hands = Käed
## Tracker mechanics
@@ -366,9 +370,6 @@ settings-general-fk_settings-skeleton_settings-interp_hip_legs = Leia keskmine p
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = Leia keskmine põlvede lengerdus ja pöörlemine säärte abiga
settings-general-fk_settings-self_localization-title = Mocapi režiim
settings-general-fk_settings-self_localization-description = Mocap-režiim võimaldab skeletil ligikaudselt jälgida oma asukohta ilma peakomplekti või muude jälgijateta. Pange tähele, et see nõuab jalgade ja peajälgijate olemasolu ning on endiselt eksperimentaalne.
settings-general-fk_settings-vive_emulation-title = Vive-i emulatsioon
settings-general-fk_settings-vive_emulation-description = Emuleeri vöökoha jälgija probleeme mis Vive jälgijatel on. See on nali ja teeb jälgijate täpsuse halvaks.
settings-general-fk_settings-vive_emulation-label = Luba Vive-i emulatsioon
## Gesture control settings (tracker tapping)
@@ -432,6 +433,9 @@ settings-general-interface-feedback_sound-description = See suvand esitab lähte
settings-general-interface-feedback_sound-label = Tagasiside heli
settings-general-interface-feedback_sound-volume = Tagasiside helitugevus
## Behavior settings
## Serial settings
settings-serial = Jadakonsool
@@ -449,7 +453,6 @@ settings-serial-factory_reset-warning =
Mis tähendab et WI-FI ja kalibreerimis sätted <b>kustutatakse!</b>
settings-serial-factory_reset-warning-ok = Ma tean mida ma teen
settings-serial-factory_reset-warning-cancel = Tühista
settings-serial-get_infos = Saa infot
settings-serial-serial_select = Valige jadaport
settings-serial-auto_dropdown_item = Auto
@@ -481,15 +484,10 @@ settings-osc-router-network-address-placeholder = IPV4 aadress
## OSC VRChat settings
settings-osc-vrchat = VRChat OSC Jälgija
# This cares about multilines
settings-osc-vrchat-description =
Muuda VRChat-i spetsiifiliseid seadeid, et saada ja saata HMD andmeid.
Jälgijate andmed FBT jaoks (töötab Questi peal ilma arvuti ühenduseta).
settings-osc-vrchat-enable = Luba
settings-osc-vrchat-enable-description = Lülitage andmete sisestamine sisse/välja.
settings-osc-vrchat-enable-label = Luba
settings-osc-vrchat-network = Võrgupordid
settings-osc-vrchat-network-description = Lisage võrgupordid andmete saamiseks ja saatmiseks VRChat-i.
settings-osc-vrchat-network-port_in =
.label = Võrguport sisse
.placeholder = Võrguport sisse (vaikimisi: 9001)
@@ -497,7 +495,6 @@ settings-osc-vrchat-network-port_out =
.label = Võrguport välja
.placeholder = Võrguport välja (vaikimisi: 9000)
settings-osc-vrchat-network-address = Võrgu aadress
settings-osc-vrchat-network-address-description = Vali, mis aadressile saata andmeid VRChat-i jaoks (kontrolli enda Wi-Fi seadeid seadmest).
settings-osc-vrchat-network-address-placeholder = VRChat ip aadress
settings-osc-vrchat-network-trackers = Jälgia
settings-osc-vrchat-network-trackers-description = Lülita sisse/välja teatud jälgijate andmete saatmise OSC kaudu.
@@ -530,17 +527,23 @@ settings-osc-vmc-network-address-description = Valige, millisel aadressil soovit
settings-osc-vmc-network-address-placeholder = IPV4 aadress
settings-osc-vmc-vrm = VRM-mudel
settings-osc-vmc-vrm-description = Laadige VRM-mudel, et võimaldada peaankurdamist ja suuremat ühilduvust teiste rakendustega.
settings-osc-vmc-vrm-model_unloaded = Mudelit pole laaditud
settings-osc-vmc-vrm-model_loaded =
{ $titled ->
[true] Mudel laaditud: { $name }
*[other] Pealkirjata mudel on laaditud
}
settings-osc-vmc-vrm-file_select = Kasutatava mudeli pukseerimine või <u>sirvimine</u>
settings-osc-vmc-anchor_hip = Ankurda puusadel
settings-osc-vmc-anchor_hip-description = Ankurdage jälgimine puusadele, mis on kasulik istuva VTubingu jaoks. Keelamise korral laadige VRM-mudel.
settings-osc-vmc-anchor_hip-label = Ankurda puusadel
## Common OSC settings
## Advanced settings
## Home Screen
## Tracking Checlist
## Setup/onboarding menu
onboarding-skip = Jäta seadistamine vahele
@@ -556,11 +559,6 @@ onboarding-setup_warning-cancel = Jätka seadistamist
## Wi-Fi setup
onboarding-wifi_creds-back = Mine tagasi juhistele
onboarding-wifi_creds = Sisestage enda Wi-Fi andmed!
# This cares about multilines
onboarding-wifi_creds-description =
Jälgijad kasutavad neid andmeid, et ühendada juhtmevabalt.
Palun kasutage neid Wi-Fi andmeid, millega te praegu olete ühendatud.
onboarding-wifi_creds-skip = Jätke Wi-Fi seaded vahele.
onboarding-wifi_creds-submit = Jätka!
onboarding-wifi_creds-ssid =
@@ -600,13 +598,6 @@ onboarding-reset_tutorial-2 =
onboarding-home = Tere tulemast SlimeVR-i
onboarding-home-start = Hakkame sättima!
## Enter VR part of setup
onboarding-enter_vr-back = Minge tagasi jälgijate määramisse
onboarding-enter_vr-title = Aeg minna VR-i!
onboarding-enter_vr-description = Pange selga kõik jälgijad ja VR prillid.
onboarding-enter_vr-ready = Olen valmis
## Setup done
onboarding-done-title = Kõik on valmis!
@@ -617,8 +608,6 @@ onboarding-done-close = Sulgege juhend
onboarding-connect_tracker-back = Minge tagasi Wi-Fi andmetesse
onboarding-connect_tracker-title = Ühendage jälgijad
onboarding-connect_tracker-description-p0 = Nüüd lähme lõbusa osa juurde, ühendame kõik jälgijad-
onboarding-connect_tracker-description-p1 = Lihtsalt ühendage kõik jälgijad, mis ei ole ühendatud läbi USB enda arvutisse.
onboarding-connect_tracker-issue-serial = Mul on probleeme ühenduse loomisega!
onboarding-connect_tracker-usb = USB Jälgija
onboarding-connect_tracker-connection_status-none = Jälgijate otsimine
@@ -636,17 +625,16 @@ onboarding-connect_tracker-connection_status-done = Ühendatud serveriga
# if $amount is 0 then we say "No trackers connected"
onboarding-connect_tracker-connected_trackers =
{ $amount ->
[0] Mitte ühtegi jälgijat ühendatud
[one] 1 jälgija
*[other] { $amount } jälgijat
} connected
[0] Mitte ühtegi jälgijat ühendatud connected
[one] 1 jälgija connected
*[other] { $amount } jälgijat connected
}
onboarding-connect_tracker-next = Olen ühendanud kõik oma jälgijad
## Tracker calibration tutorial
onboarding-calibration_tutorial = IMU kalibreerimise õpetus
onboarding-calibration_tutorial-subtitle = See aitab vähendada jälgija driftimist!
onboarding-calibration_tutorial-description = Iga kord, kui lülitate oma jälgijad sisse, peavad nad kalibreerimiseks hetkeks tasasel pinnal olema. Teeme sama, klõpsates nuppu "{ onboarding-calibration_tutorial-calibrate }", <b>ärge liigutage neid!</b>
onboarding-calibration_tutorial-calibrate = Panin oma jälgijad lauale
onboarding-calibration_tutorial-status-waiting = Ootan sind
onboarding-calibration_tutorial-status-calibrating = Kalibreerimine
@@ -672,10 +660,10 @@ onboarding-assign_trackers-description = Valime mis jälgijad lähevad kuhu. Vaj
# $assigned (Number) - Trackers that have been assigned a body part
# $trackers (Number) - Trackers connected to the server
onboarding-assign_trackers-assigned =
{ $assigned } of { $trackers ->
[one] 1 jälgija
*[other] { $trackers } jälgijat
} assigned
{ $trackers ->
[one] { $assigned } of 1 jälgija assigned
*[other] { $assigned } of { $trackers } jälgijat assigned
}
onboarding-assign_trackers-advanced = Kuva täpsemad määramiskohad
onboarding-assign_trackers-next = Määrasin kõikide jälgijate asukohad
@@ -685,12 +673,8 @@ onboarding-assign_trackers-next = Määrasin kõikide jälgijate asukohad
## Tracker mounting method choose
onboarding-choose_mounting-auto_mounting = Automaatne paigaldamine
# Italized text
onboarding-choose_mounting-auto_mounting-label = Eksperimentaalne
onboarding-choose_mounting-auto_mounting-description = See tuvastab automaatselt kõigi teie jälgijate paigaldussuuna 2 poosist
onboarding-choose_mounting-manual_mounting = Käsitsi paigaldamine
# Italized text
onboarding-choose_mounting-manual_mounting-label = Soovitatud
onboarding-choose_mounting-manual_mounting-description = See võimaldab teil valida iga jälgija paigaldussuuna käsitsi
## Tracker manual mounting setup
@@ -716,35 +700,13 @@ onboarding-automatic_mounting-mounting_reset-title = Paigalduse lähtestamine
onboarding-automatic_mounting-mounting_reset-step-0 = 1. Kükita suusaasendis, jalad kõverad, ülakeha kallutatud ettepoole ja käed kõverad.
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Vajutage "Lähtesta Paigaldusasend" nuppu ja oodage 3 sekuntit ja jälgijate paigaldusasend lähtestatakse.
onboarding-automatic_mounting-preparation-title = Ettevalmistus
onboarding-automatic_mounting-preparation-step-0 = 1. Seiske püsti, käed kõrval.
onboarding-automatic_mounting-preparation-step-1 = 2. Vajutage "Lähtesta" nuppu ja oodage 3 sekundit ja jälgijad lähtestatakse.
onboarding-automatic_mounting-put_trackers_on-title = Pange kõik jälgijad peale
onboarding-automatic_mounting-put_trackers_on-description = Et kalibreerida jälgijate paigaldus asendi pööret pange kõik jälgijad peale ja nüüd te näete mis on mis jälgijad paremal pool ekraani.
onboarding-automatic_mounting-put_trackers_on-next = Mul on kõik jälgijad küljes
## Tracker proportions method choose
## Tracker manual proportions setupa
onboarding-choose_proportions = Millist proportsiooni kalibreerimismeetodit kasutada?
# Multiline string
onboarding-choose_proportions-description =
Keha proportsioone kasutatakse teie keha mõõtude tundmiseks. Neid on vaja, et arvutada jälgijate asukohad.
Kui teie keha proportsioonid ei vasta salvestatud proportsioonidele, on teie jälgimistäpsus halvem ja märkate selliseid asju nagu jalgade uisutamine või libistamine või keha ei sobi teie avatariga hästi.
onboarding-choose_proportions-auto_proportions = Automaatsed proportsioonid
# Italized text
onboarding-choose_proportions-auto_proportions-subtitle = Soovitatud
# Italized text
onboarding-choose_proportions-manual_proportions-subtitle = Väikeste puudutuste jaoks
onboarding-choose_proportions-manual_proportions-description = See võimaldab teil proportsioone käsitsi reguleerida, muutes neid otseselt
onboarding-choose_proportions-export = Ekspordi proportsioonid
onboarding-choose_proportions-file_type = Keha proportsioonide fail
## Tracker manual proportions setup
onboarding-manual_proportions-back = Mine tagasi lähtestamise õppetusse
onboarding-manual_proportions-title = Käsitsi keha proportsioonid
onboarding-manual_proportions-precision = Täpne reguleerimine
onboarding-manual_proportions-auto = Automaatne kalibreerimine
onboarding-manual_proportions-ratio = Kohandamine suhtarvugruppide järgi
## Tracker automatic proportions setup
@@ -758,15 +720,8 @@ onboarding-automatic_proportions-put_trackers_on-description = Et kalibreerida t
onboarding-automatic_proportions-put_trackers_on-next = Mul on kõik jälgijad küljes
onboarding-automatic_proportions-requirements-title = Nõuded
onboarding-automatic_proportions-requirements-next = Olen lugenud nõudeid
onboarding-automatic_proportions-check_height-title = Kontrollige oma pikkust
onboarding-automatic_proportions-check_height-description = Me kasutame teie pikkust oma mõõtmiste alusena, kasutades HMD kõrgust teie tegeliku kõrguse ligikaudseks arvutamiseks, kuid parem on ise kontrollida, kas need on õiged!
onboarding-automatic_proportions-check_height-fetch_height = Ma seisan!
# Context is that the height is unknown
onboarding-automatic_proportions-check_height-unknown = Tundmatu
# Shows an element below it
onboarding-automatic_proportions-check_height-hmd_height1 = Teie HMD kõrgus on
# Shows an element below it
onboarding-automatic_proportions-check_height-height1 = nii et teie tegelik kõrgus on
onboarding-automatic_proportions-check_height-next_step = Nendega on kõik korras
onboarding-automatic_proportions-start_recording-title = Olge valmis liikuma
onboarding-automatic_proportions-start_recording-description = Me nüüd salvestame teatud poose ja liigutusi neid näete järgmisel ekraanil. Olge valmis, kui te vajutate nuppu!
@@ -799,10 +754,19 @@ onboarding-automatic_proportions-done-title = Kere mõõdetud ja salvestatud.
onboarding-automatic_proportions-done-description = Teie keha proportsioonid kalibreerimine on valmis!
onboarding-automatic_proportions-error_modal-confirm = Sain aru!
## User height calibration
## Stay Aligned setup
## Home
home-no_trackers = Jälgijaid ei tuvastatud ega määratud
## Trackers Still On notification
## Status system
status_system-StatusSteamVRDisconnected =
@@ -811,3 +775,33 @@ status_system-StatusSteamVRDisconnected =
*[other] Praegu ei ole SlimeVR-draiveri kaudu SteamVR-iga ühendatud.
}
status_system-StatusTrackerError = Jälgijal { $trackerName } on tõrge.
## Firmware tool globals
## Firmware tool Steps
## firmware tool build status
## Firmware update status
## Dedicated Firmware Update Page
## Tray Menu
## First exit modal
## Unknown device modal
## Error collection consent modal
## Tracking checklist section

Some files were not shown because too many files have changed in this diff Show More