Compare commits
177 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fe58968718 | ||
|
|
01dd916498 | ||
|
|
6ebf9792ac | ||
|
|
02f8195b5b | ||
|
|
7b4946f41d | ||
|
|
5f4c90128f | ||
|
|
6a2a30e319 | ||
|
|
8a5f27e8d9 | ||
|
|
199bec40e1 | ||
|
|
9d32220275 | ||
|
|
8b689d6df8 | ||
|
|
490005ae69 | ||
|
|
575778ab85 | ||
|
|
85ee162d58 | ||
|
|
712fa6a1ad | ||
|
|
819481adcd | ||
|
|
bc26227443 | ||
|
|
ac43ca947e | ||
|
|
4451d8aaf4 | ||
|
|
79a9e15c5a | ||
|
|
5403cdb28e | ||
|
|
272f37374e | ||
|
|
4147578dc8 | ||
|
|
65bd03c272 | ||
|
|
4835e89c5f | ||
|
|
7ea4516545 | ||
|
|
2f208fe08a | ||
|
|
db584baed3 | ||
|
|
1d41627fb1 | ||
|
|
63b8d4c8cb | ||
|
|
8e60ecd070 | ||
|
|
6ee173791e | ||
|
|
b9d72c0a40 | ||
|
|
36b2e01d88 | ||
|
|
569315f6dc | ||
|
|
a4fab8afed | ||
|
|
d1e3c35693 | ||
|
|
d12f3c4854 | ||
|
|
e32903f36f | ||
|
|
ab126c336c | ||
|
|
79a6d62506 | ||
|
|
08f691b5b6 | ||
|
|
b12632fd1a | ||
|
|
54f3ab4634 | ||
|
|
415168d040 | ||
|
|
6be313144e | ||
|
|
98e571c94b | ||
|
|
1561c464e9 | ||
|
|
4992d599aa | ||
|
|
90b3dfe0db | ||
|
|
ab87c5b1e8 | ||
|
|
3ee6c065cf | ||
|
|
d1249d2b44 | ||
|
|
94a70d3b2e | ||
|
|
b67162eb43 | ||
|
|
4390d35e00 | ||
|
|
19126c0d4d | ||
|
|
0cf0f6cb49 | ||
|
|
d3d3838761 | ||
|
|
4984026f6b | ||
|
|
bb7e825c41 | ||
|
|
bc96ddd555 | ||
|
|
ec85284f78 | ||
|
|
867287e740 | ||
|
|
2e93187021 | ||
|
|
2a19d67974 | ||
|
|
176f7e4271 | ||
|
|
3a6c60d912 | ||
|
|
066c28adb4 | ||
|
|
364ed3209c | ||
|
|
dab6ec28af | ||
|
|
b221250ba7 | ||
|
|
215635634f | ||
|
|
184133a613 | ||
|
|
32248c75cf | ||
|
|
0671c0e89f | ||
|
|
2acadbe11b | ||
|
|
5688c71d2e | ||
|
|
d3c89618f1 | ||
|
|
478ffdb611 | ||
|
|
0b7e5781d5 | ||
|
|
446a53277e | ||
|
|
b2acc1b28d | ||
|
|
27d2fff725 | ||
|
|
0c1f9b3e25 | ||
|
|
cfa4039e9e | ||
|
|
7b62b21e6f | ||
|
|
cc3af4ae7e | ||
|
|
09c44fc935 | ||
|
|
92f441d51f | ||
|
|
d5912513ff | ||
|
|
6417bf3167 | ||
|
|
5bf0694734 | ||
|
|
7b95837663 | ||
|
|
40067df800 | ||
|
|
c5546d71d2 | ||
|
|
307c250240 | ||
|
|
ca1afaa0aa | ||
|
|
809a0b81b2 | ||
|
|
01d5456f9f | ||
|
|
b81605dcf9 | ||
|
|
bb3be2fd17 | ||
|
|
b34da7dd3e | ||
|
|
0cc97ba9f8 | ||
|
|
a754a24d3f | ||
|
|
df209436c8 | ||
|
|
6abd06d435 | ||
|
|
43f6a9fac9 | ||
|
|
e07a152d46 | ||
|
|
e73dcad9a8 | ||
|
|
87de27e4ec | ||
|
|
e851abfd4f | ||
|
|
561dfd2d2e | ||
|
|
4e716ac53b | ||
|
|
12cd7908ef | ||
|
|
1e1cb435a2 | ||
|
|
0bd6d4fdbd | ||
|
|
9f2bd7f2e7 | ||
|
|
a6c5de6ef3 | ||
|
|
86046993b8 | ||
|
|
f7106833ed | ||
|
|
ef35b93569 | ||
|
|
2f5649a90a | ||
|
|
efd07a9afb | ||
|
|
2fad9b2563 | ||
|
|
8d2b74b254 | ||
|
|
3f1a614ac6 | ||
|
|
326284853c | ||
|
|
3ae337b3d8 | ||
|
|
fbef209d2d | ||
|
|
544b060691 | ||
|
|
63bceb49ca | ||
|
|
be9265cb97 | ||
|
|
c7286f8e48 | ||
|
|
a8e76e9198 | ||
|
|
be09af8ca6 | ||
|
|
d47533db08 | ||
|
|
c34944912b | ||
|
|
67b764026f | ||
|
|
9b74665e94 | ||
|
|
855d708464 | ||
|
|
760ecc6ae6 | ||
|
|
2f4bcb17b6 | ||
|
|
78e7517363 | ||
|
|
27e4af57f1 | ||
|
|
1d029a6c3a | ||
|
|
fe547cf56b | ||
|
|
9bddff99d8 | ||
|
|
11fc8a3fa7 | ||
|
|
075ca4715e | ||
|
|
991299b4fc | ||
|
|
84d85c29b7 | ||
|
|
5f1167f0de | ||
|
|
d74b26fbda | ||
|
|
838a60172d | ||
|
|
d6c05d2f9c | ||
|
|
25e74767be | ||
|
|
742a3fcafe | ||
|
|
45f0e14582 | ||
|
|
937c810f7a | ||
|
|
80a68e9a37 | ||
|
|
ce6b3439c9 | ||
|
|
12dd1cb314 | ||
|
|
d420bf0007 | ||
|
|
8e885a8890 | ||
|
|
a5160fbb8a | ||
|
|
2e1ec07b23 | ||
|
|
0dc78a7e72 | ||
|
|
ebd7712862 | ||
|
|
25beefd973 | ||
|
|
2ee65a9bd2 | ||
|
|
d986a5e116 | ||
|
|
8018ce7283 | ||
|
|
a5cdbffa4c | ||
|
|
3b690eac53 | ||
|
|
1cdca18538 | ||
|
|
6d77045aa1 |
4
.github/workflows/build-gui.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -59,7 +59,7 @@ jobs:
|
||||
BUILD_ARCH: ${{ endsWith(matrix.os, 'arm') && 'aarch64' || 'amd64' }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
|
||||
31
.github/workflows/gradle.yaml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -48,7 +48,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -65,7 +65,7 @@ jobs:
|
||||
uses: gradle/actions/setup-gradle@v5
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew shadowJar
|
||||
run: ./gradlew :server:desktop:shadowJar
|
||||
|
||||
- name: Upload the Server JAR as a Build Artifact
|
||||
uses: actions/upload-artifact@v5
|
||||
@@ -87,7 +87,7 @@ jobs:
|
||||
bundle-android:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -113,13 +113,24 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: pnpm i
|
||||
|
||||
- name: Build
|
||||
- name: Build GUI
|
||||
env:
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
run: cd gui && pnpm run build
|
||||
|
||||
- name: Decode keystore secret to file
|
||||
env:
|
||||
ANDROID_STORE_FILE: ${{ secrets.ANDROID_STORE_FILE }}
|
||||
run: |
|
||||
mkdir -p server/android/secrets/
|
||||
echo $ANDROID_STORE_FILE | base64 --decode > server/android/secrets/keystore.jks
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew :server:android:assembleDebug
|
||||
run: ./gradlew :server:android:build
|
||||
env:
|
||||
ANDROID_STORE_PASSWD: ${{ secrets.ANDROID_STORE_PASSWD }}
|
||||
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
|
||||
ANDROID_KEY_PASSWD: ${{ secrets.ANDROID_KEY_PASSWD }}
|
||||
|
||||
- name: Upload the Android Build Artifact
|
||||
uses: actions/upload-artifact@v5
|
||||
@@ -132,7 +143,7 @@ jobs:
|
||||
- name: Prepare for release
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
run: |
|
||||
cp server/android/build/outputs/apk/debug/android-debug.apk ./SlimeVR-android.apk
|
||||
cp server/android/build/outputs/apk/release/android-release.apk ./SlimeVR-android.apk
|
||||
|
||||
- name: Upload to draft release
|
||||
uses: softprops/action-gh-release@v2
|
||||
@@ -154,7 +165,7 @@ jobs:
|
||||
env:
|
||||
BUILD_ARCH: ${{ endsWith(matrix.os, 'arm') && 'aarch64' || 'amd64' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -252,7 +263,7 @@ jobs:
|
||||
needs: [build, test]
|
||||
if: contains(fromJSON('["workflow_dispatch", "create"]'), github.event_name)
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -332,7 +343,7 @@ jobs:
|
||||
env:
|
||||
BUILD_ARCH: ${{ endsWith(matrix.os, 'arm') && 'win-aarch64' || 'win64' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
|
||||
2
.github/workflows/pontoon-pr.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: pull-request
|
||||
|
||||
2
.github/workflows/rebase.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
ref: pontoon
|
||||
submodules: recursive
|
||||
|
||||
63
Cargo.lock
generated
@@ -1273,7 +1273,7 @@ dependencies = [
|
||||
"cc",
|
||||
"memchr",
|
||||
"rustc_version",
|
||||
"toml 0.9.0",
|
||||
"toml 0.9.2",
|
||||
"vswhom",
|
||||
"winreg 0.55.0",
|
||||
]
|
||||
@@ -1431,6 +1431,19 @@ dependencies = [
|
||||
"miniz_oxide 0.8.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "flexi_logger"
|
||||
version = "0.29.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "88a5a6882b2e137c4f2664562995865084eb5a00611fba30c582ef10354c4ad8"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"log",
|
||||
"nu-ansi-term",
|
||||
"regex",
|
||||
"thiserror 2.0.12",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fnv"
|
||||
version = "1.0.7"
|
||||
@@ -2770,6 +2783,15 @@ version = "0.1.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
|
||||
|
||||
[[package]]
|
||||
name = "nu-ansi-term"
|
||||
version = "0.50.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
|
||||
dependencies = [
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-conv"
|
||||
version = "0.1.0"
|
||||
@@ -4380,6 +4402,7 @@ dependencies = [
|
||||
"const_format",
|
||||
"dirs-next",
|
||||
"discord-sdk",
|
||||
"flexi_logger",
|
||||
"glob",
|
||||
"itertools",
|
||||
"libloading 0.8.5",
|
||||
@@ -4759,7 +4782,7 @@ dependencies = [
|
||||
"serde_json",
|
||||
"tauri-utils",
|
||||
"tauri-winres",
|
||||
"toml 0.9.0",
|
||||
"toml 0.9.2",
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
@@ -4817,7 +4840,7 @@ dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tauri-utils",
|
||||
"toml 0.9.0",
|
||||
"toml 0.9.2",
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
@@ -4857,7 +4880,7 @@ dependencies = [
|
||||
"tauri-plugin",
|
||||
"tauri-utils",
|
||||
"thiserror 2.0.12",
|
||||
"toml 0.9.0",
|
||||
"toml 0.9.2",
|
||||
"url",
|
||||
]
|
||||
|
||||
@@ -5067,7 +5090,7 @@ dependencies = [
|
||||
"serde_with",
|
||||
"swift-rs",
|
||||
"thiserror 2.0.12",
|
||||
"toml 0.9.0",
|
||||
"toml 0.9.2",
|
||||
"url",
|
||||
"urlpattern",
|
||||
"uuid",
|
||||
@@ -5284,9 +5307,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.9.0"
|
||||
version = "0.9.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f271e09bde39ab52250160a67e88577e0559ad77e9085de6e9051a2c4353f8f8"
|
||||
checksum = "ed0aee96c12fa71097902e0bb061a5e1ebd766a6636bb605ba401c45c1650eac"
|
||||
dependencies = [
|
||||
"indexmap 2.6.0",
|
||||
"serde",
|
||||
@@ -5294,7 +5317,7 @@ dependencies = [
|
||||
"toml_datetime 0.7.0",
|
||||
"toml_parser",
|
||||
"toml_writer",
|
||||
"winnow 0.7.11",
|
||||
"winnow 0.7.12",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5348,16 +5371,16 @@ dependencies = [
|
||||
"serde_spanned 0.6.9",
|
||||
"toml_datetime 0.6.11",
|
||||
"toml_write",
|
||||
"winnow 0.7.11",
|
||||
"winnow 0.7.12",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml_parser"
|
||||
version = "1.0.0"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b5c1c469eda89749d2230d8156a5969a69ffe0d6d01200581cdc6110674d293e"
|
||||
checksum = "97200572db069e74c512a14117b296ba0a80a30123fbbb5aa1f4a348f639ca30"
|
||||
dependencies = [
|
||||
"winnow 0.7.11",
|
||||
"winnow 0.7.12",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5368,9 +5391,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
|
||||
|
||||
[[package]]
|
||||
name = "toml_writer"
|
||||
version = "1.0.0"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b679217f2848de74cabd3e8fc5e6d66f40b7da40f8e1954d92054d9010690fd5"
|
||||
checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64"
|
||||
|
||||
[[package]]
|
||||
name = "tower-service"
|
||||
@@ -6430,9 +6453,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "winnow"
|
||||
version = "0.7.11"
|
||||
version = "0.7.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd"
|
||||
checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
@@ -6656,7 +6679,7 @@ dependencies = [
|
||||
"tracing",
|
||||
"uds_windows",
|
||||
"windows-sys 0.59.0",
|
||||
"winnow 0.7.11",
|
||||
"winnow 0.7.12",
|
||||
"xdg-home",
|
||||
"zbus_macros 5.4.0",
|
||||
"zbus_names 4.2.0",
|
||||
@@ -6711,7 +6734,7 @@ checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"static_assertions",
|
||||
"winnow 0.7.11",
|
||||
"winnow 0.7.12",
|
||||
"zvariant 5.7.0",
|
||||
]
|
||||
|
||||
@@ -6819,7 +6842,7 @@ dependencies = [
|
||||
"endi",
|
||||
"enumflags2",
|
||||
"serde",
|
||||
"winnow 0.7.11",
|
||||
"winnow 0.7.12",
|
||||
"zvariant_derive 5.7.0",
|
||||
"zvariant_utils 3.2.1",
|
||||
]
|
||||
@@ -6871,5 +6894,5 @@ dependencies = [
|
||||
"quote",
|
||||
"serde",
|
||||
"syn 2.0.87",
|
||||
"winnow 0.7.11",
|
||||
"winnow 0.7.12",
|
||||
]
|
||||
|
||||
64
TRADEMARK.md
@@ -1,33 +1,33 @@
|
||||
## SlimeVR is a trademark or a registered trademark of SlimeVR B.V.
|
||||
|
||||
**Usage of SlimeVR software, hardware, or other intellectual property in this or other repositories does not grant you the right to use SlimeVR trademark as your own.**
|
||||
|
||||
The purpose of a trademark is to remove uncertainty for users and customers regarding the product's manufacturer or endorsement. You're not allowed to market your product using SlimeVR name, and your usage of the name should be only factual and descriptive. For example, calling original SlimeVR products SlimeVR or describing compatibility of other products or derivatives. This applies to all products, including software, and hardware including non-official Full-Body Trackers.
|
||||
|
||||
**Here are a few _acceptable_ uses of SlimeVR name when selling unofficial Slime trackers:**
|
||||
* SlimeVR-compatible trackers
|
||||
* Unofficial SlimeVR trackers / Non-official SlimeVR trackers
|
||||
* DIY SlimeVR trackers
|
||||
* Third-party SlimeVR Trackers
|
||||
* Custom SlimeVR-compatible trackers
|
||||
* < Your Brand > Slime Trackers
|
||||
* Using "SlimeVR" as a search tag
|
||||
|
||||
**_Unacceptable_ uses include, but are not limited to:**
|
||||
* SlimeVR store
|
||||
* Buy SlimeVR
|
||||
* SlimeVR Trackers
|
||||
* Original SlimeVR
|
||||
* Official SlimeVR
|
||||
* SlimeVR BMI270 (or any other IMU model along with SlimeVR name)
|
||||
* < Your brand > SlimeVR / < your brand > SlimeVR Trackers
|
||||
|
||||
Use of the SlimeVR name that can cause confusion is not allowed in any part of the listing, including, but not limited to: product title, product description, product metadata, site title, site name, site metadata, site texts, social media posts, or other advertisement.
|
||||
|
||||
Also, please ensure you use the correct spelling and capitalization: only **"SlimeVR" is acceptable**. Not "Slimevr", "slimevr", or "Slime VR". You're allowed to use the word "slime" as you wish, it's not a trademark.
|
||||
|
||||
Please understand that we have an obligation to reduce confusion for the customers, and we believe that our usage terms are generous compared to many other companies and products. This applies to all sellers or derivative products, we do not make exceptions.
|
||||
|
||||
---
|
||||
|
||||
## SlimeVR is a trademark or a registered trademark of SlimeVR B.V.
|
||||
|
||||
**Usage of SlimeVR software, hardware, or other intellectual property in this or other repositories does not grant you the right to use SlimeVR trademark as your own.**
|
||||
|
||||
The purpose of a trademark is to remove uncertainty for users and customers regarding the product's manufacturer or endorsement. You're not allowed to market your product using SlimeVR name, and your usage of the name should be only factual and descriptive. For example, calling original SlimeVR products SlimeVR or describing compatibility of other products or derivatives. This applies to all products, including software, and hardware including non-official Full-Body Trackers.
|
||||
|
||||
**Here are a few _acceptable_ uses of SlimeVR name when selling unofficial Slime trackers:**
|
||||
* SlimeVR-compatible trackers
|
||||
* Unofficial SlimeVR trackers / Non-official SlimeVR trackers
|
||||
* DIY SlimeVR trackers
|
||||
* Third-party SlimeVR Trackers
|
||||
* Custom SlimeVR-compatible trackers
|
||||
* < Your Brand > Slime Trackers
|
||||
* Using "SlimeVR" as a search tag
|
||||
|
||||
**_Unacceptable_ uses include, but are not limited to:**
|
||||
* SlimeVR store
|
||||
* Buy SlimeVR
|
||||
* SlimeVR Trackers
|
||||
* Original SlimeVR
|
||||
* Official SlimeVR
|
||||
* SlimeVR BMI270 (or any other IMU model along with SlimeVR name)
|
||||
* < Your brand > SlimeVR / < your brand > SlimeVR Trackers
|
||||
|
||||
Use of the SlimeVR name that can cause confusion is not allowed in any part of the listing, including, but not limited to: product title, product description, product metadata, site title, site name, site metadata, site texts, social media posts, or other advertisement.
|
||||
|
||||
Also, please ensure you use the correct spelling and capitalization: only **"SlimeVR" is acceptable**. Not "Slimevr", "slimevr", or "Slime VR". You're allowed to use the word "slime" as you wish, it's not a trademark.
|
||||
|
||||
Please understand that we have an obligation to reduce confusion for the customers, and we believe that our usage terms are generous compared to many other companies and products. This applies to all sellers or derivative products, we do not make exceptions.
|
||||
|
||||
---
|
||||
|
||||
If you have any questions about SlimeVR trademark or copyrighted materials, you can reach out to us at *tm[at]slimevr.dev*.
|
||||
287
flake.lock
generated
@@ -1,61 +1,5 @@
|
||||
{
|
||||
"nodes": {
|
||||
"cachix": {
|
||||
"inputs": {
|
||||
"devenv": [
|
||||
"devenv"
|
||||
],
|
||||
"flake-compat": [
|
||||
"devenv"
|
||||
],
|
||||
"git-hooks": [
|
||||
"devenv",
|
||||
"git-hooks"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"devenv",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1748883665,
|
||||
"narHash": "sha256-R0W7uAg+BLoHjMRMQ8+oiSbTq8nkGz5RDpQ+ZfxxP3A=",
|
||||
"owner": "cachix",
|
||||
"repo": "cachix",
|
||||
"rev": "f707778d902af4d62d8dd92c269f8e70de09acbe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"ref": "latest",
|
||||
"repo": "cachix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"devenv": {
|
||||
"inputs": {
|
||||
"cachix": "cachix",
|
||||
"flake-compat": "flake-compat",
|
||||
"git-hooks": "git-hooks",
|
||||
"nix": "nix",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1757003908,
|
||||
"narHash": "sha256-Op3cnPTav+ObcL4R4BGuWHEFxW6YS2A0aE3Av6sZN2g=",
|
||||
"owner": "cachix",
|
||||
"repo": "devenv",
|
||||
"rev": "ac8ebf17828c0e7d9be0270d359123fffcc6f066",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "devenv",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -77,217 +21,21 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747046372,
|
||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"devenv",
|
||||
"nix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1733312601,
|
||||
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_2": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756770412,
|
||||
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
|
||||
"lastModified": 1762980239,
|
||||
"narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "4524271976b625a4a605beefd893f270620fd751",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "flake-parts",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"git-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
"devenv",
|
||||
"flake-compat"
|
||||
],
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"devenv",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1750779888,
|
||||
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"devenv",
|
||||
"git-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"rev": "52a2caecc898d0b46b2b905f058ccc5081f842da",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"mk-shell-bin": {
|
||||
"locked": {
|
||||
"lastModified": 1677004959,
|
||||
"narHash": "sha256-/uEkr1UkJrh11vD02aqufCxtbF5YnhRTIKlx5kyvf+I=",
|
||||
"owner": "rrbutani",
|
||||
"repo": "nix-mk-shell-bin",
|
||||
"rev": "ff5d8bd4d68a347be5042e2f16caee391cd75887",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rrbutani",
|
||||
"repo": "nix-mk-shell-bin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
"devenv",
|
||||
"flake-compat"
|
||||
],
|
||||
"flake-parts": "flake-parts",
|
||||
"git-hooks-nix": [
|
||||
"devenv",
|
||||
"git-hooks"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"devenv",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-23-11": [
|
||||
"devenv"
|
||||
],
|
||||
"nixpkgs-regression": [
|
||||
"devenv"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1755029779,
|
||||
"narHash": "sha256-3+GHIYGg4U9XKUN4rg473frIVNn8YD06bjwxKS1IPrU=",
|
||||
"owner": "cachix",
|
||||
"repo": "nix",
|
||||
"rev": "b0972b0eee6726081d10b1199f54de6d2917f861",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"ref": "devenv-2.30",
|
||||
"repo": "nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix2container": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752002763,
|
||||
"narHash": "sha256-JYAkdZvpdSx9GUoHPArctYMypSONob4DYKRkOubUWtY=",
|
||||
"owner": "nlewo",
|
||||
"repo": "nix2container",
|
||||
"rev": "4f2437f6a1844b843b380d483087ae6d461240ee",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nlewo",
|
||||
"repo": "nix2container",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixgl": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752054764,
|
||||
"narHash": "sha256-Ob/HuUhANoDs+nvYqyTKrkcPXf4ZgXoqMTQoCK0RFgQ=",
|
||||
"owner": "guibou",
|
||||
"repo": "nixGL",
|
||||
"rev": "a8e1ce7d49a149ed70df676785b07f63288f53c5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "guibou",
|
||||
"repo": "nixGL",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
@@ -309,11 +57,11 @@
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1754788789,
|
||||
"narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=",
|
||||
"lastModified": 1761765539,
|
||||
"narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "a73b9c743612e4244d865a2fdee11865283c04e6",
|
||||
"rev": "719359f4562934ae99f5443f20aa06c2ffff91fc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -324,12 +72,8 @@
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"devenv": "devenv",
|
||||
"fenix": "fenix",
|
||||
"flake-parts": "flake-parts_2",
|
||||
"mk-shell-bin": "mk-shell-bin",
|
||||
"nix2container": "nix2container",
|
||||
"nixgl": "nixgl",
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
@@ -349,21 +93,6 @@
|
||||
"repo": "rust-analyzer",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
||||
182
flake.nix
@@ -3,154 +3,72 @@
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
devenv = {
|
||||
url = "github:cachix/devenv";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nix2container = {
|
||||
url = "github:nlewo/nix2container";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
mk-shell-bin.url = "github:rrbutani/nix-mk-shell-bin";
|
||||
nixgl = {
|
||||
url = "github:guibou/nixGL";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||
fenix = {
|
||||
url = "github:nix-community/fenix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
nixConfig = {
|
||||
extra-trusted-public-keys = "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=";
|
||||
extra-substituters = "https://devenv.cachix.org";
|
||||
};
|
||||
outputs = inputs@{ self, nixpkgs, flake-parts, fenix, ... }:
|
||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||
systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
|
||||
|
||||
outputs = inputs @ {
|
||||
self,
|
||||
flake-parts,
|
||||
nixgl,
|
||||
...
|
||||
}:
|
||||
flake-parts.lib.mkFlake {inherit inputs;} {
|
||||
imports = [
|
||||
inputs.devenv.flakeModule
|
||||
];
|
||||
systems = ["x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
|
||||
perSystem = { system, lib, ... }:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
|
||||
perSystem = {
|
||||
config,
|
||||
self',
|
||||
inputs',
|
||||
pkgs,
|
||||
system,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
# Per-system attributes can be defined here. The self' and inputs'
|
||||
# module parameters provide easy access to attributes of the same
|
||||
# system.
|
||||
|
||||
# Equivalent to inputs'.nixpkgs.legacyPackages.hello;
|
||||
# packages.default = pkgs.hello;
|
||||
_module.args.pkgs = import self.inputs.nixpkgs {
|
||||
inherit system;
|
||||
overlays = [nixgl.overlay];
|
||||
};
|
||||
|
||||
devenv.shells.default = let
|
||||
fenixpkgs = inputs'.fenix.packages;
|
||||
rust_toolchain = lib.importTOML ./rust-toolchain.toml;
|
||||
fenixPkgs = fenix.packages.${system};
|
||||
|
||||
rustToolchainSet = fenixPkgs.fromToolchainName {
|
||||
name = rust_toolchain.toolchain.channel;
|
||||
sha256 = "sha256-+9FmLhAOezBZCOziO0Qct1NOrfpjNsXxc/8I0c7BdKE=";
|
||||
};
|
||||
in {
|
||||
name = "slimevr";
|
||||
|
||||
imports = [
|
||||
# This is just like the imports in devenv.nix.
|
||||
# See https://devenv.sh/guides/using-with-flake-parts/#import-a-devenv-module
|
||||
# ./devenv-foo.nix
|
||||
];
|
||||
devShells.default = pkgs.mkShell {
|
||||
name = "slimevr";
|
||||
|
||||
# https://devenv.sh/reference/options/
|
||||
packages =
|
||||
(with pkgs; [
|
||||
pkgs.nixgl.nixGLIntel
|
||||
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
|
||||
libusb1
|
||||
])
|
||||
++ lib.optionals pkgs.stdenv.isDarwin [
|
||||
pkgs.darwin.apple_sdk.frameworks.Security
|
||||
];
|
||||
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
|
||||
];
|
||||
|
||||
languages.java = {
|
||||
enable = true;
|
||||
gradle.enable = true;
|
||||
jdk.package = pkgs.jdk17;
|
||||
};
|
||||
languages.kotlin.enable = true;
|
||||
nativeBuildInputs = with pkgs; [ pnpm nodejs_22 gradle ];
|
||||
|
||||
languages.javascript = {
|
||||
enable = true;
|
||||
corepack.enable = true;
|
||||
pnpm.enable = true;
|
||||
npm.enable = true;
|
||||
};
|
||||
|
||||
languages.rust = {
|
||||
enable = true;
|
||||
toolchain = fenixpkgs.fromToolchainName {
|
||||
name = rust_toolchain.toolchain.channel;
|
||||
sha256 = "sha256-+9FmLhAOezBZCOziO0Qct1NOrfpjNsXxc/8I0c7BdKE=";
|
||||
};
|
||||
components = rust_toolchain.toolchain.components;
|
||||
};
|
||||
|
||||
env = {
|
||||
RUST_BACKTRACE = 1;
|
||||
GIO_EXTRA_MODULES = "${pkgs.glib-networking}/lib/gio/modules:${pkgs.dconf.lib}/lib/gio/modules";
|
||||
};
|
||||
|
||||
enterShell = with pkgs; ''
|
||||
# Export a LD_LIBRARY_PATH without libudev-zero as libgudev not likey
|
||||
export SLIMEVR_RUST_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
|
||||
export LD_LIBRARY_PATH="${libudev-zero}/lib:${libayatana-appindicator}/lib:$LD_LIBRARY_PATH"
|
||||
# GStreamer plugins won't be found without this
|
||||
export GST_PLUGIN_SYSTEM_PATH_1_0="${pkgs.gst_all_1.gstreamer.out}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-base}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-good}/lib/gstreamer-1.0:${pkgs.gst_all_1.gst-plugins-bad}/lib/gstreamer-1.0"
|
||||
'';
|
||||
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"
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
flake = {
|
||||
# The usual flake attributes can be defined here, including system-
|
||||
# agnostic ones like nixosModule and system-enumerating ones, although
|
||||
# those are more easily expressed in perSystem.
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -12,24 +12,25 @@
|
||||
"@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",
|
||||
"@tailwindcss/typography": "^0.5.15",
|
||||
"@tanstack/react-query": "^5.48.0",
|
||||
"@tauri-apps/api": "~2",
|
||||
"@tauri-apps/plugin-dialog": "~2",
|
||||
"@tauri-apps/plugin-fs": "~2",
|
||||
"@tauri-apps/plugin-http": "~2",
|
||||
"@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-opener": "~2",
|
||||
"@tauri-apps/plugin-os": "~2",
|
||||
"@tauri-apps/plugin-shell": "~2",
|
||||
"@tauri-apps/plugin-store": "~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",
|
||||
"ajv": "^8.17.1",
|
||||
"browser-fs-access": "^0.35.0",
|
||||
"classnames": "^2.5.1",
|
||||
"convert": "^5.12.0",
|
||||
"flatbuffers": "22.10.26",
|
||||
"intl-pluralrules": "^2.0.1",
|
||||
"ip-num": "^1.5.1",
|
||||
@@ -70,7 +71,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@dword-design/eslint-plugin-import-alias": "^4.0.9",
|
||||
"@openapi-codegen/cli": "^2.0.2",
|
||||
"@openapi-codegen/cli": "^3.1.0",
|
||||
"@openapi-codegen/typescript": "^8.0.2",
|
||||
"@stylistic/eslint-plugin": "^5.5.0",
|
||||
"@tailwindcss/forms": "^0.5.9",
|
||||
@@ -83,19 +84,18 @@
|
||||
"@types/react-modal": "3.16.3",
|
||||
"@types/semver": "^7.5.8",
|
||||
"@types/three": "^0.163.0",
|
||||
"@typescript-eslint/eslint-plugin": "^7.18.0",
|
||||
"@typescript-eslint/parser": "^7.18.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.48.1",
|
||||
"@typescript-eslint/parser": "^8.48.1",
|
||||
"@vitejs/plugin-react": "^4.3.2",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"cross-env": "^7.0.3",
|
||||
"dotenv": "^16.4.5",
|
||||
"eslint": "^9.39.0",
|
||||
"eslint-config-airbnb": "^19.0.4",
|
||||
"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": "^4.6.2",
|
||||
"eslint-plugin-react-hooks": "^7.0.1",
|
||||
"globals": "^15.10.0",
|
||||
"prettier": "^3.3.3",
|
||||
"rollup-plugin-visualizer": "^5.12.0",
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = يمكنك النقر ببطء مرتين على جهاز ال
|
||||
tips-turn_on_tracker = هل تستخدم أجهزة تعقب SlimeVR الرسمية؟ تذكر <b><em> أن تشغل أجهزة التعقب </em></b> بعد توصيلها بالكمبيوتر!
|
||||
tips-failed_webgl = فشل تهيئة WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = غير محدد
|
||||
@@ -197,7 +200,7 @@ widget-overlay-is_mirrored_label = عكس تراكب الشاشة
|
||||
|
||||
widget-drift_compensation-clear = حذف تعويض الانجراف
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = مسح إعادة تعيين التركيب
|
||||
|
||||
@@ -314,7 +317,6 @@ tracker-settings-forget = انسي جهاز التعقب
|
||||
tracker-settings-forget-description = يزيل جهاز التعقب من خادم SlimeVR ويمنعه من الاتصال به حتى يتم إعادة تشغيل الخادم. لن تضيع تكوين جهاز التعقب.
|
||||
tracker-settings-forget-label = ننسى جهاز التعقب
|
||||
tracker-settings-update-up_to_date = حديث
|
||||
tracker-settings-update-available = { $versionName } متاح الآن
|
||||
tracker-settings-update = التحديث الآن
|
||||
tracker-settings-update-title = إصدار البرنامج الثابت
|
||||
|
||||
@@ -791,6 +793,12 @@ settings-utils-advanced-open_logs = مجلد السجلات
|
||||
settings-utils-advanced-open_logs-description = افتح مجلد سجلات SlimeVR في مستكشف الملفات ، والذي يحتوي على سجلات التطبيق
|
||||
settings-utils-advanced-open_logs-label = فتح المجلد
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = تخطى الإعداد
|
||||
@@ -806,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 =
|
||||
@@ -851,13 +854,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = مرحبا بكم في سلايم في ار
|
||||
onboarding-home-start = هيا نتجهز!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = العودة إلى تعيين أجهزة التعقب
|
||||
onboarding-enter_vr-title = حان وقت دخول في ار!
|
||||
onboarding-enter_vr-description = ضع كل أجهزة التعقب ثم أدخل في ار!
|
||||
onboarding-enter_vr-ready = أنا جاهز
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = أنت جاهز تمامًا!
|
||||
@@ -1083,7 +1079,6 @@ onboarding-automatic_mounting-put_trackers_on-next = ارتديت جميع أج
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = العودة إلى برنامج تعليم إعادة التعيين
|
||||
onboarding-manual_proportions-title = نسب الجسم اليدوية
|
||||
onboarding-manual_proportions-fine_tuning_button = ضبط النسب تلقائيا
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = يرجى توصيل سماعة رأس VR لاستخدام الضبط الدقيق التلقائي
|
||||
@@ -1180,25 +1175,8 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>يرجى إعادة القياسات والتأكد من صحتها.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = الرجوع
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = النسب المقاسة
|
||||
onboarding-scaled_proportions-description = لكي تعمل أجهزة التعقب SlimeVR ، نحتاج إلى معرفة طول عظامك. ستستخدم نسبة متوسطة وقياسها بناء على طولك.
|
||||
onboarding-scaled_proportions-manual_height-title = تكوين طولك
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = سيتم استخدام هذا الطول كخط أساس لنسب جسمك.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR غير متصل حاليا ب SlimeVR ، لذلك لا يمكن أن تستند القياسات إلى سماعة الرأس الخاصة بك. <b>تابع على مسؤوليتك الخاصة أو تحقق من المستندات!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = طولك الكامل هو
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = الارتفاع المقدر لسماعة الرأس هو:
|
||||
onboarding-scaled_proportions-manual_height-next_step = المتابعة والحفظ
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = وصّل سماعة رأس VR
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = تأكد من توصيل وحدات التحكم الخاصة بك وتخصيصها بشكل صحيح ليديك
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = إعادة ضبط نسب جسمك
|
||||
onboarding-scaled_proportions-reset_proportion-description = لتعيين نسب جسمك بناء على طولك ، تحتاج إلى إعادة تعيين جميع نسبك. سيؤدي ذلك إلى مسح أي نسب قمت بتكوينها وتوفير تكوين أساسي.
|
||||
onboarding-scaled_proportions-done-title = مجموعة نسب الجسم
|
||||
onboarding-scaled_proportions-done-description = قد تم الآن تكوين نسب جسمك بناء على طولك.
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1246,8 +1224,6 @@ firmware_tool-flash_method_step-description = الرجاء حدد طريقة ا
|
||||
firmware_tool-flashbtn_step = اضغط على زر التمهيد
|
||||
firmware_tool-flashbtn_step-description = قبل الانتقال إل الخطوة التالية، هناك بعض الأشياء التي عليك القيام بها
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = أوقف تشغيل جهاز التعقب، قم بإزالة العلبة (إن وجدت)، وقم بتوصيل كابل USB بهذا الكمبيوتر ، ثم قم بإحدى الخطوات التالية وفقا لمراجعة لوحة SlimeVR:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = قم بتشغيل جهاز التعقب أثناء تقصير دائرة لوحة FLASH المستطيلة الثانية من الحافة الموجودة على الجانب العلوي من اللوحة ، والدرع المعدني للمتحكم الدقيق
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = قم بتشغيل جهاز التعقب أثناء تقصير دائرة لوحة FLASH الدائرية على الجانب العلوي من اللوحة ، والدرع المعدني للمتحكم الدقيق
|
||||
|
||||
## firmware tool build status
|
||||
|
||||
@@ -1288,3 +1264,6 @@ unknown_device-modal-forget = تجاهلها
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = Pro výběr trackeru na něj můžete dvakrát pomalu poklepat,
|
||||
tips-turn_on_tracker = Máte oficiální SlimeVR trackery? <b><em>Po připojení k PC je nezapomeňte zapnout!</em></b>
|
||||
tips-failed_webgl = Načtení WebGL selhalo.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Nepřiřazeno
|
||||
@@ -167,7 +170,7 @@ widget-overlay-is_mirrored_label = Zobrazit překrytí jako zrcadlo
|
||||
|
||||
widget-drift_compensation-clear = Vymazat kompenzaci driftu
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Vymazat reset nasazení
|
||||
|
||||
@@ -287,7 +290,6 @@ tracker-settings-forget-description = Odebere tracker z SlimeVR Serveru a zabrá
|
||||
tracker-settings-forget-label = Zapomenout tracker
|
||||
tracker-settings-update-low-battery = Nelze provést aktualizaci. Baterie má méně než 50%
|
||||
tracker-settings-update-up_to_date = Aktuální
|
||||
tracker-settings-update-available = { $versionName } je nyní dostupný
|
||||
tracker-settings-update = Aktualizovat nyní
|
||||
tracker-settings-update-title = Verze Firmwareu
|
||||
|
||||
@@ -761,6 +763,12 @@ settings-utils-advanced-open_logs = Složka s záznamy protokolů
|
||||
settings-utils-advanced-open_logs-description = Otevřít složku s konfiguračními soubory pro SlimeVR v průzkumníku souborů?
|
||||
settings-utils-advanced-open_logs-label = Otevřít složku
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Přeskočit nastavení
|
||||
@@ -776,11 +784,6 @@ onboarding-setup_warning-cancel = Pokračovat v nastavení
|
||||
## Wi-Fi setup
|
||||
|
||||
onboarding-wifi_creds-back = Zpět na úvod
|
||||
onboarding-wifi_creds = Zadání přihlašovacích údajů k Wi-Fi
|
||||
# This cares about multilines
|
||||
onboarding-wifi_creds-description =
|
||||
Sledovací zařízení budou tato přihlašovací údaje používat k připojení.
|
||||
Použijte prosím přihlašovací údaje, ke kterým jste aktuálně připojeni.
|
||||
onboarding-wifi_creds-skip = Přeskočit nastavení Wi-Fi
|
||||
onboarding-wifi_creds-submit = Odeslat!
|
||||
onboarding-wifi_creds-ssid =
|
||||
@@ -814,13 +817,6 @@ onboarding-reset_tutorial-1 =
|
||||
onboarding-home = Vítejte k SlimeVR
|
||||
onboarding-home-start = Pusťme se do toho!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Zpět na přiřazení trackerů
|
||||
onboarding-enter_vr-title = Čas vstoupit do VR!
|
||||
onboarding-enter_vr-description = Nasaďte si všechny trackery a pak vstupte do VR!
|
||||
onboarding-enter_vr-ready = Jsem připraven
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Vše je připraveno!
|
||||
@@ -985,7 +981,6 @@ onboarding-automatic_mounting-put_trackers_on-next = Mám nasazené všechny tra
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Zpět na tutoriál
|
||||
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
|
||||
@@ -1084,30 +1079,8 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>Proveďte prosím přeměření a ujistěte se, že jsou hodnoty správné.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = Jít zpět
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = Škálované proporce
|
||||
onboarding-scaled_proportions-description = Aby trackery SlimeVR fungovaly, potřebujeme znát délku vašich kostí. Tímto se použije průměrný poměr a měřítko na základě vaší výšky.
|
||||
onboarding-scaled_proportions-manual_height-title = Nakonfigurovat vaší výšku
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = Tato výška bude použita jak zaklad pro vaše tělesné proporce.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR není momentálně připojen k SlimeVR, takže měření nemůže být založeno na vašem headsetu. <b>Pokračujte na vlastní nebezpečí nebo se podívejte do dokumentace!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = Vaše celková výška je
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = Vaše odhadovaná výška headsetu je:
|
||||
onboarding-scaled_proportions-manual_height-next_step = Uložit a pokračovat
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
Právě používáte manuální způsob nastavení škálování proporcí!
|
||||
<b>Tento režim je doporučen pouze pokud nepoužíváte HMD s SlimeVR</b>
|
||||
|
||||
Abyste mohli používat automatcky škálované proporce, prosím:
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = Připojte VR headset
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = Ujistěte se, že jsou vaše ovladače připojeny a správně přirazeny k vaším rukám
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = Obnovení proporcí vašeho těla
|
||||
onboarding-scaled_proportions-reset_proportion-description = Chcete-li nastavit tělesné proporce podle vaší výšky, předem musíte obnovit všechny vaše proporce. Tato operace obnoví všechny proporce, které jste nakonfigurovali. a následně se obnoví výchozí konfigurace.
|
||||
onboarding-scaled_proportions-done-title = Proporce těla byla nastavena
|
||||
onboarding-scaled_proportions-done-description = Vaše proporce těla by teď měli být nakonfigurovány na základě vaší výšky.
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1169,9 +1142,6 @@ firmware_tool-flash_method_step-description = Prosím zvolte metodu flashování
|
||||
firmware_tool-flashbtn_step = Stiskněte tlačítko bootu btn
|
||||
firmware_tool-flashbtn_step-description = Než přejdeme na další krok, je tady pár věcí které musíte udělat
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = Vypněte tracker, vyndejte z obalu (jestli v nějakém je), Připojte USB kabel k tomuto počítači a poté následujte jeden z kroků revize odpovídající k vaší verzi desky trackeru SlimeVR:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = Zapněte tracker při tom co spojujete (zkratujete) obdelníkovou podložku FLASH z okraje na vrchní straně desky trackeru, a kovového obalu microkontroleru
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = Zapněte tracker při spojování (zkratování) kruhové FLASH podložky na vrchní straně desky trackeru, a kovového štítu microkontrolleru
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = Zapněte tracker při držení tlačítka FLASH na vrchní straně desky trackeru
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
Před flashováním, pravděpodobně budete muset přepnout tracker do bootloader režimu.
|
||||
Ve většině případů to znamená stisknutí boot tlačítka na desce trakeru před tím než začne proces flashování.
|
||||
@@ -1299,3 +1269,6 @@ 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
|
||||
|
||||
|
||||
@@ -24,6 +24,9 @@ tips-do_not_move_heels = Sørg for, at dine hæle ikke bevæger sig under optage
|
||||
tips-file_select = Træk og slip filer for at bruge, eller <u>gennemse</u>.
|
||||
tips-tap_setup = Du kan trykke langsomt 2 gange på din tracker for at vælge den i stedet for at vælge den i menuen.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Ikke tildelt
|
||||
@@ -121,7 +124,7 @@ widget-overlay-is_mirrored_label = Vis Overlejring som Spejl
|
||||
|
||||
widget-drift_compensation-clear = Klar afdriftskompensation
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
|
||||
## Widget: Developer settings
|
||||
@@ -460,6 +463,12 @@ settings-osc-vmc-vrm-file_select = Træk og slip en model, du vil bruge, eller <
|
||||
## Advanced settings
|
||||
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Spring opsætning over
|
||||
@@ -474,11 +483,6 @@ onboarding-setup_warning-cancel = Fortsæt konfigurationen
|
||||
## Wi-Fi setup
|
||||
|
||||
onboarding-wifi_creds-back = Gå tilbage til introduktion
|
||||
onboarding-wifi_creds = Indtast Wi-Fi-oplysninger
|
||||
# This cares about multilines
|
||||
onboarding-wifi_creds-description =
|
||||
Trackerne bruger disse oplysninger til at oprette forbindelse trådløst.
|
||||
Brug de oplysninger, du i øjeblikket har forbindelse til.
|
||||
onboarding-wifi_creds-skip = Spring Wi-Fi-indstillinger over
|
||||
onboarding-wifi_creds-submit = Færdig!
|
||||
onboarding-wifi_creds-ssid =
|
||||
@@ -498,13 +502,6 @@ onboarding-reset_tutorial = Start forfra
|
||||
onboarding-home = Velkommen til SlimeVR
|
||||
onboarding-home-start = Lad os komme i gang!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Gå tilbage til Tracker-tildeler
|
||||
onboarding-enter_vr-title = Tid til at gå ind i VR!
|
||||
onboarding-enter_vr-description = Tag alle dine trackere på, og gå derefter på VR!
|
||||
onboarding-enter_vr-ready = Jeg er klar
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Du er klar!
|
||||
@@ -612,10 +609,7 @@ onboarding-automatic_proportions-verify_results-redo = prøv igen
|
||||
onboarding-automatic_proportions-done-title = Krop målt og gemt.
|
||||
onboarding-automatic_proportions-done-description = Kalibreringen af dine kropsproportioner er fuldført!
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -657,3 +651,6 @@ home-no_trackers = Ingen trackere registreret eller tildelt
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,13 @@ tips-tap_setup = Sie können langsam 2 Mal auf Ihren Tracker tippen, um ihn ausz
|
||||
tips-turn_on_tracker = Verwenden Sie offizielle SlimeVR-Tracker? Vergessen Sie nicht den <b><em>Tracker einzuschalten</em></b>, nachdem Sie ihn an den PC angeschlossen haben!
|
||||
tips-failed_webgl = Fehler beim Initialisieren von WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
unit-meter = Meter
|
||||
unit-foot = Fuß
|
||||
unit-inch = Zoll
|
||||
unit-cm = Zentimeter
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Nicht zugewiesen
|
||||
@@ -95,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 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
|
||||
@@ -111,6 +120,9 @@ board_type-GLOVE_IMU_SLIMEVR_DEV = SlimeVR Dev-IMU-Handschuh
|
||||
|
||||
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.
|
||||
@@ -128,6 +140,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
|
||||
@@ -161,7 +176,10 @@ 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
|
||||
|
||||
## Serial detection stuff
|
||||
|
||||
@@ -185,7 +203,9 @@ navbar-settings = Einstellungen
|
||||
## Biovision hierarchy recording
|
||||
|
||||
bvh-start_recording = BVH aufnehmen
|
||||
bvh-stop_recording = BVH-Aufnahme speichern
|
||||
bvh-recording = Aufnahme läuft...
|
||||
bvh-save_title = BVH-Aufnahme speichern
|
||||
|
||||
## Tracking pause
|
||||
|
||||
@@ -202,9 +222,9 @@ widget-overlay-is_mirrored_label = Visualisierung spiegeln
|
||||
|
||||
widget-drift_compensation-clear = Driftkompensation zurücksetzen
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Befestigungs-Reset zurücksetzen
|
||||
widget-clear_mounting = Tracker-Ausrichtung zurücksetzen
|
||||
|
||||
## Widget: Developer settings
|
||||
|
||||
@@ -226,6 +246,7 @@ widget-imu_visualizer-rotation_raw = Rohe Drehung
|
||||
widget-imu_visualizer-rotation_preview = Vorschau
|
||||
widget-imu_visualizer-acceleration = Beschleunigung
|
||||
widget-imu_visualizer-position = Position
|
||||
widget-imu_visualizer-stay_aligned = Stay Aligned
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
@@ -253,6 +274,7 @@ tracker-table-column-temperature = Temp. °C
|
||||
tracker-table-column-linear-acceleration = Beschleunigung X/Y/Z
|
||||
tracker-table-column-rotation = Rotation X/Y/Z
|
||||
tracker-table-column-position = Position X/Y/Z
|
||||
tracker-table-column-stay_aligned = Stay Aligned
|
||||
tracker-table-column-url = Adresse
|
||||
|
||||
## Tracker rotation
|
||||
@@ -266,7 +288,7 @@ tracker-rotation-back = Hinten
|
||||
tracker-rotation-back_left = Hinten-Links
|
||||
tracker-rotation-back_right = Hinten-Rechts
|
||||
tracker-rotation-custom = Benutzerdefiniert
|
||||
tracker-rotation-overriden = (von Befestigungs-Reset überschrieben)
|
||||
tracker-rotation-overriden = (von der Tracker-Ausrichtung überschrieben)
|
||||
|
||||
## Tracker information
|
||||
|
||||
@@ -318,9 +340,11 @@ 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-available = { $versionName } ist jetzt Verfügbar
|
||||
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
|
||||
|
||||
@@ -388,15 +412,20 @@ mounting_selection_menu-close = Schließen
|
||||
|
||||
settings-sidebar-title = Einstellungen
|
||||
settings-sidebar-general = Allgemein
|
||||
settings-sidebar-steamvr = SteamVR
|
||||
settings-sidebar-tracker_mechanics = Tracker-Mechanik
|
||||
settings-sidebar-stay_aligned = Stay Aligned
|
||||
settings-sidebar-fk_settings = FK-Einstellungen
|
||||
settings-sidebar-gesture_control = Gestensteuerung
|
||||
settings-sidebar-interface = Bedienoberfläche
|
||||
settings-sidebar-osc_router = OSC-Router
|
||||
settings-sidebar-osc_trackers = VRChat OSC-Tracker
|
||||
settings-sidebar-osc_vmc = VMC
|
||||
settings-sidebar-utils = Werkzeuge
|
||||
settings-sidebar-serial = Serielle Konsole
|
||||
settings-sidebar-appearance = Erscheinungsbild
|
||||
settings-sidebar-home = Startbildschirm
|
||||
settings-sidebar-checklist = Tracking-Checkliste
|
||||
settings-sidebar-notifications = Benachrichtigungen
|
||||
settings-sidebar-behavior = Verhalten
|
||||
settings-sidebar-firmware-tool = DIY Firmware-Tool
|
||||
@@ -472,20 +501,29 @@ settings-general-tracker_mechanics-drift_compensation_warning-cancel = Abbrechen
|
||||
settings-general-tracker_mechanics-drift_compensation_warning-done = Ich verstehe
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = Kompensierungsmenge
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Nutze die letzten x Resets
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Automatische Befestigungs-Reset Kalibrierung speichern
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Automatische Tracker-Ausrichtung speichern
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
Speichert die automatische Befestigungs-Reset Kalibrierung für die Tracker zwischen den Neustarts. Nützlich
|
||||
Speichert die automatische Tracker-Ausrichtung für die Tracker zwischen den Neustarts. Nützlich
|
||||
wenn Sie einen Anzug tragen, bei dem sich die Tracker zwischen den Sitzungen nicht bewegen. <b>Für normale Benutzer nicht zu empfehlen!</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Befestigungs-Reset speichern
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Tracker-Ausrichtung speichern
|
||||
settings-general-tracker_mechanics-use_mag_on_all_trackers = Verwende das Magnetometer auf allen IMU-Trackern, die dies unterstützen.
|
||||
settings-general-tracker_mechanics-use_mag_on_all_trackers-description =
|
||||
Verwendet das Magnetometer auf allen Trackern, die über eine kompatible Firmware verfügen, um den Drift in stabilen magnetischen Umgebungen zu reduzieren.
|
||||
Kann pro Tracker in den Einstellungen des Trackers deaktiviert werden. <b>Bitte schalten Sie keinen der Tracker aus, während Sie dies umschalten!</b>
|
||||
settings-general-tracker_mechanics-use_mag_on_all_trackers-label = Magnetometer auf Trackern verwenden
|
||||
settings-stay_aligned = Stay Aligned
|
||||
settings-stay_aligned-description = Stay Aligned reduziert Drift, indem es deine Tracker schrittweise an deine entspannten Posen anpasst.
|
||||
settings-stay_aligned-setup-label = Stay Aligned einrichten
|
||||
settings-stay_aligned-setup-description = Sie müssen Stay Aligned einrichten, um es zu aktivieren.
|
||||
settings-stay_aligned-warnings-drift_compensation = ⚠ Bitte schalten Sie die Driftkompensation aus! Diese steht in Konflikt mit Stay Aligned.
|
||||
settings-stay_aligned-enabled-label = Tracker anpassen
|
||||
settings-stay_aligned-general-label = Allgemein
|
||||
settings-stay_aligned-relaxed_poses-label = Entspannte Posen
|
||||
settings-stay_aligned-relaxed_poses-save_pose = Pose speichern
|
||||
settings-stay_aligned-relaxed_poses-reset_pose = Pose zurücksetzen
|
||||
settings-stay_aligned-relaxed_poses-close = Schließen
|
||||
settings-stay_aligned-debug-label = Debuggen
|
||||
settings-stay_aligned-debug-description = Bitte geben Sie Ihre Einstellungen mit an, wenn Sie Probleme mit Stay Aligned melden.
|
||||
settings-stay_aligned-debug-copy-label = Einstellungen in die Zwischenablage kopieren
|
||||
|
||||
## FK/Tracking settings
|
||||
@@ -513,17 +551,19 @@ settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = Gre
|
||||
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
|
||||
@@ -549,7 +589,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 =
|
||||
@@ -570,8 +610,8 @@ settings-general-gesture_control-yawResetTaps = Antipp-Anzahl für einen horizon
|
||||
settings-general-gesture_control-fullResetEnabled = Vollständiger Reset durch Antippen
|
||||
settings-general-gesture_control-fullResetDelay = Verzögerung für einen vollständigen Reset
|
||||
settings-general-gesture_control-fullResetTaps = Antipp-Anzahl für einen vollständigen Reset
|
||||
settings-general-gesture_control-mountingResetEnabled = Antippen für Befestigungs-Reset
|
||||
settings-general-gesture_control-mountingResetDelay = Befestigungs-Reset-Verzögerung
|
||||
settings-general-gesture_control-mountingResetEnabled = Aktivieren von Antippen für Reset der Tracker-Ausrichtung
|
||||
settings-general-gesture_control-mountingResetDelay = Verzögerung von Reset der Tracker-Ausrichtung
|
||||
settings-general-gesture_control-mountingResetTaps = Anzahl für Befestigungs-Reset
|
||||
# The number of trackers that can have higher acceleration before a tap is rejected
|
||||
settings-general-gesture_control-numberTrackersOverThreshold = Tracker über Schwellwert
|
||||
@@ -639,6 +679,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
|
||||
|
||||
@@ -654,7 +696,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
|
||||
@@ -662,6 +704,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
|
||||
|
||||
@@ -758,6 +805,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
|
||||
@@ -793,6 +841,15 @@ settings-utils-advanced-open_logs = Logs-Ordner
|
||||
settings-utils-advanced-open_logs-description = Öffnet den Logs-Ordner von SlimeVR im Explorer, der die Protokolle der App enthält.
|
||||
settings-utils-advanced-open_logs-label = Ordner öffnen
|
||||
|
||||
## Home Screen
|
||||
|
||||
settings-home-list-layout = Layout der Tracker-Liste
|
||||
settings-home-list-layout-desc = Wählen Sie eines der möglichen Startbildschirm-Layouts aus
|
||||
settings-home-list-layout-table = Tabelle
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Einrichtung überspringen
|
||||
@@ -806,12 +863,6 @@ onboarding-setup_warning-cancel = Einrichtung fortsetzen
|
||||
## Wi-Fi setup
|
||||
|
||||
onboarding-wifi_creds-back = Zurück zur Einführung
|
||||
onboarding-wifi_creds = WLAN-Zugangsdaten eingeben
|
||||
# This cares about multilines
|
||||
onboarding-wifi_creds-description =
|
||||
Die Tracker nutzen diese Zugangsdaten, um sich mit dem WLAN zu verbinden.
|
||||
Bitte verwenden Sie die Zugangsdaten, mit denen ihr PC gerade verbunden sind.
|
||||
Dieses WLAN-Netzwerk muss ein 2.4 GHz-Netzwerk sein.
|
||||
onboarding-wifi_creds-skip = WLAN-Zugangsdaten überspringen
|
||||
onboarding-wifi_creds-submit = Weiter!
|
||||
onboarding-wifi_creds-ssid =
|
||||
@@ -824,7 +875,7 @@ onboarding-wifi_creds-password =
|
||||
|
||||
## 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
|
||||
@@ -841,24 +892,17 @@ onboarding-reset_tutorial-1 =
|
||||
Dadurch werden die Position und Rotation aller Ihrer Tracker vollständig zurückgesetzt. Dies sollte die meisten Probleme beheben.
|
||||
# Cares about multiline
|
||||
onboarding-reset_tutorial-2 =
|
||||
Tippen Sie { $taps } mal auf den markierten Tracker um einen Befestigungs-Reset auszulösen.
|
||||
Tippen Sie { $taps } mal auf den markierten Tracker um einen Reset der Tracker-Ausrichtung auszulösen.
|
||||
|
||||
Ein Befestigungs-Reset hilft dabei, die Tracker neu auszurichten, so wie diese tatsächlich an Ihnen angebracht sind. Zum Beispiel, wenn Sie ein Tracker versehentlich verschoben haben und dessen Orientierung sich stark verändert hat.
|
||||
Ein Reset der Tracker-Ausrichtung hilft dabei, die Tracker neu auszurichten, so wie diese tatsächlich an Ihnen angebracht sind. Zum Beispiel, wenn Sie ein Tracker versehentlich verschoben haben und dessen Orientierung sich stark verändert hat.
|
||||
|
||||
Sie müssen sich in einer "Skifahren"-Pose, wie im Befestigungs-Assistenten gezeigt wird, befinden. Nach dem Auslösen wird der Reset nach 3 Sekunden (konfigurierbar) durchgeführt.
|
||||
Sie müssen sich in einer "Skifahren"-Pose, wie im Tracker-Ausrichtung-Assistenten gezeigt wird, befinden. Nach dem Auslösen wird der Reset nach 3 Sekunden (konfigurierbar) durchgeführt.
|
||||
|
||||
## Setup start
|
||||
|
||||
onboarding-home = Willkommen zu SlimeVR
|
||||
onboarding-home-start = Los geht’s!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Zurück zur Trackerzuweisung
|
||||
onboarding-enter_vr-title = Zeit für VR!
|
||||
onboarding-enter_vr-description = Ziehen Sie alle Tracker an und betreten Sie dann VR!
|
||||
onboarding-enter_vr-ready = Ich bin bereit!
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Alles eingerichtet!
|
||||
@@ -882,7 +926,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
|
||||
@@ -1075,7 +1122,6 @@ onboarding-automatic_mounting-return-home = Fertig
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Gehen Sie zurück zum Reset-Tutorial
|
||||
onboarding-manual_proportions-title = Manuelle Körperproportionen
|
||||
onboarding-manual_proportions-fine_tuning_button = Automatische Feinabstimmung der Proportionen
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Bitte schließen Sie ein VR-Headset an, um die automatische Feinabstimmung zu nutzen
|
||||
@@ -1168,41 +1214,37 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>Bitte wiederholen Sie die Messungen und stellen Sie sicher, dass sie korrekt sind.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = Zurück
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = Skalierte Proportionen
|
||||
onboarding-scaled_proportions-description = Damit die SlimeVR-Tracker funktionieren, müssen wir die Länge Ihrer Knochen kennen. Dafür wird ein durchschnittliches Proportionsverhältnis verwendet und basierend auf Ihrer Körpergröße skaliert.
|
||||
onboarding-scaled_proportions-manual_height-title = Konfigurieren Sie Ihre Körpergröße
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = Diese Größe wird als Grundlage für Ihre Körperproportionen verwendet.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR ist derzeit nicht mit SlimeVR verbunden, daher können die Messungen nicht auf Ihrem Headset basieren. <b>Fahren Sie auf eigene Gefahr fort oder lesen Sie die Dokumentation!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = Ihre Körpergröße ist
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = Die geschätzte Höhe des Headsets beträgt:
|
||||
onboarding-scaled_proportions-manual_height-next_step = Fortfahren und speichern
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
Sie verwenden derzeit die manuelle Methode zur Einrichtung skalierter Proportionen!
|
||||
<b>Dieser Modus wird nur empfohlen, wenn Sie kein VR-Headset mit SlimeVR verwenden.</b>
|
||||
|
||||
Um die automatische Skalierung der Proportionen nutzen zu können, bitte:
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = Schließen Sie ein VR-Headset an
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = Stellen Sie sicher, dass Ihre Controller verbunden und korrekt den Händen zugewiesen sind
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = Zurücksetzen Ihrer Körperproportionen
|
||||
onboarding-scaled_proportions-reset_proportion-description = Um Ihre Körperproportionen basierend auf Ihrer Größe festzulegen, müssen nun alle Ihre Proportionen zurückgesetzt werden. Dies wird alle konfigurierten Proportionen löschen und eine Basiskonfiguration bereitstellen.
|
||||
onboarding-scaled_proportions-done-title = Körperproportionen festgelegt
|
||||
onboarding-scaled_proportions-done-description = Ihre Körperproportionen sollten nun basierend auf Ihrer Größe konfiguriert sein.
|
||||
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-low = Schauen sie nicht auf den Boden
|
||||
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-high = Schauen sie nicht zu hoch nach oben
|
||||
onboarding-user_height-calibration-WAITING_FOR_CONTROLLER_PITCH = Achten sie darauf, dass der Controller nach unten zeigt
|
||||
onboarding-user_height-calibration-DONE = Erfolg!
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
onboarding-stay_aligned-title = Stay Aligned
|
||||
onboarding-stay_aligned-description = Konfigurieren Sie Stay Aligned, um Ihre Tracker ausgerichtet zu halten.
|
||||
onboarding-stay_aligned-put_trackers_on-title = Legen Sie Ihre Tracker an
|
||||
onboarding-stay_aligned-put_trackers_on-description = Um Ihre Ruheposen zu speichern, verwenden wir die Tracker, die Sie gerade zugewiesenen haben. Legen Sie all Ihre Tracker an. In der Abbildung rechts können Sie sehen, welcher welcher ist.
|
||||
onboarding-stay_aligned-put_trackers_on-trackers_warning = Sie haben derzeit weniger als 5 Tracker verbunden und zugewiesen! Dies ist die Mindestanzahl an Trackern, die erforderlich sind, damit Stay Aligned richtig funktioniert.
|
||||
onboarding-stay_aligned-put_trackers_on-next = Ich habe alle meine Tracker angelegt
|
||||
onboarding-stay_aligned-verify_mounting-title = Tracker-Ausrichtung
|
||||
onboarding-stay_aligned-verify_mounting-redo_mounting = Tracker-Ausrichtungskalibrierung wiederholen
|
||||
onboarding-stay_aligned-preparation-title = Vorbereitung
|
||||
onboarding-stay_aligned-preparation-tip = Achten Sie darauf, aufrecht zu stehen. Schauen Sie nach vorne und lassen Sie die Arme an den Seiten hängen.
|
||||
onboarding-stay_aligned-relaxed_poses-standing-step-0 = 1. Nehmen Sie eine bequeme Haltung ein. Entspannen Sie sich!
|
||||
onboarding-stay_aligned-relaxed_poses-standing-step-1-v2 = 2. Drücken Sie die Taste „Pose speichern“.
|
||||
onboarding-stay_aligned-relaxed_poses-skip_step = Überspringen
|
||||
onboarding-stay_aligned-previous_step = Zurück
|
||||
onboarding-stay_aligned-next_step = Weiter
|
||||
onboarding-stay_aligned-restart = Neu starten
|
||||
onboarding-stay_aligned-done = Fertig
|
||||
|
||||
## Home
|
||||
|
||||
home-no_trackers = Keine Tracker erkannt oder zugewiesen
|
||||
home-settings-close = Schließen
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
@@ -1238,21 +1280,40 @@ firmware_tool = DIY Firmware-Tool
|
||||
firmware_tool-description = Erlaubt ihnen das Konfigurieren und Flashen von DIY Trackern
|
||||
firmware_tool-not_available = Das Firmware Tool ist im Moment nicht verfügbar. Versuche sie später erneut!
|
||||
firmware_tool-not_compatible = Das Firmware Tool ist nicht mit dieser Version des Servers kompatibel. Bitte den Server aktualisieren!
|
||||
firmware_tool-select_source-board_type = Boardtyp
|
||||
firmware_tool-select_source-firmware = Firmware-Quelle
|
||||
firmware_tool-select_source-version = Firmware-Version
|
||||
firmware_tool-select_source-official = Offiziell
|
||||
firmware_tool-select_source-dev = Dev
|
||||
firmware_tool-board_defaults = Konfigurieren Sie Ihr Board
|
||||
firmware_tool-board_defaults-add = Hinzufügen
|
||||
firmware_tool-board_defaults-reset = Auf Standard zurücksetzen
|
||||
firmware_tool-board_defaults-error-required = Erforderliches Feld
|
||||
firmware_tool-board_defaults-error-format = Ungültiges Format
|
||||
firmware_tool-board_defaults-error-format-number = Keine Zahl
|
||||
firmware_tool-flash_method_step = Flash-Methode
|
||||
firmware_tool-flash_method_step-description = Bitte wählen Sie die Flash-Methode aus, die Sie verwenden möchten.
|
||||
firmware_tool-flash_method_step-ota-v2 =
|
||||
.label = WLAN
|
||||
.description = Verwenden Sie die Over-the-Air-Methode. Ihr Tracker wird seine Firmware über WLAN aktualisieren. Funktioniert nur bei Trackern, die bereits eingerichtet wurden.
|
||||
firmware_tool-flash_method_step-ota-info =
|
||||
Wir nutzen Ihre WLAN-Zugangsdaten, um den Tracker zu flashen und zu bestätigen, dass alles korrekt funktioniert hat.
|
||||
<b>Wir speichern Ihre WLAN-Zugangsdaten nicht!</b>
|
||||
firmware_tool-flash_method_step-serial-v2 =
|
||||
.label = USB
|
||||
.description = Verwenden Sie ein USB-Kabel, um Ihren Tracker zu aktualisieren.
|
||||
firmware_tool-flashbtn_step = Drücken Sie den Boot-Button
|
||||
firmware_tool-flashbtn_step-description = Bevor Sie mit dem nächsten Schritt fortfahren, gibt es ein paar Dinge, die Sie erledigen müssen.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = Schalten Sie den Tracker aus, entfernen Sie das Gehäuse (falls vorhanden), verbinden Sie ein USB-Kabel mit diesem Computer und führen Sie dann einen der folgenden Schritte entsprechend Ihrer SlimeVR-Board-Revision aus:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = Schalten Sie den Tracker ein, während Sie das zweite rechteckige FLASH-Pad von der Kante auf der Oberseite des Boards und den Metallschild des Mikrocontrollers kurzschließen.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = Schalten Sie den Tracker ein, während Sie das kreisförmige FLASH-Pad auf der Oberseite des Boards und den Metallschild des Mikrocontrollers kurzschließen.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = Schalten Sie den Tracker ein, während Sie den FLASH-Button auf der Oberseite des Boards drücken.
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
Bevor Sie den Tracker flashen, müssen Sie ihn wahrscheinlich in den Bootloader-Modus versetzen.
|
||||
In den meisten Fällen bedeutet das, dass Sie die Boot-Taste auf dem Board drücken müssen, bevor der Flash-Vorgang beginnt.
|
||||
Wenn der Flash-Vorgang zu Beginn aufgrund eines Timeouts fehlschlägt, bedeutet das wahrscheinlich, dass der Tracker nicht im Bootloader-Modus war.
|
||||
Bitte beziehen Sie sich auf die Flash-Anweisungen Ihres Boards, um zu erfahren, wie Sie den Bootloader-Modus aktivieren.
|
||||
firmware_tool-flash_method_ota-title = Flashen über WLAN
|
||||
firmware_tool-flash_method_ota-devices = Erkannte OTA-Geräte:
|
||||
firmware_tool-flash_method_ota-no_devices = Es sind keine Boards vorhanden, die über OTA aktualisiert werden können. Stellen Sie sicher, dass Sie den richtigen Board-Typ ausgewählt haben.
|
||||
firmware_tool-flash_method_serial-title = Über USB flashen
|
||||
firmware_tool-flash_method_serial-wifi = WLAN-Zugangsdaten:
|
||||
firmware_tool-flash_method_serial-devices-label = Erkannte serielle Geräte:
|
||||
firmware_tool-flash_method_serial-devices-placeholder = Wählen Sie ein serielles Gerät aus
|
||||
@@ -1267,7 +1328,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
|
||||
@@ -1333,6 +1397,8 @@ unknown_device-modal-confirm = Sicher!
|
||||
unknown_device-modal-forget = Ignorieren
|
||||
# VRChat config warnings
|
||||
vrc_config-page-title = VRChat Konfigurations-Warnungen
|
||||
vrc_config-page-desc = Diese Seite zeigt den Zustand deiner VRChat-Einstellungen und zeigt, welche Einstellungen mit SlimeVR inkompatibel sind. Es wird dringend empfohlen, alle hier angezeigten Warnungen zu beheben, um das beste Nutzererlebnis mit SlimeVR zu gewährleisten.
|
||||
vrc_config-page-help-desc = Schauen Sie sich unsere <a>Dokumentation zu diesem Thema</a> an!
|
||||
vrc_config-on = An
|
||||
vrc_config-off = Aus
|
||||
vrc_config-invalid = Sie haben falsch konfigurierte VRChat-Einstellungen!
|
||||
@@ -1343,9 +1409,17 @@ vrc_config-current_value = Aktueller Wert
|
||||
vrc_config-mute = Warnung stummschalten
|
||||
vrc_config-mute-btn = Stummschalten
|
||||
vrc_config-unmute-btn = Stummschaltung aufheben
|
||||
vrc_config-disable_shoulder_tracking = Schultertracking deaktivieren
|
||||
vrc_config-user_height = Echte Benutzergröße
|
||||
vrc_config-spine_mode-UNKNOWN = Unbekannt
|
||||
vrc_config-spine_mode-LOCK_HEAD = Kopf sperren
|
||||
vrc_config-spine_mode-LOCK_HIP = Hüfte sperren
|
||||
vrc_config-tracker_model-UNKNOWN = Unbekannt
|
||||
vrc_config-tracker_model-AXIS = Achse
|
||||
vrc_config-tracker_model-SYSTEM = System
|
||||
vrc_config-avatar_measurement_type-UNKNOWN = Unbekannt
|
||||
vrc_config-avatar_measurement_type-HEIGHT = Höhe
|
||||
vrc_config-avatar_measurement_type-ARM_SPAN = Armspannweite
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
@@ -1356,3 +1430,33 @@ 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-settings-close = Schließen
|
||||
tracking_checklist-status-partial =
|
||||
{ $count ->
|
||||
[one] Sie haben 1 Warnung!
|
||||
*[other] Sie haben { $count } Warnungen!
|
||||
}
|
||||
tracking_checklist-MOUNTING_CALIBRATION = Tracker-Ausrichtung durchführen
|
||||
tracking_checklist-STEAMVR_DISCONNECTED = SteamVR läuft nicht
|
||||
tracking_checklist-STEAMVR_DISCONNECTED-desc = SteamVR läuft nicht. Nutzen sie es für VR?
|
||||
tracking_checklist-STEAMVR_DISCONNECTED-open = SteamVR starten
|
||||
tracking_checklist-TRACKERS_REST_CALIBRATION-desc = Sie haben keine Tracker-Kalibrierung durchgeführt. Bitte lassen Sie Ihre Tracker (gelb markiert) für einige Sekunden auf einer stabilen Oberfläche ruhen.
|
||||
tracking_checklist-TRACKER_ERROR = Tracker mit Fehlern
|
||||
tracking_checklist-VRCHAT_SETTINGS = VRChat-Einstellungen konfigurieren
|
||||
tracking_checklist-VRCHAT_SETTINGS-open = Gehen sie zu den VRChat-Warnungen
|
||||
tracking_checklist-NETWORK_PROFILE_PUBLIC-open = Kontrollpanel öffnen
|
||||
tracking_checklist-STAY_ALIGNED_CONFIGURED = Stay Aligned konfigurieren
|
||||
tracking_checklist-STAY_ALIGNED_CONFIGURED-open = Öffne den Stay Aligned Assistent
|
||||
tracking_checklist-ignore = Ignorieren
|
||||
preview-mocap_mode_soon = Mocap-Modus (Bald™)
|
||||
preview-disable_render = Vorschau deaktivieren
|
||||
preview-disabled_render = Vorschau deaktiviert
|
||||
toolbar-mounting_calibration = Tracker-Ausrichtung
|
||||
toolbar-mounting_calibration-default = Körper
|
||||
toolbar-mounting_calibration-feet = Füße
|
||||
toolbar-mounting_calibration-fingers = Finger
|
||||
toolbar-assigned_trackers = { $count } Tracker zugewiesen
|
||||
toolbar-unassigned_trackers = { $count } Tracker nicht zugewiesen
|
||||
|
||||
@@ -18,6 +18,9 @@ websocket-connection_lost = Η σύνδεση μεταξύ του διακομι
|
||||
tips-find_tracker = Δεν είστε σίγουροι ποιος ανιχνευτής είναι ποιος; Κουνήστε έναν ανιχνευτή και θα επισημάνει το αντίστοιχο στοιχείο.
|
||||
tips-do_not_move_heels = Βεβαιωθείτε ότι οι φτέρνες σας δεν κινούνται κατά την εγγραφή!
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Μη εκχωρημένο
|
||||
@@ -109,7 +112,7 @@ widget-overlay-is_mirrored_label = Εμφάνιση υπέρθεσης ως κα
|
||||
|
||||
widget-drift_compensation-clear = Επαναφορά αντιστάθμισης drift
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
|
||||
## Widget: Developer settings
|
||||
@@ -279,6 +282,12 @@ settings-osc-vrchat-network-trackers-feet = Πόδια
|
||||
## Advanced settings
|
||||
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
|
||||
@@ -291,9 +300,6 @@ settings-osc-vrchat-network-trackers-feet = Πόδια
|
||||
## Setup start
|
||||
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
|
||||
## Setup done
|
||||
|
||||
|
||||
@@ -327,10 +333,7 @@ settings-osc-vrchat-network-trackers-feet = Πόδια
|
||||
## Tracker automatic proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -371,3 +374,6 @@ settings-osc-vrchat-network-trackers-feet = Πόδια
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = u can swowly tap youw twackew 2 times to choose it insted of se
|
||||
tips-turn_on_tracker = erm.. are u using offishal SlaiemVR twackews??! rember to <b><em>tuwn on yuor twackew</em></b> aftwew coneccting it to teh PC!
|
||||
tips-failed_webgl = oh nooooo :( faiwled to initiawizwe WebGL...
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = unassyigned
|
||||
@@ -189,7 +192,7 @@ widget-overlay-is_mirrored_label = dispway owovelay as miwwow
|
||||
|
||||
widget-drift_compensation-clear = cwear dwift compensation
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = cweaw weset meownting
|
||||
|
||||
@@ -301,7 +304,6 @@ tracker-settings-forget = *forgors the tracker*
|
||||
tracker-settings-forget-description = remooves teh twackew fwom da SwimeVR sewvew n pwevent it frum conecting to it til fhe sewvew iz westawtied. the cowonfigyuwatsin of da twackew woant b wost.
|
||||
tracker-settings-forget-label = *forgors the tracker*
|
||||
tracker-settings-update-up_to_date = up to dayte!! ^w^
|
||||
tracker-settings-update-available = { $versionName } is naow awailabwe
|
||||
tracker-settings-update = uwupdate meow!
|
||||
|
||||
## Tracker part card info
|
||||
@@ -719,6 +721,12 @@ settings-utils-advanced-open_logs = logs fowdew
|
||||
settings-utils-advanced-open_logs-description = open swimevr's logs fowdew in da fiwe explowew, containing teh logs of da app
|
||||
settings-utils-advanced-open_logs-label = open fowdew
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = skipy setup
|
||||
@@ -734,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 =
|
||||
@@ -779,13 +782,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = wewcome to SwimeVR
|
||||
onboarding-home-start = wets get set up!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = gaww bawwk to twacker assignyment
|
||||
onboarding-enter_vr-title = time to entew vr!
|
||||
onboarding-enter_vr-description = put on awe yoaww twackaws and then entew vr!
|
||||
onboarding-enter_vr-ready = iym weady
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = yaww awe awe set!
|
||||
@@ -999,7 +995,6 @@ onboarding-automatic_mounting-put_trackers_on-next = i haff awe my twackaws on
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = go bawck to weset tutowiaw
|
||||
onboarding-manual_proportions-title = manyuaw bodee pwopowtiesions
|
||||
onboarding-manual_proportions-fine_tuning_button = automaticawwy fine tuwune propowtions
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = pwease connect a vr headset to use automatic fine tuwuning
|
||||
@@ -1089,23 +1084,8 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>pwease wedo da measuwments and ensuwe dey r cowwect.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = go bak
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = scawed pwopowtions
|
||||
onboarding-scaled_proportions-description = fow swimevr twackews to wowk, we need to kno teh bigness of youw bowones. dis wiww use an avewage pwopowtion and scawe it based on youw heit.
|
||||
onboarding-scaled_proportions-manual_height-title = configuwe youw heit
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = dis heit wiww be used az a basewine fow youw body pwopowtions.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = steawmvr is nawt cuwwentwy cowonnected to da swimevr, so measuwements cant be based on youw hedset ono... <b>pwoceed at youw owon wisk ow chek da docs!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = youw fuww heit is
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = youw estimated hedset heit is:
|
||||
onboarding-scaled_proportions-manual_height-next_step = keep goin an saiv
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = weset youw body pwopowtions
|
||||
onboarding-scaled_proportions-reset_proportion-description = to set youw pwopowtions based on youw heit, u gotsa weset aww of youw pwopowtions. dis wiww cweaw any pwopowtions u hav configuwed and pwovide a basewine configuwation.
|
||||
onboarding-scaled_proportions-done-title = body pwopowtions set
|
||||
onboarding-scaled_proportions-done-description = youw body pwopowtions shuld nao be configuwed based on youw heit :3
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1153,9 +1133,6 @@ firmware_tool-flash_method_step-description = pwease sewect teh fwashin mefod u
|
||||
firmware_tool-flashbtn_step = pwess da buwut buddon
|
||||
firmware_tool-flashbtn_step-description = befow goin into da next step thewe's stuff u gotta do
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = tuwn awf da twackew, wemove da case if u got wun, conecc an usb cabwe to dis compooper, den do wun of da fowwowin steps dependin on wat swimevr boawd u got:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = tuwn on da twackew whiwe showtin teh secund wectanguwaw FWASH!! pad fwom da edge on teh top side of teh boawd and da metaw shiewd of da micwocontwowwew
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = tuwn on da twackew whiwe showtin teh ciwcuwaw FWASH!! pad on teh top side of teh boawd and teh metaw shiewd of da micwocontwowwew
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = tuwn on da twackew whiwe pushin in da FWASH!! buddon on da top side of da boawd
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
befow fwashin u prob need 2 put da twackew into buwutwoadew mowd :3
|
||||
mowst of da time it meens pressin da buwut buddon on da boawd befow da fwashin pwocess stawts.
|
||||
@@ -1242,3 +1219,6 @@ unknown_device-modal-forget = ignowe it
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -27,6 +27,13 @@ tips-tap_setup = You can slowly tap your tracker 2 times to choose it instead of
|
||||
tips-turn_on_tracker = Using official SlimeVR trackers? Don't forget to <b><em>turn on your tracker</em></b> after connecting it to the PC!
|
||||
tips-failed_webgl = Failed to initialize WebGL.
|
||||
|
||||
## Units
|
||||
unit-meter = Meter
|
||||
unit-foot = Foot
|
||||
unit-inch = Inch
|
||||
unit-cm = cm
|
||||
|
||||
|
||||
## Body parts
|
||||
body_part-NONE = Unassigned
|
||||
body_part-HEAD = Head
|
||||
@@ -238,10 +245,14 @@ reset-reset_all_warning_default-v2 =
|
||||
Are you sure you want to do this?
|
||||
|
||||
reset-full = Full Reset
|
||||
reset-mounting = Reset Mounting
|
||||
reset-mounting-feet = Reset Feet Mounting
|
||||
reset-mounting-fingers = Reset Fingers Mounting
|
||||
reset-mounting = Mounting Calibration
|
||||
reset-mounting-feet = Feet Calibration
|
||||
reset-mounting-fingers = Fingers Calibration
|
||||
reset-yaw = Yaw Reset
|
||||
reset-error-no_feet_tracker = No feet tracker assigned
|
||||
reset-error-no_fingers_tracker = No finger tracker assigned
|
||||
reset-error-mounting-need_full_reset = Need a full reset before mounting
|
||||
reset-error-yaw-need_full_reset = Need a full reset before yaw reset
|
||||
|
||||
## Serial detection stuff
|
||||
serial_detection-new_device-p0 = New serial device detected!
|
||||
@@ -259,9 +270,11 @@ navbar-trackers_assign = Tracker Assignment
|
||||
navbar-mounting = Mounting Calibration
|
||||
navbar-onboarding = Setup Wizard
|
||||
navbar-settings = Settings
|
||||
navbar-connect_trackers = Connect Trackers
|
||||
|
||||
## Biovision hierarchy recording
|
||||
bvh-start_recording = Record BVH
|
||||
bvh-stop_recording = Save BVH recording
|
||||
bvh-recording = Recording...
|
||||
bvh-save_title = Save BVH recording
|
||||
|
||||
@@ -277,8 +290,8 @@ widget-overlay-is_mirrored_label = Display Overlay as Mirror
|
||||
## Widget: Drift compensation
|
||||
widget-drift_compensation-clear = Clear drift compensation
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
widget-clear_mounting = Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
widget-clear_mounting = Clear mounting calibration
|
||||
|
||||
## Widget: Developer settings
|
||||
widget-developer_mode = Developer Mode
|
||||
@@ -336,7 +349,7 @@ tracker-rotation-back = Back
|
||||
tracker-rotation-back_left = Back-Left
|
||||
tracker-rotation-back_right = Back-Right
|
||||
tracker-rotation-custom = Custom
|
||||
tracker-rotation-overriden = (overridden by mounting reset)
|
||||
tracker-rotation-overriden = (overridden by mounting calibration)
|
||||
|
||||
## Tracker information
|
||||
tracker-infos-manufacturer = Manufacturer
|
||||
@@ -386,13 +399,15 @@ tracker-settings-forget = Forget tracker
|
||||
tracker-settings-forget-description = Removes the tracker from the SlimeVR Server and prevents it from connecting until the server is restarted. The configuration of the tracker won't be lost.
|
||||
tracker-settings-forget-label = Forget tracker
|
||||
tracker-settings-update-unavailable-v2 = No releases found
|
||||
tracker-settings-update-incompatible = Cannot update. Incompatible board
|
||||
tracker-settings-update-incompatible = Cannot update. Incompatible board or firmware version
|
||||
tracker-settings-update-low-battery = Cannot update. Battery lower than 50%
|
||||
tracker-settings-update-up_to_date = Up to date
|
||||
tracker-settings-update-blocked = Update not available. No other releases available
|
||||
tracker-settings-update-available = { $versionName } is now available
|
||||
tracker-settings-update = Update now
|
||||
tracker-settings-update-title = Firmware version
|
||||
tracker-settings-current-version = Current
|
||||
tracker-settings-latest-version = Latest
|
||||
|
||||
|
||||
## Tracker part card info
|
||||
tracker-part_card-no_name = No name
|
||||
@@ -455,6 +470,7 @@ mounting_selection_menu-close = Close
|
||||
## Sidebar settings
|
||||
settings-sidebar-title = Settings
|
||||
settings-sidebar-general = General
|
||||
settings-sidebar-steamvr = SteamVR
|
||||
settings-sidebar-tracker_mechanics = Tracker mechanics
|
||||
settings-sidebar-stay_aligned = Stay Aligned
|
||||
settings-sidebar-fk_settings = Tracking settings
|
||||
@@ -462,9 +478,12 @@ settings-sidebar-gesture_control = Gesture control
|
||||
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 = Utilities
|
||||
settings-sidebar-serial = Serial console
|
||||
settings-sidebar-appearance = Appearance
|
||||
settings-sidebar-home = Home Screen
|
||||
settings-sidebar-checklist = Tracking checklist
|
||||
settings-sidebar-notifications = Notifications
|
||||
settings-sidebar-behavior = Behavior
|
||||
settings-sidebar-firmware-tool = DIY Firmware Tool
|
||||
@@ -538,11 +557,11 @@ settings-general-tracker_mechanics-drift_compensation_warning-cancel = Cancel
|
||||
settings-general-tracker_mechanics-drift_compensation_warning-done = I understand
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = Compensation amount
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Use up to x last resets
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Save automatic mounting reset calibration
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Save automatic mounting calibration
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
Saves the automatic mounting reset calibrations for the trackers between restarts. Useful
|
||||
Saves the automatic mounting calibration for the trackers between restarts. Useful
|
||||
when wearing a suit where trackers don't move between sessions. <b>Not recommended for normal users!</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Save mounting reset
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Save mounting calibration
|
||||
settings-general-tracker_mechanics-use_mag_on_all_trackers = Use magnetometer on all IMU trackers that support it
|
||||
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.
|
||||
@@ -589,8 +608,8 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = Floor-clip can r
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = Toe-snap attempts to guess the rotation of your feet if foot trackers are not in use.
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = Foot-plant rotates your feet to be parallel to the ground when in contact.
|
||||
settings-general-fk_settings-leg_fk = Leg tracking
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description-v1 = Force feet mounting reset during general mounting resets.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-v1 = Force feet mounting reset
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description-v1 = Force feet mounting calibration during body mounting calibration.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-v1 = Force feet mounting calibration
|
||||
settings-general-fk_settings-enforce_joint_constraints = Skeletal Limits
|
||||
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = Enforce constraints
|
||||
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints-description = Prevents joints from rotating past their limit
|
||||
@@ -605,13 +624,13 @@ settings-general-fk_settings-arm_fk-force_arms = Force arms from HMD
|
||||
settings-general-fk_settings-reset_settings = Reset settings
|
||||
settings-general-fk_settings-reset_settings-reset_hmd_pitch-description = Reset the HMD's pitch (vertical rotation) upon doing a full reset. Useful if wearing an HMD on the forehead for VTubing or mocap. Do not enable for VR.
|
||||
settings-general-fk_settings-reset_settings-reset_hmd_pitch = Reset HMD pitch
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Change which arm pose is expected for mounting reset.
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Change which arm pose is expected for mounting calibration.
|
||||
settings-general-fk_settings-arm_fk-back = Back
|
||||
settings-general-fk_settings-arm_fk-back-description = The default mode, with the upper arms going back and lower arms going forward.
|
||||
settings-general-fk_settings-arm_fk-tpose_up = T-pose (up)
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Expects your arms to be down at your sides during Full Reset, and 90 degrees up to the sides during Mounting Reset.
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Expects your arms to be down at your sides during Full Reset, and 90 degrees up to the sides during Mounting Calibration.
|
||||
settings-general-fk_settings-arm_fk-tpose_down = T-pose (down)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = Expects your arms to be 90 degrees up to the sides during Full Reset, and down at your sides during Mounting Reset.
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = Expects your arms to be 90 degrees up to the sides during Full Reset, and down at your sides during Mounting Calibration.
|
||||
settings-general-fk_settings-arm_fk-forward = Forward
|
||||
settings-general-fk_settings-arm_fk-forward-description = Expects your arms to be raised forward at 90 degrees. Useful for VTubing.
|
||||
settings-general-fk_settings-skeleton_settings-toggles = Skeleton toggles
|
||||
@@ -635,7 +654,7 @@ settings-general-fk_settings-self_localization-description = Mocap Mode allows t
|
||||
## Gesture control settings (tracker tapping)
|
||||
settings-general-gesture_control = Gesture control
|
||||
settings-general-gesture_control-subtitle = Tap based resets
|
||||
settings-general-gesture_control-description = Allows for resets to be triggered by tapping a tracker. The tracker highest up on your torso is used for Yaw Reset, the tracker highest up on your left leg is used for Full Reset, and the tracker highest up on your right leg is used for Mounting Reset. Taps must occur within the time limit of 0.3 seconds times the number of taps to be recognized.
|
||||
settings-general-gesture_control-description = Allows for resets to be triggered by tapping a tracker. The tracker highest up on your torso is used for Yaw Reset, the tracker highest up on your left leg is used for Full Reset, and the tracker highest up on your right leg is used for Mounting Calibration. Taps must occur within the time limit of 0.3 seconds times the number of taps to be recognized.
|
||||
# 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 ->
|
||||
@@ -654,9 +673,9 @@ settings-general-gesture_control-yawResetTaps = Taps for yaw reset
|
||||
settings-general-gesture_control-fullResetEnabled = Enable tap to full reset
|
||||
settings-general-gesture_control-fullResetDelay = Full reset delay
|
||||
settings-general-gesture_control-fullResetTaps = Taps for full reset
|
||||
settings-general-gesture_control-mountingResetEnabled = Enable tap to reset mounting
|
||||
settings-general-gesture_control-mountingResetDelay = Mounting reset delay
|
||||
settings-general-gesture_control-mountingResetTaps = Taps for mounting reset
|
||||
settings-general-gesture_control-mountingResetEnabled = Enable tap to perform mounting calibration
|
||||
settings-general-gesture_control-mountingResetDelay = Mounting calibration delay
|
||||
settings-general-gesture_control-mountingResetTaps = Taps for mounting calibration
|
||||
# The number of trackers that can have higher acceleration before a tap is rejected
|
||||
settings-general-gesture_control-numberTrackersOverThreshold = Trackers over threshold
|
||||
settings-general-gesture_control-numberTrackersOverThreshold-description = Increase this value if tap detection is not working. Do not increase it above what is needed to make tap detection work as it would cause more false positives.
|
||||
@@ -879,6 +898,16 @@ settings-utils-advanced-open_logs = Logs folder
|
||||
settings-utils-advanced-open_logs-description = Open SlimeVR's logs folder in file explorer, containing the logs of the app
|
||||
settings-utils-advanced-open_logs-label = Open folder
|
||||
|
||||
## Home Screen
|
||||
settings-home-list-layout = Trackers list layout
|
||||
settings-home-list-layout-desc = Select one of the possible layouts of the home screen
|
||||
settings-home-list-layout-grid = Grid
|
||||
settings-home-list-layout-table = Table
|
||||
|
||||
## Tracking Checlist
|
||||
settings-tracking_checklist-active_steps = Active Steps
|
||||
settings-tracking_checklist-active_steps-desc = List of all the steps in the tracking checklist. You can choose to disable specific steps.
|
||||
|
||||
## Setup/onboarding menu
|
||||
onboarding-skip = Skip setup
|
||||
onboarding-continue = Continue
|
||||
@@ -891,12 +920,14 @@ onboarding-setup_warning-skip = Skip setup
|
||||
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-back = Go back to introduction
|
||||
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 =
|
||||
@@ -907,8 +938,14 @@ 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-back = Go back to Mounting calibration
|
||||
onboarding-reset_tutorial = Reset tutorial
|
||||
onboarding-reset_tutorial-explanation = While you use your trackers, they might get out of alignment because of IMU yaw drift, or because you might have moved them physically. You have several ways to fix this.
|
||||
onboarding-reset_tutorial-skip = Skip step
|
||||
@@ -922,9 +959,9 @@ onboarding-reset_tutorial-1 = Tap the highlighted tracker { $taps } times to tri
|
||||
You need to be standing for this (i-pose). There is a 3 seconds delay (configurable) before it actually happens.
|
||||
This fully resets the position and rotation of all your trackers. It should fix most issues.
|
||||
# Cares about multiline
|
||||
onboarding-reset_tutorial-2 = Tap the highlighted tracker { $taps } times to trigger a mounting reset.
|
||||
onboarding-reset_tutorial-2 = Tap the highlighted tracker { $taps } times to trigger mounting calibration.
|
||||
|
||||
Mounting reset adjusts for how trackers are placed on your body. If they've moved or rotated significantly, this helps recalibrate their orientation.
|
||||
Mounting calibration adjusts for how trackers are placed on your body. If they've moved or rotated significantly, this helps recalibrate their orientation.
|
||||
|
||||
You need to be in a pose like you are skiing as shown in the Automatic Mounting wizard, and you have a 3 second delay (configurable) before it gets triggered.
|
||||
|
||||
@@ -932,11 +969,6 @@ onboarding-reset_tutorial-2 = Tap the highlighted tracker { $taps } times to tri
|
||||
onboarding-home = Welcome to SlimeVR
|
||||
onboarding-home-start = Let's get set up!
|
||||
|
||||
## Enter VR part of setup
|
||||
onboarding-enter_vr-back = Go Back to Tracker assignment
|
||||
onboarding-enter_vr-title = Time to enter VR!
|
||||
onboarding-enter_vr-description = Put on all your trackers and then enter VR!
|
||||
onboarding-enter_vr-ready = I'm ready
|
||||
|
||||
## Setup done
|
||||
onboarding-done-title = You're all set!
|
||||
@@ -944,7 +976,7 @@ onboarding-done-description = Enjoy your full-body experience
|
||||
onboarding-done-close = Close setup
|
||||
|
||||
## Tracker connection setup
|
||||
onboarding-connect_tracker-back = Go Back to Wi-Fi credentials
|
||||
onboarding-connect_tracker-back = Go back to Wi-Fi credentials
|
||||
onboarding-connect_tracker-title = Connect trackers
|
||||
onboarding-connect_tracker-description-p0-v1 = Now onto the fun part, connecting trackers!
|
||||
onboarding-connect_tracker-description-p1-v1 = Connect each tracker one at a time through a USB port.
|
||||
@@ -1003,9 +1035,10 @@ onboarding-assignment_tutorial-second_step-continuation-v2 = The velcro side for
|
||||
onboarding-assignment_tutorial-done = I put stickers and straps!
|
||||
|
||||
## Tracker assignment setup
|
||||
onboarding-assign_trackers-back = Go Back to Wi-Fi Credentials
|
||||
onboarding-assign_trackers-back = Go back to Wi-Fi credentials
|
||||
onboarding-assign_trackers-title = Assign trackers
|
||||
onboarding-assign_trackers-description = Let's choose which tracker goes where. Click on a location where you want to place a tracker
|
||||
onboarding-assign_trackers-unassign_all = Unassign all 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
|
||||
@@ -1114,14 +1147,14 @@ onboarding-choose_mounting-manual_modal-confirm = I'm sure of what I'm doing
|
||||
onboarding-choose_mounting-manual_modal-cancel = Cancel
|
||||
|
||||
## Tracker manual mounting setup
|
||||
onboarding-manual_mounting-back = Go Back to Enter VR
|
||||
onboarding-manual_mounting-back = Go back to Enter VR
|
||||
onboarding-manual_mounting = Manual Mounting
|
||||
onboarding-manual_mounting-description = Click on every tracker and select which way they are mounted
|
||||
onboarding-manual_mounting-auto_mounting = Automatic mounting
|
||||
onboarding-manual_mounting-next = Next step
|
||||
|
||||
## Tracker automatic mounting setup
|
||||
onboarding-automatic_mounting-back = Go Back to Enter VR
|
||||
onboarding-automatic_mounting-back = Go back to Enter VR
|
||||
onboarding-automatic_mounting-title = Mounting Calibration
|
||||
onboarding-automatic_mounting-description = For SlimeVR trackers to work, we need to assign a mounting orientation to your trackers to align them with your physical tracker mounting.
|
||||
onboarding-automatic_mounting-manual_mounting = Manual mounting
|
||||
@@ -1130,9 +1163,13 @@ onboarding-automatic_mounting-prev_step = Previous step
|
||||
onboarding-automatic_mounting-done-title = Mounting orientations calibrated.
|
||||
onboarding-automatic_mounting-done-description = Your mounting calibration is complete!
|
||||
onboarding-automatic_mounting-done-restart = Try again
|
||||
onboarding-automatic_mounting-mounting_reset-title = Mounting Reset
|
||||
onboarding-automatic_mounting-mounting_reset-title = Mounting Calibration
|
||||
onboarding-automatic_mounting-mounting_reset-step-0 = 1. Squat in a "skiing" pose with your legs bent, your upper body tilted forwards, and your arms bent.
|
||||
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Press the "Reset Mounting" button and wait for 3 seconds before the trackers' mounting orientations will reset.
|
||||
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Press the "Mounting calibration" button and wait for 3 seconds before the trackers' mounting orientations will reset.
|
||||
|
||||
onboarding-automatic_mounting-mounting_reset-feet-step-0 = 1. Stand on your toes with both feet pointing forward. Alternatively you can do it sitting on a chair.
|
||||
onboarding-automatic_mounting-mounting_reset-feet-step-1 = 2. Press the "Feet calibration" button and wait for 3 seconds before the trackers' mounting orientations will reset.
|
||||
|
||||
onboarding-automatic_mounting-preparation-title = Preparation
|
||||
onboarding-automatic_mounting-preparation-v2-step-0 = 1. Press the "Full Reset" button.
|
||||
onboarding-automatic_mounting-preparation-v2-step-1 = 2. Stand upright with your arms to your sides. Make sure to look forward.
|
||||
@@ -1143,7 +1180,7 @@ onboarding-automatic_mounting-put_trackers_on-next = I have all my trackers on
|
||||
onboarding-automatic_mounting-return-home = Done
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
onboarding-manual_proportions-back = Go Back to Reset tutorial
|
||||
onboarding-manual_proportions-back-scaled = Go back to Scaled Proportions
|
||||
onboarding-manual_proportions-title = Manual Body Proportions
|
||||
onboarding-manual_proportions-fine_tuning_button = Automatically fine tune proportions
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Please connect a VR headset to use automatic fine tuning
|
||||
@@ -1157,7 +1194,7 @@ onboarding-manual_proportions-all_proportions = All proportions
|
||||
onboarding-manual_proportions-estimated_height = Estimated user height
|
||||
|
||||
## Tracker automatic proportions setup
|
||||
onboarding-automatic_proportions-back = Go Back to Manual Proportions
|
||||
onboarding-automatic_proportions-back = Go back to Manual Proportions
|
||||
onboarding-automatic_proportions-title = Measure your body
|
||||
onboarding-automatic_proportions-description = For SlimeVR trackers to work, we need to know the length of your bones. This short calibration will measure it for you.
|
||||
onboarding-automatic_proportions-manual = Manual proportions
|
||||
@@ -1247,28 +1284,31 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>Please redo the measurements and ensure they are correct.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = Go back
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
onboarding-scaled_proportions-title = Scaled proportions
|
||||
onboarding-scaled_proportions-description = For SlimeVR trackers to work, we need to know the length of your bones. This will use an average proportion and scale it based on your height.
|
||||
onboarding-scaled_proportions-manual_height-title = Configure your height
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = This height will be used as a baseline for your body proportions.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR is not currently connected to SlimeVR, so measurements can't be based on your headset. <b>Proceed at your own risk or check the docs!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = Your full height is
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = Your estimated headset height is:
|
||||
onboarding-scaled_proportions-manual_height-next_step = Continue and save
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
You are currently using the manual way of setting up scaled proportions!
|
||||
<b>This mode is recommended only if you do not use an HMD with SlimeVR.</b>
|
||||
|
||||
To be able to use the automatic scaled proportions please:
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = Connect a VR Headset
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = Make sure your controllers are connected and correctly assigned to your hands
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
onboarding-scaled_proportions-reset_proportion-title = Reset your body proportions
|
||||
onboarding-scaled_proportions-reset_proportion-description = To set your body proportions based on your height, you need to now reset all of your proportions. This will clear any proportions you have configured and provide a baseline configuration.
|
||||
onboarding-scaled_proportions-done-title = Body proportions set
|
||||
onboarding-scaled_proportions-done-description = Your body proportions should now be configured based on your height.
|
||||
## User height calibration
|
||||
onboarding-user_height-title = What is your height?
|
||||
onboarding-user_height-description = We need your height to calculate your body proportions and accurately represent your movements. You can either let SlimeVR calculate it, or input your height manually.
|
||||
onboarding-user_height-need_head_tracker = A headset and controllers with positional tracking are required to perform the calibration.
|
||||
onboarding-user_height-calculate = Calculate my height automatically
|
||||
onboarding-user_height-next_step = Continue and save
|
||||
onboarding-user_height-manual-proportions = Manual Proportions
|
||||
onboarding-user_height-calibration-title = Calibration Progress
|
||||
onboarding-user_height-calibration-RECORDING_FLOOR = Touch the floor with the tip of your controller
|
||||
onboarding-user_height-calibration-WAITING_FOR_RISE = Stand back up
|
||||
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK = Stand back up and look forward
|
||||
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-ok = Make sure your head is leveled
|
||||
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-low = Do not look at the floor
|
||||
onboarding-user_height-calibration-WAITING_FOR_FW_LOOK-high = Do not look too high up
|
||||
onboarding-user_height-calibration-WAITING_FOR_CONTROLLER_PITCH = Make sure the controller is pointing down
|
||||
onboarding-user_height-calibration-RECORDING_HEIGHT = Stand back up and stand still!
|
||||
onboarding-user_height-calibration-DONE = Success!
|
||||
onboarding-user_height-calibration-ERROR_TIMEOUT = Calibration timed out, try again.
|
||||
onboarding-user_height-calibration-ERROR_TOO_HIGH = The detected user height is too high, try again.
|
||||
onboarding-user_height-calibration-ERROR_TOO_SMALL = The detected user height is too small. Make sure to stand straight and look forward at the end of the calibration.
|
||||
onboarding-user_height-calibration-error = Calibration Failed
|
||||
onboarding-user_height-manual-tip = While adjusting your height, try different poses and see how the skeleton matches your body.
|
||||
onboarding-user_height-reset-warning = <b>Warning:</b> This will reset your proportions to be based on your height.
|
||||
Are you sure you want to do this?
|
||||
|
||||
## Stay Aligned setup
|
||||
onboarding-stay_aligned-title = Stay Aligned
|
||||
@@ -1277,7 +1317,7 @@ onboarding-stay_aligned-put_trackers_on-title = Put on your trackers
|
||||
onboarding-stay_aligned-put_trackers_on-description = To save your resting poses, we'll use the trackers you just assigned. Put on all your trackers, you can see which are which in the figure to the right.
|
||||
onboarding-stay_aligned-put_trackers_on-trackers_warning = You have fewer than 5 trackers currently connected and assigned! This is the minimum amount of trackers required for Stay Aligned to function properly.
|
||||
onboarding-stay_aligned-put_trackers_on-next = I have all my trackers on
|
||||
onboarding-stay_aligned-verify_mounting-title = Check your Mounting
|
||||
onboarding-stay_aligned-verify_mounting-title = Mounting Calibration
|
||||
onboarding-stay_aligned-verify_mounting-step-0 = Stay Aligned requires good mounting. Otherwise, you won't get a good experience with Stay Aligned.
|
||||
onboarding-stay_aligned-verify_mounting-step-1 = 1. Move around while standing.
|
||||
onboarding-stay_aligned-verify_mounting-step-2 = 2. Sit down and move your legs and feet.
|
||||
@@ -1305,6 +1345,8 @@ onboarding-stay_aligned-done = Done
|
||||
|
||||
## Home
|
||||
home-no_trackers = No trackers detected or assigned
|
||||
home-settings = Home Page Settings
|
||||
home-settings-close = Close
|
||||
|
||||
## Trackers Still On notification
|
||||
trackers_still_on-modal-title = Trackers still on
|
||||
@@ -1375,13 +1417,13 @@ firmware_tool-flash_method_step-serial-v2 =
|
||||
.description = Use a USB cable to update your tracker.
|
||||
|
||||
|
||||
firmware_tool-flashbtn_step = Press the boot btn
|
||||
firmware_tool-flashbtn_step = Press the boot button
|
||||
firmware_tool-flashbtn_step-description = Before going to the next step, there are a few things you need to do
|
||||
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = Turn off the tracker, remove the case (if any), connect the USB cable to your computer, then follow the appropriate steps for your SlimeVR board revision:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = Turn on the tracker while shorting the second rectangular FLASH pad from the edge on the top side of the board to the metal shield of the microcontroller.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = Turn on the tracker while shorting the circular FLASH pad on the top side of the board to the metal shield of the microcontroller.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = Turn on the tracker while pushing in the FLASH button on the top side of the board.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11-v2 = Turn on the tracker while shorting the second rectangular FLASH pad from the edge on the top side of the board to the metal shield of the microcontroller. The tracker LED should do a short blink.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12-v2 = Turn on the tracker while shorting the circular FLASH pad on the top side of the board to the metal shield of the microcontroller. The tracker LED should do a short blink.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14-v2 = Turn on the tracker while pushing in the FLASH button on the top side of the board. The tracker LED should do a short blink.
|
||||
|
||||
firmware_tool-flashbtn_step-board_OTHER = Before flashing, you will probably need to put the tracker into bootloader mode.
|
||||
Most of the time, this means pressing the boot button on the board before the flashing process starts.
|
||||
@@ -1522,3 +1564,58 @@ error_collection_modal-description_v2 = { settings-interface-behavior-error_trac
|
||||
You can change this setting later in the Behavior section of the settings page.
|
||||
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
|
||||
tracking_checklist-status-incomplete = You are not prepared to use SlimeVR!
|
||||
tracking_checklist-status-partial = {$count ->
|
||||
[one] You have 1 warning!
|
||||
*[many] You have {$count} warnings!
|
||||
}
|
||||
tracking_checklist-status-complete = You are prepared to use SlimeVR!
|
||||
tracking_checklist-MOUNTING_CALIBRATION = Perform a mounting calibration
|
||||
tracking_checklist-FEET_MOUNTING_CALIBRATION = Perform a feet mounting calibration
|
||||
tracking_checklist-FULL_RESET = Perform a full reset
|
||||
tracking_checklist-FULL_RESET-desc = Some trackers need a reset to be performed.
|
||||
tracking_checklist-STEAMVR_DISCONNECTED = SteamVR not running
|
||||
tracking_checklist-STEAMVR_DISCONNECTED-desc = SteamVR is not running. Are you using it for VR?
|
||||
tracking_checklist-STEAMVR_DISCONNECTED-open = Launch SteamVR
|
||||
tracking_checklist-TRACKERS_REST_CALIBRATION = Calibrate your trackers
|
||||
tracking_checklist-TRACKERS_REST_CALIBRATION-desc = You didn't perform tracker calibration. Please let your trackers (highlighted in yellow) rest on a stable surface for a few secconds.
|
||||
tracking_checklist-TRACKER_ERROR = Trackers with Errors
|
||||
tracking_checklist-TRACKER_ERROR-desc = Some of your trackers have an error. Please restart the trackers highlighted in yellow.
|
||||
tracking_checklist-VRCHAT_SETTINGS = Configure VRChat settings
|
||||
tracking_checklist-VRCHAT_SETTINGS-desc = You have misconfigured VRChat settings! This can negatively impact your tracking.
|
||||
tracking_checklist-VRCHAT_SETTINGS-open = Go to VRChat Warnings
|
||||
tracking_checklist-UNASSIGNED_HMD = VR headset not assigned to Head
|
||||
tracking_checklist-UNASSIGNED_HMD-desc = The VR headset should be assigned as a head tracker.
|
||||
tracking_checklist-NETWORK_PROFILE_PUBLIC = Change your network profile
|
||||
tracking_checklist-NETWORK_PROFILE_PUBLIC-desc = {$count ->
|
||||
[one] Your network profile is currently set to Public ({$adapters}).
|
||||
This is not recommended for SlimeVR to function properly.
|
||||
<PublicFixLink>See how to fix it here.</PublicFixLink>
|
||||
*[many] Some of your network adapters are set to public:
|
||||
{$adapters}
|
||||
This is not recommended for SlimeVR to function properly.
|
||||
<PublicFixLink>See how to fix it here.</PublicFixLink>
|
||||
}
|
||||
tracking_checklist-NETWORK_PROFILE_PUBLIC-open = Open Control Panel
|
||||
tracking_checklist-STAY_ALIGNED_CONFIGURED = Configure Stay Aligned
|
||||
tracking_checklist-STAY_ALIGNED_CONFIGURED-desc = Record the Stay Aligned poses to reduce drift
|
||||
tracking_checklist-STAY_ALIGNED_CONFIGURED-open = Open Stay Aligned Wizard
|
||||
|
||||
tracking_checklist-ignore = Ignore
|
||||
|
||||
preview-mocap_mode_soon = Mocap Mode (Soon™)
|
||||
preview-disable_render = Disable rendering
|
||||
preview-disabled_render = Rendering disabled
|
||||
|
||||
toolbar-mounting_calibration = Mounting Calibration
|
||||
toolbar-mounting_calibration-default = Body
|
||||
toolbar-mounting_calibration-feet = Feet
|
||||
toolbar-mounting_calibration-fingers = Fingers
|
||||
toolbar-drift_reset = Drift Reset
|
||||
toolbar-assigned_trackers = {$count} trackers assigned
|
||||
toolbar-unassigned_trackers = {$count} trackers unassigned
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = Puedes tocar lentamente 2 veces el sensor para seleccionarlo en
|
||||
tips-turn_on_tracker = ¿Estas usando trackers de SlimeVR oficiales? ¡Recuerda <b><em>encender tus trackers<em><b> después de conectarlos al PC!
|
||||
tips-failed_webgl = Fallo al inicializar WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Sin asignar
|
||||
@@ -183,7 +186,7 @@ skeleton_bone-FOOT_SHIFT = Desplazamiento de pies
|
||||
skeleton_bone-FOOT_SHIFT-desc =
|
||||
Este valor es la distancia horizontal entre tu rodilla hacia tu tobillo.
|
||||
Toma en cuenta las piernas bajas yendo hacia atrás cuando te paras recto.
|
||||
Para ajustarlo, pon el largo de los pies en 0, inicia un reinicia completo y modifícalo hasta que tus pies
|
||||
Para ajustarlo, pon el largo de los pies en 0, inicia un reinicio completo y modifícalo hasta que tus pies
|
||||
virtuales se alineen con el medio de tus tobillos.
|
||||
skeleton_bone-SKELETON_OFFSET = Desplazamiento del esqueleto
|
||||
skeleton_bone-SKELETON_OFFSET-desc =
|
||||
@@ -290,7 +293,7 @@ widget-overlay-is_mirrored_label = Mostrar interfaz reflejada
|
||||
|
||||
widget-drift_compensation-clear = Olvidar compensación de drift
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Olvidar reinicio de montura
|
||||
|
||||
@@ -413,7 +416,6 @@ tracker-settings-update-incompatible = No se puede actualizar. Placa incompatibl
|
||||
tracker-settings-update-low-battery = No se puede actualizar. Batería por debajo del 50%
|
||||
tracker-settings-update-up_to_date = Actualizado
|
||||
tracker-settings-update-blocked = Actualización no disponible. No hay otras versiones disponibles
|
||||
tracker-settings-update-available = { $versionName } ya está disponible
|
||||
tracker-settings-update = Actualizar ahora
|
||||
tracker-settings-update-title = Versión del firmware
|
||||
|
||||
@@ -481,6 +483,7 @@ mounting_selection_menu-close = Cerrar
|
||||
|
||||
settings-sidebar-title = Ajustes
|
||||
settings-sidebar-general = General
|
||||
settings-sidebar-steamvr = SteamVR
|
||||
settings-sidebar-tracker_mechanics = Mecánicas del sensor
|
||||
settings-sidebar-stay_aligned = Mantente Alineado
|
||||
settings-sidebar-fk_settings = Ajustes de FK
|
||||
@@ -488,6 +491,7 @@ settings-sidebar-gesture_control = Control de gestos
|
||||
settings-sidebar-interface = Interfaz
|
||||
settings-sidebar-osc_router = Router OSC
|
||||
settings-sidebar-osc_trackers = Sensores OSC de VRChat
|
||||
settings-sidebar-osc_vmc = VMC
|
||||
settings-sidebar-utils = Utilidades
|
||||
settings-sidebar-serial = Consola serial
|
||||
settings-sidebar-appearance = Apariencia
|
||||
@@ -623,6 +627,9 @@ settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = Imp
|
||||
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints-description = Evita que las articulaciones giren más allá de su límite
|
||||
settings-general-fk_settings-enforce_joint_constraints-correct_constraints = Corregir con las limitaciones
|
||||
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = Corregir las rotaciones de las articulaciones cuando superan su límite
|
||||
settings-general-fk_settings-ik = Datos de posición
|
||||
settings-general-fk_settings-ik-use_position = Usar datos de posición
|
||||
settings-general-fk_settings-ik-use_position-description = Permite el uso de los datos de posición de los trackers que lo proveen. Cuando actives esto asegúrate de hacer un reinicio completo y recalibrar en el juego.
|
||||
settings-general-fk_settings-arm_fk = Trackeo de brazos
|
||||
settings-general-fk_settings-arm_fk-description = Cambia cómo el movimiento de los brazos es detectado.
|
||||
settings-general-fk_settings-arm_fk-force_arms = Forzar brazos desde el HMD
|
||||
@@ -776,7 +783,9 @@ settings-serial-auto_dropdown_item = Auto
|
||||
settings-serial-get_wifi_scan = Obtener escaneo WiFi
|
||||
settings-serial-file_type = Texto sin formato
|
||||
settings-serial-save_logs = Guardar en archivo
|
||||
settings-serial-send_command = Enviar
|
||||
settings-serial-send_command-placeholder = Comando...
|
||||
settings-serial-send_command-warning = <b>Peligro:</b> Ejecutar comandos seriales puede causar perdida de datos o romper los trackers.
|
||||
settings-serial-send_command-warning-ok = Sé lo que estoy haciendo
|
||||
settings-serial-send_command-warning-cancel = Cancelar
|
||||
|
||||
@@ -914,6 +923,12 @@ settings-utils-advanced-open_logs = Carpeta de registros
|
||||
settings-utils-advanced-open_logs-description = Abre la carpeta de registros de SlimeVR en el explorador de archivos, que contiene los registros de la aplicación
|
||||
settings-utils-advanced-open_logs-label = Abrir carpeta
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Saltar configuración
|
||||
@@ -929,11 +944,6 @@ onboarding-setup_warning-cancel = Continuar configuración
|
||||
## Wi-Fi setup
|
||||
|
||||
onboarding-wifi_creds-back = Volver a la introducción
|
||||
onboarding-wifi_creds = Ingresar credenciales del Wi-Fi
|
||||
# This cares about multilines
|
||||
onboarding-wifi_creds-description =
|
||||
Los sensores utilizarán estas credenciales para conectarse inalámbricamente.
|
||||
Por favor usa las credenciales del Wi-Fi al cuál estás conectado actualmente.
|
||||
onboarding-wifi_creds-skip = Saltar ajustes de Wi-Fi
|
||||
onboarding-wifi_creds-submit = ¡Enviar!
|
||||
onboarding-wifi_creds-ssid =
|
||||
@@ -974,13 +984,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Bienvenido a SlimeVR
|
||||
onboarding-home-start = ¡Comencemos!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Volver a la asignación de sensores
|
||||
onboarding-enter_vr-title = ¡Es hora de entrar a la RV!
|
||||
onboarding-enter_vr-description = ¡Ponte todos tus sensores y luego entra a la RV!
|
||||
onboarding-enter_vr-ready = Estoy listo
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = ¡Estás listo!
|
||||
@@ -1211,7 +1214,6 @@ onboarding-automatic_mounting-return-home = Hecho
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Volver al tutorial de reinicio
|
||||
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
|
||||
@@ -1309,31 +1311,8 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>Por favor vuelva a hacer las mediciones y asegúrese de que sean correctas.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = Volver
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = Proporciones escaladas
|
||||
onboarding-scaled_proportions-description = Para que los trackers SlimeVR funcionen, necesitamos saber el largo de sus huesos. Esto usará una proporción promedia y la escalará en función a su altura.
|
||||
onboarding-scaled_proportions-manual_height-title = Ajuste su altura
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = Esta altura se utilizará como referencia para las proporciones de su cuerpo.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR no está conectado actualmente a SlimeVR, por lo que las mediciones no se pueden basar en su casco. <b>¡Proceda bajo su propio riesgo o consulte la documentación!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = Su altura total es
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = La altura estimada de su visor es:
|
||||
onboarding-scaled_proportions-manual_height-next_step = Continuar y guardar
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
Actualmente estás utilizando la manera manual para configurar las proporciones escaladas!
|
||||
|
||||
<b>Este modo solo es recomendado si no utilizas un HMD con SlimeVR</b>
|
||||
|
||||
Para poder utilizar las proporciones escaladas automáticas, por favor:
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = Conecta un visor VR
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = Asegurate de que tus mandos están conectados y correctamente asignados a tus manos
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = Reestablecer las proporciones de su cuerpo
|
||||
onboarding-scaled_proportions-reset_proportion-description = Para establecer las proporciones de su cuerpo en función a su altura, ahora debe restablecer todas sus proporciones. Esto borrará las proporciones que haya configurado y proporcionará una configuración de referencia.
|
||||
onboarding-scaled_proportions-done-title = Proporciones corporales guardadas
|
||||
onboarding-scaled_proportions-done-description = Las proporciones de su cuerpo ahora deberían estar configuradas en función de su altura.
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1372,6 +1351,7 @@ onboarding-stay_aligned-done = Hecho
|
||||
## Home
|
||||
|
||||
home-no_trackers = No hay sensores detectados o asignados
|
||||
home-settings-close = Cerrar
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
@@ -1408,6 +1388,8 @@ firmware_tool = Herramienta de firmware DIY
|
||||
firmware_tool-description = Le permite configurar y actualizar sus sensores construidos por usted
|
||||
firmware_tool-not_available = Vaya, la herramienta de firmware no está disponible en este momento. ¡Vuelva más tarde!
|
||||
firmware_tool-not_compatible = La herramienta de firmware no es compatible con esta versión del servidor. ¡Por favor, actualice la app!
|
||||
firmware_tool-select_source = Selecciona el firmware para flashear
|
||||
firmware_tool-select_source-description = Selecciona el firmware que quieres flashear en tu placa
|
||||
firmware_tool-select_source-error = Incapaz de cargar fuentes
|
||||
firmware_tool-select_source-board_type = Tipo de placa
|
||||
firmware_tool-select_source-firmware = Fuente del Firmware
|
||||
@@ -1415,7 +1397,10 @@ firmware_tool-select_source-version = Versión del Firmware
|
||||
firmware_tool-select_source-official = Oficial
|
||||
firmware_tool-select_source-dev = Desarrollo
|
||||
firmware_tool-board_defaults = Configura tu placa
|
||||
firmware_tool-board_defaults-description = Establece los pines o ajustes relativos a tu hardware
|
||||
firmware_tool-board_defaults-add = Añadir
|
||||
firmware_tool-board_defaults-reset = Reestablecer a predeterminado
|
||||
firmware_tool-board_defaults-error-required = Campo requerido
|
||||
firmware_tool-board_defaults-error-format = Formato inválido
|
||||
firmware_tool-board_defaults-error-format-number = No es un número
|
||||
firmware_tool-flash_method_step = Método de flasheo
|
||||
@@ -1423,21 +1408,23 @@ firmware_tool-flash_method_step-description = Por favor seleccione el método de
|
||||
firmware_tool-flash_method_step-ota-v2 =
|
||||
.label = Wi-Fi
|
||||
.description = Utilizar el método sobre-el-aire. Tu tracker utilizará Wi-Fi para actualizar su firmware. Solo funciona en trackers que han sido configurados.
|
||||
firmware_tool-flash_method_step-ota-info =
|
||||
Utilizamos tus credenciales de wifi para flashear el tracker y confirmar que todo funcionó correctamente.
|
||||
<b>¡Nosotros no guardamos tus credenciales wifi!</b>
|
||||
firmware_tool-flash_method_step-serial-v2 =
|
||||
.label = USB
|
||||
.description = Utilizar un cable USB para actualizar tu tracker.
|
||||
firmware_tool-flashbtn_step = Presione el botón de boot
|
||||
firmware_tool-flashbtn_step-description = Antes de pasar al siguiente paso, hay algunas cosas que debe hacer
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = Apague el sensor, retire la carcasa (si la hay), conecte un cable USB a esta computadora y, a continuación, realice uno de los siguientes pasos de acuerdo con la revisión de la placa SlimeVR:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = Encienda el sensor mientras cortocircuita el segundo FLASH pad rectangular desde el borde en la parte superior de la placa y el protector metálico del microcontrolador.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = Encienda el sensor mientras cortocircuita el FLASH pad circular en la parte superior de la placa y el escudo metálico del microcontrolador.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = Encienda el sensor mientras presiona el botón FLASH en la parte superior de la placa
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
Antes de flashear, probablemente tendrá que poner el sensor en modo bootloader.
|
||||
La mayoría de las veces, esto significa presionar el botón de boot en la placa antes de que comience el proceso de flasheo. Si el proceso de flasheo se agota al comienzo, probablemente significa que el sensor no estaba en modo bootloader.
|
||||
Por favor, consulte las instrucciones de flasheo de su placa para saber cómo activar el modo bootloader.
|
||||
firmware_tool-flash_method_ota-title = Flashear por Wi-Fi
|
||||
firmware_tool-flash_method_ota-devices = Dispositivos OTA detectados:
|
||||
firmware_tool-flash_method_ota-no_devices = No hay placas que se puedan actualizar mediante OTA, asegúrese de seleccionar el tipo de placa correcto
|
||||
firmware_tool-flash_method_serial-title = Flashear por USB
|
||||
firmware_tool-flash_method_serial-wifi = Credenciales del Wi-Fi:
|
||||
firmware_tool-flash_method_serial-devices-label = Dispositivos serial detectados:
|
||||
firmware_tool-flash_method_serial-devices-placeholder = Seleccione un dispositivo serial
|
||||
@@ -1452,6 +1439,7 @@ firmware_tool-flashing_step-exit = Salir
|
||||
|
||||
## firmware tool build status
|
||||
|
||||
firmware_tool-build-QUEUED = Esperando a construir....
|
||||
firmware_tool-build-CREATING_BUILD_FOLDER = Creando la carpeta de compilación
|
||||
firmware_tool-build-DOWNLOADING_SOURCE = Descargando el código fuente
|
||||
firmware_tool-build-EXTRACTING_SOURCE = Extrayendo el código fuente
|
||||
@@ -1568,3 +1556,12 @@ 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-settings-close = Cerrar
|
||||
tracking_checklist-STEAMVR_DISCONNECTED-open = Abrir SteamVR
|
||||
tracking_checklist-TRACKERS_REST_CALIBRATION = Calibra tus trackers
|
||||
tracking_checklist-ignore = Ignorar
|
||||
toolbar-assigned_trackers = { $count } trackers asignados
|
||||
toolbar-unassigned_trackers = { $count } trackers sin asignar
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = Haz clic en el menú o golpea suavemente el tracker 2 veces par
|
||||
tips-turn_on_tracker = ¿Estás usando trackers oficiales de SlimeVR? Recuerda <b><em>encender el tracker</em></b> antes de conectarlo a la PC!
|
||||
tips-failed_webgl = No se pudo iniciar WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Sin asignar
|
||||
@@ -95,6 +98,7 @@ board_type-WEMOSD1MINI = Wemos D1 Mini
|
||||
board_type-TTGO_TBASE = TTGO T-Base
|
||||
board_type-ESP01 = ESP-01
|
||||
board_type-SLIMEVR = SlimeVR
|
||||
board_type-SLIMEVR_V1_2 = SlimeVR v1.2
|
||||
board_type-LOLIN_C3_MINI = Lolin C3 Mini
|
||||
board_type-BEETLE32C3 = Beetle ESP32-C3
|
||||
board_type-ESP32C3DEVKITM1 = Espressif ESP32-C3 DevKitM-1
|
||||
@@ -259,7 +263,7 @@ widget-overlay-is_mirrored_label = Mostrar overlay como espejo
|
||||
|
||||
widget-drift_compensation-clear = Eliminar compensacion del drift
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Limpiar reinicio de montura
|
||||
|
||||
@@ -380,7 +384,6 @@ tracker-settings-forget-label = Olvidar tracker
|
||||
tracker-settings-update-low-battery = No se puede actualizar. Batería inferior al 50%
|
||||
tracker-settings-update-up_to_date = Actualizado
|
||||
tracker-settings-update-blocked = Actualización no disponible. No hay otras versiones disponibles
|
||||
tracker-settings-update-available = { $versionName } ya esta disponible
|
||||
tracker-settings-update = Actualizar ahora
|
||||
tracker-settings-update-title = Versión del firmware
|
||||
|
||||
@@ -742,6 +745,8 @@ settings-serial-auto_dropdown_item = Automático
|
||||
settings-serial-get_wifi_scan = Obtener escaneo WiFi
|
||||
settings-serial-file_type = Texto sin formato
|
||||
settings-serial-save_logs = Guardar en archivo
|
||||
settings-serial-send_command = Enviar
|
||||
settings-serial-send_command-warning-cancel = Cancelar
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -873,6 +878,12 @@ settings-utils-advanced-open_logs = Carpeta de registros
|
||||
settings-utils-advanced-open_logs-description = Abra la carpeta de registros de SlimeVR en el explorador de archivos, que contiene los registros de la aplicación
|
||||
settings-utils-advanced-open_logs-label = Abrir carpeta
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Omitir configuración
|
||||
@@ -888,11 +899,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 =
|
||||
@@ -933,13 +939,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Bienvenido a SlimeVR
|
||||
onboarding-home-start = ¡Vamos a prepararnos!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Volver a la asignación del tracker
|
||||
onboarding-enter_vr-title = ¡Hora de entrar en VR!
|
||||
onboarding-enter_vr-description = ¡Ponte todos tus trackers y luego entra a la realidad virtual!
|
||||
onboarding-enter_vr-ready = Estoy listo
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = ¡Todo listo!
|
||||
@@ -1168,7 +1167,6 @@ onboarding-automatic_mounting-return-home = Hecho
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Volver al tutorial de reinicios
|
||||
onboarding-manual_proportions-title = Proporciones físicas manuales
|
||||
onboarding-manual_proportions-fine_tuning_button = Ajuste automático de las proporciones
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Conecte el visor RV para usar el ajuste automatico
|
||||
@@ -1266,30 +1264,8 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>Vuelva a hacer las mediciones y asegúrese de que sean correctas.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = Volver
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = Proporciones escaladas
|
||||
onboarding-scaled_proportions-description = Para que los trackers de SlimeVR funcionen, necesitamos saber la longitud de sus huesos. Esto usará una proporción promedio y la escalará en función de su altura.
|
||||
onboarding-scaled_proportions-manual_height-title = Configure su altura
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = Esta altura se utilizará como base para las proporciones de tu cuerpo.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR no está conectado actualmente a SlimeVR, por lo que las mediciones no se pueden basar con tu visor. <b>¡Proceda bajo su propio riesgo o consulte la documentación!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = Su altura total es
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = La altura estimada del visor es:
|
||||
onboarding-scaled_proportions-manual_height-next_step = Continuar y guardar
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
¡Actualmente está utilizando la forma manual de configurar proporciones escaladas!
|
||||
<b>Este modo solo se recomienda si no se utiliza un HMD con SlimeVR</b>
|
||||
|
||||
Para poder utilizar las proporciones escaladas automáticamente, por favor:
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = Conecte un visor de RV
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = Asegúrese de que sus controladores estén conectados y asignados correctamente a sus manos
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = Restablecer las proporciones del cuerpo
|
||||
onboarding-scaled_proportions-reset_proportion-description = Para establecer las proporciones de su cuerpo en función de su altura, ahora debe restablecer todas sus proporciones. Esto borrará las proporciones que haya configurado y proporcionará una configuración de referencia.
|
||||
onboarding-scaled_proportions-done-title = Proporciones del cuerpo guardadas
|
||||
onboarding-scaled_proportions-done-description = Las proporciones de tu cuerpo ahora deberían configurarse en función de tu altura.
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1368,9 +1344,6 @@ firmware_tool-flash_method_step-description = Seleccione el método de flasheado
|
||||
firmware_tool-flashbtn_step = Pulse el botón de boot
|
||||
firmware_tool-flashbtn_step-description = Antes de pasar al siguiente paso, hay algunas cosas que debe hacer
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = Apague el tracker, retire la carcasa (si la hay), conecte un cable USB a este ordenador y, a continuación, realice uno de los siguientes pasos de acuerdo con la revisión de la placa SlimeVR:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = Encienda el tracker mientras puentea el segundo pad FLASH rectangular desde el borde en la parte superior de la placa y el protector metálico del microcontrolador
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = Encienda el tracker mientras puentea el pad circular FLASH en la parte superior de la placa y el protector metálico del microcontrolador
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = Encienda el rastreador mientras presiona el botón FLASH en la parte superior de la placa
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
Antes de flashear, probablemente tendrá que poner el tracker en modo bootloader.
|
||||
La mayoría de las veces significa presionar el botón de boot en la placa antes de que comience el proceso de flasheo.
|
||||
@@ -1506,3 +1479,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
|
||||
|
||||
|
||||
@@ -24,6 +24,9 @@ tips-do_not_move_heels = Veenduge, et teie kannad ei liigu salvestamise ajal!
|
||||
tips-file_select = Pukseerige failid kasutamiseks, või <u>sirvi</u>.
|
||||
tips-tap_setup = Saate jälgija valimiseks menüüst valimise asemel aeglaselt oma jälgijat 2 korda puudutada.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Määramata
|
||||
@@ -125,7 +128,7 @@ widget-overlay-is_mirrored_label = Näita Ülekatet Peeglina
|
||||
|
||||
widget-drift_compensation-clear = Selgem triivi kompenseerimine
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Lähtesta paigaldusasend
|
||||
|
||||
@@ -535,6 +538,12 @@ settings-osc-vmc-anchor_hip-label = Ankurda puusadel
|
||||
## Advanced settings
|
||||
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Jäta seadistamine vahele
|
||||
@@ -550,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 =
|
||||
@@ -594,13 +598,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Tere tulemast SlimeVR-i
|
||||
onboarding-home-start = Hakkame sättima!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Minge tagasi jälgijate määramisse
|
||||
onboarding-enter_vr-title = Aeg minna VR-i!
|
||||
onboarding-enter_vr-description = Pange selga kõik jälgijad ja VR prillid.
|
||||
onboarding-enter_vr-ready = Olen valmis
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Kõik on valmis!
|
||||
@@ -709,7 +706,6 @@ onboarding-automatic_mounting-put_trackers_on-next = Mul on kõik jälgijad kül
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Mine tagasi lähtestamise õppetusse
|
||||
onboarding-manual_proportions-title = Käsitsi keha proportsioonid
|
||||
|
||||
## Tracker automatic proportions setup
|
||||
@@ -758,10 +754,7 @@ onboarding-automatic_proportions-done-title = Kere mõõdetud ja salvestatud.
|
||||
onboarding-automatic_proportions-done-description = Teie keha proportsioonid kalibreerimine on valmis!
|
||||
onboarding-automatic_proportions-error_modal-confirm = Sain aru!
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -809,3 +802,6 @@ status_system-StatusTrackerError = Jälgijal { $trackerName } on tõrge.
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -24,6 +24,9 @@ tips-do_not_move_heels = Varmista, että kantapääsi ei liiku tallennuksen aika
|
||||
tips-file_select = Vedä ja pudota käytettäviä tiedostoja tai <u>selaa</u>.
|
||||
tips-tap_setup = Voit hitaasti napauttaa 2 kertaa jäljitintä valitaksesi sen, sen sijaan, että valitsisit sen valikosta.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Ei määritetty
|
||||
@@ -125,7 +128,7 @@ widget-overlay-is_mirrored_label = Näytä Overlay Peilinä
|
||||
|
||||
widget-drift_compensation-clear = Tyhjennä ajautumakompensaatio
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Tyhjennä asennuksen nollaus
|
||||
|
||||
@@ -568,6 +571,12 @@ settings-osc-vmc-anchor_hip-label = Ankkuroi lonkalle
|
||||
## Advanced settings
|
||||
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Ohita asennus
|
||||
@@ -583,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 =
|
||||
@@ -627,13 +631,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Tervetuloa SlimeVR:ään
|
||||
onboarding-home-start = Mennään asentamaan!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Palaa jäljittimien määritykseen
|
||||
onboarding-enter_vr-title = Aika astua VR:ään!
|
||||
onboarding-enter_vr-description = Laita kaikki jäljittimet päälle ja astu VR:ään!
|
||||
onboarding-enter_vr-ready = Olen valmis
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Olet valmis!
|
||||
@@ -853,10 +850,7 @@ onboarding-automatic_proportions-done-title = Keho mitattu ja tallennettu.
|
||||
onboarding-automatic_proportions-done-description = Kehosi mittasuhteiden kalibrointi on valmis!
|
||||
onboarding-automatic_proportions-error_modal-confirm = Ymmäretty!
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -911,3 +905,6 @@ status_system-StatusTrackerError = { $trackerName } jäljittimessä on virhe
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,13 @@ tips-tap_setup = Vous pouvez tapoter lentement votre capteur 2 fois pour le choi
|
||||
tips-turn_on_tracker = Vous utilisez des capteurs officiels SlimeVR ? N'oubliez pas <b><em>d'allumer votre capteur</em></b> après l'avoir connecté au PC !
|
||||
tips-failed_webgl = Échec de l'initialisation de WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
unit-meter = Metre
|
||||
unit-foot = Pied
|
||||
unit-inch = Pouce
|
||||
unit-cm = cm
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Non-attribué
|
||||
@@ -95,6 +102,7 @@ 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 = Carte de développement SlimeVR
|
||||
board_type-SLIMEVR_V1_2 = SlimeVR v1.2
|
||||
board_type-LOLIN_C3_MINI = Lolin C3 Mini
|
||||
board_type-BEETLE32C3 = Beetle ESP32-C3
|
||||
@@ -248,6 +256,9 @@ 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 n’est assigné
|
||||
reset-error-no_fingers_tracker = Aucun traqueur de doigts n'est assigné
|
||||
reset-error-mounting-need_full_reset = Nécessite une réinitialisation complète avant de le monter
|
||||
|
||||
## Serial detection stuff
|
||||
|
||||
@@ -271,6 +282,7 @@ navbar-settings = Réglages
|
||||
## Biovision hierarchy recording
|
||||
|
||||
bvh-start_recording = Enregistrer BVH
|
||||
bvh-stop_recording = Sauvegarder l’enregistrement BVH
|
||||
bvh-recording = Enregistrement...
|
||||
bvh-save_title = Sauvegarder l’enregistrement BVH
|
||||
|
||||
@@ -289,7 +301,7 @@ widget-overlay-is_mirrored_label = Afficher le squelette en tant que miroir
|
||||
|
||||
widget-drift_compensation-clear = Réinitialiser la compensation de la dérive
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Réinitialiser la calibration de l'alignement
|
||||
|
||||
@@ -412,7 +424,6 @@ tracker-settings-update-incompatible = Mise à jour impossible. Carte incompatib
|
||||
tracker-settings-update-low-battery = Mise à jour impossible. Batterie inférieure à 50 %
|
||||
tracker-settings-update-up_to_date = À jour
|
||||
tracker-settings-update-blocked = Mise à jour non disponible. Aucune autre version disponible
|
||||
tracker-settings-update-available = { $versionName } est maintenant disponible
|
||||
tracker-settings-update = Mettre à jour maintenant
|
||||
tracker-settings-update-title = Version du micrologiciel
|
||||
|
||||
@@ -480,6 +491,7 @@ mounting_selection_menu-close = Fermer
|
||||
|
||||
settings-sidebar-title = Réglages
|
||||
settings-sidebar-general = Général
|
||||
settings-sidebar-steamvr = SteamVR
|
||||
settings-sidebar-tracker_mechanics = Paramètres des capteurs
|
||||
settings-sidebar-stay_aligned = Garder Aligné
|
||||
settings-sidebar-fk_settings = Paramètres de la capture
|
||||
@@ -487,9 +499,11 @@ settings-sidebar-gesture_control = Contrôle gestuel
|
||||
settings-sidebar-interface = Interface
|
||||
settings-sidebar-osc_router = Routeur OSC
|
||||
settings-sidebar-osc_trackers = Capteurs OSC VRChat
|
||||
settings-sidebar-osc_vmc = VMC
|
||||
settings-sidebar-utils = Utilitaires
|
||||
settings-sidebar-serial = Console série
|
||||
settings-sidebar-appearance = Apparence
|
||||
settings-sidebar-home = Ecran d'accueil
|
||||
settings-sidebar-notifications = Notifications
|
||||
settings-sidebar-behavior = Comportement
|
||||
settings-sidebar-firmware-tool = Outil de micrologiciel DIY
|
||||
@@ -624,6 +638,7 @@ settings-general-fk_settings-enforce_joint_constraints-correct_constraints = Cor
|
||||
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = Corriger les rotations des articulations lorsqu'elles dépassent leur limite
|
||||
settings-general-fk_settings-ik = Données de position
|
||||
settings-general-fk_settings-ik-use_position = Utiliser les données de position
|
||||
settings-general-fk_settings-ik-use_position-description = Permet d'utiliser les données de position des capteurs qui les fournissent. Assurez-vous de faire une réinitialisation complète et de recalibrer en jeu lorsque vous activez cette option.
|
||||
settings-general-fk_settings-arm_fk = Capture des bras
|
||||
settings-general-fk_settings-arm_fk-description = Changez la façon dont les bras sont captés.
|
||||
settings-general-fk_settings-arm_fk-force_arms = Forcer les bras en provenance du casque VR
|
||||
@@ -776,6 +791,11 @@ settings-serial-auto_dropdown_item = Automatique
|
||||
settings-serial-get_wifi_scan = Obtenir scan WiFi
|
||||
settings-serial-file_type = Texte brut
|
||||
settings-serial-save_logs = Enregistrer dans un fichier
|
||||
settings-serial-send_command = Envoyer
|
||||
settings-serial-send_command-placeholder = Commande...
|
||||
settings-serial-send_command-warning = <b>Avertissement:</b> Exécuter des commandes en série peut entraîner une perte de données ou rendre les capteurs inutilisables.
|
||||
settings-serial-send_command-warning-ok = Je sais ce que je fais
|
||||
settings-serial-send_command-warning-cancel = Annuler
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -873,6 +893,8 @@ settings-osc-vmc-mirror_tracking-label = Inverser les mouvements
|
||||
|
||||
## Common OSC settings
|
||||
|
||||
settings-osc-common-network-ports_match_error = Les ports d’entrée et de sortie du routeur OSC ne peuvent pas être les mêmes !
|
||||
settings-osc-common-network-port_banned_error = Le port { $port } ne peut pas être utilisé !
|
||||
|
||||
## Advanced settings
|
||||
|
||||
@@ -907,6 +929,14 @@ settings-utils-advanced-open_logs = Dossier des logs
|
||||
settings-utils-advanced-open_logs-description = Ouvre le dossier des logs de SlimeVR, contenant ses logs, dans l'explorateur de fichier
|
||||
settings-utils-advanced-open_logs-label = Ouvrir le dossier
|
||||
|
||||
## Home Screen
|
||||
|
||||
settings-home-list-layout-desc = Sélectionnez l'une des dispositions possibles de l'écran d'accueil
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
settings-tracking_checklist-active_steps = Etapes actives
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Passer
|
||||
@@ -922,11 +952,6 @@ 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
|
||||
# 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-skip = Passer configuration Wi-Fi
|
||||
onboarding-wifi_creds-submit = Valider
|
||||
onboarding-wifi_creds-ssid =
|
||||
@@ -967,13 +992,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Bienvenue sur SlimeVR
|
||||
onboarding-home-start = Commencer
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Revenir à l'attribution des capteurs
|
||||
onboarding-enter_vr-title = Allons en réalité virtuelle !
|
||||
onboarding-enter_vr-description = Enfilez tous vos capteurs puis allez en réalité virtuelle !
|
||||
onboarding-enter_vr-ready = Je suis prêt
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Vous êtes prêt !
|
||||
@@ -1199,10 +1217,10 @@ onboarding-automatic_mounting-preparation-v2-step-2 = 3. Maintenez la position j
|
||||
onboarding-automatic_mounting-put_trackers_on-title = Enfilez vos capteurs
|
||||
onboarding-automatic_mounting-put_trackers_on-description = Pour calibrer l'alignement, nous allons utiliser les capteurs que vous venez d'attribuer.
|
||||
onboarding-automatic_mounting-put_trackers_on-next = J'ai tous mes capteurs
|
||||
onboarding-automatic_mounting-return-home = Terminé
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Revenir au didacticiel de réinitialisation
|
||||
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
|
||||
@@ -1300,30 +1318,12 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>Veuillez refaire les mesures et vous assurer qu'elles sont correctes.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = Retour
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = Proportions à l'échelle
|
||||
onboarding-scaled_proportions-description = Pour que les capteurs SlimeVR fonctionnent, nous avons besoin de connaître la longueur de vos os. Cela utilisera une proportion moyenne et l'ajustera en fonction de votre taille.
|
||||
onboarding-scaled_proportions-manual_height-title = Configuration de votre taille
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = Cette hauteur sera utilisée comme base pour les proportions de votre corps.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR n'est actuellement pas connecté à SlimeVR, les mesures ne peuvent donc pas être basées sur votre casque. <b>Procédez à vos risques et périls ou consultez la documentation !</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = Votre hauteur totale est :
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = La hauteur estimée de votre casque est de :
|
||||
onboarding-scaled_proportions-manual_height-next_step = Continuer et enregistrer
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
Vous utilisez actuellement le réglage manuel de la mise à l'échelle des proportions !
|
||||
<b>Ce mode est recommandé uniquement si vous n'utilisez pas de casque VR avec SlimeVR</b>
|
||||
|
||||
Pour pouvoir utiliser les proportions mises à l’échelle automatiquement, veuillez :
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = Connecter un casque VR
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = Assurez-vous que vos manettes sont connectées et correctement assignées à vos mains
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = Réinitialiser les proportions de votre corps
|
||||
onboarding-scaled_proportions-reset_proportion-description = Pour définir les proportions de votre corps en fonction de votre taille, vous devez réinitialiser toutes vos proportions. Cela remplacera les proportions que vous avez configurées par une configuration de base.
|
||||
onboarding-scaled_proportions-done-title = Ensemble de proportions du corps
|
||||
onboarding-scaled_proportions-done-description = Les proportions de votre corps devraient maintenant être configurées à partir de votre taille.
|
||||
onboarding-user_height-title = Quelle est votre taille ?
|
||||
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
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1398,21 +1398,44 @@ firmware_tool = Outil de micrologiciel DIY
|
||||
firmware_tool-description = Vous permet de configurer et de flash vos capteurs DIY
|
||||
firmware_tool-not_available = Oups, l'outil de micrologiciel n'est pas disponible en ce moment. Revenez plus tard !
|
||||
firmware_tool-not_compatible = L'outil de micrologiciel n'est pas compatible avec cette version de serveur. Veuillez mettre à jour votre serveur !
|
||||
firmware_tool-select_source = Sélectionnez le micrologiciel à flasher
|
||||
firmware_tool-select_source-description = Sélectionnez le micrologiciel que vous souhaitez flasher sur votre carte
|
||||
firmware_tool-select_source-error = Impossible de charger les sources
|
||||
firmware_tool-select_source-board_type = Type de carte
|
||||
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-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
|
||||
firmware_tool-board_defaults-reset = Réinitialisation à la valeur par défaut
|
||||
firmware_tool-board_defaults-error-required = Champ requis
|
||||
firmware_tool-board_defaults-error-format = Format invalide
|
||||
firmware_tool-board_defaults-error-format-number = Pas un nombre
|
||||
firmware_tool-flash_method_step = Méthode de flash
|
||||
firmware_tool-flash_method_step-description = Veuillez sélectionner la méthode de flash que vous souhaitez utiliser
|
||||
firmware_tool-flash_method_step-ota-v2 =
|
||||
.label = Wi-Fi
|
||||
.description = Utilisez la méthode « over-the-air ». Votre capteur utilisera le Wi-Fi pour mettre à jour son microgiciel. Cette méthode ne fonctionne que pour les capteurs déjà configurés.
|
||||
firmware_tool-flash_method_step-ota-info =
|
||||
Nous utilisons vos identifiants wifi pour flasher le capteur et confirmer que tout s'est déroulé correctement.
|
||||
<b>Nous ne stockons pas vos identifiants wifi !</b>
|
||||
firmware_tool-flash_method_step-serial-v2 =
|
||||
.label = USB
|
||||
.description = Utiliser un cable USB pour mettre à jour votre capteur.
|
||||
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 = Allumez le capteur tout en court-circuitant le deuxième pad FLASH rectangulaire à partir du bord sur la face supérieure de la carte et du bouclier métallique du microcontrôleur
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = Allumez le tracker tout en court-circuitant le pad FLASH circulaire sur le côté supérieur de la carte et le bouclier métallique du microcontrôleur
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = Allumez le tracker tout en appuyant sur le bouton FLASH situé sur la partie supérieure de la carte
|
||||
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.
|
||||
Si le processus de flash expire au début du flash, cela signifie probablement que le capteur n'était pas en mode bootloader
|
||||
Veuillez vous référer aux instructions de flash de votre carte pour savoir comment activer le mode boatloader
|
||||
firmware_tool-flash_method_ota-title = Flasher via Wi-Fi
|
||||
firmware_tool-flash_method_ota-devices = Appareils OTA détectés :
|
||||
firmware_tool-flash_method_ota-no_devices = Il n'y a aucune carte pouvant être mise à jour à l'aide d'OTA, assurez-vous d'avoir sélectionné le bon type de carte
|
||||
firmware_tool-flash_method_serial-title = Flasher via USB
|
||||
firmware_tool-flash_method_serial-wifi = Identifiants Wi-Fi :
|
||||
firmware_tool-flash_method_serial-devices-label = Appareils en série détectés :
|
||||
firmware_tool-flash_method_serial-devices-placeholder = Sélectionnez un appareil en série
|
||||
@@ -1427,7 +1450,10 @@ firmware_tool-flashing_step-exit = Quitter
|
||||
|
||||
## firmware tool build status
|
||||
|
||||
firmware_tool-build-QUEUED = En attente de la création...
|
||||
firmware_tool-build-CREATING_BUILD_FOLDER = Création du dossier de création
|
||||
firmware_tool-build-DOWNLOADING_SOURCE = Téléchargement du code source
|
||||
firmware_tool-build-EXTRACTING_SOURCE = Extraction du code source
|
||||
firmware_tool-build-BUILDING = Création du micrologiciel
|
||||
firmware_tool-build-SAVING = Enregistrement du micrologiciel
|
||||
firmware_tool-build-DONE = Création terminée
|
||||
@@ -1540,3 +1566,6 @@ 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
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@ websocket-connection_lost = החיבור לשרת אבד. מנסה להתחבר
|
||||
tips-find_tracker = לא בטוח איזה חיישן אתה מחזיק? נער את החיישן והתוכנה תסמן לך אותו.
|
||||
tips-do_not_move_heels = אנא וודא שהעקבים שלך לא זזות בזמן הקלטה
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = לא שויך
|
||||
@@ -102,7 +105,7 @@ widget-overlay-is_mirrored_label = הצג Overlay כהעתק
|
||||
## Widget: Drift compensation
|
||||
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
|
||||
## Widget: Developer settings
|
||||
@@ -279,6 +282,12 @@ settings-osc-vrchat-network-trackers-elbows = מרפקים
|
||||
## Advanced settings
|
||||
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
|
||||
@@ -291,9 +300,6 @@ settings-osc-vrchat-network-trackers-elbows = מרפקים
|
||||
## Setup start
|
||||
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
|
||||
## Setup done
|
||||
|
||||
|
||||
@@ -336,10 +342,7 @@ onboarding-automatic_proportions-verify_results-confirm = הם נכונים
|
||||
onboarding-automatic_proportions-done-title = הגוף שלך נמדד ונשמר
|
||||
onboarding-automatic_proportions-done-description = תהליך כיול פרופורציות הגוף שלך הושלם!
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -381,3 +384,6 @@ home-no_trackers = לא זוהו או הוקצו חיישנים
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = Puoi toccare lentamente 2 volte il tracker per sceglierlo invec
|
||||
tips-turn_on_tracker = Stai utilizzando i tracker ufficiali di SlimeVR? Ricordati di <b><em>accendere il tuo tracker</em></b> dopo averlo collegato al PC!
|
||||
tips-failed_webgl = Inizializzazione WebGL fallita.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Non assegnato
|
||||
@@ -278,7 +281,7 @@ widget-overlay-is_mirrored_label = Mostra Overlay come specchio
|
||||
|
||||
widget-drift_compensation-clear = Rimuovi compensazione per il drift
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Cancella tutti i ripristini del posizionamento
|
||||
|
||||
@@ -398,7 +401,6 @@ tracker-settings-forget-description = Rimuove il tracker dal SlimeVR server e im
|
||||
tracker-settings-forget-label = Dimentica il tracker
|
||||
tracker-settings-update-low-battery = Non è possibile aggiornare. Batteria inferiore al 50%
|
||||
tracker-settings-update-up_to_date = Aggiornata
|
||||
tracker-settings-update-available = { $versionName } è ora disponibile
|
||||
tracker-settings-update = Aggiorna
|
||||
tracker-settings-update-title = Versione firmware
|
||||
|
||||
@@ -887,6 +889,12 @@ settings-utils-advanced-open_logs = Cartella dei Log
|
||||
settings-utils-advanced-open_logs-description = Apri la cartella dei log di SlimeVR in Esplora Risorse, contenente i log dell'app
|
||||
settings-utils-advanced-open_logs-label = Apri cartella
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Salta la configurazione
|
||||
@@ -902,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 =
|
||||
@@ -947,13 +950,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Benvenuti a SlimeVR
|
||||
onboarding-home-start = Prepariamoci!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Torna all'assegnazione dei tracker
|
||||
onboarding-enter_vr-title = È ora di entrare in VR!
|
||||
onboarding-enter_vr-description = Indossa tutti i tuoi tracker e entra in VR!
|
||||
onboarding-enter_vr-ready = Sono prontə!
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = È tutto pronto!
|
||||
@@ -1181,7 +1177,6 @@ onboarding-automatic_mounting-put_trackers_on-next = Sto indossando tutti i miei
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Torna al tutorial di ripristino
|
||||
onboarding-manual_proportions-title = Impostazione manuale delle proporzioni del corpo
|
||||
onboarding-manual_proportions-fine_tuning_button = Regola automaticamente le proporzioni
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Per piacer collega un visore VR per utilizzare la regolazione automatica
|
||||
@@ -1280,30 +1275,8 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>Si prega di ripetere le misurazioni e assicurarsi che siano corrette.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = Indietro
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = Proporzioni in scala
|
||||
onboarding-scaled_proportions-description = Affinché i tracker di SlimeVR funzionino, dobbiamo conoscere la lunghezza dei tuoi arti. Questo utilizzerà delle proporzioni nella media e la scalerà in base alla tua altezza.
|
||||
onboarding-scaled_proportions-manual_height-title = Configura la tua altezza
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = Questa altezza verrà utilizzata come punto di riferimento per calcolare le proporzioni del tuo corpo.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR non è attualmente connesso a SlimeVR, quindi le misurazioni non possono essere basate sul visore. <b>Procedi a tua discrezione o controlla la documentazione!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = La tua altezza totale è
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = La altezza del tuo visore stimata è:
|
||||
onboarding-scaled_proportions-manual_height-next_step = Continua e salva
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
Al momento stai utilizzando il metodo manuale per impostare le proporzioni in scala!
|
||||
<b>Questa modalità è consigliata solo se non si utilizza un Visore con SlimeVR</b>
|
||||
|
||||
Per poter utilizzare le proporzioni in scala automatica, si prega di:
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = Collegare un visore VR
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = Assicurarsi che i controller siano collegati e assegnati correttamente alle mani
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = Ripristina le proporzioni del corpo
|
||||
onboarding-scaled_proportions-reset_proportion-description = Per impostare le proporzioni del tuo corpo in base alla tua altezza, ora devi ripristinare tutte le tue proporzioni. In questo modo verranno cancellate tutte le proporzioni configurate e verrà fornita una configurazione di base.
|
||||
onboarding-scaled_proportions-done-title = Proporzioni del corpo configurate
|
||||
onboarding-scaled_proportions-done-description = Le proporzioni del tuo corpo dovrebbero ora essere configurate in base alla tua altezza.
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1383,9 +1356,6 @@ firmware_tool-flash_method_step-description = Seleziona il metodo di flashing ch
|
||||
firmware_tool-flashbtn_step = Premi il pulsante di avvio
|
||||
firmware_tool-flashbtn_step-description = Prima di passare al passaggio successivo, ci sono alcune cose che devi fare
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = Spegni il tracker, rimuovi la custodia (se presente), collega un cavo USB a questo computer, quindi esegui uno dei seguenti passaggi in base alla revisione della tua scheda SlimeVR:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = Accendi il tracker mentre cortocircuiti il pad rettangolare FLASH, il secondo pad contando dal bordo superiore della scheda, e lo shield metallico del microcontroller
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = Accendi il tracker mentre cortocircuiti il pad circolare FLASH, il pad vicino al bordo superiore della scheda, e lo shield metallico del microcontroller
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = Accendi il tracker mentre premi il pulsante FLASH sul lato superiore della scheda
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
Prima di eseguire il flashing, sarà probabilmente necessario mettere il tracker in modalità bootloader.
|
||||
La maggior parte delle volte significa premere il pulsante di avvio sulla scheda prima che inizi il processo di flashing.
|
||||
@@ -1521,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
|
||||
|
||||
|
||||
@@ -26,6 +26,9 @@ tips-tap_setup = 追跡装置をゆっくり2回軽くタップして選択す
|
||||
tips-turn_on_tracker = SlimeVRの公式トラッカーを使っていますか?トラッカーをPCに接続した後は<b><em>必ず電源を入れて</em></b>ください!
|
||||
tips-failed_webgl = WebGLの初期化に失敗しました。
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = 未設定
|
||||
@@ -155,7 +158,7 @@ widget-overlay-is_mirrored_label = オーバーレイをミラーとして表示
|
||||
|
||||
widget-drift_compensation-clear = ドリフト補正をクリアする
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = リセットマウンティングをクリア
|
||||
|
||||
@@ -557,6 +560,12 @@ settings-osc-vmc-vrm = VRMモデル
|
||||
## Advanced settings
|
||||
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = 設定をスキップする
|
||||
@@ -568,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 =
|
||||
@@ -593,13 +597,6 @@ onboarding-reset_tutorial-skip = ステップをスキップする
|
||||
onboarding-home = SlimeVRへようこそ
|
||||
onboarding-home-start = セットアップ開始!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = トラッカー割り当てに戻る
|
||||
onboarding-enter_vr-title = VRに入る時間だ!
|
||||
onboarding-enter_vr-description = トラッカーを全部つけて、VRに突入せよ!
|
||||
onboarding-enter_vr-ready = 準備完了
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = 準備完了です!
|
||||
@@ -696,7 +693,6 @@ onboarding-automatic_mounting-put_trackers_on-next = すべてのトラッカー
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = チュートリアルをリセットする
|
||||
onboarding-manual_proportions-title = マニュアルボディプロポーション
|
||||
|
||||
## Tracker automatic proportions setup
|
||||
@@ -736,10 +732,7 @@ onboarding-automatic_proportions-done-title = 体を測定して保存
|
||||
onboarding-automatic_proportions-done-description = ボディプロポーションのキャリブレーションが完了しました!
|
||||
onboarding-automatic_proportions-error_modal-confirm = 了解!
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -797,3 +790,6 @@ unknown_device-modal-forget = 無視する
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = 목록에서 트래커를 선택하는 대신 트래커를 천
|
||||
tips-turn_on_tracker = 공식 SlimeVR 트래커를 사용 중이신가요? 트래커를 <b><em>PC에 연결</em></b>하고 <b><em>전원을 키셔야</em></b> 해요.
|
||||
tips-failed_webgl = WebGL 초기화에 실패했습니다.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = 할당되지 않음
|
||||
@@ -159,7 +162,7 @@ widget-overlay-is_mirrored_label = 오버레이 반전
|
||||
|
||||
widget-drift_compensation-clear = 틀어짐 보정 초기화
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = 착용 방향 정렬 초기화
|
||||
|
||||
@@ -276,7 +279,6 @@ tracker-settings-forget = 트래커 삭제
|
||||
tracker-settings-forget-description = SlimeVR 서버에서 트래커를 제거하고 서버를 다시 시작할 때까지 자동으로 연결하지 않아요. 트래커의 설정은 지워지지 않아요.
|
||||
tracker-settings-forget-label = 트래커 삭제
|
||||
tracker-settings-update-up_to_date = 최신 버전
|
||||
tracker-settings-update-available = { $versionName } 사용 가능
|
||||
tracker-settings-update = 지금 업데이트
|
||||
tracker-settings-update-title = 펌웨어 버전
|
||||
|
||||
@@ -720,6 +722,12 @@ settings-utils-advanced-open_data-label = 폴더 열기
|
||||
settings-utils-advanced-open_logs = 로그 폴더
|
||||
settings-utils-advanced-open_logs-label = 폴더 열기
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = 설정 건너뛰기
|
||||
@@ -735,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 =
|
||||
@@ -780,13 +783,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = SlimeVR에 어서오세요!
|
||||
onboarding-home-start = 설정하러 가보죠!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = 트래커 위치 지정으로 돌아가기
|
||||
onboarding-enter_vr-title = VR에 들어갈 시간이에요!
|
||||
onboarding-enter_vr-description = 모든 트래커를 착용하고 VR에 입장하세요!
|
||||
onboarding-enter_vr-ready = 준비됐어요!
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = 모든 설정을 마쳤어요!
|
||||
@@ -989,7 +985,6 @@ onboarding-automatic_mounting-put_trackers_on-next = 모든 트래커를 착용
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = 정렬 튜토리얼로 돌아가기
|
||||
onboarding-manual_proportions-title = 수동 신체 비율 설정
|
||||
onboarding-manual_proportions-fine_tuning_button = 신체 비율을 자동으로 조정
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = 신체 비율 자동 조정 기능을 이용하려면 VR 헤드셋을 연결해 주세요
|
||||
@@ -1081,23 +1076,8 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>측정을 다시 수행하고 측정값들이 올바른지 확인해 주세요.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = 돌아가기
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = 키를 사용하여 추산한 신체 비율
|
||||
onboarding-scaled_proportions-description = SlimeVR 트래커들이 작동하기 위해서는 사용자의 뼈 길이를 알아야 합니다. 이 옵션은 뼈 길이를 측정된 키에 비례하는 평균치로 설정합니다.
|
||||
onboarding-scaled_proportions-manual_height-title = 키 설정하기
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = 설정된 키는 신체 비율의 기준치로 사용됩니다.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR이 SlimeVR에 연결되어 있지 않으므로 헤드셋을 이용해 값을 측정할 수 있어요. <b>위험을 감수하고 계속 진행하거나, 사용 설명서 및 도움말을 참조하세요!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = 사용자의 키:
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = 사용자의 추산된 헤드셋 높이:
|
||||
onboarding-scaled_proportions-manual_height-next_step = 계속하고 저장하기
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = 신체 비율 초기화
|
||||
onboarding-scaled_proportions-reset_proportion-description = 키에 따라 신체 비율을 설정하려면, 현재 설정된 신체 비율을 모두 초기화해야 합니다. 이 작업은 기존에 설정된 신체 비율을 초기화하고 신체 비율을 기본 설정으로 되돌립니다.
|
||||
onboarding-scaled_proportions-done-title = 신체 비율 설정됨
|
||||
onboarding-scaled_proportions-done-description = 이제 사용자의 키에 비례한 신체 비율이 사용됩니다.
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1143,9 +1123,6 @@ firmware_tool-flash_method_step-description = 펌웨어를 트래커에 플래
|
||||
firmware_tool-flashbtn_step = BOOT 버튼 누르기
|
||||
firmware_tool-flashbtn_step-description = 다음 단계로 진행하기 전 몇 가지 작업을 해야 해요
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = 트래커를 끄고, 케이스를 제거하고 (만약 있다면), 이 컴퓨터에 USB 케이블을 연결한 후 SlimeVR 보드 버전에 따라 해당하는 작업을 수행해 주세요:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = 보드 상단 가장자리에 위치한 두 번째 직사각형 FLASH 패드와 MCU의 금속 덮개를 단락시키며 트래커 전원을 켜기
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = 보드 상단에 위치한 원형 FLASH 패드와 MCU의 금속 덮개를 단락시키며 트래커 전원을 켜기
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = 보드 상단의 FLASH 버튼을 누른 채로 트래커 전원을 켜기
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
펌웨어를 쓰기 전에 트래커를 부트로더 모드에 진입시켜야 해요.
|
||||
대부분의 경우 이는 펌웨어 쓰기 작업이 시작되기 전 보드에 있는 BOOT 버튼을 누르면 가능합니다.
|
||||
@@ -1234,3 +1211,6 @@ unknown_device-modal-forget = 무시할게요
|
||||
|
||||
error_collection_modal-title = 오류를 수집해도 될까요?
|
||||
error_collection_modal-confirm = 동의해요
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = Vietoj pasirinkimo iš meniu, galite du kartus švelniai bakste
|
||||
tips-turn_on_tracker = Naudojate oficialius SlimeVR sekiklius? Nepamirškite <b><em>įjungti juos</em></b> po prijungimo prie kompiuterio!
|
||||
tips-failed_webgl = Įvyko techninė klaida inicijuojant WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Nepriskirta
|
||||
@@ -239,7 +242,7 @@ widget-overlay-is_mirrored_label = Rodyti perdangą kaip veidrodį
|
||||
|
||||
widget-drift_compensation-clear = Išvalyti dreifo kompensavimą
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Išvalyti tvirtinimo atstatymą
|
||||
|
||||
@@ -357,7 +360,6 @@ tracker-settings-forget-description = Tai pašalins sekiklį iš SlimeVR serveri
|
||||
tracker-settings-forget-label = Pamiršti sekiklį
|
||||
tracker-settings-update-low-battery = Negalima atnaujinti, baterijos lygis žemesnis nei 50%
|
||||
tracker-settings-update-up_to_date = Atnaujinta
|
||||
tracker-settings-update-available = Prieinamas atnaujinimas: { $versionName }
|
||||
tracker-settings-update = Atnaujinti dabar
|
||||
tracker-settings-update-title = Programinės įrangos versija
|
||||
|
||||
@@ -598,6 +600,12 @@ settings-general-gesture_control-trackers =
|
||||
## Advanced settings
|
||||
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
|
||||
@@ -610,9 +618,6 @@ settings-general-gesture_control-trackers =
|
||||
## Setup start
|
||||
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
|
||||
## Setup done
|
||||
|
||||
|
||||
@@ -646,10 +651,7 @@ settings-general-gesture_control-trackers =
|
||||
## Tracker automatic proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -692,3 +694,6 @@ settings-general-gesture_control-trackers =
|
||||
|
||||
error_collection_modal-confirm = Sutinku
|
||||
error_collection_modal-cancel = Nesutinku
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = Du kan forsiktig trykke på din tracker 2 ganger sammenhengende
|
||||
tips-turn_on_tracker = Bruker du offisielle SlimeVR trackere? Husk å <b><em>skru dem på</em></b> etter å ha koblet dem til PCen din!
|
||||
tips-failed_webgl = Feil ved initialisering av WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Ikke tildelt
|
||||
@@ -147,7 +150,7 @@ widget-overlay-is_mirrored_label = Vis overlegg som speil
|
||||
## Widget: Drift compensation
|
||||
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
|
||||
## Widget: Developer settings
|
||||
@@ -479,6 +482,12 @@ settings-osc-vrchat-network-trackers-elbows = Albuer
|
||||
## Advanced settings
|
||||
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Hopp over oppsett
|
||||
@@ -488,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 =
|
||||
@@ -513,13 +517,6 @@ onboarding-reset_tutorial-skip = Hopp over trinn
|
||||
onboarding-home = Velkommen til SlimeVR
|
||||
onboarding-home-start = La oss sette i gang!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Gå tilbake til Tracker tilordning
|
||||
onboarding-enter_vr-title = På tide å tre inn i VR!
|
||||
onboarding-enter_vr-description = Putt på alle trackerne dine og tre inn i VR!
|
||||
onboarding-enter_vr-ready = Jeg er klar!
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Nå er alt klart!
|
||||
@@ -604,7 +601,6 @@ onboarding-automatic_mounting-put_trackers_on-next = Jeg har alle mine trackere
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Gå tilbake til Nullstillings opplæring
|
||||
onboarding-manual_proportions-title = Manuelle kropps-proporsjoner
|
||||
|
||||
## Tracker automatic proportions setup
|
||||
@@ -639,10 +635,7 @@ onboarding-automatic_proportions-verify_results-confirm = De er riktige
|
||||
onboarding-automatic_proportions-done-title = Kropp målt og lagret.
|
||||
onboarding-automatic_proportions-done-description = Din kropps-proposisjons kalibrering er fullført!
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -685,3 +678,6 @@ tray_or_exit_modal-cancel = Avbryt
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,13 @@ tips-tap_setup = Je kan langzaam 2 keer op je tracker tikken om deze te kiezen i
|
||||
tips-turn_on_tracker = Gebruik je officiële SlimeVR-trackers? Vergeet niet om <b><em>je tracker aan te zetten</em></b> nadat je deze op de pc hebt aangesloten!
|
||||
tips-failed_webgl = WebGL initialiseren is gefaald.
|
||||
|
||||
## Units
|
||||
|
||||
unit-meter = Meter
|
||||
unit-foot = Voet
|
||||
unit-inch = Inch
|
||||
unit-cm = cm
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Niet toegewezen
|
||||
@@ -95,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
|
||||
@@ -244,6 +253,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 = U heeft een volledige reset nodig voordat u de montagekalibratie kunt uitvoeren.
|
||||
reset-error-yaw-need_full_reset = U heeft een volledige reset nodig voordat u de yaw reset kunt uitvoeren.
|
||||
|
||||
## Serial detection stuff
|
||||
|
||||
@@ -267,6 +280,7 @@ navbar-settings = Instellingen
|
||||
## 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
|
||||
|
||||
@@ -285,7 +299,7 @@ widget-overlay-is_mirrored_label = Overlay weergeven als spiegel
|
||||
|
||||
widget-drift_compensation-clear = Reset huidige drift compensatie
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Reset montage legen
|
||||
|
||||
@@ -402,10 +416,11 @@ 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-available = { $versionName } is nu beschikbaar
|
||||
tracker-settings-update = Werk nu bij.
|
||||
tracker-settings-update-title = Firmware versie
|
||||
|
||||
@@ -473,6 +488,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
|
||||
@@ -480,9 +496,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
|
||||
@@ -565,7 +584,7 @@ settings-general-tracker_mechanics-use_mag_on_all_trackers-description =
|
||||
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-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.
|
||||
@@ -606,11 +625,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. Waneer u dit inschakelt, zorg er voor dat u een volledige reset doet en in het spel opnieuw kalibreert.
|
||||
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
|
||||
@@ -763,6 +787,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
|
||||
|
||||
@@ -857,6 +886,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
|
||||
|
||||
@@ -891,6 +922,18 @@ settings-utils-advanced-open_logs = logboeken
|
||||
settings-utils-advanced-open_logs-description = Open de logmap van SlimeVR in de bestandsverkenner, met de logboeken van de app
|
||||
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
|
||||
|
||||
onboarding-skip = Setupgids overslaan
|
||||
@@ -906,11 +949,6 @@ 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
|
||||
# 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-skip = WiFi-instellingen overslaan
|
||||
onboarding-wifi_creds-submit = Verzenden!
|
||||
onboarding-wifi_creds-ssid =
|
||||
@@ -951,13 +989,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Welkom bij SlimeVR
|
||||
onboarding-home-start = Laten we beginnen!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Ga terug naar de sectie voor toewijzing van trackers
|
||||
onboarding-enter_vr-title = Tijd om VR in te gaan!
|
||||
onboarding-enter_vr-description = Doe al je trackers aan en ga dan in VR!
|
||||
onboarding-enter_vr-ready = Gereed!
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Je bent klaar!
|
||||
@@ -1032,6 +1063,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
|
||||
@@ -1174,6 +1206,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 uw tenen met beide voeten naar voren gericht. u 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.
|
||||
@@ -1181,10 +1215,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 = Ga terug naar de reset tutorial
|
||||
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
|
||||
@@ -1275,34 +1310,13 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>Voer de metingen opnieuw uit en controleer of ze correct zijn.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = Ga terug
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = Geschaalde proporties
|
||||
onboarding-scaled_proportions-description =
|
||||
Voor een correcte werking van de SlimeVR-trackers hebben we de lengte van uw botten nodig.
|
||||
We gebruiken hiervoor een gemiddelde lichaamsverhouding, geschaald op basis van uw lengte.
|
||||
onboarding-scaled_proportions-manual_height-title = Configureer uw lengte
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = Deze lengte wordt gebruikt als basis voor je lichaamsverhoudingen.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr =
|
||||
SteamVR is momenteel niet verbonden met SlimeVR, dus metingen kunnen niet worden gebaseerd op je headset.
|
||||
<b>Ga verder op eigen risico of raadpleeg de documentatie!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = Uw volledige lengte is
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = De geschatte hoogte van uw headset is:
|
||||
onboarding-scaled_proportions-manual_height-next_step = Opslaan en doorgaan
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
Je gebruikt momenteel de handmatige manier om geschaalde verhoudingen in te stellen!
|
||||
<b>Deze modus wordt alleen aanbevolen als je geen HMD met SlimeVR gebruikt.</b>
|
||||
|
||||
Om de automatische geschaalde verhoudingen te kunnen gebruiken, doe het volgende:
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = Sluit een VR-headset aan
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = Zorg ervoor dat je controllers zijn verbonden en correct aan je handen zijn toegewezen
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = Reset je lichaamsverhoudingen
|
||||
onboarding-scaled_proportions-reset_proportion-description = Om je lichaamsverhoudingen op basis van je lengte in te stellen, moet je nu al je verhoudingen resetten. Dit zal alle verhoudingen die je hebt ingesteld wissen en een basisconfiguratie bieden.
|
||||
onboarding-scaled_proportions-done-title = Lichaamsverhoudingen ingesteld
|
||||
onboarding-scaled_proportions-done-description = Je lichaamsverhoudingen zouden nu gebaseerd moeten zijn op je lengte
|
||||
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
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1341,6 +1355,8 @@ onboarding-stay_aligned-done = Klaar
|
||||
## Home
|
||||
|
||||
home-no_trackers = Geen trackers gedetecteerd of toegewezen
|
||||
home-settings = Startpagina-instellingen
|
||||
home-settings-close = Sluiten
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
@@ -1381,14 +1397,13 @@ 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 u wilt flashen
|
||||
firmware_tool-select_source-description = Selecteer de firmware die u op uw bord wilt flashen
|
||||
firmware_tool-flash_method_step = Flashing methode
|
||||
firmware_tool-flash_method_step-description = Kies de flashingsmethode die je wilt gebruiken
|
||||
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-board_SLIMEVR-r11 = Zet de tracker aan terwijl u het tweede rechthoekige FLASH-pad vanaf de rand aan de bovenkant van het board kortsluit, en het metalen schild van de microcontroller.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = Zet de tracker aan terwijl u het ronde FLASH-pad aan de bovenkant van het board kortsluit, en het metalen schild van de microcontroller.
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = Zet de tracker aan terwijl u de FLASH-knop aan de bovenkant van het board indrukt.
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
Voordat u 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.
|
||||
@@ -1522,3 +1537,35 @@ 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-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>Hiet leest u hoe u dit kunt oplossen</PublicFixLink>
|
||||
*[other]
|
||||
Sommige van uw netwerkadapters staan ingesteld op openbaar:
|
||||
{ $adapters }.
|
||||
Dit wordt niet aanbevolen voor een goede werking van SlimeVR.
|
||||
<PublicFixLink>Hier leest u hoe u dit kunt 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
|
||||
|
||||
@@ -31,6 +31,13 @@ tips-tap_setup = Możesz powoli stuknąć 2 razy tracker, aby go wybrać, zamias
|
||||
tips-turn_on_tracker = Używasz oficjalnych trackerów SlimeVR? Pamiętaj, <b><em>aby włączyć tracker</em></b> po podłączeniu go do komputera!
|
||||
tips-failed_webgl = Nie udało się zainicjalizować WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
unit-meter = Metr
|
||||
unit-foot = Stopa
|
||||
unit-inch = Cal
|
||||
unit-cm = cm
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Nieprzypisany
|
||||
@@ -95,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
|
||||
@@ -246,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
|
||||
|
||||
@@ -265,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
|
||||
|
||||
@@ -287,7 +302,7 @@ widget-overlay-is_mirrored_label = Wyświetlaj nakładkę w lustrzanym odbiciu
|
||||
|
||||
widget-drift_compensation-clear = Wyczyść kompensację dryfu
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Wyczyść resetowanie montażu
|
||||
|
||||
@@ -405,12 +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-available = Wersja { $versionName } jest już dostępna
|
||||
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
|
||||
|
||||
@@ -476,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
|
||||
@@ -483,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
|
||||
@@ -611,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
|
||||
@@ -773,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
|
||||
|
||||
@@ -872,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
|
||||
|
||||
@@ -902,6 +936,18 @@ settings-utils-advanced-open_logs = Folder dzienników
|
||||
settings-utils-advanced-open_logs-description = Otwórz folder dzienników SlimeVR w eksploratorze plików, zawierający dzienniki aplikacji
|
||||
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
|
||||
|
||||
onboarding-skip = Pomiń wstępną konfiguracje
|
||||
@@ -917,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 =
|
||||
@@ -962,13 +1003,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Witamy w SlimeVR
|
||||
onboarding-home-start = Zaczynajmy!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Cofnij do Przydzielania Trackerów
|
||||
onboarding-enter_vr-title = Czas na wejście do VR!
|
||||
onboarding-enter_vr-description = Załóż wszystkie trackery a potem wejdź do VR!
|
||||
onboarding-enter_vr-ready = Jestem gotów
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Wszystko ustawione!
|
||||
@@ -1045,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
|
||||
@@ -1192,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.
|
||||
@@ -1199,10 +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 = Wróć do samouczka resetowania
|
||||
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
|
||||
@@ -1302,30 +1340,32 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>Powtórz pomiary i upewnij się, że są prawidłowe.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = Przejdź wstecz
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = Skalowane proporcje
|
||||
onboarding-scaled_proportions-description = Aby SlimeVR działało poprawnie, musimy znać długość twoich kości. Ta kalibracja zrobi to za ciebie.
|
||||
onboarding-scaled_proportions-manual_height-title = Skonfiguruj swój wzrost
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = Ta wysokość zostanie wykorzystana jako linia bazowa dla proporcji Twojego ciała.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR nie jest obecnie połączony ze SlimeVR, więc pomiary nie mogą być oparte na goglach. <b>Kontynuuj na własne ryzyko lub sprawdź dokumenty!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = Twój wzrost to
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = Szacowana wysokość headsetu to:
|
||||
onboarding-scaled_proportions-manual_height-next_step = Kontynuuj i zapisz
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
Obecnie korzystasz z ręcznego sposobu ustawiania proporcji w skali rozgrywki!
|
||||
<b>Ten tryb jest zalecany tylko wtedy, gdy nie używasz gogli ze SlimeVR</b>
|
||||
|
||||
Aby móc korzystać z automatycznie skalowanych proporcji, należy:
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = Podłącz gogle VR
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = Upewnij się, że kontrolery są podłączone i prawidłowo przypisane do Twoich rąk
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = Zresetuj wszystkie wymiary
|
||||
onboarding-scaled_proportions-reset_proportion-description = Aby ustawić proporcje ciała na podstawie wzrostu, musisz teraz zresetować wszystkie proporcje. Spowoduje to wyczyszczenie wszystkich skonfigurowanych proporcji i zapewnienie konfiguracji bazowej.
|
||||
onboarding-scaled_proportions-done-title = Proporcje Ciała
|
||||
onboarding-scaled_proportions-done-description = Proporcje Twojego ciała powinny być teraz skonfigurowane w oparciu o Twój wzrost.
|
||||
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
|
||||
|
||||
@@ -1364,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
|
||||
|
||||
@@ -1405,24 +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 = 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 = Włącz tracker zwierając okrągłą podkładkę FLASH na górze płytki i metalową osłonę mikrokontrolera
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = Włącz tracker, naciskając przycisk FLASH na górze płytki
|
||||
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
|
||||
@@ -1437,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
|
||||
@@ -1546,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ń
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = Pode tocar lentamente 2 vezes no seu tracker para o escolher em
|
||||
tips-turn_on_tracker = Está usando trackers oficiais do SlimeVR? Lembre-se de <b><em> ligar o seu tracker </em></b> após conecta-lo ao computador!
|
||||
tips-failed_webgl = Falha ao inicializar o WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Não atribuído
|
||||
@@ -165,7 +168,7 @@ widget-overlay-is_mirrored_label = Mostrar Overlay como espelho
|
||||
|
||||
widget-drift_compensation-clear = Refazer compensação de drift
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Limpar reset de posição
|
||||
|
||||
@@ -283,7 +286,6 @@ tracker-settings-forget-description = Remove o tracker do servidor SlimeVR e imp
|
||||
tracker-settings-forget-label = Esquecer o tracker
|
||||
tracker-settings-update-low-battery = Não é possível atualizar. Bateria abaixo de 50%
|
||||
tracker-settings-update-up_to_date = Atualizado
|
||||
tracker-settings-update-available = { $versionName } está disponível
|
||||
tracker-settings-update = Atualizar agora
|
||||
tracker-settings-update-title = Versão do firmware
|
||||
|
||||
@@ -755,6 +757,12 @@ settings-utils-advanced-open_logs = Pasta de logs
|
||||
settings-utils-advanced-open_logs-description = Abre a pasta de logs do SlimeVR no explorador de arquivos, contendo os logs do aplicativo
|
||||
settings-utils-advanced-open_logs-label = Abrir pasta
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Pular configurações
|
||||
@@ -770,11 +778,6 @@ onboarding-setup_warning-cancel = Continuar configurações
|
||||
## Wi-Fi setup
|
||||
|
||||
onboarding-wifi_creds-back = Voltar para introdução
|
||||
onboarding-wifi_creds = Insira as credenciais de Wi-Fi
|
||||
# This cares about multilines
|
||||
onboarding-wifi_creds-description =
|
||||
Os Trackers vão usar essas credenciais para conectar à rede sem fio
|
||||
Use as credenciais da rede em que você está atualmente conectado
|
||||
onboarding-wifi_creds-skip = Pular as configurações de Wi-Fi
|
||||
onboarding-wifi_creds-submit = Enviar!
|
||||
onboarding-wifi_creds-ssid =
|
||||
@@ -815,13 +818,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Bem vindo ao SlimeVR
|
||||
onboarding-home-start = Vamos configurar!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Voltar para atribuição de Trackers
|
||||
onboarding-enter_vr-title = Hora de entrar no VR!
|
||||
onboarding-enter_vr-description = Coloque todos os seus trackers e entre no VR!
|
||||
onboarding-enter_vr-ready = Estou pronto
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Está tudo pronto!
|
||||
@@ -1035,7 +1031,6 @@ onboarding-automatic_mounting-put_trackers_on-next = Coloquei todos os meus trac
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Voltar para o tutorial de reset
|
||||
onboarding-manual_proportions-title = Proporções de corpo manuais
|
||||
onboarding-manual_proportions-fine_tuning_button = Melhorar automaticamente as proporções
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Por favor, conecte seu headset VR para utilizar a melhoria automatica
|
||||
@@ -1128,23 +1123,8 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>Por favor refaça as medidas e tenha certeza que estão corretas.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = Voltar
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = Proporções escalonadas
|
||||
onboarding-scaled_proportions-description = Para os trackers SlimeVR funcionarem, precisamos saber as medidas de seus ossos. Isso usará uma proporção média e a dimensionará com base em sua altura.
|
||||
onboarding-scaled_proportions-manual_height-title = Configure sua altura
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = Essa altura será usada como referência para as proporções de seu corpo.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = No momento, o SteamVR não está conectado ao SlimeVR, portanto as medições não podem ser baseadas no seu headset. <b>Prossiga por sua conta e risco ou consulte a documentação!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = A sua altura total é
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = A altura estimada do seu headset é:
|
||||
onboarding-scaled_proportions-manual_height-next_step = Continue e salve
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = Redefinir as proporções de seu corpo
|
||||
onboarding-scaled_proportions-reset_proportion-description = Para definir as proporções do corpo com base na sua altura, agora é necessário redefinir todas as proporções. Isso limpará todas as proporções que você configurou e fornecerá uma configuração de referência.
|
||||
onboarding-scaled_proportions-done-title = Proporções do corpo definidas
|
||||
onboarding-scaled_proportions-done-description = As proporções do seu corpo agora devem ser configuradas com base em sua altura.
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1193,9 +1173,6 @@ firmware_tool-flash_method_step-description = Por favor, selecione o método de
|
||||
firmware_tool-flashbtn_step = Pressione o botão de boot
|
||||
firmware_tool-flashbtn_step-description = Antes de ir para o próximo passo, aqui estão algumas etapas que você necessita fazer
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = Deslige o tracker, tire de case (se tiver), conecte o cabo USB nesse computador, e tente seguir os seguintes passos de acordo com a revisão de sua placa SlimeVR
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = Ligue o tracker enquanto faz curto no segundo pad retângular FLASH, no canto superior da placa, e o escudo de metal do microcontrolador
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = Ligue o tracker enquanto faz curto no pad circular FLASH na parte superior da placa, e o escudo de metal do microcontrolador
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = Ligue o tracker enquanto segura o botão FLASH na parte superior da placa
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
Antes de fazer a atualização, você provavelmente precisará colocar o tracker no modo bootloader.
|
||||
Na maioria das vezes, isso significa pressionar o botão de boot na placa antes do iniciar o processo de atualização.
|
||||
@@ -1285,3 +1262,6 @@ unknown_device-modal-forget = Ignore-o
|
||||
error_collection_modal-title = Podemos coletar erros?
|
||||
error_collection_modal-confirm = Eu concordo
|
||||
error_collection_modal-cancel = Eu não quero
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = Вы можете медленно нажать 2 раза на
|
||||
tips-turn_on_tracker = Используете официальные трекеры SlimeVR? Не забудьте <b><em>включить трекер</em></b> после его подключения к ПК!
|
||||
tips-failed_webgl = Не удалось инициализировать WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Не привязано
|
||||
@@ -287,7 +290,7 @@ widget-overlay-is_mirrored_label = Показывать оверлей как з
|
||||
|
||||
widget-drift_compensation-clear = Очистить компенсацию дрифта
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Обнулить сброс выравнивания
|
||||
|
||||
@@ -404,7 +407,6 @@ tracker-settings-forget-description = Убирает трекер с SlimeVR С
|
||||
tracker-settings-forget-label = Забыть трекер
|
||||
tracker-settings-update-low-battery = Невозможно обновить. Заряд батареи менее 50%
|
||||
tracker-settings-update-up_to_date = Обновлено
|
||||
tracker-settings-update-available = { $versionName } теперь доступна
|
||||
tracker-settings-update = Обновить сейчас
|
||||
tracker-settings-update-title = Версия прошивки
|
||||
|
||||
@@ -897,6 +899,12 @@ settings-utils-advanced-open_logs = Папка логов
|
||||
settings-utils-advanced-open_logs-description = Открыть в проводнике папку логов SlimeVR, содержащую логи приложения
|
||||
settings-utils-advanced-open_logs-label = Открыть папку
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Пропустить установку
|
||||
@@ -912,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 =
|
||||
@@ -957,13 +960,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Добро пожаловать в SlimeVR
|
||||
onboarding-home-start = Давайте все настроим!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Вернуться к привязке трекеров
|
||||
onboarding-enter_vr-title = Время зайти в VR!
|
||||
onboarding-enter_vr-description = Наденьте все ваши трекеры и зайдите в VR!
|
||||
onboarding-enter_vr-ready = Я готов
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Всё готово!
|
||||
@@ -1196,7 +1192,6 @@ onboarding-automatic_mounting-put_trackers_on-next = Я включил и над
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Вернутся к началу обучения
|
||||
onboarding-manual_proportions-title = Ручные пропорции тела
|
||||
onboarding-manual_proportions-fine_tuning_button = Автоматически точно настроить пропорции
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Пожалуйста, подключите VR-гарнитуру для использования автоматической тонкой настройки
|
||||
@@ -1294,30 +1289,8 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>Пожалуйста, повторите измерения и убедитесь, что они верны.</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = Вернуться
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = Масштабированные пропорции
|
||||
onboarding-scaled_proportions-description = Чтобы трекеры SlimeVR работали, нам необходимо знать длину ваших костей. Данный способ будет использовать средние пропорции и промасштабирует их, исходя из вашего роста.
|
||||
onboarding-scaled_proportions-manual_height-title = Укажите ваш рост
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = Эта высота будет использована в качестве основы для пропорций вашего тела.
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR в настоящее время не подключен к SlimeVR, поэтому измерения не могут быть основаны на данных вашей гарнитуры. <b>Действуйте на свой страх и риск или проверьте документацию!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = Ваш полный рост:
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = Предполагаемая высота гарнитуры составляет:
|
||||
onboarding-scaled_proportions-manual_height-next_step = Продолжить и сохранить
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
В настоящее время вы используете ручной способ настройки масштабированных пропорций!
|
||||
<b>Этот режим рекомендуется только в том случае, если вы не используете шлем виртуальной реальности со SlimeVR</b>
|
||||
|
||||
Чтобы получить возможность использовать автоматическое масштабирование пропорций, необходимо:
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = Подключить VR-гарнитуру
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = Убедитесь, что контроллеры подключены и правильно назначены к вашим рукам
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = Сбросить пропорции тела
|
||||
onboarding-scaled_proportions-reset_proportion-description = Чтобы установить пропорции тела на основе вашего роста, вам необходимо сбросить все свои пропорции. Это очистит все ранее настроенные пропорции и предоставит базовую конфигурацию.
|
||||
onboarding-scaled_proportions-done-title = Пропорции тела установлены
|
||||
onboarding-scaled_proportions-done-description = Теперь пропорции вашего тела должны быть настроены на основании вашего роста.
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1394,9 +1367,6 @@ firmware_tool-flash_method_step-description = Пожалуйста, выбери
|
||||
firmware_tool-flashbtn_step = Нажмите кнопку загрузки
|
||||
firmware_tool-flashbtn_step-description = Прежде чем перейти к следующему шагу, вам нужно сделать ещё несколько действий
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = Отключите трекер, извлеките его из корпуса (если он есть), подключите USB кабель к компьютеру, затем выполните одно из следующих действий в соответствии с ревизией вашей платы от SlimeVR:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = Включите трекер, при этом закоротите вторую от края с верхней стороны платы прямоугольную площадку FLASH и металлический экран микроконтроллера
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = Включите трекер, при этом закоротите круглую площадку FLASH на верхней стороне платы и металлический экран микроконтроллера
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = Включите трекер, при этом удерживая нажатой кнопку FLASH на верхней стороне платы
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
Перед перепрошивкой вам, возможно, потребуется перевести трекер в режим загрузчика.
|
||||
В большинстве случаев для этого необходимо нажатие кнопки загрузки на плате перед началом процесса прошивки.
|
||||
@@ -1532,3 +1502,6 @@ error_collection_modal-description_v2 =
|
||||
Вы можете изменить эту настройку позже на странице настроек в разделе Поведение.
|
||||
error_collection_modal-confirm = Я согласен
|
||||
error_collection_modal-cancel = Я не согласен
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = Du kan långsamt trycka 2 gånger på din spårare för att vä
|
||||
tips-turn_on_tracker = Använder du officiella SlimeVR spårare? Glöm inte att <b> <em>sätta på din spårare</em></b> efter du ansluter den till datorn!
|
||||
tips-failed_webgl = Misslyckades att initiera WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Ej tilldelad
|
||||
@@ -270,7 +273,7 @@ widget-overlay-is_mirrored_label = Visa överlägg som spegel
|
||||
|
||||
widget-drift_compensation-clear = Kompensation för clear drift
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Montage med tydlig återställning
|
||||
|
||||
@@ -390,7 +393,6 @@ tracker-settings-forget-description = Tar bort trackern från SlimeVR-servern oc
|
||||
tracker-settings-forget-label = Glöm spårning
|
||||
tracker-settings-update-low-battery = Kan ej uppdatera. Batteriet är under 50%
|
||||
tracker-settings-update-up_to_date = Uppdaterad
|
||||
tracker-settings-update-available = { $versionName } är nu tillgänlig
|
||||
tracker-settings-update = Uppdatera nu
|
||||
tracker-settings-update-title = Mjukvaroversion
|
||||
|
||||
@@ -819,6 +821,12 @@ settings-utils-advanced-open_logs = Logg-mapp
|
||||
settings-utils-advanced-open_logs-description = Öppna SlimeVR's config mapp i filutforskaren, som innehåller appens loggar
|
||||
settings-utils-advanced-open_logs-label = Öppna mapp
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Hoppa över inställning
|
||||
@@ -834,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 =
|
||||
@@ -866,13 +869,6 @@ onboarding-reset_tutorial-0 =
|
||||
onboarding-home = Välkommen till SlimeVR
|
||||
onboarding-home-start = Låt oss komma igång!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Gå tillbaka till Tracker assignent
|
||||
onboarding-enter_vr-title = Dags att gå in i VR!
|
||||
onboarding-enter_vr-description = Ta på dig alla dina trackers och gå sedan in i VR!
|
||||
onboarding-enter_vr-ready = Jag är redo
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Du är klar!
|
||||
@@ -1094,7 +1090,6 @@ onboarding-automatic_mounting-put_trackers_on-next = Jag har på mig alla tracke
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Gå tillbaka till återställnings-introduktionen
|
||||
onboarding-manual_proportions-title = Manuella kropps-dimensioner
|
||||
onboarding-manual_proportions-fine_tuning_button = Finjustera automatiskt proportioner
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = Var vänlig anslut ett VR-headset för att använda automatisk finjustering
|
||||
@@ -1121,10 +1116,7 @@ onboarding-automatic_proportions-check_height-guardian_tip =
|
||||
boundary aktiverad så att din höjd är korrekt!
|
||||
onboarding-automatic_proportions-start_recording-description = Vi kommer nu att spela in några specifika poser och rörelser. Dessa kommer att visas på nästa skärm. Var redo att starta när du trycker på knappen!
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -1250,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
|
||||
|
||||
|
||||
@@ -21,6 +21,9 @@ version_update-close = Kapat
|
||||
tips-find_tracker = Hangi takipçi hangisi emin değil misin? Takipçilerden birini hareket ettirerek belirleyebilirsin.
|
||||
tips-do_not_move_heels = Kayıt sırasında ayaklarınızın hareket etmediğinden emin olun!
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Atanmamış
|
||||
@@ -111,7 +114,7 @@ tracking-unpaused = Takibi duraklat
|
||||
## Widget: Drift compensation
|
||||
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
|
||||
## Widget: Developer settings
|
||||
@@ -281,6 +284,12 @@ settings-osc-vrchat-network-address = Ağ adresi
|
||||
## Advanced settings
|
||||
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
|
||||
@@ -293,9 +302,6 @@ settings-osc-vrchat-network-address = Ağ adresi
|
||||
## Setup start
|
||||
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
|
||||
## Setup done
|
||||
|
||||
|
||||
@@ -329,10 +335,7 @@ settings-osc-vrchat-network-address = Ağ adresi
|
||||
## Tracker automatic proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -373,3 +376,6 @@ settings-osc-vrchat-network-address = Ağ adresi
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -26,6 +26,9 @@ tips-tap_setup = Ви можете повільно постукати 2 раз
|
||||
tips-turn_on_tracker = Використовуєте офіційні трекери SlimeVR? Не забудьте <b><em>увімкнути трекер</em></b> після підключення до ПК!
|
||||
tips-failed_webgl = Не вдалося ініціалізувати WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Не призначено
|
||||
@@ -127,7 +130,7 @@ widget-overlay-is_mirrored_label = Відображення накладання
|
||||
|
||||
widget-drift_compensation-clear = Очистити компенсацію дрейфу
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Очистити скидання положення
|
||||
|
||||
@@ -591,6 +594,12 @@ settings-osc-vmc-mirror_tracking-label = Дзеркальний трекінг
|
||||
## Advanced settings
|
||||
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Пропустити налаштування
|
||||
@@ -606,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 =
|
||||
@@ -650,13 +654,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Ласкаво просимо до SlimeVR
|
||||
onboarding-home-start = Давайте налаштуємося!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Повернутися до Прив'язки трекерів
|
||||
onboarding-enter_vr-title = Час вступати у VR!
|
||||
onboarding-enter_vr-description = Увімкніть усі свої трекери, а потім вступіть у VR!
|
||||
onboarding-enter_vr-ready = Я готовий
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Все готово!
|
||||
@@ -803,10 +800,7 @@ onboarding-automatic_proportions-recording-timer =
|
||||
onboarding-automatic_proportions-verify_results-title = Перевірити результати
|
||||
onboarding-automatic_proportions-verify_results-processing = Обробка результату
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -857,3 +851,6 @@ unknown_device-modal-forget = Ігнорувати
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = Bạn có thể từ từ nhấn vào 2 lần trình theo dõi
|
||||
tips-turn_on_tracker = Sử dụng thiết bị SlimeVR chính thức? Hãy nhớ <b><em>bật trình theo dõi của bạn</em></b> sau khi kết nối thiết bị với máy tính!
|
||||
tips-failed_webgl = Không thể khởi tạo WebGL.
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Chưa được gán
|
||||
@@ -136,7 +139,7 @@ widget-overlay-is_mirrored_label = Xem overlay trong gương
|
||||
|
||||
widget-drift_compensation-clear = Xóa sai số
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = Đặt lại hướng gắn tracker
|
||||
|
||||
@@ -628,6 +631,12 @@ settings-utils-advanced-reset_warning-reset = Đặt lại cài đặt
|
||||
settings-utils-advanced-reset_warning-cancel = Hủy
|
||||
settings-utils-advanced-open_data-label = Mở thư mục
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Bỏ qua cài đặt
|
||||
@@ -643,11 +652,6 @@ onboarding-setup_warning-cancel = Tiếp tục thiết lập
|
||||
## Wi-Fi setup
|
||||
|
||||
onboarding-wifi_creds-back = Quay lại giới thiệu
|
||||
onboarding-wifi_creds = Nhập thông tin Wi-Fi
|
||||
# This cares about multilines
|
||||
onboarding-wifi_creds-description =
|
||||
Tracker sẽ sử dụng thông tin này để kết nối đến mạng
|
||||
Hãy nhập thông tin mạng Wi-Fi bạn đang dùng
|
||||
onboarding-wifi_creds-skip = Bỏ qua cài đặt Wi-Fi
|
||||
onboarding-wifi_creds-submit = Gửi
|
||||
onboarding-wifi_creds-ssid =
|
||||
@@ -687,13 +691,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = Chào mừng bạn đến với SlimeVR!
|
||||
onboarding-home-start = Bắt đầu thiết lập!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = Quay lại gán tracker
|
||||
onboarding-enter_vr-title = Chuẩn bị cho việc cân chỉnh trong VR
|
||||
onboarding-enter_vr-description = Đeo tất cả tracker và vào VR trước khi tiếp tục
|
||||
onboarding-enter_vr-ready = Sẵn sàng
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = Hoàn thành!
|
||||
@@ -902,7 +899,6 @@ onboarding-automatic_mounting-put_trackers_on-next = Tiếp tục
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = Quay lại cân chỉnh hướng gắn
|
||||
onboarding-manual_proportions-title = Đo kích thước cơ thể thủ công
|
||||
|
||||
## Tracker automatic proportions setup
|
||||
@@ -961,10 +957,7 @@ onboarding-automatic_proportions-done-title = Đã lưu chỉ số đo
|
||||
onboarding-automatic_proportions-done-description = Quá trình đo đã hoàn tất
|
||||
onboarding-automatic_proportions-error_modal-confirm = Đã hiểu!
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
## User height calibration
|
||||
|
||||
|
||||
## Stay Aligned setup
|
||||
@@ -1039,3 +1032,6 @@ unknown_device-modal-forget = Bỏ qua
|
||||
|
||||
## Error collection consent modal
|
||||
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ tips-tap_setup = 你可以缓慢地敲击2次追踪器来选中它,而不是
|
||||
tips-turn_on_tracker = 如果使用的是 SlimeVR 官方的追踪器,请在将追踪器连接到电脑后再<b><em>打开追踪器的电源</em></b>!
|
||||
tips-failed_webgl = WebGL初始化失败
|
||||
|
||||
## Units
|
||||
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = 未分配
|
||||
@@ -279,7 +282,7 @@ widget-overlay-is_mirrored_label = 镜像显示覆盖层
|
||||
|
||||
widget-drift_compensation-clear = 清除漂移补偿数据
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = 清除重置佩戴
|
||||
|
||||
@@ -402,7 +405,6 @@ tracker-settings-update-incompatible = 电路板不兼容,无法升级。
|
||||
tracker-settings-update-low-battery = 无法更新。当前电池电量低于 50%
|
||||
tracker-settings-update-up_to_date = 已是最新
|
||||
tracker-settings-update-blocked = 更新不可用。没有其他可用版本
|
||||
tracker-settings-update-available = { $versionName } 现在可用
|
||||
tracker-settings-update = 立即更新
|
||||
tracker-settings-update-title = 固件版本
|
||||
|
||||
@@ -900,6 +902,12 @@ settings-utils-advanced-open_logs = 日志文件夹
|
||||
settings-utils-advanced-open_logs-description = 在文件管理器中打开SlimeVR的日志文件夹,查看SlimeVR的日志文件。
|
||||
settings-utils-advanced-open_logs-label = 打开文件夹
|
||||
|
||||
## Home Screen
|
||||
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = 跳过设置
|
||||
@@ -915,11 +923,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
|
||||
请使用当前连接到 Wi-Fi 的凭据
|
||||
onboarding-wifi_creds-skip = 跳过 Wi-Fi 设置
|
||||
onboarding-wifi_creds-submit = 提交!
|
||||
onboarding-wifi_creds-ssid =
|
||||
@@ -960,13 +963,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = 欢迎来到 SlimeVR
|
||||
onboarding-home-start = 我准备好了!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = 返回到追踪器分配
|
||||
onboarding-enter_vr-title = VR 时间到!
|
||||
onboarding-enter_vr-description = 穿戴好所有的追踪器,开始快乐 VR 吧!
|
||||
onboarding-enter_vr-ready = 我准备好了
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = 都搞定啦!
|
||||
@@ -1185,7 +1181,6 @@ onboarding-automatic_mounting-return-home = 完成
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = 返回重置教程
|
||||
onboarding-manual_proportions-title = 手动调整身体比例
|
||||
onboarding-manual_proportions-fine_tuning_button = 自动微调身体比例
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = 请连接 VR头戴显示器 以使用自动微调
|
||||
@@ -1279,30 +1274,8 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>请重新进行测量并确保测量结果是正确的。</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = 返回
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = 标准身体比例
|
||||
onboarding-scaled_proportions-description = 为了让 SlimeVR 追踪器正常使用,我们需要知道你的骨头的长度。将会使用人体平均骨骼比例,并缩放至您的身高。
|
||||
onboarding-scaled_proportions-manual_height-title = 配置您的身高
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = 此身高将用作您身体比例的基准。
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR 当前未连接到 SlimeVR,因此不能基于您的头戴显示器进行测量。 <b>请连接后再继续操作或查看文档!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = 您的身高为
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = 估计您的头显高度为:
|
||||
onboarding-scaled_proportions-manual_height-next_step = 保存并继续
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
您当前正在手动设置缩放身体比例!
|
||||
<b>建议只在您不使用头戴显示器时使用此模式</b>
|
||||
|
||||
为了能够使用自动缩放身体比例,请:
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = 连接 VR 头戴显示器
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = 确保您的控制器已连接并正确分配到手部
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = 重置您的身体比例
|
||||
onboarding-scaled_proportions-reset_proportion-description = 为了根据您的身高设置身体比例,您现在需要重置所有身体比例。这将清除您先前配置的所有身体比例并提供一个基础设置。
|
||||
onboarding-scaled_proportions-done-title = 身体比例已设置
|
||||
onboarding-scaled_proportions-done-description = 身体比例已根据您的身高进行设置。
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1404,9 +1377,6 @@ firmware_tool-flash_method_step-serial-v2 =
|
||||
firmware_tool-flashbtn_step = 按下启动/Boot按钮
|
||||
firmware_tool-flashbtn_step-description = 在进入下一步之前,您需要做几件事情。
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = 关闭追踪器,拆下外壳(如果有的话),使用 USB 数据线连接到计算机,然后根据您的 SlimeVR 电路板版本执行以下步骤之一:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = 在短接电路板正面边缘第二个矩形 FLASH 焊盘和单片机模块的金属屏蔽罩的时候,打开追踪器电源。
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = 在短接电路板正面圆形 FLASH 焊盘和单片机模块的金属屏蔽罩的时候,打开追踪器电源。
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = 在按住电路板正面的 FLASH 按钮的时候,打开追踪器的电源。
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
在烧录固件之前,您可能需要将追踪器置于bootloader模式。
|
||||
通常这意味着在开始固件烧录过程之前,按下板上的引导/boot按钮。
|
||||
@@ -1546,3 +1516,6 @@ error_collection_modal-description_v2 =
|
||||
您可以稍后在设置页面的行为部分中更改此设置。
|
||||
error_collection_modal-confirm = 我同意
|
||||
error_collection_modal-cancel = 还是算了
|
||||
|
||||
## Tracking checklist section
|
||||
|
||||
|
||||
@@ -31,6 +31,13 @@ tips-tap_setup = 除了從列表挑選追蹤器以外,你也可以慢慢敲擊
|
||||
tips-turn_on_tracker = 你使用的是官方的 SlimeVR 追蹤器嗎?記得要在連接到電腦以後<b><em>打開追蹤器的電源</em></b>喔!
|
||||
tips-failed_webgl = 初始化 WebGL 失敗。
|
||||
|
||||
## Units
|
||||
|
||||
unit-meter = 公尺
|
||||
unit-foot = 英尺
|
||||
unit-inch = 英吋
|
||||
unit-cm = 公分
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = 未分配
|
||||
@@ -95,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 開發板
|
||||
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
|
||||
@@ -242,14 +251,18 @@ 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 = 左右偏擺重置前需要完整重置
|
||||
|
||||
## Serial detection stuff
|
||||
|
||||
serial_detection-new_device-p0 = 偵測到了新的串列埠裝置!
|
||||
serial_detection-new_device-p0 = 偵測到了新的序列埠裝置!
|
||||
serial_detection-new_device-p1 = 輸入你的 Wi-Fi 認證資訊!
|
||||
serial_detection-new_device-p2 = 請選擇你想對它做什麼
|
||||
serial_detection-open_wifi = 連線到 Wi-Fi
|
||||
serial_detection-open_serial = 開啟串列埠終端
|
||||
serial_detection-open_serial = 開啟序列埠終端
|
||||
serial_detection-submit = 送出!
|
||||
serial_detection-close = 關閉
|
||||
|
||||
@@ -261,10 +274,12 @@ navbar-trackers_assign = 追蹤器分配
|
||||
navbar-mounting = 配戴校正
|
||||
navbar-onboarding = 快速設定
|
||||
navbar-settings = 詳細設定
|
||||
navbar-connect_trackers = 連接追蹤器
|
||||
|
||||
## Biovision hierarchy recording
|
||||
|
||||
bvh-start_recording = 錄製 BVH 檔案
|
||||
bvh-stop_recording = 儲存 BVH 紀錄
|
||||
bvh-recording = 錄製中…
|
||||
bvh-save_title = 儲存 BVH 紀錄
|
||||
|
||||
@@ -283,7 +298,7 @@ widget-overlay-is_mirrored_label = 鏡像顯示內嵌介面
|
||||
|
||||
widget-drift_compensation-clear = 清除偏移補償數據
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
## Widget: Clear Mounting calibration
|
||||
|
||||
widget-clear_mounting = 清除配戴重置
|
||||
|
||||
@@ -401,12 +416,15 @@ tracker-settings-name_section-label = 追蹤器名稱
|
||||
tracker-settings-forget = 忘記追蹤器
|
||||
tracker-settings-forget-description = 從 SlimeVR 伺服器程式中移除該追蹤器,且直到重新啟動伺服器前不會再次連接。該追蹤器的設定不會遺失。
|
||||
tracker-settings-forget-label = 忘記追蹤器
|
||||
tracker-settings-update-unavailable-v2 = 未找到可用版本
|
||||
tracker-settings-update-incompatible = 電路板不相容,無法更新。
|
||||
tracker-settings-update-low-battery = 無法更新,電池電量低於 50%
|
||||
tracker-settings-update-up_to_date = 已為最新版本
|
||||
tracker-settings-update-blocked = 無法更新,沒有其他可用版本。
|
||||
tracker-settings-update-available = 版本 { $versionName } 可供更新
|
||||
tracker-settings-update = 立即更新
|
||||
tracker-settings-update-title = 韌體版本
|
||||
tracker-settings-current-version = 目前版本
|
||||
tracker-settings-latest-version = 最新版本
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -472,6 +490,7 @@ mounting_selection_menu-close = 關閉
|
||||
|
||||
settings-sidebar-title = 設定
|
||||
settings-sidebar-general = 一般設定
|
||||
settings-sidebar-steamvr = SteamVR
|
||||
settings-sidebar-tracker_mechanics = 追蹤機制
|
||||
settings-sidebar-stay_aligned = 持續校正
|
||||
settings-sidebar-fk_settings = 追蹤設定
|
||||
@@ -479,9 +498,12 @@ settings-sidebar-gesture_control = 手勢控制
|
||||
settings-sidebar-interface = 使用者介面
|
||||
settings-sidebar-osc_router = OSC 路由
|
||||
settings-sidebar-osc_trackers = VRChat OSC 追蹤器
|
||||
settings-sidebar-osc_vmc = VMC
|
||||
settings-sidebar-utils = 工具
|
||||
settings-sidebar-serial = 串列埠終端
|
||||
settings-sidebar-serial = 序列埠終端
|
||||
settings-sidebar-appearance = 外觀
|
||||
settings-sidebar-home = 主畫面
|
||||
settings-sidebar-checklist = 追蹤清單
|
||||
settings-sidebar-notifications = 通知
|
||||
settings-sidebar-behavior = 行為
|
||||
settings-sidebar-firmware-tool = DIY 韌體工具
|
||||
@@ -614,6 +636,9 @@ settings-general-fk_settings-enforce_joint_constraints-enforce_constraints = 約
|
||||
settings-general-fk_settings-enforce_joint_constraints-enforce_constraints-description = 避免關節旋轉超出極限
|
||||
settings-general-fk_settings-enforce_joint_constraints-correct_constraints = 以約束修正關節旋轉
|
||||
settings-general-fk_settings-enforce_joint_constraints-correct_constraints-description = 若關節旋轉角度超出極限時,修正旋轉角度
|
||||
settings-general-fk_settings-ik = 定位資料
|
||||
settings-general-fk_settings-ik-use_position = 使用定位資料
|
||||
settings-general-fk_settings-ik-use_position-description = 若追蹤器支援定位,使用來自追蹤器的定位資料。啟用後請再次進行完整重置並在遊戲中重新校正追蹤器。
|
||||
settings-general-fk_settings-arm_fk = 手臂追蹤
|
||||
settings-general-fk_settings-arm_fk-description = 強制透過頭戴顯示器來追蹤手臂,即使有手部的定位資料。
|
||||
settings-general-fk_settings-arm_fk-force_arms = 強制從頭戴顯示器進行手臂追蹤
|
||||
@@ -701,9 +726,9 @@ settings-interface-appearance-decorations-label = 使用原生的視窗邊框
|
||||
## Notification settings
|
||||
|
||||
settings-interface-notifications = 通知
|
||||
settings-general-interface-serial_detection = 串列埠裝置檢測
|
||||
settings-general-interface-serial_detection-description = 每次插入新串列埠的裝置(可能是追蹤器)時,此選項會顯示一個彈出視窗。這有助於改進追蹤器的設定流程。
|
||||
settings-general-interface-serial_detection-label = 串列埠裝置檢測
|
||||
settings-general-interface-serial_detection = 序列埠裝置檢測
|
||||
settings-general-interface-serial_detection-description = 每次插入新序列埠的裝置(可能是追蹤器)時,此選項會顯示一個彈出視窗。這有助於改進追蹤器的設定流程。
|
||||
settings-general-interface-serial_detection-label = 序列埠裝置檢測
|
||||
settings-general-interface-feedback_sound = 聲音回饋
|
||||
settings-general-interface-feedback_sound-description = 啟用本選項後,觸發重置時會發出提示音。
|
||||
settings-general-interface-feedback_sound-label = 聲音回饋
|
||||
@@ -740,10 +765,10 @@ settings-interface-behavior-bvh_directory-label = 存放 BVH 紀錄的目錄
|
||||
|
||||
## Serial settings
|
||||
|
||||
settings-serial = 串列埠終端
|
||||
settings-serial = 序列埠終端
|
||||
# This cares about multilines
|
||||
settings-serial-description = 這裡用於顯示串列埠的即時資訊,可能有助於瞭解韌體是否發生問題。
|
||||
settings-serial-connection_lost = 串列埠連線中斷,正在重新連線……
|
||||
settings-serial-description = 這裡用於顯示序列埠的即時資訊,可能有助於瞭解韌體是否發生問題。
|
||||
settings-serial-connection_lost = 序列埠連線中斷,正在重新連線……
|
||||
settings-serial-reboot = 重新啟動
|
||||
settings-serial-factory_reset = 恢復出廠設定
|
||||
# This cares about multilines
|
||||
@@ -751,13 +776,18 @@ settings-serial-factory_reset = 恢復出廠設定
|
||||
settings-serial-factory_reset-warning =
|
||||
<b>警告:</b>本選項會將該追蹤器恢復出廠設定,
|
||||
亦即其 Wi-Fi 與追蹤器校正的設定<b>將會全部刪除</b>。
|
||||
settings-serial-factory_reset-warning-ok = 我確實要執行出廠設定
|
||||
settings-serial-factory_reset-warning-ok = 我已瞭解以上風險
|
||||
settings-serial-factory_reset-warning-cancel = 取消
|
||||
settings-serial-serial_select = 選擇串列埠
|
||||
settings-serial-serial_select = 選擇序列埠
|
||||
settings-serial-auto_dropdown_item = 自動
|
||||
settings-serial-get_wifi_scan = 取得 Wi-Fi 掃描
|
||||
settings-serial-file_type = 純文字格式
|
||||
settings-serial-save_logs = 儲存到檔案
|
||||
settings-serial-send_command = 傳送
|
||||
settings-serial-send_command-placeholder = 輸入指令…
|
||||
settings-serial-send_command-warning = <b>警告:</b>執行序列埠指令可能會導致資料遺失或追蹤器變磚。
|
||||
settings-serial-send_command-warning-ok = 我已瞭解以上風險
|
||||
settings-serial-send_command-warning-cancel = 取消
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -854,6 +884,8 @@ settings-osc-vmc-mirror_tracking-label = 鏡像追蹤
|
||||
|
||||
## Common OSC settings
|
||||
|
||||
settings-osc-common-network-ports_match_error = OSC 路由的輸入埠與輸出埠不能相同!
|
||||
settings-osc-common-network-port_banned_error = 無法使用 { $port } 連接埠!
|
||||
|
||||
## Advanced settings
|
||||
|
||||
@@ -888,6 +920,18 @@ settings-utils-advanced-open_logs = 紀錄檔資料夾
|
||||
settings-utils-advanced-open_logs-description = 在檔案管理器中開啟 SlimeVR 的紀錄檔資料夾,該資料夾包含程式的紀錄檔。
|
||||
settings-utils-advanced-open_logs-label = 打開資料夾
|
||||
|
||||
## Home Screen
|
||||
|
||||
settings-home-list-layout = 追蹤器清單檢視方式
|
||||
settings-home-list-layout-desc = 請從以下選項選擇一個主畫面的檢視方式
|
||||
settings-home-list-layout-grid = 格狀
|
||||
settings-home-list-layout-table = 表格
|
||||
|
||||
## Tracking Checlist
|
||||
|
||||
settings-tracking_checklist-active_steps = 列出的追蹤清單項目
|
||||
settings-tracking_checklist-active_steps-desc = 列出所有會在追蹤清單中顯示的步驟,你可以停用或啟用可忽略的步驟。
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = 跳過設定
|
||||
@@ -903,11 +947,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 =
|
||||
@@ -948,13 +987,6 @@ onboarding-reset_tutorial-2 =
|
||||
onboarding-home = 歡迎來到 SlimeVR
|
||||
onboarding-home-start = 來開始設定吧!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
onboarding-enter_vr-back = 返回到追蹤器分配
|
||||
onboarding-enter_vr-title = 該是進入 VR 的時候了!
|
||||
onboarding-enter_vr-description = 穿戴好所有的追蹤器,開始快樂 VR 吧!
|
||||
onboarding-enter_vr-ready = 我準備好了
|
||||
|
||||
## Setup done
|
||||
|
||||
onboarding-done-title = 都搞定啦!
|
||||
@@ -970,7 +1002,7 @@ 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-serial_init = 正在連線到串列埠裝置
|
||||
onboarding-connect_tracker-connection_status-serial_init = 正在連線到序列埠裝置
|
||||
onboarding-connect_tracker-connection_status-obtaining_mac_address = 正在取得追蹤器的 MAC 位址
|
||||
onboarding-connect_tracker-connection_status-provisioning = 正在傳送 Wi-Fi 認證資訊
|
||||
onboarding-connect_tracker-connection_status-connecting = 正在傳送 Wi-Fi 資訊
|
||||
@@ -1028,6 +1060,7 @@ onboarding-assignment_tutorial-done = 我把貼紙跟綁帶都弄上了
|
||||
onboarding-assign_trackers-back = 返回到 Wi-Fi 認證資訊設定
|
||||
onboarding-assign_trackers-title = 分配追蹤器
|
||||
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
|
||||
@@ -1162,6 +1195,8 @@ 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-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-preparation-v2-step-1 = 2. 站直,雙臂放在身體兩側,確保向前直視。
|
||||
@@ -1173,7 +1208,7 @@ onboarding-automatic_mounting-return-home = 完成
|
||||
|
||||
## Tracker manual proportions setupa
|
||||
|
||||
onboarding-manual_proportions-back = 返回重置教學
|
||||
onboarding-manual_proportions-back-scaled = 返回使用縮放比例
|
||||
onboarding-manual_proportions-title = 手動調整軀幹比例
|
||||
onboarding-manual_proportions-fine_tuning_button = 自動微調軀幹比例
|
||||
onboarding-manual_proportions-fine_tuning_button-disabled-tooltip = 請連接 VR 頭戴顯示器以使用此功能
|
||||
@@ -1191,7 +1226,7 @@ onboarding-manual_proportions-estimated_height = 預估的使用者身高
|
||||
onboarding-automatic_proportions-back = 返回重置教學
|
||||
onboarding-automatic_proportions-title = 測量你的身體比例
|
||||
onboarding-automatic_proportions-description = 為了讓 SlimeVR 追蹤器正常使用,我們需要知道你的骨頭長度。這個簡短的流程將會進行這方面的測量。
|
||||
onboarding-automatic_proportions-manual = 進行手動校正
|
||||
onboarding-automatic_proportions-manual = 手動調整軀幹比例
|
||||
onboarding-automatic_proportions-prev_step = 上一步
|
||||
onboarding-automatic_proportions-put_trackers_on-title = 請戴好追蹤器
|
||||
onboarding-automatic_proportions-put_trackers_on-description = 為了校準你的軀幹比例,我們將使用你剛才分配的追蹤器。戴上你所有的追蹤器,你可以在右邊的圖中看到追蹤器的對應部位。
|
||||
@@ -1267,30 +1302,32 @@ onboarding-automatic_proportions-smol_warning =
|
||||
<b>請重新進行測量,並確保數值是正確的。</b>
|
||||
onboarding-automatic_proportions-smol_warning-cancel = 返回
|
||||
|
||||
## Tracker scaled proportions setup
|
||||
## User height calibration
|
||||
|
||||
onboarding-scaled_proportions-title = 縮放型軀幹比例
|
||||
onboarding-scaled_proportions-description = 為了讓 SlimeVR 追蹤器正常使用,我們需要知道你的骨骼長度。本流程會使用人體的平均軀幹比例並依照你的身高縮放調整。
|
||||
onboarding-scaled_proportions-manual_height-title = 設定你的身高
|
||||
onboarding-scaled_proportions-manual_height-description-v2 = 身高會當作軀幹比例設定的基礎。
|
||||
onboarding-scaled_proportions-manual_height-missing_steamvr = SteamVR 目前尚未連接到 SlimeVR,因此無法根據頭戴顯示器測量身高。<b>請查閱說明文件,繼續操作請自行承擔風險!</b>
|
||||
onboarding-scaled_proportions-manual_height-height-v2 = 你的身高全長為
|
||||
onboarding-scaled_proportions-manual_height-estimated_height = 頭戴顯示器估計高度為:
|
||||
onboarding-scaled_proportions-manual_height-next_step = 繼續並儲存
|
||||
onboarding-scaled_proportions-manual_height-warning =
|
||||
你現在正在手動設定縮放型軀幹比例,<b>這個方法僅在你使用 SlimeVR
|
||||
不使用頭戴顯示器時推薦使用。</b>
|
||||
|
||||
若要能自動設定縮放型軀幹比例,請按照以下步驟:
|
||||
onboarding-scaled_proportions-manual_height-warning-no_hmd = 連接 VR 頭戴顯示器
|
||||
onboarding-scaled_proportions-manual_height-warning-no_controllers = 檢查 VR 控制器是否正常連接,並在 SlimeVR 介面中分配到你的雙手
|
||||
|
||||
## Tracker scaled proportions reset
|
||||
|
||||
onboarding-scaled_proportions-reset_proportion-title = 重置軀幹比例
|
||||
onboarding-scaled_proportions-reset_proportion-description = 要依照身高設定軀幹比例,你現在需要重置相關設定。本按鈕會清除以前所設定的軀幹比例並提供基本配置。
|
||||
onboarding-scaled_proportions-done-title = 軀幹比例已設定
|
||||
onboarding-scaled_proportions-done-description = 軀幹比例現在已經依照你的身高設定。
|
||||
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-manual-proportions = 手動調整軀幹比例
|
||||
onboarding-user_height-calibration-title = 校正進度
|
||||
onboarding-user_height-calibration-RECORDING_FLOOR = 以控制器前端碰觸地面
|
||||
onboarding-user_height-calibration-WAITING_FOR_RISE = 回到站姿
|
||||
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-RECORDING_HEIGHT = 維持站姿並站直!
|
||||
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 = 校正失敗
|
||||
onboarding-user_height-manual-tip = 調整身高時,請嘗試使用不同的姿勢來確保骨架與你的身體吻合。
|
||||
onboarding-user_height-reset-warning =
|
||||
<b>警告:</b> 這會將軀幹比例重置為僅基於身高的比例。
|
||||
你確定要執行此操作嗎?
|
||||
|
||||
## Stay Aligned setup
|
||||
|
||||
@@ -1329,6 +1366,8 @@ onboarding-stay_aligned-done = 完成
|
||||
## Home
|
||||
|
||||
home-no_trackers = 未偵測到或未分配追蹤器
|
||||
home-settings = 主畫面設定
|
||||
home-settings-close = 關閉
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
@@ -1365,25 +1404,51 @@ firmware_tool = DIY 韌體工具
|
||||
firmware_tool-description = 本工具可以配置與燒錄 DIY 追蹤器
|
||||
firmware_tool-not_available = 唉呀,現在韌體工具無法使用。請稍後再來!
|
||||
firmware_tool-not_compatible = 韌體工具與這個版本的伺服器不相容。請更新伺服器!
|
||||
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-official = 正式版
|
||||
firmware_tool-select_source-dev = 開發版
|
||||
firmware_tool-board_defaults = 設定電路板
|
||||
firmware_tool-board_defaults-description = 設定與硬體相關的腳位或配置
|
||||
firmware_tool-board_defaults-add = 新增
|
||||
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_tool-flash_method_step-description = 選擇要使用的燒錄方法
|
||||
firmware_tool-flash_method_step-ota-v2 =
|
||||
.label = Wi-Fi
|
||||
.description = 使用 OTA 線上更新。你的追蹤器會透過 Wi-Fi 來更新韌體,只支援已經設定好的追蹤器。
|
||||
firmware_tool-flash_method_step-ota-info =
|
||||
即將使用你的 Wi-Fi 憑證來燒錄韌體,並確保一切正常。
|
||||
<b>我們不會儲存你的 Wi-Fi 憑證!</b>
|
||||
firmware_tool-flash_method_step-serial-v2 =
|
||||
.label = USB
|
||||
.description = 使用 USB 來更新追蹤器。
|
||||
firmware_tool-flashbtn_step = 進入燒錄模式
|
||||
firmware_tool-flashbtn_step-description = 在進入下一步前,請先進行以下操作
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR = 關閉追蹤器電源,移除外殼(若有的話),並用 USB 線連接到這台電腦上,然後根據你持有的 SlimeVR 追蹤器主板的版本,進行下述操作:
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11 = 將追蹤器上方第二個 FLASH 方形接點與微控制器的金屬遮罩短路,同時開啟追蹤器開關
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12 = 將追蹤器上方的 FLASH 圓形接點與微控制器的金屬遮罩短路,同時開啟追蹤器開關
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14 = 按住追蹤器上方的 FLASH 按鈕,同時開啟追蹤器開關
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r11-v2 = 將追蹤器上方第二個 FLASH 方形接點與微控制器的金屬遮罩短路,同時開啟追蹤器開關。追蹤器指示燈應該會短暫閃爍並熄滅。
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r12-v2 = 將追蹤器上方的 FLASH 圓形接點與微控制器的金屬遮罩短路,同時開啟追蹤器開關。追蹤器指示燈應該會短暫閃爍並熄滅。
|
||||
firmware_tool-flashbtn_step-board_SLIMEVR-r14-v2 = 按住追蹤器上方的 FLASH 按鈕,同時開啟追蹤器開關。追蹤器指示燈應該會短暫閃爍並熄滅。
|
||||
firmware_tool-flashbtn_step-board_OTHER =
|
||||
在燒錄前,你可能需要將追蹤器切換進 Bootloader(開機載入程式)。
|
||||
多數狀況下,在燒錄開始前按下 BOOT 按鈕即可開始燒錄。
|
||||
如果燒錄進度開始時就已逾時,表示追蹤器未能進入 Bootloader 模式,
|
||||
請參考追蹤器主板燒錄韌體的說明文件,以得知進入 Bootloader 模式的方法。
|
||||
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_serial-devices-label = 偵測到的序列埠裝置:
|
||||
firmware_tool-flash_method_serial-devices-placeholder = 選擇一個序列埠裝置
|
||||
firmware_tool-flash_method_serial-no_devices = 偵測不到相容的序列埠裝置,請確認追蹤器已連接
|
||||
firmware_tool-build_step = 建置中
|
||||
firmware_tool-build_step-description = 韌體正在建置中,請稍後
|
||||
firmware_tool-flashing_step = 燒錄中
|
||||
@@ -1394,7 +1459,10 @@ firmware_tool-flashing_step-exit = 離開
|
||||
|
||||
## firmware tool build status
|
||||
|
||||
firmware_tool-build-QUEUED = 正在等待建置…
|
||||
firmware_tool-build-CREATING_BUILD_FOLDER = 正在建立建置資料夾
|
||||
firmware_tool-build-DOWNLOADING_SOURCE = 正在下載原始碼
|
||||
firmware_tool-build-EXTRACTING_SOURCE = 正在解壓縮原始碼
|
||||
firmware_tool-build-BUILDING = 正在建置韌體
|
||||
firmware_tool-build-SAVING = 正在儲存建置
|
||||
firmware_tool-build-DONE = 建置完成
|
||||
@@ -1508,3 +1576,45 @@ error_collection_modal-description_v2 =
|
||||
若之後要變更此設定,可以在「詳細設定」頁面中的「行為」來變更。
|
||||
error_collection_modal-confirm = 我同意
|
||||
error_collection_modal-cancel = 我不想要
|
||||
|
||||
## 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-complete = 已經準備好使用 SlimeVR 了!
|
||||
tracking_checklist-MOUNTING_CALIBRATION = 進行配戴校正
|
||||
tracking_checklist-FEET_MOUNTING_CALIBRATION = 進行腳部的配戴校正
|
||||
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-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 的設定有問題,這會影響到在 VRChat 使用 SlimeVR 的體驗。
|
||||
tracking_checklist-VRCHAT_SETTINGS-open = 前往 VRChat 警告
|
||||
tracking_checklist-UNASSIGNED_HMD = VR 頭戴裝置尚未分配給頭部
|
||||
tracking_checklist-UNASSIGNED_HMD-desc = VR 頭戴顯示器應被分配為頭部追蹤器。
|
||||
tracking_checklist-NETWORK_PROFILE_PUBLIC = 變更網路設定檔
|
||||
tracking_checklist-NETWORK_PROFILE_PUBLIC-desc = 你的網路設定檔目前設為「公開」,SlimeVR 為了能正常運作,不建議如此設定。 <PublicFixLink>此處提供修正的方法。</PublicFixLink>
|
||||
tracking_checklist-NETWORK_PROFILE_PUBLIC-open = 開啟控制台
|
||||
tracking_checklist-STAY_ALIGNED_CONFIGURED = 調整持續校正設定
|
||||
tracking_checklist-STAY_ALIGNED_CONFIGURED-desc = 記錄持續校正所使用的姿勢以減緩飄移現象
|
||||
tracking_checklist-STAY_ALIGNED_CONFIGURED-open = 開啟持續校正設定
|
||||
tracking_checklist-ignore = 忽略
|
||||
preview-mocap_mode_soon = 動作捕捉模式(即將推出™)
|
||||
preview-disable_render = 停用預覽
|
||||
preview-disabled_render = 預覽已停用
|
||||
toolbar-mounting_calibration = 配戴校正
|
||||
toolbar-mounting_calibration-default = 身體
|
||||
toolbar-mounting_calibration-feet = 腳部
|
||||
toolbar-mounting_calibration-fingers = 手指
|
||||
toolbar-drift_reset = 漂移重置
|
||||
toolbar-assigned_trackers = { $count } 個追蹤器已分配
|
||||
toolbar-unassigned_trackers = { $count } 個追蹤器尚未分配
|
||||
|
||||
BIN
gui/public/images/assignment-pose.webp
Normal file
|
After Width: | Height: | Size: 136 KiB |
BIN
gui/public/images/mounting/MountingFeets.webp
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
gui/public/images/mounting/MountingFeetsSide.webp
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
gui/public/images/user-height/controller-ok.webp
Normal file
|
After Width: | Height: | Size: 236 KiB |
BIN
gui/public/images/user-height/controller-wrong-1.webp
Normal file
|
After Width: | Height: | Size: 238 KiB |
BIN
gui/public/images/user-height/controller-wrong-2.webp
Normal file
|
After Width: | Height: | Size: 221 KiB |
BIN
gui/public/images/user-height/done.webp
Normal file
|
After Width: | Height: | Size: 301 KiB |
BIN
gui/public/images/user-height/look-forward-high.webp
Normal file
|
After Width: | Height: | Size: 219 KiB |
BIN
gui/public/images/user-height/look-forward-low.webp
Normal file
|
After Width: | Height: | Size: 224 KiB |
BIN
gui/public/images/user-height/look-forward-ok.webp
Normal file
|
After Width: | Height: | Size: 214 KiB |
BIN
gui/public/images/user-height/stand-still.webp
Normal file
|
After Width: | Height: | Size: 363 KiB |
BIN
gui/public/images/user-height/timeout.webp
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
gui/public/images/user-height/touch-floor.webp
Normal file
|
After Width: | Height: | Size: 296 KiB |
BIN
gui/public/images/user-height/wrong-height.webp
Normal file
|
After Width: | Height: | Size: 262 KiB |
BIN
gui/public/sounds/full-reset/end-full-reset-with-tail.ogg
Normal file
BIN
gui/public/sounds/full-reset/full-click-1.ogg
Normal file
BIN
gui/public/sounds/full-reset/full-click-2.ogg
Normal file
BIN
gui/public/sounds/full-reset/full-click-3.ogg
Normal file
BIN
gui/public/sounds/full-reset/init-full-reset-with-tail.ogg
Normal file
BIN
gui/public/sounds/mew.ogg
Normal file
BIN
gui/public/sounds/mounting-reset/mount-click-1.ogg
Normal file
BIN
gui/public/sounds/mounting-reset/mount-click-2.ogg
Normal file
BIN
gui/public/sounds/mounting-reset/mount-click-3.ogg
Normal file
BIN
gui/public/sounds/tracking/pause.ogg
Normal file
BIN
gui/public/sounds/tracking/play.ogg
Normal file
BIN
gui/public/sounds/yaw-reset/yaw-reset.ogg
Normal file
@@ -28,15 +28,14 @@ shadow-rs = "0.35"
|
||||
[dependencies]
|
||||
serde_json = "1"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
tauri = { version = "2", features = ["devtools", "tray-icon", "image-png", "rustls-tls"] }
|
||||
tauri-runtime = "2"
|
||||
tauri-plugin-dialog = "2"
|
||||
tauri-plugin-fs = "2"
|
||||
tauri-plugin-http = "2"
|
||||
tauri-plugin-opener = "2"
|
||||
tauri-plugin-os = "2"
|
||||
tauri-plugin-shell = "2"
|
||||
tauri-plugin-store = "2"
|
||||
tauri = { version = "2.0", features = ["devtools", "tray-icon", "image-png", "rustls-tls"] }
|
||||
tauri-runtime = "2.0"
|
||||
tauri-plugin-dialog = "2.0"
|
||||
tauri-plugin-fs = "2.4.1"
|
||||
tauri-plugin-os = "2.0"
|
||||
tauri-plugin-shell = "2.3.0"
|
||||
tauri-plugin-store = "2.0"
|
||||
flexi_logger = "0.29"
|
||||
log-panics = { version = "2", features = ["with-backtrace"] }
|
||||
log = "0.4"
|
||||
clap = { version = "4.0.29", features = ["derive"] }
|
||||
@@ -55,6 +54,8 @@ dirs-next = "2.0.0"
|
||||
discord-sdk = "0.3.6"
|
||||
tokio = { version = "1.37.0", features = ["time"] }
|
||||
itertools = "0.13.0"
|
||||
tauri-plugin-opener = "2.4.0"
|
||||
tauri-plugin-http = "2.5.0"
|
||||
tauri-plugin-log = "2"
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
|
||||
@@ -41,6 +41,17 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identifier": "opener:allow-open-url",
|
||||
"allow": [
|
||||
{
|
||||
"url": "steam:*"
|
||||
},
|
||||
{
|
||||
"url": "ms-settings:network"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identifier": "http:default",
|
||||
"allow": [
|
||||
@@ -52,4 +63,4 @@
|
||||
"opener:default",
|
||||
"log:default"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
use std::env;
|
||||
use std::panic;
|
||||
use std::path::Path;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::atomic::AtomicBool;
|
||||
use std::sync::atomic::Ordering;
|
||||
use std::sync::Arc;
|
||||
@@ -19,9 +20,7 @@ use tauri::{Manager, RunEvent};
|
||||
use tauri_plugin_shell::process::CommandChild;
|
||||
use util::get_log_dir;
|
||||
|
||||
use crate::util::{
|
||||
get_launch_path, show_error, valid_java_paths, Cli, JAVA_BIN, MINIMUM_JAVA_VERSION,
|
||||
};
|
||||
use crate::util::{show_error, valid_java_paths, Cli, JAVA_BIN, MINIMUM_JAVA_VERSION};
|
||||
|
||||
mod presence;
|
||||
mod state;
|
||||
@@ -94,14 +93,8 @@ fn main() -> Result<()> {
|
||||
// Spawn server process
|
||||
let exit_flag = Arc::new(AtomicBool::new(false));
|
||||
let backend = Arc::new(Mutex::new(Option::<CommandChild>::None));
|
||||
|
||||
let server_info = execute_server(cli)?;
|
||||
let build_result = setup_tauri(
|
||||
tauri_context,
|
||||
server_info,
|
||||
exit_flag.clone(),
|
||||
backend.clone(),
|
||||
);
|
||||
let build_result =
|
||||
setup_tauri(cli, tauri_context, exit_flag.clone(), backend.clone());
|
||||
|
||||
tauri_build_result(build_result, exit_flag, backend);
|
||||
|
||||
@@ -164,38 +157,52 @@ fn check_environment_variables() {
|
||||
}
|
||||
}
|
||||
|
||||
fn execute_server(
|
||||
cli: Cli,
|
||||
) -> Result<Option<(std::ffi::OsString, std::path::PathBuf)>> {
|
||||
use const_format::formatcp;
|
||||
if let Some(p) = get_launch_path(cli) {
|
||||
log::info!("Server found on path: {}", p.to_str().unwrap());
|
||||
fn find_java_bin<P: AsRef<Path>>(shared_dir: P) -> Option<PathBuf> {
|
||||
let shared_dir = shared_dir.as_ref();
|
||||
// Check if any Java already installed is compatible
|
||||
let jre = shared_dir.join("jre/bin").join(JAVA_BIN);
|
||||
let java_bin = jre
|
||||
.exists()
|
||||
.then(|| jre.into_os_string())
|
||||
.or_else(|| valid_java_paths().first().map(|x| x.0.to_owned()))?;
|
||||
Some(PathBuf::from(java_bin))
|
||||
}
|
||||
|
||||
// Check if any Java already installed is compatible
|
||||
let jre = p.join("jre/bin").join(JAVA_BIN);
|
||||
let java_bin = jre
|
||||
.exists()
|
||||
.then(|| jre.into_os_string())
|
||||
.or_else(|| valid_java_paths().first().map(|x| x.0.to_owned()));
|
||||
let Some(java_bin) = java_bin else {
|
||||
show_error(formatcp!(
|
||||
"Couldn't find a compatible Java version, please download Java {} or higher",
|
||||
MINIMUM_JAVA_VERSION
|
||||
));
|
||||
return Ok(None);
|
||||
};
|
||||
fn find_server_jar(cli: &Cli) -> Option<PathBuf> {
|
||||
let paths = [
|
||||
cli.launch_from_path.clone(),
|
||||
// AppImage passes the fakeroot in `APPDIR` env var.
|
||||
env::var_os("APPDIR").map(|a| PathBuf::from(a).join("usr/share/slimevr/")),
|
||||
env::current_dir().ok(),
|
||||
// getcwd in Mac can't be trusted, so let's get the executable's path
|
||||
env::current_exe()
|
||||
.map(|mut f| {
|
||||
f.pop();
|
||||
f
|
||||
})
|
||||
.ok(),
|
||||
// For development
|
||||
#[cfg(debug_assertions)]
|
||||
Some(PathBuf::from(env!("CARGO_MANIFEST_DIR"))),
|
||||
// For flatpak container
|
||||
Some(PathBuf::from("/app/share/slimevr/")),
|
||||
Some(PathBuf::from("/usr/share/slimevr/")),
|
||||
];
|
||||
|
||||
log::info!("Using Java binary: {:?}", java_bin);
|
||||
Ok(Some((java_bin, p)))
|
||||
} else {
|
||||
log::warn!("No server found. We will not start the server.");
|
||||
Ok(None)
|
||||
}
|
||||
paths
|
||||
.into_iter()
|
||||
.flatten()
|
||||
.map(|x| x.join("slimevr.jar"))
|
||||
.find(|x| x.exists())
|
||||
}
|
||||
|
||||
fn server_running() -> bool {
|
||||
std::net::TcpListener::bind("127.0.0.1:21110").is_err()
|
||||
}
|
||||
|
||||
fn setup_tauri(
|
||||
cli: Cli,
|
||||
context: tauri::Context,
|
||||
server_info: Option<(std::ffi::OsString, std::path::PathBuf)>,
|
||||
exit_flag: Arc<AtomicBool>,
|
||||
backend: Arc<Mutex<Option<CommandChild>>>,
|
||||
) -> Result<tauri::App, tauri::Error> {
|
||||
@@ -267,16 +274,36 @@ fn setup_tauri(
|
||||
|
||||
app.manage(Mutex::new(window_state));
|
||||
|
||||
if let Some((java_bin, p)) = server_info {
|
||||
if cli.no_start_server {
|
||||
log::info!("Skipping server start.");
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
if server_running() {
|
||||
log::info!("Skipping server start: server is already running.");
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
struct ServerStartInfo {
|
||||
server_jar: PathBuf,
|
||||
java_bin: PathBuf,
|
||||
}
|
||||
|
||||
let start_server = move |start_info: ServerStartInfo| {
|
||||
let app_handle = app.app_handle().clone();
|
||||
tauri::async_runtime::spawn(async move {
|
||||
use tauri_plugin_shell::{process::CommandEvent, ShellExt};
|
||||
|
||||
let (mut rx, child) = app_handle
|
||||
.shell()
|
||||
.command(java_bin.to_str().unwrap())
|
||||
.current_dir(p)
|
||||
.args(["-Xmx128M", "-jar", "slimevr.jar", "run"])
|
||||
.command(start_info.java_bin.to_str().unwrap())
|
||||
.current_dir(start_info.server_jar.parent().unwrap())
|
||||
.args([
|
||||
"-Xmx128M",
|
||||
"-jar",
|
||||
start_info.server_jar.to_str().unwrap(),
|
||||
"run",
|
||||
])
|
||||
.spawn()
|
||||
.expect("Unable to start the server jar");
|
||||
|
||||
@@ -309,7 +336,36 @@ fn setup_tauri(
|
||||
.emit("server-status", ("other", "receiver cancelled"))
|
||||
.expect("Failed to emit");
|
||||
});
|
||||
};
|
||||
|
||||
let find_server = || -> Option<ServerStartInfo> {
|
||||
use const_format::formatcp;
|
||||
|
||||
let server_jar = find_server_jar(&cli)?;
|
||||
log::info!("Server found on path: {}", server_jar.to_str().unwrap());
|
||||
|
||||
let shared_dir = server_jar.parent().unwrap();
|
||||
let Some(java_bin) = find_java_bin(shared_dir) else {
|
||||
show_error(formatcp!(
|
||||
"Couldn't find a compatible Java version, please download Java {} or higher",
|
||||
MINIMUM_JAVA_VERSION
|
||||
));
|
||||
return None;
|
||||
};
|
||||
log::info!("Using Java binary: {:?}", java_bin);
|
||||
|
||||
Some(ServerStartInfo {
|
||||
server_jar,
|
||||
java_bin,
|
||||
})
|
||||
};
|
||||
|
||||
if let Some(start_info) = find_server() {
|
||||
start_server(start_info);
|
||||
} else {
|
||||
log::warn!("No server found. We will not start the server.");
|
||||
}
|
||||
|
||||
Ok(())
|
||||
})
|
||||
.on_window_event(|w, e| match e {
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
#[cfg(windows)]
|
||||
use std::os::windows::process::CommandExt;
|
||||
use std::{
|
||||
env,
|
||||
ffi::{OsStr, OsString},
|
||||
io::Write,
|
||||
path::{Path, PathBuf},
|
||||
path::PathBuf,
|
||||
process::{Child, Stdio},
|
||||
};
|
||||
|
||||
@@ -45,39 +44,15 @@ const MODIFIED: &str = if build::GIT_CLEAN { "" } else { "-dirty" };
|
||||
)]
|
||||
pub struct Cli {
|
||||
#[clap(short, long)]
|
||||
display_console: bool,
|
||||
pub display_console: bool,
|
||||
#[clap(long)]
|
||||
launch_from_path: Option<PathBuf>,
|
||||
pub launch_from_path: Option<PathBuf>,
|
||||
#[clap(long)]
|
||||
pub no_start_server: bool,
|
||||
#[clap(flatten)]
|
||||
verbose: clap_verbosity_flag::Verbosity,
|
||||
}
|
||||
|
||||
pub fn is_valid_path(path: &Path) -> bool {
|
||||
path.join("slimevr.jar").exists()
|
||||
}
|
||||
|
||||
pub fn get_launch_path(cli: Cli) -> Option<PathBuf> {
|
||||
let paths = [
|
||||
cli.launch_from_path,
|
||||
// AppImage passes the fakeroot in `APPDIR` env var.
|
||||
env::var_os("APPDIR").map(|a| PathBuf::from(a).join("usr/share/slimevr/")),
|
||||
env::current_dir().ok(),
|
||||
// getcwd in Mac can't be trusted, so let's get the executable's path
|
||||
env::current_exe()
|
||||
.map(|mut f| {
|
||||
f.pop();
|
||||
f
|
||||
})
|
||||
.ok(),
|
||||
Some(PathBuf::from(env!("CARGO_MANIFEST_DIR"))),
|
||||
// For flatpak container
|
||||
Some(PathBuf::from("/app/share/slimevr/")),
|
||||
Some(PathBuf::from("/usr/share/slimevr/")),
|
||||
];
|
||||
|
||||
paths.into_iter().flatten().find(|x| is_valid_path(x))
|
||||
}
|
||||
|
||||
pub fn spawn_java(java: &OsStr, java_version: &OsStr) -> std::io::Result<Child> {
|
||||
let mut cmd = std::process::Command::new(java);
|
||||
|
||||
|
||||
@@ -22,12 +22,9 @@ import { OnboardingLayout } from './components/onboarding/OnboardingLayout';
|
||||
import { AutomaticProportionsPage } from './components/onboarding/pages/body-proportions/AutomaticProportions';
|
||||
import { ManualProportionsPage } from './components/onboarding/pages/body-proportions/ManualProportions';
|
||||
import { ConnectTrackersPage } from './components/onboarding/pages/ConnectTracker';
|
||||
import { DonePage } from './components/onboarding/pages/Done';
|
||||
import { EnterVRPage } from './components/onboarding/pages/EnterVR';
|
||||
import { HomePage } from './components/onboarding/pages/Home';
|
||||
import { AutomaticMountingPage } from './components/onboarding/pages/mounting/AutomaticMounting';
|
||||
import { ManualMountingPage } from './components/onboarding/pages/mounting/ManualMounting';
|
||||
import { ResetTutorialPage } from './components/onboarding/pages/ResetTutorial';
|
||||
import { TrackersAssignPage } from './components/onboarding/pages/trackers-assign/TrackerAssignment';
|
||||
import { WifiCredsPage } from './components/onboarding/pages/WifiCreds';
|
||||
import { ConfigContextProvider } from './components/providers/ConfigContext';
|
||||
@@ -39,10 +36,7 @@ import { OSCRouterSettings } from './components/settings/pages/OSCRouterSettings
|
||||
import * as os from '@tauri-apps/plugin-os';
|
||||
import { VMCSettings } from './components/settings/pages/VMCSettings';
|
||||
import { MountingChoose } from './components/onboarding/pages/mounting/MountingChoose';
|
||||
import { StatusProvider } from './components/providers/StatusSystemContext';
|
||||
import { VersionUpdateModal } from './components/VersionUpdateModal';
|
||||
import { CalibrationTutorialPage } from './components/onboarding/pages/CalibrationTutorial';
|
||||
import { AssignmentTutorialPage } from './components/onboarding/pages/assignment-preparation/AssignmentTutorial';
|
||||
import { openUrl } from '@tauri-apps/plugin-opener';
|
||||
import semver from 'semver';
|
||||
import { useBreakpoint, useIsTauri } from './hooks/breakpoint';
|
||||
@@ -61,6 +55,9 @@ import { FirmwareUpdate } from './components/firmware-update/FirmwareUpdate';
|
||||
import { ConnectionLost } from './components/onboarding/pages/ConnectionLost';
|
||||
import { VRCWarningsPage } from './components/vrc/VRCWarningsPage';
|
||||
import { StayAlignedSetup } from './components/onboarding/pages/stay-aligned/StayAlignedSetup';
|
||||
import { TrackingChecklistProvider } from './components/tracking-checklist/TrackingChecklistProvider';
|
||||
import { HomeScreenSettings } from './components/settings/pages/HomeScreenSettings';
|
||||
import { ChecklistPage } from './components/tracking-checklist/TrackingChecklist';
|
||||
|
||||
export const GH_REPO = 'SlimeVR/SlimeVR-Server';
|
||||
export const VersionContext = createContext('');
|
||||
@@ -83,7 +80,7 @@ function Layout() {
|
||||
<Route
|
||||
path="/"
|
||||
element={
|
||||
<MainLayout isMobile={isMobile}>
|
||||
<MainLayout isMobile={isMobile} full>
|
||||
<Home />
|
||||
</MainLayout>
|
||||
}
|
||||
@@ -91,7 +88,7 @@ function Layout() {
|
||||
<Route
|
||||
path="/firmware-update"
|
||||
element={
|
||||
<MainLayout isMobile={isMobile} widgets={false}>
|
||||
<MainLayout isMobile={isMobile}>
|
||||
<FirmwareUpdate />
|
||||
</MainLayout>
|
||||
}
|
||||
@@ -99,11 +96,19 @@ function Layout() {
|
||||
<Route
|
||||
path="/vr-mode"
|
||||
element={
|
||||
<MainLayout isMobile={isMobile}>
|
||||
<MainLayout isMobile={isMobile} full>
|
||||
<VRModePage />
|
||||
</MainLayout>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/checklist"
|
||||
element={
|
||||
<MainLayout isMobile={isMobile}>
|
||||
<ChecklistPage />
|
||||
</MainLayout>
|
||||
}
|
||||
/>
|
||||
<Route
|
||||
path="/tracker/:trackernum/:deviceid"
|
||||
element={
|
||||
@@ -115,7 +120,7 @@ function Layout() {
|
||||
<Route
|
||||
path="/vrc-warnings"
|
||||
element={
|
||||
<MainLayout isMobile={isMobile} widgets={false}>
|
||||
<MainLayout isMobile={isMobile}>
|
||||
<VRCWarningsPage />
|
||||
</MainLayout>
|
||||
}
|
||||
@@ -135,6 +140,7 @@ function Layout() {
|
||||
<Route path="osc/vrchat" element={<VRCOSCSettings />} />
|
||||
<Route path="osc/vmc" element={<VMCSettings />} />
|
||||
<Route path="interface" element={<InterfaceSettings />} />
|
||||
<Route path="interface/home" element={<HomeScreenSettings />} />
|
||||
<Route path="advanced" element={<AdvancedSettings />} />
|
||||
</Route>
|
||||
<Route
|
||||
@@ -148,20 +154,10 @@ function Layout() {
|
||||
<Route path="home" element={<HomePage />} />
|
||||
<Route path="wifi-creds" element={<WifiCredsPage />} />
|
||||
<Route path="connect-trackers" element={<ConnectTrackersPage />} />
|
||||
<Route
|
||||
path="calibration-tutorial"
|
||||
element={<CalibrationTutorialPage />}
|
||||
/>
|
||||
<Route
|
||||
path="assign-tutorial"
|
||||
element={<AssignmentTutorialPage />}
|
||||
/>
|
||||
<Route path="trackers-assign" element={<TrackersAssignPage />} />
|
||||
<Route path="enter-vr" element={<EnterVRPage />} />
|
||||
<Route path="mounting/choose" element={<MountingChoose />} />
|
||||
<Route path="mounting/auto" element={<AutomaticMountingPage />} />
|
||||
<Route path="mounting/manual" element={<ManualMountingPage />} />
|
||||
<Route path="reset-tutorial" element={<ResetTutorialPage />} />
|
||||
<Route
|
||||
path="body-proportions/auto"
|
||||
element={<AutomaticProportionsPage />}
|
||||
@@ -175,7 +171,6 @@ function Layout() {
|
||||
element={<ScaledProportionsPage />}
|
||||
/>
|
||||
<Route path="stay-aligned" element={<StayAlignedSetup />} />
|
||||
<Route path="done" element={<DonePage />} />
|
||||
</Route>
|
||||
<Route path="*" element={<TopBar />} />
|
||||
</Route>
|
||||
@@ -218,11 +213,11 @@ export default function App() {
|
||||
.then((res) => res.json())
|
||||
.then((json: any[]) => json.filter((rl) => rl?.prerelease === false));
|
||||
|
||||
if (
|
||||
__VERSION_TAG__ &&
|
||||
typeof releases[0].tag_name === 'string' &&
|
||||
semver.gt(releases[0].tag_name, __VERSION_TAG__)
|
||||
) {
|
||||
if (typeof releases[0].tag_name !== 'string') return;
|
||||
|
||||
const version = semver.coerce(releases[0].tag_name);
|
||||
|
||||
if (version && semver.gt(version, __VERSION_TAG__)) {
|
||||
setUpdateFound(releases[0].tag_name);
|
||||
}
|
||||
}
|
||||
@@ -297,7 +292,7 @@ export default function App() {
|
||||
<WebSocketApiContext.Provider value={websocketAPI}>
|
||||
<AppContextProvider>
|
||||
<OnboardingContextProvider>
|
||||
<StatusProvider>
|
||||
<TrackingChecklistProvider>
|
||||
<VersionContext.Provider value={updateFound}>
|
||||
<div className="h-full w-full text-standard bg-background-80 text-background-10">
|
||||
<Preload />
|
||||
@@ -305,7 +300,7 @@ export default function App() {
|
||||
{websocketAPI.isConnected && <Layout />}
|
||||
</div>
|
||||
</VersionContext.Provider>
|
||||
</StatusProvider>
|
||||
</TrackingChecklistProvider>
|
||||
</OnboardingContextProvider>
|
||||
</AppContextProvider>
|
||||
</WebSocketApiContext.Provider>
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
import { Localized } from '@fluent/react';
|
||||
import { ClearMountingResetRequestT, RpcMessage } from 'solarxr-protocol';
|
||||
import { useWebsocketAPI } from '@/hooks/websocket-api';
|
||||
import { BigButton } from './commons/BigButton';
|
||||
import { TrashIcon } from './commons/icon/TrashIcon';
|
||||
import { Quaternion } from 'three';
|
||||
import { QuaternionFromQuatT, similarQuaternions } from '@/maths/quaternion';
|
||||
import { useMemo } from 'react';
|
||||
import { useAtomValue } from 'jotai';
|
||||
import { assignedTrackersAtom } from '@/store/app-store';
|
||||
|
||||
const _q = new Quaternion();
|
||||
|
||||
export function ClearMountingButton() {
|
||||
const { sendRPCPacket } = useWebsocketAPI();
|
||||
const assignedTrackers = useAtomValue(assignedTrackersAtom);
|
||||
|
||||
const trackerWithMounting = useMemo(
|
||||
() =>
|
||||
assignedTrackers.some(
|
||||
(d) =>
|
||||
!similarQuaternions(
|
||||
QuaternionFromQuatT(d?.tracker.info?.mountingResetOrientation),
|
||||
_q
|
||||
)
|
||||
),
|
||||
[assignedTrackers]
|
||||
);
|
||||
|
||||
const clearMounting = () => {
|
||||
const record = new ClearMountingResetRequestT();
|
||||
sendRPCPacket(RpcMessage.ClearMountingResetRequest, record);
|
||||
};
|
||||
|
||||
return (
|
||||
<Localized id={'widget-clear_mounting'}>
|
||||
<BigButton
|
||||
icon={<TrashIcon size={20} />}
|
||||
onClick={clearMounting}
|
||||
disabled={!trackerWithMounting}
|
||||
/>
|
||||
</Localized>
|
||||
);
|
||||
}
|
||||
@@ -1,24 +1,67 @@
|
||||
:root {
|
||||
--toolbar-h: 120px;
|
||||
}
|
||||
|
||||
.main-layout {
|
||||
display: grid;
|
||||
grid-template:
|
||||
't t' var(--topbar-h)
|
||||
's c' calc(100% - var(--topbar-h))
|
||||
'n c' calc(100% - var(--topbar-h))
|
||||
/ var(--navbar-w) calc(100% - var(--navbar-w));
|
||||
|
||||
&:has(.widgets) {
|
||||
&.full {
|
||||
grid-template:
|
||||
't t t' var(--topbar-h)
|
||||
's c w' calc(100% - var(--topbar-h))
|
||||
/ var(--navbar-w) calc(100% - var(--navbar-w) - var(--widget-w)) var(
|
||||
--widget-w
|
||||
);
|
||||
'n b s' var(--toolbar-h)
|
||||
'n c s' calc(100% - var(--topbar-h) - var(--toolbar-h))
|
||||
/ var(--navbar-w) calc(100% - var(--navbar-w) - var(--right-section-w)) var(--right-section-w);
|
||||
}
|
||||
|
||||
@screen nsm {
|
||||
--right-section-w: 40%;
|
||||
}
|
||||
|
||||
@screen sm {
|
||||
--right-section-w: 36%;
|
||||
}
|
||||
|
||||
@screen md {
|
||||
--right-section-w: 30%;
|
||||
}
|
||||
|
||||
@screen lg {
|
||||
--right-section-w: 25%;
|
||||
}
|
||||
|
||||
@screen xl {
|
||||
--right-section-w: 22%;
|
||||
}
|
||||
|
||||
@screen mobile {
|
||||
--checklist-h: 30px;
|
||||
|
||||
&.checklist-ok {
|
||||
--checklist-h: 0px;
|
||||
}
|
||||
|
||||
&.full {
|
||||
grid-template:
|
||||
't' var(--topbar-h)
|
||||
'l' var(--checklist-h)
|
||||
'b' var(--toolbar-h)
|
||||
'c' calc(
|
||||
100% - var(--topbar-h) - var(--checklist-h) - var(--toolbar-h) - var(
|
||||
--navbar-h
|
||||
)
|
||||
)
|
||||
'n' calc(var(--navbar-h))
|
||||
/ 100%;
|
||||
}
|
||||
|
||||
grid-template:
|
||||
't' var(--topbar-h)
|
||||
'c' calc(100% - var(--topbar-h) - var(--navbar-h))
|
||||
's' calc(var(--navbar-h))
|
||||
'n' calc(var(--navbar-h))
|
||||
/ 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,20 +9,25 @@ import {
|
||||
import { Navbar } from './Navbar';
|
||||
import { TopBar } from './TopBar';
|
||||
import { useWebsocketAPI } from '@/hooks/websocket-api';
|
||||
import { WidgetsComponent } from './WidgetsComponent';
|
||||
import './MainLayout.scss';
|
||||
import { Toolbar } from './Toolbar';
|
||||
import { Sidebar } from './Sidebar';
|
||||
import { TrackingChecklistMobile } from './tracking-checklist/TrackingChecklist';
|
||||
import { useTrackingChecklist } from '@/hooks/tracking-checklist';
|
||||
|
||||
export function MainLayout({
|
||||
children,
|
||||
background = true,
|
||||
widgets = true,
|
||||
full = false,
|
||||
isMobile = undefined,
|
||||
}: {
|
||||
children: ReactNode;
|
||||
background?: boolean;
|
||||
isMobile?: boolean;
|
||||
widgets?: boolean;
|
||||
showToolbarSettings?: boolean;
|
||||
full?: boolean;
|
||||
}) {
|
||||
const { completion } = useTrackingChecklist();
|
||||
const { sendRPCPacket } = useWebsocketAPI();
|
||||
const [ProportionsLastPageOpen, setProportionsLastPageOpen] = useState(true);
|
||||
|
||||
@@ -58,33 +63,42 @@ export function MainLayout({
|
||||
});
|
||||
|
||||
return (
|
||||
<div className="">
|
||||
<div className="main-layout w-full h-screen">
|
||||
<div style={{ gridArea: 't' }}>
|
||||
<TopBar />
|
||||
</div>
|
||||
<div style={{ gridArea: 's' }} className="overflow-y-auto">
|
||||
<Navbar />
|
||||
</div>
|
||||
<div
|
||||
style={{ gridArea: 'c' }}
|
||||
className={classNames(
|
||||
'overflow-y-auto mr-2 my-2 mobile:m-0',
|
||||
'flex flex-col rounded-xl',
|
||||
background && 'bg-background-70'
|
||||
)}
|
||||
>
|
||||
{children}
|
||||
</div>
|
||||
{!isMobile && widgets && (
|
||||
<div
|
||||
style={{ gridArea: 'w' }}
|
||||
className="overflow-y-auto mr-2 my-2 rounded-xl bg-background-70 flex flex-col gap-2 p-2 widgets"
|
||||
>
|
||||
<WidgetsComponent />
|
||||
</div>
|
||||
)}
|
||||
<div
|
||||
className={classNames('main-layout w-full h-screen', full && 'full', {
|
||||
'checklist-ok': completion === 'complete',
|
||||
})}
|
||||
>
|
||||
<div style={{ gridArea: 't' }}>
|
||||
<TopBar />
|
||||
</div>
|
||||
<div style={{ gridArea: 'n' }} className="overflow-y-auto">
|
||||
<Navbar />
|
||||
</div>
|
||||
|
||||
<div
|
||||
style={{ gridArea: 'c' }}
|
||||
className={classNames(
|
||||
'overflow-y-auto mr-2 my-2 mobile:m-0',
|
||||
'flex flex-col rounded-md',
|
||||
background && 'bg-background-70',
|
||||
{ 'rounded-t-none': !isMobile && full }
|
||||
)}
|
||||
>
|
||||
{children}
|
||||
</div>
|
||||
{full && isMobile && completion !== 'complete' && (
|
||||
<TrackingChecklistMobile />
|
||||
)}
|
||||
{full && (
|
||||
<div style={{ gridArea: 'b' }}>
|
||||
<Toolbar />
|
||||
</div>
|
||||
)}
|
||||
{!isMobile && full && (
|
||||
<div style={{ gridArea: 's' }} className="mr-2">
|
||||
<Sidebar />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,14 +2,13 @@ import { useLocalization } from '@fluent/react';
|
||||
import classnames from 'classnames';
|
||||
import { ReactNode } from 'react';
|
||||
import { NavLink, useMatch } from 'react-router-dom';
|
||||
import { CubeIcon } from './commons/icon/CubeIcon';
|
||||
import { GearIcon } from './commons/icon/GearIcon';
|
||||
import { HumanIcon } from './commons/icon/HumanIcon';
|
||||
import { RulerIcon } from './commons/icon/RulerIcon';
|
||||
import { SparkleIcon } from './commons/icon/SparkleIcon';
|
||||
import { WrenchIcon } from './commons/icon/WrenchIcons';
|
||||
import { useBreakpoint } from '@/hooks/breakpoint';
|
||||
import { useConfig } from '@/hooks/config';
|
||||
import { HomeIcon } from './commons/icon/HomeIcon';
|
||||
import { SkiIcon } from './commons/icon/SkiIcon';
|
||||
import { WifiIcon } from './commons/icon/WifiIcon';
|
||||
|
||||
export function NavButton({
|
||||
to,
|
||||
@@ -34,7 +33,7 @@ export function NavButton({
|
||||
state={state}
|
||||
className={classnames(
|
||||
'flex flex-col justify-center xs:gap-4 mobile:gap-2',
|
||||
'xs:w-[85px] mobile:w-[80px] mobile:h-[80px]',
|
||||
'mobile:w-[65px] mobile:h-[65px]',
|
||||
'xs:py-3 mobile:py-4 rounded-md mobile:rounded-b-none group select-text',
|
||||
{
|
||||
'bg-accent-background-50 fill-accent-background-20': doesMatch,
|
||||
@@ -44,16 +43,16 @@ export function NavButton({
|
||||
>
|
||||
<div className="flex justify-around">
|
||||
<div
|
||||
className={classnames('scale-150', {
|
||||
className={classnames('scale-[150%]', {
|
||||
'fill-accent-lighter': doesMatch,
|
||||
'fill-background-50': !doesMatch,
|
||||
'fill-background-40': !doesMatch,
|
||||
})}
|
||||
>
|
||||
{icon}
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className={classnames('text-center', {
|
||||
className={classnames('text-center mobile:hidden', {
|
||||
'text-accent-background-10': doesMatch,
|
||||
'text-background-10': !doesMatch,
|
||||
})}
|
||||
@@ -65,12 +64,11 @@ export function NavButton({
|
||||
}
|
||||
|
||||
export function MainLinks() {
|
||||
const { config } = useConfig();
|
||||
const { l10n } = useLocalization();
|
||||
|
||||
return (
|
||||
<>
|
||||
<NavButton to="/" icon={<CubeIcon />}>
|
||||
<NavButton to="/" icon={<HomeIcon />}>
|
||||
{l10n.getString('navbar-home')}
|
||||
</NavButton>
|
||||
<NavButton
|
||||
@@ -84,7 +82,7 @@ export function MainLinks() {
|
||||
to="/onboarding/mounting/choose"
|
||||
match="/onboarding/mounting/*"
|
||||
state={{ alonePage: true }}
|
||||
icon={<WrenchIcon />}
|
||||
icon={<SkiIcon />}
|
||||
>
|
||||
{l10n.getString('navbar-mounting')}
|
||||
</NavButton>
|
||||
@@ -96,11 +94,13 @@ export function MainLinks() {
|
||||
>
|
||||
{l10n.getString('navbar-body_proportions')}
|
||||
</NavButton>
|
||||
{config?.showNavbarOnboarding && (
|
||||
<NavButton to="/onboarding/home" icon={<SparkleIcon />}>
|
||||
{l10n.getString('navbar-onboarding')}
|
||||
</NavButton>
|
||||
)}
|
||||
<NavButton
|
||||
to="/onboarding/wifi-creds"
|
||||
icon={<WifiIcon value={1} disabled variant="navbar" />}
|
||||
state={{ alonePage: true }}
|
||||
>
|
||||
{l10n.getString('navbar-connect_trackers')}
|
||||
</NavButton>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
251
gui/src/components/Sidebar.tsx
Normal file
@@ -0,0 +1,251 @@
|
||||
import { useTrackingChecklist } from '@/hooks/tracking-checklist';
|
||||
import { TrackingChecklist } from './tracking-checklist/TrackingChecklist';
|
||||
import { SkeletonVisualizerWidget } from './widgets/SkeletonVisualizerWidget';
|
||||
import { useEffect, useLayoutEffect, useMemo, useState } from 'react';
|
||||
import classNames from 'classnames';
|
||||
import { Typography } from './commons/Typography';
|
||||
import { useLocaleConfig } from '@/i18n/config';
|
||||
import { useWebsocketAPI } from '@/hooks/websocket-api';
|
||||
import {
|
||||
RpcMessage,
|
||||
SkeletonConfigRequestT,
|
||||
SkeletonConfigResponseT,
|
||||
} from 'solarxr-protocol';
|
||||
import { Tooltip } from './commons/Tooltip';
|
||||
import { Vector3 } from 'three';
|
||||
import { RecordIcon } from './commons/icon/RecordIcon';
|
||||
import { PauseIcon } from './commons/icon/PauseIcon';
|
||||
import { HumanIcon } from './commons/icon/HumanIcon';
|
||||
import { EyeIcon } from './commons/icon/EyeIcon';
|
||||
import { useConfig } from '@/hooks/config';
|
||||
import { useBHV } from '@/hooks/bvh';
|
||||
import { usePauseTracking } from '@/hooks/pause-tracking';
|
||||
import { PlayIcon } from './commons/icon/PlayIcon';
|
||||
|
||||
export function PreviewControls({ open }: { open: boolean }) {
|
||||
const [userHeight, setUserHeight] = useState('');
|
||||
const { currentLocales } = useLocaleConfig();
|
||||
const { useRPCPacket, sendRPCPacket } = useWebsocketAPI();
|
||||
|
||||
const {
|
||||
state: bvhState,
|
||||
toggle: toggleBVH,
|
||||
available: bvhAvailable,
|
||||
} = useBHV();
|
||||
const { paused, toggle: toggleTracking } = usePauseTracking();
|
||||
|
||||
const { cmFormat } = useMemo(() => {
|
||||
const cmFormat = Intl.NumberFormat(currentLocales, {
|
||||
style: 'unit',
|
||||
unit: 'centimeter',
|
||||
maximumFractionDigits: 1,
|
||||
});
|
||||
return { cmFormat };
|
||||
}, [currentLocales]);
|
||||
useRPCPacket(
|
||||
RpcMessage.SkeletonConfigResponse,
|
||||
(data: SkeletonConfigResponseT) => {
|
||||
if (data.userHeight)
|
||||
setUserHeight(cmFormat.format((data.userHeight * 100) / 0.936));
|
||||
}
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
sendRPCPacket(
|
||||
RpcMessage.SkeletonConfigRequest,
|
||||
new SkeletonConfigRequestT()
|
||||
);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<>
|
||||
<Tooltip
|
||||
preferedDirection="bottom"
|
||||
content={
|
||||
<Typography id="onboarding-manual_proportions-estimated_height" />
|
||||
}
|
||||
>
|
||||
<div
|
||||
className={classNames(
|
||||
'h-10 bg-background-60 p-4 flex items-center rounded-lg justify-center cursor-help w-fit top-2 left-2 absolute',
|
||||
{
|
||||
'opacity-0': !open,
|
||||
'opacity-100': open,
|
||||
}
|
||||
)}
|
||||
>
|
||||
<Typography variant="section-title">{userHeight}</Typography>
|
||||
</div>
|
||||
</Tooltip>
|
||||
<div className="absolute bottom-0 pb-4 flex justify-center w-full">
|
||||
<div className="flex bg-background-80 bg-opacity-70 rounded-lg gap-2 px-4 py-2 items-center fill-background-10">
|
||||
{bvhAvailable && (
|
||||
<Tooltip
|
||||
content={
|
||||
<Typography
|
||||
variant="section-title"
|
||||
id={
|
||||
bvhState === 'idle'
|
||||
? 'bvh-start_recording'
|
||||
: 'bvh-stop_recording'
|
||||
}
|
||||
/>
|
||||
}
|
||||
preferedDirection="top"
|
||||
>
|
||||
<div
|
||||
className={classNames(
|
||||
'flex justify-center items-center w-10 h-10 rounded-full hover:bg-background-60 cursor-pointer',
|
||||
{ 'bg-background-60': bvhState !== 'idle' }
|
||||
)}
|
||||
onClick={() => toggleBVH()}
|
||||
>
|
||||
{bvhState === 'idle' && <RecordIcon width={20} />}
|
||||
{bvhState !== 'idle' && (
|
||||
<div className="w-5 h-5 rounded-full bg-status-critical animate-pulse" />
|
||||
)}
|
||||
</div>
|
||||
</Tooltip>
|
||||
)}
|
||||
<Tooltip
|
||||
content={
|
||||
<Typography
|
||||
variant="section-title"
|
||||
id={paused ? 'tracking-paused' : 'tracking-unpaused'}
|
||||
/>
|
||||
}
|
||||
preferedDirection="top"
|
||||
>
|
||||
<div
|
||||
className="flex justify-center items-center w-14 h-14 rounded-full bg-background-60 hover:bg-background-50 cursor-pointer"
|
||||
onClick={() => toggleTracking()}
|
||||
>
|
||||
{!paused && <PauseIcon width={25} />}
|
||||
{paused && <PlayIcon width={25} />}
|
||||
</div>
|
||||
</Tooltip>
|
||||
<Tooltip
|
||||
content={
|
||||
<Typography
|
||||
variant="section-title"
|
||||
id="preview-mocap_mode_soon"
|
||||
/>
|
||||
}
|
||||
preferedDirection="top"
|
||||
>
|
||||
<div className="flex justify-center items-center w-10 h-10 rounded-full cursor-not-allowed">
|
||||
<HumanIcon width={20} />
|
||||
</div>
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
function PreviewSection({ open }: { open: boolean }) {
|
||||
const { config, setConfig } = useConfig();
|
||||
const [disabledRender, setDisabledRender] = useState(config?.skeletonPreview);
|
||||
|
||||
const toggleRender = () => {
|
||||
setConfig({ skeletonPreview: disabledRender });
|
||||
};
|
||||
|
||||
useLayoutEffect(() => {
|
||||
// need useLayoutEffect to make sure that the state is corect before the first render of the skeleton
|
||||
setDisabledRender(!config?.skeletonPreview);
|
||||
}, [config]);
|
||||
|
||||
return (
|
||||
<div
|
||||
className={classNames(
|
||||
'transition-opacity duration-500 delay-500 h-full relative',
|
||||
{
|
||||
'opacity-0': !open,
|
||||
'opacity-100': open,
|
||||
}
|
||||
)}
|
||||
>
|
||||
<SkeletonVisualizerWidget
|
||||
disabled={disabledRender}
|
||||
toggleDisabled={() => toggleRender()}
|
||||
onInit={(context) => {
|
||||
context.addView({
|
||||
left: 0,
|
||||
bottom: 0,
|
||||
width: 1,
|
||||
height: 1,
|
||||
position: new Vector3(3, 2.5, -3),
|
||||
onHeightChange(v, newHeight) {
|
||||
v.controls.target.set(0, newHeight / 2.2, 0.1);
|
||||
const scale = Math.max(1, newHeight) / 1.3;
|
||||
v.camera.zoom = 1 / scale;
|
||||
},
|
||||
});
|
||||
}}
|
||||
/>
|
||||
<Tooltip
|
||||
preferedDirection="bottom"
|
||||
content={<Typography id="preview-disable_render" />}
|
||||
>
|
||||
<div
|
||||
className="flex justify-center items-center w-10 h-10 cursor-pointer rounded-full fill-background-10 absolute right-2 top-2 bg-background-60 hover:bg-background-50"
|
||||
onClick={() => toggleRender()}
|
||||
>
|
||||
<EyeIcon width={18} closed={!disabledRender} />
|
||||
</div>
|
||||
</Tooltip>
|
||||
<PreviewControls open={open} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export function Sidebar() {
|
||||
const { completion } = useTrackingChecklist();
|
||||
const [closed, setClosed] = useState(true);
|
||||
const [closing, setClosing] = useState(false);
|
||||
|
||||
const closedHight = '90px';
|
||||
const checklistSize = closed ? closedHight : 'calc(100% - 16px)';
|
||||
const previewSize = closed ? `calc(100% - ${closedHight} - 24px)` : '0%';
|
||||
|
||||
const toggleClosed = () => setClosed((closed) => !closed);
|
||||
|
||||
useLayoutEffect(() => {
|
||||
setClosing(true);
|
||||
const ref = setTimeout(() => setClosing(false), 1000);
|
||||
return () => {
|
||||
clearTimeout(ref);
|
||||
setClosing(false);
|
||||
};
|
||||
}, [closed]);
|
||||
|
||||
useEffect(() => {
|
||||
if (completion === 'complete') {
|
||||
setClosed(true);
|
||||
} else if (completion === 'incomplete') {
|
||||
setClosed(false);
|
||||
}
|
||||
}, [completion]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<div
|
||||
className="transition-[height] duration-500 rounded-lg my-2 bg-background-70 overflow-clip"
|
||||
style={{ height: checklistSize }}
|
||||
>
|
||||
<TrackingChecklist
|
||||
closed={closed}
|
||||
closing={closing}
|
||||
toggleClosed={toggleClosed}
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
className="transition-[height] duration-500 rounded-lg my-2 bg-background-70 overflow-clip"
|
||||
style={{ height: previewSize }}
|
||||
>
|
||||
<PreviewSection open={closed} />
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
214
gui/src/components/Toolbar.tsx
Normal file
@@ -0,0 +1,214 @@
|
||||
import { Typography } from './commons/Typography';
|
||||
import classNames from 'classnames';
|
||||
import { ResetType } from 'solarxr-protocol';
|
||||
import {
|
||||
BODY_PARTS_GROUPS,
|
||||
MountingResetGroup,
|
||||
ResetBtnStatus,
|
||||
useReset,
|
||||
UseResetOptions,
|
||||
} from '@/hooks/reset';
|
||||
import { Tooltip } from './commons/Tooltip';
|
||||
import { useAtomValue } from 'jotai';
|
||||
import { assignedTrackersAtom } from '@/store/app-store';
|
||||
import { useBreakpoint } from '@/hooks/breakpoint';
|
||||
import { useMemo } from 'react';
|
||||
import { ResetButtonIcon } from './home/ResetButton';
|
||||
|
||||
const MAINBUTTON_CLASSES = ({ disabled }: { disabled: boolean }) =>
|
||||
classNames(
|
||||
'relative overflow-clip',
|
||||
'flex h-full items-center justify-center gap-2 px-4 bg-background-60 rounded-lg fill-background-10 aspect-square md:aspect-auto',
|
||||
{
|
||||
'cursor-pointer hover:bg-background-50 bg-background-60': !disabled,
|
||||
'cursor-not-allowed bg-background-70 brightness-75': disabled,
|
||||
}
|
||||
);
|
||||
|
||||
function ButtonProgress({
|
||||
progress,
|
||||
status,
|
||||
}: {
|
||||
progress: number;
|
||||
status: ResetBtnStatus;
|
||||
}) {
|
||||
return (
|
||||
<div
|
||||
className={classNames(
|
||||
'absolute top-0 left-0 w-0 h-full bg-accent-background-20 opacity-50'
|
||||
)}
|
||||
style={{
|
||||
width: `${progress * 100}%`,
|
||||
transition:
|
||||
status === 'counting'
|
||||
? 'width 0.3s cubic-bezier(0.68, -0.8, 0.32, 1.8)'
|
||||
: 'width 1s linear',
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
function BasicResetButton(options: UseResetOptions & { customName?: string }) {
|
||||
const { isMd } = useBreakpoint('md');
|
||||
const {
|
||||
triggerReset,
|
||||
status,
|
||||
name: resetName,
|
||||
timer,
|
||||
progress: resetProress,
|
||||
disabled,
|
||||
duration,
|
||||
error,
|
||||
} = useReset(options);
|
||||
|
||||
const progress = status === 'counting' ? resetProress / duration : 0;
|
||||
|
||||
const name = options.customName || resetName;
|
||||
|
||||
const skiReset =
|
||||
options.type === ResetType.Mounting && options.group === 'default';
|
||||
|
||||
return (
|
||||
<Tooltip
|
||||
disabled={!error && isMd}
|
||||
content={
|
||||
error ? (
|
||||
<Typography
|
||||
id={error}
|
||||
textAlign="text-center"
|
||||
color="text-status-critical"
|
||||
/>
|
||||
) : (
|
||||
<Typography textAlign="text-center" id={name} />
|
||||
)
|
||||
}
|
||||
spacing={5}
|
||||
preferedDirection={error ? 'bottom' : 'top'}
|
||||
>
|
||||
<div
|
||||
className={classNames(
|
||||
MAINBUTTON_CLASSES({ disabled }),
|
||||
'rounded-lg',
|
||||
'absolute'
|
||||
)}
|
||||
style={{
|
||||
animationIterationCount: 1,
|
||||
}}
|
||||
onClick={() => !disabled && triggerReset()}
|
||||
>
|
||||
<div
|
||||
className={classNames({
|
||||
'animate-spin-ccw': !skiReset && status === 'finished',
|
||||
'animate-skiing': skiReset && status === 'finished',
|
||||
'opacity-0': status === 'counting',
|
||||
})}
|
||||
style={{
|
||||
animationIterationCount: 1,
|
||||
}}
|
||||
>
|
||||
<ResetButtonIcon {...options} />
|
||||
</div>
|
||||
|
||||
<div
|
||||
className={classNames('hidden md:block relative', {
|
||||
'opacity-0': status === 'counting',
|
||||
})}
|
||||
>
|
||||
<Typography
|
||||
variant="section-title"
|
||||
textAlign="text-center"
|
||||
id={name}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<ButtonProgress progress={progress} status={status} />
|
||||
<div
|
||||
className={classNames(
|
||||
{
|
||||
'opacity-0': status !== 'counting',
|
||||
'animate-timer-tick': status === 'counting',
|
||||
},
|
||||
'absolute top-0 h-full flex items-center justify-center'
|
||||
)}
|
||||
>
|
||||
<Typography variant="main-title" textAlign="text-center">
|
||||
{timer}
|
||||
</Typography>
|
||||
</div>
|
||||
</div>
|
||||
</Tooltip>
|
||||
);
|
||||
}
|
||||
|
||||
export function Toolbar() {
|
||||
const assignedTrackers = useAtomValue(assignedTrackersAtom);
|
||||
|
||||
const { visibleGroups, groupVisibility } = useMemo(() => {
|
||||
const groupVisibility = Object.keys(BODY_PARTS_GROUPS)
|
||||
.filter((k) => ['fingers'].includes(k))
|
||||
.reduce(
|
||||
(curr, key) => {
|
||||
const group = key as MountingResetGroup;
|
||||
curr[group] = assignedTrackers.some(
|
||||
({ tracker }) =>
|
||||
tracker.info?.bodyPart &&
|
||||
BODY_PARTS_GROUPS[group].includes(tracker.info?.bodyPart)
|
||||
);
|
||||
|
||||
return curr;
|
||||
},
|
||||
{} as Record<MountingResetGroup, boolean>
|
||||
);
|
||||
|
||||
return {
|
||||
groupVisibility,
|
||||
visibleGroups: Object.values(groupVisibility).filter((v) => v).length,
|
||||
};
|
||||
}, [assignedTrackers]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="flex mobile:py-2 flex-col items-center bg-background-70 rounded-t-lg h-[var(--toolbar-h)] mr-2 xs:mt-2 mobile:mr-0">
|
||||
<div className="px-3 py-3 w-full flex gap-4 justify-center md:justify-start">
|
||||
<div className="flex-col flex gap-1 md:w-[60%]">
|
||||
<Typography variant="section-title" id="toolbar-drift_reset" />
|
||||
<div className="gap-2 md:h-[72px] h-[62px] w-full grid-cols-2 grid">
|
||||
<BasicResetButton type={ResetType.Full} />
|
||||
<BasicResetButton type={ResetType.Yaw} />
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex-col flex gap-1 md:flex-grow">
|
||||
<Typography
|
||||
variant="section-title"
|
||||
id="toolbar-mounting_calibration"
|
||||
/>
|
||||
<div
|
||||
className="gap-2 md:h-[72px] h-[62px] w-full md:grid flex"
|
||||
style={{
|
||||
gridTemplateColumns: `repeat(calc(2 + ${visibleGroups}), 1fr)`,
|
||||
}}
|
||||
>
|
||||
<BasicResetButton
|
||||
type={ResetType.Mounting}
|
||||
group={'default'}
|
||||
customName="toolbar-mounting_calibration-default"
|
||||
/>
|
||||
<BasicResetButton
|
||||
type={ResetType.Mounting}
|
||||
group={'feet'}
|
||||
customName="toolbar-mounting_calibration-feet"
|
||||
/>
|
||||
{groupVisibility['fingers'] && (
|
||||
<BasicResetButton
|
||||
type={ResetType.Mounting}
|
||||
group={'fingers'}
|
||||
customName="toolbar-mounting_calibration-fingers"
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,86 +0,0 @@
|
||||
import { Localized, useLocalization } from '@fluent/react';
|
||||
import { BVHButton } from './BVHButton';
|
||||
import { TrackingPauseButton } from './TrackingPauseButton';
|
||||
import { ResetButton } from './home/ResetButton';
|
||||
import { OverlayWidget } from './widgets/OverlayWidget';
|
||||
import { TipBox } from './commons/TipBox';
|
||||
import { DeveloperModeWidget } from './widgets/DeveloperModeWidget';
|
||||
import { useConfig } from '@/hooks/config';
|
||||
import { ResetType, StatusData } from 'solarxr-protocol';
|
||||
import { useMemo } from 'react';
|
||||
import { parseStatusToLocale, useStatusContext } from '@/hooks/status-system';
|
||||
import { ClearMountingButton } from './ClearMountingButton';
|
||||
import { ToggleableSkeletonVisualizerWidget } from './widgets/SkeletonVisualizerWidget';
|
||||
import { useAtomValue } from 'jotai';
|
||||
import { flatTrackersAtom } from '@/store/app-store';
|
||||
import { A } from './commons/A';
|
||||
|
||||
function UnprioritizedStatuses() {
|
||||
const { l10n } = useLocalization();
|
||||
const trackers = useAtomValue(flatTrackersAtom);
|
||||
const { statuses } = useStatusContext();
|
||||
const unprioritizedStatuses = useMemo(
|
||||
() => Object.values(statuses).filter((status) => !status.prioritized),
|
||||
[statuses]
|
||||
);
|
||||
|
||||
return (
|
||||
<div className="w-full flex flex-col gap-3 mb-2">
|
||||
{unprioritizedStatuses.map((status) => (
|
||||
<Localized
|
||||
id={`status_system-${StatusData[status.dataType]}`}
|
||||
vars={parseStatusToLocale(status, trackers, l10n)}
|
||||
key={status.id}
|
||||
elems={{
|
||||
PublicFixLink: (
|
||||
<A href="https://docs.slimevr.dev/common-issues.html#network-profile-is-currently-set-to-public" />
|
||||
),
|
||||
}}
|
||||
>
|
||||
<TipBox whitespace={false} hideIcon>
|
||||
{`Warning, you should fix ${StatusData[status.dataType]}`}
|
||||
</TipBox>
|
||||
</Localized>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export function WidgetsComponent() {
|
||||
const { config } = useConfig();
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="grid grid-cols-2 gap-2 w-full [&>*:nth-child(odd):last-of-type]:col-span-full">
|
||||
<ResetButton type={ResetType.Yaw} size="big" />
|
||||
<ResetButton type={ResetType.Full} size="big" />
|
||||
<ResetButton type={ResetType.Mounting} size="big" />
|
||||
<ResetButton
|
||||
type={ResetType.Mounting}
|
||||
size="big"
|
||||
bodyPartsToReset="feet"
|
||||
/>
|
||||
<ResetButton
|
||||
type={ResetType.Mounting}
|
||||
size="big"
|
||||
bodyPartsToReset="fingers"
|
||||
/>
|
||||
<ClearMountingButton />
|
||||
{!window.__ANDROID__?.isThere() && <BVHButton />}
|
||||
<TrackingPauseButton />
|
||||
</div>
|
||||
<div className="w-full">
|
||||
<OverlayWidget />
|
||||
</div>
|
||||
<div className="mb-2">
|
||||
<ToggleableSkeletonVisualizerWidget height={400} />
|
||||
</div>
|
||||
<UnprioritizedStatuses />
|
||||
{config?.debug && (
|
||||
<div className="w-full">
|
||||
<DeveloperModeWidget />
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,14 +1,23 @@
|
||||
import { openUrl } from '@tauri-apps/plugin-opener';
|
||||
import { open } from '@tauri-apps/plugin-shell';
|
||||
import classNames from 'classnames';
|
||||
import { ReactNode } from 'react';
|
||||
|
||||
export function A({ href, children }: { href?: string; children?: ReactNode }) {
|
||||
export function A({
|
||||
href,
|
||||
children,
|
||||
className,
|
||||
}: {
|
||||
href?: string;
|
||||
children?: ReactNode;
|
||||
className?: string;
|
||||
}) {
|
||||
return (
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
onClick={() =>
|
||||
href && openUrl(href).catch(() => window.open(href, '_blank'))
|
||||
href && open(href).catch(() => window.open(href, '_blank'))
|
||||
}
|
||||
className="underline"
|
||||
className={classNames(className, 'underline', 'cursor-pointer')}
|
||||
>
|
||||
{children}
|
||||
</a>
|
||||
|
||||
@@ -12,7 +12,7 @@ export function ArrowLink({
|
||||
}: {
|
||||
to: string;
|
||||
children: ReactNode;
|
||||
state?: { SerialPort?: string };
|
||||
state?: any;
|
||||
direction?: 'left' | 'right';
|
||||
variant?: 'flat' | 'boxed' | 'boxed-2';
|
||||
}) {
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
import classNames from 'classnames';
|
||||
import {
|
||||
ReactNode,
|
||||
useEffect,
|
||||
useLayoutEffect,
|
||||
useMemo,
|
||||
useRef,
|
||||
useState,
|
||||
} from 'react';
|
||||
import { useEffect, useMemo, useRef, useState } from 'react';
|
||||
import { BodyPart, TrackerDataT } from 'solarxr-protocol';
|
||||
import { useTracker } from '@/hooks/tracker';
|
||||
import { PersonFrontIcon } from './PersonFrontIcon';
|
||||
@@ -107,23 +100,18 @@ function Dot({
|
||||
}
|
||||
|
||||
export function BodyDisplay({
|
||||
leftControls,
|
||||
rightControls,
|
||||
trackers,
|
||||
width = 228,
|
||||
dotsSize = 20,
|
||||
variant = 'tracker-select',
|
||||
hideUnassigned = false,
|
||||
}: {
|
||||
leftControls?: ReactNode;
|
||||
rightControls?: ReactNode;
|
||||
width?: number;
|
||||
dotsSize?: number;
|
||||
variant?: 'dots' | 'tracker-select';
|
||||
trackers: FlatDeviceTracker[];
|
||||
hideUnassigned: boolean;
|
||||
}) {
|
||||
const personRef = useRef<HTMLDivElement | null>(null);
|
||||
const resizeObserverRef = useRef<ResizeObserver>(
|
||||
new ResizeObserver(() => updateSlots())
|
||||
);
|
||||
const [slotsButtonsPos, setSlotsButtonPos] = useState<SlotDot[]>([]);
|
||||
|
||||
const getSlotsPos = () => {
|
||||
@@ -145,7 +133,7 @@ export function BodyDisplay({
|
||||
};
|
||||
};
|
||||
|
||||
useLayoutEffect(() => {
|
||||
const updateSlots = () => {
|
||||
if (!personRef.current) return;
|
||||
|
||||
const slotsPos = getSlotsPos();
|
||||
@@ -162,7 +150,20 @@ export function BodyDisplay({
|
||||
};
|
||||
});
|
||||
setSlotsButtonPos(slots);
|
||||
}, [leftControls, rightControls, variant]);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (!personRef.current) return;
|
||||
|
||||
resizeObserverRef.current.observe(personRef.current);
|
||||
|
||||
updateSlots();
|
||||
|
||||
return () => {
|
||||
if (!personRef.current) return;
|
||||
resizeObserverRef.current.unobserve(personRef.current);
|
||||
};
|
||||
}, []);
|
||||
|
||||
const trackerPartGrouped = useMemo(
|
||||
() =>
|
||||
@@ -179,15 +180,12 @@ export function BodyDisplay({
|
||||
);
|
||||
|
||||
return (
|
||||
<div className="flex">
|
||||
<div className="flex w-full h-full">
|
||||
<div
|
||||
ref={personRef}
|
||||
className={classNames(
|
||||
'relative w-full flex justify-center',
|
||||
variant === 'tracker-select' && 'mx-10'
|
||||
)}
|
||||
className={classNames('relative w-full h-full flex justify-center')}
|
||||
>
|
||||
<PersonFrontIcon width={width} />
|
||||
<PersonFrontIcon />
|
||||
{slotsButtonsPos.map((dotData) => (
|
||||
<Dot
|
||||
{...dotData}
|
||||
|
||||
@@ -9,7 +9,6 @@ export function BodyInteractions({
|
||||
rightControls,
|
||||
highlightedRoles,
|
||||
assignedRoles,
|
||||
width = 248,
|
||||
dotsSize = 15,
|
||||
variant = 'tracker-select',
|
||||
mirror,
|
||||
@@ -99,11 +98,11 @@ export function BodyInteractions({
|
||||
const slotsPos = getSlotsPos();
|
||||
const controlsPos = getControlsPos();
|
||||
|
||||
canvasRefRef.current.width = canvasRefRef.current.offsetWidth;
|
||||
canvasRefRef.current.height = canvasRefRef.current.offsetHeight;
|
||||
canvasRefRef.current.width = canvasRefRef.current.clientWidth;
|
||||
canvasRefRef.current.height = canvasRefRef.current.clientHeight;
|
||||
|
||||
ctx.strokeStyle = '#608AAB';
|
||||
ctx.lineWidth = 1;
|
||||
ctx.lineWidth = 2;
|
||||
|
||||
const canvasBox = canvasRefRef.current.getBoundingClientRect();
|
||||
const personBox = personRef.current.getBoundingClientRect();
|
||||
@@ -192,30 +191,27 @@ export function BodyInteractions({
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div className="relative">
|
||||
<div className="relative w-full h-full">
|
||||
<canvas
|
||||
ref={canvasRefRef}
|
||||
className="absolute w-full h-full top-0 z-10"
|
||||
width="100%"
|
||||
height="100%"
|
||||
/>
|
||||
<div className="flex">
|
||||
<div className="flex w-full h-full gap-5">
|
||||
<div ref={leftContainerRef} className="z-10">
|
||||
{leftControls}
|
||||
</div>
|
||||
<div
|
||||
ref={personRef}
|
||||
className={classNames(
|
||||
'relative w-full flex justify-center',
|
||||
variant === 'tracker-select' && 'mobile:mx-0 xs:mx-10'
|
||||
)}
|
||||
className={classNames('relative flex justify-center flex-grow')}
|
||||
>
|
||||
<PersonFrontIcon width={width} mirror={mirror} />
|
||||
<PersonFrontIcon mirror={mirror} />
|
||||
{slotsButtonsPos.map(
|
||||
({ top, left, height, width, id, hidden, buttonOffset }) => (
|
||||
<div
|
||||
key={id}
|
||||
className={classNames('absolute z-10', hidden && 'hidden')}
|
||||
className={classNames('absolute z-10')}
|
||||
onClick={() => onSelectRole((BodyPart as any)[id])}
|
||||
style={{
|
||||
top: top + height / 2 - dotsSize / 2 + buttonOffset.top,
|
||||
@@ -223,31 +219,33 @@ export function BodyInteractions({
|
||||
}}
|
||||
>
|
||||
<div className="relative">
|
||||
{highlightedRoles.includes((BodyPart as any)[id]) && (
|
||||
<div
|
||||
className={classNames(
|
||||
'absolute rounded-full outline outline-2 outline-status-warning',
|
||||
'transition-opacity opacity-100 animate-ping'
|
||||
)}
|
||||
style={{
|
||||
width: dotsSize,
|
||||
height: dotsSize,
|
||||
animationDuration: '1.5s',
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
{!hidden &&
|
||||
highlightedRoles.includes((BodyPart as any)[id]) && (
|
||||
<div
|
||||
className={classNames(
|
||||
'absolute rounded-full bg-status-warning',
|
||||
'transition-opacity opacity-100 animate-ping'
|
||||
)}
|
||||
style={{
|
||||
width: dotsSize,
|
||||
height: dotsSize,
|
||||
animationDuration: '1.5s',
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
<div
|
||||
className={classNames(
|
||||
'absolute rounded-full outline outline-2 outline-background-20 transition-opacity',
|
||||
'absolute rounded-full outline-background-90 transition-opacity',
|
||||
'hover:bg-accent-background-40',
|
||||
(assignedRoles.includes((BodyPart as any)[id]) &&
|
||||
'bg-background-70') ||
|
||||
'bg-background-10',
|
||||
(hidden && 'opacity-0') || 'opacity-100'
|
||||
assignedRoles.includes((BodyPart as any)[id])
|
||||
? 'bg-status-success'
|
||||
: 'bg-background-10',
|
||||
hidden ? 'opacity-0' : 'opacity-100'
|
||||
)}
|
||||
style={{
|
||||
width: dotsSize,
|
||||
height: dotsSize,
|
||||
boxShadow: '0px 0px 4px black',
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -2,6 +2,7 @@ import classNames from 'classnames';
|
||||
import React, { ReactNode, useMemo } from 'react';
|
||||
import { NavLink } from 'react-router-dom';
|
||||
import { LoaderIcon, SlimeState } from './icon/LoaderIcon';
|
||||
import { Localized, LocalizedProps } from '@fluent/react';
|
||||
|
||||
function ButtonContent({
|
||||
loading,
|
||||
@@ -17,11 +18,11 @@ function ButtonContent({
|
||||
<div
|
||||
className={classNames(
|
||||
{ 'opacity-0': loading },
|
||||
'flex flex-row gap-2 justify-center'
|
||||
'flex flex-row gap-2 justify-center items-center'
|
||||
)}
|
||||
>
|
||||
{icon && (
|
||||
<div className="flex justify-center items-center fill-background-10 w-5 h-5">
|
||||
<div className="flex justify-center items-center fill-background-10 w-5">
|
||||
{icon}
|
||||
</div>
|
||||
)}
|
||||
@@ -44,7 +45,9 @@ export type ButtonProps = {
|
||||
loading?: boolean;
|
||||
rounded?: boolean;
|
||||
state?: any;
|
||||
} & React.ButtonHTMLAttributes<HTMLButtonElement>;
|
||||
id?: string;
|
||||
} & React.ButtonHTMLAttributes<HTMLButtonElement> &
|
||||
Omit<LocalizedProps, 'id'>;
|
||||
|
||||
export function Button({
|
||||
children,
|
||||
@@ -55,6 +58,10 @@ export function Button({
|
||||
state = {},
|
||||
icon,
|
||||
rounded = false,
|
||||
attrs,
|
||||
id,
|
||||
vars,
|
||||
elems,
|
||||
...props
|
||||
}: ButtonProps) {
|
||||
const classes = useMemo(() => {
|
||||
@@ -95,22 +102,40 @@ export function Button({
|
||||
);
|
||||
}, [variant, disabled, rounded, props.className]);
|
||||
|
||||
return to ? (
|
||||
const content = to ? (
|
||||
<NavLink
|
||||
to={to}
|
||||
className={classes}
|
||||
state={state}
|
||||
onClick={(ev) => disabled && ev.preventDefault()}
|
||||
onClick={(ev) => {
|
||||
if (disabled) {
|
||||
ev.preventDefault();
|
||||
return;
|
||||
}
|
||||
if (props.onClick) return props.onClick(ev as any);
|
||||
}}
|
||||
>
|
||||
<ButtonContent icon={icon} loading={loading}>
|
||||
{children}
|
||||
{id && (
|
||||
<Localized attrs={attrs} vars={vars} elems={elems} id={id}>
|
||||
{children}
|
||||
</Localized>
|
||||
)}
|
||||
{!id && children}
|
||||
</ButtonContent>
|
||||
</NavLink>
|
||||
) : (
|
||||
<button type="button" {...props} className={classes} disabled={disabled}>
|
||||
<ButtonContent icon={icon} loading={loading}>
|
||||
{children}
|
||||
{id && (
|
||||
<Localized attrs={attrs} vars={vars} elems={elems} id={id}>
|
||||
{children}
|
||||
</Localized>
|
||||
)}
|
||||
{!id && children}
|
||||
</ButtonContent>
|
||||
</button>
|
||||
);
|
||||
|
||||
return content;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import { forwardRef, useMemo } from 'react';
|
||||
import { Control, Controller } from 'react-hook-form';
|
||||
|
||||
export const CHECKBOX_CLASSES = classNames(
|
||||
'bg-background-50 border-background-50 rounded-md w-5 h-5 text-accent-background-30 focus:border-accent-background-40 focus:ring-transparent focus:ring-offset-transparent focus:outline-transparent'
|
||||
'bg-background-50 border-background-50 cursor-pointer rounded-md w-5 h-5 text-accent-background-30 focus:border-accent-background-40 focus:ring-transparent focus:ring-offset-transparent focus:outline-transparent'
|
||||
);
|
||||
|
||||
export const CheckboxInternal = forwardRef<
|
||||
@@ -34,7 +34,9 @@ export const CheckboxInternal = forwardRef<
|
||||
const classes = useMemo(() => {
|
||||
const vriantsMap = {
|
||||
checkbox: {
|
||||
checkbox: CHECKBOX_CLASSES,
|
||||
checkbox: classNames(CHECKBOX_CLASSES, {
|
||||
'brightness-50 hover:cursor-not-allowed': disabled,
|
||||
}),
|
||||
toggle: '',
|
||||
pin: '',
|
||||
},
|
||||
@@ -47,7 +49,7 @@ export const CheckboxInternal = forwardRef<
|
||||
},
|
||||
};
|
||||
return vriantsMap[variant];
|
||||
}, [variant]);
|
||||
}, [variant, disabled]);
|
||||
|
||||
return (
|
||||
<div
|
||||
|
||||
86
gui/src/components/commons/FirmwareIcon.tsx
Normal file
@@ -0,0 +1,86 @@
|
||||
import {
|
||||
DeviceDataT,
|
||||
TrackerDataT,
|
||||
TrackerStatus as TrackerStatusEnum,
|
||||
} from 'solarxr-protocol';
|
||||
import { Typography } from './Typography';
|
||||
import classNames from 'classnames';
|
||||
import { DownloadIcon } from './icon/DownloadIcon';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { useAppContext } from '@/hooks/app';
|
||||
import { Tooltip } from './Tooltip';
|
||||
import { Localized } from '@fluent/react';
|
||||
import { checkForUpdate } from '@/hooks/firmware-update';
|
||||
|
||||
function UpdateIcon({
|
||||
showUpdate,
|
||||
}: {
|
||||
showUpdate:
|
||||
| 'can-update'
|
||||
| 'low-battery'
|
||||
| 'updated'
|
||||
| 'unavailable'
|
||||
| 'blocked';
|
||||
}) {
|
||||
const content = (
|
||||
<div className="relative">
|
||||
<div
|
||||
className={classNames(
|
||||
'absolute rounded-full h-6 w-6 left-1 top-1 bg-accent-background-10 animate-[ping_2s_linear_3]',
|
||||
showUpdate !== 'can-update' && 'hidden'
|
||||
)}
|
||||
/>
|
||||
<div
|
||||
className={classNames(
|
||||
'absolute rounded-full h-8 w-8 justify-center flex items-center',
|
||||
showUpdate === 'low-battery'
|
||||
? 'cursor-not-allowed bg-background-80 outline-2 outline-status-critical outline'
|
||||
: 'hover:bg-background-40 hover:cursor-pointer bg-background-50'
|
||||
)}
|
||||
>
|
||||
<DownloadIcon width={15} />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
return showUpdate !== 'can-update' ? (
|
||||
<Tooltip
|
||||
preferedDirection="top"
|
||||
content={
|
||||
<Localized id={'tracker-settings-update-low-battery'}>
|
||||
<Typography />
|
||||
</Localized>
|
||||
}
|
||||
>
|
||||
<div className="absolute right-5 -top-2.5">{content}</div>
|
||||
</Tooltip>
|
||||
) : (
|
||||
<Link to="/firmware-update" className="absolute right-5 -top-2.5">
|
||||
{content}
|
||||
</Link>
|
||||
);
|
||||
}
|
||||
|
||||
export function FirmwareIcon({
|
||||
tracker,
|
||||
device,
|
||||
}: {
|
||||
tracker: TrackerDataT;
|
||||
device?: DeviceDataT;
|
||||
}) {
|
||||
const { currentFirmwareRelease } = useAppContext();
|
||||
|
||||
const showUpdate =
|
||||
tracker.status !== TrackerStatusEnum.DISCONNECTED &&
|
||||
currentFirmwareRelease &&
|
||||
device &&
|
||||
checkForUpdate(currentFirmwareRelease, device);
|
||||
|
||||
return (
|
||||
<div>
|
||||
{showUpdate &&
|
||||
showUpdate !== 'unavailable' &&
|
||||
showUpdate !== 'updated' && <UpdateIcon showUpdate={'can-update'} />}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -21,165 +21,154 @@ export const SIDES = [
|
||||
},
|
||||
];
|
||||
|
||||
export function PersonFrontIcon({
|
||||
width,
|
||||
mirror = true,
|
||||
}: {
|
||||
width?: number;
|
||||
mirror?: boolean;
|
||||
}) {
|
||||
export function PersonFrontIcon({ mirror = true }: { mirror?: boolean }) {
|
||||
const CIRCLE_RADIUS = 0.0001;
|
||||
const left = +!mirror;
|
||||
const right = +mirror;
|
||||
|
||||
return (
|
||||
<svg
|
||||
width={width || 240}
|
||||
viewBox="0 0 165 392"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<image height={'105%'} x="8.5%" href="/images/front-standing-pose.webp" />
|
||||
{/* <path d="M84.53 224.074C83.953 230.874 88.569 266.874 90.951 280.984C92.085 287.671 95.195 298.565 94.076 304.349C92.476 312.411 92.017 322.843 92.896 328.918C93.451 332.607 95.196 349.618 92.696 355.845C91.389 359.108 88.996 375.832 88.996 375.832C82.756 391.587 86.278 390.812 86.278 390.812C88.21 393.183 91.519 390.998 91.519 390.998C92.1549 391.464 92.9388 391.682 93.7241 391.612C94.5094 391.542 95.2421 391.188 95.785 390.616C97.949 392.407 100.471 390.396 100.471 390.396C103.189 391.807 105.71 389.205 105.71 389.205C107.271 389.991 107.653 388.998 107.653 388.998C112.337 388.698 105.039 373.706 105.039 373.706C103.291 360.242 106.773 352.748 106.773 352.748C118.178 318.926 118.758 309.948 114.199 297.204C112.915 293.524 112.59 292.067 113.181 290.47C114.547 286.783 113.551 271.953 115.217 266.064C118.431 254.706 121.602 225.903 123.254 212.464C125.475 194.364 115.388 170.088 115.388 170.088C113.179 160.21 116.418 125.016 116.418 125.016C120.941 132.054 120.768 144.477 120.768 144.477C120.05 157.506 131.294 177.42 131.294 177.42C136.694 185.649 138.742 193.456 138.742 194.036C138.742 196.407 138.223 202.145 138.223 202.145L138.43 207.145C138.803 209.721 139.034 212.316 139.123 214.918C138.28 227.953 140.35 225.501 140.35 225.501C142.098 225.501 144.018 215.011 144.018 215.011C144.018 217.711 143.357 225.811 144.818 228.869C146.564 232.512 147.848 228.244 147.871 227.387C148.333 210.787 149.33 215.138 149.33 215.138C150.301 228.602 151.494 231.644 153.63 230.591C155.25 229.818 153.769 214.433 153.769 214.433C156.544 223.572 158.649 225.027 158.649 225.027C163.229 228.243 160.397 219.361 159.76 217.602C156.371 208.256 156.267 205.017 156.267 205.017C160.501 213.417 163.692 213.104 163.692 213.104C167.822 211.786 160.083 199.894 155.548 194.197C153.234 191.297 150.248 187.408 149.384 185.097C147.973 181.188 146.907 168.62 146.907 168.62C146.48 153.79 142.813 147.348 142.813 147.348C136.544 137.314 135.365 118.598 135.365 118.598L135.09 87C132.89 65.445 117.01 65.29 117.01 65.29C100.957 62.9 98.723 57.714 98.723 57.714C95.323 52.821 97.266 43.44 97.266 43.44C100.087 41.145 101.175 35.053 101.175 35.053C105.859 31.461 105.63 26.205 103.466 26.262C101.73 26.308 102.123 24.87 102.123 24.87C105.052 1.208 84.046 0 84.046 0H80.836C80.836 0 59.821 1.208 62.746 24.864C62.746 24.864 63.139 26.304 61.388 26.256C59.23 26.199 59.029 31.456 63.696 35.047C63.696 35.047 64.783 41.137 67.605 43.434C67.605 43.434 69.548 52.814 66.148 57.708C66.148 57.708 63.922 62.894 47.861 65.284C47.861 65.284 31.952 65.44 29.788 86.994L29.488 118.594C29.488 118.594 28.331 137.311 22.038 147.344C22.038 147.344 18.389 153.787 17.967 168.616C17.967 168.616 16.898 181.184 15.492 185.093C14.635 187.393 11.653 191.276 9.32001 194.193C4.74601 199.878 -2.94199 211.745 1.17101 213.1C1.17101 213.1 4.37901 213.412 8.59601 205.013C8.59601 205.013 8.50901 208.229 5.12501 217.598C4.46001 219.334 1.63201 228.217 6.21301 225.024C6.21301 225.024 8.33501 223.567 11.093 214.43C11.093 214.43 9.61301 229.815 11.26 230.588C13.412 231.642 14.586 228.599 15.56 215.135C15.56 215.135 16.56 210.787 17.017 227.384C17.04 228.241 18.295 232.509 20.049 228.866C21.529 225.811 20.864 217.727 20.864 215.008C20.864 215.008 22.764 225.498 24.536 225.498C24.536 225.498 26.624 227.95 25.767 214.915C25.628 212.786 26.375 208.415 26.467 207.142L26.667 202.142C26.667 202.142 26.146 196.417 26.146 194.033C26.146 193.442 28.194 185.646 33.594 177.417C33.594 177.417 44.826 157.494 44.103 144.474C44.103 144.474 43.947 132.051 48.47 125.013C48.47 125.013 51.68 160.205 49.505 170.085C49.505 170.085 39.405 194.358 41.629 212.461C43.27 225.937 46.435 254.702 49.657 266.061C51.34 271.938 50.345 286.761 51.693 290.467C52.301 292.076 51.982 293.558 50.675 297.201C46.141 309.947 46.718 318.925 58.123 352.745C58.123 352.745 61.633 360.239 59.859 373.703C59.859 373.703 52.572 388.695 57.239 388.995C57.239 388.995 57.604 389.988 59.182 389.202C59.182 389.202 61.703 391.802 64.427 390.393C64.427 390.393 66.95 392.407 69.106 390.613C69.6451 391.185 70.3751 391.54 71.158 391.61C71.9409 391.681 72.7225 391.462 73.355 390.995C73.355 390.995 76.664 393.227 78.63 390.809C78.63 390.809 82.123 391.584 75.904 375.829C75.904 375.829 73.522 359.129 72.209 355.842C69.709 349.621 71.474 332.57 72.009 328.915C72.87 322.806 72.409 312.398 70.835 304.346C69.684 298.575 72.801 287.679 73.952 280.981C76.317 266.881 80.952 230.881 80.373 224.071L82.288 224.743C83.0863 224.756 83.8692 224.522 84.53 224.074Z" /> */}
|
||||
<svg width="100%" viewBox="0 0 163 392" xmlns="http://www.w3.org/2000/svg">
|
||||
<image className="h-full w-full" href="/images/assignment-pose.webp" />
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="82"
|
||||
cy="114"
|
||||
cy="90"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.UPPER_CHEST]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="82"
|
||||
cy="130"
|
||||
cy="105"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.CHEST]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="82"
|
||||
cy="191"
|
||||
cy="181"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.HIP]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="82"
|
||||
cy="165"
|
||||
cy="155"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.WAIST]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="81.5"
|
||||
cy="91"
|
||||
cy="80"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.NECK]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="81.5"
|
||||
cy="50"
|
||||
cy="35"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.HEAD]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="128"
|
||||
cy="218"
|
||||
cx="149"
|
||||
cy="207"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[right].hand]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="115"
|
||||
cx="134"
|
||||
cy="140"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[right].upperArm]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="105"
|
||||
cy="105"
|
||||
cx="120"
|
||||
cy="90"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[right].shoulder]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="125"
|
||||
cy="194"
|
||||
cx="144"
|
||||
cy="185"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[right].lowerArm]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="97.004"
|
||||
cy="360"
|
||||
cx="112"
|
||||
cy="355"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[right].lowerLeg]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="97"
|
||||
cy="250"
|
||||
cx="101"
|
||||
cy="267"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[right].upperLeg]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="97.004"
|
||||
cy="380"
|
||||
cx="102"
|
||||
cy="372"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[right].foot]}
|
||||
/>
|
||||
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="36"
|
||||
cy="218"
|
||||
cx="15"
|
||||
cy="207"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[left].hand]}
|
||||
/>
|
||||
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="50"
|
||||
cx="30"
|
||||
cy="140"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[left].upperArm]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="58"
|
||||
cy="105"
|
||||
cx="44"
|
||||
cy="90"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[left].shoulder]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="39"
|
||||
cy="194"
|
||||
cx="20"
|
||||
cy="185"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[left].lowerArm]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="67.004"
|
||||
cy="360"
|
||||
cx="52"
|
||||
cy="355"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[left].lowerLeg]}
|
||||
/>
|
||||
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="67"
|
||||
cy="250"
|
||||
cx="63"
|
||||
cy="267"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[left].upperLeg]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="67.004"
|
||||
cy="380"
|
||||
cx="62"
|
||||
cy="372"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[SIDES[left].foot]}
|
||||
/>
|
||||
|
||||
@@ -53,8 +53,9 @@ export function Bar({
|
||||
}) {
|
||||
const value = useMemo(
|
||||
() => Math.min(Math.max((progress * parts) / 1 - index, 0), 1),
|
||||
[index, progress]
|
||||
[index, progress, parts]
|
||||
);
|
||||
|
||||
return (
|
||||
<div
|
||||
className={classNames(
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { useBreakpoint } from '@/hooks/breakpoint';
|
||||
import classNames from 'classnames';
|
||||
import {
|
||||
ReactNode,
|
||||
@@ -8,17 +7,23 @@ import {
|
||||
useLayoutEffect,
|
||||
MutableRefObject,
|
||||
useMemo,
|
||||
createElement,
|
||||
} from 'react';
|
||||
import { createPortal } from 'react-dom';
|
||||
import { Typography } from './Typography';
|
||||
import { CloseIcon } from './icon/CloseIcon';
|
||||
|
||||
type Direction = 'top' | 'left' | 'right' | 'bottom';
|
||||
interface TooltipProps {
|
||||
content: ReactNode;
|
||||
children: ReactElement;
|
||||
preferedDirection: 'top' | 'left' | 'right' | 'bottom';
|
||||
preferedDirection: Direction;
|
||||
blockedDirections?: Direction[];
|
||||
mode?: 'corner' | 'center';
|
||||
variant?: 'auto' | 'drawer' | 'floating';
|
||||
disabled?: boolean;
|
||||
tag?: string;
|
||||
spacing?: number;
|
||||
}
|
||||
|
||||
interface TooltipPos {
|
||||
@@ -77,12 +82,12 @@ const clamp = (v: number, min: number, max: number) =>
|
||||
|
||||
const getFloatingTooltipPosition = (
|
||||
preferedDirection: TooltipProps['preferedDirection'],
|
||||
blockedDirections: Direction[],
|
||||
mode: TooltipProps['mode'],
|
||||
childrenRect: DOMRect,
|
||||
tooltipRect: DOMRect
|
||||
tooltipRect: DOMRect,
|
||||
spacing: number
|
||||
) => {
|
||||
const spacing = 10;
|
||||
|
||||
const getPosition = (
|
||||
direction: TooltipProps['preferedDirection']
|
||||
): TooltipPos => {
|
||||
@@ -135,9 +140,10 @@ const getFloatingTooltipPosition = (
|
||||
const pos = getPosition(preferedDirection);
|
||||
if (isNotInside({ ...pos, height: tooltipRect.height }, windowRect)) {
|
||||
const [firstPos] = ['left', 'top', 'right', 'bottom']
|
||||
.filter((dir) => !blockedDirections.includes(dir as Direction))
|
||||
.map((dir) => ({
|
||||
dir,
|
||||
area: getPosition(dir as TooltipProps['preferedDirection']),
|
||||
area: getPosition(dir as Direction),
|
||||
}))
|
||||
.toSorted(
|
||||
(a, b) =>
|
||||
@@ -226,12 +232,17 @@ const getFloatingTooltipPosition = (
|
||||
export function FloatingTooltip({
|
||||
childRef,
|
||||
preferedDirection,
|
||||
blockedDirections = [],
|
||||
mode,
|
||||
children,
|
||||
spacing,
|
||||
}: {
|
||||
childRef: MutableRefObject<HTMLDivElement | null>;
|
||||
childRef: MutableRefObject<HTMLElement | null>;
|
||||
children: ReactNode;
|
||||
} & Pick<TooltipProps, 'mode' | 'preferedDirection'>) {
|
||||
} & Pick<
|
||||
TooltipProps,
|
||||
'mode' | 'preferedDirection' | 'blockedDirections' | 'spacing'
|
||||
>) {
|
||||
const tooltipRef = useRef<HTMLDivElement | null>(null);
|
||||
const [tooltipStyle, setTooltipStyle] = useState<TooltipPos | undefined>();
|
||||
|
||||
@@ -245,9 +256,11 @@ export function FloatingTooltip({
|
||||
setTooltipStyle(
|
||||
getFloatingTooltipPosition(
|
||||
preferedDirection,
|
||||
blockedDirections,
|
||||
mode,
|
||||
childrenRect,
|
||||
tooltipRect
|
||||
tooltipRect,
|
||||
spacing ?? 20
|
||||
)
|
||||
);
|
||||
};
|
||||
@@ -314,7 +327,7 @@ export function DrawerTooltip({
|
||||
childRef,
|
||||
}: {
|
||||
children: ReactNode;
|
||||
childRef: MutableRefObject<HTMLDivElement | null>;
|
||||
childRef: MutableRefObject<HTMLElement | null>;
|
||||
}) {
|
||||
const touchTimestamp = useRef<number>(0);
|
||||
const touchTimeout = useRef<number>(0);
|
||||
@@ -377,17 +390,12 @@ export function DrawerTooltip({
|
||||
if (childRef.current && childRef.current.children[0]) {
|
||||
const elem = childRef.current.children[0] as HTMLElement;
|
||||
|
||||
elem.addEventListener('mousedown', touchStart); // for debug on desktop
|
||||
elem.addEventListener('mouseup', touchEnd); // for debug on desktop
|
||||
elem.addEventListener('scroll', scroll);
|
||||
|
||||
elem.addEventListener('click', touchEnd);
|
||||
elem.addEventListener('touchstart', touchStart);
|
||||
elem.addEventListener('touchend', touchEnd);
|
||||
|
||||
return () => {
|
||||
elem.removeEventListener('mousedown', touchStart); // for debug on desktop
|
||||
elem.removeEventListener('mouseup', touchEnd); // for debug on desktop
|
||||
elem.removeEventListener('scroll', scroll);
|
||||
|
||||
elem.removeEventListener('touchstart', touchStart);
|
||||
@@ -396,6 +404,7 @@ export function DrawerTooltip({
|
||||
};
|
||||
}
|
||||
}, []);
|
||||
// FIXME: Completely broken not sure why. Will be solved when tooltips on mobile actually work
|
||||
|
||||
return (
|
||||
<>
|
||||
@@ -429,7 +438,7 @@ export function DrawerTooltip({
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
className="p-2 overflow-y-auto"
|
||||
className="p-4 overflow-y-auto"
|
||||
style={{ maxHeight: 'calc(100vh - 49px - 44px)' }}
|
||||
>
|
||||
{children}
|
||||
@@ -444,33 +453,53 @@ export function Tooltip({
|
||||
content,
|
||||
children,
|
||||
preferedDirection,
|
||||
blockedDirections = [],
|
||||
mode = 'center',
|
||||
variant = 'auto',
|
||||
disabled = false,
|
||||
tag = 'div',
|
||||
spacing = 10,
|
||||
}: TooltipProps) {
|
||||
const childRef = useRef<HTMLDivElement | null>(null);
|
||||
const { isMobile } = useBreakpoint('mobile');
|
||||
const childRef = useRef<HTMLElement | null>(null);
|
||||
const isAndroid = window.__ANDROID__?.isThere();
|
||||
|
||||
const portal = createPortal(
|
||||
isMobile ? (
|
||||
let portal = null;
|
||||
if (variant === 'auto') {
|
||||
portal = isAndroid ? (
|
||||
<DrawerTooltip childRef={childRef}>{content}</DrawerTooltip>
|
||||
) : (
|
||||
<FloatingTooltip
|
||||
preferedDirection={preferedDirection}
|
||||
blockedDirections={blockedDirections}
|
||||
mode={mode}
|
||||
childRef={childRef}
|
||||
spacing={spacing}
|
||||
>
|
||||
{content}
|
||||
</FloatingTooltip>
|
||||
),
|
||||
document.body
|
||||
);
|
||||
);
|
||||
}
|
||||
|
||||
if (variant === 'drawer')
|
||||
portal = <DrawerTooltip childRef={childRef}>{content}</DrawerTooltip>;
|
||||
|
||||
if (variant === 'floating')
|
||||
portal = (
|
||||
<FloatingTooltip
|
||||
blockedDirections={blockedDirections}
|
||||
preferedDirection={preferedDirection}
|
||||
mode={mode}
|
||||
childRef={childRef}
|
||||
spacing={spacing}
|
||||
>
|
||||
{content}
|
||||
</FloatingTooltip>
|
||||
);
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="contents" ref={childRef}>
|
||||
{children}
|
||||
</div>
|
||||
{!disabled && portal}
|
||||
{createElement(tag, { className: 'contents', ref: childRef }, children)}
|
||||
{!disabled && createPortal(portal, document.body)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { useConfig } from '@/hooks/config';
|
||||
import { Localized, LocalizedProps } from '@fluent/react';
|
||||
import classNames from 'classnames';
|
||||
import { createElement, ReactNode, useMemo } from 'react';
|
||||
|
||||
@@ -12,6 +13,10 @@ export function Typography({
|
||||
truncate = false,
|
||||
textAlign,
|
||||
sentryMask = false,
|
||||
id,
|
||||
attrs,
|
||||
elems,
|
||||
vars,
|
||||
}: {
|
||||
variant?:
|
||||
| 'main-title'
|
||||
@@ -39,7 +44,8 @@ export function Typography({
|
||||
| 'text-end';
|
||||
children?: ReactNode;
|
||||
sentryMask?: boolean;
|
||||
}) {
|
||||
id?: string;
|
||||
} & Omit<LocalizedProps, 'id'>) {
|
||||
const tag = useMemo(() => {
|
||||
const tags = {
|
||||
'main-title': 'h1',
|
||||
@@ -52,7 +58,7 @@ export function Typography({
|
||||
}, [variant]);
|
||||
const { config } = useConfig();
|
||||
|
||||
return createElement(
|
||||
const element = createElement(
|
||||
tag,
|
||||
{
|
||||
className: classNames([
|
||||
@@ -71,12 +77,22 @@ export function Typography({
|
||||
whitespace,
|
||||
textAlign,
|
||||
italic && 'italic',
|
||||
truncate && 'leading-3 text-ellipsis',
|
||||
truncate && 'leading-[1.2rem] text-ellipsis',
|
||||
truncate && (config?.textSize ?? 12) > 12 && 'line-clamp-1',
|
||||
truncate && (config?.textSize ?? 12) <= 12 && 'line-clamp-2',
|
||||
sentryMask && 'sentry-mask',
|
||||
]),
|
||||
},
|
||||
children || []
|
||||
children || id || []
|
||||
);
|
||||
|
||||
if (id) {
|
||||
return (
|
||||
<Localized id={id} attrs={attrs} elems={elems} vars={vars}>
|
||||
{element}
|
||||
</Localized>
|
||||
);
|
||||
}
|
||||
|
||||
return element;
|
||||
}
|
||||
|
||||
12
gui/src/components/commons/icon/ChecklistIcon.tsx
Normal file
@@ -0,0 +1,12 @@
|
||||
export function Checklist({ size = 24 }: { size?: number }) {
|
||||
return (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height={size}
|
||||
viewBox="0 -960 960 960"
|
||||
width={size}
|
||||
>
|
||||
<path d="M222-200 80-342l56-56 85 85 170-170 56 57-225 226Zm0-320L80-662l56-56 85 85 170-170 56 57-225 226Zm298 240v-80h360v80H520Zm0-320v-80h360v80H520Z" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
12
gui/src/components/commons/icon/ClearIcon.tsx
Normal file
@@ -0,0 +1,12 @@
|
||||
export function ClearIcon({ size = 24 }: { size?: number }) {
|
||||
return (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height={size}
|
||||
width={size}
|
||||
viewBox="0 -960 960 960"
|
||||
>
|
||||
<path d="M440-520h80v-280q0-17-11.5-28.5T480-840q-17 0-28.5 11.5T440-800v280ZM200-360h560v-80H200v80Zm-58 240h98v-80q0-17 11.5-28.5T280-240q17 0 28.5 11.5T320-200v80h120v-80q0-17 11.5-28.5T480-240q17 0 28.5 11.5T520-200v80h120v-80q0-17 11.5-28.5T680-240q17 0 28.5 11.5T720-200v80h98l-40-160H182l-40 160Zm676 80H142q-39 0-63-31t-14-69l55-220v-80q0-33 23.5-56.5T200-520h160v-280q0-50 35-85t85-35q50 0 85 35t35 85v280h160q33 0 56.5 23.5T840-440v80l55 220q13 38-11.5 69T818-40Zm-58-400H200h560Zm-240-80h-80 80Z" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
export function GearIcon() {
|
||||
export function GearIcon({ size = 20 }: { size?: number }) {
|
||||
return (
|
||||
<svg
|
||||
width="20"
|
||||
height="20"
|
||||
width={size}
|
||||
height={size}
|
||||
viewBox="0 0 14 13"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
|
||||
12
gui/src/components/commons/icon/HomeIcon.tsx
Normal file
@@ -0,0 +1,12 @@
|
||||
export function HomeIcon() {
|
||||
return (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height="24px"
|
||||
viewBox="0 -960 960 960"
|
||||
width="24px"
|
||||
>
|
||||
<path d="M160-120v-480l320-240 320 240v480H560v-280H400v280H160Z" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
12
gui/src/components/commons/icon/LayoutIcon.tsx
Normal file
@@ -0,0 +1,12 @@
|
||||
export function LayoutIcon({ size = 16 }: { size?: number }) {
|
||||
return (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width={size}
|
||||
height={size}
|
||||
viewBox="0 0 16 16"
|
||||
>
|
||||
<path d="M1 2a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2Zm8 9a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1v-3ZM1 8a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V8Zm8-6a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1V2Z" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
12
gui/src/components/commons/icon/SkiIcon.tsx
Normal file
@@ -0,0 +1,12 @@
|
||||
export function SkiIcon({ size = 24 }: { size?: number }) {
|
||||
return (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height={size}
|
||||
width={size}
|
||||
viewBox="0 -960 960 960"
|
||||
>
|
||||
<path d="M740-40q-26 0-50.5-4T642-56L80-261l20-57 276 101 69-178-143-149q-27-28-21.5-66.5T320-669l139-80q17-10 34.5-11.5T528-755q17 6 29.5 19t18.5 31l13 43q13 43 42.5 76t70.5 50l21-64 57 18-45 138q-74-12-131-58t-84-114l-101 58 121 138-89 230 124 45 84-257q14 5 28 9t29 7l-85 262 31 11q18 6 37.5 9.5T740-100q26 0 49.5-5t45.5-15l45 45q-32 17-67 26t-73 9Zm-80-660q-33 0-56.5-23.5T580-780q0-33 23.5-56.5T660-860q33 0 56.5 23.5T740-780q0 33-23.5 56.5T660-700Z" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
@@ -1,6 +1,11 @@
|
||||
export function USBIcon() {
|
||||
export function USBIcon({ size = 48 }: { size?: number }) {
|
||||
return (
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height={size}
|
||||
width={size}
|
||||
viewBox="0 0 48 48"
|
||||
>
|
||||
<path d="M24 44q-1.6 0-2.6-1t-1-2.6q0-1.1.55-2 .55-.9 1.55-1.45V31.4h-7.4q-1.2 0-2.1-.9-.9-.9-.9-2.1v-5.45q-1-.45-1.55-1.325T10 19.6q0-1.6 1-2.6t2.6-1q1.6 0 2.6 1t1 2.6q0 1.15-.55 2.025T15.1 22.95v5.45h7.4v-17h-4L24 3.95l5.5 7.45h-4v17h7.4v-5.2h-2.1V16H38v7.2h-2.1v5.2q0 1.2-.9 2.1-.9.9-2.1.9h-7.4v5.55q1 .55 1.55 1.5t.55 1.95q0 1.6-1 2.6T24 44Z" />
|
||||
</svg>
|
||||
);
|
||||
|
||||
@@ -2,10 +2,14 @@ import classNames from 'classnames';
|
||||
import { useMemo } from 'react';
|
||||
|
||||
export function WifiIcon({
|
||||
variant = 'progress',
|
||||
value,
|
||||
size = 16,
|
||||
disabled = false,
|
||||
}: {
|
||||
variant?: 'progress' | 'navbar';
|
||||
value: number | null;
|
||||
size?: number;
|
||||
disabled?: boolean;
|
||||
}) {
|
||||
const percent = useMemo(
|
||||
@@ -21,6 +25,8 @@ export function WifiIcon({
|
||||
const y = useMemo(() => (1 - percent) * 13, [percent]);
|
||||
|
||||
const col = useMemo(() => {
|
||||
if (variant === 'navbar') return 'fill-inherit';
|
||||
|
||||
const colorsMap: { [key: number]: string } = {
|
||||
0.4: 'fill-status-success',
|
||||
0.2: 'fill-status-warning',
|
||||
@@ -33,12 +39,12 @@ export function WifiIcon({
|
||||
return disabled
|
||||
? 'fill-background-40'
|
||||
: colorsMap[+val] || 'fill-background-10';
|
||||
}, [percent, disabled]);
|
||||
}, [percent, disabled, variant]);
|
||||
|
||||
return (
|
||||
<svg
|
||||
width="16"
|
||||
height="13"
|
||||
width={size}
|
||||
height={size}
|
||||
viewBox="0 0 16 13"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
|
||||
@@ -21,7 +21,7 @@ export function FlashBtnStep({
|
||||
{selectedSource?.source.board === 'BOARD_SLIMEVR' ||
|
||||
selectedSource?.source.board === 'BOARD_SLIMEVR_V1_2' ? (
|
||||
<>
|
||||
<Typography variant="standard" whitespace="whitespace-pre">
|
||||
<Typography variant="standard" whitespace="whitespace-pre-wrap">
|
||||
{l10n.getString('firmware_tool-flashbtn_step-board_SLIMEVR')}
|
||||
</Typography>
|
||||
<div className="gap-2 grid lg:grid-cols-3 md:grid-cols-2 mobile:grid-cols-1">
|
||||
@@ -29,7 +29,7 @@ export function FlashBtnStep({
|
||||
<Typography variant="main-title">R11</Typography>
|
||||
<Typography variant="standard">
|
||||
{l10n.getString(
|
||||
'firmware_tool-flashbtn_step-board_SLIMEVR-r11'
|
||||
'firmware_tool-flashbtn_step-board_SLIMEVR-r11-v2'
|
||||
)}
|
||||
</Typography>
|
||||
<img src="/images/R11_board_reset.webp" />
|
||||
@@ -38,7 +38,7 @@ export function FlashBtnStep({
|
||||
<Typography variant="main-title">R12</Typography>
|
||||
<Typography variant="standard">
|
||||
{l10n.getString(
|
||||
'firmware_tool-flashbtn_step-board_SLIMEVR-r12'
|
||||
'firmware_tool-flashbtn_step-board_SLIMEVR-r12-v2'
|
||||
)}
|
||||
</Typography>
|
||||
<img src="/images/R12_board_reset.webp" />
|
||||
@@ -48,7 +48,7 @@ export function FlashBtnStep({
|
||||
<Typography variant="main-title">R14</Typography>
|
||||
<Typography variant="standard">
|
||||
{l10n.getString(
|
||||
'firmware_tool-flashbtn_step-board_SLIMEVR-r14'
|
||||
'firmware_tool-flashbtn_step-board_SLIMEVR-r14-v2'
|
||||
)}
|
||||
</Typography>
|
||||
<img src="/images/R14_board_reset_sw.webp" />
|
||||
|
||||
@@ -1,31 +1,28 @@
|
||||
import { Localized, useLocalization } from '@fluent/react';
|
||||
import { Link, NavLink, useNavigate } from 'react-router-dom';
|
||||
import { StatusData, TrackerDataT } from 'solarxr-protocol';
|
||||
import { useLocalization } from '@fluent/react';
|
||||
import { NavLink, useNavigate } from 'react-router-dom';
|
||||
import { TrackerDataT } from 'solarxr-protocol';
|
||||
import { useConfig } from '@/hooks/config';
|
||||
import { Typography } from '@/components/commons/Typography';
|
||||
import { TrackerCard } from '@/components/tracker/TrackerCard';
|
||||
import { TrackersTable } from '@/components/tracker/TrackersTable';
|
||||
import {
|
||||
parseStatusToLocale,
|
||||
trackerStatusRelated,
|
||||
useStatusContext,
|
||||
} from '@/hooks/status-system';
|
||||
import { useMemo } from 'react';
|
||||
import { WarningBox } from '@/components/commons/TipBox';
|
||||
import { HeadsetIcon } from '@/components/commons/icon/HeadsetIcon';
|
||||
import classNames from 'classnames';
|
||||
import { useAtomValue } from 'jotai';
|
||||
import { flatTrackersAtom } from '@/store/app-store';
|
||||
import { useVRCConfig } from '@/hooks/vrc-config';
|
||||
|
||||
const DONT_REPEAT_STATUSES = [StatusData.StatusTrackerReset];
|
||||
import {
|
||||
assignedTrackersAtom,
|
||||
unassignedTrackersAtom,
|
||||
} from '@/store/app-store';
|
||||
import { useTrackingChecklist } from '@/hooks/tracking-checklist';
|
||||
import { Checklist } from '@/components/commons/icon/ChecklistIcon';
|
||||
import { useState } from 'react';
|
||||
import { HomeSettingsModal } from './HomeSettingsModal';
|
||||
import { LayoutIcon } from '@/components/commons/icon/LayoutIcon';
|
||||
|
||||
export function Home() {
|
||||
const { l10n } = useLocalization();
|
||||
const { config } = useConfig();
|
||||
const trackers = useAtomValue(flatTrackersAtom);
|
||||
const { statuses } = useStatusContext();
|
||||
const { invalidConfig } = useVRCConfig();
|
||||
const trackers = useAtomValue(assignedTrackersAtom);
|
||||
const unassignedTrackers = useAtomValue(unassignedTrackersAtom);
|
||||
const { highlightedTrackers } = useTrackingChecklist();
|
||||
const navigate = useNavigate();
|
||||
|
||||
const sendToSettings = (tracker: TrackerDataT) => {
|
||||
@@ -34,95 +31,121 @@ export function Home() {
|
||||
);
|
||||
};
|
||||
|
||||
const filteredStatuses = useMemo(() => {
|
||||
const dontRepeat = new Map(DONT_REPEAT_STATUSES.map((x) => [x, false]));
|
||||
return Object.entries(statuses).filter(([, value]) => {
|
||||
if (dontRepeat.get(value.dataType)) return false;
|
||||
if (dontRepeat.has(value.dataType)) dontRepeat.set(value.dataType, true);
|
||||
return true;
|
||||
});
|
||||
}, [statuses]);
|
||||
const settingsOpenState = useState(false);
|
||||
const [, setSettingsOpen] = settingsOpenState;
|
||||
|
||||
return (
|
||||
<div className="relative h-full">
|
||||
<HomeSettingsModal open={settingsOpenState} />
|
||||
<NavLink
|
||||
to="/vr-mode"
|
||||
className="xs:hidden absolute z-50 h-12 w-12 rounded-full bg-accent-background-30 bottom-3 right-3 flex justify-center items-center fill-background-10"
|
||||
>
|
||||
<HeadsetIcon />
|
||||
</NavLink>
|
||||
<div className="h-full overflow-y-auto">
|
||||
<div
|
||||
className={classNames(
|
||||
'px-3 pt-3 gap-3 w-full grid md:grid-cols-2 mobile:grid-cols-1'
|
||||
)}
|
||||
>
|
||||
{filteredStatuses
|
||||
.filter(([, status]) => status.prioritized)
|
||||
.map(([, status]) => (
|
||||
<Localized
|
||||
key={status.id}
|
||||
id={`status_system-${StatusData[status.dataType]}`}
|
||||
vars={parseStatusToLocale(status, trackers, l10n)}
|
||||
>
|
||||
<WarningBox whitespace={false}>
|
||||
{`Warning, you should fix ${StatusData[status.dataType]}`}
|
||||
</WarningBox>
|
||||
</Localized>
|
||||
))}
|
||||
{invalidConfig && (
|
||||
<WarningBox whitespace={false}>
|
||||
<div className="flex gap-2 justify-between items-center w-full">
|
||||
<div className="flex">
|
||||
<Localized id={'vrc_config-invalid'} />
|
||||
</div>
|
||||
<div className="flex">
|
||||
<Link to="/vrc-warnings">
|
||||
<div className="rounded-md p-2 bg-background-90 bg-opacity-15 hover:bg-background-10 hover:bg-opacity-25 text-nowrap">
|
||||
<Localized id={'vrc_config-show_more'} />
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</WarningBox>
|
||||
)}
|
||||
<NavLink
|
||||
to="/checklist"
|
||||
className="xs:hidden absolute z-50 h-12 w-12 rounded-full bg-accent-background-30 bottom-[70px] right-3 flex justify-center items-center fill-background-10"
|
||||
>
|
||||
<Checklist />
|
||||
</NavLink>
|
||||
<div className="overflow-y-auto flex flex-col gap-3">
|
||||
<div className="flex w-full gap-2 items-center px-4 h-5">
|
||||
<Typography
|
||||
color="secondary"
|
||||
id="toolbar-assigned_trackers"
|
||||
vars={{ count: trackers.length }}
|
||||
/>
|
||||
<div className="bg-background-50 h-[2px] rounded-lg flex-grow" />
|
||||
<div
|
||||
className="fill-background-30 hover:fill-background-20 cursor-pointer"
|
||||
onClick={() => setSettingsOpen(true)}
|
||||
>
|
||||
<LayoutIcon size={18} />
|
||||
</div>
|
||||
</div>
|
||||
<div className="overflow-y-auto flex flex-col gap-3">
|
||||
{trackers.length === 0 && (
|
||||
<div className="flex px-5 pt-5 justify-center">
|
||||
<Typography variant="standard">
|
||||
{l10n.getString('home-no_trackers')}
|
||||
</Typography>
|
||||
</div>
|
||||
)}
|
||||
{trackers.length === 0 && (
|
||||
<div className="flex px-5 pt-5 justify-center">
|
||||
<Typography variant="standard">
|
||||
{l10n.getString('home-no_trackers')}
|
||||
</Typography>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{!config?.debug && trackers.length > 0 && (
|
||||
<div className="grid sm:grid-cols-1 md:grid-cols-2 gap-4 px-5 my-5">
|
||||
{trackers.map(({ tracker, device }, index) => (
|
||||
<TrackerCard
|
||||
key={index}
|
||||
tracker={tracker}
|
||||
device={device}
|
||||
onClick={() => sendToSettings(tracker)}
|
||||
smol
|
||||
showUpdates
|
||||
interactable
|
||||
warning={Object.values(statuses).some((status) =>
|
||||
trackerStatusRelated(tracker, status)
|
||||
)}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
{config?.debug && trackers.length > 0 && (
|
||||
<div className="px-2 pt-5 overflow-y-scroll overflow-x-auto">
|
||||
<TrackersTable
|
||||
flatTrackers={trackers}
|
||||
clickedTracker={(tracker) => sendToSettings(tracker)}
|
||||
{config?.homeLayout == 'default' && trackers.length > 0 && (
|
||||
<div className="grid sm:grid-cols-1 md:grid-cols-2 gap-4 px-5 my-5">
|
||||
{trackers.map(({ tracker, device }, index) => (
|
||||
<TrackerCard
|
||||
key={index}
|
||||
tracker={tracker}
|
||||
device={device}
|
||||
onClick={() => sendToSettings(tracker)}
|
||||
smol
|
||||
showUpdates
|
||||
interactable
|
||||
warning={
|
||||
!!highlightedTrackers?.trackers.find(
|
||||
(t) =>
|
||||
t?.deviceId?.id === tracker.trackerId?.deviceId?.id &&
|
||||
t?.trackerNum === tracker.trackerId?.trackerNum
|
||||
) && highlightedTrackers.step
|
||||
}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
|
||||
{config?.homeLayout === 'table' && trackers.length > 0 && (
|
||||
<div className="mx-2 overflow-x-auto">
|
||||
<TrackersTable
|
||||
flatTrackers={trackers}
|
||||
clickedTracker={(tracker) => sendToSettings(tracker)}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{unassignedTrackers.length > 0 && (
|
||||
<>
|
||||
<div className="flex w-full gap-2 items-center px-4 h-5">
|
||||
<Typography
|
||||
color="secondary"
|
||||
id="toolbar-unassigned_trackers"
|
||||
vars={{ count: unassignedTrackers.length }}
|
||||
/>
|
||||
<div className="bg-background-50 h-[2px] rounded-lg flex-grow" />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
{config?.homeLayout == 'default' && (
|
||||
<div className="grid sm:grid-cols-1 md:grid-cols-2 gap-4 px-5 my-3">
|
||||
{unassignedTrackers.map(({ tracker, device }, index) => (
|
||||
<TrackerCard
|
||||
key={index}
|
||||
tracker={tracker}
|
||||
device={device}
|
||||
onClick={() => sendToSettings(tracker)}
|
||||
smol
|
||||
showUpdates
|
||||
interactable
|
||||
warning={
|
||||
!!highlightedTrackers?.trackers.find(
|
||||
(t) =>
|
||||
t?.deviceId?.id === tracker.trackerId?.deviceId?.id &&
|
||||
t?.trackerNum === tracker.trackerId?.trackerNum
|
||||
) && highlightedTrackers.step
|
||||
}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
{config?.homeLayout === 'table' && (
|
||||
<div className="mx-2 overflow-x-auto">
|
||||
<TrackersTable
|
||||
flatTrackers={unassignedTrackers}
|
||||
clickedTracker={(tracker) => sendToSettings(tracker)}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
34
gui/src/components/home/HomeSettingsModal.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
import { Dispatch, SetStateAction } from 'react';
|
||||
import { BaseModal } from '@/components/commons/BaseModal';
|
||||
import { Typography } from '@/components/commons/Typography';
|
||||
import { Button } from '@/components/commons/Button';
|
||||
import { HomeLayoutSettings } from '@/components/settings/pages/HomeScreenSettings';
|
||||
|
||||
export function HomeSettingsModal({
|
||||
open,
|
||||
}: {
|
||||
open: [boolean, Dispatch<SetStateAction<boolean>>];
|
||||
}) {
|
||||
return (
|
||||
<BaseModal
|
||||
isOpen={open[0]}
|
||||
appendClasses={'max-w-xl w-full'}
|
||||
closeable
|
||||
onRequestClose={() => {
|
||||
open[1](false);
|
||||
}}
|
||||
>
|
||||
<div className="flex flex-col gap-4">
|
||||
<Typography variant="main-title" id="home-settings" />
|
||||
<HomeLayoutSettings variant="modal" />
|
||||
<div className="flex justify-end">
|
||||
<Button
|
||||
variant="tertiary"
|
||||
onClick={() => open[1](false)}
|
||||
id="home-settings-close"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</BaseModal>
|
||||
);
|
||||
}
|
||||