Compare commits

...

299 Commits

Author SHA1 Message Date
lucas lelievre
181c6599b7 Increment versionCodeOffset from 4 to 5 2026-03-31 21:10:00 +02:00
gorbit99
fb77d3cf8a Downgrade JavaOSC version (#1801) 2026-03-31 21:02:01 +02:00
lucas lelievre
1a4b19a5e1 Make sure tags are fetched for version number checks 2026-03-30 05:42:47 +02:00
lucas lelievre
a9f553729e Electron fixes macos (#1797) 2026-03-26 08:09:10 +01:00
lucas lelievre
ed96742680 Electron fixes after RC feedbacks (#1784) 2026-03-26 05:15:41 +01:00
lucas lelievre
5e7816d72d New Pontoon translations (#1674) 2026-03-17 11:06:50 +01:00
SlimeVR-bot
abab38e422 Pontoon/GUI: Update Czech (cs)
Co-authored-by: Cheezik <cheatistv@email.cz> (cs)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
7835b17379 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
30612a866b Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
bba574ce86 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
6d3d725b6c Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
948bc06542 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
8f4ee3268d Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
8f97bd997b Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
18f6c9c24f Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
c7bdd041f2 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
f75a011fb3 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
Co-authored-by: R4MOS <alexandrerrangel99@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
555764914d Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
e4be98c7e7 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
701ce9dc0a Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
3f950cc11d Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
d8ce34a962 Pontoon/GUI: Update Czech (cs)
Co-authored-by: Cheezik <cheatistv@email.cz> (cs)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
ef9d5e7862 Pontoon/GUI: Update Czech (cs)
Co-authored-by: Cheezik <cheatistv@email.cz> (cs)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
e3f06eff55 Pontoon/GUI: Update Czech (cs)
Co-authored-by: Cheezik <cheatistv@email.cz> (cs)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
7a062b7d7b Pontoon/GUI: Update Czech (cs)
Co-authored-by: Cheezik <cheatistv@email.cz> (cs)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
121f3297ae Pontoon/GUI: Update Czech (cs)
Co-authored-by: Cheezik <cheatistv@email.cz> (cs)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
9951f00979 Pontoon/GUI: Update Czech (cs)
Co-authored-by: Cheezik <cheatistv@email.cz> (cs)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
d8bb744ce4 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
4db342b4ae Pontoon/GUI: Update Czech (cs)
Co-authored-by: Cheezik <cheatistv@email.cz> (cs)
Co-authored-by: Pesky12 <avianearts@gmail.com> (cs)
Co-authored-by: Jeeko <d.safarik06@gmail.com> (cs)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
e9f96e6d21 Pontoon/GUI: Update Czech (cs)
Co-authored-by: Cheezik <cheatistv@email.cz> (cs)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
56c6ebdadf Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
4f941a5892 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
bf69046efe Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
cdcdb1b443 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
f875e9df4d Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
12dd408f0b Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
5e53bae9dc Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
b19e190004 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
06c8bdc81a Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
62338250e8 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
1ff79ebb13 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
2f9678d882 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
94d70cbe55 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
f5c26f97aa Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:36 +00:00
SlimeVR-bot
b367c7d3d6 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
c9cae35946 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
Co-authored-by: R4MOS <alexandrerrangel99@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
a895b0b583 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: R4MOS <alexandrerrangel99@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
5321c25bb2 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
b39691b879 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
74e7f02668 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
09e1510298 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
0d95a731e3 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
7d5706520b Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
e887b3153d Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
a7aa897fad Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
29e2fd863b Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
330cac26ec Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
ca9195ba97 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
908270ffff Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
942fbcf6f6 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
dbc6bae898 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
8482802375 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
fdd3614204 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
706a2780d9 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
97a90076a4 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
ef85b8f3e1 Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
83700a1d1a Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
36a363f8ed Pontoon/GUI: Update Brazilian Portuguese (pt-BR)
Co-authored-by: inex <rui.bisneto@gmail.com> (pt-BR)
Co-authored-by: R4MOS <alexandrerrangel99@gmail.com> (pt-BR)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
1c8381337a Pontoon/GUI: Update French (fr)
Co-authored-by: Erimel <loukalemire@gmail.com> (fr)
Co-authored-by: Nicalay2 <Habbo.rieranicolas08@gmail.com> (fr)
Co-authored-by: Natsuko <maisonasse@gmail.com> (fr)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
f698b27be5 Pontoon/GUI: Update French (fr)
Co-authored-by: Erimel <loukalemire@gmail.com> (fr)
Co-authored-by: Nicalay2 <Habbo.rieranicolas08@gmail.com> (fr)
Co-authored-by: Natsuko <maisonasse@gmail.com> (fr)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
f2767cf3bc Pontoon/GUI: Update French (fr)
Co-authored-by: Natsuko <maisonasse@gmail.com> (fr)
Co-authored-by: Erimel <loukalemire@gmail.com> (fr)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
fe873729b6 Pontoon/GUI: Update French (fr)
Co-authored-by: Nicalay2 <Habbo.rieranicolas08@gmail.com> (fr)
Co-authored-by: Natsuko <maisonasse@gmail.com> (fr)
Co-authored-by: Erimel <loukalemire@gmail.com> (fr)
Co-authored-by: Naoto <naotomuramasa@gmail.com> (fr)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
031b35eb06 Pontoon/GUI: Update French (fr)
Co-authored-by: Erimel <loukalemire@gmail.com> (fr)
Co-authored-by: Nicalay2 <Habbo.rieranicolas08@gmail.com> (fr)
Co-authored-by: Natsuko <maisonasse@gmail.com> (fr)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
bcc604cf63 Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
adf01eed16 Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
bd1750f252 Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
49adf0ee84 Pontoon/GUI: Update German (de)
Co-authored-by: TheDevMinerTV <devminer@devminer.xyz> (de)
Co-authored-by: NichtTube <Marvin-semmler@gmx.net> (de)
Co-authored-by: unlogisch <unlogisch@gmx.ch> (de)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
04a2fa72a7 Pontoon/GUI: Update German (de)
Co-authored-by: TheDevMinerTV <devminer@devminer.xyz> (de)
Co-authored-by: NichtTube <Marvin-semmler@gmx.net> (de)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
064c41d419 Pontoon/GUI: Update German (de)
Co-authored-by: NichtTube <Marvin-semmler@gmx.net> (de)
Co-authored-by: TheDevMinerTV <devminer@devminer.xyz> (de)
Co-authored-by: unlogisch <unlogisch@gmx.ch> (de)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
7c92023af7 Pontoon/GUI: Update Simplified Chinese (zh-Hans)
Co-authored-by: nekomona <nekomona@163.com> (zh-Hans)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
ac01b75342 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
95a7801a50 Pontoon/GUI: Update Dutch (nl)
Co-authored-by: Vyolex <25586367+Vyolex@users.noreply.github.com> (nl)
Co-authored-by: Nola <stefsecretdesecret@gmail.com> (nl)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
db1ec5d024 Pontoon/GUI: Update Dutch (nl)
Co-authored-by: Vyolex <25586367+Vyolex@users.noreply.github.com> (nl)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
a96cd8a38f Pontoon/GUI: Update Dutch (nl)
Co-authored-by: Nola <stefsecretdesecret@gmail.com> (nl)
Co-authored-by: Vyolex <25586367+Vyolex@users.noreply.github.com> (nl)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
45d5789685 Pontoon/GUI: Update Dutch (nl)
Co-authored-by: Nola <stefsecretdesecret@gmail.com> (nl)
Co-authored-by: Vyolex <25586367+Vyolex@users.noreply.github.com> (nl)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
4b08123a61 Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: Uriel <imurx@proton.me> (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
Co-authored-by: Alejandro <moctezumaalejandro25@gmail.com> (es-419)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
bfc99ab02c Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
6eb8a18430 Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
489b8e6549 Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
7bb2ecfff1 Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
59b4b34840 Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
9597888902 Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
dbfcc8ba0a Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
fd8e9fba83 Pontoon/GUI: Update Latinamerican Spanish (es-419)
Co-authored-by: MaxEvil <xicovalle@gmail.com> (es-419)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
f65d1828fe Pontoon/GUI: Update Spain Spanish (es-ES)
Co-authored-by: Baddie <baddie@femboy.gay> (es-ES)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
c32601809b Pontoon/GUI: Update Spain Spanish (es-ES)
Co-authored-by: Baddie <baddie@femboy.gay> (es-ES)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
fdf86a1e56 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
71908523f9 Pontoon/GUI: Update Thai (th)
Co-authored-by: YumeTomo <Sodnoobe@gmail.com> (th)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
2b7d678321 Pontoon/GUI: Update Simplified Chinese (zh-Hans)
Co-authored-by: 寂听 <jiting@jtcat.com> (zh-Hans)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
5d64fa8369 Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2026-03-12 01:26:35 +00:00
SlimeVR-bot
fe6bb4534c Pontoon/GUI: Update Traditional Chinese (zh-Hant)
Co-authored-by: Meow Wei <medicalwei@gmail.com> (zh-Hant)
2026-03-12 01:26:35 +00:00
loucass003
95daec6814 Pass server jar properly 2026-03-12 02:26:13 +01:00
lucas lelievre
43b104fcc3 Electron build fix round 2 (#1783) 2026-03-12 02:11:42 +01:00
loucass003
a33d6b1c1a Set better folder for electron storage 2026-03-11 20:45:37 +01:00
loucass003
cf67b9306b Remove electron test from ci 2026-03-11 19:23:56 +01:00
lucas lelievre
238c86ee98 Electron CI fixes (#1780) 2026-03-11 19:12:47 +01:00
loucass003
7f56209ca9 Fix windows zip 2026-03-11 16:57:33 +01:00
loucass003
a3e50cdc02 fix server.jar output path 2026-03-11 01:39:41 +01:00
loucass003
b7c43d8373 Fix release out 2026-03-11 01:23:38 +01:00
lucas lelievre
cadc13f2e0 Revert "Bump actions/upload-artifact from 6 to 7" (#1779) 2026-03-11 01:02:49 +01:00
dependabot[bot]
7965d2e081 Bump actions/upload-artifact from 6 to 7 (#1770)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-10 23:33:56 +01:00
Butterscotch!
b829a20169 Bump Gradle, plugin, and package versions (#1746)
Co-authored-by: lucas lelievre <loucass003@gmail.com>
2026-03-10 22:40:41 +01:00
loucass003
653b8b4014 Make macos build 2026-03-10 22:04:43 +01:00
lucas lelievre
a891203204 Switch to Electron (#1747)
Co-authored-by: Hannah Lindrob <hannahlindrob@ourlook.com>
Co-authored-by: Sapphire <imsapphire0@gmail.com>
2026-03-10 21:38:02 +01:00
Sapphire
0236a05f26 Allow showing 'Up to date' version for third-party trackers (#1756) 2026-02-25 23:08:31 +01:00
Butterscotch!
28deb357da Revert TrackerResetsHandler & add comments (#1748) 2026-02-20 11:26:23 +01:00
jabberrock
4d93f87a01 Clarify AI policy on contributions (#1752) 2026-02-17 03:59:11 +03: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
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
313 changed files with 11166 additions and 14851 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

5
.github/CODEOWNERS vendored
View File

@@ -10,15 +10,14 @@
/pnpm-workspace.yaml @loucass003
# loucass003 and Erimel responsible for i18n
/gui/public/i18n/ @loucass003 @Erimelowo
/gui/public/i18n/ @loucass003 @Erimelowo @ImSapphire
/gui/src/i18n/ @loucass003 @Erimelowo
/l10n.toml @loucass003 @Erimelowo
/gui/src/components/settings/ @Erimelowo @loucass003
# Rust part of the GUI
/gui/src-tauri/ @loucass003
/Cargo.lock @loucass003
/gui/electron/ @loucass003
# Some server code~
/server/ @ButterscotchV @Eirenliel @Erimelowo

View File

@@ -1,129 +0,0 @@
name: Build GUI
on:
push:
branches:
- main
paths:
- .github/workflows/build-gui.yml
- gui/**
- package*.json
pull_request:
paths:
- .github/workflows/build-gui.yml
- gui/**
- package*.json
workflow_dispatch:
create:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: pnpm/action-setup@v4
- name: Use Node.js
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: Build
run: |
pnpm i
cd gui
pnpm run lint
build:
strategy:
fail-fast: false
matrix:
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@v6
with:
submodules: recursive
- if: startsWith(matrix.os, 'ubuntu')
name: Set up Linux dependencies
uses: awalsh128/cache-apt-pkgs-action@v1.6.0
with:
packages: libgtk-3-dev webkit2gtk-4.1 libappindicator3-dev librsvg2-dev patchelf
# Increment to invalidate the cache
version: ${{ format('v1.0-{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
- if: matrix.os == 'windows-11-arm'
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
cache: false
- name: Cache cargo dependencies
uses: Swatinem/rust-cache@v2
- uses: pnpm/action-setup@v4
- name: Use Node.js
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 }}
NODE_OPTIONS: ${{ matrix.os == 'macos-latest' && '--max-old-space-size=4096' || '' }}
run: pnpm run skipbundler --config $( ./gui/scripts/gitversion.mjs )
- if: startsWith(matrix.os, 'windows')
name: Upload a Build Artifact (Windows)
uses: actions/upload-artifact@v5
with:
# Artifact name
name: ${{ format('SlimeVR-GUI-Windows-{0}', env.BUILD_ARCH) }}
# A file, directory or wildcard pattern that describes what to upload
path: target/release/slimevr.exe
- if: startsWith(matrix.os, 'ubuntu')
name: Upload a Build Artifact (Linux)
uses: actions/upload-artifact@v5
with:
# Artifact name
name: ${{ format('SlimeVR-GUI-Linux-{0}', env.BUILD_ARCH) }}
# A file, directory or wildcard pattern that describes what to upload
path: target/release/slimevr
- if: matrix.os == 'macos-latest'
name: Upload a Build Artifact (macOS)
uses: actions/upload-artifact@v5
with:
# Artifact name
name: SlimeVR-GUI-macOS
# A file, directory or wildcard pattern that describes what to upload
path: target/release/slimevr

291
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,291 @@
name: SlimeVR Full Build
on:
push:
branches: [main]
tags: ["v*"]
pull_request:
workflow_dispatch:
jobs:
setup-matrix:
name: Configure Build Matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- id: set-matrix
shell: bash
run: |
BASE='[{"os":"ubuntu-22.04","platform":"linux"},{"os":"windows-latest","platform":"windows"},{"os":"macos-latest","platform":"macos"}]'
EXTRA='[{"os":"ubuntu-22.04-arm","platform":"linux"},{"os":"windows-11-arm","platform":"windows"}]'
if [[ "${{ github.ref }}" == refs/tags/v* || "${{ github.ref }}" == refs/heads/main || "${{ github.event_name }}" == "workflow_dispatch" ]]; then
RESULT=$(echo "$BASE $EXTRA" | jq -c -s 'add')
else
RESULT=$(echo "$BASE" | jq -c '.')
fi
echo "matrix={\"include\":$RESULT}" >> "$GITHUB_OUTPUT"
gui-checks:
name: Gui Checks
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Setup PNPM
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: GUI Lint
run: pnpm i && cd gui && pnpm run lint
java-checks:
name: Java Checks
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Java Spotless Check
run: ./gradlew spotlessCheck --build-cache
build-server-jar:
name: Build Desktop Server
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Build ShadowJar
run: ./gradlew :server:desktop:shadowJar --build-cache
- name: Test with Gradle
run: ./gradlew :server:desktop:test
- name: Upload Server Jar
uses: actions/upload-artifact@v6
with:
name: server-jar
path: |
server/desktop/build/libs/slimevr.jar
server/core/resources
build-gui-frontend:
name: Build GUI Assets
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Setup PNPM
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: Build JS
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: pnpm i && cd gui && pnpm run build
- name: Tar GUI Dist
run: tar -czf slimevr-gui-dist.tar.gz -C gui/out .
- name: Upload GUI Dist
uses: actions/upload-artifact@v6
with:
name: gui-dist
path: slimevr-gui-dist.tar.gz
package-desktop:
name: Package Desktop (${{ matrix.platform }} - ${{ matrix.os }})
needs: [setup-matrix, build-server-jar, build-gui-frontend]
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.setup-matrix.outputs.matrix) }}
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Setup PNPM
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: Download Server Jar
uses: actions/download-artifact@v6
with:
name: server-jar
path: server
- name: Download GUI Dist
uses: actions/download-artifact@v6
with:
name: gui-dist
- name: Extract GUI for Electron
shell: bash
run: mkdir -p gui/out && tar -xzf slimevr-gui-dist.tar.gz -C gui/out
- name: Run Electron Builder
shell: bash
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: |
mkdir -p gui/dist/artifacts/linux/ \
gui/dist/artifacts/win \
gui/dist/artifacts/mac
cd gui
pnpm i
pnpm exec electron-builder --${{ matrix.platform }} \
${{ matrix.platform == 'macos' && '--universal' || '' }} \
--publish never
- name: Collect and Rename Artifacts
shell: bash
run: |
SRC_DIR="${{ github.workspace }}/gui/dist/artifacts"
DEST_DIR="${{ github.workspace }}/release-out"
mkdir -p "$DEST_DIR"
if [ "${{ matrix.platform }}" == "windows" ]; then
[[ "${{ matrix.os }}" == *"arm"* ]] && SUFFIX="win-aarch64" || SUFFIX="win64"
cp "$SRC_DIR"/win/*.zip "$DEST_DIR/SlimeVR-$SUFFIX.zip"
elif [ "${{ matrix.platform }}" == "linux" ]; then
for f in "$SRC_DIR"/linux/*; do
[ -d "$f" ] && continue
BASE=$(basename "$f")
NEW_NAME=$(echo "$BASE" | sed -e 's/x86_64/amd64/g' -e 's/arm64/aarch64/g')
cp "$f" "$DEST_DIR/$NEW_NAME"
done
elif [ "${{ matrix.platform }}" == "macos" ]; then
cp "$SRC_DIR"/mac/*.dmg "$DEST_DIR/SlimeVR-mac.dmg"
fi
echo "Collected files:"
ls -lh "$DEST_DIR"
- name: Upload For Release
uses: actions/upload-artifact@v6
with:
name: release-${{ matrix.platform }}-${{ matrix.os }}
path: release-out/*
bundle-android:
name: Build Android APK
needs: [build-gui-frontend]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Download GUI Dist
uses: actions/download-artifact@v6
with:
name: gui-dist
- name: Extract GUI for Android
run: mkdir -p gui/out && tar -xzf slimevr-gui-dist.tar.gz -C gui/out
- name: Build APK
run: ./gradlew :server:android:build --build-cache
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: Test with Gradle
run: ./gradlew test
- name: Prepare APK
run: cp server/android/build/outputs/apk/release/*.apk ./SlimeVR-android.apk
- name: Upload APK
uses: actions/upload-artifact@v6
with:
name: release-android
path: 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/*
create-release:
name: Finalize Release Draft
needs: [package-desktop, bundle-android, build-server-jar, build-gui-frontend]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- name: Download All Release Artifacts
uses: actions/download-artifact@v6
with:
pattern: release-*
path: release-out
merge-multiple: true
- name: Download Server Jar
uses: actions/download-artifact@v6
with:
name: server-jar
path: server
- name: Download GUI Dist
uses: actions/download-artifact@v6
with:
name: gui-dist
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
draft: true
generate_release_notes: true
files: |
release-out/*
server/desktop/build/libs/slimevr.jar
slimevr-gui-dist.tar.gz

View File

@@ -20,7 +20,7 @@ jobs:
run: |
npx @slimevr/update-manifest-generator@latest
- uses: actions/upload-artifact@v5
- uses: actions/upload-artifact@v6
with:
name: "update-manifest.json"
path: ./update-manifest.json

View File

@@ -1,390 +0,0 @@
# This workflow will build a Java project with Gradle
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
name: SlimeVR Server
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
create:
jobs:
test:
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- run: mkdir ./gui/dist && touch ./gui/dist/somefile
shell: bash
- name: Check code formatting
run: ./gradlew spotlessCheck
- name: Test with Gradle
run: ./gradlew test
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Build with Gradle
run: ./gradlew shadowJar
- name: Upload the Server JAR as a Build Artifact
uses: actions/upload-artifact@v5
with:
# Artifact name
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
- name: Upload to draft release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
draft: true
generate_release_notes: true
files: |
server/desktop/build/libs/slimevr.jar
bundle-android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- uses: pnpm/action-setup@v4
- name: Use Node.js
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: cd gui && pnpm run build
- name: Build with Gradle
run: ./gradlew :server:android:assembleDebug
- name: Upload the Android Build Artifact
uses: actions/upload-artifact@v5
with:
# Artifact name
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
- name: Upload to draft release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
draft: true
generate_release_notes: true
files: |
./SlimeVR-android.apk
bundle-linux:
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@v6
with:
submodules: recursive
- uses: actions/download-artifact@v6
with:
name: 'SlimeVR-Server'
path: server/desktop/build/libs/
- name: Set up Linux dependencies
uses: awalsh128/cache-apt-pkgs-action@v1.6.0
with:
packages: |
build-essential curl wget file libssl-dev libgtk-3-dev libappindicator3-dev librsvg2-dev xdg-utils
# Increment to invalidate the cache
version: ${{ format('v1.0-{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: Set up specific Linux versioned dependencies
run: |
sudo apt-get update && sudo apt-get install -y \
libwebkit2gtk-4.1-0=2.44.0-2 \
libwebkit2gtk-4.1-dev=2.44.0-2 \
libjavascriptcoregtk-4.1-0=2.44.0-2 \
libjavascriptcoregtk-4.1-dev=2.44.0-2 \
gir1.2-javascriptcoregtk-4.1=2.44.0-2 \
gir1.2-webkit2-4.1=2.44.0-2;
- name: Cache cargo dependencies
uses: Swatinem/rust-cache@v2
- uses: pnpm/action-setup@v4
- name: Use Node.js
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 run tauri build --config $( ./gui/scripts/gitversion.mjs )
- name: Make GUI tarball
run: |
tar czf slimevr-gui-dist.tar.gz -C gui/dist/ .
- uses: actions/upload-artifact@v5
if: matrix.os == 'ubuntu-latest'
with:
name: SlimeVR-GUI-Dist
path: ./slimevr-gui-dist.tar.gz
- uses: actions/upload-artifact@v5
with:
name: ${{ format('SlimeVR-GUI-Deb-{0}', env.BUILD_ARCH) }}
path: target/release/bundle/deb/slimevr*.deb
- uses: actions/upload-artifact@v5
with:
name: ${{ format('SlimeVR-GUI-AppImage-{0}', env.BUILD_ARCH) }}
path: target/release/bundle/appimage/slimevr*.AppImage
- uses: actions/upload-artifact@v5
with:
name: ${{ format('SlimeVR-GUI-RPM-{0}', env.BUILD_ARCH) }}
path: target/release/bundle/rpm/slimevr*.rpm
- name: Prepare for release
if: startsWith(github.ref, 'refs/tags/')
run: |
cp target/release/bundle/appimage/slimevr*.AppImage "./SlimeVR-$BUILD_ARCH.appimage"
cp target/release/bundle/deb/slimevr*.deb "./SlimeVR-$BUILD_ARCH.deb"
cp target/release/bundle/rpm/slimevr*.rpm "./SlimeVR-$BUILD_ARCH.rpm"
- name: Upload to draft release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
draft: true
generate_release_notes: true
files: |
./slimevr-gui-dist.tar.gz
./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@v6
with:
submodules: recursive
- uses: actions/download-artifact@v6
with:
name: 'SlimeVR-Server'
path: server/desktop/build/libs/
- name: Cache cargo dependencies
uses: Swatinem/rust-cache@v2
- uses: pnpm/action-setup@v4
- name: Use Node.js
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: Install dependencies
run: |
rustup target add x86_64-apple-darwin
pnpm i
- name: Build
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
NODE_OPTIONS: --max-old-space-size=4096
run: pnpm run tauri build --target universal-apple-darwin --config $( ./gui/scripts/gitversion.mjs )
- name: Modify Application
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
- uses: actions/upload-artifact@v5
with:
name: SlimeVR-GUI-MacApp
path: target/universal-apple-darwin/release/bundle/macos/SlimeVR*.app
- uses: actions/upload-artifact@v5
with:
name: SlimeVR-GUI-MacDmg
path: target/universal-apple-darwin/release/bundle/dmg/slimevr.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
- name: Upload to draft release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
draft: true
generate_release_notes: true
files: |
./SlimeVR-mac.dmg
bundle-windows:
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@v6
with:
submodules: recursive
- uses: actions/download-artifact@v6
with:
name: 'SlimeVR-Server'
path: server/desktop/build/libs/
- if: matrix.os == 'windows-11-arm'
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
cache: false
- name: Cache cargo dependencies
uses: Swatinem/rust-cache@v2
- uses: pnpm/action-setup@v4
- name: Use Node.js
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 run skipbundler --config $( ./gui/scripts/gitversion.mjs )
- name: Bundle to zips
shell: bash
run: |
mkdir SlimeVR
cp gui/src-tauri/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-$BUILD_ARCH.zip" ./SlimeVR/
- uses: actions/upload-artifact@v5
with:
name: ${{ format('SlimeVR-GUI-Windows-{0}', env.BUILD_ARCH) }}
path: ./SlimeVR*.zip
- name: Upload to draft release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
draft: true
generate_release_notes: true
files: ./SlimeVR-*.zip

7
.gitignore vendored
View File

@@ -34,9 +34,6 @@
# ignore gradle build folder
build/
# Rust build artifacts
/target
# direnv has been claimed for Nix usage
.direnv/
.devenv
@@ -46,3 +43,7 @@ local.properties
# Ignore temporary config
vrconfig.yml.tmp
# Nixos
.bin/

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,13 @@ 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 package:build`. The result
will be at `dist/artifacts/` content will change depending of the platform.
## Code style
@@ -84,7 +82,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`.
@@ -116,3 +114,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.

6898
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.82" # Tauri's MSRV
repository = "https://github.com/SlimeVR/SlimeVR-Server"
[profile.release]
lto = "thin"

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 = [""]

39
flake.lock generated
View File

@@ -1,26 +1,5 @@
{
"nodes": {
"fenix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1756795219,
"narHash": "sha256-tKBQtz1JLKWrCJUxVkHKR+YKmVpm0KZdJdPWmR2slQ8=",
"owner": "nix-community",
"repo": "fenix",
"rev": "80dbdab137f2809e3c823ed027e1665ce2502d74",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
@@ -72,27 +51,9 @@
},
"root": {
"inputs": {
"fenix": "fenix",
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1756597274,
"narHash": "sha256-wfaKRKsEVQDB7pQtAt04vRgFphkVscGRpSx3wG1l50E=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "21614ed2d3279a9aa1f15c88d293e65a98991b30",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
}
},
"root": "root",

View File

@@ -1,74 +1,50 @@
{
description = "Affordable full-body tracking for VR!";
description = "SlimeVR Server & GUI";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{ self, nixpkgs, flake-parts, fenix, ... }:
outputs = inputs@{ self, nixpkgs, flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
systems = [ "x86_64-linux" ];
perSystem = { system, lib, ... }:
perSystem = { pkgs, ... }:
let
pkgs = import nixpkgs { inherit system; };
runtimeLibs = pkgs: (with pkgs; [
jdk17
rust_toolchain = lib.importTOML ./rust-toolchain.toml;
fenixPkgs = fenix.packages.${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
rustToolchainSet = fenixPkgs.fromToolchainName {
name = rust_toolchain.toolchain.channel;
sha256 = "sha256-+9FmLhAOezBZCOziO0Qct1NOrfpjNsXxc/8I0c7BdKE=";
};
in {
wineWow64Packages.stable
zlib squashfsTools fakeroot libarchive icu
nodejs_22 pnpm pkg-config python3 gcc gnumake binutils git
pkgs.nodePackages.node-gyp-build
]);
devShells.default = pkgs.mkShell {
name = "slimevr";
slimeShell = pkgs.buildFHSEnv {
name = "slimevr-env";
targetPkgs = runtimeLibs;
profile = ''
export JAVA_HOME=${pkgs.jdk17}
export PATH="${pkgs.jdk17}/bin:$PATH"
buildInputs =
(with pkgs; [
cacert
]) ++ lib.optionals pkgs.stdenv.isLinux (with pkgs; [
atk cairo dbus dbus.lib dprint gdk-pixbuf glib.out glib-networking
gobject-introspection gtk3 harfbuzz libffi libsoup_3 openssl.dev 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 udev libusb1
]) ++ lib.optionals pkgs.stdenv.isDarwin [
pkgs.darwin.apple_sdk.frameworks.Security
] ++ [
pkgs.jdk17
pkgs.kotlin
rustToolchainSet.rustc
rustToolchainSet.cargo
rustToolchainSet.rustfmt
];
nativeBuildInputs = with pkgs; [ pnpm nodejs_22 gradle ];
RUST_BACKTRACE = 1;
GIO_EXTRA_MODULES = "${pkgs.glib-networking}/lib/gio/modules:${pkgs.dconf.lib}/lib/gio/modules";
shellHook = ''
export SLIMEVR_RUST_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="${pkgs.udev}/lib:${pkgs.libayatana-appindicator}/lib:$LD_LIBRARY_PATH"
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"
# Force linker and pkg-config to use udev from nixpkgs so libgudev/hidapi
# resolve against the correct libudev implementation at link time.
export PKG_CONFIG_PATH="${pkgs.udev}/lib/pkgconfig:${pkgs.glib}/lib/pkgconfig:$PKG_CONFIG_PATH"
export LIBRARY_PATH="${pkgs.udev}/lib:$LIBRARY_PATH"
export LD_RUN_PATH="${pkgs.udev}/lib:$LD_RUN_PATH"
export NIX_LDFLAGS="-L${pkgs.udev}/lib -ludev $NIX_LDFLAGS"
export LDFLAGS="-L${pkgs.udev}/lib -Wl,-rpath,${pkgs.udev}/lib -ludev $LDFLAGS"
# 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;
};
};
}

View File

@@ -13,8 +13,10 @@ android.useAndroidX=true
android.nonTransitiveRClass=true
org.gradle.unsafe.configuration-cache=false
kotlinVersion=2.0.20
spotlessVersion=8.0.0
shadowJarVersion=8.3.2
buildconfigVersion=5.5.0
grgitVersion=5.2.2
kotlinVersion=2.3.10
spotlessVersion=8.2.1
shadowJarVersion=9.3.1
buildconfigVersion=6.0.7
# We should probably stop using grgit, see:
# https://andrewoberstar.com/posts/2024-04-02-dont-commit-to-grgit/
grgitVersion=5.3.3

View File

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

4
gui/.gitignore vendored
View File

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

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

@@ -0,0 +1,70 @@
appId: dev.slimevr.SlimeVR
productName: SlimeVR
# Global naming pattern
artifactName: "${productName}-${version}-${os}-${arch}.${ext}"
directories:
output: dist/artifacts/${os}
asar: true
asarUnpack:
- out/main/chunks/*.jar
electronLanguages:
- en-US
files:
- out/**/*
- index.html
- package.json
- node_modules/**
- "!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
artifactName: "${productName}-${arch}.${ext}"
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]
afterInstall: "./electron/resources/scripts/postinstall.sh"
afterRemove: "./electron/resources/scripts/postremove.sh"
rpm:
depends: [java-latest-openjdk, udev]
afterInstall: "./electron/resources/scripts/postinstall.sh"
afterRemove: "./electron/resources/scripts/postremove.sh"
win:
artifactName: "${productName}-${os}-${arch}.${ext}"
target: zip
icon: "./electron/resources/icons/icon.ico"
extraFiles:
- from: "../server/desktop/build/libs/slimevr.jar"
to: "."
- from: "../server/core/resources"
to: "."
filter: ["**/*"]
mac:
target: dmg
artifactName: "SlimeVR-mac.${ext}"
x64ArchFiles: "**/register-protocol-handler.node"
icon: "./electron/resources/icons/icon.icns"
extraFiles:
- from: "../server/desktop/build/libs/slimevr.jar"
to: "Resources/slimevr.jar"

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();

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

@@ -0,0 +1,477 @@
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/Square30x30Logo.png?asset';
import { readFile, stat } from 'fs/promises';
import { getPlatform, handleIpc, isPortAvailable } from './utils';
import {
findServerJar,
findSystemJRE,
getGuiDataFolder,
getLogsFolder,
getServerDataFolder,
getWindowStateFile,
} from './paths';
import { stores } from './store';
import { closeLogger, 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';
import { mkdir } from 'node:fs/promises';
import { MenuItem } from 'electron/main';
// Fixes colors looking washed on linux
// Might affect hdr
if (process.platform === 'linux') {
app.commandLine.appendSwitch('disable-features', 'WaylandWpColorManagerV1');
app.commandLine.appendSwitch('force-color-profile', 'srgb');
}
app.setPath('userData', getGuiDataFolder());
app.setPath('sessionData', join(getGuiDataFolder(), 'electron'));
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 allowed_urls = [
/steam:\/\/.*/,
/ms-settings:network$/,
/https:\/\/.*\.slimevr\.dev.*/,
/https:\/\/github\.com\/.*/,
/https:\/\/discord\.gg\/slimevr$/,
];
if (allowed_urls.find((a) => url.match(a))) open(url);
else logger.error({ url }, 'attempted to open non-whitelisted 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();
}
});
const windowStateFile = await readFile(getWindowStateFile(), {
encoding: 'utf-8',
}).catch(() => null);
const defaultWindowState: {
width: number;
height: number;
x?: number;
y?: number;
} = {
width: 1289.0,
height: 709.0,
x: undefined,
y: undefined,
};
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;
}
const saveWindowState = async () => {
await mkdir(dirname(getWindowStateFile()), { recursive: true });
writeFileSync(getWindowStateFile(), JSON.stringify(windowState));
};
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,
devTools: true,
},
});
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 'hide':
mainWindow?.hide();
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);
mainWindow.webContents.on('context-menu', (event, params) => {
const menu = new Menu();
menu.append(
new MenuItem({
label: 'Inspect Element',
click: () => {
mainWindow?.webContents.inspectElement(params.x, params.y);
},
})
);
menu.append(new MenuItem({ type: 'separator' }));
menu.append(new MenuItem({ label: 'Copy', role: 'copy' }));
menu.append(new MenuItem({ label: 'Paste', role: 'paste' }));
if (mainWindow) menu.popup({ window: mainWindow });
});
}
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.quit();
}
};
const isServerRunning = async () => !(await isPortAvailable(21110));
const spawnServer = async () => {
if (options.skipServerIfRunning && (await isServerRunning())) {
logger.info(
{ skipServerIfRunning: options.skipServerIfRunning },
'Server is already running, skipping server start'
);
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.quit()
return;
}
logger.info({ javaBin, serverJar }, 'Found Java and server jar');
const platform = getPlatform();
const serverWorkdir = getServerDataFolder()
const serverProcess = spawn(javaBin, ['-Xmx128M', '-jar', serverJar, 'run'], {
cwd: serverWorkdir,
shell: false,
env:
platform === 'windows'
? {
...process.env,
APPDATA: app.getPath('appData'),
LOCALAPPDATA: process.env['USERPROFILE'] ? path.join(process.env['USERPROFILE'], 'AppData', 'Local') : undefined,
}
: undefined,
});
const sendToWindow = (event: ServerStatusEvent) => {
if (mainWindow && !mainWindow.webContents.isDestroyed()) {
mainWindow.webContents.send(IPC_CHANNELS.SERVER_STATUS, event);
}
};
serverProcess.stdout?.on('data', (message) => {
sendToWindow({ message: message.toString(), type: 'stdout' });
});
serverProcess.stderr?.on('data', (message) => {
sendToWindow({ message: message.toString(), type: 'stderr' });
});
serverProcess.on('error', (err) => {
logger.info({ err }, 'Error launching the java server');
if (!isQuitting) app.quit();
})
serverProcess.on('exit', () => {
logger.info('Server process exiting');
})
const exited = new Promise<void>((resolve) => serverProcess.once('exit', resolve));
return {
process: serverProcess,
close: () => serverProcess.kill(),
waitForExit: () => exited,
};
};
let isQuitting = false;
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', () => {
app.quit();
});
app.on('before-quit', async (event) => {
if (isQuitting) return;
isQuitting = true;
event.preventDefault();
logger.info('App quitting, saving...');
server?.close();
await server?.waitForExit();
stores.settings.save();
stores.cache.save();
discordPresence.destroy();
await saveWindowState();
await closeLogger();
app.exit(0);
});
});

View File

@@ -0,0 +1,34 @@
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);
export const closeLogger = () =>
new Promise<void>((resolve) => {
logger.flush(() => {
transport.once('close', resolve);
transport.end();
});
});

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

@@ -0,0 +1,120 @@
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 getWindowStateFile = () =>
join(getServerDataFolder(), '.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);
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,
app.isPackaged ? path.resolve(process.resourcesPath) : 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'),
hide: () => ipcRenderer.invoke(IPC_CHANNELS.WINDOW_ACTIONS, 'hide'),
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)
} 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;
hide: () => 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;
}
declare global {
interface Window {
electronAPI: IElectronAPI;
}
}

View File

@@ -18,6 +18,8 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="1A86", ATTRS{idProduct}=="7522", MODE="0660
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"
@@ -26,8 +28,10 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="1A86", ATTRS{idProduct}=="55D4", MODE="0660
SUBSYSTEMS=="usb", ATTRS{idVendor}=="10C4", ATTRS{idProduct}=="EA60", MODE="0660", TAG+="uaccess"
## Espressif
# ESP32-C3
# 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

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

Before

Width:  |  Height:  |  Size: 747 B

After

Width:  |  Height:  |  Size: 747 B

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

Before

Width:  |  Height:  |  Size: 698 B

After

Width:  |  Height:  |  Size: 698 B

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1008 B

After

Width:  |  Height:  |  Size: 1008 B

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 922 B

After

Width:  |  Height:  |  Size: 922 B

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 579 B

After

Width:  |  Height:  |  Size: 579 B

View File

Before

Width:  |  Height:  |  Size: 555 B

After

Width:  |  Height:  |  Size: 555 B

View File

Before

Width:  |  Height:  |  Size: 848 B

After

Width:  |  Height:  |  Size: 848 B

View File

Before

Width:  |  Height:  |  Size: 848 B

After

Width:  |  Height:  |  Size: 848 B

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 645 B

After

Width:  |  Height:  |  Size: 645 B

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 848 B

After

Width:  |  Height:  |  Size: 848 B

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

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);
}
}

View File

@@ -0,0 +1,26 @@
#!/bin/bash
SRC="/opt/SlimeVR/69-slimevr-devices.rules"
DESTDIRS=("/lib" "/usr/lib")
if [[ ! -f "$SRC" ]]; then
echo "SlimeVR udev rules not found, serial console and dongles may not work" >&2
exit 0
fi
echo "Configuring SlimeVR udev rules..."
for DIR in "${DESTDIRS[@]}"; do
if [[ -d "$DIR" && ! -h "$DIR" ]]; then
echo "Copying rules to $DIR"
install -Dm644 "$SRC" "$DIR/udev/rules.d/69-slimevr-devices.rules"
if command -v udevadm >/dev/null 2>&1; then
udevadm control --reload-rules
udevadm trigger
fi
exit 0
fi
done
echo "Couldn't copy SlimeVR udev rules, serial console and dongles may not work" >&2

View File

@@ -0,0 +1,8 @@
#!/bin/bash
echo "Removing SlimeVR udev rules..."
rm -f "/lib/udev/rules.d/69-slimevr-devices.rules"
rm -f "/usr/lib/udev/rules.d/69-slimevr-devices.rules"
if command -v udevadm >/dev/null 2>&1; then
udevadm control --reload-rules
fi

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' | 'hide') => 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') => string;
[IPC_CHANNELS.GH_FETCH]: <T extends GHGet>(
options: T
) => Promise<GHReturn[T['type']]>;
[IPC_CHANNELS.DISCORD_PRESENCE]: (options: DiscordPresence) => void;
}

View File

@@ -1,40 +1,87 @@
{
"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": "electron-builder",
"package:build": "pnpm build && pnpm package",
"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",
"@hookform/resolvers": "^3.6.0",
"@openapi-codegen/cli": "^3.1.0",
"@openapi-codegen/typescript": "^8.0.2",
"@react-hookz/deep-equal": "^3.0.3",
"@react-three/drei": "^9.114.3",
"@react-three/fiber": "^8.17.10",
"@sentry/react": "^9.9.0",
"@sentry/react": "10.29.0",
"@sentry/vite-plugin": "^2.22.7",
"@stylistic/eslint-plugin": "^5.5.0",
"@tailwindcss/forms": "^0.5.9",
"@tailwindcss/typography": "^0.5.15",
"@tanstack/react-query": "^5.48.0",
"@tauri-apps/api": "^2.0.2",
"@tauri-apps/plugin-dialog": "^2.0.0",
"@tauri-apps/plugin-fs": "2.4.1",
"@tauri-apps/plugin-http": "^2.5.0",
"@tauri-apps/plugin-opener": "^2.4.0",
"@tauri-apps/plugin-log": "~2",
"@tauri-apps/plugin-os": "^2.0.0",
"@tauri-apps/plugin-shell": "^2.3.0",
"@tauri-apps/plugin-store": "^2.4.1",
"@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": "^8.48.1",
"@typescript-eslint/parser": "^8.48.1",
"@vitejs/plugin-react": "^4.3.2",
"ajv": "^8.17.1",
"autoprefixer": "^10.4.20",
"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",
@@ -46,65 +93,21 @@
"react-responsive": "^10.0.0",
"react-router-dom": "^6.26.2",
"remark-gfm": "^4.0.0",
"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",
"yup": "^1.4.0"
},
"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",
"gen:javaversion": "cd src-tauri/src/ && javac JavaVersion.java && jar cvfe JavaVersion.jar JavaVersion JavaVersion.class",
"gen:firmware-tool": "openapi-codegen gen firmwareTool",
"gen:icons": "tauri icon --ios-color '#663499' src-tauri/icons/icon.svg"
},
"devDependencies": {
"@dword-design/eslint-plugin-import-alias": "^4.0.9",
"@openapi-codegen/cli": "^2.0.2",
"@openapi-codegen/typescript": "^8.0.2",
"@stylistic/eslint-plugin": "^5.5.0",
"@tailwindcss/forms": "^0.5.9",
"@tauri-apps/cli": "~2",
"@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",
"@vitejs/plugin-react": "^4.3.2",
"autoprefixer": "^10.4.20",
"cross-env": "^7.0.3",
"dotenv": "^16.4.5",
"eslint": "^9.39.0",
"eslint-config-airbnb": "^19.0.4",
"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": "^4.6.2",
"globals": "^15.10.0",
"prettier": "^3.3.3",
"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",
"three": "^0.163.0",
"ts-pattern": "^5.4.0",
"typescript": "^5.6.3",
"typescript-eslint": "^8.46.2",
"vite": "^5.4.8"
}
"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

@@ -814,11 +814,6 @@ 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 =
@@ -1269,3 +1264,6 @@ unknown_device-modal-forget = تجاهلها
## Error collection consent modal
## Tracking checklist section

View File

@@ -10,7 +10,7 @@
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 = Nepodařilo 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ů
@@ -33,6 +33,10 @@ tips-failed_webgl = Načtení WebGL selhalo.
## Units
unit-meter = Metr
unit-foot = Foot
unit-inch = Palec
unit-cm = cm
## Body parts
@@ -73,6 +77,8 @@ 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
@@ -84,6 +90,11 @@ 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
board_type-GESTURES = Gesta
board_type-ESP32S3_SUPERMINI = ESP32-S3 Supermini
board_type-GENERIC_NRF = Obecné nRF
board_type-SLIMEVR_BUTTERFLY_DEV = SlimeVR Dev Butterfly
board_type-SLIMEVR_BUTTERFLY = SlimeVR Butterfly
## Proportions
@@ -104,7 +115,7 @@ 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ě.
Pro upravení, Choďte 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
@@ -129,7 +140,11 @@ reset-reset_all_warning_default-v2 =
Jste si jistí že to chcete udělat?
reset-full = Plný Reset
reset-mounting = Znovu nastavit nasazení
reset-mounting-feet = Obnovit pozice nasazení nohou
reset-mounting-fingers = Obnovit pozice nasazení prstů
reset-yaw = Rychlý reset
reset-error-no_feet_tracker = Žádný tracker nohou nebyl přiřazen
reset-error-no_fingers_tracker = Žádné trackery prstů nebyly přiřazeny
## Serial detection stuff
@@ -149,11 +164,14 @@ navbar-trackers_assign = Přiřazení trackerů
navbar-mounting = Kalibrace nasazení
navbar-onboarding = Průvodce nastavením
navbar-settings = Nastavení
navbar-connect_trackers = Připojte Trackery
## Biovision hierarchy recording
bvh-start_recording = Nahrát BVH
bvh-stop_recording = Uložit BVH záznam
bvh-recording = Nahrávání...
bvh-save_title = Uložit BVH záznam
## Tracking pause
@@ -194,7 +212,7 @@ widget-imu_visualizer-rotation_raw = Nezpracované
widget-imu_visualizer-rotation_preview = Náhled
widget-imu_visualizer-acceleration = Akcelerace
widget-imu_visualizer-position = Pozice
widget-imu_visualizer-stay_aligned = Zůstaň Srovaný (Stay Aligned)
widget-imu_visualizer-stay_aligned = Zůstaň Srovnaný (Stay Aligned)
## Widget: Skeleton Visualizer
@@ -217,12 +235,13 @@ tracker-table-column-name = Název
tracker-table-column-type = Typ
tracker-table-column-battery = Baterie
tracker-table-column-ping = Ping
tracker-table-column-packet_loss = Ztráta Paketů
tracker-table-column-tps = TPS
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-stay_aligned = Zůstaň Srovnaný (Stay Aligned)
tracker-table-column-url = URL
## Tracker rotation
@@ -258,6 +277,9 @@ tracker-infos-magnetometer-status-v1 =
[ENABLED] Povoleno
*[NOT_SUPPORTED] Není podporováno
}
tracker-infos-packet_loss = Ztráta Paketů
tracker-infos-packets_lost = Pakety Ztraceny
tracker-infos-packets_received = Pakety Přijaty
## Tracker settings
@@ -288,10 +310,16 @@ 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-unavailable-v2 = Žádné vydání nebyla nalezena
tracker-settings-update-incompatible = Nelze aktualizovat. Nekompatibilní deska nebo verze firmwaru
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-blocked = Není dostupná aktualizace. Žádná jiná verze není k dispozici
tracker-settings-update = Aktualizovat nyní
tracker-settings-update-title = Verze Firmwareu
tracker-settings-current-version = Současný
tracker-settings-latest-version = Nejnovější
tracker-settings-build-date = Datum sestavení
## Tracker part card info
@@ -357,16 +385,20 @@ mounting_selection_menu-close = Zavřít
settings-sidebar-title = Nastavení
settings-sidebar-general = Obecné
settings-sidebar-steamvr = SteamVR
settings-sidebar-tracker_mechanics = Mechanika trackerů
settings-sidebar-stay_aligned = Zůstaň Srovaný (Stay Aligned)
settings-sidebar-stay_aligned = Zůstaň Srovnaný (Stay Aligned)
settings-sidebar-fk_settings = Nastavení trackování
settings-sidebar-gesture_control = Ovládání gesty
settings-sidebar-interface = Rozhraní
settings-sidebar-osc_router = OSC router
settings-sidebar-osc_trackers = VRChat OSC tracker
settings-sidebar-osc_vmc = VMC
settings-sidebar-utils = Nástroje
settings-sidebar-serial = Sériová konzole
settings-sidebar-appearance = Vzhled
settings-sidebar-home = Domovská obrazovka
settings-sidebar-checklist = Přehled trackování
settings-sidebar-notifications = Notifikace
settings-sidebar-behavior = Chování
settings-sidebar-firmware-tool = Nástroj pro DIY firmware
@@ -452,18 +484,25 @@ 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-general-tracker_mechanics-trackers_over_usb = Trackery přes USB
settings-stay_aligned = Zůstaň Srovnaný (Stay Aligned)
settings-stay_aligned-description = Zůstaň Srovnaný (Stay Aligned) 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ň Srovnaný (Stay Aligned)
settings-stay_aligned-setup-description = Musíte dokončit "Nastavení Zůstaň Srovnaný" 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-hide_yaw_correction-label = Skrýt ladění (pro srovnání s vypnutým Zůstaň Srovnaný)
settings-stay_aligned-general-label = Obecné
settings-stay_aligned-relaxed_poses-label = Relaxovací Póza
settings-stay_aligned-relaxed_poses-description = Zůstaň Srovnaný používá vaše uvolněné pózy k udržení srovnání trackerů. K aktualizaci těchto póz použijte "Nastavte Zůstaň Srovnaný".
settings-stay_aligned-relaxed_poses-standing = Upravit trackery při stoje
settings-stay_aligned-relaxed_poses-sitting = Upravit pozici trackerů při sezení na židli
settings-stay_aligned-relaxed_poses-flat = Upravte pozici trackerů při sezení na zemi, nebo ležení na zádech
settings-stay_aligned-relaxed_poses-save_pose = Uložit pózu
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-description = Při nahlašování problémů s Zůstaň Srovnaný, prosím zahrňte vaše nastavení.
settings-stay_aligned-debug-copy-label = Zkopírovat nastavení do schránky
## FK/Tracking settings
@@ -472,7 +511,7 @@ settings-general-fk_settings = Nastavení trackování
# Floor clip:
# why the name - came from the idea of noclip in video games, but is the opposite where clipping to the floor is a desired feature
# definition - Prevents the foot trackers from going lower than they where when a reset was performed
settings-general-fk_settings-leg_tweak-floor_clip = Podlahovej clip
settings-general-fk_settings-leg_tweak-floor_clip = Clip podlahy
# Skating correction:
# why the name - without this enabled the feet will often slide across the ground as if your skating across the ground,
# since this largely prevents this it corrects for it hence skating correction (note this may be renamed to sliding correction)
@@ -486,11 +525,14 @@ 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-v1 = Vynutit kalibraci nasazení pro trackery 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-ik = Data pozice
settings-general-fk_settings-ik-use_position = Použít Data pozice
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
@@ -614,6 +656,9 @@ settings-interface-behavior-error_tracking-description_v2 =
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
settings-interface-behavior-bvh_directory = Cesta pro uložení BVH záznamů
settings-interface-behavior-bvh_directory-description = Vyberte cestu k uložení záznamů BHV. namísto toho, abyste pokaždé vybírali, kam je uložit.
settings-interface-behavior-bvh_directory-label = Lokace pro BVH nahrávky
## Serial settings
@@ -624,7 +669,7 @@ settings-serial-description =
Může být užitečné, pokud potřebujete zjistit, zda se firmware chová špatně.
settings-serial-connection_lost = Ztráta připojení k seriálu, Připojení se obnovuje...
settings-serial-reboot = Restartovat
settings-serial-factory_reset = Obnovení továrního nastavení
settings-serial-factory_reset = Obnovení do továrního nastavení
# This cares about multilines
# <b>text</b> means that the text should be bold
settings-serial-factory_reset-warning =
@@ -637,6 +682,10 @@ 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
settings-serial-send_command = Odeslat
settings-serial-send_command-placeholder = Příkaz...
settings-serial-send_command-warning-ok = Vím, co dělám!
settings-serial-send_command-warning-cancel = Zrušit
## OSC router settings
@@ -729,6 +778,7 @@ settings-osc-vmc-mirror_tracking-label = Zrcadlení trackování
## Common OSC settings
settings-osc-common-network-port_banned_error = Port { $port } nelze použít!
## Advanced settings
@@ -765,9 +815,14 @@ settings-utils-advanced-open_logs-label = Otevřít složku
## Home Screen
settings-home-list-layout = Uspořádání seznamu trackerů
settings-home-list-layout-desc = Vyberte jedno z možných uspořádání domovské obrazovky.
settings-home-list-layout-grid = Mřížka
settings-home-list-layout-table = Tabulka
## Tracking Checlist
settings-tracking_checklist-active_steps = Aktivní kroky
## Setup/onboarding menu
@@ -784,11 +839,7 @@ 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-v2 = Trackey používající Wi-Fi
onboarding-wifi_creds-skip = Přeskočit nastavení Wi-Fi
onboarding-wifi_creds-submit = Odeslat!
onboarding-wifi_creds-ssid =
@@ -798,6 +849,8 @@ onboarding-wifi_creds-ssid-required = Je vyžadován název sítě Wi-Fi
onboarding-wifi_creds-password =
.label = Heslo
.placeholder = Zadejte heslo
onboarding-wifi_creds-dongle-title = Trackery používající dongle
onboarding-wifi_creds-dongle-continue = Pokračovat s donglem
## Mounting setup
@@ -819,7 +872,7 @@ onboarding-reset_tutorial-1 =
## Setup start
onboarding-home = Vítejte k SlimeVR
onboarding-home = Vítejte ve SlimeVR
onboarding-home-start = Pusťme se do toho!
## Setup done
@@ -890,6 +943,7 @@ onboarding-assignment_tutorial-done = Nachystal jsem samolepky a pásky!
onboarding-assign_trackers-back = Zpět na přihlašovací údaje Wi-Fi
onboarding-assign_trackers-title = Přiřazení trackerů
onboarding-assign_trackers-description = Vyberte, na jakou končetinu každý tracker patří. Klikněte na místo, kam chcete umístit tracker
onboarding-assign_trackers-unassign_all = Zrušit přiřazení všech trackerů
# Look at translation of onboarding-connect_tracker-connected_trackers on how to use plurals
# $assigned (Number) - Trackers that have been assigned a body part
# $trackers (Number) - Trackers connected to the server
@@ -937,7 +991,7 @@ onboarding-assign_trackers-warning-LEFT_FOOT =
## Tracker mounting method choose
onboarding-choose_mounting = Jakou metodu nasazení trackerů použít?
onboarding-choose_mounting = Jakou metodu nasazení trackerů chcete 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í
@@ -980,12 +1034,15 @@ onboarding-automatic_mounting-mounting_reset-step-0 = 1. Dřepněte si, jako př
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-v2-step-0 = 1. Stiskněte tlačítko pro "Plný Reset"
onboarding-automatic_mounting-preparation-v2-step-2 = 3. Zůstaňte v pozici, dokud 3s časovač neskončí.
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
onboarding-automatic_mounting-return-home = Hotovo
## Tracker manual proportions setupa
onboarding-manual_proportions-back-scaled = Jít zpět na Škálování Proporcí
onboarding-manual_proportions-title = Manuální proporce těla
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
@@ -1086,27 +1143,57 @@ onboarding-automatic_proportions-smol_warning-cancel = Jít zpět
## User height calibration
onboarding-user_height-title = Jaká je vaše výška?
onboarding-user_height-calculate = Vypočítejte mou výšku automaticky
onboarding-user_height-next_step = Uložit a pokračovat
onboarding-user_height-manual-proportions = Manuální Proporce
onboarding-user_height-calibration-title = Průběh kalibrace
onboarding-user_height-calibration-WAITING_FOR_RISE = Postavte se zpátky
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-ok = Ujistěte se, že je vaše hlava ve vodorovné pozici
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-low = Nedívejte se na podlahu
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-high = Nedívej se příliš vysoko
onboarding-user_height-calibration-RECORDING_HEIGHT = Znovu se postavte a nehýbejte se!
onboarding-user_height-calibration-DONE = Úspěch!
onboarding-user_height-calibration-ERROR_TIMEOUT = Časový limit kalibrace vypršel, zkuste to znovu.
onboarding-user_height-calibration-error = Kalibrace selhala
## 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-title = Zůstaň Srovnaný!
onboarding-stay_aligned-description = Nakonfigurujte Zůstaň Srovnaný, aby byly vaše trackery srovnány.
onboarding-stay_aligned-put_trackers_on-title = Nasaďte si trackery
onboarding-stay_aligned-put_trackers_on-trackers_warning = Aktuálně máte méně než 5 připojených a přiřazených trackerů! Toto je minimální počet trackerů potřebné pro správné fungování funkce Zůstaň Srovnaný.
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-0 = Zůstaň Srovnaný vyžaduje dobré nasazení. V opačném případě nebudete mít nejlepší zážitek s Zůstaň Srovnaný.
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-verify_mounting-redo_mounting = Předělat kalibraci nasazení
onboarding-stay_aligned-preparation-title = Příprava
onboarding-stay_aligned-preparation-tip = Ujistěte se, že stojíte vzpřímeně. koukáte vpřed a máte ruce podél těla.
onboarding-stay_aligned-relaxed_poses-standing-title = Uvolněná pozice ve stoje
onboarding-stay_aligned-relaxed_poses-standing-step-0 = 1. Stůjte v pohodlné pozici. Relaxujte!
onboarding-stay_aligned-relaxed_poses-standing-step-1-v2 = 2. Zmáčkněte tlačítko "Uložit pózu"
onboarding-stay_aligned-relaxed_poses-sitting-title = Uvolněná póza při sezení v židli
onboarding-stay_aligned-relaxed_poses-sitting-step-0 = 1. Posaďte se do pohodlné pozice, Relaxujte!
onboarding-stay_aligned-relaxed_poses-sitting-step-1-v2 = 2. Zmáčkněte tlačítko "Uložit pózu"
onboarding-stay_aligned-relaxed_poses-flat-title = Uvolněná pozice při sezení na zemi
onboarding-stay_aligned-relaxed_poses-flat-step-1-v2 = 2. Zmáčkněte tlačítko "Uložit pózu"
onboarding-stay_aligned-relaxed_poses-skip_step = Přeskočit
onboarding-stay_aligned-done-title = Zustaň Srovnaný zapnuto!
onboarding-stay_aligned-done-title = Zůstaň Srovnaný zapnuto!
onboarding-stay_aligned-done-description = Váš nastavení Zůstaň Srovnaný je dokončeno!
onboarding-stay_aligned-done-description-2 = Vaše nastavení je dokončeno! Pokud chcete vaše pózy znovu zkalibrovat, můžete proces zopakovat.
onboarding-stay_aligned-previous_step = Předchozí
onboarding-stay_aligned-next_step = Další
onboarding-stay_aligned-restart = Restart
onboarding-stay_aligned-done = Hotovo
onboarding-stay_aligned-manual_mounting-done = Hotovo
## Home
home-no_trackers = Nebyly zjištěny ani přiřazeny žádné trackery
home-settings = Nastavení domovské stránky
home-settings-close = Zavřít
## Trackers Still On notification
@@ -1142,8 +1229,28 @@ 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-select_source = Vyberte firmware k flashování
firmware_tool-select_source-error = Nelze načíst Zdroje
firmware_tool-select_source-board_type = Typ desky
firmware_tool-select_source-firmware = Zdrojový kód firmwaru
firmware_tool-select_source-version = Verze firmwaru
firmware_tool-select_source-official = Oficiální
firmware_tool-select_source-dev = Vývojářské
firmware_tool-select_source-not_selected = Nebyl vybrán žádný zdroj
firmware_tool-board_defaults = Nekonfigurujte vaší desku
firmware_tool-board_defaults-add = Přidat
firmware_tool-board_defaults-reset = Restartovat do výchozího nastavení
firmware_tool-board_defaults-error-required = Povinné pole
firmware_tool-board_defaults-error-format = Neplatný formát
firmware_tool-board_defaults-error-format-number = Není číslo
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-flash_method_step-ota-v2 =
.label = Wi-Fi
.description = Použijte "wireless" metodu. Vaše trackery budou používát Wi-Fi pro aktualizování jejich firmweru. Funguje pouze u trackerů, které již byly nastaveny.
firmware_tool-flash_method_step-serial-v2 =
.label = USB
.description = Použíjte USB kabel k aktualizování vaších trackerů
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:
@@ -1152,8 +1259,10 @@ firmware_tool-flashbtn_step-board_OTHER =
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-title = Flashování přes Wi-Fi
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-title = Flashování přes USB
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í
@@ -1162,12 +1271,16 @@ 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-warning-v2 = Během procesu nahrávání prosíme NEVYPÍNEJTE ani NEODPOJUJTE vaše trackery pokud k tomu nejste vyzváni, učiněním můžete způsobit že deska trackeru se stane nefunkční.
firmware_tool-flashing_step-flash_more = Flashnout více trackerů
firmware_tool-flashing_step-exit = Odejít
## firmware tool build status
firmware_tool-build-QUEUED = Čekání na sestavení...
firmware_tool-build-CREATING_BUILD_FOLDER = Vytváření složky pro sestavení
firmware_tool-build-DOWNLOADING_SOURCE = Stahování zdrojového kódu
firmware_tool-build-EXTRACTING_SOURCE = Extrahování zdrojového kódu
firmware_tool-build-BUILDING = Sestavování firmweru
firmware_tool-build-SAVING = Ukládání sestavení
firmware_tool-build-DONE = Sestavení dokončeno
@@ -1176,6 +1289,7 @@ firmware_tool-build-ERROR = Nepodařilo se sestavit firmwere
## Firmware update status
firmware_update-status-DOWNLOADING = Stahování firmwaru
firmware_update-status-NEED_MANUAL_REBOOT-v2 = Vypněte a znovu zapněte tracker prosím
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
@@ -1200,7 +1314,7 @@ firmware_update-no_devices = Prosím ujistěte se, že tracker který chcete akt
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-update = Aktualizovat Zvolené Trackery
firmware_update-exit = Odejít
## Tray Menu
@@ -1230,10 +1344,15 @@ unknown_device-modal-description =
Chcete jej připojit k SlimeVR?
unknown_device-modal-confirm = Jasně!
unknown_device-modal-forget = Ignoruj
# VRChat config warnings
vrc_config-page-title = Varování VRChat konfigurace
vrc_config-page-desc = Tato stránka slouží k zobrazení vašeho aktuálního stavu nastavení ve VRChat. přesněji, nástavní které jsou nekompatibilní s SlimeVR. Je silně doporučeno poupravit všechny chybné nastavení které jsou zde zobrazeny pro nejlepší zážitek s SlimeVR.
vrc_config-page-help = Nemůžete najít specifické nastavení?
vrc_config-page-help-desc = Podívejte se na naší <a>dokumentaci k tomuto tématu!</a>
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-page-wrist_menu-desc = Nastavení související s IK najdete v malém (zápěstním) menu
vrc_config-on = Zapnuto
vrc_config-off = Vypnuto
vrc_config-invalid = Máte špatně nakonfigurované VRChat nastavení!
@@ -1246,6 +1365,7 @@ 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-shoulder_width_compensation = Kompenzace Šířky 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
@@ -1274,3 +1394,31 @@ error_collection_modal-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
tracking_checklist-settings-close = Zavřít
tracking_checklist-status-incomplete = Nejste připraveni používat SlimeVR!
tracking_checklist-status-complete = Jste připravení k použití SlimeVR
tracking_checklist-FULL_RESET = Proveďte plné obnovení
tracking_checklist-STEAMVR_DISCONNECTED = SteamVR není zapnut
tracking_checklist-STEAMVR_DISCONNECTED-desc = SteamVR není zapnut. Používáte ho pro VR?
tracking_checklist-STEAMVR_DISCONNECTED-open = Spusťte SteamVR
tracking_checklist-TRACKERS_REST_CALIBRATION = Kalibrujte vaše trackery
tracking_checklist-TRACKER_ERROR = Trackery s chybami
tracking_checklist-VRCHAT_SETTINGS = Nakonfigurujte nastavení VRChat
tracking_checklist-VRCHAT_SETTINGS-open = Přejít k varování ve VRChat
tracking_checklist-NETWORK_PROFILE_PUBLIC = Změňte profil sítě
tracking_checklist-NETWORK_PROFILE_PUBLIC-open = Otevřete Ovládací Panel
tracking_checklist-STAY_ALIGNED_CONFIGURED = Nakonfigurujte Zůstaň Srovnaný
tracking_checklist-ignore = Ignorovat
preview-mocap_mode_soon = Režim Mocap (brzy™)
preview-disable_render = Vypnout vykreslování
preview-disabled_render = Vykreslování vypnuto
toolbar-mounting_calibration = Kalibrace nasazení
toolbar-mounting_calibration-default = Tělo
toolbar-mounting_calibration-feet = Chodidla
toolbar-mounting_calibration-fingers = Prsty
toolbar-drift_reset = Restartování driftu
toolbar-assigned_trackers = { $count } trackery/ů přiřazeno
toolbar-unassigned_trackers = { $count } trackey/ů nepřiřazeno

View File

@@ -483,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 =
@@ -656,3 +651,6 @@ home-no_trackers = Ingen trackere registreret eller tildelt
## Error collection consent modal
## Tracking checklist section

View File

@@ -33,6 +33,10 @@ tips-failed_webgl = Fehler beim Initialisieren von WebGL.
## Units
unit-meter = Meter
unit-foot = Fuß
unit-inch = Zoll
unit-cm = Zentimeter
## Body parts
@@ -111,11 +115,19 @@ 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
board_type-GESTURES = Gesten
board_type-ESP32S3_SUPERMINI = ESP32-S3 Supermini
board_type-GENERIC_NRF = Generisches nRF
board_type-SLIMEVR_BUTTERFLY_DEV = SlimeVR Dev Butterfly
board_type-SLIMEVR_BUTTERFLY = SlimeVR Butterfly
## 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.
@@ -133,6 +145,9 @@ 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
@@ -166,7 +181,12 @@ reset-reset_all_warning_default-v2 =
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
reset-error-mounting-need_full_reset = Ein vollständiger Reset ist vor der Tracker-Ausrichtung erforderlich.
reset-error-yaw-need_full_reset = Für den Yaw-Reset ist ein vollständiger Reset erforderlich.
## Serial detection stuff
@@ -186,6 +206,7 @@ navbar-trackers_assign = Tracker-Zuordnung
navbar-mounting = Tracker-Ausrichtung
navbar-onboarding = Einrichtungs-Assistent
navbar-settings = Einstellungen
navbar-connect_trackers = Tracker verbinden
## Biovision hierarchy recording
@@ -211,7 +232,7 @@ widget-drift_compensation-clear = Driftkompensation zurücksetzen
## Widget: Clear Mounting calibration
widget-clear_mounting = Befestigungs-Reset zurücksetzen
widget-clear_mounting = Tracker-Ausrichtung zurücksetzen
## Widget: Developer settings
@@ -256,6 +277,7 @@ tracker-table-column-name = Name
tracker-table-column-type = Typ
tracker-table-column-battery = Batterie
tracker-table-column-ping = Latenz
tracker-table-column-packet_loss = Paketverlust
tracker-table-column-tps = TPS
tracker-table-column-temperature = Temp. °C
tracker-table-column-linear-acceleration = Beschleunigung X/Y/Z
@@ -275,7 +297,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
@@ -297,6 +319,9 @@ tracker-infos-magnetometer-status-v1 =
[ENABLED] Angeschalten
*[NOT_SUPPORTED] Nicht unterstützt
}
tracker-infos-packet_loss = Paketverlust
tracker-infos-packets_lost = Pakete verloren
tracker-infos-packets_received = Pakete empfangen
## Tracker settings
@@ -327,11 +352,16 @@ 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-settings-current-version = Aktuelle
tracker-settings-latest-version = Aktuelleste
tracker-settings-build-date = Herstellungsdatum
## Tracker part card info
@@ -409,6 +439,8 @@ 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
@@ -484,20 +516,34 @@ 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-general-tracker_mechanics-trackers_over_usb = Tracker über USB
settings-general-tracker_mechanics-trackers_over_usb-enabled-label = Erlaube HID-Tracker eine USB-Direktverbindung
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-hide_yaw_correction-label = Anpassung ausblenden (zum Vergleich ohne Stay Aligned)
settings-stay_aligned-general-label = Allgemein
settings-stay_aligned-relaxed_poses-label = Entspannte Posen
settings-stay_aligned-relaxed_poses-standing = Tracker im Stehen anpassen
settings-stay_aligned-relaxed_poses-sitting = Tracker anpassen, während du auf einem Stuhl sitzt
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
@@ -520,22 +566,26 @@ 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-v1 = Erzwinge Fußausrichtungs-Kalibrierung während der Körperausrichtungs-Kalibrierung.
settings-general-fk_settings-leg_fk-reset_mounting_feet-v1 = Fuß-Ausrichtung kalibrieren
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
@@ -561,7 +611,7 @@ settings-general-fk_settings-self_localization-description = Der Motion-Capture-
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 =
@@ -582,8 +632,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
@@ -651,6 +701,8 @@ settings-interface-behavior-error_tracking-description_v2 =
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
@@ -666,7 +718,7 @@ 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-serial_select = Wählen Sie einen seriellen Anschluss
@@ -674,6 +726,11 @@ 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
@@ -770,6 +827,7 @@ 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
@@ -807,9 +865,14 @@ 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-grid = Raster
settings-home-list-layout-table = Tabelle
## Tracking Checlist
settings-tracking_checklist-active_steps = Aktive Schritte
## Setup/onboarding menu
@@ -824,12 +887,7 @@ 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-v2 = Tracker mit WLAN
onboarding-wifi_creds-skip = WLAN-Zugangsdaten überspringen
onboarding-wifi_creds-submit = Weiter!
onboarding-wifi_creds-ssid =
@@ -839,10 +897,12 @@ onboarding-wifi_creds-ssid-required = WLAN-Name ist erforderlich
onboarding-wifi_creds-password =
.label = Passwort
.placeholder = Passwort eingeben
onboarding-wifi_creds-dongle-title = Tracker mit einem Dongle
onboarding-wifi_creds-dongle-continue = Fahre mit einem Dongle fort
## 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
@@ -859,11 +919,11 @@ 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
@@ -893,7 +953,10 @@ onboarding-connect_tracker-connection_status-looking_for_server = Suche nach Ser
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
@@ -934,6 +997,7 @@ onboarding-assignment_tutorial-done = Ich habe Aufkleber und Bänder angebracht!
onboarding-assign_trackers-back = Zurück zu den WLAN-Zugangsdaten
onboarding-assign_trackers-title = Tracker zuweisen
onboarding-assign_trackers-description = Wählen Sie nun aus, welcher Tracker wo befestigt ist. Klicken Sie auf einen Ort, an dem der Tracker platziert ist.
onboarding-assign_trackers-unassign_all = Alle Trackerzuweisungen aufheben
# Look at translation of onboarding-connect_tracker-connected_trackers on how to use plurals
# $assigned (Number) - Trackers that have been assigned a body part
# $trackers (Number) - Trackers connected to the server
@@ -1079,6 +1143,9 @@ 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-v2-step-0 = 1. Drücke den Knopf "Kompletter Reset".
onboarding-automatic_mounting-preparation-v2-step-1 = 2. Stehe aufrecht mit den Armen an den Seiten. Schaue unbedingt nach vorne.
onboarding-automatic_mounting-preparation-v2-step-2 = 3. Halte die Position, bis 3 Sekunden abgelaufen sind.
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
@@ -1092,6 +1159,7 @@ onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Bitte schlie
onboarding-manual_proportions-export = Proportionen exportieren
onboarding-manual_proportions-import = Proportionen importieren
onboarding-manual_proportions-file_type = Körperproportions-Datei
onboarding-manual_proportions-grouped_proportions = Gruppierte Proportionen
onboarding-manual_proportions-all_proportions = Alle Proportionen
onboarding-manual_proportions-estimated_height = Geschätzte Benutzergröße
@@ -1180,20 +1248,65 @@ onboarding-automatic_proportions-smol_warning-cancel = Zurück
## User height calibration
onboarding-user_height-title = Wie groß bist du?
onboarding-user_height-description = Wir brauchen deine Größe, um deine Körperproportionen zu berechnen und deine Bewegungen genau darzustellen. Du kannst dies entweder SlimeVR berechnen lassen oder deine Höhe manuell eingeben.
onboarding-user_height-calculate = Berechne meine Körpergröße automatisch
onboarding-user_height-next_step = Fortfahren und speichern
onboarding-user_height-manual-proportions = Manuelle Körperproportionen
onboarding-user_height-calibration-title = Kalibrierungsfortschritt
onboarding-user_height-calibration-WAITING_FOR_RISE = Steh wieder auf
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK = Steh wieder auf und schau nach vorne
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-ok = Achte darauf, dass dein Kopf waagerecht ist
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-RECORDING_HEIGHT = Steh wieder auf und steh still!
onboarding-user_height-calibration-DONE = Erfolg!
onboarding-user_height-calibration-ERROR_TIMEOUT = Die Kalibrierung ist abgelaufen, versuche es nochmal.
onboarding-user_height-calibration-ERROR_TOO_HIGH = Die erkannte Benutzerhöhe ist zu hoch, versuche es erneut.
onboarding-user_height-calibration-error = Kalibrierung fehlgeschlagen
onboarding-user_height-reset-warning =
<b>Achtung:</b> Die Proportionen werden zurückgesetzt und auf Basis deiner Körpergröße neu berechnet.
Bist du dir sicher?
## 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-step-1 = 1. Bewege dich im Stehen.
onboarding-stay_aligned-verify_mounting-step-2 = 2. Setz dich hin und bewege deine Beine und Füße.
onboarding-stay_aligned-verify_mounting-step-3 = 3. Wenn deine Tracker nicht an der richtigen Stelle sind, drücke "Ausrichtungskalibrierung wiederholen".
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-title = Entspannte Stehpose
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-sitting-title = Entspannte Im-Stuhl-sitzen-Pose
onboarding-stay_aligned-relaxed_poses-sitting-step-0 = 1. Nehme eine bequeme Haltung ein. Entspanne dich!
onboarding-stay_aligned-relaxed_poses-sitting-step-1-v2 = 2. Drücke die Taste „Pose speichern“.
onboarding-stay_aligned-relaxed_poses-flat-title = Entspannte Sitzposition auf dem Boden
onboarding-stay_aligned-relaxed_poses-flat-step-0 = 1. Setz dich mit den Beinen nach vorne auf den Boden. Entspann dich!
onboarding-stay_aligned-relaxed_poses-flat-step-1-v2 = 2. Drücke die Taste „Pose speichern“.
onboarding-stay_aligned-relaxed_poses-skip_step = Überspringen
onboarding-stay_aligned-done-title = Stay aligned aktiviert!
onboarding-stay_aligned-done-description = Dein Stay Aligned-Setup ist komplett!
onboarding-stay_aligned-previous_step = Zurück
onboarding-stay_aligned-next_step = Weiter
onboarding-stay_aligned-restart = Neu starten
onboarding-stay_aligned-done = Fertig
onboarding-stay_aligned-manual_mounting-done = Fertig
## Home
home-no_trackers = Keine Tracker erkannt oder zugewiesen
home-settings = Startseiten-Einstellungen
home-settings-close = Schließen
## Trackers Still On notification
@@ -1229,10 +1342,35 @@ 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 = Wähle die Firmware zum Flashen aus
firmware_tool-select_source-description = Wähle die Firmware aus, die du auf deinem Board flashen möchtest
firmware_tool-select_source-error = Quellen konnten nicht geladen werden
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-select_source-not_selected = Keine Quelle ausgewählt
firmware_tool-select_source-no_boards = Keine verfügbaren Boards für diese Quelle
firmware_tool-select_source-no_versions = Keine verfügbaren Versionen für diese Quelle
firmware_tool-board_defaults = Konfigurieren Sie Ihr Board
firmware_tool-board_defaults-description = Stelle die Pins oder Einstellungen relativ zu deiner Hardware ein
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:
@@ -1241,8 +1379,10 @@ firmware_tool-flashbtn_step-board_OTHER =
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
@@ -1257,7 +1397,10 @@ 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
@@ -1323,6 +1466,13 @@ 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 = Kannst du die Einstellungen nicht finden?
vrc_config-page-help-desc = Schauen Sie sich unsere <a>Dokumentation zu diesem Thema</a> an!
vrc_config-page-big_menu = Tracking & IK (Großes Menü)
vrc_config-page-big_menu-desc = Einstellungen im Zusammenhang mit IK im großen Einstellungsmenü
vrc_config-page-wrist_menu = Tracking & IK (Handgelenkmenü)
vrc_config-page-wrist_menu-desc = Einstellungen im Zusammenhang mit IK im kleinen Einstellungsmenü (Handgelenkmenü)
vrc_config-on = An
vrc_config-off = Aus
vrc_config-invalid = Sie haben falsch konfigurierte VRChat-Einstellungen!
@@ -1333,10 +1483,27 @@ vrc_config-current_value = Aktueller Wert
vrc_config-mute = Warnung stummschalten
vrc_config-mute-btn = Stummschalten
vrc_config-unmute-btn = Stummschaltung aufheben
vrc_config-legacy_mode = Verwende Legacy IK Solving
vrc_config-disable_shoulder_tracking = Schultertracking deaktivieren
vrc_config-shoulder_width_compensation = Schulterbreitenkompensation
vrc_config-spine_mode = FBT-Wirbelsäulenmodus
vrc_config-tracker_model = FBT-Trackermodell
vrc_config-avatar_measurement_type = Avatar-Messung
vrc_config-calibration_range = Kalibrierungsbereich
vrc_config-calibration_visuals = Display-Kalibrierungsvisualisierungen
vrc_config-user_height = Echte Benutzergröße
vrc_config-spine_mode-UNKNOWN = Unbekannt
vrc_config-spine_mode-LOCK_BOTH = Beide sperren
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-BOX = Box
vrc_config-tracker_model-SPHERE = Sphäre
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
@@ -1347,3 +1514,53 @@ error_collection_modal-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 = Tracking-Checkliste
tracking_checklist-settings = Einstellungen der Tracking-Checkliste
tracking_checklist-settings-close = Schließen
tracking_checklist-status-incomplete = Du bist nicht darauf vorbereitet, SlimeVR zu benutzen!
tracking_checklist-status-partial =
{ $count ->
[one] Sie haben 1 Warnung!
*[other] Sie haben { $count } Warnungen!
}
tracking_checklist-status-complete = Du bist bereit, SlimeVR zu nutzen!
tracking_checklist-MOUNTING_CALIBRATION = Tracker-Ausrichtung durchführen
tracking_checklist-FEET_MOUNTING_CALIBRATION = Führe eine Fußmontage-Kalibrierung durch
tracking_checklist-FULL_RESET = Führe einen vollständigen Reset durch
tracking_checklist-FULL_RESET-desc = Manche Tracker benötigen eine erneute Kalibrierung.
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 = Kalibriere deine Tracker
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-TRACKER_ERROR-desc = Einige deiner Tracker haben einen Fehler. Bitte starte die gelb markierten Tracker neu.
tracking_checklist-VRCHAT_SETTINGS = VRChat-Einstellungen konfigurieren
tracking_checklist-VRCHAT_SETTINGS-desc = Du hast die VRChat-Einstellungen falsch konfiguriert! Das kann sich negativ auf dein Tracking auswirken.
tracking_checklist-VRCHAT_SETTINGS-open = Gehen sie zu den VRChat-Warnungen
tracking_checklist-UNASSIGNED_HMD = VR-Headset nicht dem Kopf zugewiesen
tracking_checklist-UNASSIGNED_HMD-desc = Das VR-Headset sollte als Kopf-Tracker zugewiesen sein.
tracking_checklist-NETWORK_PROFILE_PUBLIC = Ändere dein Netzwerkprofil
tracking_checklist-NETWORK_PROFILE_PUBLIC-desc =
{ $count ->
[one] Dein Netzwerkprofil ist derzeit auf Öffentlich ({ $adapters }) eingestellt. Dies wird für das ordnungsgemäße Funktionieren von SlimeVR nicht empfohlen. <PublicFixLink>Hier erfährst du, wie du das beheben kannst.</PublicFixLink>
*[other] Einige deiner Netzwerkadapter sind auf Öffentlich eingestellt:¶{ $adapters }¶Das wird nicht empfohlen, damit SlimeVR ordnungsgemäß funktioniert.¶<PublicFixLink>Hier erfährst du, wie du das beheben kannst.</PublicFixLink>
}
tracking_checklist-NETWORK_PROFILE_PUBLIC-open = Kontrollpanel öffnen
tracking_checklist-STAY_ALIGNED_CONFIGURED = Stay Aligned konfigurieren
tracking_checklist-STAY_ALIGNED_CONFIGURED-desc = Zeichne die Stay Aligned-Posen auf, um Drift zu reduzieren
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-drift_reset = Drift-Reset
toolbar-assigned_trackers = { $count } Tracker zugewiesen
toolbar-unassigned_trackers = { $count } Tracker nicht zugewiesen

View File

@@ -374,3 +374,6 @@ settings-osc-vrchat-network-trackers-feet = Πόδια
## Error collection consent modal
## Tracking checklist section

View File

@@ -742,11 +742,6 @@ 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 =
@@ -1224,3 +1219,6 @@ unknown_device-modal-forget = ignowe it
## Error collection consent modal
## Tracking checklist section

View File

@@ -109,6 +109,11 @@ 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 Glove
board_type-GESTURES = Gestures
board_type-ESP32S3_SUPERMINI = ESP32-S3 Supermini
board_type-GENERIC_NRF = Generic nRF
board_type-SLIMEVR_BUTTERFLY_DEV = SlimeVR Dev Butterfly
board_type-SLIMEVR_BUTTERFLY = SlimeVR Butterfly
## Proportions
skeleton_bone-NONE = None
@@ -331,6 +336,7 @@ tracker-table-column-name = Name
tracker-table-column-type = Type
tracker-table-column-battery = Battery
tracker-table-column-ping = Ping
tracker-table-column-packet_loss = Packet Loss
tracker-table-column-tps = TPS
tracker-table-column-temperature = Temp. °C
tracker-table-column-linear-acceleration = Accel. X/Y/Z
@@ -370,6 +376,10 @@ tracker-infos-magnetometer-status-v1 = { $status ->
[ENABLED] Enabled
}
tracker-infos-packet_loss = Packet Loss
tracker-infos-packets_lost = Packets Lost
tracker-infos-packets_received = Packets Received
## Tracker settings
tracker-settings-back = Go back to trackers list
tracker-settings-title = Tracker settings
@@ -407,6 +417,7 @@ tracker-settings-update = Update now
tracker-settings-update-title = Firmware version
tracker-settings-current-version = Current
tracker-settings-latest-version = Latest
tracker-settings-build-date = Build Date
## Tracker part card info
@@ -567,6 +578,10 @@ settings-general-tracker_mechanics-use_mag_on_all_trackers-description =
Uses magnetometer on all trackers that have a compatible firmware for it, reducing drift in stable magnetic environments.
Can be disabled per tracker in the tracker's settings. <b>Please don't shutdown any of the trackers while toggling this!</b>
settings-general-tracker_mechanics-use_mag_on_all_trackers-label = Use magnetometer on trackers
settings-general-tracker_mechanics-trackers_over_usb = Trackers over USB
settings-general-tracker_mechanics-trackers_over_usb-description =
Enables receiving HID tracker data over USB. Make sure connected trackers have <b>connection over HID</b> enabled!
settings-general-tracker_mechanics-trackers_over_usb-enabled-label = Allow HID trackers to connect directly over USB
settings-stay_aligned = Stay Aligned
settings-stay_aligned-description = Stay Aligned reduces drift by gradually adjusting your trackers to match your relaxed poses.
@@ -921,11 +936,13 @@ onboarding-setup_warning-cancel = Continue setup
## Wi-Fi setup
onboarding-wifi_creds-back = Go back to introduction
onboarding-wifi_creds = Input Wi-Fi credentials
onboarding-wifi_creds-v2 = Trackers using Wi-Fi
# This cares about multilines
onboarding-wifi_creds-description =
The Trackers will use these credentials to connect wirelessly.
Please use the credentials that you are currently connected to.
onboarding-wifi_creds-description-v2 =
Most trackers (such as official SlimeVR trackers) use Wi-Fi to connect to the server.
Please use the credentials of the Wi-Fi network your device is currently connected to.
Make sure to use a 2.4GHz Wi-Fi connection for your trackers!
onboarding-wifi_creds-skip = Skip Wi-Fi settings
onboarding-wifi_creds-submit = Submit!
onboarding-wifi_creds-ssid =
@@ -936,6 +953,12 @@ onboarding-wifi_creds-password =
.label = Password
.placeholder = Enter password
onboarding-wifi_creds-dongle-title = Trackers using a dongle
onboarding-wifi_creds-dongle-description =
If your trackers came with a dongle, plug it into your device and you should be good to go!
onboarding-wifi_creds-dongle-wip = This section is a work in progress. A dedicated page to manage trackers that connect via a dongle will be made soon.
onboarding-wifi_creds-dongle-continue = Continue with a dongle
## Mounting setup
onboarding-reset_tutorial-back = Go back to Mounting calibration
onboarding-reset_tutorial = Reset tutorial
@@ -1334,6 +1357,7 @@ onboarding-stay_aligned-previous_step = Previous
onboarding-stay_aligned-next_step = Next
onboarding-stay_aligned-restart = Restart
onboarding-stay_aligned-done = Done
onboarding-stay_aligned-manual_mounting-done = Done
## Home
home-no_trackers = No trackers detected or assigned
@@ -1385,6 +1409,9 @@ firmware_tool-select_source-firmware = Firmware Source
firmware_tool-select_source-version = Firmware Version
firmware_tool-select_source-official = Official
firmware_tool-select_source-dev = Dev
firmware_tool-select_source-not_selected = No source selected
firmware_tool-select_source-no_boards = No available boards for this source
firmware_tool-select_source-no_versions = No available versions for this source
firmware_tool-board_defaults = Configure your board
firmware_tool-board_defaults-description = Set the pins or settings relative to your hardware
@@ -1557,7 +1584,7 @@ error_collection_modal-description_v2 = { settings-interface-behavior-error_trac
error_collection_modal-confirm = I agree
error_collection_modal-cancel = I don't want to
## Tracking checklist section
tracking_checklist = Tracking Checklist
tracking_checklist-settings = Tracking Checklist Settings
tracking_checklist-settings-close = Close

View File

@@ -10,7 +10,7 @@
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 = 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
@@ -33,6 +33,10 @@ tips-failed_webgl = Fallo al inicializar WebGL.
## Units
unit-meter = Metro
unit-foot = Pie
unit-inch = Pulgada
unit-cm = cm
## Body parts
@@ -111,6 +115,11 @@ 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
board_type-GESTURES = Gestos
board_type-ESP32S3_SUPERMINI = ESP32-S3 Supermini
board_type-GENERIC_NRF = nRF Genérico
board_type-SLIMEVR_BUTTERFLY_DEV = SlimeVR Dev Butterfly
board_type-SLIMEVR_BUTTERFLY = SlimeVR Butterfly
## Proportions
@@ -252,6 +261,10 @@ 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
reset-error-no_feet_tracker = Tracker de pie sin asignar
reset-error-no_fingers_tracker = Tracker de dedos sin asignar
reset-error-mounting-need_full_reset = Es necesario un reinicio completo antes de montar
reset-error-yaw-need_full_reset = Es necesario un reinicio completo antes del reinicio horizontal
## Serial detection stuff
@@ -271,10 +284,12 @@ navbar-trackers_assign = Asignación de sensores
navbar-mounting = Calibración de montura
navbar-onboarding = Asistente de configuración
navbar-settings = Ajustes
navbar-connect_trackers = Conectar Trackers
## Biovision hierarchy recording
bvh-start_recording = Grabar BVH
bvh-stop_recording = Guardar grabación BVH
bvh-recording = Grabando...
bvh-save_title = Guardar grabación BVH
@@ -418,6 +433,9 @@ 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-settings-current-version = Actual
tracker-settings-latest-version = Último
tracker-settings-build-date = Fecha de fabricación
## Tracker part card info
@@ -495,6 +513,8 @@ settings-sidebar-osc_vmc = VMC
settings-sidebar-utils = Utilidades
settings-sidebar-serial = Consola serial
settings-sidebar-appearance = Apariencia
settings-sidebar-home = Pantalla de Inicio
settings-sidebar-checklist = Lista de Tracking
settings-sidebar-notifications = Notificaciones
settings-sidebar-behavior = Comportamiento
settings-sidebar-firmware-tool = Herramienta de firmware DIY
@@ -651,7 +671,7 @@ settings-general-fk_settings-skeleton_settings-extended_spine_model = Modelo ext
settings-general-fk_settings-skeleton_settings-extended_pelvis_model = Modelo extendido del pelvis
settings-general-fk_settings-skeleton_settings-extended_knees_model = Modelo extendido de la rodilla
settings-general-fk_settings-skeleton_settings-ratios = Radios del esqueleto
settings-general-fk_settings-skeleton_settings-ratios-description = Cambia los valores de los ajustes del esqueleto. Podes llegar a necesitar reajustar tus proporciones después de cambiar estos valores.
settings-general-fk_settings-skeleton_settings-ratios-description = Cambia los valores de los ajustes del esqueleto. Podrías llegar a necesitar reajustar tus proporciones después de cambiar estos valores.
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_hip = Imputar de la cintura al pecho hasta la cadera
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_legs = Imputar de la cintura al pecho hasta las piernas
settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs = Imputar de la cadera al pecho hasta las piernas
@@ -925,9 +945,15 @@ settings-utils-advanced-open_logs-label = Abrir carpeta
## Home Screen
settings-home-list-layout = Diseño de la lista de Trackers
settings-home-list-layout-desc = Selecciona uno de los posibles diseños de la pantalla de inicio
settings-home-list-layout-grid = Cuadrícula
settings-home-list-layout-table = Tabla
## Tracking Checlist
settings-tracking_checklist-active_steps = Pasos Activos
settings-tracking_checklist-active_steps-desc = Lista de todos los pasos en la lista de tracking. Puedes elegir desactivar pasos específicos.
## Setup/onboarding menu
@@ -944,11 +970,13 @@ 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
onboarding-wifi_creds-v2 = Trackers utilizando 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-description-v2 =
La mayoría de trackers (como los trackers oficiales de SlimeVR) utilizan Wi-Fi para conectar al servidor.
Por favor utiliza las credenciales de la red Wi-Fi donde tu dispositivo esta actualmente conectado.
¡Asegúrate de utilizar una conexión Wi-Fi 2.4Ghz para tus trackers!
onboarding-wifi_creds-skip = Saltar ajustes de Wi-Fi
onboarding-wifi_creds-submit = ¡Enviar!
onboarding-wifi_creds-ssid =
@@ -958,12 +986,16 @@ onboarding-wifi_creds-ssid-required = Se requiere el nombre del Wi-Fi
onboarding-wifi_creds-password =
.label = Contraseña
.placeholder = Ingresa la contraseña
onboarding-wifi_creds-dongle-title = Trackers utilizando un dongle
onboarding-wifi_creds-dongle-description = ¡Si tus trackers llegaron con un dongle, conéctalo a tu dispositivo y deberías estar listo para usar!
onboarding-wifi_creds-dongle-wip = Esta sección es un trabajo en progreso. Una página dedicada para administrar trackers que se conectan via dongle sera hecha pronto.
onboarding-wifi_creds-dongle-continue = Continuar con un dongle
## Mounting setup
onboarding-reset_tutorial-back = Volver a la calibración de montura
onboarding-reset_tutorial = Reiniciar tutorial
onboarding-reset_tutorial-explanation = Mientras estés usando tus trackers, estos pueden empezar a desalinearse por el drift horizontal del IMU, o porque los moviste físicamente. Hay varias formas de arreglar este tipo de problemas.
onboarding-reset_tutorial-explanation = Mientras estés usando tus trackers, estos pueden empezar a desalinearse por el desvío horizontal del IMU, o porque los moviste físicamente. Hay varias formas de arreglar este tipo de problemas.
onboarding-reset_tutorial-skip = Saltar paso
# Cares about multiline
onboarding-reset_tutorial-0 =
@@ -974,8 +1006,8 @@ onboarding-reset_tutorial-0 =
onboarding-reset_tutorial-1 =
Toca { $taps } veces el tracker resaltado para activar el reinicio completo.
Se requiere que estas de forma parada (pose en i). Esto tiene un delay de 3 segundos (configurable) antes de que actualmente suceda.
Esto reinicia completamente la posición y rotación de todos tus sensores, debería de arreglar la mayoría de tus problemas.
Se requiere que estés de pie (pose en i). Esto tiene una demora de 3 segundos (configurable) antes de que realmente suceda.
Esto reinicia completamente la posición y rotación de todos tus trackers. Debería de arreglar la mayoría de los problemas.
# Cares about multiline
onboarding-reset_tutorial-2 =
Toca { $taps } veces el tracker resaltado para activar el reinicio de montura.
@@ -1063,6 +1095,7 @@ onboarding-assignment_tutorial-done = ¡Puse las correas y stickers!
onboarding-assign_trackers-back = Volver a las credenciales Wi-Fi
onboarding-assign_trackers-title = Asignación de sensores
onboarding-assign_trackers-description = Debes escoger dónde van los sensores. Has clic en la ubicación donde quieras colocar un sensor
onboarding-assign_trackers-unassign_all = Des-asignar todos los trackers
# Look at translation of onboarding-connect_tracker-connected_trackers on how to use plurals
# $assigned (Number) - Trackers that have been assigned a body part
# $trackers (Number) - Trackers connected to the server
@@ -1208,6 +1241,8 @@ onboarding-automatic_mounting-done-restart = Volver al inicio
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-mounting_reset-feet-step-0 = 1. Párate de puntillas con ambos pies apuntando hacia el frente. Alternativamente puedes hacerlo sentándote en una silla.
onboarding-automatic_mounting-mounting_reset-feet-step-1 = 2. Presiona el botón "Calibración de pies" y espera por 3 segundos hasta que la orientación de los trackers se reinicie.
onboarding-automatic_mounting-preparation-title = Preparación
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.
@@ -1219,6 +1254,7 @@ onboarding-automatic_mounting-return-home = Hecho
## Tracker manual proportions setupa
onboarding-manual_proportions-back-scaled = Regresar a Proporciones Escaladas
onboarding-manual_proportions-title = Proporciones de cuerpo manuales
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
@@ -1318,6 +1354,30 @@ onboarding-automatic_proportions-smol_warning-cancel = Volver
## User height calibration
onboarding-user_height-title = ¿Cuál es tu altura?
onboarding-user_height-description = Necesitamos tu altura para calcular tus proporciones corporales y representar tus movimientos de manera precisa. Puedes dejar que SlimeVR lo calcule, o puedes ingresar tu altura manualmente.
onboarding-user_height-need_head_tracker = Un casco y controles con rastreo posicional son requeridos para realizar la calibración.
onboarding-user_height-calculate = Calcular mi altura automáticamente
onboarding-user_height-next_step = Continuar y guardar
onboarding-user_height-manual-proportions = Proporciones Manuales
onboarding-user_height-calibration-title = Progreso de Calibración
onboarding-user_height-calibration-RECORDING_FLOOR = Toca el suelo con la punta de tu control
onboarding-user_height-calibration-WAITING_FOR_RISE = Vuelve a pararte
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK = Vuelve a pararte y mira hacia adelante
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-ok = Asegúrate de que tu cabeza este derecha
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-low = No mires al suelo
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-high = No mires demasiado arriba
onboarding-user_height-calibration-WAITING_FOR_CONTROLLER_PITCH = Asegúrate que el control este apuntando hacia abajo
onboarding-user_height-calibration-RECORDING_HEIGHT = ¡Vuelve a pararte y no te muevas!
onboarding-user_height-calibration-DONE = ¡Éxito!
onboarding-user_height-calibration-ERROR_TIMEOUT = Calibración agotada, inténtalo de nuevo.
onboarding-user_height-calibration-ERROR_TOO_HIGH = La altura del usuario detectada es demasiado alta, inténtalo de nuevo.
onboarding-user_height-calibration-ERROR_TOO_SMALL = La altura del usuario detectada es demasiado baja. Asegúrate de pararte derecho y mirar hacia el frente al final de la calibración.
onboarding-user_height-calibration-error = Calibración Fallida
onboarding-user_height-manual-tip = Mientras ajustas tu altura, intenta poses distintas y ve como el esqueleto se ajusta a tu cuerpo.
onboarding-user_height-reset-warning =
<b>Peligro:</b> Esto reiniciará tus proporciones para ser basadas en tu altura.
¿Seguro quieres hacer esto?
## Stay Aligned setup
@@ -1356,6 +1416,7 @@ onboarding-stay_aligned-done = Hecho
## Home
home-no_trackers = No hay sensores detectados o asignados
home-settings = Ajustes de la Página de Inicio
home-settings-close = Cerrar
## Trackers Still On notification
@@ -1422,6 +1483,9 @@ firmware_tool-flash_method_step-serial-v2 =
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_SLIMEVR-r11-v2 = Enciende el tracker mientras haces corto en el segundo pad rectangular de FLASH desde el borde en la parte superior de la placa con el protector metálico del microcontrolador. El LED del tracker debería hacer un parpadeo breve.
firmware_tool-flashbtn_step-board_SLIMEVR-r12-v2 = Enciende el tracker mientras haces corto en pad circular de FLASH en la parte superior de la placa con el protector metálico del microcontrolador. El LED del tracker debería hacer un parpadeo breve.
firmware_tool-flashbtn_step-board_SLIMEVR-r14-v2 = Enciende el tracker mientras pulsas el botón FLASH en la parte superior de la placa. El LED del tracker deberia hacer un parpadeo breve.
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.
@@ -1437,7 +1501,7 @@ firmware_tool-flash_method_serial-no_devices = No se han detectado dispositivos
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-description = Sus trackers 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
@@ -1561,9 +1625,62 @@ error_collection_modal-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 = Lista de Tracking
tracking_checklist-settings = Ajustes de la Lista de Tracking
tracking_checklist-settings-close = Cerrar
tracking_checklist-status-incomplete = ¡No estás listo para usar SlimeVR!
tracking_checklist-status-partial =
{ $count ->
[one] ¡Tienes 1 advertencia!
[many] ¡Tienes { $count } advertencias!
*[other] { "" }
}
tracking_checklist-status-complete = ¡Estás listo para usar SlimeVR!
tracking_checklist-MOUNTING_CALIBRATION = Realizar una calibración de montura
tracking_checklist-FEET_MOUNTING_CALIBRATION = Realizar una calibración de montura de los pies
tracking_checklist-FULL_RESET = Realizar un reinicio completo
tracking_checklist-FULL_RESET-desc = Algunos trackers necesitan realizar un reinicio.
tracking_checklist-STEAMVR_DISCONNECTED = SteamVR no se está ejecutando
tracking_checklist-STEAMVR_DISCONNECTED-desc = SteamVR no se esta ejecutando. ¿Lo estas usando para VR?
tracking_checklist-STEAMVR_DISCONNECTED-open = Abrir SteamVR
tracking_checklist-TRACKERS_REST_CALIBRATION = Calibra tus trackers
tracking_checklist-TRACKERS_REST_CALIBRATION-desc = No realizaste una calibración para los trackers. Por favor deja reposar tus trackers (resaltados en amarillo) en una superficie estable por unos segundos.
tracking_checklist-TRACKER_ERROR = Trackers con Errores
tracking_checklist-TRACKER_ERROR-desc = Algunos de tus trackers tienen un error. Por favor reinicia el tracker resaltado en amarillo.
tracking_checklist-VRCHAT_SETTINGS = Configurar ajustes de VRChat
tracking_checklist-VRCHAT_SETTINGS-desc = ¡Tienes ajustes mal puestos en VRChat! Esto puede impactar negativamente tu tracking.
tracking_checklist-VRCHAT_SETTINGS-open = Ir a Advertencias de VRChat
tracking_checklist-UNASSIGNED_HMD = Casco VR sin asignar a Cabeza
tracking_checklist-UNASSIGNED_HMD-desc = El casco VR debería estar asignado como un tracker de cabeza.
tracking_checklist-NETWORK_PROFILE_PUBLIC = Cambia tu perfil de red
tracking_checklist-NETWORK_PROFILE_PUBLIC-desc =
{ $count ->
[one]
Tu perfil de red esta actualmente configurado como Público ({ $adapters }).
Esto no es recomendado para el correcto funcionamiento de SlimeVR.
<PublicFixLink>Ve como arreglarlo aquí</PublicFixLink>
[many]
Algunos de tus adaptadores de red están configurados como públicos:
{ $adapters }
Esto no es recomendado para el correcto funcionamiento de SlimeVR.
<PublicFixLink>Ve como arreglarlo aquí</PublicFixLink>
*[other] { "" }
}
tracking_checklist-NETWORK_PROFILE_PUBLIC-open = Abrir Panel de Control
tracking_checklist-STAY_ALIGNED_CONFIGURED = Configurar Stay Aligned
tracking_checklist-STAY_ALIGNED_CONFIGURED-desc = Graba las poses de Stay Aligned para reducir el desvío
tracking_checklist-STAY_ALIGNED_CONFIGURED-open = Abrir el ayudante de Stay Aligned
tracking_checklist-ignore = Ignorar
preview-mocap_mode_soon = Modo Mocap (Pronto™)
preview-disable_render = Desactivar renderizado
preview-disabled_render = Renderizado desactivado
toolbar-mounting_calibration = Calibración de montura
toolbar-mounting_calibration-default = Cuerpo
toolbar-mounting_calibration-feet = Pies
toolbar-mounting_calibration-fingers = Dedos
toolbar-drift_reset = Reinicio de Desviación
toolbar-assigned_trackers = { $count } trackers asignados
toolbar-unassigned_trackers = { $count } trackers sin asignar

View File

@@ -33,6 +33,10 @@ tips-failed_webgl = No se pudo iniciar WebGL.
## Units
unit-meter = Metro
unit-foot = Pie
unit-inch = Pulgada
unit-cm = cm
## Body parts
@@ -241,10 +245,12 @@ navbar-trackers_assign = Asignación de trackers
navbar-mounting = Calibración de montura
navbar-onboarding = Asistente de Configuración
navbar-settings = Configuración
navbar-connect_trackers = Conectar Trackers
## Biovision hierarchy recording
bvh-start_recording = Grabar BVH
bvh-stop_recording = Guardar grabación BVH
bvh-recording = Grabando...
bvh-save_title = Guardar grabación BVH
@@ -381,6 +387,7 @@ 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-incompatible = No se puede actualizar. Versión de placa o firmware incompatible
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
@@ -451,6 +458,7 @@ mounting_selection_menu-close = Cerrar
settings-sidebar-title = Configuración
settings-sidebar-general = General
settings-sidebar-steamvr = SteamVR
settings-sidebar-tracker_mechanics = Mecánicas del tracker
settings-sidebar-stay_aligned = Mantener Alineado
settings-sidebar-fk_settings = Configuración del tracking
@@ -899,11 +907,6 @@ 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 =
@@ -1484,3 +1487,6 @@ error_collection_modal-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

@@ -559,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 =
@@ -807,3 +802,6 @@ status_system-StatusTrackerError = Jälgijal { $trackerName } on tõrge.
## Error collection consent modal
## Tracking checklist section

View File

@@ -592,11 +592,6 @@ onboarding-setup_warning-cancel = Jatka asennusta
## Wi-Fi setup
onboarding-wifi_creds-back = Palaa esittelyyn
onboarding-wifi_creds = Syötä Wi-Fi-tunnistetiedot
# This cares about multilines
onboarding-wifi_creds-description =
Jäljittimet käyttävät näitä tunnistetietoja langattomaan yhteyden muodostamiseen.
Käytä tunnistetietoja, joihin olet tällä hetkellä yhteydessä.
onboarding-wifi_creds-skip = Ohita Wi-Fi-asetukset
onboarding-wifi_creds-submit = Lähetä!
onboarding-wifi_creds-ssid =
@@ -910,3 +905,6 @@ status_system-StatusTrackerError = { $trackerName } jäljittimessä on virhe
## Error collection consent modal
## Tracking checklist section

View File

@@ -7,7 +7,7 @@
## Websocket (server) status
websocket-connecting = Connexion au serveur
websocket-connecting = Chargement...
websocket-connection_lost = Connexion avec le serveur perdue. Reconnexion...
websocket-connection_lost-desc = Il semble que le serveur SlimeVR ait planté. Vérifiez les logs et redémarrez le programme.
websocket-timedout = Impossible de se connecter au serveur
@@ -33,7 +33,7 @@ tips-failed_webgl = Échec de l'initialisation de WebGL.
## Units
unit-meter = Metre
unit-meter = Mètre
unit-foot = Pied
unit-inch = Pouce
unit-cm = cm
@@ -115,6 +115,11 @@ 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 Glove
board_type-GESTURES = Gestes
board_type-ESP32S3_SUPERMINI = ESP32-S3 Supermini
board_type-GENERIC_NRF = nRF Générique
board_type-SLIMEVR_BUTTERFLY_DEV = SlimeVR Dev Butterfly
board_type-SLIMEVR_BUTTERFLY = SlimeVR Butterfly
## Proportions
@@ -225,7 +230,7 @@ skeleton_bone-LOWER_ARM-desc =
skeleton_bone-HAND_Y = Distance Y des mains
skeleton_bone-HAND_Y-desc =
Ceci est la distance verticale entre vos poignets et le milieu de vos main.
Pour lajuster pour la capture de mouvement, ajustez correctement la longueur des bras et modifiez-la jusquà ce que votre
Pour lajuster pour la capture de mouvement, ajustez correctement la longueur des bras et modifiez-la jusquà ce que vos
capteurs de main soient alignés verticalement avec le milieu de vos mains.
Pour lajuster pour le suivi des coudes à partir de vos manettes, réglez la longueur des bras à 0 et
modifiez-la jusquà ce que vos capteurs de coude soient alignés verticalement avec vos poignets.
@@ -256,9 +261,10 @@ reset-mounting = Réinitialiser l'alignement
reset-mounting-feet = Réinitialiser l'alignement des pieds
reset-mounting-fingers = Réinitialiser l'alignement des doigts
reset-yaw = Réinitialisation horizontale
reset-error-no_feet_tracker = Aucun traqueur de pieds nest assigné
reset-error-no_fingers_tracker = Aucun traqueur de doigts n'est assigné
reset-error-no_feet_tracker = Aucun capteur de pieds nest assigné
reset-error-no_fingers_tracker = Aucun capteur de doigts n'est assigné
reset-error-mounting-need_full_reset = Nécessite une réinitialisation complète avant de le monter
reset-error-yaw-need_full_reset = Nécessite une réinitialisation complète avant une réinitialisation horizontale
## Serial detection stuff
@@ -278,6 +284,7 @@ navbar-trackers_assign = Attribution des capteurs
navbar-mounting = Alignement des capteurs
navbar-onboarding = Assistant de configuration
navbar-settings = Réglages
navbar-connect_trackers = Connecter les capteurs
## Biovision hierarchy recording
@@ -348,6 +355,7 @@ tracker-table-column-name = Nom
tracker-table-column-type = Type
tracker-table-column-battery = Batterie
tracker-table-column-ping = Ping
tracker-table-column-packet_loss = Pertes de paquets
tracker-table-column-tps = TPS
tracker-table-column-temperature = Temp. °C
tracker-table-column-linear-acceleration = Accél. X/Y/Z
@@ -389,6 +397,9 @@ tracker-infos-magnetometer-status-v1 =
[ENABLED] Activé
*[NOT_SUPPORTED] Non pris en charge
}
tracker-infos-packet_loss = Pertes de paquets
tracker-infos-packets_lost = Paquets perdus
tracker-infos-packets_received = Paquets reçus
## Tracker settings
@@ -426,6 +437,9 @@ tracker-settings-update-up_to_date = À jour
tracker-settings-update-blocked = Mise à jour non disponible. Aucune autre version disponible
tracker-settings-update = Mettre à jour maintenant
tracker-settings-update-title = Version du micrologiciel
tracker-settings-current-version = Actuel
tracker-settings-latest-version = Dernière version
tracker-settings-build-date = Date de build
## Tracker part card info
@@ -504,6 +518,7 @@ settings-sidebar-utils = Utilitaires
settings-sidebar-serial = Console série
settings-sidebar-appearance = Apparence
settings-sidebar-home = Ecran d'accueil
settings-sidebar-checklist = Checklist de suivi
settings-sidebar-notifications = Notifications
settings-sidebar-behavior = Comportement
settings-sidebar-firmware-tool = Outil de micrologiciel DIY
@@ -589,6 +604,9 @@ settings-general-tracker_mechanics-use_mag_on_all_trackers-description =
Utilise le magnétomètre sur tous les capteurs dotés d'un micrologiciel compatible, réduisant ainsi la dérive dans des environnements magnétiques stables.
Peut être désactivé par capteur dans les paramètres du capteur. <b>Ne fermez aucun des capteurs en changeant cette option !</b>
settings-general-tracker_mechanics-use_mag_on_all_trackers-label = Utiliser le magnétomètre sur les capteurs
settings-general-tracker_mechanics-trackers_over_usb = Capteurs via USB
settings-general-tracker_mechanics-trackers_over_usb-description = Permet de recevoir des données de suivi HID via USB. Assurez-vous que les capteurs connectés ont <b>la connexion via HID</b> activée !
settings-general-tracker_mechanics-trackers_over_usb-enabled-label = Permettre aux capteurs HID de se connecter directement via USB
settings-stay_aligned = Garder Aligné
settings-stay_aligned-description = Garder Aligné réduit la dérive en ajustant progressivement vos capteurs pour quils correspondent à vos postures détendues.
settings-stay_aligned-setup-label = Configurer Garder Aligné
@@ -851,7 +869,7 @@ settings-osc-vrchat-network-port_out =
settings-osc-vrchat-network-address = Adresse réseau
settings-osc-vrchat-network-address-description-v1 = Choisissez l'adresse à laquelle envoyer des données. Peut être laissé intact pour VRChat.
settings-osc-vrchat-network-address-placeholder = Adresse IP VRChat
settings-osc-vrchat-network-trackers = capteurs
settings-osc-vrchat-network-trackers = Capteurs
settings-osc-vrchat-network-trackers-description = Sélectionner quels capteurs envoyer via OSC.
settings-osc-vrchat-network-trackers-chest = Poitrine
settings-osc-vrchat-network-trackers-hip = Hanche
@@ -931,11 +949,15 @@ settings-utils-advanced-open_logs-label = Ouvrir le dossier
## Home Screen
settings-home-list-layout = Disposition de la liste des capteurs
settings-home-list-layout-desc = Sélectionnez l'une des dispositions possibles de l'écran d'accueil
settings-home-list-layout-grid = Grille
settings-home-list-layout-table = Tableau
## Tracking Checlist
settings-tracking_checklist-active_steps = Etapes actives
settings-tracking_checklist-active_steps-desc = Liste de toutes les étapes de la checklist de suivi. Vous pouvez choisir de désactiver certaines étapes.
## Setup/onboarding menu
@@ -952,11 +974,13 @@ onboarding-setup_warning-cancel = Continuer la configuration
## Wi-Fi setup
onboarding-wifi_creds-back = Retour à l'introduction
onboarding-wifi_creds = Saisir les identifiants Wi-Fi
onboarding-wifi_creds-v2 = Capteurs utilisant le Wi-Fi
# This cares about multilines
onboarding-wifi_creds-description =
Les capteurs utiliseront ces informations d'identification pour se connecter au réseau.
Veuillez utiliser les identifiants avec lesquels vous êtes actuellement connecté.
onboarding-wifi_creds-description-v2 =
La plupart des capteurs (comme les capteurs officiels SlimeVR) utilisent le Wi-Fi pour se connecter au serveur.
Veuillez utiliser les identifiants du réseau Wi-Fi auquel votre appareil est actuellement connecté.
Assurez-vous dutiliser une connexion Wi-Fi 2,4 GHz pour vos capteurs !
onboarding-wifi_creds-skip = Passer configuration Wi-Fi
onboarding-wifi_creds-submit = Valider
onboarding-wifi_creds-ssid =
@@ -966,6 +990,10 @@ onboarding-wifi_creds-ssid-required = Le nom du Wi-Fi est requis
onboarding-wifi_creds-password =
.label = Mot de passe du Wi-Fi
.placeholder = Mot de passe
onboarding-wifi_creds-dongle-title = Capteurs utilisant un dongle
onboarding-wifi_creds-dongle-description = Si vos capteurs ont été livrés avec un dongle, branchez-le à votre appareil et vous devriez être prêt !
onboarding-wifi_creds-dongle-wip = Cette section est en cours de développement. Une page dédiée à la gestion des capteurs connectés via un dongle sera bientôt créée.
onboarding-wifi_creds-dongle-continue = Continuer avec un dongle
## Mounting setup
@@ -1071,6 +1099,7 @@ onboarding-assignment_tutorial-done = J'ai mis les autocollants et les sangles !
onboarding-assign_trackers-back = Revenir aux identifiants Wi-Fi
onboarding-assign_trackers-title = Attribuer des capteurs
onboarding-assign_trackers-description = Choisissons où mettre chaque capteur.
onboarding-assign_trackers-unassign_all = Désattribuer tout les capteurs
# Look at translation of onboarding-connect_tracker-connected_trackers on how to use plurals
# $assigned (Number) - Trackers that have been assigned a body part
# $trackers (Number) - Trackers connected to the server
@@ -1215,6 +1244,8 @@ onboarding-automatic_mounting-done-restart = Retourner au début
onboarding-automatic_mounting-mounting_reset-title = Réinitialisation de l'alignement
onboarding-automatic_mounting-mounting_reset-step-0 = 1. Accroupissez-vous dans une pose de "ski" avec les jambes pliées, le haut du corps incliné vers l'avant et les bras pliés.
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Appuyez sur le bouton "Réinitialiser l'alignement" et attendez 3 secondes avant que l'alignement des capteurs se calibre.
onboarding-automatic_mounting-mounting_reset-feet-step-0 = 1. Mettez-vous sur la pointe des pieds, les deux pieds pointés vers lavant. Vous pouvez aussi le faire assis sur une chaise.
onboarding-automatic_mounting-mounting_reset-feet-step-1 = 2. Appuyez sur le bouton « Calibration des pieds » et attendez 3 secondes avant que lorientation de l'alignement des capteurs ne se réinitialise.
onboarding-automatic_mounting-preparation-title = Préparation
onboarding-automatic_mounting-preparation-v2-step-0 = 1. Appuyez sur le bouton « Réinitialisation complète ».
onboarding-automatic_mounting-preparation-v2-step-1 = 2. Tenez-vous droit debout, les bras le long du corps. Assurez-vous de regarder vers lavant.
@@ -1226,6 +1257,7 @@ onboarding-automatic_mounting-return-home = Terminé
## Tracker manual proportions setupa
onboarding-manual_proportions-back-scaled = Retour aux proportions mises à l'échelle
onboarding-manual_proportions-title = Proportions manuelles du corps
onboarding-manual_proportions-fine_tuning_button = Automatiquement ajuster les proportions
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Veuillez connecter un casque VR pour utiliser l'ajustement automatique
@@ -1326,9 +1358,29 @@ onboarding-automatic_proportions-smol_warning-cancel = Retour
## User height calibration
onboarding-user_height-title = Quelle est votre taille ?
onboarding-user_height-description = Nous avons besoin de votre taille pour calculer les proportions de votre corps ainsi que pour représenter précisément vos mouvements. Vous pouvez laisser SlimeVR la calculer ou entrer votre taille manuellement.
onboarding-user_height-need_head_tracker = Un casque VR (ou capteur de tête) et des manettes à position absolue sont nécessaires pour calculer votre taille.
onboarding-user_height-calculate = Calculer ma taille automatiquement
onboarding-user_height-next_step = Continuer et enregistrer
onboarding-user_height-manual-proportions = Proportions manuelles
onboarding-user_height-calibration-title = Progression de la calibration
onboarding-user_height-calibration-RECORDING_FLOOR = Touchez le sol avec l'extrémité de votre contrôleur
onboarding-user_height-calibration-WAITING_FOR_RISE = Relevez-vous
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK = Relevez-vous et regardez droit devant vous
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-ok = Assurez-vous que votre tête est bien droite
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-low = Ne regardez pas vers le sol
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-high = Ne regardez pas trop haut
onboarding-user_height-calibration-WAITING_FOR_CONTROLLER_PITCH = Assurez-vous que votre manette pointe vers le bas
onboarding-user_height-calibration-RECORDING_HEIGHT = Relevez-vous et restez immobile !
onboarding-user_height-calibration-DONE = Succès !
onboarding-user_height-calibration-ERROR_TIMEOUT = Délais de calibration expiré, veuillez réessayer.
onboarding-user_height-calibration-ERROR_TOO_HIGH = La taille détectée est trop grande, veuillez réessayez.
onboarding-user_height-calibration-ERROR_TOO_SMALL = La taille détectée est trop petite. Veuillez rester droit et regardez devant vous à la fin de la calibration.
onboarding-user_height-calibration-error = Calibration échouée
onboarding-user_height-manual-tip = En ajustant votre taille, essayez différentes poses et regardez comment le squelette suit vos mouvements.
onboarding-user_height-reset-warning =
<b>Attention :</b> Cette action réinitialisera vos proportions pour être basées sur votre taille.
Êtes-vous sûr de vouloir continuer ?
## Stay Aligned setup
@@ -1363,10 +1415,13 @@ onboarding-stay_aligned-previous_step = Précédent
onboarding-stay_aligned-next_step = Prochain
onboarding-stay_aligned-restart = Recommencer
onboarding-stay_aligned-done = Fait
onboarding-stay_aligned-manual_mounting-done = Terminé
## Home
home-no_trackers = Aucun capteur détecté ou attribué
home-settings = Paramètres de la page d'accueil
home-settings-close = Fermer
## Trackers Still On notification
@@ -1411,6 +1466,9 @@ firmware_tool-select_source-firmware = Source du micrologiciel
firmware_tool-select_source-version = Version du micrologiciel
firmware_tool-select_source-official = Officiel
firmware_tool-select_source-dev = Dev
firmware_tool-select_source-not_selected = Aucune source sélectionnée
firmware_tool-select_source-no_boards = Aucune carte disponible pour cette source
firmware_tool-select_source-no_versions = Aucune version disponible pour cette source
firmware_tool-board_defaults = Configurez votre carte
firmware_tool-board_defaults-description = Réglez les broches ou réglages pour votre matériel
firmware_tool-board_defaults-add = Ajouter
@@ -1432,6 +1490,9 @@ firmware_tool-flash_method_step-serial-v2 =
firmware_tool-flashbtn_step = Appuyez sur le bouton boot
firmware_tool-flashbtn_step-description = Avant de passer à l'étape suivante, il y a quelques choses que vous devez faire
firmware_tool-flashbtn_step-board_SLIMEVR = Éteignez le capteur, retirez le boîtier (s'il y en a un), connectez un câble USB à votre ordinateur, puis effectuez l'une des étapes suivantes en fonction de la révision de votre carte SlimeVR :
firmware_tool-flashbtn_step-board_SLIMEVR-r11-v2 = Allumez le capteur tout en court-circuitant le second pad FLASH rectangulaire à partir du bord en haut de la carte jusquà la protection métallique du microcontrôleur. La LED du capteur devrait faire un clignotement rapide.
firmware_tool-flashbtn_step-board_SLIMEVR-r12-v2 = Allumez le capteur tout en court-circuitant le pad FLASH circulaire sur le dessus de la carte à la protection métallique du microcontrôleur. La LED du capteur devrait faire un clignotement rapide.
firmware_tool-flashbtn_step-board_SLIMEVR-r14-v2 = Allumez le capteur tout en appuyant sur le bouton FLASH sur le dessus de la carte. La LED du capteur devrait faire un clignotement brièvement.
firmware_tool-flashbtn_step-board_OTHER =
Avant de flash le capteur, vous devrez probablement le mettre en mode bootloader.
La plupart du temps, il s'agit d'appuyer sur le bouton boot de la carte avant que le processus de flash ne commence.
@@ -1571,3 +1632,57 @@ error_collection_modal-description_v2 =
Vous pouvez modifier ce paramètre ultérieurement dans la section "Comportement" des paramètres.
error_collection_modal-confirm = Je suis d'accord
error_collection_modal-cancel = Je ne veux pas
## Tracking checklist section
tracking_checklist = Checklist de suivi
tracking_checklist-settings = Paramètres de lachecklist de suivi
tracking_checklist-settings-close = Fermer
tracking_checklist-status-incomplete = Vous nêtes pas prêt à utiliser SlimeVR !
tracking_checklist-status-partial =
{ $count ->
[one] Vous avez 1 avertissement !
*[other] Vous avez { $count } avertissements !
}
tracking_checklist-status-complete = Vous êtes prêt à utiliser SlimeVR !
tracking_checklist-MOUNTING_CALIBRATION = Effectuer une calibration de l'alignement
tracking_checklist-FEET_MOUNTING_CALIBRATION = Effectuer une calibration de l'alignement des pieds
tracking_checklist-FULL_RESET = Faire une réinitialisation complète
tracking_checklist-FULL_RESET-desc = Certains capteurs nécessitent une réinitialisation.
tracking_checklist-STEAMVR_DISCONNECTED = SteamVR n'est pas lancé
tracking_checklist-STEAMVR_DISCONNECTED-desc = SteamVR n'est pas lancé. Lutilisez-vous pour la VR ?
tracking_checklist-STEAMVR_DISCONNECTED-open = Lancer SteamVR
tracking_checklist-TRACKERS_REST_CALIBRATION = Calibrer vos capteurs
tracking_checklist-TRACKERS_REST_CALIBRATION-desc = Vous navez pas fait de calibration de capteur. Veuillez laisser vos capteurs (surlignés en jaune) reposer sur une surface stable pendant quelques seconds.
tracking_checklist-TRACKER_ERROR = Capteurs avec erreur
tracking_checklist-TRACKER_ERROR-desc = Certains de vos capteurs ont une erreur. Veuillez redémarrer les capteurs surlignés en jaune.
tracking_checklist-VRCHAT_SETTINGS = Configurez les paramètres de VRChat
tracking_checklist-VRCHAT_SETTINGS-desc = Vous avez mal configuré les paramètres de VRChat ! Cela peut dégrader votre suivi.
tracking_checklist-VRCHAT_SETTINGS-open = Aller sur les avertissements de VRChat
tracking_checklist-UNASSIGNED_HMD = Casque VR non attribué à la tête
tracking_checklist-UNASSIGNED_HMD-desc = Le casque VR devrait être attribué en tant que capteur de la tête.
tracking_checklist-NETWORK_PROFILE_PUBLIC = Modifier votre profil de réseau
tracking_checklist-NETWORK_PROFILE_PUBLIC-desc =
{ $count ->
[one] Votre profil de réseau est actuellement défini comme étant public. Ce nest pas recommandé pour le fonctionnement correct de SlimeVR. <PublicFixLink>Voyez comment y remédier ici.</PublicFixLink>
*[other]
Certains de vos adaptateurs réseau sont réglés sur public :
{ $adapters }
Ce nest pas recommandé pour que SlimeVR fonctionne correctement.
<PublicFixLink>Voyez comment y remédier ici.</PublicFixLink>
}
tracking_checklist-NETWORK_PROFILE_PUBLIC-open = Ouvrir le panneau de configuration
tracking_checklist-STAY_ALIGNED_CONFIGURED = Configurer Garder Aligné
tracking_checklist-STAY_ALIGNED_CONFIGURED-desc = Enregistrez les poses Garder Aligné pour réduire la dérive
tracking_checklist-STAY_ALIGNED_CONFIGURED-open = Ouvrir l'assistant de Garder Aligné
tracking_checklist-ignore = Ignorer
preview-mocap_mode_soon = Mode Mocap (Bientôt™)
preview-disable_render = Désactiver le rendu
preview-disabled_render = Rendu désactivé
toolbar-mounting_calibration = Calibration de l'alignement
toolbar-mounting_calibration-default = Corps
toolbar-mounting_calibration-feet = Pieds
toolbar-mounting_calibration-fingers = Doigts
toolbar-drift_reset = Réinitialisation de la dérive
toolbar-assigned_trackers = { $count } capteurs assignés
toolbar-unassigned_trackers = { $count } capteurs non assignés

View File

@@ -384,3 +384,6 @@ home-no_trackers = לא זוהו או הוקצו חיישנים
## Error collection consent modal
## Tracking checklist section

View File

@@ -910,11 +910,6 @@ onboarding-setup_warning-cancel = Continua la configurazione
## Wi-Fi setup
onboarding-wifi_creds-back = Torna all'introduzione
onboarding-wifi_creds = Inserisci credenziali Wi-Fi
# This cares about multilines
onboarding-wifi_creds-description =
I tracker utilizzeranno queste credenziali per connettersi in modalità wireless
Si prega di utilizzare le stesse credenziali con cui si è attualmente connessi
onboarding-wifi_creds-skip = Salta impostazioni Wi-Fi
onboarding-wifi_creds-submit = Conferma!
onboarding-wifi_creds-ssid =
@@ -1496,3 +1491,6 @@ error_collection_modal-description_v2 =
Puoi modificare questa impostazione in un secondo momento nella sezione Comportamento delle impostazioni.
error_collection_modal-confirm = Acconsento
error_collection_modal-cancel = Non acconsento
## Tracking checklist section

View File

@@ -577,11 +577,6 @@ onboarding-setup_warning-cancel = セットアップを続行する
## Wi-Fi setup
onboarding-wifi_creds-back = 戻る
onboarding-wifi_creds = Wi-Fi
# This cares about multilines
onboarding-wifi_creds-description =
トラッカーはこれらの認証情報を使ってWi-Fiに接続します。
現在接続している認証情報を使用してください。
onboarding-wifi_creds-skip = Wi-Fi設定をスキップする
onboarding-wifi_creds-submit = 実行!
onboarding-wifi_creds-ssid =
@@ -795,3 +790,6 @@ unknown_device-modal-forget = 無視する
## Error collection consent modal
## Tracking checklist section

View File

@@ -743,11 +743,6 @@ onboarding-setup_warning-cancel = 설정 계속하기
## Wi-Fi setup
onboarding-wifi_creds-back = 처음으로 돌아가기
onboarding-wifi_creds = Wi-Fi 자격 증명을 입력하세요
# This cares about multilines
onboarding-wifi_creds-description =
트래커는 이 자격 증명을 사용하여 무선으로 연결해요
지금 연결되어 있는 자격 증명을 사용해주세요
onboarding-wifi_creds-skip = Wi-Fi 설정 건너뛰기
onboarding-wifi_creds-submit = 저장!
onboarding-wifi_creds-ssid =
@@ -1216,3 +1211,6 @@ unknown_device-modal-forget = 무시할게요
error_collection_modal-title = 오류를 수집해도 될까요?
error_collection_modal-confirm = 동의해요
## Tracking checklist section

View File

@@ -694,3 +694,6 @@ settings-general-gesture_control-trackers =
error_collection_modal-confirm = Sutinku
error_collection_modal-cancel = Nesutinku
## Tracking checklist section

View File

@@ -497,11 +497,6 @@ onboarding-wip = Arbeid pågår
## Wi-Fi setup
onboarding-wifi_creds-back = Gå tilbake til introduksjonen
onboarding-wifi_creds = Tast inn Wi-Fi legitimasjon
# This cares about multilines
onboarding-wifi_creds-description =
Trackerne bruker denne legitimasjonen for å koble til trådløst.
Vennligst bruk legitimasjonen til nettet du er koblet til nå.
onboarding-wifi_creds-skip = Hopp over Wi-Fi innstillinger
onboarding-wifi_creds-submit = Send inn!
onboarding-wifi_creds-ssid =
@@ -683,3 +678,6 @@ tray_or_exit_modal-cancel = Avbryt
## Error collection consent modal
## Tracking checklist section

View File

@@ -33,6 +33,10 @@ tips-failed_webgl = WebGL initialiseren is gefaald.
## Units
unit-meter = Meter
unit-foot = Voet
unit-inch = Inch
unit-cm = cm
## Body parts
@@ -98,6 +102,8 @@ 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-ontwikkelingsbord
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
@@ -109,6 +115,11 @@ 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 Handschoen
board_type-GESTURES = Gebaren
board_type-ESP32S3_SUPERMINI = ESP32-S3 Supermini
board_type-GENERIC_NRF = Generic nRF
board_type-SLIMEVR_BUTTERFLY_DEV = SlimeVR Dev Butterfly
board_type-SLIMEVR_BUTTERFLY = SlimeVR Butterfly
## Proportions
@@ -247,6 +258,10 @@ reset-mounting = Reset montage
reset-mounting-feet = Reset voetmontage
reset-mounting-fingers = Reset vingermontage
reset-yaw = Yaw Reset
reset-error-no_feet_tracker = Geen voet-tracker toegewezen
reset-error-no_fingers_tracker = Geen vingertracker toegewezen
reset-error-mounting-need_full_reset = Je hebt een volledige reset nodig voordat je een montagekalibratie kunt uitvoeren.
reset-error-yaw-need_full_reset = Je hebt een volledige reset nodig voordat je een yaw reset kunt uitvoeren.
## Serial detection stuff
@@ -266,10 +281,12 @@ navbar-trackers_assign = Tracker-toewijzing
navbar-mounting = Montage-kalibratie
navbar-onboarding = Installatiewizard
navbar-settings = Instellingen
navbar-connect_trackers = Verbind Trackers
## Biovision hierarchy recording
bvh-start_recording = BVH opnemen
bvh-stop_recording = Sla BVH-opname op
bvh-recording = Opname bezig...
bvh-save_title = Sla BVH-opname op
@@ -335,6 +352,7 @@ tracker-table-column-name = Naam
tracker-table-column-type = Type
tracker-table-column-battery = Batterij
tracker-table-column-ping = Ping
tracker-table-column-packet_loss = Pakketverlies
tracker-table-column-tps = TPS
tracker-table-column-temperature = Temp. °C
tracker-table-column-linear-acceleration = Accel. X/Y/Z
@@ -376,6 +394,9 @@ tracker-infos-magnetometer-status-v1 =
[ENABLED] Ingeschakeld
*[NOT_SUPPORTED] Niet ondersteund
}
tracker-infos-packet_loss = Pakketverlies
tracker-infos-packets_lost = Verloren pakketten
tracker-infos-packets_received = Ontvangen pakketten
## Tracker settings
@@ -393,8 +414,8 @@ tracker-settings-drift_compensation_section-edit = Laat drift compensatie toe
tracker-settings-use_mag = Sta de magnetometer toe op deze tracker.
# Multiline!
tracker-settings-use_mag-description =
Wilt u dat deze tracker de magnetometer gebruikt om drift te verminderen wanneer de magnetometer is toegestaan? <b>Zet de tracker niet uit terwijl u dit aan of uit zet.</b>
U moet eerst de magnetometer toestemming geven,<magSetting>click hier om naar de instellingen te gaan</magSetting>.
Wilt je dat deze tracker de magnetometer gebruikt om drift te verminderen wanneer de magnetometer is toegestaan? <b>Zet de tracker niet uit terwijl je dit aan of uit zet.</b>
Je moet eerst de magnetometer toestemming geven,<magSetting>click hier om naar de instellingen te gaan</magSetting>.
tracker-settings-use_mag-label = Laat magnetometer toe
# 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.
@@ -405,11 +426,16 @@ tracker-settings-name_section-label = Trackernaam
tracker-settings-forget = Vergeet tracker
tracker-settings-forget-description = Verwijdert de tracker van de SlimeVR Server en voorkomt dat deze verbinding kan maken totdat de server opnieuw wordt opgestart. De configuratie van de tracker blijft behouden.
tracker-settings-forget-label = Vergeet tracker
tracker-settings-update-unavailable-v2 = Geen versies gevonden.
tracker-settings-update-incompatible = Kan niet worden bijgewerkt. Incompatibel bord
tracker-settings-update-low-battery = Kan niet worden bijgewerkt. Batterij lager dan 50%
tracker-settings-update-up_to_date = Up to date.
tracker-settings-update-blocked = Update is niet beschikbaar. Er zijn geen andere versies beschikbaar.
tracker-settings-update = Werk nu bij.
tracker-settings-update-title = Firmware versie
tracker-settings-current-version = Actueel
tracker-settings-latest-version = Nieuwste
tracker-settings-build-date = Creatiedatum
## Tracker part card info
@@ -475,6 +501,7 @@ mounting_selection_menu-close = Sluiten
settings-sidebar-title = Instellingen
settings-sidebar-general = Algemeen
settings-sidebar-steamvr = SteamVR
settings-sidebar-tracker_mechanics = Trackersinstellingen
settings-sidebar-stay_aligned = Blijf in lijn
settings-sidebar-fk_settings = FK-instellingen
@@ -482,9 +509,12 @@ settings-sidebar-gesture_control = Tikbediening
settings-sidebar-interface = Interface
settings-sidebar-osc_router = OSC-router
settings-sidebar-osc_trackers = VRChat OSC Trackers
settings-sidebar-osc_vmc = VMC
settings-sidebar-utils = Hulpmiddelen
settings-sidebar-serial = Serieel console
settings-sidebar-appearance = Uiterlijk
settings-sidebar-home = Startscherm
settings-sidebar-checklist = Tracking checklist
settings-sidebar-notifications = Notificaties
settings-sidebar-behavior = Gedrag
settings-sidebar-firmware-tool = DIY Firmware Tool
@@ -566,8 +596,11 @@ settings-general-tracker_mechanics-use_mag_on_all_trackers-description =
Gebruikt magnetometer op alle trackers die er een compatibele firmware voor hebben, waardoor drift in stabiele magnetische omgevingen wordt verminderd.
Je kan dit per individuele tracker uit zetten in de instellingen van de tracker. <b>Sluit geen van de trackers af terwijl u dit in- en uitschakelt!</b>
settings-general-tracker_mechanics-use_mag_on_all_trackers-label = Gebruik magnetometer op de trackers
settings-general-tracker_mechanics-trackers_over_usb = Trackers via USB
settings-general-tracker_mechanics-trackers_over_usb-description = Maakt het mogelijk om HID-trackergegevens via USB te ontvangen. Zorg ervoor dat verbonden trackers <b>"verbinding over HID"</b> hebben ingeschakeld!
settings-general-tracker_mechanics-trackers_over_usb-enabled-label = Laat HID-trackers direct via USB verbinden
settings-stay_aligned = Blijf in lijn
settings-stay_aligned-description = ijf in lijn vermindert drift door je trackers geleidelijk aan te passen zodat ze overeenkomen met je ontspannen houdingen.
settings-stay_aligned-description = Blijf in lijn vermindert drift door je trackers geleidelijk aan te passen zodat ze overeenkomen met je ontspannen houdingen.
settings-stay_aligned-setup-label = Blijf in lijn instellen
settings-stay_aligned-setup-description = Je moet "Blijf in lijn instellen" voltooien om Blijf in lijn te activeren.
settings-stay_aligned-warnings-drift_compensation = ⚠ Schakel Drift Compensation uit! Drift Compensation conflicteert met Blijf in lijn.
@@ -608,11 +641,16 @@ settings-general-fk_settings-leg_tweak-floor_clip-description =
settings-general-fk_settings-leg_tweak-toe_snap-description = Toe-snap probeert de rotatie van uw voeten te raden als voet-trackers niet worden gebruikt.
settings-general-fk_settings-leg_tweak-foot_plant-description = Foot-plant roteert je voeten zodat ze evenwijdig aan de grond zijn wanneer ze in contact zijn.
settings-general-fk_settings-leg_fk = Been tracking
settings-general-fk_settings-leg_fk-reset_mounting_feet-description-v1 = Forceer de voet montage reset tijdens normale montage resets.
settings-general-fk_settings-leg_fk-reset_mounting_feet-v1 = Forceer voet montage reset
settings-general-fk_settings-enforce_joint_constraints = Bewegingslimieten van het skelet
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = Beperkingen toepassen
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints-description = Voorkomt dat gewrichten over hun limiet draaien
settings-general-fk_settings-enforce_joint_constraints-correct_constraints = Corrigeren met beperkingen
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = Corrigeer gewrichtsrotaties wanneer ze hun limiet overschrijden
settings-general-fk_settings-ik = Positie gegevens
settings-general-fk_settings-ik-use_position = Positiegegevens gebruiken
settings-general-fk_settings-ik-use_position-description = Maakt gebruik van positiegegevens mogelijk van de trackers die deze leveren. Zorg er voor dat je een volledige reset doet en opnieuw kalibreert in het spel wanneer je dit inschakelt.
settings-general-fk_settings-arm_fk = Arm tracking
settings-general-fk_settings-arm_fk-description = Verander de manier waarop de armen worden getrackt.
settings-general-fk_settings-arm_fk-force_arms = Dwing armen vanuit HMD
@@ -733,9 +771,9 @@ settings-general-interface-discord_presence-message =
}
settings-interface-behavior-error_tracking = Foutverzameling via Sentry.io
settings-interface-behavior-error_tracking-description_v2 =
<h1>Geeft u toestemming voor het verzamelen van geanonimiseerde foutgegevens?</h1>
<h1>Geef je toestemming voor het verzamelen van geanonimiseerde foutgegevens?</h1>
<b>We verzamelen geen persoonlijke informatie</b> zoals uw IP-adres of draadloze inloggegevens. SlimeVR hecht veel waarde aan uw privacy!
<b>We verzamelen geen persoonlijke informatie</b> zoals jouw IP-adres of draadloze inloggegevens. SlimeVR hecht veel waarde aan je privacy!
Om de beste gebruikerservaring te bieden, verzamelen we geanonimiseerde foutrapporten, prestatiestatistieken en informatie over het besturingssysteem. Dit helpt ons bij het detecteren van fouten en problemen met SlimeVR. Deze statistieken worden verzameld via Sentry.io.
settings-interface-behavior-error_tracking-label = Stuur fouten naar de ontwikkelaars
@@ -765,6 +803,11 @@ settings-serial-auto_dropdown_item = Automatisch
settings-serial-get_wifi_scan = WiFi-scan uitvoeren
settings-serial-file_type = Gewone tekst
settings-serial-save_logs = Opslaan in bestand
settings-serial-send_command = Verzenden
settings-serial-send_command-placeholder = Commando...
settings-serial-send_command-warning = <b>Waarschuwing:</b> Het uitvoeren van seriële opdrachten kan leiden tot gegevensverlies of de trackers stuk maken.
settings-serial-send_command-warning-ok = Ik weet wat ik doe
settings-serial-send_command-warning-cancel = Annuleren
## OSC router settings
@@ -859,6 +902,8 @@ settings-osc-vmc-mirror_tracking-label = Gespiegelde tracking
## Common OSC settings
settings-osc-common-network-ports_match_error = De in- en uit poorten van de OSC-Router mogen niet hetzelfde zijn!
settings-osc-common-network-port_banned_error = Het poort { $port } kan niet worden gebruikt!
## Advanced settings
@@ -875,14 +920,14 @@ settings-utils-advanced-reset-all-label = Alles resetten
settings-utils-advanced-reset_warning =
{ $type ->
[gui]
<b>Waarschuwing</b>Hiermee worden al uw GUI instellingen teruggezet naar de standaardinstellingen.
Weet u zeker dat u dit wilt doen?
<b>Waarschuwing</b>Hiermee worden al je GUI instellingen teruggezet naar de standaardinstellingen.
Weet je zeker dat je dit wilt doen?
[server]
<b>Waarschuwing</b>Hiermee worden al uw tracking instellingen teruggezet naar de standaardinstellingen.
Weet u zeker dat u dit wilt doen?
<b>Waarschuwing</b>Hiermee worden al je tracking instellingen teruggezet naar de standaardinstellingen.
Weet je zeker dat je dit wilt doen?
*[all]
<b>Waarschuwing:</b> Hiermee worden al uw instellingen teruggezet naar de standaardinstellingen.
Weet u zeker dat u dit wilt doen?
<b>Waarschuwing:</b> Hiermee worden al je instellingen teruggezet naar de standaardinstellingen.
Weet je zeker dat je dit wilt doen?
}
settings-utils-advanced-reset_warning-reset = Instellingen resetten
settings-utils-advanced-reset_warning-cancel = Annuleren
@@ -895,9 +940,15 @@ settings-utils-advanced-open_logs-label = Map openen
## Home Screen
settings-home-list-layout = Trackers lijst indeling
settings-home-list-layout-desc = Selecteer een van de mogelijke indelingen voor het startscherm
settings-home-list-layout-grid = Rooster
settings-home-list-layout-table = Tabel
## Tracking Checlist
settings-tracking_checklist-active_steps = Actieve stappen
settings-tracking_checklist-active_steps-desc = Laat alle stappen die in de tracking checklist komen zien. U kan of dit uitzetten of negeerbare stappen laten zien.
## Setup/onboarding menu
@@ -914,11 +965,13 @@ onboarding-setup_warning-cancel = Doorgaan met setupgids
## Wi-Fi setup
onboarding-wifi_creds-back = Ga terug naar de introductie
onboarding-wifi_creds = Voer de WiFi-inloggegevens in
onboarding-wifi_creds-v2 = Trackers die Wi-Fi gebruiken
# This cares about multilines
onboarding-wifi_creds-description =
Deze gegevens worden gebruikt om de trackers draadloos te verbinden met de server.
Gelieve de gegevens te gebruiken van het netwerk waarmee je momenteel bent verbonden.
onboarding-wifi_creds-description-v2 =
De meeste trackers (zoals de officiële SlimeVR-trackers) gebruiken Wi-Fi om verbinding te maken met de server.
Gebruik de inloggegevens van het Wi-Fi-netwerk waarmee je apparaat momenteel is verbonden.
Zorg ervoor dat je een 2,4GHz-Wi-Fi-verbinding gebruikt voor jouw trackers!
onboarding-wifi_creds-skip = WiFi-instellingen overslaan
onboarding-wifi_creds-submit = Verzenden!
onboarding-wifi_creds-ssid =
@@ -928,6 +981,10 @@ onboarding-wifi_creds-ssid-required = Wi-Fi-naam is vereist
onboarding-wifi_creds-password =
.label = Paswoord
.placeholder = Vul paswoord in
onboarding-wifi_creds-dongle-title = Trackers met een dongle
onboarding-wifi_creds-dongle-description = Als je trackers met een dongle zijn geleverd, steek die dan in je apparaat en je bent klaar om te beginnen!
onboarding-wifi_creds-dongle-wip = Dit gedeelte is nog in ontwikkeling. Er komt binnenkort een aparte pagina om trackers te beheren die via een dongle verbinden.
onboarding-wifi_creds-dongle-continue = Ga verder met een dongle
## Mounting setup
@@ -1033,6 +1090,7 @@ onboarding-assignment_tutorial-done = Ik heb stickers en riemen geplaatst!
onboarding-assign_trackers-back = Ga terug naar de instellingen voor WiFi-configuratie
onboarding-assign_trackers-title = Trackers toewijzen
onboarding-assign_trackers-description = Laten we de bevesteging van je trackers bepalen. Klik op de lichaamslocatie waar je een tracker wilt toewijzen.
onboarding-assign_trackers-unassign_all = Alle trackers toewijzing verwijderen
# Look at translation of onboarding-connect_tracker-connected_trackers on how to use plurals
# $assigned (Number) - Trackers that have been assigned a body part
# $trackers (Number) - Trackers connected to the server
@@ -1175,6 +1233,8 @@ onboarding-automatic_mounting-done-restart = Terug naar start
onboarding-automatic_mounting-mounting_reset-title = Montage-reset
onboarding-automatic_mounting-mounting_reset-step-0 = 1. Ga staan in een "skie"-houding met gebogen benen, je bovenlichaam naar voren gekanteld en armen gebogen.
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Druk op de knop "Reset montage" en wacht 3 seconden voordat de montagerichtingen van de trackers opnieuw worden ingesteld.
onboarding-automatic_mounting-mounting_reset-feet-step-0 = 1. Sta op je tenen met beide voeten naar voren gericht. Je kunt het ook zittend op een stoel doen.
onboarding-automatic_mounting-mounting_reset-feet-step-1 = 2. Druk op de knop "Voetkalibratie" en wacht 3 seconden voordat de montageoriëntaties van de trackers gereset worden.
onboarding-automatic_mounting-preparation-title = Voorbereiding
onboarding-automatic_mounting-preparation-v2-step-0 = 1. Druk op de knop "Volledige reset".
onboarding-automatic_mounting-preparation-v2-step-1 = 2. Ga rechtop staan met je armen langs je zij. Zorg dat je recht vooruit kijkt.
@@ -1182,9 +1242,11 @@ onboarding-automatic_mounting-preparation-v2-step-2 = 3. Houd deze houding aan t
onboarding-automatic_mounting-put_trackers_on-title = Doe je trackers aan
onboarding-automatic_mounting-put_trackers_on-description = Om montagerichtingen te kalibreren gaan we gebruik maken van de trackers die je net hebt toegewezen. Doe al je trackers aan, je kunt zien welke trackers welke zijn in de figuur rechts.
onboarding-automatic_mounting-put_trackers_on-next = Ik heb al mijn trackers aan
onboarding-automatic_mounting-return-home = Klaar
## Tracker manual proportions setupa
onboarding-manual_proportions-back-scaled = Ga terug naar geschaalde proporties
onboarding-manual_proportions-title = Handmatige lichaamsverhoudingen
onboarding-manual_proportions-fine_tuning_button = Automatisch afstemmen van verhoudingen
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Sluit een VR-headset aan om automatische fijnafstelling te gebruiken
@@ -1211,26 +1273,26 @@ onboarding-automatic_proportions-requirements-title = Vereisten
# Each line of text is a different list item
onboarding-automatic_proportions-requirements-descriptionv2 = Je hebt voldaan aan de minimale vereisten om je voeten te tracken (over het algemeen 5 trackers). Je hebt je trackers en headset aan en draagt ze. Je trackers en headset zijn verbonden met de SlimeVR server en werken naar behoren (zonder haperingen, loskoppelingen etc.). Je headset stuurt positiedata naar de SlimeVR server (dit vereist doorgaans dat SteamVR draait en verbonden is met SlimeVR via de SlimeVR SteamVR-driver). De tracking werkt en registreert je bewegingen nauwkeurig (je hebt bijvoorbeeld een volledige reset uitgevoerd en de trackers bewegen in de juiste richting bij schoppen, bukken, zitten etc.).
onboarding-automatic_proportions-requirements-next = Ik heb de vereisten gelezen
onboarding-automatic_proportions-check_height-title-v3 = Meet de hoogte van uw headset
onboarding-automatic_proportions-check_height-description-v2 = De hoogte van uw headset (HMD) moet iets minder zijn dan uw volledige lengte, aangezien headsets uw ooghoogte meten. Deze meting wordt gebruikt als basis voor uw lichaamsverhoudingen.
onboarding-automatic_proportions-check_height-title-v3 = Meet de hoogte van je headset
onboarding-automatic_proportions-check_height-description-v2 = De hoogte van je headset (HMD) moet iets minder zijn dan jouw volledige lengte, aangezien headsets je ooghoogte meten. Deze meting wordt gebruikt als basis voor je lichaamsverhoudingen.
# All the text is in bold!
onboarding-automatic_proportions-check_height-calculation_warning-v3 = Begin met meten terwijl je <u>rechtop</u> staat om je lengte te meten. Let erop dat je je handen niet hoger dan je headset tilt, want dat kan de meting beïnvloeden!
onboarding-automatic_proportions-check_height-guardian_tip = Als je een losse VR-bril gebruikt, zorg er dan voor dat je guardian/veilige zone is ingeschakeld zodat je lengte correct is gekalibreerd!
# Context is that the height is unknown
onboarding-automatic_proportions-check_height-unknown = Onbekend
# Shows an element below it
onboarding-automatic_proportions-check_height-hmd_height2 = De hoogte van uw headset is:
onboarding-automatic_proportions-check_height-hmd_height2 = De hoogte van je headset is:
onboarding-automatic_proportions-check_height-measure-start = Begin met meten
onboarding-automatic_proportions-check_height-measure-stop = Stoppen met meten
onboarding-automatic_proportions-check_height-measure-reset = Probeer opnieuw te meten
onboarding-automatic_proportions-check_height-next_step = Ze zijn goed
onboarding-automatic_proportions-check_floor_height-title = Meet uw vloerhoogte (optioneel)
onboarding-automatic_proportions-check_floor_height-description = In sommige gevallen wordt uw vloerhoogte mogelijk niet correct ingesteld door uw headset, waardoor de hoogte van de headset hoger wordt gemeten dan zou moeten. U kunt de "hoogte" van uw vloer meten om de hoogte van uw headset te corrigeren.
onboarding-automatic_proportions-check_floor_height-title = Meet je vloerhoogte (optioneel)
onboarding-automatic_proportions-check_floor_height-description = In sommige gevallen wordt je vloerhoogte mogelijk niet correct ingesteld door je headset, waardoor de hoogte van de headset hoger wordt gemeten dan zou moeten. Je kunt de "hoogte" van je vloer meten om de hoogte van je headset te corrigeren.
# All the text is in bold!
onboarding-automatic_proportions-check_floor_height-calculation_warning-v2 = Begin met meten en zet een controller op je vloer om de hoogte te meten. Als je zeker weet dat je vloerhoogte klopt, kun je deze stap overslaan.
# Shows an element below it
onboarding-automatic_proportions-check_floor_height-floor_height = Uw vloerhoogte is:
onboarding-automatic_proportions-check_floor_height-full_height = Uw geschatte volledige lengte is:
onboarding-automatic_proportions-check_floor_height-floor_height = Je vloerhoogte is:
onboarding-automatic_proportions-check_floor_height-full_height = Je geschatte volledige lengte is:
onboarding-automatic_proportions-check_floor_height-measure-start = Begin met meten
onboarding-automatic_proportions-check_floor_height-measure-stop = Stoppen met meten
onboarding-automatic_proportions-check_floor_height-measure-reset = Probeer opnieuw te meten
@@ -1271,12 +1333,36 @@ onboarding-automatic_proportions-error_modal-v2 =
<docs>Bekijk de documentatie</docs> of word lid van onze <discord>Discord</discord> voor hulp ^_^
onboarding-automatic_proportions-error_modal-confirm = Begrepen!
onboarding-automatic_proportions-smol_warning =
Uw ingestelde lengte van { $height } is lager dan de toegestane minimumlengte van { $minHeight }.
Jouw ingestelde lengte van { $height } is lager dan de toegestane minimumlengte van { $minHeight }.
<b>Voer de metingen opnieuw uit en controleer of ze correct zijn.</b>
onboarding-automatic_proportions-smol_warning-cancel = Ga terug
## User height calibration
onboarding-user_height-title = Wat is jouw lengte?
onboarding-user_height-description = We hebben je lengte nodig om je lichaamsproporties te berekenen en je bewegingen nauwkeurig weer te geven. Je kunt SlimeVR je lengte laten berekenen, of je lengte handmatig invoeren.
onboarding-user_height-need_head_tracker = Voor de kalibratie zijn een headset en controllers met positionele tracking vereist.
onboarding-user_height-calculate = Bereken mijn lengte automatisch
onboarding-user_height-next_step = Doorgaan en opslaan
onboarding-user_height-manual-proportions = Handmatige lichaamsverhoudingen
onboarding-user_height-calibration-title = Vooruitgang van de kalibratie
onboarding-user_height-calibration-RECORDING_FLOOR = Raak de vloer aan met de punt van je controller
onboarding-user_height-calibration-WAITING_FOR_RISE = Sta weer op
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK = Sta weer op en kijk vooruit
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-ok = Zorg dat je hoofd vlak staat
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-low = Kijk niet naar de vloer
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-high = Kijk niet te veel omhoog
onboarding-user_height-calibration-WAITING_FOR_CONTROLLER_PITCH = Zorg dat de controller naar beneden wijst
onboarding-user_height-calibration-RECORDING_HEIGHT = Sta weer op en blijf stilstaan!
onboarding-user_height-calibration-DONE = Gelukt!
onboarding-user_height-calibration-ERROR_TIMEOUT = Kalibratie sessie is verlopen, probeer het opnieuw.
onboarding-user_height-calibration-ERROR_TOO_HIGH = De gedetecteerde gebruikershoogte is te hoog, probeer het opnieuw.
onboarding-user_height-calibration-ERROR_TOO_SMALL = De gedetecteerde gebruikerslengte is te klein. Zorg dat je voor het einde van de kalibratie rechtop staat en naar voren kijkt.
onboarding-user_height-calibration-error = Kalibratie mislukt
onboarding-user_height-manual-tip = Tijdens het aanpassen van je lengte kan je verschillende poses proberen en kijken hoe het skelet met jouw lichaam overeenkomt.
onboarding-user_height-reset-warning =
<b>Waarschuwing:</b> Dit zet je verhoudingen terug op basis van jouw lengte.
Weet je zeker dat je dit wilt doen?
## Stay Aligned setup
@@ -1311,10 +1397,13 @@ onboarding-stay_aligned-previous_step = Vorige
onboarding-stay_aligned-next_step = Volgende
onboarding-stay_aligned-restart = Herstarten
onboarding-stay_aligned-done = Klaar
onboarding-stay_aligned-manual_mounting-done = Klaar
## Home
home-no_trackers = Geen trackers gedetecteerd of toegewezen
home-settings = Startpagina-instellingen
home-settings-close = Sluiten
## Trackers Still On notification
@@ -1355,18 +1444,50 @@ firmware_tool = DIY firmware-tool
firmware_tool-description = Hiermee kan je uw DIY-trackers configureren en flashen
firmware_tool-not_available = Oeps, de firmwaretool is momenteel niet beschikbaar. Kom later terug!
firmware_tool-not_compatible = De firmwaretool is niet compatibel met deze versie van de server. Gelieve te updaten!
firmware_tool-select_source = Selecteer de firmware die je wilt flashen
firmware_tool-select_source-description = Selecteer de firmware die je op jouw bord wilt flashen
firmware_tool-select_source-error = Kan bronnen niet laden
firmware_tool-select_source-board_type = Type bord
firmware_tool-select_source-firmware = Firmware-bron
firmware_tool-select_source-version = Firmware versie
firmware_tool-select_source-official = Officieel
firmware_tool-select_source-dev = Ontwikkelaar
firmware_tool-select_source-not_selected = Geen bron geselecteerd
firmware_tool-select_source-no_boards = Geen beschikbare borden voor deze bron
firmware_tool-select_source-no_versions = Geen beschikbare versies voor deze bron
firmware_tool-board_defaults = Configureer je bord
firmware_tool-board_defaults-description = Stel de pinnen of instellingen in ten opzichte van jouw hardware
firmware_tool-board_defaults-add = Toevoegen
firmware_tool-board_defaults-reset = Reset naar standaard
firmware_tool-board_defaults-error-required = Verplicht veld
firmware_tool-board_defaults-error-format = Ongeldig formaat
firmware_tool-board_defaults-error-format-number = Is geen nummer
firmware_tool-flash_method_step = Flashing methode
firmware_tool-flash_method_step-description = Kies de flashingsmethode die je wilt gebruiken
firmware_tool-flash_method_step-ota-v2 =
.label = Wi-Fi
.description = Gebruik de over-the-air methode. Jouw tracker zal via wifi de firmware bijwerken. Werkt alleen op trackers die al zijn ingesteld.
firmware_tool-flash_method_step-ota-info =
We gebruiken jouw wifi-inloggegevens om de tracker te flashen en te bevestigen dat alles correct werkte.
<b>We slaan je wifi-gegevens niet op!</b>
firmware_tool-flash_method_step-serial-v2 =
.label = USB
.description = Gebruik een USB kabel om jouw tracker up te daten.
firmware_tool-flashbtn_step = Druk op de bootknop
firmware_tool-flashbtn_step-description = Voordat u naar de volgende stap gaat, zijn er een paar dingen die u moet doen.
firmware_tool-flashbtn_step-board_SLIMEVR = Zet de tracker uit, verwijder de behuizing (indien aanwezig), verbind een USB-kabel met deze computer en voer vervolgens een van de volgende stappen uit, afhankelijk van de revisie van uw SlimeVR-board:
firmware_tool-flashbtn_step-description = Voordat je naar de volgende stap gaat, zijn er een paar dingen die je moet doen.
firmware_tool-flashbtn_step-board_SLIMEVR = Zet de tracker uit, verwijder de behuizing (indien aanwezig), verbind een USB-kabel met deze computer en voer vervolgens een van de volgende stappen uit, afhankelijk van de revisie van je SlimeVR-bord:
firmware_tool-flashbtn_step-board_SLIMEVR-r11-v2 = Zet de tracker aan terwijl je het tweede rechthoekige FLASH-contact vlak bij de rand aan de bovenkant van de printplaat kortsluit tot het metalen schild van de microcontroller. De LED van de tracker zou kort moeten knipperen.
firmware_tool-flashbtn_step-board_SLIMEVR-r12-v2 = Zet de tracker aan terwijl je het ronde FLASH-contact aan de bovenkant van de printplaat kortsluit tot het metalen schild van de microcontroller. De LED van de tracker zou kort moeten knipperen.
firmware_tool-flashbtn_step-board_SLIMEVR-r14-v2 = Zet de tracker aan terwijl je de FLASH-knop aan de bovenkant van de printplaat ingedrukt houdt. De LED van de tracker zou kort moeten knipperen.
firmware_tool-flashbtn_step-board_OTHER =
Voordat u gaat flashen, moet de tracker waarschijnlijk in de bootloader-modus worden gezet.
Voordat je gaat flashen, moet de tracker waarschijnlijk in de bootloader-modus worden gezet.
Meestal betekent dit het indrukken van de bootknop op het board voordat het flashproces begint.
Als het flashproces time-out bij het begin van het flashen, betekent dit waarschijnlijk dat de tracker niet in de bootloader-modus stond.
Raadpleeg de flitsinstructies van uw board om te weten hoe u de bootloader-modus inschakelt.
Als het flashproces verloopt bij het begin van het flashen, betekent dit waarschijnlijk dat de tracker niet in de bootloader-modus stond.
Raadpleeg de flashing-instructies van je board om te weten hoe je de bootloader-modus inschakelt.
firmware_tool-flash_method_ota-title = Flashen over Wi-Fi
firmware_tool-flash_method_ota-devices = Gedetecteerde OTA-apparaten:
firmware_tool-flash_method_ota-no_devices = Er zijn geen boards die via OTA bijgewerkt kunnen worden, zorg ervoor dat u het juiste boardtype heeft geselecteerd.
firmware_tool-flash_method_ota-no_devices = Er zijn geen boards die via OTA bijgewerkt kunnen worden, zorg ervoor dat je het juiste boardtype heeft geselecteerd.
firmware_tool-flash_method_serial-title = Flashen over USB
firmware_tool-flash_method_serial-wifi = Wi-Fi-gegevens:
firmware_tool-flash_method_serial-devices-label = Gedetecteerde serial apparaten:
firmware_tool-flash_method_serial-devices-placeholder = Selecteer een serieel apparaat
@@ -1381,7 +1502,10 @@ firmware_tool-flashing_step-exit = Sluit
## firmware tool build status
firmware_tool-build-QUEUED = Wachten om te maken....
firmware_tool-build-CREATING_BUILD_FOLDER = De buildmap maken
firmware_tool-build-DOWNLOADING_SOURCE = Broncode wordt gedownload
firmware_tool-build-EXTRACTING_SOURCE = Broncode wordt uitgepakt
firmware_tool-build-BUILDING = Firmware wordt gebouwd
firmware_tool-build-SAVING = De build opslaan
firmware_tool-build-DONE = Build voltooid
@@ -1493,3 +1617,60 @@ error_collection_modal-description_v2 =
U kunt deze instelling later wijzigen in de sectie Gedrag van de instellingenpagina.
error_collection_modal-confirm = Ik ben akkoord
error_collection_modal-cancel = Ik wil het niet
## Tracking checklist section
tracking_checklist = Tracking Checklist
tracking_checklist-settings = Instellingen voor trackingchecklists
tracking_checklist-settings-close = Sluiten
tracking_checklist-status-incomplete = U bent niet voorbereid om SlimeVR te gebruiken!
tracking_checklist-status-partial =
{ $count ->
[one] U heeft 1 waarschuwing!
*[other] U heeft { $count } waarschuwingen!
}
tracking_checklist-status-complete = U bent klaar om SlimeVR te gebruiken!
tracking_checklist-MOUNTING_CALIBRATION = Voer een montagekalibratie uit
tracking_checklist-FEET_MOUNTING_CALIBRATION = Voer een voetmontage-kalibratie uit
tracking_checklist-FULL_RESET = Voer een volledige reset uit
tracking_checklist-FULL_RESET-desc = Sommige trackers hebben een reset nodig
tracking_checklist-STEAMVR_DISCONNECTED = SteamVR draait niet
tracking_checklist-STEAMVR_DISCONNECTED-desc = SteamVR draait niet. Gebruik je het voor VR?
tracking_checklist-STEAMVR_DISCONNECTED-open = Open SteamVR
tracking_checklist-TRACKERS_REST_CALIBRATION = Kalibreer je trackers
tracking_checklist-TRACKERS_REST_CALIBRATION-desc = Je hebt geen tracker kalibratie uitgevoerd. Laat je Slimes (gemarkeerd met geel) rusten op een stabiele ondergrond voor een paar secondes.
tracking_checklist-TRACKER_ERROR = Trackers met fouten
tracking_checklist-TRACKER_ERROR-desc = Sommige van je trackers hebben een fout. Herstart de tracker die in het geel zijn gemarkeerd aub.
tracking_checklist-VRCHAT_SETTINGS = Configureer VRChat-instellingen
tracking_checklist-VRCHAT_SETTINGS-desc = Je hebt enkele VRchat-instellingen verkeerd geconfigureerd! Dit kan jouw trackingervaring negatief beïnvloeden.
tracking_checklist-VRCHAT_SETTINGS-open = Ga naar VRChat Waarschuwingen
tracking_checklist-UNASSIGNED_HMD = VR-headset niet toegewezen aan Hoofd
tracking_checklist-UNASSIGNED_HMD-desc = De VR-headset moet worden toegewezen als hoofdtracker.
tracking_checklist-NETWORK_PROFILE_PUBLIC = Verander je netwerkprofiel
tracking_checklist-NETWORK_PROFILE_PUBLIC-desc =
{ $count ->
[one]
Uw netwerk-profiel is op dit moment of publiek ingesteld ({ $adapters })
Dit wordt niet aanbevolen voor een goede werking van SlimeVR
<PublicFixLink>Hier lees je hoe je dit kan oplossen</PublicFixLink>
*[other]
Sommige van je netwerkadapters staan ingesteld op openbaar:
{ $adapters }.
Dit wordt niet aanbevolen voor een goede werking van SlimeVR.
<PublicFixLink>Hier lees je hoe je dit kan oplossen.</PublicFixLink>
}
tracking_checklist-NETWORK_PROFILE_PUBLIC-open = Open Configuratiescherm
tracking_checklist-STAY_ALIGNED_CONFIGURED = Configureer Blijf in lijn
tracking_checklist-STAY_ALIGNED_CONFIGURED-desc = Noteer de blijf in lijn posities voor een verbeterde imu-drift
tracking_checklist-STAY_ALIGNED_CONFIGURED-open = Open Blijf in lijn wizard
tracking_checklist-ignore = Negeren
preview-mocap_mode_soon = Mocap-modus (binnenkort™)
preview-disable_render = Schakel rendering uit
preview-disabled_render = Rendering uitgeschakeld
toolbar-mounting_calibration = Montage-kalibratie
toolbar-mounting_calibration-default = Lichaam
toolbar-mounting_calibration-feet = Voeten
toolbar-mounting_calibration-fingers = Vingers
toolbar-drift_reset = Drift Reset
toolbar-assigned_trackers = { $count } trackers toegewezen
toolbar-unassigned_trackers = { $count } trackers niet toegewezen

View File

@@ -33,6 +33,10 @@ tips-failed_webgl = Nie udało się zainicjalizować WebGL.
## Units
unit-meter = Metr
unit-foot = Stopa
unit-inch = Cal
unit-cm = cm
## Body parts
@@ -98,6 +102,8 @@ board_type-WEMOSD1MINI = Wemos D1 Mini
board_type-TTGO_TBASE = Podstawa T TTGO
board_type-ESP01 = Zobacz materiał ESP-01
board_type-SLIMEVR = SlimeVR
board_type-SLIMEVR_DEV = SlimeVR Płytka Deweloperska
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
@@ -249,6 +255,10 @@ reset-mounting = Zresetuj położenie
reset-mounting-feet = Zresetuj mocowanie stóp
reset-mounting-fingers = Zresetuj mocowanie palców
reset-yaw = Reset odchylenia
reset-error-no_feet_tracker = Nie przypisano urządzenia śledzenia stóp
reset-error-no_fingers_tracker = Nie przypisano urządzenia śledzenia palcy
reset-error-mounting-need_full_reset = Potrzebny jest pełny reset przed montażem
reset-error-yaw-need_full_reset = Potrzebny jest pełny reset przed resetem obrotu
## Serial detection stuff
@@ -268,10 +278,12 @@ navbar-trackers_assign = Przydzielenie Trackerów
navbar-mounting = Kalibracja Pozycji
navbar-onboarding = Wstępna konfiguracja
navbar-settings = Ustawienia
navbar-connect_trackers = Połącz Urządzenia
## Biovision hierarchy recording
bvh-start_recording = Nagraj BVH
bvh-stop_recording = Zapisz nagranie BVH
bvh-recording = Nagrywanie...
bvh-save_title = Zapisz nagranie BVH
@@ -408,11 +420,15 @@ tracker-settings-name_section-label = Nazwa Urządzenia
tracker-settings-forget = Zapomnij o trackerze
tracker-settings-forget-description = Usuwa moduł śledzący z serwera SlimeVR i uniemożliwia mu połączenie się z nim do czasu ponownego uruchomienia serwera. Konfiguracja modułu śledzącego nie zostanie utracona.
tracker-settings-forget-label = Zapomnij o trackerze
tracker-settings-update-unavailable-v2 = Nie znaleziono aktualizacji
tracker-settings-update-incompatible = Nie można zaktualizować. Niekompatybilne urządzenie lub wersja oprogramowania.
tracker-settings-update-low-battery = Nie można zaktualizować. Bateria poniżej 50%
tracker-settings-update-up_to_date = Aktualny
tracker-settings-update-blocked = Aktualizacja niedostępna. Brak innych wersji
tracker-settings-update = Zaktualizuj teraz
tracker-settings-update-title = Wersja oprogramowania
tracker-settings-current-version = Aktualny
tracker-settings-latest-version = Najnowszy
## Tracker part card info
@@ -478,6 +494,7 @@ mounting_selection_menu-close = Zamknij
settings-sidebar-title = Ustawienia
settings-sidebar-general = Ogólne
settings-sidebar-steamvr = SteamVR
settings-sidebar-tracker_mechanics = Mechanika trackerów
settings-sidebar-stay_aligned = Wyrównywanie
settings-sidebar-fk_settings = Ustawienia śledzenia
@@ -485,9 +502,12 @@ settings-sidebar-gesture_control = Sterowanie gestami
settings-sidebar-interface = Interfejs
settings-sidebar-osc_router = OSC router
settings-sidebar-osc_trackers = Śledzenie VRChat OSC
settings-sidebar-osc_vmc = VMC
settings-sidebar-utils = Narzędzia
settings-sidebar-serial = Konsola szeregowa
settings-sidebar-appearance = Wygląd
settings-sidebar-home = Strona Główna
settings-sidebar-checklist = Lista kontrolna
settings-sidebar-notifications = Powiadomienia
settings-sidebar-behavior = Zachowanie
settings-sidebar-firmware-tool = Narzędzie do oprogramowania sprzętowego DIY
@@ -613,11 +633,16 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = Floor-clip może
settings-general-fk_settings-leg_tweak-toe_snap-description = Toe-snap próbuje odgadnąć obrót twoich stóp, jeśli trackery stóp nie są używane.
settings-general-fk_settings-leg_tweak-foot_plant-description = Foot-plant obraca stopy, aby były równoległe do podłoża podczas kontaktu.
settings-general-fk_settings-leg_fk = Śledzenie nóg
settings-general-fk_settings-leg_fk-reset_mounting_feet-description-v1 = Wymuś kalibracje montażu stóp podczas kalibracji pozycji.
settings-general-fk_settings-leg_fk-reset_mounting_feet-v1 = Wymuś kalibracje mocowania stóp
settings-general-fk_settings-enforce_joint_constraints = Limity szkieletowe
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = Wymuszanie ograniczeń
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints-description = Zapobiega obracaniu się stawów poza ich limit
settings-general-fk_settings-enforce_joint_constraints-correct_constraints = Korygowanie za pomocą ograniczeń
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = Koryguj rotacje stawów, gdy przekraczają swój limit
settings-general-fk_settings-ik = Dane pozycji
settings-general-fk_settings-ik-use_position = Użyj danych o pozycji
settings-general-fk_settings-ik-use_position-description = Umożliwia wykorzystanie danych o pozycji z urządzeń, które je wspierają. Włączając to, upewnij się, że dokonałeś reset w aplikacji i skalibrowałeś położenie w grze.
settings-general-fk_settings-arm_fk = Śledzenie ramienia
settings-general-fk_settings-arm_fk-description = Zmień sposób śledzenia ramion.
settings-general-fk_settings-arm_fk-force_arms = Śledź ramiona z gogli VR
@@ -775,6 +800,11 @@ settings-serial-auto_dropdown_item = Auto
settings-serial-get_wifi_scan = Skanuj sieci WiFi
settings-serial-file_type = Zwykły tekst
settings-serial-save_logs = Zapisz do pliku
settings-serial-send_command = Wyślij
settings-serial-send_command-placeholder = Polecenie...
settings-serial-send_command-warning = <b>Ostrzeżenie:</b> Wysyłanie poleceń szeregowych może prowadzić do utraty danych lub zablokowania urządzenia.
settings-serial-send_command-warning-ok = Wiem co robię
settings-serial-send_command-warning-cancel = Anuluj
## OSC router settings
@@ -874,6 +904,8 @@ settings-osc-vmc-mirror_tracking-label = Odbicie lustrzane śledzenia
## Common OSC settings
settings-osc-common-network-ports_match_error = Porty wejściowe i wyjściowe routera OSC nie mogą być takie same!
settings-osc-common-network-port_banned_error = Port { $port } nie może zostać użyty!
## Advanced settings
@@ -906,9 +938,15 @@ settings-utils-advanced-open_logs-label = Otwórz folder
## Home Screen
settings-home-list-layout = Układ listy urządzeń
settings-home-list-layout-desc = Wybierz jeden z możliwych układów ekranu głównego
settings-home-list-layout-grid = Siatka
settings-home-list-layout-table = Tabela
## Tracking Checlist
settings-tracking_checklist-active_steps = Aktywne Kroki
settings-tracking_checklist-active_steps-desc = Lista wszystkich kroków kontrolnych. Możesz wyłączyć konkretne punkty.
## Setup/onboarding menu
@@ -925,11 +963,6 @@ onboarding-setup_warning-cancel = Kontynuuj konfigurację
## Wi-Fi setup
onboarding-wifi_creds-back = Cofnij się do początku
onboarding-wifi_creds = Wpisz dane Wi-Fi
# This cares about multilines
onboarding-wifi_creds-description =
Trackery będą używać tej sieci do łączenia się z serwerem
proszę używać sieci do której jest się połączonym
onboarding-wifi_creds-skip = Pomiń ustawienia Wi-Fi
onboarding-wifi_creds-submit = Potwierdź!
onboarding-wifi_creds-ssid =
@@ -1046,6 +1079,7 @@ onboarding-assignment_tutorial-done = Umieszczam naklejki i paski!
onboarding-assign_trackers-back = Cofnij się do ustawień Wi-Fi
onboarding-assign_trackers-title = Przydziel Trackery
onboarding-assign_trackers-description = Wybierzmy gdzie idzie jaki tracker. Naciśnij gdzie chcesz go przydzielić
onboarding-assign_trackers-unassign_all = Usuń przydzielenie wszystkich urządzeń
# Look at translation of onboarding-connect_tracker-connected_trackers on how to use plurals
# $assigned (Number) - Trackers that have been assigned a body part
# $trackers (Number) - Trackers connected to the server
@@ -1193,6 +1227,8 @@ onboarding-automatic_mounting-done-restart = Cofnij się na początek
onboarding-automatic_mounting-mounting_reset-title = Kalibracja Pozycji
onboarding-automatic_mounting-mounting_reset-step-0 = 1. Zrób pozycje "na Małysza" z wygiętymi nogami, tułowiem pochylonym do przodu z wygiętymi rękami.
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Naciśnij "Zresetuj Położenie" i poczekaj 3 sekundy zanim trackery się zresetują.
onboarding-automatic_mounting-mounting_reset-feet-step-0 = 1. Stań na palcach z obiema stopami skierowanymi do przodu. Alternatywnie możesz to zrobić siedząc na krześle.
onboarding-automatic_mounting-mounting_reset-feet-step-1 = 2. Naciśnij "Kalibracja Stóp" i poczekaj 3 sekundy zanim zresetuje pozycje.
onboarding-automatic_mounting-preparation-title = Przygotowania
onboarding-automatic_mounting-preparation-v2-step-0 = 1. Naciśnij przycisk "Pełny reset".
onboarding-automatic_mounting-preparation-v2-step-1 = 2. Stań prosto z rękami po bokach. Upewnij się, że patrzysz przed siebie.
@@ -1200,9 +1236,11 @@ onboarding-automatic_mounting-preparation-v2-step-2 = 3. Utrzymaj pozycję, aż
onboarding-automatic_mounting-put_trackers_on-title = Załóż trackery
onboarding-automatic_mounting-put_trackers_on-description = Aby skalibrować rotacje, użyjemy trackerów które przypisano przed chwilą. Załóż wszystkie trackery, możesz je odróznić na postaci po prawej.
onboarding-automatic_mounting-put_trackers_on-next = Wszystkie trackery założone
onboarding-automatic_mounting-return-home = Gotowe
## Tracker manual proportions setupa
onboarding-manual_proportions-back-scaled = Wróć do skalowania proporcji
onboarding-manual_proportions-title = Manualne Proporcje Ciała
onboarding-manual_proportions-fine_tuning_button = Automatyczne dostrajanie proporcji
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Podłącz gogle VR, aby korzystać z automatycznego dostrajania
@@ -1304,6 +1342,30 @@ onboarding-automatic_proportions-smol_warning-cancel = Przejdź wstecz
## User height calibration
onboarding-user_height-title = Jaki masz wzrost?
onboarding-user_height-description = Potrzebujemy twojego wzrostu, aby obliczyć proporcje ciała i dokładnie oddać twoje ruchy. Możesz pozwolić SlimeVR to obliczyć albo wpisać swój wzrost ręcznie.
onboarding-user_height-need_head_tracker = Do kalibracji wymaganę są gogle vr z kontrolerami.
onboarding-user_height-calculate = Automatycznie oblicz mój wzrost
onboarding-user_height-next_step = Kontynuuj i zapisz
onboarding-user_height-manual-proportions = Manualne Proporcje Ciała
onboarding-user_height-calibration-title = Postęp kalibracji
onboarding-user_height-calibration-RECORDING_FLOOR = Dotknij podłogi górną częścią kontrolera
onboarding-user_height-calibration-WAITING_FOR_RISE = Wstań
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK = Wstań i spójrz przed siebie
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-ok = Upewnij się, że masz głowę poziomo
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-low = Nie patrz w podłogę
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-high = Nie patrz za wysoko
onboarding-user_height-calibration-WAITING_FOR_CONTROLLER_PITCH = Upewnij się, że kontroler jest skierowany w dół
onboarding-user_height-calibration-RECORDING_HEIGHT = Wstań i nie ruszaj się!
onboarding-user_height-calibration-DONE = Sukces!
onboarding-user_height-calibration-ERROR_TIMEOUT = Kalibracja zakończona niepomyślnie, spróbuj ponownie.
onboarding-user_height-calibration-ERROR_TOO_HIGH = Wykryty wzrost użytkownika jest zbyt wysoki, spróbuj ponownie.
onboarding-user_height-calibration-ERROR_TOO_SMALL = Wykryty wzrost użytkownika jest zbyt mały. Upewnij się, że stoisz prosto i patrzysz przed siebie pod koniec kalibracji.
onboarding-user_height-calibration-error = Kalibracja nieudana
onboarding-user_height-manual-tip = Podczas regulacji wzrostu wypróbuj różne pozy i zobacz, czy szkielet odzwierciedla twoje ruchy.
onboarding-user_height-reset-warning =
<b>Ostrzeżenie:</b> Spowoduje to zresetowanie wszystkich ustawień proporcji do wartości domyślnych.
Czy na pewno chcesz to zrobić?
## Stay Aligned setup
@@ -1342,6 +1404,8 @@ onboarding-stay_aligned-done = Gotowy
## Home
home-no_trackers = Nie wykryto ani nie przypisano żadnych trackerów
home-settings = Ustawienia strony głównej
home-settings-close = Zamknij
## Trackers Still On notification
@@ -1383,21 +1447,50 @@ firmware_tool = Narzędzie do oprogramowania sprzętowego DIY
firmware_tool-description = Umożliwia konfigurowanie i flashowanie trackerów DIY
firmware_tool-not_available = Ups, narzędzie do oprogramowania sprzętowego nie jest obecnie dostępne. Wróć później!
firmware_tool-not_compatible = Narzędzie oprogramowania układowego nie jest kompatybilne z tą wersją serwera. Proszę zaktualizować swój serwer!
firmware_tool-select_source = Wybierz oprogramowanie do wgrania
firmware_tool-select_source-description = Wybierz oprogramowanie, które chcesz wgrać na urządzenie
firmware_tool-select_source-error = Nie można załadować oprogramowania
firmware_tool-select_source-board_type = Typ urządzenia
firmware_tool-select_source-firmware = Źródło oprogramowania
firmware_tool-select_source-version = Wersja oprogramowania
firmware_tool-select_source-official = Oficjalny
firmware_tool-select_source-dev = Deweloperski
firmware_tool-board_defaults = Skonfiguruj swoje urządzenie
firmware_tool-board_defaults-description = Ustaw piny lub ustawienia do twojego urządzenia
firmware_tool-board_defaults-add = Dodaj
firmware_tool-board_defaults-reset = Zresetuj do domyślnych ustawień
firmware_tool-board_defaults-error-required = Wymagane pole
firmware_tool-board_defaults-error-format = Nieprawidłowy format
firmware_tool-board_defaults-error-format-number = To nie liczba
firmware_tool-flash_method_step = Metoda flashowania
firmware_tool-flash_method_step-description = Wybierz metodę flashowania, której chcesz użyć
firmware_tool-flash_method_step-ota-v2 =
.label = Wi-Fi
.description = Użyj metody bezprzewodowej. Twoje urządzenie będzie aktualizować się przez Wi-Fi. Działa tylko z skonfigurowanymi urządzeniami.
firmware_tool-flash_method_step-ota-info =
Używamy Twoich danych wi-fi, aby wgrać tracker i potwierdzić, że wszystko działa poprawnie.
<b>Nie przechowujemy Twoich danych wifi!</b>
firmware_tool-flash_method_step-serial-v2 =
.label = USB
.description = Użyj kabla usb, aby aktualizować urządzenie.
firmware_tool-flashbtn_step = Naciśnij przycisk zasilania
firmware_tool-flashbtn_step-description = Zanim przejdziesz do następnego kroku, musisz zrobić kilka rzeczy
firmware_tool-flashbtn_step-board_SLIMEVR =
Naciśnij przycisk flash na płytce drukowanej przed włożeniem, aby włączyć tracker.¶
Jeśli tracker był już włączony, po prostu go wyłącz i włącz ponownie, naciskając przycisk lub zwierając podkładki flash.¶
Oto kilka zdjęć, jak to zrobić, zgodnie z różnymi wersjami trackera SlimeVR
firmware_tool-flashbtn_step-board_SLIMEVR-r11-v2 = Włącz tracker zwierając drugi prostokątny pad FLASH od krawędzi na górnej stronie płytki, a metalową osłonę mikrokontrolera
firmware_tool-flashbtn_step-board_SLIMEVR-r12-v2 = Włącz tracker zwierając drugi prostokątny pad FLASH od krawędzi na górnej stronie płytki, a metalową osłonę mikrokontrolera
firmware_tool-flashbtn_step-board_SLIMEVR-r14-v2 = Włącz tracker, naciskając przycisk FLASH na górnej stronie płytki. Dioda LED powinna krótko mrógnąć.
firmware_tool-flashbtn_step-board_OTHER =
Przed flashowaniem prawdopodobnie będziesz musiał przełączyć moduł śledzący w tryb bootloadera.¶
W większości przypadków oznacza to naciśnięcie przycisku rozruchu na płycie przed rozpoczęciem procesu flashowania.¶
Jeśli na początku flashowania upłynie limit czasu procesu flashowania, prawdopodobnie oznacza to, że moduł śledzący nie był w trybie bootloadera¶
Aby dowiedzieć się, jak włączyć tryb ładowarki łodzi, zapoznaj się z instrukcjami flashowania swojej tablicy
firmware_tool-flash_method_ota-title = Wgrywanie przez Wi-Fi
firmware_tool-flash_method_ota-devices = Wykryte urządzenia OTA:
firmware_tool-flash_method_ota-no_devices = Nie ma tablic, które można zaktualizować za pomocą OTA, upewnij się, że wybrałeś właściwy typ płyty
firmware_tool-flash_method_serial-title = Wgrywanie przez USB
firmware_tool-flash_method_serial-wifi = Dane uwierzytelniające Wi-Fi:
firmware_tool-flash_method_serial-devices-label = Wykryte urządzenia szeregowe:
firmware_tool-flash_method_serial-devices-placeholder = Wybierz urządzenie szeregowe
@@ -1412,7 +1505,10 @@ firmware_tool-flashing_step-exit = Wyjście
## firmware tool build status
firmware_tool-build-QUEUED = Budowanie....
firmware_tool-build-CREATING_BUILD_FOLDER = Tworzenie folderu kompilacji
firmware_tool-build-DOWNLOADING_SOURCE = Pobieranie kodu źródłowego
firmware_tool-build-EXTRACTING_SOURCE = Ekstrakcja kodu źródłowego
firmware_tool-build-BUILDING = Budowa oprogramowania sprzętowego
firmware_tool-build-SAVING = Zapisywanie kompilacji
firmware_tool-build-DONE = Budowa ukończona
@@ -1521,8 +1617,72 @@ vrc_config-avatar_measurement_type-ARM_SPAN = Rozpiętość ramion
error_collection_modal-title = Czy możemy zbierać błędy?
error_collection_modal-description_v2 =
{ ustawienia-interfejsu-zachowanie-error_tracking-description_v2 }
{ settings-interface-behavior-error_tracking-description_v2 }
To ustawienie można zmienić później w sekcji Zachowanie na stronie ustawień.
error_collection_modal-confirm = Zgadzam się
error_collection_modal-cancel = Nie chcę
## Tracking checklist section
tracking_checklist = Lista Kontrolna
tracking_checklist-settings = Ustawienia Listy Kontrolnej
tracking_checklist-settings-close = Zamknij
tracking_checklist-status-incomplete = Nie jesteś przygotowany aby korzystać ze SlimeVR!
tracking_checklist-status-partial =
{ $count ->
[one] Masz { $count } ostrzeżenie!
[few] Masz { $count } ostrzeżeń!
*[many] Masz { $count } ostrzeżeń!
}
tracking_checklist-status-complete = Jesteś gotowy korzystać ze SlimeVR!
tracking_checklist-MOUNTING_CALIBRATION = Wykonaj kalibrację montażu
tracking_checklist-FEET_MOUNTING_CALIBRATION = Wykonaj kalibrację montażu stóp
tracking_checklist-FULL_RESET = Wykonaj pełny reset
tracking_checklist-FULL_RESET-desc = Niektóre urządzenia wymagają resetu.
tracking_checklist-STEAMVR_DISCONNECTED = SteamVR nie jest uruchomiony
tracking_checklist-STEAMVR_DISCONNECTED-desc = SteamVR nie jest uruchomiony. Czy twoje gogle są podłączone?
tracking_checklist-STEAMVR_DISCONNECTED-open = Uruchom SteamVR
tracking_checklist-TRACKERS_REST_CALIBRATION = Skalibruj swoje urządzenia
tracking_checklist-TRACKERS_REST_CALIBRATION-desc = Nie wykonałeś kalibracji urządzenia. Proszę, pozwól swoim urządzeniom (podświetlonym na żółto) odpocząć na stabilnej powierzchni przez kilka sekund.
tracking_checklist-TRACKER_ERROR = Urządzenia z błędami
tracking_checklist-TRACKER_ERROR-desc = Niektóre z Twoich urządzeń mają błędy. Proszę ponownie uruchomić urządzenia podświetlone na żółto.
tracking_checklist-VRCHAT_SETTINGS = Konfiguruj ustawienia do VRChat'a
tracking_checklist-VRCHAT_SETTINGS-desc = Źle ustawiłeś ustawienia VRChat'a! Może to negatywnie wpłynąć na twoje śledzenie.
tracking_checklist-VRCHAT_SETTINGS-open = Przejdź do ostrzeżeń VRChat
tracking_checklist-UNASSIGNED_HMD = Zestaw VR nieprzypisany do Głowy
tracking_checklist-UNASSIGNED_HMD-desc = Zestaw VR powinien być przypisany jako śledzenie głowy.
tracking_checklist-NETWORK_PROFILE_PUBLIC = Zmień profil sieciowy
tracking_checklist-NETWORK_PROFILE_PUBLIC-desc =
{ $count ->
[one]
Jeden z Twoich adapterów sieciowych jest ustawiony na publiczny:
{ $adapters }
Nie zaleca się tego, aby SlimeVR działał poprawnie.
<PublicFixLink>Zobacz, jak to naprawić tutaj.</PublicFixLink>
[few]
Niektóre z Twoich adapterów sieciowych są ustawione na publiczne:
{ $adapters }
Nie zaleca się tego, aby SlimeVR działał poprawnie.
<PublicFixLink>Zobacz, jak to naprawić tutaj.</PublicFixLink>
*[many]
Niektóre z Twoich adapterów sieciowych są ustawione na publiczne:
{ $adapters }
Nie zaleca się tego, aby SlimeVR działał poprawnie.
<PublicFixLink>Zobacz, jak to naprawić tutaj.</PublicFixLink>
}
tracking_checklist-NETWORK_PROFILE_PUBLIC-open = Otwórz panel sterowania
tracking_checklist-STAY_ALIGNED_CONFIGURED = Konfiguruj Opcje Wyrównywania
tracking_checklist-STAY_ALIGNED_CONFIGURED-desc = Zapisz pozycje wyrównywania, aby zmniejszyć poślizg
tracking_checklist-STAY_ALIGNED_CONFIGURED-open = Otwórz Konfiguracje Wyrównywania
tracking_checklist-ignore = Ignoruj
preview-mocap_mode_soon = Tryb mocap (wkrótce™)
preview-disable_render = Wyłącz renderowanie
preview-disabled_render = Renderowanie wyłączone
toolbar-mounting_calibration = Kalibracja Pozycji
toolbar-mounting_calibration-default = Ciało
toolbar-mounting_calibration-feet = Stopy
toolbar-mounting_calibration-fingers = Palce
toolbar-drift_reset = Reset Poślizgu
toolbar-assigned_trackers = { $count } Przydzielonych urządzeń
toolbar-unassigned_trackers = { $count } Nieprzydzielonych urządzeń

File diff suppressed because it is too large Load Diff

View File

@@ -920,11 +920,6 @@ onboarding-setup_warning-cancel = Продолжить настройку
## Wi-Fi setup
onboarding-wifi_creds-back = Вернуться к введению
onboarding-wifi_creds = Вставьте данные Wi-Fi
# This cares about multilines
onboarding-wifi_creds-description =
Трекеры будут использовать эти учетные данные для беспроводного подключения.
Пожалуйста, используйте данные Wi-Fi, к которому вы на данный момент подключены.
onboarding-wifi_creds-skip = Пропустить настройки Wi-Fi
onboarding-wifi_creds-submit = Отправить!
onboarding-wifi_creds-ssid =
@@ -1507,3 +1502,6 @@ error_collection_modal-description_v2 =
Вы можете изменить эту настройку позже на странице настроек в разделе Поведение.
error_collection_modal-confirm = Я согласен
error_collection_modal-cancel = Я не согласен
## Tracking checklist section

View File

@@ -842,11 +842,6 @@ onboarding-setup_warning-cancel = Fortsätt inställning
## Wi-Fi setup
onboarding-wifi_creds-back = Gå tillbaka till introduktion
onboarding-wifi_creds = Skriv in Wi-Fi information
# This cares about multilines
onboarding-wifi_creds-description =
Trackers kommer att använda dessa uppgifter för att ansluta trådlöst.
Använd de autentiseringsuppgifter som du för närvarande är ansluten till.
onboarding-wifi_creds-skip = Hoppa över Wi-Fi inställningar.
onboarding-wifi_creds-submit = Överlämna!
onboarding-wifi_creds-ssid =
@@ -1247,3 +1242,6 @@ error_collection_modal-description_v2 =
Du kan ändra denna inställningen senare i beteende-sektionen av inställnings-sidan
error_collection_modal-confirm = Jag tillåter.
error_collection_modal-cancel = Jag vill inte
## Tracking checklist section

View File

@@ -17,9 +17,9 @@ websocket-error-logs = เปิดโฟลเดอร์ไฟล์บัน
## Update notification
version_update-title = มีเวอร์ชันใหม่พร้อมแล้ว: { $version }
version_update-title = มีเวอร์ชันใหม่พร้อมแล้ว: { $version }
version_update-description = คลิกที่ "{ version_update-update }" เพื่อดาวน์โหลดตัวติดตั้ง SlimeVR ให้คุณ
version_update-update = อัเดต
version_update-update = อัเดต
version_update-close = ปิด
## Tips
@@ -115,6 +115,11 @@ 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 = บอร์ดพัฒนาถุงมือ IMU SlimeVR
board_type-GESTURES = ท่าทางสัมผัส
board_type-ESP32S3_SUPERMINI = ESP32-S3 Supermini
board_type-GENERIC_NRF = บอร์ด NRF ทั่วไป
board_type-SLIMEVR_BUTTERFLY_DEV = SlimeVR Dev Butterfly
board_type-SLIMEVR_BUTTERFLY = SlimeVR Butterfly
## Proportions
@@ -141,7 +146,7 @@ skeleton_bone-UPPER_CHEST-desc =
skeleton_bone-CHEST_OFFSET = การชดเชยตำแหน่งหน้าอก
skeleton_bone-CHEST_OFFSET-desc =
นี่เป็นการปรับให้แทร็กเกอร์เสมือนบริเวณอกสูงขึ้น หรือต่ำลงเพื่อช่วย
ในการตั้งศูนย์หรือปรับเทียบสำหรับบางเกมหรือแอปพลิเคชันที่กำหนดตำแหน่งแทร็กเกอร์สูงกว่า หรือต่ำกว่า
ในการตั้งศูนย์หรือปรับเทียบสำหรับบางเกมหรือแอปพลิเคชันที่กำหนดตำแหน่งแทร็กเกอร์สูงกว่า หรือต่ำกว่า
skeleton_bone-CHEST = ความยาวหน้าอก
skeleton_bone-CHEST-desc =
นี่เป็นระยะห่างจากกลางหน้าอกถึงกลางกระดูกสันหลัง
@@ -151,7 +156,7 @@ skeleton_bone-WAIST = ความยาวเอว
skeleton_bone-WAIST-desc =
นี่เป็นระยะห่างจากตรงกลางกระดูกสันหลังถึงสะดือ
ปรับด้วยการเริ่มจากการปรับความยาวลำตัวให้เหมาะสมก่อน แล้วปรับค่านี้ในท่าต่างๆ
(นั่งลง ก้มตัว นอนราบ เป็นต้น) จนกว่ากระดูกหลังเสมือนจะตรงกับกระดูกสันหลังจริง
(นั่งลง ก้มตัว นอนราบ เป็นต้น) จนกว่ากระดูกหลังเสมือนจะตรงกับกระดูกสันหลังจริงของคุณ
skeleton_bone-HIP = ความยาวสะโพก
skeleton_bone-HIP-desc =
นี่เป็นระยะห่างจากสะดือถึงสะโพก
@@ -160,12 +165,12 @@ skeleton_bone-HIP-desc =
skeleton_bone-HIP_OFFSET = การชดเชยตำแหน่งสะโพก
skeleton_bone-HIP_OFFSET-desc =
ปรับค่านี้เพื่อขยับแทร็กเกอร์เสมือนของสะโพกขึ้นหรือลง
เพื่อช่วยในการตั้งศูนย์หรือปรับเทียบสำหรับบางเกมหรือแอปพลิเคชันที่กำหนดตำแหน่งแทร็กเกอร์ให้อยู่ที่สะโพก
เพื่อช่วยในการตั้งศูนย์หรือปรับเทียบสำหรับบางเกมหรือแอปพลิเคชันที่กำหนดตำแหน่งแทร็กเกอร์ให้อยู่ที่สะโพก
skeleton_bone-HIPS_WIDTH = ความกว้างสะโพก
skeleton_bone-HIPS_WIDTH-desc =
นี่เป็นระยะห่างจากจุดเริ่มต้นของขาทั้งสอง
ปรับด้วยการเริ่มจากการรีเซ็ตแทร็กเกอร์ทั้งหมดในขณะที่ยืนตรง
ขาตรง และจึงปรับค่านี้จนกระทังขาเสมือนของคุณตรงกับขาจริงในแนวนอน
ปรับด้วยการเริ่มจากการรีเซ็ตทั้งหมดในขณะที่ยืนตรง
ขาตรง และจึงปรับค่านี้จนกระทังขาเสมือนของคุณตรงกับขาจริงในแนวนอน
skeleton_bone-leg_group = ความยาวขา
skeleton_bone-leg_group-desc =
นี่เป็นระยะห่างจากสะโพกถึงเท้า
@@ -189,7 +194,7 @@ skeleton_bone-FOOT_SHIFT = การปรับชดเชยการวา
skeleton_bone-FOOT_SHIFT-desc =
นี่เป็นระยะห่างในแนวนอนจากหัวเข่าถึงข้อเท้า
ค่านี้ช่วยในการคำนวณการเอียงของขาส่วนล่างเมื่อยืนตัวตรง
โดยเริ่มจากการตั้งความยาวเท้าเป็น 0, รีเซ็ตแทร็กเกอร์ทั้งหมด,
โดยเริ่มจากการตั้งความยาวเท้าเป็น 0, จากนั้นรีเซ็ตทั้งหมด
แล้วจึงปรับค่าจนกระทั่งเท้าเสมือนตรงกับกลางข้อเท้าจริงของคุณ
skeleton_bone-SKELETON_OFFSET = การชดเชยตำแหน่งโครงร่างรวม
skeleton_bone-SKELETON_OFFSET-desc =
@@ -226,14 +231,14 @@ skeleton_bone-HAND_Y-desc =
นี่เป็นระยะห่างในแนวตั้งจากข้อมือถึงกลางมือของคุณ
หากใช้สำหรับ Motion Capture ให้เริ่มจากปรับความยาวแขนให้เหมาะสม แล้วปรับค่านี้จนกว่า
แทร็กเกอร์เสมือนของมือนั้นอยู่ในแนวตั้งเดียวกับกลางมือจริง
หากใช้สำหรับจับตำแหน่งข้อศอกจากคอนโทรลเลอร์ ให้เริ่มจากตั้งความยาวแขน เป็น 0 และ
หากใช้สำหรับจับตำแหน่งข้อศอกจากคอนโทรลเลอร์ ให้เริ่มจากตั้งความยาวแขน เป็น 0
และปรับค่าจนกว่าแทร็กเกอร์ข้อศอกนั้นอยู่ในแนวตั้งเดียวกับข้อมือจริง
skeleton_bone-HAND_Z = ระยะมือแนวราบ (แกน Z)
skeleton_bone-HAND_Z-desc =
นี่เป็นระยะห่างแนวนอนจากข้อมือถึงกลางมือของคุณ
หากใช้สำหรับ Motion capture ให้ตั้งค่านี้เป็น 0
หากใช้สำหรับจับตำแหน่งข้อศอกจากคอนโทรลเลอร์ ให้เริ่มจากตั้งความยาวแขนเป็น 0 และ
ปรับค่าจนกว่าแทร็กเกอร์ข้อศอกนั้นอยู่ในแนวราบเดียวกับข้อมือจริงของคุณ
หากใช้สำหรับจับตำแหน่งข้อศอกจากคอนโทรลเลอร์ ให้เริ่มจากตั้งความยาวแขนเป็น 0
และปรับค่าจนกว่าแทร็กเกอร์ข้อศอกนั้นอยู่ในแนวราบเดียวกับข้อมือจริงของคุณ
skeleton_bone-ELBOW_OFFSET = ชดเชยตำแหน่งข้อศอก
skeleton_bone-ELBOW_OFFSET-desc =
สามารถปรับเพื่อเลื่อนแทร็กเกอร์ข้อศอกเสมือนของคุณขึ้นหรือลงเพื่อช่วย
@@ -250,23 +255,23 @@ reset-reset_all_warning-cancel = ยกเลิก
reset-reset_all_warning_default-v2 =
<b>คำเตือน:</b> คุณยังไม่ได้ตั้งค่าความสูง สัดส่วนของคุณจะถูกรีเซ็ตเป็นค่าเริ่มต้น
คุณแน่ใจหรือไม่ว่าต้องการทำเช่นนี้
reset-full = รีเซ็ตแทร็กเกอร์ทั้งหมด
reset-full = รีเซ็ตทั้งหมด
reset-mounting = รีเซ็ตตั้งศูนย์การติดตั้ง
reset-mounting-feet = รีเซ็ตทิศทางติดตั้งเท้า
reset-mounting-fingers = รีเซ็ตการติดตั้งนิ้วมือ
reset-yaw = รีเซ็ตแกนตั้ง
reset-error-no_feet_tracker = ไม่ได้กำหนดแทร็กเกอร์เท้า
reset-error-no_fingers_tracker = ไม่ได้กําหนดแทร็กเกอร์นิ้ว
reset-error-mounting-need_full_reset = ต้องรีเซ็ตแทร็กเกอร์ทั้งหมดก่อนการตั้งศูนย์การติดตั้ง
reset-error-yaw-need_full_reset = ต้องรีเซ็ตแทร็กเกอร์ทั้งหมดก่อนรีเซ็ตแกนตั้ง
reset-error-no_fingers_tracker = ไม่ได้กหนดแทร็กเกอร์นิ้ว
reset-error-mounting-need_full_reset = ต้องรีเซ็ตทั้งหมดก่อนการตั้งศูนย์การติดตั้ง
reset-error-yaw-need_full_reset = ต้องรีเซ็ตทั้งหมดก่อนรีเซ็ตแกนตั้ง
## Serial detection stuff
serial_detection-new_device-p0 = ตรวจพบอุปกรณ์ Serial ใหม่!
serial_detection-new_device-p1 = ป้อนข้อมูลการเข้าสู่ระบบ Wi-Fi ของคุณ!
serial_detection-new_device-p1 = ใส่ข้อมูลเครือข่าย Wi-Fi ของคุณ!
serial_detection-new_device-p2 = กรุณาเลือกสิ่งที่คุณต้องการทำกับอุปกรณ์
serial_detection-open_wifi = เชื่อมต่อกับ Wi-Fi
serial_detection-open_serial = เปิด Serial console
serial_detection-open_serial = เปิดหน้าคอนโซล Serial
serial_detection-submit = ยืนยัน!
serial_detection-close = ปิด
@@ -349,6 +354,7 @@ tracker-table-column-name = ชื่อ
tracker-table-column-type = ชนิด
tracker-table-column-battery = แบตเตอรี่
tracker-table-column-ping = Ping
tracker-table-column-packet_loss = สูญเสียแพ็คเก็ต
tracker-table-column-tps = TPS
tracker-table-column-temperature = อุณหภูมิ °C
tracker-table-column-linear-acceleration = ความเร่ง X/Y/Z
@@ -390,6 +396,9 @@ tracker-infos-magnetometer-status-v1 =
[ENABLED] เปิดใช้งาน
*[NOT_SUPPORTED] ไม่รองรับ
}
tracker-infos-packet_loss = สูญเสียแพ็คเก็ต
tracker-infos-packets_lost = สูญเสียแพ็คเก็ต
tracker-infos-packets_received = ได้รับแพ็คเก็ต
## Tracker settings
@@ -401,9 +410,9 @@ tracker-settings-assignment_section-edit = แก้ไขการกำหน
tracker-settings-mounting_section = ทิศทางการติดตั้ง
tracker-settings-mounting_section-description = แทร็กเกอร์นี้อยู่ด้านไหนของคุณ?
tracker-settings-mounting_section-edit = แก้ไขการติดตั้ง
tracker-settings-drift_compensation_section = เปิดใช้การชดเชยค่าดริฟท์
tracker-settings-drift_compensation_section-description = ให้แทร็กเกอร์ตัวนี้ชดเชยค่าดริฟท์เมื่อมีการเปิดใช้งานการชดเชยค่าดริฟท์หรือไม่?
tracker-settings-drift_compensation_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 =
@@ -421,13 +430,14 @@ tracker-settings-forget-description = ลบแทร็กเกอร์ออ
tracker-settings-forget-label = ลืมแทร็กเกอร์
tracker-settings-update-unavailable-v2 = ไม่พบเวอร์ชันที่เผยแพร่
tracker-settings-update-incompatible = ไม่สามารถอัปเดตได้ บอร์ดไม่รองรับ
tracker-settings-update-low-battery = ไม่สามารถอัเดตได้ แบตเตอรี่ต่ำกว่า 50%
tracker-settings-update-low-battery = ไม่สามารถอัเดตได้ แบตเตอรี่ต่ำกว่า 50%
tracker-settings-update-up_to_date = เป็นเวอร์ชันล่าสุดแล้ว
tracker-settings-update-blocked = ไม่มีอัปเดต ไม่มีเวอร์ชันอื่นให้ใช้งาน
tracker-settings-update = อัเดตทันที
tracker-settings-update = อัเดตทันที
tracker-settings-update-title = เวอร์ชันเฟิร์มแวร์
tracker-settings-current-version = ปัจจุบัน
tracker-settings-latest-version = ล่าสุด
tracker-settings-build-date = วันที่สร้าง
## Tracker part card info
@@ -465,7 +475,7 @@ tracker_selection_menu-UPPER_CHEST = { -tracker_selection-part } หน้าอ
tracker_selection_menu-CHEST = { -tracker_selection-part } อก?
tracker_selection_menu-WAIST = { -tracker_selection-part } เอว?
tracker_selection_menu-HIP = { -tracker_selection-part } สะโพก?
tracker_selection_menu-LEFT_SHOULDER = { -tracker_selection-part } หัวไหลซ้าย?
tracker_selection_menu-LEFT_SHOULDER = { -tracker_selection-part } ไหลซ้าย?
tracker_selection_menu-LEFT_UPPER_ARM = { -tracker_selection-part } แขนซ้ายส่วนบน?
tracker_selection_menu-LEFT_LOWER_ARM = { -tracker_selection-part } แขนซ้ายส่วนล่าง?
tracker_selection_menu-LEFT_HAND = { -tracker_selection-part } มือซ้าย?
@@ -503,10 +513,10 @@ settings-sidebar-osc_router = เราเตอร์ OSC
settings-sidebar-osc_trackers = แทร็กเกอร์ VRChat OSC
settings-sidebar-osc_vmc = VMC
settings-sidebar-utils = เครื่องมือ
settings-sidebar-serial = Serial Console
settings-sidebar-serial = คอนโซล Serial
settings-sidebar-appearance = รูปแบบ
settings-sidebar-home = หน้าหลัก
settings-sidebar-checklist = รายการเตรียมความพร้อมแทร็กกิ้ง
settings-sidebar-checklist = รายการเตรียมความพร้อมแทร็กเกอร์
settings-sidebar-notifications = การแจ้งเตือน
settings-sidebar-behavior = พฤติกรรมการทำงาน
settings-sidebar-firmware-tool = เครื่องมือเฟิร์มแวร์ DIY
@@ -550,7 +560,7 @@ settings-general-tracker_mechanics-filtering = การกรองข้อม
# This also cares about multilines
settings-general-tracker_mechanics-filtering-description =
เลือกประเภทการกรองสัญญาณรบกวนสำหรับแทร็กเกอร์
หากใช้การการคาดการณ์จะคาดการณ์การเคลื่อนไหว ในขณะที่การทำให้ราบรื่นจะทำให้การเคลื่อนไหวราบรื่นขึ้น
หากใช้การคาดการณ์จะคาดการณ์การเคลื่อนไหว ในขณะที่การทำให้ราบรื่นจะทำให้การเคลื่อนไหวราบรื่นขึ้น
settings-general-tracker_mechanics-filtering-type = ประเภทการกรองสัญญาณ
settings-general-tracker_mechanics-filtering-type-none = ไม่มีการกรอง
settings-general-tracker_mechanics-filtering-type-none-description = ใช้ค่าการหมุนตามจริง จะไม่มีการกรองข้อมูลใดๆ
@@ -560,49 +570,52 @@ 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 = การชดเชยค่าดริฟท์
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 = การคาดการณ์การชดเชยค่าดริฟท์
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-prediction-label = คาดการณ์การชดเชยการดริฟท์
settings-general-tracker_mechanics-drift_compensation_warning =
<b>คำเตือน:</b> ควรใช้การชดเชยดริฟท์เฉพาะในกรณีที่คุณต้องรีเซ็ต
บ่อยครั้งมากเท่านั้น (ทุก ~5-10 นาที)
IMU บางตัวที่มีแนวโน้มที่จะต้องรีเซ็ตบ่อย ได้แก่:
Joy-Cons, owoTrack, และ MPU (หากเฟิร์มแวร์ไม่ได้รับการอัเดต)
Joy-Cons, owoTrack, และ MPU (หากเฟิร์มแวร์ไม่ได้รับการอัเดต)
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 = บันทึกค่าการตั้งศูนย์การติดตั้งโดยอัตโนมัติ
settings-general-tracker_mechanics-save_mounting_reset-description =
บันทึกการตั้งศูนย์การติดตั้งแทร็กเกอร์ระหว่างการรีสตาร์ท มีประโยชน์
เมื่อสวมชุดที่แทร็กเกอร์ไม่ขยับระหว่างเซสชัน <b>ไม่แนะนำสำหรับผู้ใช้ทั่วไป!</b>
บันทึกการตั้งศูนย์การติดตั้งแทร็กเกอร์อัตโนมัติ เพื่อใช้ซ้ำเมื่อรีสตาร์ท
มีประโยชน์เมื่อสวมชุดที่ตำแหน่งแทร็กเกอร์ไม่เปลี่ยนแปลงระหว่างการใช้งาน <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 = ใช้เซ็นเซอร์สนามแม่เหล็กกับแทร็กเกอร์
settings-general-tracker_mechanics-trackers_over_usb = ต่อแทร็กเกอร์ผ่าน USB
settings-general-tracker_mechanics-trackers_over_usb-description = เปิดใช้งานการรับข้อมูลแทร็กเกอร์แบบ HID ผ่านสาย USB ตรวจสอบว่าแทร็กเกอร์ของคุณได้เปิด <b>การเชื่อมต่อผ่าน HID</b> เอาไว้!
settings-general-tracker_mechanics-trackers_over_usb-enabled-label = เปิดให้แทร็กเกอร์แบบ HID ต่อโดยตรงผ่านสาย USB
settings-stay_aligned = Stay Aligned
settings-stay_aligned-description = Stay Aligned จะลดดริฟท์โดยค่อยๆ ปรับแทร็กเกอร์ให้เข้ากับท่าทางผ่อนคลายของคุณ
settings-stay_aligned-setup-label = ตั้งค่า Stay Aligned
settings-stay_aligned-setup-description = คุณต้องทำ "ตั้งค่า Stay Aligned" ให้เสร็จสมบูรณ์เพื่อเปิดใช้งาน Stay Aligned
settings-stay_aligned-warnings-drift_compensation = ⚠ โปรดปิด การชดเชยค่าดริฟท์! เพราะมันจะขัดแย้งกับการทำงานของ Stay Aligned
settings-stay_aligned-warnings-drift_compensation = ⚠ โปรดปิด การชดเชยการดริฟท์! เพราะมันจะขัดแย้งกับการทำงานของ Stay Aligned
settings-stay_aligned-enabled-label = เปิดใช้งาน
settings-stay_aligned-hide_yaw_correction-label = ซ่อนการปรับแต่ง (เพื่อเปรียบเทียบกับแบบไม่มี Stay Aligned)
settings-stay_aligned-general-label = ทั่วไป
settings-stay_aligned-relaxed_poses-label = ท่าทางผ่อนคลาย
settings-stay_aligned-relaxed_poses-description = Stay Aligned ใช้ท่าทางผ่อนคลายของคุณเพื่อให้แทร็กเกอร์อยู่ในแนวที่ถูกต้อง ใช้ "ตั้งค่า Stay Aligned" เพื่ออัเดตท่าทางเหล่านี้
settings-stay_aligned-relaxed_poses-description = Stay Aligned ใช้ท่าทางผ่อนคลายของคุณเพื่อให้แทร็กเกอร์อยู่ในแนวที่ถูกต้อง ใช้ "ตั้งค่า Stay Aligned" เพื่ออัเดตท่าทางเหล่านี้
settings-stay_aligned-relaxed_poses-standing = ปรับแทร็กเกอร์ขณะยืน
settings-stay_aligned-relaxed_poses-sitting = ปรับแทร็กเกอร์ขณะนั่งเก้าอี้
settings-stay_aligned-relaxed_poses-flat = ปรับแทร็กเกอร์ขณะนั่งบนพื้น หรือนอนหงาย
@@ -628,10 +641,10 @@ settings-general-fk_settings-leg_tweak-skating_correction = การแก้
settings-general-fk_settings-leg_tweak-toe_snap = เดาการหมุนเท้า
settings-general-fk_settings-leg_tweak-foot_plant = ปรับสมดุลเท้า
settings-general-fk_settings-leg_tweak-skating_correction-amount = ปริมาณการแก้ไขการไถล
settings-general-fk_settings-leg_tweak-skating_correction-description = การแก้ไขการไถล จะแก้ไขปัญหาที่เท้าสไลด์เหมือนเล่นสเก็ตน้ำแข็ง แต่สามารถลดความแม่นยำในการเคลื่อนไหวบางรูปแบบ เมื่อเปิดใช้งานแล้วต้องทำการรีเซ็ตแทร็กเกอร์ทั้งหมด แล้วตั้งศูนย์หรือปรับเทียบใหม่ในเกม
settings-general-fk_settings-leg_tweak-floor_clip-description = การลอกระดับพื้นสามารถลดหรือกำจัดการทะลุผ่านพื้นได้ เมื่อเปิดใช้งานแล้วต้องทำการรีเซ็ตแทร็กเกอร์ทั้งหมด แล้วตั้งศูนย์หรือปรับเทียบใหม่ในเกม
settings-general-fk_settings-leg_tweak-skating_correction-description = การแก้ไขการไถล จะแก้ไขปัญหาที่เท้าสไลด์เหมือนเล่นสเก็ตน้ำแข็ง แต่สามารถลดความแม่นยำในการเคลื่อนไหวบางรูปแบบ เมื่อเปิดใช้งานแล้วต้องทำการรีเซ็ตทั้งหมด แล้วตั้งศูนย์หรือปรับเทียบใหม่ในเกม
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_tweak-foot_plant-description = การปรับสมดุลเท้า จะหมุนเท้าให้ขนานกับพื้นเมื่อมีการสัมผัสพื้น
settings-general-fk_settings-leg_fk = การจับตำแหน่งขา
settings-general-fk_settings-leg_fk-reset_mounting_feet-description-v1 = บังคับรีเซ็ตการติดตั้งเท้าในระหว่างการรีเซ็ตการติดตั้งทั่วไป
settings-general-fk_settings-leg_fk-reset_mounting_feet-v1 = บังคับรีเซ็ตการติดตั้งเท้า
@@ -642,20 +655,20 @@ settings-general-fk_settings-enforce_joint_constraints-correct_constraints = แ
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = แก้ไขการหมุนของข้อต่อเมื่อมีการหมุนเกินขีดจำกัด
settings-general-fk_settings-ik = ข้อมูลตำแหน่ง
settings-general-fk_settings-ik-use_position = ใช้ข้อมูลตำแหน่ง
settings-general-fk_settings-ik-use_position-description = เปิดใช้งานการใช้ข้อมูลตำแหน่งจากแทร็กเกอร์ที่รองรับ เมื่อเปิดใช้งานแล้วโปรดทำการรีเซ็ตแทร็กเกอร์ทั้งหมด แล้วตั้งศูนย์หรือปรับเทียบใหม่ในเกม
settings-general-fk_settings-ik-use_position-description = เปิดใช้งานการใช้ข้อมูลตำแหน่งจากแทร็กเกอร์ที่รองรับ เมื่อเปิดใช้งานแล้วโปรดทำการรีเซ็ตทั้งหมด แล้วตั้งศูนย์หรือปรับเทียบใหม่ในเกม
settings-general-fk_settings-arm_fk = การจับตำแหน่งแขน
settings-general-fk_settings-arm_fk-description = บังคับให้ใช้ตำแหน่งแขนจากแว่น VR แม้ว่าจะมีข้อมูลตำแหน่งมืออยู่ก็ตาม
settings-general-fk_settings-arm_fk-description = บังคับให้ติดตามแขนจากเฮดเซ็ต (HMD) แม้ว่าจะมีข้อมูลตำแหน่งมืออยู่ก็ตาม
settings-general-fk_settings-arm_fk-force_arms = บังคับใช้ตำแหน่งแขนจากแว่น
settings-general-fk_settings-reset_settings = ตั้งค่าการรีเซ็ต
settings-general-fk_settings-reset_settings-reset_hmd_pitch-description = รีเซ็ตความเอียง (การหมุนก้มหรือเงย) ของ HMD เมื่อทำการรีเซ็ตแทร็กเกอร์ทั้งหมด มีประโยชน์หากสวม HMD ไว้ที่หน้าผากสำหรับ VTubing หรือ MoCap ไม่ควรเปิดใช้งานสำหรับการใช้งาน VR ทั่วไป
settings-general-fk_settings-reset_settings-reset_hmd_pitch-description = รีเซ็ตความเอียง (การหมุนก้มหรือเงย) ของ HMD เมื่อทำการรีเซ็ตทั้งหมด มีประโยชน์หากสวม HMD ไว้ที่หน้าผากสำหรับ VTubing หรือ MoCap ไม่ควรเปิดใช้งานสำหรับการใช้งาน VR ทั่วไป
settings-general-fk_settings-reset_settings-reset_hmd_pitch = รีเซ็ตความเอียงของ HMD
settings-general-fk_settings-arm_fk-reset_mode-description = เปลี่ยนท่าทางแขนที่ใช้สำหรับการรีเซ็ตตั้งศูนย์การติดตั้ง
settings-general-fk_settings-arm_fk-back = ยื่นไปด้านหลัง
settings-general-fk_settings-arm_fk-back-description = โหมดค่าเริ่มต้น โดยแขนท่อนบนจะเอียงไปด้านหลัง และแขนท่อนล่างจะชี้ไปด้านหน้า
settings-general-fk_settings-arm_fk-tpose_up = ที-โพส (แขนขึ้น)
settings-general-fk_settings-arm_fk-tpose_up-description = กำหนดให้แขนแนบลำตัวระหว่างการรีเซ็ตแทร็กเกอร์ทั้งหมด และเหยียดออกด้านข้าง 90 องศา ระหว่างการรีเซ็ตตั้งศูนย์การติดตั้ง
settings-general-fk_settings-arm_fk-tpose_up-description = กำหนดให้แขนแนบลำตัวระหว่างการรีเซ็ตทั้งหมด และเหยียดออกด้านข้าง 90 องศา ระหว่างการรีเซ็ตตั้งศูนย์การติดตั้ง
settings-general-fk_settings-arm_fk-tpose_down = ที-โพส (แขนลง)
settings-general-fk_settings-arm_fk-tpose_down-description = กำหนดให้แขนเหยียดออกด้านข้าง 90 องศา ระหว่างการรีเซ็ตแทร็กเกอร์ทั้งหมดและแนบลำตัว ระหว่างการรีเซ็ตตั้งศูนย์การติดตั้ง
settings-general-fk_settings-arm_fk-tpose_down-description = กำหนดให้แขนเหยียดออกด้านข้าง 90 องศา ระหว่างการรีเซ็ตทั้งหมดและแนบลำตัว ระหว่างการรีเซ็ตตั้งศูนย์การติดตั้ง
settings-general-fk_settings-arm_fk-forward = ไปข้างหน้า
settings-general-fk_settings-arm_fk-forward-description = กำหนดให้แขนยกไปด้านหน้าทำมุม 90 องศา มีประโยชน์สำหรับงาน VTubing
settings-general-fk_settings-skeleton_settings-toggles = ตัวเลือกโครงกระดูก
@@ -670,7 +683,7 @@ settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_legs =
settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs = คำนวณตำแหน่งสะโพกจากอกและขา
settings-general-fk_settings-skeleton_settings-impute_hip_from_waist_legs = คำนวณตำแหน่งสะโพกจากเอวและขา
settings-general-fk_settings-skeleton_settings-interp_hip_legs = เฉลี่ยค่าแกนตั้งและแกนยาวของสะโพกร่วมกับขา
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = เฉลี่ยค่าแกนตั้งและแกนยาวของตัวแทร็กเกอร์เข่าร่วมกับข้อเท้า
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 ช่วยให้โมเดลโครงกระดูกสามารถติดตามตำแหน่งโดยประมาณได้ โดยไม่ต้องใช้อุปกรณ์เฮดเซต (แว่น VR ) หรือแทร็กเกอร์อื่น ๆ โปรดทราบว่าฟังก์ชันนี้ต้องใช้แทร็กเกอร์ที่เท้าและศีรษะจึงจะทำงานได้ และยังอยู่ในช่วงทดลอง
@@ -679,7 +692,7 @@ settings-general-fk_settings-self_localization-description = โหมด Mocap
settings-general-gesture_control = การควบคุมด้วยท่าทาง
settings-general-gesture_control-subtitle = การรีเซ็ตด้วยการแตะ
settings-general-gesture_control-description = เปิดใช้การรีเซ็ตด้วยการแตะแทร็กเกอร์ แทร็กเกอร์ที่อยู่สูงที่สุดบนลำตัวจะใช้สำหรับการรีเซ็ตแกนตั้ง แทร็กเกอร์ที่อยู่สูงที่สุดบนขาซ้ายใช้สำหรับรีเซ็ตแทร็กเกอร์ทั้งหมด และแทร็กเกอร์ที่อยู่สูงที่สุดบนขาขวาใช้สำหรับรีเซ็ตตั้งศูนย์การติดตั้ง โดยการแตะจะต้องเกิดขึ้นภายในเวลา 0.3 วินาทีคูณด้วยจำนวนครั้งของการแตะเพื่อให้ระบบรับรู้
settings-general-gesture_control-description = เปิดใช้การรีเซ็ตด้วยการแตะแทร็กเกอร์ แทร็กเกอร์ที่อยู่สูงที่สุดบนลำตัวจะใช้สำหรับการรีเซ็ตแกนตั้ง แทร็กเกอร์ที่อยู่สูงที่สุดบนขาซ้ายใช้สำหรับรีเซ็ตทั้งหมด และแทร็กเกอร์ที่อยู่สูงที่สุดบนขาขวาใช้สำหรับรีเซ็ตตั้งศูนย์การติดตั้ง โดยการแตะจะต้องเกิดขึ้นภายในเวลา 0.3 วินาทีคูณด้วยจำนวนครั้งของการแตะเพื่อให้ระบบรับรู้
# 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 = { $amount } ครั้ง
@@ -689,7 +702,7 @@ settings-general-gesture_control-trackers = { $amount } ตัว
settings-general-gesture_control-yawResetEnabled = ใช้การแตะเพื่อรีเซ็ตแกนตั้ง
settings-general-gesture_control-yawResetDelay = เวลาหน่วงก่อนรีเซ็ตแกนตั้ง
settings-general-gesture_control-yawResetTaps = แตะเพื่อรีเซ็ตแกนตั้ง
settings-general-gesture_control-fullResetEnabled = ใช้การแตะเพื่อรีเซ็ตแทร็กเกอร์ทั้งหมด
settings-general-gesture_control-fullResetEnabled = ใช้การแตะเพื่อรีเซ็ตทั้งหมด
settings-general-gesture_control-fullResetDelay = เวลาหน่วงก่อนรีเซ็ตทั้งหมด
settings-general-gesture_control-fullResetTaps = แตะเพื่อรีเซ็ตทั้งหมด
settings-general-gesture_control-mountingResetEnabled = ใช้การแตะเพื่อรีเซ็ตการตั้งศูนย์การติดตั้ง
@@ -729,7 +742,7 @@ settings-interface-appearance-decorations-label = ใช้แถบด้าน
settings-interface-notifications = การแจ้งเตือน
settings-general-interface-serial_detection = การตรวจจับอุปกรณ์ Serial
settings-general-interface-serial_detection-description = ตัวเลือกนี้จะแสดงหน้าต่างป๊อปอัพทุกครั้งที่คุณเสียบอุปกรณ์ Serial ใหม่ที่อาจเป็นแทร็กเกอร์ ช่วยลดขั้นตอนการตั้งค่าแทร็กเกอร์
settings-general-interface-serial_detection-label = ใช้การตรวจจับอุปกรณ์ซีเรียล
settings-general-interface-serial_detection-label = ใช้การตรวจจับอุปกรณ์ Serial
settings-general-interface-feedback_sound = การแจ้งเตือนด้วยเสียง
settings-general-interface-feedback_sound-description = ตัวเลือกนี้จะเล่นเสียงเมื่อมีการใช้การรีเซ็ต
settings-general-interface-feedback_sound-label = แจ้งเตือนด้วยเสียง
@@ -766,7 +779,7 @@ settings-interface-behavior-bvh_directory-label = ไดเร็กทอรี
## Serial settings
settings-serial = Serial Console
settings-serial = คอนโซล Serial
# This cares about multilines
settings-serial-description =
นี่คือฟีดข้อมูลสดสำหรับการสื่อสารแบบ Serial
@@ -823,7 +836,7 @@ settings-osc-vrchat = แทร็กเกอร์ OSC VRChat
# This cares about multilines
settings-osc-vrchat-description-v1 =
เปลี่ยนการตั้งค่าเฉพาะสำหรับมาตรฐานแทร็กเกอร์ OSC ที่ใช้ในการส่งข้อมูลการติดตาม
ไปยังแอปพลิเคชันที่ไม่ได้ใช้ SteamVR (เช่นอุปกรณ์ VR แบบเดี่ยว)
ไปยังแอปพลิเคชันที่ไม่ได้ใช้ SteamVR (เช่น เฮดเซ็ท VR แบบ Standalone )
ตรวจสอบให้แน่ใจว่าได้เปิดใช้งาน OSC ใน VRChat ผ่านเมนู Action Menu แล้วไปที่ ตัวเลือก>OSC > เปิดใช้งาน
settings-osc-vrchat-enable = เปิดใช้งาน
settings-osc-vrchat-enable-description = เปิดการรับและส่งข้อมูล
@@ -832,7 +845,7 @@ settings-osc-vrchat-oscqueryEnabled = เปิดใช้งาน OSCQuery
settings-osc-vrchat-oscqueryEnabled-description =
OSCQuery จะตรวจจับอินสแตนซ์ของ VRChat ที่กำลังทำงานโดยอัตโนมัติ และส่งข้อมูลไปให้
และยังสามารถประกาศตัวเองเพื่อให้ได้รับข้อมูลจาก HMD และของคอนโทรเลอร์จาก VRChat ได้อีกด้วย
หากต้องการอนุญาตให้รับข้อมูล HMD และตัวควบคุมจาก VRChat ให้ไปที่การตั้งค่าเมนูหลัก ใต้ "การติดตาม & IK" และเปิดใช้งาน "อนุญาตให้ส่งข้อมูลการติดตามศีษะและข้อมือ VR ผ่าน OSC"
หากต้องการอนุญาตให้รับข้อมูล HMD และตัวควบคุมจาก VRChat ให้ไปที่การตั้งค่าเมนูหลัก ใต้ "การติดตาม & IK" และเปิดใช้งาน "อนุญาตให้ส่งข้อมูลการติดตามศีษะและข้อมือ VR ผ่าน OSC"
settings-osc-vrchat-oscqueryEnabled-label = เปิดใช้งาน OSCQuery
settings-osc-vrchat-network = พอร์ตเครือข่าย
settings-osc-vrchat-network-description-v1 = ตั้งค่าพอร์ตสำหรับการรับฟังและการส่งข้อมูล สามารถปล่อยว่างไว้สำหรับ VRChat
@@ -872,18 +885,18 @@ settings-osc-vmc-network-port_out =
.label = พอร์ตขาออก
.placeholder = พอร์ตขาออก (ค่าเริ่มต้น: 39539)
settings-osc-vmc-network-address = ที่อยู่เครือข่าย
settings-osc-vmc-network-address-description = เลือกที่อยู่เครือข่ายที่จะส่งข้อมูลผ่าน VMC
settings-osc-vmc-network-address-description = เลือกที่อยู่เครือข่ายที่จะส่งข้อมูลผ่าน VMC
settings-osc-vmc-network-address-placeholder = ที่อยู่ IPV4
settings-osc-vmc-vrm = โมเดล VRM
settings-osc-vmc-vrm-description = โหลดโมเดล VRM เพื่อเปิดใช้งานการยึดศีรษะและเพิ่มความเข้ากันได้กับแอปพลิเคชันอื่น
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 = ตรึงการติดตามตำแหน่งไว้ที่สะโพก มีประโยชน์สำหรับการทำ VTubing ขณะนั่ง
settings-osc-vmc-anchor_hip-label = ตรึงตำแหน่งสะโพก
settings-osc-vmc-anchor_hip = ยึดตำแหน่งที่สะโพก
settings-osc-vmc-anchor_hip-description = ยึดการติดตามที่สะโพก มีประโยชน์สำหรับการทำ VTubing ในขณะนั่ง หากปิดใช้งาน ให้โหลดโมเดล VRM
settings-osc-vmc-anchor_hip-label = ยึดแหน่งที่สะโพก
settings-osc-vmc-mirror_tracking = สะท้อนตำแหน่งการติดตาม
settings-osc-vmc-mirror_tracking-description = สะท้อนการติดตามในแนวนอน
settings-osc-vmc-mirror_tracking-label = สะท้อนการติดตาม
settings-osc-vmc-mirror_tracking-label = สะท้อนตำแหน่งการติดตาม
## Common OSC settings
@@ -896,25 +909,25 @@ settings-utils-advanced = ขั้นสูง
settings-utils-advanced-reset-gui = รีเซ็ตตั้งค่า GUI
settings-utils-advanced-reset-gui-description = คืนค่าการตั้งค่าเริ่มต้นสำหรับอินเทอร์เฟซ
settings-utils-advanced-reset-gui-label = รีเซ็ต GUI
settings-utils-advanced-reset-server = รีเซ็ตตั้งค่าการแทร็กกิ้ง
settings-utils-advanced-reset-server-description = คืนค่าการจับตำแหน่งทั้งหมดเป็นค่าเริ่มต้น
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>การดำเนินการนี้จะรีเซ็ตการตั้งค่า GUI เป็นค่าเริ่มต้น คุณแน่ใจที่จะดำเนินการต่อไหม?
[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-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-description = เปิดโฟลเดอร์บันทึกไฟล์ของ SlimeVR โดยภายในจะมีไฟล์บันทึกการทำงานของแอป
settings-utils-advanced-open_logs-label = เปิดโฟลเดอร์
## Home Screen
@@ -933,22 +946,24 @@ settings-tracking_checklist-active_steps-desc = รายการขั้น
onboarding-skip = ข้ามการตั้งค่า
onboarding-continue = ดำเนินการต่อ
onboarding-wip = อยู่ในระหว่างการดำเนินการ
onboarding-wip = ยังไม่พร้อมใช้งาน
onboarding-previous_step = ขั้นตอนก่อนหน้า
onboarding-setup_warning =
<b>คำเตือน:</b> การตั้งค่าเริ่มต้นนี้จำเป็นสำหรับการจับตำแหน่งที่ดี
จำเป็นต้องดำเนินกาหากนี่เป็นครั้งแรกที่คุณใช้ SlimeVR
จำเป็นต้องดำเนินกาหากนี่เป็นครั้งแรกที่คุณใช้ SlimeVR
onboarding-setup_warning-skip = ข้ามการตั้งค่า
onboarding-setup_warning-cancel = ดำเนินการตั้งค่าต่อ
## Wi-Fi setup
onboarding-wifi_creds-back = กลับไปที่หน้าบทนำ
onboarding-wifi_creds = ป้อนข้อมูลประจำตัว Wi-Fi
onboarding-wifi_creds-v2 = แทร็กเกอร์ที่ใช้ Wi-Fi
# This cares about multilines
onboarding-wifi_creds-description =
แทร็กเกอร์จะใช้ข้อมูลประจำตัวเหล่านี้ในการเชื่อมต่อแบบไร้สาย
โปรดใช้ข้อมูลประจำตัวที่คุณกำลังเชื่อมต่ออยู่ในปัจจุบัน
onboarding-wifi_creds-description-v2 =
แทร็กเกอร์ส่วนใหญ่ (เช่นแทร็กเกอร์ทางการของ SlimeVR ) ใช้ Wi-Fi เพื่อเชื่อมต่อกับเซิร์ฟเวอร์
โปรดใช้ข้อมูลเครือข่าย Wi-Fi ที่อุปกรณ์ของคุณกำลังเชื่อมต่ออยู่
และตรวจสอบให้แน่ใจว่าคุณใช้การเชื่อมต่อ Wi-Fi เป็นคลื่น 2.4GHz กับแทร็กเกอร์นี้
onboarding-wifi_creds-skip = ข้ามการตั้งค่า Wi-Fi
onboarding-wifi_creds-submit = ยืนยัน!
onboarding-wifi_creds-ssid =
@@ -958,29 +973,33 @@ onboarding-wifi_creds-ssid-required = ต้องระบุชื่อ Wi-Fi
onboarding-wifi_creds-password =
.label = รหัสผ่าน
.placeholder = ป้อนรหัสผ่าน
onboarding-wifi_creds-dongle-title = แทร็กเกอร์ที่ใช้ดองเกิล
onboarding-wifi_creds-dongle-description = หากแทร็กเกอร์ของคุณมาพร้อมกับดองเกิล ให้เสียบมันเข้ากับอุปกรณ์ของคุณ แล้วก็สามารถเริ่มต้นใช้งานได้เลย!
onboarding-wifi_creds-dongle-wip = ส่วนนี้กำลังอยู่ระหว่างการพัฒนา เป็นหน้าสำหรับจัดการแทร็กเกอรืที่เชื่อมต่อผ่านดองเกิลที่กำลังจะถูกทำขึ้นมาเร็วๆ นี้
onboarding-wifi_creds-dongle-continue = ดำเนินการต่อด้วยดองเกิล
## Mounting setup
onboarding-reset_tutorial-back = กลับไปยังการตั้งศูนย์การติดตั้งแทร็กเกอร์
onboarding-reset_tutorial = บทช่วยสอนการรีเซ็ต
onboarding-reset_tutorial-explanation = ขณะใช้งานแทร็กเกอร์ของคุณอาจคลาดเคลื่อนเนื่องจากการดริฟท์ของแกนตั้งของ IMU หรือจากการเคลื่อนที่ทางกายภาพของตัวแทร็กเกอร์เอง คุณมีวิธีการแก้ไขหลายวิธี
onboarding-reset_tutorial-explanation = ขณะที่คุณใช้แทร็กเกอร์ มันอาจเกิดการคลาดเคลื่อนขึ้นได้เนื่องจากการดริฟท์ของ IMU หรือจากการที่แทร็กเกอร์บนตัวคุณนั้นขยับออกจากตำแหน่ง คุณมีหลายวิธีในการแก้ไขปัญหานี้
onboarding-reset_tutorial-skip = ข้ามขั้นตอนนี้
# Cares about multiline
onboarding-reset_tutorial-0 =
แตะแทร็กเกอร์ที่ถูกเน้น { $taps } ครั้ง ในการรีเซ็ตแกนตั้ง
นี่จะทำให้แทร็กเกอร์หันไปด้านเดียวกับแว่น VR ของคุณ
แตะแทร็กเกอร์ที่ไฮไลท์ { $taps } ครั้ง เพื่อเรียกใช้การรีเซ็ตแกนตั้ง
นี่จะทำให้แทร็กเกอร์หันไปในทิศทางเดียวกับเฮดเซ็ท (HMD) ของคุณ
# Cares about multiline
onboarding-reset_tutorial-1 =
แตะแทร็กเกอร์ที่ถูกเน้น { $taps } ครั้ง ในการรีเซ็ตแทรกเกอร์ทั้งหมด
คุณจำเป็นจะต้องยืนตรง แขนแนบลำตัวในการรีเซ็ตนี้(i-pose) จะมีดีเลย์ 3 วินาที (สามารถปรับได้) ก่อนจะเริ่มการรีเซ็ต
นี่จะรีเซ็ตตำแหน่งและค่าหมุนของแทร็กเกอร์ทั้งหมดกลับมาที่เดิม ซึ่งช่วยแก้ปัญหาส่วนใหญ่ได้
แตะแทร็กเกอร์ที่ไฮไลท์ { $taps } ครั้ง เพื่อเรียกใช้การรีเซ็ตทั้งหมด
คุณจำเป็นจะต้องยืนตรง แขนแนบลำตัว(i-pose) จะนับถอยหลัง 3 วินาที (สามารถปรับได้) ก่อนที่การรีเซ็ตจะเกิดขึ้น
นี่จะรีเซ็ตตำแหน่งและการหมุนของแทร็กเกอร์ทั้งหมดของคุณ ซึ่งช่วยแก้ปัญหาส่วนใหญ่ได้
# Cares about multiline
onboarding-reset_tutorial-2 =
แตะไปยังแทร็กเกอร์ที่ถูกเน้น { $taps } ครั้ง เพื่อทำการรีเซ็ตตำแหน่งแทร็กเกอร์
แตะแทร็กเกอร์ที่ไฮไลท์ { $taps } ครั้ง เพื่อเรียกใช้การตั้งศูนย์การติดตั้ง
รีเซ็ตตำแหน่งนั้นช่วยปรับตำแหน่งที่แทร็กเกอร์ถูกวางบนตัวคุณจริงๆ ดังนั้นหากคุณเผลอเคลื่อนย้ายแทร็กเกอร์และเปลี่ยนทิศทางของมันไปมาก สิ่งนี้จะช่วยแก้ไขได้
การตั้งศูนย์การติดตั้งจะปรับแก้ตามวิธีการวางแทร็กเกอร์บนร่างกายของคุณ นี่จะช่วยคุณได้มากหากคุณเผลอเคลื่อนย้ายหรือเปลี่ยนทิศทางของแทร็กเกอร์จนมากเกินไป
คุณต้องอยู่ในท่าเหมือนกำลังเล่นสกีตามที่แสดงในตัวช่วยการติดตั้งอัตโนมัติ โดยจะนับถอยหลังใน 3 วิาที (สามารถกำหนดได้) ก่อนจะทำการรีเซ็ต
คุณต้องอยู่ในท่าเล่นสกีตามที่แสดงในตัวช่วยตั้งค่า โดยจะนับถอยหลังใน 3 วิาที (สามารถกำหนดได้) ก่อนที่การรีเซ็ตจะเกิดขึ้น
## Setup start
@@ -995,25 +1014,25 @@ onboarding-done-close = ปิดการตั้งค่า
## Tracker connection setup
onboarding-connect_tracker-back = กลับไปหน้าข้อมูล Wi-Fi
onboarding-connect_tracker-back = กลับไปหน้าข้อมูลเครือข่าย Wi-Fi
onboarding-connect_tracker-title = เชื่อมต่อแทร็กเกอร์
onboarding-connect_tracker-description-p0-v1 = มาถึงส่วนที่สนุกแล้ว การเชื่อมต่อแทร็กเกอร์!
onboarding-connect_tracker-description-p0-v1 = มาถึงส่วนที่น่าสนใจแล้ว คือการเชื่อมต่อแทร็กเกอร์!
onboarding-connect_tracker-description-p1-v1 = เชื่อมต่อแทร็กเกอร์ทีละตัวผ่านพอร์ต USB
onboarding-connect_tracker-issue-serial = ฉันมีปัญหาในการเชื่อมต่อ!
onboarding-connect_tracker-usb = USB แทร็กเกอร์
onboarding-connect_tracker-connection_status-none = กำลังมองหาแทร็กเกอร์...
onboarding-connect_tracker-connection_status-none = กำลังค้นหาแทร็กเกอร์
onboarding-connect_tracker-connection_status-serial_init = กำลังเชื่อมต่อกับอุปกรณ์ Serial
onboarding-connect_tracker-connection_status-obtaining_mac_address = กำลังรับ MAC address ของแทร็กเกอร์
onboarding-connect_tracker-connection_status-provisioning = กำลังส่งข้อมูล Wi-Fi
onboarding-connect_tracker-connection_status-provisioning = กำลังส่งข้อมูลเครือข่าย Wi-Fi
onboarding-connect_tracker-connection_status-connecting = กำลังพยายามเชื่อมต่อ Wi-Fi
onboarding-connect_tracker-connection_status-looking_for_server = กำลังหาเซิร์ฟเวอร์
onboarding-connect_tracker-connection_status-connection_error = ไม่สามารถเชื่อมต่อกับ Wi-Fi
onboarding-connect_tracker-connection_status-could_not_find_server = ไม่พบเซิร์ฟเวอร์
onboarding-connect_tracker-connection_status-done = เชื่อมต่อกับเซิร์ฟเวอร์แล้ว
onboarding-connect_tracker-connection_status-no_serial_log = ไม่สามารถรับบันทึกจากแทร็กเกอร์ได้
onboarding-connect_tracker-connection_status-no_serial_device_found = ไม่สามารถหาแทร็กเกอร์จาก USB
onboarding-connect_tracker-connection_status-no_serial_device_found = ไม่พบแทร็กเกอร์จาก USB
onboarding-connect_serial-error-modal-no_serial_log = แทร็กเกอร์คุณเปิดอยู่หรือเปล่า?
onboarding-connect_serial-error-modal-no_serial_log-desc = ตรวจสอบให้แน่ใจว่าแทร็กเกอร์นั้นเปิดอยู่และเชื่อมต่อกับคอมพิวเตอร์ของคุณ
onboarding-connect_serial-error-modal-no_serial_log-desc = ตรวจสอบให้แน่ใจว่าแทร็กเกอร์เปิดอยู่และเชื่อมต่อกับคอมพิวเตอร์ของคุณ
onboarding-connect_serial-error-modal-no_serial_device_found = ไม่พบแทร็กเกอร์
onboarding-connect_serial-error-modal-no_serial_device_found-desc =
โปรดเชื่อมต่อแทร็กเกอร์ด้วยสาย USB เข้ากับคอมพิวเตอร์ของคุณและเปิดแทร็กเกอร์
@@ -1036,8 +1055,8 @@ onboarding-connect_tracker-next = ฉันเชื่อมต่อแทร
## Tracker calibration tutorial
onboarding-calibration_tutorial = บทเรียนการตั้งศูนย์ IMU
onboarding-calibration_tutorial-subtitle = นี่จะช่วยลดค่าดริฟท์ของแทร็กเกอร์!
onboarding-calibration_tutorial-description-v1 = หลังจากเปิดแทร็กเกอร์แล้ว ให้วางไว้บนพื้นผิวที่มั่นคงสักครู่เพื่อทำการตั้งศูนย์ การตั้งศูนย์ IMU สามารถทำได้ตลอดเวลาหลังจากเปิดแทร็กเกอร์—หน้าจอนี้เพียงแค่ให้บทช่วยสอน หากต้องการเริ่ม ให้คลิกปุ่ม "{ onboarding-calibration_tutorial-calibrate }" จากนั้น <b>อย่าขยับแทร็กเกอร์ของคุณ!</b>
onboarding-calibration_tutorial-subtitle = นี่จะช่วยลดการดริฟท์ของแทร็กเกอร์!
onboarding-calibration_tutorial-description-v1 = หลังจากเปิดแทร็กเกอร์แล้ว ให้วางไว้บนพื้นที่เรียบนิ่งๆสักครู่เพื่อทำการตั้งศูนย์ การตั้งศูนย์ IMU สามารถทำได้ตลอดเวลาหลังจากเปิดแทร็กเกอร์—หน้าจอนี้เพียงแค่ให้บทช่วยสอน หากต้องการเริ่ม ให้คลิกปุ่ม "{ onboarding-calibration_tutorial-calibrate }" จากนั้น <b>อย่าขยับแทร็กเกอร์ของคุณ!</b>
onboarding-calibration_tutorial-calibrate = ฉันวางแทร็กเกอร์บนโต๊ะแล้ว
onboarding-calibration_tutorial-status-waiting = กำลังรอคุณอยู่
onboarding-calibration_tutorial-status-calibrating = กำลังตั้งศูนย์
@@ -1048,7 +1067,7 @@ onboarding-calibration_tutorial-skip = ข้ามบทช่วยสอน
## Tracker assignment tutorial
onboarding-assignment_tutorial = วิธีเตรียมแทร็กเกอร์ Slime ก่อนสวมใส่
onboarding-assignment_tutorial-first_step = 1. ติดสติกเกอร์ส่วนของร่างกาย (หากคุณมี) บนแทร็กเกอร์ตามที่คุณเลือก
onboarding-assignment_tutorial-first_step = 1. ติดสติกเกอร์บอกส่วนของร่างกาย (หากคุณมี) บนแทร็กเกอร์ตามที่คุณเลือก
# This text has a character limit of around 11 characters, so please keep it short
onboarding-assignment_tutorial-sticker = สติกเกอร์
onboarding-assignment_tutorial-second_step-v2 = 2. ติดสายรัดเข้ากับแทร็กเกอร์ของคุณ โดยให้ด้านหนามเตยของสายรัดหันไปในทิศทางเดียวกับหน้าของแทร็กเกอร์:
@@ -1057,17 +1076,17 @@ onboarding-assignment_tutorial-done = ฉันแปะสติกเกอร
## Tracker assignment setup
onboarding-assign_trackers-back = กลับไปยังการตั้งค่า Wi-Fi
onboarding-assign_trackers-back = กลับไปยังการตั้งค่าข้อมูลเครือข่าย Wi-Fi
onboarding-assign_trackers-title = กำหนดตำแหน่งแทร็กเกอร์
onboarding-assign_trackers-description = มาเลือกกันเลยว่าแทร็กเกอร์ไหนจะไปอยู่ตรงไหน คลิกที่ตำแหน่งที่คุณต้องการกำหนดแทร็กเกอร์
onboarding-assign_trackers-description = มาเลือกกันเลยว่าแทร็กเกอร์ไหนจะไปอยู่ตรงไหน คลิกที่ตำแหน่งที่คุณต้องการกำหนดแทร็กเกอร์ได้เลย
onboarding-assign_trackers-unassign_all = ยกเลิกการกำหนดแทร็กเกอร์ทั้งหมด
# Look at translation of onboarding-connect_tracker-connected_trackers on how to use plurals
# $assigned (Number) - Trackers that have been assigned a body part
# $trackers (Number) - Trackers connected to the server
onboarding-assign_trackers-assigned = แทร็กเกอร์ { $assigned } จาก { $trackers } ตัว ได้ถูกกำหนดตำแหน่งแล้ว
onboarding-assign_trackers-advanced = แสดงตำแหน่งที่กำหนดได้เพิ่มเติม
onboarding-assign_trackers-next = ฉันได้กำหนดตำแหน่งหมดแล้ว
onboarding-assign_trackers-mirror_view = สะท้อนด้านตำแหน่ง
onboarding-assign_trackers-next = ฉันกำหนดแทร็กเกอร์ทั้งหมดแล้ว
onboarding-assign_trackers-mirror_view = มุมมองภาพสะท้อน
onboarding-assign_trackers-option-amount = x{ $trackersCount }
onboarding-assign_trackers-option-label =
{ $mode ->
@@ -1095,7 +1114,7 @@ onboarding-assign_trackers-warning-LEFT_FOOT =
[0] กำหนดตำแหน่งเท้าซ้ายแล้ว แต่ยังต้องกำหนดข้อเท้าซ้าย, ต้นขาซ้าย และส่วนใดส่วนหนึ่งระหว่าง อก, สะโพก หรือ เอว เพิ่มเติมด้วย!
[1] กำหนดตำแหน่งเท้าซ้ายแล้ว แต่ยังต้องกำหนดต้นขาซ้าย และส่วนใดส่วนหนึ่งระหว่าง อก, สะโพก หรือ เอว เพิ่มเติมด้วย!
[2] กำหนดตำแหน่งเท้าซ้ายแล้ว แต่ยังต้องกำหนดข้อเท้าซ้าย และส่วนใดส่วนหนึ่งระหว่าง อก, สะโพก หรือ เอว เพิ่มเติมด้วย!
[3] เท้าซ้าย ถูกกำหนดแล้ว แต่คุณต้องกำหนด และส่วนใดส่วนหนึ่งระหว่าง อก สะโพก หรือ เอว ด้วย
[3] เท้าซ้าย ถูกกำหนดแล้ว แต่คุณต้องกำหนด และส่วนใดส่วนหนึ่งระหว่าง อก, สะโพก หรือ เอว ด้วย
[4] กำหนดตำแหน่งเท้าซ้ายแล้ว แต่ยังต้องกำหนดส่วนใดส่วนหนึ่งระหว่าง อก, สะโพก หรือ เอว เพิ่มเติมด้วย!
[5] กำหนดตำแหน่งเท้าซ้ายแล้ว แต่ยังต้องกำหนดต้นขาซ้ายเพิ่มเติมด้วย!
[6] กำหนดตำแหน่งเท้าซ้ายแล้ว แต่ยังต้องกำหนดข้อเท้าซ้ายเพิ่มเติมด้วย!
@@ -1158,21 +1177,21 @@ onboarding-assign_trackers-warning-WAIST =
onboarding-choose_mounting = ต้องการใช้วิธีการตั้งศูนย์การติดตั้งแบบใด?
# Multiline text
onboarding-choose_mounting-description = การตั้งศูนย์การติดตั้งจะแก้ไขการวางแนวของแทร็กเกอร์บนร่างกายของคุณ
onboarding-choose_mounting-description = การตั้งศูนย์การติดตั้งจะแก้ไขทิศทางการติดตั้งของแทร็กเกอร์บนร่างกายของคุณ
onboarding-choose_mounting-auto_mounting = ตั้งศูนย์การติดตั้งอัตโนมัติ
# Italicized text
onboarding-choose_mounting-auto_mounting-label-v2 = แนะนำ
onboarding-choose_mounting-auto_mounting-description = ะบบจะตรวจจับการวางแนวการติดตั้งของแทร็กเกอร์ทั้งหมดของคุณโดยอัตโนมัติ จากท่าทาง 2 ท่า
onboarding-choose_mounting-auto_mounting-description = ะบบจะตรวจจับทิศทางการติดตั้งของแทร็กเกอร์ทั้งหมดของคุณโดยอัตโนมัติ จากท่าทาง 2 ท่า
onboarding-choose_mounting-manual_mounting = ตั้งศูนย์การติดตั้งด้วยตัวเอง
# Italicized text
onboarding-choose_mounting-manual_mounting-label-v2 = อาจมีความแม่นยำไม่เพียงพอ
onboarding-choose_mounting-manual_mounting-description = คุณสามารถเลือกการวางแนวการติดตั้งด้วยตนเองสำหรับแทร็กเกอร์แต่ละตัว
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 = ฉันรู้ว่าฉันทําอะไรอยู่
onboarding-choose_mounting-manual_modal-confirm = ฉันรู้ว่าฉันทอะไรอยู่
onboarding-choose_mounting-manual_modal-cancel = ยกเลิก
## Tracker manual mounting setup
@@ -1187,7 +1206,7 @@ onboarding-manual_mounting-next = ขั้นตอนถัดไป
onboarding-automatic_mounting-back = กลับไปยังเข้าสู่ VR
onboarding-automatic_mounting-title = ตั้งศูนย์การติดตั้งแทร็กเกอร์
onboarding-automatic_mounting-description = เพื่อให้ SlimeVR ทำงานได้ เราจะต้องทำการตั้งค่าการติดตั้งของแทร็กเกอร์ของคุณให้ตรงกับการติดตั้งบนร่างกายจริง
onboarding-automatic_mounting-description = เพื่อให้แทร็กเกอร์ SlimeVR ทำงานได้ เราจำเป็นต้องกำหนดทิศทางการติดตั้งให้กับแทร็กเกอร์ของคุณเพื่อจัดแนวให้ตรงกับการติดตั้งแทร็กเกอร์บนร่างกายคุณ
onboarding-automatic_mounting-manual_mounting = ตั้งศูนย์การติดตั้งด้วยตนเอง
onboarding-automatic_mounting-next = ขั้นตอนถัดไป
onboarding-automatic_mounting-prev_step = ขั้นตอนก่อนหน้า
@@ -1196,30 +1215,30 @@ onboarding-automatic_mounting-done-description = ตั้งศูนย์ก
onboarding-automatic_mounting-done-restart = ลองอีกครั้ง
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-mounting_reset-step-1 = 2. กดปุ่ม "ตั้งศูนย์การติดตั้ง" และรอ 3 วินาที ก่อนที่ทิศทางการติดตั้งของแทร็กเกอร์จะถูกรีเซ็ต
onboarding-automatic_mounting-mounting_reset-feet-step-0 = 1. ยืนเขย่งปลายเท้าทั้งสองข้างโดยให้เท้าชี้ไปด้านหน้า หรืออีกทางเลือกหนึ่งคือคุณสามารถทำได้ขณะนั่งอยู่บนเก้าอี้
onboarding-automatic_mounting-mounting_reset-feet-step-1 = 2. กดปุ่ม "ตั้งศูนย์เท้า" และรอ 3 วินาที ก่อนที่การวางแนวการติดตั้งของแทร็กเกอร์จะถูกรีเซ็ต
onboarding-automatic_mounting-preparation-title = การเตรียมความพร้อม
onboarding-automatic_mounting-preparation-v2-step-0 = 1. กดที่ปุ่ม "รีเซ็ตแทร็กเกอร์ทั้งหมด"
onboarding-automatic_mounting-mounting_reset-feet-step-1 = 2. กดปุ่ม "ตั้งศูนย์เท้า" และรอ 3 วินาที ก่อนที่ทิศทางการติดตั้งของแทร็กเกอร์จะถูกรีเซ็ต
onboarding-automatic_mounting-preparation-title = การเตรียมตัว
onboarding-automatic_mounting-preparation-v2-step-0 = 1. กดที่ปุ่ม "รีเซ็ตทั้งหมด"
onboarding-automatic_mounting-preparation-v2-step-1 = 2. ยืนตัวตรง แขนแนบลำตัว ตรวจสอบให้แน่ใจว่ากำลังมองตรงไปข้างหน้า
onboarding-automatic_mounting-preparation-v2-step-2 = 3. ค้างท่าทางไว้จนกว่าตัวจับเวลา 3 วินาทีจะสิ้นสุดลง
onboarding-automatic_mounting-put_trackers_on-title = ใส่แทร็กเกอร์ของคุณ
onboarding-automatic_mounting-put_trackers_on-description = เพื่อตั้งศูนย์การวางแนวการติดตั้ง เราจะใช้แทร็กเกอร์ที่คุณกำหนดตำแหน่งไปเมื่อสักครู่ โปรดสวมใส่แทร็กเกอร์ของคุณ โดยคุณสามารถดูว่าแทร็กเกอร์ใดคือส่วนใดได้จากภาพด้านขวา
onboarding-automatic_mounting-put_trackers_on-next = ฉันใส่แทร็กเกอร์ทั้งหมดแล้ว
onboarding-automatic_mounting-put_trackers_on-description = เพื่อตั้งศูนย์ทิศทางการติดตั้ง เราจะใช้แทร็กเกอร์ที่คุณกำหนดตำแหน่งไปเมื่อสักครู่ โปรดสวมใส่แทร็กเกอร์ของคุณ โดยคุณสามารถดูว่าแทร็กเกอร์ใดคือส่วนใดได้จากภาพด้านขวา
onboarding-automatic_mounting-put_trackers_on-next = ฉันสวมแทร็กเกอร์ทั้งหมดแล้ว
onboarding-automatic_mounting-return-home = เสร็จแล้ว
## Tracker manual proportions setupa
onboarding-manual_proportions-back-scaled = กลับไปที่สัดส่วนที่อ้างอิงขนาด
onboarding-manual_proportions-title = ปรับสัดส่วนร่างกายด้วยตนเอง
onboarding-manual_proportions-fine_tuning_button = ปรับค่าสัดส่วนร่างกายโดยอัตโนมัติ
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = กรุณาเชื่อมแว่น VR ของคุณเพื่อใช้งานการปรับค่าโดยอัตโนมัติ
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 = ไฟล์ข้อมูลสัดส่วน
onboarding-manual_proportions-normal_increment = เพิ่มจำนวนแบบปกติ
onboarding-manual_proportions-precise_increment = เพิ่มจำนวนแบบละเอียด
onboarding-manual_proportions-grouped_proportions = กลุ่มสัดส่วนร่างกาย
onboarding-manual_proportions-grouped_proportions = สัดส่วนแบบกลุ่ม
onboarding-manual_proportions-all_proportions = สัดส่วนทั้งหมด
onboarding-manual_proportions-estimated_height = ความสูงของผู้ใช้โดยประมาณ
@@ -1231,8 +1250,8 @@ onboarding-automatic_proportions-description = เพื่อให้ SlimeVR
onboarding-automatic_proportions-manual = ปรับสัดส่วนด้วยตัวเอง
onboarding-automatic_proportions-prev_step = ขั้นตอนก่อนหน้า
onboarding-automatic_proportions-put_trackers_on-title = ใส่แทร็กเกอร์ของคุณ
onboarding-automatic_proportions-put_trackers_on-description = เราจะใช้แทร็กเกอรที่ถูกกำหนดตำแหน่งไว้แล้วในการตั้งศูนย์สัดส่วน ใส่แทร็กเกอร์ของคุณได้เลย หากไม่แน่ใจว่าแทร็กเกอร์เป็นตัวไหน สามารถดูได้จากภาพด้านขวา
onboarding-automatic_proportions-put_trackers_on-next = ฉันใส่แทร็กเกอร์ทั้งหมดแล้ว
onboarding-automatic_proportions-put_trackers_on-description = เราจะใช้แทร็กเกอรที่ถูกกำหนดตำแหน่งไว้แล้วในการตั้งศูนย์สัดส่วน ใส่แทร็กเกอร์ของคุณได้เลย หากไม่แน่ใจว่าแทร็กเกอร์เป็นตัวไหน สามารถดูได้จากภาพด้านขวา
onboarding-automatic_proportions-put_trackers_on-next = ฉันสวมแทร็กเกอร์ครบทุกตัวแล้ว
onboarding-automatic_proportions-requirements-title = สิ่งที่ต้องการ
# Each line of text is a different list item
onboarding-automatic_proportions-requirements-descriptionv2 =
@@ -1245,8 +1264,10 @@ onboarding-automatic_proportions-requirements-next = ฉันได้อ่า
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-v3 = ให้เริ่มต้นการวัดในขณะที่ยืนตัว<u>ตรง</u>เพื่อวัดความสูงของคุณ ระวังอย่าให้มือของคุณยกสูงเกินเฮดเซ็ท เพราะอาจส่งผลต่อการวัด!
onboarding-automatic_proportions-check_height-guardian_tip = หากคุณใช้อุปกรณ์แว่น VR แบบเดี่ยวๆ โปรดตรวจสอบให้แน่ใจว่าได้เปิดใช้งาน Guardian /Boundary เพื่อให้การวัดความสูงถูกต้อง!
onboarding-automatic_proportions-check_height-calculation_warning-v3 = ให้เริ่มต้นการวัดในขณะที่ยืนตัว <u>ตรง</u> เพื่อวัดความสูงของคุณ ระวังอย่าให้มือของคุณยกสูงเกินเฮดเซ็ท เพราะอาจส่งผลต่อการวัด!
onboarding-automatic_proportions-check_height-guardian_tip =
หากคุณใช้เฮดเซ็ท VR แบบ Standalone โปรดตรวจสอบให้แน่ใจว่าได้เปิด Guardian /
Boundary เพื่อให้ความสูงของคุณถูกต้อง!
# Context is that the height is unknown
onboarding-automatic_proportions-check_height-unknown = ไม่ทราบ
# Shows an element below it
@@ -1255,10 +1276,10 @@ 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 = ในบางกรณีแว่นของคุณอาจมีการตั้งค่าความสูงของพื้นที่ไม่ถูกต้อง ทำให้ความสูงของแว่นวัดได้สูงกว่าที่ควร คุณสามารถวัดความ"สูง" ของพื้นให้ถูกต้องได้
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 = เริ่มต้นการวัดโดยการวาง Controller บนพื้นเพื่อวัดความสูงของพื้นของคุณ ถ้าคุณมั่นใจแล้วว่าความสูงของพื้นคุณถูกต้อง คุณสามารถข้ามขั้นตอนนี้ได้
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 = ความสูงโดยประมาณของคุณคือ:
@@ -1291,7 +1312,7 @@ onboarding-automatic_proportions-verify_results-processing = กำลังป
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-done-description = การตั้งศูนย์สัดส่วนร่างกายของคุณเสร็จสมบูรณ์แล้ว!
onboarding-automatic_proportions-error_modal-v2 =
<b>คำเตือน:</b> เกิดข้อผิดพลาดระหว่างการประมาณสัดส่วน!
อาจเกิดจากตำแหน่งการติดตั้งแทร็กเกอร์ที่ไม่ถูกต้อง โปรดตรวจสอบว่าแทร็กเกอร์ทำงานอย่างถูกต้อง แล้วลองอีกครั้ง
@@ -1308,7 +1329,7 @@ onboarding-user_height-title = ความสูงของคุณคือ
onboarding-user_height-description = เราต้องการความสูงของคุณเพื่อคำนวณสัดส่วนร่างกายและแสดงการเคลื่อนไหวของคุณอย่างแม่นยำ คุณสามารถให้ SlimeVR คำนวณให้ หรือป้อนความสูงเองด้วยตนเอง
onboarding-user_height-need_head_tracker = จำเป็นต้องใช้เฮดเซ็ต (หรือแทร็กเกอร์ส่วนหัว) และคอนโทรลเลอร์ที่มีการติดตามตำแหน่งเพื่อทำการตั้งศูนย์
onboarding-user_height-calculate = คำนวณความสูงของฉันโดยอัตโนมัติ
onboarding-user_height-next_step = ดำเนินการต่อและบันทึก
onboarding-user_height-next_step = บันทึกและดำเนินการต่อ
onboarding-user_height-manual-proportions = ปรับสัดส่วนด้วยตัวเอง
onboarding-user_height-calibration-title = ความคืบหน้าการตั้งศูนย์
onboarding-user_height-calibration-RECORDING_FLOOR = แตะพื้นด้วยปลายคอนโทรลเลอร์ของคุณ
@@ -1317,14 +1338,14 @@ onboarding-user_height-calibration-WAITING_FOR_FW_LOOK = ยืนขึ้น
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-ok = ตรวจสอบให้แน่ใจว่าหัวของคุณอยู่ในแนวระนาบ
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-low = อย่ามองที่พื้น
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-high = อย่าเงยหน้าสูงเกินไป
onboarding-user_height-calibration-WAITING_FOR_CONTROLLER_PITCH = ตรวจสอบให้แน่ใจว่าคอนโทรลเลอร์ชี้ลง
onboarding-user_height-calibration-WAITING_FOR_CONTROLLER_PITCH = ตรวจสอบให้แน่ใจว่าคอนโทรลเลอร์นั้นชี้ลง
onboarding-user_height-calibration-RECORDING_HEIGHT = ยืนขึ้นอีกครั้งแล้วยืนนิ่งๆ!
onboarding-user_height-calibration-DONE = สําเร็จ!
onboarding-user_height-calibration-DONE = สเร็จ!
onboarding-user_height-calibration-ERROR_TIMEOUT = การตั้งศูนย์หมดเวลา ลองใหม่อีกครั้ง
onboarding-user_height-calibration-ERROR_TOO_HIGH = ความสูงของผู้ใช้ที่ตรวจพบสูงเกินไป ลองใหม่อีกครั้ง
onboarding-user_height-calibration-ERROR_TOO_SMALL = ความสูงของผู้ใช้ที่ตรวจพบเตี้ยเกินไป ตรวจสอบให้แน่ใจว่ายืนตัวตรงเต็มที่ระหว่างกระบวนการ
onboarding-user_height-calibration-ERROR_TOO_SMALL = ความสูงของผู้ใช้ที่ตรวจพบเตี้ยเกินไป ตรวจสอบให้แน่ใจว่ายืนตัวตรงในระหว่างการตั้งศูนย์
onboarding-user_height-calibration-error = ตั้งศูนย์ไม่สำเร็จ
onboarding-user_height-manual-tip = ขณะปรับความสูงของคุณ ให้ลองทำท่าทางต่างๆ และดูว่าโครงกระดูกตรงกับร่างกายของคุณอย่างไร
onboarding-user_height-manual-tip = ขณะปรับความสูงของคุณ ให้ลองทำท่าทางต่างๆ และดูว่าการเคลื่อนไหวของโครงกระดูกตรงกับร่างกายของคุณหรือไม่
onboarding-user_height-reset-warning = คุณได้ตั้งค่าสัดส่วนไว้แล้วโดยใช้หน้าสัดส่วนแบบปรับเอง การดำเนินการต่อจะเป็นการรีเซ็ตสัดส่วนเหล่านี้เพื่อใช้เฉพาะความสูงของคุณเท่านั้น คุณต้องการดำเนินการต่อหรือไม่?
## Stay Aligned setup
@@ -1360,10 +1381,11 @@ onboarding-stay_aligned-previous_step = ก่อนหน้า
onboarding-stay_aligned-next_step = ต่อไป
onboarding-stay_aligned-restart = เริ่มใหม่
onboarding-stay_aligned-done = เสร็จแล้ว
onboarding-stay_aligned-manual_mounting-done = เสร็จแล้ว
## Home
home-no_trackers = ไม่พบแทร็กเกอร์หรือยังไม่ได้ถูกกำหนด
home-no_trackers = ไม่พบหรือไม่ได้กำหนดแทร็กเกอร์
home-settings = การตั้งค่าหน้าหลัก
home-settings-close = ปิด
@@ -1371,22 +1393,22 @@ home-settings-close = ปิด
trackers_still_on-modal-title = แทร็กเกอร์ยังคงเปิดอยู่
trackers_still_on-modal-description =
มีแทร็กเกอร์เปิดค้างไว้อยู่
คุณแน่ใจที่จะปิด SlimeVR?
มีแทร็กเกอร์อยู่ตั้งแต่หนึ่งตัวขึ้นไปเปิดอยู่
คุณยังต้องการออกจาก SlimeVR หรือไม่?
trackers_still_on-modal-confirm = ออกจาก SlimeVR
trackers_still_on-modal-cancel = ใจเย็นๆก่อน....
## Status system
status_system-StatusTrackerReset = เราแนะนำให้คุณทำการรีเซ็ตทั้งหมดเพราะว่าแทร็กเกอร์หนึ่งตัวหรือมากกว่านั้นยังไม่ได้ถูกปรับ
status_system-StatusTrackerReset = แนะนำให้ทำการรีเซ็ตทั้งหมด เนื่องจากมีแทร็กเกอร์ที่ยังไม่ได้ปรับค่าตั้งแต่หนึ่งตัวขึ้นไป
status_system-StatusSteamVRDisconnected =
{ $type ->
[steamvr_feeder] ขณะนี้ยังไม่มีการเชื่อมต่อกับแอป SlimeVR Feeder
*[steamvr] ขณะนี้ยังไม่มีการเชื่อมต่อกับ SteamVR ผ่านไดรเวอร์ SlimeVR
}
status_system-StatusTrackerError = แทร็กเกอร์ { $trackerName } เกิดข้อผิดพลาด
status_system-StatusUnassignedHMD = แว่น VR ของคุณควรจะถูกกำหนดเป็นแทร็กเกอร์ส่วนหัว
status_system-StatusPublicNetwork = โปรไฟล์เครือข่ายของคุณตอนนี้ถูกตั้งค่าเป็นสาธารณะ ({ $adapters }) ซึ่งไม่แนะนำสำหรับการทำงานของ SlimeVR <PublicFixLink>ดูวิธีการแก้ไขให้เหมาะสมที่นี่</PublicFixLink>
status_system-StatusUnassignedHMD = เฮดเซ็ท VR ของคุณควรจะถูกกำหนดเป็นแทร็กเกอร์ส่วนหัว
status_system-StatusPublicNetwork = โปรไฟล์เครือข่ายของคุณตอนนี้ถูกตั้งค่าเป็นสาธารณะ ({ $adapters }) ในขณะนี้ ซึ่งไม่แนะนำสำหรับการทำงานของ SlimeVR <PublicFixLink>สามารถดูวิธีการแก้ไขได้ที่นี่</PublicFixLink>
## Firmware tool globals
@@ -1399,17 +1421,20 @@ firmware_tool-loading = กำลังโหลด...
## Firmware tool Steps
firmware_tool = เครื่องมือเฟิร์มแวร์ DIY
firmware_tool-description = ให้คุณตั้งค่าและแฟลชเฟิร์มแวร์แทร็กเกอร์ DIY ของคุณ
firmware_tool-not_available = ไอ่หย๊า เครื่องมือเฟิร์มแวร์ยังไม่พร้อมใช้งานในขณะนี้ โปรดกลับมาใหม่ทีหลัง!
firmware_tool-not_compatible = Firmware นี้เข้ากันไม่ได้กับเซิร์ฟเวอร์เวอร์ชันนี้ โปรดอัปเดตเซิร์ฟเวอร์ของคุณ!
firmware_tool-select_source = เลือกเฟิร์มแวร์ที่จะแฟลช
firmware_tool-select_source-description = เลือกเฟิร์มแวร์ที่คุณต้องการแฟลชลงบนบอร์ดของคุณ
firmware_tool-description = ช่วยให้คุณกำหนดค่าและลงเฟิร์มแวร์แทร็กเกอร์ DIY ของคุณ
firmware_tool-not_available = ขออภัย เครื่องมือเฟิร์มแวร์ยังไม่พร้อมใช้งานในขณะนี้ โปรดกลับมาในภายหลัง!
firmware_tool-not_compatible = เครื่องมือเฟิร์มแวร์ไม่เข้ากันกับ SlimeVR Server เวอร์ชันนี้ โปรดอัปเดต SlimeVR Server ของคุณ!
firmware_tool-select_source = เลือกเฟิร์มแวร์ที่คุณจะติดตั้ง
firmware_tool-select_source-description = เลือกเฟิร์มแวร์ที่คุณต้องการลงบนบอร์ดของคุณ
firmware_tool-select_source-error = ไม่สามารถโหลดแหล่งที่มาได้
firmware_tool-select_source-board_type = ชนิดของบอร์ด
firmware_tool-select_source-firmware = แหล่งที่มาของเฟิร์มแวร์
firmware_tool-select_source-version = เวอร์ชันของเฟิร์มแวร์
firmware_tool-select_source-version = เวอร์ชันของเฟิร์มแวร์
firmware_tool-select_source-official = ทางการ
firmware_tool-select_source-dev = รุ่นพัฒนา
firmware_tool-select_source-not_selected = ยังไม่ได้กำหนดแหล่งเฟิร์มแวร์
firmware_tool-select_source-no_boards = ไม่มีเฟิร์มแวร์บอร์ดสำหรับแหล่งนี้
firmware_tool-select_source-no_versions = ไม่มีเวอร์ชั่นที่ใช้ได้สำหรับแหล่งนี้
firmware_tool-board_defaults = กำหนดค่าบอร์ดของคุณ
firmware_tool-board_defaults-description = ตั้งค่า Pin หรือการตั้งค่าที่เกี่ยวข้องกับฮาร์ดแวร์ของคุณ
firmware_tool-board_defaults-add = เพิ่ม
@@ -1417,84 +1442,84 @@ firmware_tool-board_defaults-reset = รีเซ็ตเป็นค่าเ
firmware_tool-board_defaults-error-required = ช่องที่จำเป็น
firmware_tool-board_defaults-error-format = รูปแบบไม่ถูกต้อง
firmware_tool-board_defaults-error-format-number = ไม่ใช่ตัวเลข
firmware_tool-flash_method_step = วิธีการลง Firmware
firmware_tool-flash_method_step-description = กรุณาเลือกวิธีการลง Firmware ที่คุณต้องการ
firmware_tool-flash_method_step = วิธีการลงเฟิร์มแวร์
firmware_tool-flash_method_step-description = กรุณาเลือกวิธีการลงเฟิร์มแวร์ที่คุณต้องการใช้
firmware_tool-flash_method_step-ota-v2 =
.label = Wi-Fi
.description = ใช้การอัปเดตแบบ Over-the-air (OTA) โดยแทร็กเกอร์คุณจะใช้ Wi-Fi เพื่ออัปเดตเฟิร์มแวร์ ใช้งานได้เฉพาะแทร็กเกอร์ที่ได้รับการตั้งค่าแล้วเท่านั้น
firmware_tool-flash_method_step-ota-info =
เราใช้ข้อมูลรับรอง Wi-Fi ของคุณเพื่อแฟลชแทร็กเกอร์และยืนยันว่าทุกอย่างทำงานได้อย่างถูกต้อง
เราใช้ข้อมูลรับรอง Wi-Fi ของคุณเพื่อลงเฟิร์มแวร์แทร็กเกอร์และยืนยันว่าทุกอย่างทำงานได้อย่างถูกต้อง
<b>เราไม่จัดเก็บข้อมูล Wi-Fi ของคุณ!</b>
firmware_tool-flash_method_step-serial-v2 =
.label = USB
.description = ใช้สาย USB เพื่ออัปเดตแทร็กเกอร์ของคุณ
firmware_tool-flashbtn_step = กรุณากดปุ่ม Boot
firmware_tool-flashbtn_step-description = มีสิ่งที่คุณควรจะรับทราบก่อนจะไปยังขั้นตอนถัดไป
firmware_tool-flashbtn_step-board_SLIMEVR = ปิดแทร็กเกอร์ของคุณ ถอดอุปกรณ์ออกจากเคสพลาสติก(ถ้ามี) แล้วต่อสาย USB จากแทร็กเกอร์เข้าสู่คอมพิวเตอร์ จากนั้นทำตามขั้นตอนตามชนิดบอร์ดของ SlimeVR ของคุณ
firmware_tool-flashbtn_step-board_SLIMEVR = ปิดแทร็กเกอร์ของคุณ ถอดบอร์ดออกจากเคส(ถ้ามี) แล้วต่อสาย USB จากแทร็กเกอร์เข้าสู่คอมพิวเตอร์ จากนั้นทำตามขั้นตอนตามชนิดบอร์ดของ SlimeVR คุณ
firmware_tool-flashbtn_step-board_SLIMEVR-r11-v2 = เปิดแทร็กเกอร์ขณะทำการลัดวงจรแพด FLASH สี่เหลี่ยมอันที่สองจากขอบด้านบนของบอร์ดเข้ากับฝาโลหะของไมโครคอนโทรลเลอร์ ไฟ LED ของแทร็กเกอร์ควรกะพริบสั้นๆ
firmware_tool-flashbtn_step-board_SLIMEVR-r12-v2 = เปิดแทร็กเกอร์ขณะทำการลัดวงจรแพด FLASH วงกลมที่ด้านบนของบอร์ดเข้ากับฝาครอบโลหะของไมโครคอนโทรลเลอร์ ไฟ LED ของแทร็กเกอร์ควรกะพริบสั้นๆ
firmware_tool-flashbtn_step-board_SLIMEVR-r14-v2 = เปิดแทร็กเกอร์ขณะกดปุ่ม FLASH ที่ด้านบนของบอร์ดค้างไว้ ไฟ LED ของแทร็กเกอร์ควรกะพริบสั้นๆ
firmware_tool-flashbtn_step-board_OTHER =
ก่อนการแฟลช คุณอาจต้องตั้งค่าแทร็กเกอร์ให้อยู่ในโหมดบูตโหลดเดอร์ก่อน
โดยส่วนใหญ่ คุณจะต้องกดปุ่มบูตบนบอร์ดก่อนที่กระบวนการแฟลชจะเริ่มต้น
หากกระบวนการแฟลชหมดเวลาที่จุดเริ่มต้น อาจหมายความว่าแทร็กเกอร์ไม่ได้อยู่ในโหมดบูตโหลดเดอร์
โปรดดูคำแนะนำการแฟลชของบอร์ดของคุณเพื่อทราบวิธีเปิดโหมดบูตโหลดเดอร์
firmware_tool-flash_method_ota-title = กำลังแฟลชผ่าน Wi-Fi
ก่อนลงเฟิร์มแวร์ คุณอาจต้องตั้งค่าแทร็กเกอร์ให้อยู่ในโหมดบูตโหลดเดอร์ก่อน
โดยส่วนใหญ่ คุณจะต้องกดปุ่มบูตบนบอร์ดก่อนที่กระบวนการลงเฟิร์มแวร์จะเริ่มต้น
หากกระบวนการหมดเวลาตั้งแต่เริ่มต้น อาจหมายความว่าแทร็กเกอร์ไม่ได้อยู่ในโหมดบูตโหลดเดอร์
โปรดดูคำแนะนำการลงเฟิร์มแวร์ของบอร์ดของคุณเพื่อทราบวิธีเปิดโหมดบูตโหลดเดอร์
firmware_tool-flash_method_ota-title = กำลังลงเฟิร์มแวร์ผ่าน Wi-Fi
firmware_tool-flash_method_ota-devices = พบอุปกรณ์ OTA:
firmware_tool-flash_method_ota-no_devices = ไม่พบบอร์ดที่เราสามารถอัเดตได้ผ่าน OTA กรุณาตรวจสอบว่าคุณได้เลือกชนิดของบอร์ดที่ถูกต้อง
firmware_tool-flash_method_serial-title = กำลังแฟลชผ่าน USB
firmware_tool-flash_method_serial-wifi = ข้อมูล Wi-Fi:
firmware_tool-flash_method_serial-devices-label = พบอุปกรณ์ซีเรียล:
firmware_tool-flash_method_serial-devices-placeholder = เลือกอุปกรณ์ซีเรียลของคุณ
firmware_tool-flash_method_serial-no_devices = ไม่พบอุปกรณ์ซีเรียลที่เข้ากันได้ กรุณาตรวจสอบว่าแทร็กเกอร์ของคุณเสียบอยู่
firmware_tool-flash_method_ota-no_devices = ไม่พบบอร์ดที่สามารถอัเดตโดยใช้ OTA ได้ ตรวจสอบให้แน่ใจว่าคุณเลือกประเภทบอร์ดได้ถูกต้อง
firmware_tool-flash_method_serial-title = กำลังลงเฟิร์มแวร์ผ่าน USB
firmware_tool-flash_method_serial-wifi = ข้อมูลเครือข่าย Wi-Fi:
firmware_tool-flash_method_serial-devices-label = พบอุปกรณ์ Serial:
firmware_tool-flash_method_serial-devices-placeholder = เลือกอุปกรณ์ Serial ของคุณ
firmware_tool-flash_method_serial-no_devices = ไม่พบอุปกรณ์ Serial ที่เข้ากันได้ ตรวจสอบให้แน่ใจว่าได้เสียบแทร็กเกอร์แล้ว
firmware_tool-build_step = สร้างเฟิร์มแวร์
firmware_tool-build_step-description = กำลังสร้างเฟิร์มแวร์ โปรดรอสักครู่
firmware_tool-flashing_step = ติดตั้งเฟิร์มแวร์
firmware_tool-flashing_step-description = กำลังติดตั้งเฟิร์มแวร์ให้แทร็กเกอร์ของคุณ กรุณาทำตามคำแนะนำบนหน้าจอ
firmware_tool-build_step-description = เฟิร์มแวร์กำลังสร้าง โปรดรอสักครู่
firmware_tool-flashing_step = งเฟิร์มแวร์
firmware_tool-flashing_step-description = กำลังงเฟิร์มแวร์ให้แทร็กเกอร์ของคุณ กรุณาทำตามคำแนะนำบนหน้าจอ
firmware_tool-flashing_step-warning-v2 = อย่าถอดสาย หรือปิดแทร็กเกอร์ในระหว่างกระบวนการอัปโหลด เว้นแต่จะได้รับคำแนะนำ ไม่อย่างนั้นอาจทำให้บอร์ดของคุณใช้งานไม่ได้
firmware_tool-flashing_step-flash_more = ติดตั้งเฟิร์มแวร์ให้แทร็กเกอร์ตัวอื่น
firmware_tool-flashing_step-flash_more = งเฟิร์มแวร์ให้แทร็กเกอร์ตัวอื่น
firmware_tool-flashing_step-exit = ออก
## firmware tool build status
firmware_tool-build-QUEUED = กำลังรอการสร้าง...
firmware_tool-build-CREATING_BUILD_FOLDER = กำลังสร้าง Build folder
firmware_tool-build-CREATING_BUILD_FOLDER = กำลังสร้างโฟลเดอร์บิลด์
firmware_tool-build-DOWNLOADING_SOURCE = กำลังดาวน์โหลดซอร์สโค้ด
firmware_tool-build-EXTRACTING_SOURCE = กำลังแตกไฟล์ซอร์สโค้ด
firmware_tool-build-BUILDING = กำลังสร้างตัว Firmware
firmware_tool-build-SAVING = บันทึกค่าที่สร้างไว้
firmware_tool-build-DONE = การสร้างเสร็จสมบูรณ์
firmware_tool-build-ERROR = ไม่สามารถสร้าง Firmware ได้
firmware_tool-build-BUILDING = กำลังสร้างเฟิร์มแวร์
firmware_tool-build-SAVING = กำลังบันทึกไฟล์บิลด์
firmware_tool-build-DONE = สร้างเสร็จสมบูรณ์
firmware_tool-build-ERROR = ไม่สามารถสร้างเฟิร์มแวร์ได้
## Firmware update status
firmware_update-status-DOWNLOADING = กำลังโหลด Firmware
firmware_update-status-NEED_MANUAL_REBOOT-v2 = กรุณปิดและเปิดแทร็กเกอร์ของคุณใหม่อีกครั้ง
firmware_update-status-DOWNLOADING = กำลังดาวน์โหลดเฟิร์มแวร์
firmware_update-status-NEED_MANUAL_REBOOT-v2 = โปรดปิดและเปิดแทร็กเกอร์ของคุณอีกครั้ง
firmware_update-status-AUTHENTICATING = กำลังยืนยันตัวตนกับ MCU
firmware_update-status-UPLOADING = กำลังอัปโหลดเฟิร์มแวร์
firmware_update-status-SYNCING_WITH_MCU = กำลังซิงโครไนซ์กับ MCU
firmware_update-status-REBOOTING = กำลังดำเนินการอัปเดต
firmware_update-status-PROVISIONING = ตั้งค่าข้อมูลการเชื่อมต่อ Wi-Fi
firmware_update-status-DONE = อัเดตสำเร็จ!
firmware_update-status-ERROR_DEVICE_NOT_FOUND = ไม่สามารถหาตัวอุปกรณ์ได้
firmware_update-status-ERROR_TIMEOUT = กระบวนการอัปเดตหมดเวลาการเชื่อมต่อ
firmware_update-status-ERROR_DOWNLOAD_FAILED = ไม่สามารถดาวน์โหลด Firmware ได้
firmware_update-status-ERROR_AUTHENTICATION_FAILED = ไม่สามารถยืนยันตัวตนหรือเชื่อมต่อกับ MCU ได้
firmware_update-status-ERROR_UPLOAD_FAILED = ไม่สามารถอัปโหลดเฟิร์มแวร์ได้
firmware_update-status-ERROR_PROVISIONING_FAILED = ไม่สามารถตั้งข้อมูลการเชื่อมต่อ Wi-Fi ได้
firmware_update-status-ERROR_UNSUPPORTED_METHOD = ยังไม่รองรับวิธีการอัเดตนี้
firmware_update-status-SYNCING_WITH_MCU = กำลังซิง์กับ MCU
firmware_update-status-REBOOTING = กำลังใช้การอัปเดต
firmware_update-status-PROVISIONING = ตั้งค่าข้อมูลเครือข่าย Wi-Fi
firmware_update-status-DONE = อัเดตสำเร็จ!
firmware_update-status-ERROR_DEVICE_NOT_FOUND = ไม่พบอุปกรณ์
firmware_update-status-ERROR_TIMEOUT = กระบวนการอัปเดตหมดเวลา
firmware_update-status-ERROR_DOWNLOAD_FAILED = ไม่สามารถดาวน์โหลดเฟิร์มแวร์
firmware_update-status-ERROR_AUTHENTICATION_FAILED = ไม่สามารถยืนยันตัวตนกับ MCU
firmware_update-status-ERROR_UPLOAD_FAILED = ไม่สามารถอัปโหลดเฟิร์มแวร์
firmware_update-status-ERROR_PROVISIONING_FAILED = ไม่สามารถตั้งค่าข้อมูลเครือข่าย Wi-Fi
firmware_update-status-ERROR_UNSUPPORTED_METHOD = ยังไม่รองรับวิธีการอัเดตนี้
firmware_update-status-ERROR_UNKNOWN = เกิดข้อผิดพลาดที่ไม่รู้จัก
## Dedicated Firmware Update Page
firmware_update-title = อัเดตเฟิร์มแวร์
firmware_update-title = อัเดตเฟิร์มแวร์
firmware_update-devices = อุปกรณ์ที่พร้อมใช้งาน
firmware_update-devices-description = โปรดเลือกตัวแทร็กเกอร์ที่คุณต้องการอัปเดตเป็น Firmware SlimeVR เวอร์ชันล่าสุด
firmware_update-no_devices = กรุณาตรวจสอบว่าแทร็กเกอร์ที่คุณต้องการจะอัเดนั้นเปิดอยู่ และต่อเข้ากับ Wi-Fi!
firmware_update-devices-description = โปรดเลือกแทร็กเกอร์ที่คุณต้องการอัปเดตเป็นเฟิร์มแวร์ SlimeVR เวอร์ชันล่าสุด
firmware_update-no_devices = กรุณาตรวจสอบว่าแทร็กเกอร์ที่คุณต้องการจะอัเดนั้นเปิดอยู่ และต่อเข้ากับ Wi-Fi!
firmware_update-changelog-title = กำลังอัปเดตเป็น { $version }
firmware_update-looking_for_devices = กำลังมองหาอุปกรณ์เพื่ออัเดต...
firmware_update-looking_for_devices = กำลังมองหาอุปกรณ์เพื่ออัเดต...
firmware_update-retry = ลองอีกครั้ง
firmware_update-update = อัเดตแทร็กเกอร์ที่เลือก
firmware_update-update = อัเดตแทร็กเกอร์ที่เลือก
firmware_update-exit = ออก
## Tray Menu
@@ -1507,9 +1532,12 @@ tray_menu-quit = ออก
tray_or_exit_modal-title = คุณต้องการให้ปุ่มปิดทำอะไร?
# Multiline text
tray_or_exit_modal-description = นี่จะให้คุณเลือกว่าจะเป็นการปิดโปรแกรมหรือเป็นการพับเก็บโปรแกรมเมื่อกดปุ่มปิด
tray_or_exit_modal-radio-exit = ออกโปรแกรมเมื่อปิด
tray_or_exit_modal-radio-tray = พับไปยัง System tray
tray_or_exit_modal-description =
เลือกที่จะออกจากโปรแกรม หรือย่อไปที่ถาดระบบเมื่อคลิกปุ่มปิด
คุณสามารถเปลี่ยนการตั้งค่านี้ได้ภายหลังในส่วนการตั้งค่าอินเทอร์เฟซ
tray_or_exit_modal-radio-exit = ออกเมื่อปิด
tray_or_exit_modal-radio-tray = ย่อไปที่ถาดระบบ
tray_or_exit_modal-submit = บันทึก
tray_or_exit_modal-cancel = ยกเลิก
@@ -1522,30 +1550,30 @@ unknown_device-modal-description =
unknown_device-modal-confirm = แน่นอน
unknown_device-modal-forget = เพิกเฉย
# VRChat config warnings
vrc_config-page-title = คำเตือนการตั้งค่าของ VRChat
vrc_config-page-title = คำเตือนการตั้งค่าใน VRChat
vrc_config-page-desc = หน้านี้แสดงการตั้งค่าใน VRChat ของคุณ และการตั้งค่าที่ไม่เข้ากับ SlimeVR เราแนะนำเป็นอย่างยิ่งให้คุณแก้ไขการแจ้งเตือนที่แสดงให้เห็นเพื่อประสบการณ์การใช้ SlimeVR ที่ดีที่สุด
vrc_config-page-help = ไม่พบการตั้งค่าใช่ไหม?
vrc_config-page-help-desc = สามารถดู<a>เอกสารประกอบการตั้งค่าตรงนี!</a>
vrc_config-page-big_menu = แทร็กกิ้ง & IK (หน้าเมนูใหญ่)
vrc_config-page-help-desc = สามารถดู <a>เอกสารประกอบการตั้งค่าได้ที่นี!</a>
vrc_config-page-big_menu = แทร็กกิ้ง & IK (หน้าเมนูใหญ่)
vrc_config-page-big_menu-desc = การตั้งค่าที่เกี่ยวกับ IK ในเมนูการตั้งค่าหลัก
vrc_config-page-wrist_menu = แทร็กกิ้ง & IK (เมนูบนข้อมือ)
vrc_config-page-wrist_menu-desc = การตั้งค่าที่เกี่ยวกับ IK ในเมนูตั้งค่าเล็ก (เมนูบนข้อมือ)
vrc_config-page-wrist_menu-desc = การตั้งค่าเกี่ยวกับ IK ในเมนูตั้งค่าเล็ก (เมนูบนข้อมือ)
vrc_config-on = เปิด
vrc_config-off = ปิด
vrc_config-invalid = คุณมีการตั้งค่าใน VRchat ที่ไม่ถูกต้อง!
vrc_config-invalid = คุณมีการตั้งค่าใน VRChat ที่ไม่ถูกต้อง!
vrc_config-show_more = แสดงข้อมูลเพิ่มเติม
vrc_config-setting_name = ชื่อการตั้งค่าใน VRchat
vrc_config-recommended_value = ค่าที่แนะนำ
vrc_config-setting_name = ชื่อการตั้งค่าใน VRChat
vrc_config-recommended_value = การตั้งค่าที่แนะนำ
vrc_config-current_value = การตั้งค่าปัจจุบัน
vrc_config-mute = ปิดคำเตือนการตั้งค่า
vrc_config-mute-btn = ปิดคำเตือน
vrc_config-unmute-btn = เลิกแจ้งเตือน
vrc_config-legacy_mode = การตั้งศูนย์แบบเก่า
vrc_config-disable_shoulder_tracking = ปิดใช้งานการจับตำแหน่งไหล
vrc_config-unmute-btn = แสดงคำเตือน
vrc_config-legacy_mode = ใช้การแก้ไข IK แบบเก่า
vrc_config-disable_shoulder_tracking = ปิดการใช้งานการติดตามไหล
vrc_config-shoulder_width_compensation = การชดเชยความกว้างของไหล่
vrc_config-spine_mode = โหมดกระดูกสันหลัง FBT
vrc_config-tracker_model = โมเดลแทร็กเกอร์ FBT
vrc_config-avatar_measurement_type = การวัดของอวาตาร์
vrc_config-avatar_measurement_type = การวัดขนาดอวาตาร์
vrc_config-calibration_range = ช่วงการตั้งศูนย์
vrc_config-calibration_visuals = แสดงภาพการตั้งศูนย์
vrc_config-user_height = ความสูงจริงของผู้ใช้
@@ -1564,46 +1592,49 @@ vrc_config-avatar_measurement_type-ARM_SPAN = ช่วงแขน
## Error collection consent modal
error_collection_modal-title = อนุญาตให้เราเก็บข้อมูลขอผิดพลาดหรือไม่?
error_collection_modal-title = อนุญาตให้เราเก็บข้อมูลขอผิดพลาดหรือไม่?
error_collection_modal-description_v2 =
{ settings-interface-behavior-error_tracking-description_v2 }
คุณสามารถเปลี่ยนการตั้งค่านี้ในภายหลังได้ในแถบ พฤติกรรมการทำงาน ภายในหน้าการตั้งค่า
error_collection_modal-confirm = ฉันตกลง
error_collection_modal-cancel = ฉันไม่ต้องการ
tracking_checklist = รายการเตรียมความพร้อมแทร็กกิ้ง
tracking_checklist-settings = รายการเตรียมพร้อมแทร็กเกอร์
## Tracking checklist section
tracking_checklist = รายการเตรียมพร้อมแทร็กเกอร์
tracking_checklist-settings = การตั้งค่ารายการเตรียมพร้อมแทร็กเกอร์
tracking_checklist-settings-close = ปิด
tracking_checklist-status-incomplete = คุณยังไม่พร้อมที่จะใช้ SlimeVR!
tracking_checklist-status-partial = คุณมี { $count } คำเตือน
tracking_checklist-status-partial = คุณมี { $count } คำเตือน!
tracking_checklist-status-complete = คุณพร้อมที่จะใช้ SlimeVR แล้ว!
tracking_checklist-MOUNTING_CALIBRATION = ตั้งศูนย์การติดตั้ง
tracking_checklist-MOUNTING_CALIBRATION = ทำการตั้งศูนย์การติดตั้ง
tracking_checklist-FEET_MOUNTING_CALIBRATION = ตั้งศูนย์การติดตั้งแทร็กเกอร์เท้า
tracking_checklist-FULL_RESET = รีเซ็ตแทร็กเกอร์ทั้งหมด
tracking_checklist-FULL_RESET = ทำการรีเซ็ตทั้งหมด
tracking_checklist-FULL_RESET-desc = แทร็กเกอร์บางส่วนจำเป็นต้องทำการรีเซ็ต
tracking_checklist-STEAMVR_DISCONNECTED = SteamVR ไม่ได้ทำงานอยู่
tracking_checklist-STEAMVR_DISCONNECTED-desc = SteamVR ไม่ได้ทำงานอยู่ คุณใช้งานเพื่อเล่น VR ใช่หรือไม่?
tracking_checklist-STEAMVR_DISCONNECTED-desc = SteamVR ไม่ได้ทำงานอยู่ คุณจะใช้เพื่อเล่น VR ใช่หรือไม่?
tracking_checklist-STEAMVR_DISCONNECTED-open = เปิด SteamVR
tracking_checklist-TRACKERS_REST_CALIBRATION = ตั้งศูนย์แทร็กเกอร์ของคุณ
tracking_checklist-TRACKERS_REST_CALIBRATION-desc = คุณยังไม่ได้ทำการตั้งศูนย์แทร็กเกอร์ โปรดวางแทร็กเกอร์ของคุณ (ที่ไฮไลต์ด้วยสีเหลือง) ไว้บนพื้นที่ราบเวลาสองสามวินาที
tracking_checklist-TRACKER_ERROR = แทร็กเกอร์มีปัญหา
tracking_checklist-TRACKER_ERROR-desc = ตัวแทร็กเกอร์บางส่วนของคุณมีปัญหา โปรดทำการรีสตาร์ทแทร็กเกอร์ที่ไฮไลต์ด้วยสีเหลือง
tracking_checklist-VRCHAT_SETTINGS = การตั้งค่าของ VRChat
tracking_checklist-VRCHAT_SETTINGS-desc = คุณมีการตั้งค่าของ VRChat ที่ไม่ถูกต้อง! ซึ่งอาจส่งผลเสียต่อการจับตำแหน่งของแทร็กเกอร์คุณ
tracking_checklist-TRACKER_ERROR = แทร็กเกอร์ที่มีปัญหา
tracking_checklist-TRACKER_ERROR-desc = แทร็กเกอร์บางตัวของคุณมีปัญหา โปรดทำการรีสตาร์ทแทร็กเกอร์ที่ไฮไลต์ด้วยสีเหลือง
tracking_checklist-VRCHAT_SETTINGS = การตั้งค่าใน VRChat
tracking_checklist-VRCHAT_SETTINGS-desc = คุณมีการตั้งค่าใน VRChat ที่ไม่ถูกต้อง! ซึ่งอาจส่งผลเสียต่อการจับตำแหน่งของแทร็กเกอร์คุณ
tracking_checklist-VRCHAT_SETTINGS-open = ไปยังคำเตือนการตั้งค่า VRChat
tracking_checklist-UNASSIGNED_HMD = อุปกรณ์แว่น VR ไม่ได้ถูกกำหนดที่ส่วนหัว
tracking_checklist-UNASSIGNED_HMD-desc = ควรระบุอุปกรณ์แว่น VR ให้เป็นแทร็กเกอร์ส่วนหัว
tracking_checklist-UNASSIGNED_HMD = เฮดเซ็ท VR ไม่ได้ถูกกำหนดที่ส่วนหัว
tracking_checklist-UNASSIGNED_HMD-desc = ควรระบุเฮตเซ็ท VR ให้เป็นแทร็กเกอร์ส่วนหัว
tracking_checklist-NETWORK_PROFILE_PUBLIC = แก้ไขโปรไฟล์เครือข่าย
tracking_checklist-NETWORK_PROFILE_PUBLIC-desc =
โปรไฟล์เครือข่ายของคุณ ({ $adapters }) ถูกตั้งค่าเป็น สาธารณะ (Public) อยู่ในขณะนี้ ซึ่งไม่แนะนำสำหรับการทำงานที่ถูกต้องของ SlimeVR
<PublicFixLink>ดูวิธีการแก้ไขได้ที่นี่</PublicFixLink>
tracking_checklist-NETWORK_PROFILE_PUBLIC-open = เปิด Control Panel
tracking_checklist-STAY_ALIGNED_CONFIGURED = ตั้งค่า Stay Aligned
tracking_checklist-STAY_ALIGNED_CONFIGURED-desc = บันทึกท่าท่างแบบใน Stay Aligned เพื่อลดค่าดริฟท์
tracking_checklist-STAY_ALIGNED_CONFIGURED-desc = บันทึกท่าท่างใน Stay Aligned เพื่อลดการดริฟท์
tracking_checklist-STAY_ALIGNED_CONFIGURED-open = เปิดตัวช่วยการตั้งค่า Stay Aligned
tracking_checklist-ignore = ละเว้น
preview-mocap_mode_soon = โหมด Mocap (เร็ว ๆ นี้™)
preview-disable_render = ปิดการแสดงตัวอย่าง
preview-disabled_render = ปิดใช้งานการแสดงผล
preview-disabled_render = การแสดงตัวอย่างถูกปิด
toolbar-mounting_calibration = ตั้งศูนย์การติดตั้ง
toolbar-mounting_calibration-default = ร่างกาย
toolbar-mounting_calibration-feet = เท้า

View File

@@ -376,3 +376,6 @@ settings-osc-vrchat-network-address = Ağ adresi
## Error collection consent modal
## Tracking checklist section

View File

@@ -615,11 +615,6 @@ onboarding-setup_warning-cancel = Продовжити налаштування
## Wi-Fi setup
onboarding-wifi_creds-back = Повернутися до вступу
onboarding-wifi_creds = Введіть дані Wi-Fi
# This cares about multilines
onboarding-wifi_creds-description =
Трекери використовуватимуть ці дані для бездротового підключення.
Будь ласка, використовуйте дані, до яких ви зараз підключені.
onboarding-wifi_creds-skip = Пропустити налаштування Wi-Fi
onboarding-wifi_creds-submit = Підтвердити!
onboarding-wifi_creds-ssid =
@@ -856,3 +851,6 @@ unknown_device-modal-forget = Ігнорувати
## Error collection consent modal
## Tracking checklist section

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