Compare commits
147 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
24f2895238 | ||
|
|
c901d80915 | ||
|
|
8b52d0f135 | ||
|
|
3d88dcd974 | ||
|
|
9041b4c35e | ||
|
|
804ca64d29 | ||
|
|
530315ff06 | ||
|
|
86b3aec926 | ||
|
|
7f920c1db3 | ||
|
|
369a3496ec | ||
|
|
55af27e59e | ||
|
|
eade92acee | ||
|
|
923e203f1c | ||
|
|
f252e602bc | ||
|
|
abeedf2a87 | ||
|
|
dec1091587 | ||
|
|
9ca6d54d25 | ||
|
|
eb362c135b | ||
|
|
a75aa8cd78 | ||
|
|
6896f9f3e2 | ||
|
|
827e2ceef8 | ||
|
|
ae4391bff1 | ||
|
|
be76cd1b6f | ||
|
|
884424c7b4 | ||
|
|
e0d3224393 | ||
|
|
fde8ccd821 | ||
|
|
ed9a590296 | ||
|
|
4f1d333f38 | ||
|
|
ce6940dd39 | ||
|
|
c3d97a9463 | ||
|
|
bcf66145c2 | ||
|
|
cfd7bc366e | ||
|
|
f9c077e78b | ||
|
|
5471f5ec40 | ||
|
|
b639523228 | ||
|
|
b310cf0e0e | ||
|
|
7df8c5d858 | ||
|
|
78caab1cd4 | ||
|
|
be9166881a | ||
|
|
29442688d4 | ||
|
|
fc5f3c1a35 | ||
|
|
8a88721924 | ||
|
|
1aa8679c08 | ||
|
|
3d51d77e27 | ||
|
|
8c74e98187 | ||
|
|
aefaa6598d | ||
|
|
f391b558c9 | ||
|
|
ea28baeef9 | ||
|
|
f5f40f496b | ||
|
|
297022fb3f | ||
|
|
f402b22d74 | ||
|
|
a8557474cb | ||
|
|
d53de4a793 | ||
|
|
81aacdde83 | ||
|
|
762290b1e3 | ||
|
|
3425be64ac | ||
|
|
673344baf9 | ||
|
|
ee7d6a8bc0 | ||
|
|
552451cb98 | ||
|
|
a74d5aa273 | ||
|
|
21576aff63 | ||
|
|
908e220b23 | ||
|
|
7d0d64418d | ||
|
|
f80ca11947 | ||
|
|
7f75f4a44c | ||
|
|
1dd1d14d16 | ||
|
|
d3f90b8404 | ||
|
|
d9955d10e3 | ||
|
|
a9b1df8851 | ||
|
|
7b04f536d0 | ||
|
|
fcef02e8f2 | ||
|
|
694d3fa363 | ||
|
|
3f6a26f7d8 | ||
|
|
990cd1d6f2 | ||
|
|
6ac320352b | ||
|
|
ae1b60da5d | ||
|
|
aaa5c2ba48 | ||
|
|
5ff5f81a88 | ||
|
|
99f71088ec | ||
|
|
fcdcac1ed2 | ||
|
|
37b57bea1f | ||
|
|
77285787ec | ||
|
|
2f5d2b214e | ||
|
|
319344254d | ||
|
|
86011f323b | ||
|
|
f9a8384369 | ||
|
|
90ced8cacf | ||
|
|
8253110130 | ||
|
|
563713e788 | ||
|
|
93c319ce68 | ||
|
|
abaf8a19ae | ||
|
|
49becc4f08 | ||
|
|
24f6fdacae | ||
|
|
c54b0d4044 | ||
|
|
bec4d74ccf | ||
|
|
583629d8e0 | ||
|
|
60535bda30 | ||
|
|
3675213820 | ||
|
|
900a5d30f7 | ||
|
|
4d21b61549 | ||
|
|
c3c7fc896c | ||
|
|
c3b4727017 | ||
|
|
99d0756997 | ||
|
|
ff218488a7 | ||
|
|
8fa535d8b8 | ||
|
|
d2a9a21b8f | ||
|
|
2dbc25b529 | ||
|
|
eefe7efbfa | ||
|
|
25bd05082c | ||
|
|
cc5bd5d938 | ||
|
|
751c2e2f3b | ||
|
|
59863fa7f3 | ||
|
|
82b5a74a4b | ||
|
|
4079dee383 | ||
|
|
af69d94681 | ||
|
|
923235aaee | ||
|
|
79eeca9c1c | ||
|
|
335fe5edeb | ||
|
|
68c484b6c5 | ||
|
|
70f4925b3e | ||
|
|
3aa0587387 | ||
|
|
74c3f41867 | ||
|
|
a39c8c2018 | ||
|
|
4fa5c3f767 | ||
|
|
71d271bfdb | ||
|
|
f1b3b56484 | ||
|
|
a614c225da | ||
|
|
8ae3ecc1b3 | ||
|
|
e79c7ebf0e | ||
|
|
3a50153980 | ||
|
|
d37466cf9f | ||
|
|
029bd9da81 | ||
|
|
d3f323b438 | ||
|
|
ce4639bed0 | ||
|
|
4ebd863580 | ||
|
|
1fb32e8458 | ||
|
|
871ffa5571 | ||
|
|
56b105697f | ||
|
|
3a0014db25 | ||
|
|
c3d10f1407 | ||
|
|
a2bbe7097c | ||
|
|
415a07461e | ||
|
|
4bd31fb02f | ||
|
|
2bc50b2bc2 | ||
|
|
e37b11844f | ||
|
|
92f709e2f9 | ||
|
|
7fe3d82540 |
20
.github/CODEOWNERS
vendored
@@ -1,20 +1,24 @@
|
||||
# Global code owner
|
||||
* @Eirenliel
|
||||
|
||||
# Make everyone be able to approve SolarXR submodule changes
|
||||
/solarxr-protocol @ButterscotchV @Louka3000 @ImUrX
|
||||
|
||||
# Make Loucas and Uriel the owners of all GUI stuff
|
||||
/gui/ @loucass003 @ImUrX
|
||||
/package-lock.json @loucass003 @ImUrX
|
||||
/gui/ @ImUrX
|
||||
/pnpm-lock.yaml @ImUrX
|
||||
/pnpm-workspace.yaml @ImUrX
|
||||
|
||||
# Uriel and Erimel responsible for i18n
|
||||
/gui/public/i18n/ @ImUrX @Louka3000
|
||||
/gui/src/i18n/ @ImUrX @Louka3000
|
||||
/l10n.toml @ImUrX @Louka3000
|
||||
|
||||
/gui/src/components/settings/ @Louka3000 @loucass003
|
||||
/gui/src/components/settings/ @Louka3000 @ImUrX
|
||||
|
||||
# Rust part of the GUI
|
||||
/gui/src-tauri/ @ImUrX @TheButlah
|
||||
/Cargo.lock @ImUrX @TheButlah
|
||||
/gui/src-tauri/ @ImUrX
|
||||
/Cargo.lock @ImUrX
|
||||
|
||||
# Some server code~
|
||||
/server/ @ButterscotchV @Eirenliel @Louka3000
|
||||
@@ -27,4 +31,8 @@
|
||||
/server/src/main/java/dev/slimevr/tracking/processor/ @Louka3000
|
||||
/server/src/main/java/dev/slimevr/filtering/ @Louka3000
|
||||
|
||||
server/src/main/java/dev/slimevr/config/ @loucass003
|
||||
# Linux files
|
||||
*.nix @ImUrX
|
||||
/flake.lock @ImUrX
|
||||
/dev.slimevr.SlimeVR.metainfo.xml @ImUrX
|
||||
/.envrc @ImUrX
|
||||
|
||||
37
.github/workflows/build-gui.yml
vendored
@@ -21,21 +21,22 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v3
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'npm'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
npm ci
|
||||
pnpm i
|
||||
cd gui
|
||||
npm run lint
|
||||
pnpm run lint
|
||||
|
||||
build:
|
||||
strategy:
|
||||
@@ -50,7 +51,7 @@ jobs:
|
||||
CI: false
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
@@ -71,20 +72,26 @@ jobs:
|
||||
with:
|
||||
shared-key: "${{ matrix.os }}"
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v3
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'npm'
|
||||
cache: 'pnpm'
|
||||
|
||||
# Tauri has a broken cache issue in windows, let's clean it for now
|
||||
- name: Clean cache in Windows (Fixes tauri-apps/tauri#9045)
|
||||
if: matrix.os == 'windows-latest'
|
||||
run: cargo clean
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
npm ci
|
||||
npm run skipbundler
|
||||
pnpm i
|
||||
pnpm run skipbundler
|
||||
|
||||
- if: matrix.os == 'windows-latest'
|
||||
name: Upload a Build Artifact (Windows)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
# Artifact name
|
||||
name: SlimeVR-GUI-Windows
|
||||
@@ -93,7 +100,7 @@ jobs:
|
||||
|
||||
- if: matrix.os == 'ubuntu-22.04'
|
||||
name: Upload a Build Artifact (Linux)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
# Artifact name
|
||||
name: SlimeVR-GUI-Linux
|
||||
@@ -102,7 +109,7 @@ jobs:
|
||||
|
||||
- if: matrix.os == 'macos-latest'
|
||||
name: Upload a Build Artifact (macOS)
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
# Artifact name
|
||||
name: SlimeVR-GUI-macOS
|
||||
|
||||
146
.github/workflows/gradle.yaml
vendored
@@ -19,20 +19,21 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Get tags
|
||||
run: git fetch --tags origin --recurse-submodules=no
|
||||
run: git fetch --tags origin --recurse-submodules=no --force
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v3
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: "17"
|
||||
distribution: "adopt"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/gradle-build-action@v2
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
|
||||
- run: mkdir ./gui/dist && touch ./gui/dist/somefile
|
||||
shell: bash
|
||||
@@ -48,26 +49,27 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Get tags
|
||||
run: git fetch --tags origin --recurse-submodules=no
|
||||
run: git fetch --tags origin --recurse-submodules=no --force
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v3
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: "17"
|
||||
distribution: "adopt"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/gradle-build-action@v2
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew shadowJar
|
||||
|
||||
- name: Upload the Server JAR as a Build Artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
# Artifact name
|
||||
name: "SlimeVR-Server" # optional, default is artifact
|
||||
@@ -75,7 +77,7 @@ jobs:
|
||||
path: server/desktop/build/libs/*
|
||||
|
||||
- name: Upload to draft release
|
||||
uses: softprops/action-gh-release@v1
|
||||
uses: softprops/action-gh-release@v2
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
draft: true
|
||||
@@ -84,16 +86,73 @@ jobs:
|
||||
server/desktop/build/libs/*
|
||||
|
||||
|
||||
bundle-android:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Get tags
|
||||
run: git fetch --tags origin --recurse-submodules=no --force
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: "17"
|
||||
distribution: "adopt"
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
|
||||
- uses: pnpm/action-setup@v3
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Build GUI
|
||||
run: |
|
||||
pnpm i
|
||||
cd gui && pnpm run build
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew :server:android:assembleDebug
|
||||
|
||||
- name: Upload the Android Build Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
# Artifact name
|
||||
name: "SlimeVR-Android" # optional, default is artifact
|
||||
# A file, directory or wildcard pattern that describes what to upload
|
||||
path: server/android/build/outputs/apk/*
|
||||
|
||||
- name: Prepare for release
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
run: |
|
||||
cp server/android/build/outputs/apk/debug/android-debug.apk ./SlimeVR-android.apk
|
||||
|
||||
- name: Upload to draft release
|
||||
uses: softprops/action-gh-release@v2
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
draft: true
|
||||
generate_release_notes: true
|
||||
files: |
|
||||
./SlimeVR-android.apk
|
||||
|
||||
|
||||
bundle-linux:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: [build, test]
|
||||
if: contains(fromJSON('["workflow_dispatch", "create"]'), github.event_name)
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: "SlimeVR-Server"
|
||||
path: server/desktop/build/libs/
|
||||
@@ -114,18 +173,19 @@ jobs:
|
||||
with:
|
||||
shared-key: "ubuntu-22.04"
|
||||
|
||||
- uses: pnpm/action-setup@v3
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'npm'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
npm ci
|
||||
npm run tauri build
|
||||
pnpm i
|
||||
pnpm run tauri build
|
||||
|
||||
- uses: actions/upload-artifact@v3.1.0
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: SlimeVR-GUI-Deb
|
||||
path: target/release/bundle/deb/slimevr*.deb
|
||||
@@ -145,7 +205,7 @@ jobs:
|
||||
chmod 644 squashfs-root/slimevr.jar
|
||||
appimagetool squashfs-root slimevr*.AppImage
|
||||
|
||||
- uses: actions/upload-artifact@v3.1.0
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: SlimeVR-GUI-AppImage
|
||||
path: target/release/bundle/appimage/slimevr*.AppImage
|
||||
@@ -157,7 +217,7 @@ jobs:
|
||||
cp target/release/bundle/deb/slimevr*.deb ./SlimeVR-amd64.deb
|
||||
|
||||
- name: Upload to draft release
|
||||
uses: softprops/action-gh-release@v1
|
||||
uses: softprops/action-gh-release@v2
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
draft: true
|
||||
@@ -172,11 +232,11 @@ jobs:
|
||||
needs: [build, test]
|
||||
if: contains(fromJSON('["workflow_dispatch", "create"]'), github.event_name)
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: "SlimeVR-Server"
|
||||
path: server/desktop/build/libs/
|
||||
@@ -186,20 +246,22 @@ jobs:
|
||||
with:
|
||||
shared-key: "macos-latest"
|
||||
|
||||
- uses: pnpm/action-setup@v3
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'npm'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
npm ci
|
||||
npm run tauri build -- "--target universal-apple-darwin"
|
||||
rustup target add aarch64-apple-darwin
|
||||
pnpm i
|
||||
pnpm run tauri build --target universal-apple-darwin
|
||||
|
||||
- name: Modify Application
|
||||
run: |
|
||||
cd target/release/bundle/macos/slimevr.app/Contents/MacOS
|
||||
cd target/universal-apple-darwin/release/bundle/macos/slimevr.app/Contents/MacOS
|
||||
cp $( git rev-parse --show-toplevel )/server/desktop/build/libs/slimevr.jar ./
|
||||
cd ../../../../dmg/
|
||||
./bundle_dmg.sh --volname slimevr --icon slimevr 180 170 --app-drop-link 480 170 \
|
||||
@@ -207,23 +269,23 @@ jobs:
|
||||
--volicon ../macos/slimevr.app/Contents/Resources/icon.icns --skip-jenkins \
|
||||
--eula ../../../../LICENSE-MIT slimevr.dmg ../macos/slimevr.app
|
||||
|
||||
- uses: actions/upload-artifact@v3.1.0
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: SlimeVR-GUI-MacApp
|
||||
path: target/release/bundle/macos/slimevr*.app
|
||||
path: target/universal-apple-darwin/release/bundle/macos/slimevr*.app
|
||||
|
||||
- uses: actions/upload-artifact@v3.1.0
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: SlimeVR-GUI-MacDmg
|
||||
path: target/release/bundle/dmg/slimevr.dmg
|
||||
path: target/universal-apple-darwin/release/bundle/dmg/slimevr.dmg
|
||||
|
||||
- name: Prepare for release
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
run: |
|
||||
cp target/release/bundle/dmg/slimevr.dmg ./SlimeVR-mac.dmg
|
||||
cp target/universal-apple-darwin/release/bundle/dmg/slimevr.dmg ./SlimeVR-mac.dmg
|
||||
|
||||
- name: Upload to draft release
|
||||
uses: softprops/action-gh-release@v1
|
||||
uses: softprops/action-gh-release@v2
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
draft: true
|
||||
@@ -237,11 +299,11 @@ jobs:
|
||||
needs: [build, test]
|
||||
if: contains(fromJSON('["workflow_dispatch", "create"]'), github.event_name)
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: "SlimeVR-Server"
|
||||
path: server/desktop/build/libs/
|
||||
@@ -251,16 +313,20 @@ jobs:
|
||||
with:
|
||||
shared-key: "windows-latest"
|
||||
|
||||
- uses: pnpm/action-setup@v3
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.node-version'
|
||||
cache: 'npm'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Clean cache in Windows (Fixes tauri-apps/tauri#9045)
|
||||
run: cargo clean
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
npm ci
|
||||
npm run skipbundler
|
||||
pnpm i
|
||||
pnpm run skipbundler
|
||||
|
||||
- name: Bundle to zips
|
||||
shell: bash
|
||||
@@ -275,13 +341,13 @@ jobs:
|
||||
mv ./SlimeVR/slimevr.exe ./SlimeVR/slimevr-ui.exe
|
||||
7z a -tzip SlimeVR.zip ./SlimeVR/
|
||||
|
||||
- uses: actions/upload-artifact@v3.1.0
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: SlimeVR-GUI-Windows
|
||||
path: ./SlimeVR*.zip
|
||||
|
||||
- name: Upload to draft release
|
||||
uses: softprops/action-gh-release@v1
|
||||
uses: softprops/action-gh-release@v2
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
draft: true
|
||||
|
||||
2
.github/workflows/pontoon-pr.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- uses: repo-sync/pull-request@v2
|
||||
|
||||
5
.github/workflows/rebase.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: pontoon
|
||||
submodules: recursive
|
||||
@@ -24,7 +24,7 @@ jobs:
|
||||
- name: Rebase
|
||||
run: |
|
||||
git config --local user.name "slimevr-bot"
|
||||
git config --local user.email pantoon@slimevr.dev
|
||||
git config --local user.email 'pantoon@slimevr.dev'
|
||||
git fetch origin main
|
||||
git rebase origin/main
|
||||
git submodule update
|
||||
@@ -36,3 +36,4 @@ jobs:
|
||||
commit-message: "update"
|
||||
force-push: "true"
|
||||
name: "slimevr-bot"
|
||||
email: "pantoon@slimevr.dev"
|
||||
|
||||
1
.vscode/extensions.json
vendored
@@ -11,6 +11,7 @@
|
||||
"bradlc.vscode-tailwindcss",
|
||||
"EditorConfig.EditorConfig",
|
||||
"macabeus.vscode-fluent",
|
||||
"redhat.vscode-yaml"
|
||||
],
|
||||
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
|
||||
"unwantedRecommendations": []
|
||||
|
||||
@@ -6,7 +6,7 @@ This document describes essential knowledge required to contribute to the SlimeV
|
||||
|
||||
- [Git](https://git-scm.com/downloads)
|
||||
- [Java v17+](https://adoptium.net/temurin/releases/)
|
||||
- [Node.js v16+](https://nodejs.org) (We recommend the use of `nvm` instead of installing Node.js directly)
|
||||
- [Node.js v16.9+](https://nodejs.org) (We recommend the use of `nvm` instead of installing Node.js directly)
|
||||
- [Microsoft Edge WebView2](https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section) or `webkit2gtk` for Linux
|
||||
- [Rust](https://rustup.rs)
|
||||
|
||||
@@ -34,9 +34,10 @@ be at `server/build/libs/slimevr.jar` (you can ignore `server.jar`).
|
||||
|
||||
### Tauri (gui)
|
||||
|
||||
- Run `npm install` in your IDE's terminal to download and install dependencies.
|
||||
- To launch the GUI in dev mode, run `npm run gui`.
|
||||
- Finally, to compile for production, run `npm run tauri build`. The result
|
||||
- Activate corepack (included with Node.JS) via `corepack enable` (might require administrator permissions)
|
||||
- Run `pnpm i` in your IDE's terminal to download and install dependencies.
|
||||
- To launch the GUI in dev mode, run `pnpm gui`.
|
||||
- Finally, to compile for production, run `pnpm run tauri build`. The result
|
||||
will be at `target/release/slimevr.exe`.
|
||||
|
||||
## Code style
|
||||
@@ -87,8 +88,8 @@ Eclipse will only do a subset of the checks in `spotless`, so you may still want
|
||||
|
||||
We use ESLint and Prettier to format GUI code.
|
||||
- First, go into the GUI's directory with your terminal by running `cd gui`.
|
||||
- To check code formatting, run `npm run lint`.
|
||||
- To fix code formatting, run `npm run lint:fix` and `npm run format`
|
||||
- To check code formatting, run `pnpm run lint`.
|
||||
- To fix code formatting, run `pnpm run lint:fix` and `pnpm run format`
|
||||
|
||||
Don't forget to run `cd ..` to return to the root directory.
|
||||
|
||||
|
||||
2825
Cargo.lock
generated
@@ -9,14 +9,8 @@ members = ["gui/src-tauri"]
|
||||
[workspace.package]
|
||||
edition = "2021"
|
||||
license = "MIT OR Apache-2.0"
|
||||
rust-version = "1.65" # This version stabilized GATs and let-else
|
||||
rust-version = "1.75" # This version stabilized GATs and let-else
|
||||
repository = "https://github.com/SlimeVR/SlimeVR-Server"
|
||||
|
||||
[profile.release]
|
||||
lto = "thin"
|
||||
strip = "debuginfo" # Only affects Unix binaries with DWARF
|
||||
|
||||
[patch.crates-io]
|
||||
tauri = { git = "https://github.com/imurx/tauri", branch = "ipc-backport" }
|
||||
tauri-runtime = { git = "https://github.com/imurx/tauri", branch = "ipc-backport" }
|
||||
tauri-build = { git = "https://github.com/imurx/tauri", branch = "ipc-backport" }
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
plugins {
|
||||
id("org.ajoberstar.grgit") version "5.2.0"
|
||||
id("org.ajoberstar.grgit")
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ work. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||
<url type="homepage">https://slimevr.dev/</url>
|
||||
<url type="bugtracker">https://github.com/SlimeVR/SlimeVR-Server/issues</url>
|
||||
<url type="faq">https://docs.slimevr.dev/slimevr101.html</url>
|
||||
<url type="donation">https://github.com/sponsors/SlimeVR</url>
|
||||
<url type="vcs-browser">https://github.com/SlimeVR/SlimeVR-Server</url>
|
||||
<url type="translate">https://i18n.slimevr.dev</url>
|
||||
<url type="help">https://docs.slimevr.dev/server-setup/slimevr-setup.html</url>
|
||||
@@ -57,23 +58,36 @@ work. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||
<image>https://raw.githubusercontent.com/SlimeVR/SlimeVR-Server/main/assets/img/onboarding.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
|
||||
<provides>
|
||||
<binary>slimevr</binary>
|
||||
</provides>
|
||||
|
||||
<releases>
|
||||
<release version="0.11.0" date="2023-12-23"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.11.0</url></release>
|
||||
<release version="0.11.0~rc.2" type="development" date="2023-12-08"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.11.0-rc.2</url></release>
|
||||
<release version="0.11.0~rc.1" type="development" date="2023-11-23"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.11.0-rc.1</url></release>
|
||||
<release version="0.10.1" date="2023-09-30"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.10.1</url></release>
|
||||
<release version="0.10.1~rc.1" type="development" date="2023-09-29"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.10.1-rc.1</url></release>
|
||||
<release version="0.10.0" date="2023-09-22"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.10.0</url></release>
|
||||
<release version="0.10.0~rc.2" type="development" date="2023-09-15"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.10.0-rc.2</url></release>
|
||||
<release version="0.10.0~rc.1" type="development" date="2023-09-02"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.10.0-rc.1</url></release>
|
||||
<release version="0.9.1" date="2023-08-30"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1</url></release>
|
||||
<release version="0.9.1-rc.4" type="development" date="2023-08-28"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.4</url></release>
|
||||
<release version="0.9.1-rc.3" type="development" date="2023-08-19"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.3</url></release>
|
||||
<release version="0.9.1-rc.2" type="development" date="2023-08-15"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.2</url></release>
|
||||
<release version="0.9.1-rc.1" type="development" date="2023-08-13"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.1</url></release>
|
||||
<release version="0.9.1~rc.4" type="development" date="2023-08-28"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.4</url></release>
|
||||
<release version="0.9.1~rc.3" type="development" date="2023-08-19"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.3</url></release>
|
||||
<release version="0.9.1~rc.2" type="development" date="2023-08-15"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.2</url></release>
|
||||
<release version="0.9.1~rc.1" type="development" date="2023-08-13"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.1-rc.1</url></release>
|
||||
<release version="0.9.0" date="2023-08-05"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.0</url></release>
|
||||
<release version="0.9.0-rc.2" type="development" date="2023-08-02"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.0-rc.2</url></release>
|
||||
<release version="0.9.0-rc.1" type="development" date="2023-07-31"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.0-rc.1</url></release>
|
||||
<release version="0.9.0~rc.2" type="development" date="2023-08-02"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.0-rc.2</url></release>
|
||||
<release version="0.9.0~rc.1" type="development" date="2023-07-31"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.9.0-rc.1</url></release>
|
||||
<release version="0.8.3" date="2023-07-09"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.3</url></release>
|
||||
<release version="0.8.2" date="2023-07-09"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.2</url></release>
|
||||
<release version="0.8.2-rc.1" type="development" date="2023-07-07"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.2-rc.1</url></release>
|
||||
<release version="0.8.2~rc.1" type="development" date="2023-07-07"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.2-rc.1</url></release>
|
||||
<release version="0.8.1" date="2023-07-04"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.1</url></release>
|
||||
<release version="0.8.0" date="2023-06-22"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.0</url></release>
|
||||
<release version="0.8.0-rc.3" type="development" date="2023-06-20"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.0-rc.3</url></release>
|
||||
<release version="0.8.0-rc.2" type="development" date="2023-06-15"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.0-rc.2</url></release>
|
||||
<release version="0.8.0-rc.1" type="development" date="2023-06-01"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.0-rc.1</url></release>
|
||||
<release version="0.8.0~rc.3" type="development" date="2023-06-20"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.0-rc.3</url></release>
|
||||
<release version="0.8.0~rc.2" type="development" date="2023-06-15"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.0-rc.2</url></release>
|
||||
<release version="0.8.0~rc.1" type="development" date="2023-06-01"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.8.0-rc.1</url></release>
|
||||
<release version="0.7.1" date="2023-04-14"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.7.1</url></release>
|
||||
<release version="0.7.0" date="2023-04-11"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.7.0</url></release>
|
||||
<release version="0.6.3" date="2023-02-22"><url>https://github.com/SlimeVR/SlimeVR-Server/releases/tag/v0.6.3</url></release>
|
||||
|
||||
159
flake.lock
generated
@@ -8,11 +8,11 @@
|
||||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1692203620,
|
||||
"narHash": "sha256-9SF/H8oCWv166q5o+JtV7tK+koydgFMu02HCB27UWpU=",
|
||||
"lastModified": 1699541523,
|
||||
"narHash": "sha256-Rv0ryuBC5KtA/3YqwIEe58Tabu71qSGnGcGRd67mMUY=",
|
||||
"owner": "cachix",
|
||||
"repo": "devenv",
|
||||
"rev": "eee80243720b7f284128873a9694a520d9967b2f",
|
||||
"rev": "14fdefc0bb80c3d6f3a18a491e33429b4064c371",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -21,6 +21,25 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"rust-analyzer-src": "rust-analyzer-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1699683614,
|
||||
"narHash": "sha256-XT2tIoIiiv0AxRs9g76nuRhfQf7KU1dE3ho8BL5CYM4=",
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"rev": "ca6415d87d2e1b5975d59b2a68ae19029de1759c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -42,11 +61,11 @@
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1690933134,
|
||||
"narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=",
|
||||
"lastModified": 1698882062,
|
||||
"narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb",
|
||||
"rev": "8c9fa2545007b49a5db5f650ae91f227672c3877",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -73,12 +92,30 @@
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1653893745,
|
||||
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
|
||||
"lastModified": 1694529238,
|
||||
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
|
||||
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -172,11 +209,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1688922987,
|
||||
"narHash": "sha256-RnQwrCD5anqWfyDAVbfFIeU+Ha6cwt5QcIwIkaGRzQw=",
|
||||
"lastModified": 1697285352,
|
||||
"narHash": "sha256-tRGLm/DO8+anGUCgLYxTF5EPqWv8EZ9MVFWRdh285HU=",
|
||||
"owner": "nlewo",
|
||||
"repo": "nix2container",
|
||||
"rev": "ab381a7d714ebf96a83882264245dbd34f0a7ec8",
|
||||
"rev": "9d7f33ef0058f4df4c0912025f43c758a3289d76",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -185,6 +222,25 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixgl": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1685908677,
|
||||
"narHash": "sha256-E4zUPEUFyVWjVm45zICaHRpfGepfkE9Z2OECV9HXfA4=",
|
||||
"owner": "guibou",
|
||||
"repo": "nixGL",
|
||||
"rev": "489d6b095ab9d289fe11af0219a9ff00fe87c7c5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "guibou",
|
||||
"repo": "nixGL",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1678875422,
|
||||
@@ -204,11 +260,11 @@
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"dir": "lib",
|
||||
"lastModified": 1690881714,
|
||||
"narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=",
|
||||
"lastModified": 1698611440,
|
||||
"narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9e1960bc196baf6881340d53dccb203a951745a2",
|
||||
"rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -253,11 +309,42 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1692356644,
|
||||
"narHash": "sha256-AYkPFT+CbCVSBmh0WwIzPpwhEJ4Yy3A7JZvUkGJIg5o=",
|
||||
"lastModified": 1699099776,
|
||||
"narHash": "sha256-X09iKJ27mGsGambGfkKzqvw5esP1L/Rf8H3u3fCqIiU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "85f1ba3e51676fa8cc604a3d863d729026a6b8eb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1660551188,
|
||||
"narHash": "sha256-a1LARMMYQ8DPx1BgoI/UN4bXe12hhZkCNqdxNi6uS0g=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "441dc5d512153039f19ef198e662e4f3dbb9fd65",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1699099776,
|
||||
"narHash": "sha256-X09iKJ27mGsGambGfkKzqvw5esP1L/Rf8H3u3fCqIiU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "8ecc900b2f695d74dea35a92f8a9f9b32c8ea33d",
|
||||
"rev": "85f1ba3e51676fa8cc604a3d863d729026a6b8eb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -298,10 +385,29 @@
|
||||
"root": {
|
||||
"inputs": {
|
||||
"devenv": "devenv",
|
||||
"fenix": "fenix",
|
||||
"flake-parts": "flake-parts",
|
||||
"mk-shell-bin": "mk-shell-bin",
|
||||
"nix2container": "nix2container",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
"nixgl": "nixgl",
|
||||
"nixpkgs": "nixpkgs_4"
|
||||
}
|
||||
},
|
||||
"rust-analyzer-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1699629149,
|
||||
"narHash": "sha256-oDxT2FTYLRnwBRgxgWMApbgvNsbsPV4EeH4TZtp70F0=",
|
||||
"owner": "rust-lang",
|
||||
"repo": "rust-analyzer",
|
||||
"rev": "11a87c917943dac5a568579f799c2d7458324103",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rust-lang",
|
||||
"ref": "nightly",
|
||||
"repo": "rust-analyzer",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
@@ -318,6 +424,21 @@
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
||||
41
flake.nix
@@ -7,6 +7,8 @@
|
||||
nix2container.url = "github:nlewo/nix2container";
|
||||
nix2container.inputs.nixpkgs.follows = "nixpkgs";
|
||||
mk-shell-bin.url = "github:rrbutani/nix-mk-shell-bin";
|
||||
nixgl.url = "github:guibou/nixGL";
|
||||
fenix.url = "github:nix-community/fenix";
|
||||
};
|
||||
|
||||
nixConfig = {
|
||||
@@ -14,7 +16,12 @@
|
||||
extra-substituters = "https://devenv.cachix.org";
|
||||
};
|
||||
|
||||
outputs = inputs @ {flake-parts, ...}:
|
||||
outputs = inputs @ {
|
||||
self,
|
||||
flake-parts,
|
||||
nixgl,
|
||||
...
|
||||
}:
|
||||
flake-parts.lib.mkFlake {inherit inputs;} {
|
||||
imports = [
|
||||
inputs.devenv.flakeModule
|
||||
@@ -36,8 +43,15 @@
|
||||
|
||||
# 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 = {
|
||||
devenv.shells.default = let
|
||||
fenixpkgs = inputs'.fenix.packages;
|
||||
rust_toolchain = lib.importTOML ./rust-toolchain.toml;
|
||||
in {
|
||||
name = "slimevr";
|
||||
|
||||
imports = [
|
||||
@@ -48,8 +62,10 @@
|
||||
|
||||
# https://devenv.sh/reference/options/
|
||||
packages =
|
||||
[
|
||||
]
|
||||
(with pkgs; [
|
||||
pkgs.nixgl.nixGLIntel
|
||||
cacert
|
||||
])
|
||||
++ lib.optionals pkgs.stdenv.isLinux (with pkgs; [
|
||||
appimagekit
|
||||
atk
|
||||
@@ -59,6 +75,7 @@
|
||||
dprint
|
||||
gdk-pixbuf
|
||||
glib.out
|
||||
glib-networking
|
||||
gobject-introspection
|
||||
gtk3
|
||||
harfbuzz
|
||||
@@ -77,6 +94,9 @@
|
||||
librsvg
|
||||
freetype
|
||||
expat
|
||||
libayatana-appindicator
|
||||
libusb1
|
||||
libudev-zero
|
||||
])
|
||||
++ lib.optionals pkgs.stdenv.isDarwin [
|
||||
pkgs.darwin.apple_sdk.frameworks.Security
|
||||
@@ -94,7 +114,18 @@
|
||||
corepack.enable = true;
|
||||
};
|
||||
|
||||
languages.rust.enable = true;
|
||||
languages.rust = {
|
||||
enable = true;
|
||||
toolchain = fenixpkgs.fromToolchainName {
|
||||
name = rust_toolchain.toolchain.channel;
|
||||
sha256 = "sha256-3St/9/UKo/6lz2Kfq2VmlzHyufduALpiIKaaKX4Pq0g=";
|
||||
};
|
||||
components = rust_toolchain.toolchain.components;
|
||||
};
|
||||
|
||||
env = {
|
||||
GIO_EXTRA_MODULES = "${pkgs.glib-networking}/lib/gio/modules:${pkgs.dconf.lib}/lib/gio/modules";
|
||||
};
|
||||
|
||||
enterShell = with pkgs; ''
|
||||
'';
|
||||
|
||||
@@ -13,7 +13,8 @@ android.useAndroidX=true
|
||||
android.nonTransitiveRClass=true
|
||||
org.gradle.unsafe.configuration-cache=false
|
||||
|
||||
kotlinVersion=1.9.0-RC
|
||||
spotlessVersion=6.12.0
|
||||
kotlinVersion=1.9.23
|
||||
spotlessVersion=6.25.0
|
||||
shadowJarVersion=8.1.1
|
||||
buildconfigVersion=3.1.0
|
||||
buildconfigVersion=5.3.5
|
||||
grgitVersion=5.2.2
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export default {
|
||||
"**/*.{ts,tsx}": () => "tsc -p tsconfig.json --noEmit",
|
||||
"**/*.{js,jsx,ts,tsx}": "eslint --max-warnings=0 --cache --fix",
|
||||
"**/*.{js,jsx,ts,tsx,css,md,json}": "prettier --write"
|
||||
'**/*.{ts,tsx}': () => 'tsc -p tsconfig.json --noEmit',
|
||||
'**/*.{js,jsx,ts,tsx}': 'eslint --max-warnings=0 --cache --fix',
|
||||
'**/*.{js,jsx,ts,tsx,css,md,json}': 'prettier --write',
|
||||
};
|
||||
|
||||
114
gui/package.json
@@ -3,52 +3,54 @@
|
||||
"version": "0.5.1",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@fluent/bundle": "^0.17.1",
|
||||
"@fluent/react": "^0.14.1",
|
||||
"@fontsource/poppins": "^4.5.8",
|
||||
"@fluent/bundle": "^0.18.0",
|
||||
"@fluent/react": "^0.15.2",
|
||||
"@fontsource/poppins": "^5.0.12",
|
||||
"@formatjs/intl-localematcher": "^0.2.32",
|
||||
"@react-three/fiber": "^8.10.0",
|
||||
"@tauri-apps/api": "^2.0.0-alpha.5",
|
||||
"@tauri-apps/plugin-app": "github:tauri-apps/tauri-plugin-app#v2",
|
||||
"@tauri-apps/plugin-dialog": "github:tauri-apps/tauri-plugin-dialog#v2",
|
||||
"@tauri-apps/plugin-fs": "github:tauri-apps/tauri-plugin-fs#v2",
|
||||
"@tauri-apps/plugin-os": "github:tauri-apps/tauri-plugin-os#v2",
|
||||
"@tauri-apps/plugin-shell": "github:tauri-apps/tauri-plugin-shell#v2",
|
||||
"@tauri-apps/plugin-window": "github:tauri-apps/tauri-plugin-window#v2",
|
||||
"@vitejs/plugin-react": "^3.0.0",
|
||||
"browser-fs-access": "^0.34.1",
|
||||
"browserslist": "^4.18.1",
|
||||
"classnames": "^2.3.1",
|
||||
"eslint-config-react-app": "^7.0.0",
|
||||
"@react-three/drei": "^9.105.1",
|
||||
"@react-three/fiber": "^8.16.1",
|
||||
"@tauri-apps/api": "=2.0.0-beta.7",
|
||||
"@tauri-apps/plugin-dialog": "=2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-fs": "=2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-os": "=2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-shell": "=2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-store": "=2.0.0-beta.2",
|
||||
"@vitejs/plugin-react": "^4.2.1",
|
||||
"browser-fs-access": "^0.35.0",
|
||||
"browserslist": "^4.23.0",
|
||||
"classnames": "^2.5.1",
|
||||
"eslint-config-react-app": "^7.0.1",
|
||||
"flatbuffers": "^22.10.26",
|
||||
"identity-obj-proxy": "^3.0.0",
|
||||
"intl-pluralrules": "^1.3.1",
|
||||
"ip-num": "^1.4.1",
|
||||
"intl-pluralrules": "^2.0.1",
|
||||
"ip-num": "^1.5.1",
|
||||
"postcss-flexbugs-fixes": "^5.0.2",
|
||||
"postcss-normalize": "^10.0.1",
|
||||
"postcss-preset-env": "^7.0.1",
|
||||
"postcss-preset-env": "^9.5.2",
|
||||
"prompts": "^2.4.2",
|
||||
"react": "^18.0.0",
|
||||
"react-dev-utils": "^12.0.0",
|
||||
"react-dom": "^18.0.0",
|
||||
"react-hook-form": "^7.29.0",
|
||||
"react-modal": "3.15.1",
|
||||
"react-responsive": "^9.0.2",
|
||||
"react-router-dom": "^6.2.2",
|
||||
"semver": "^7.5.3",
|
||||
"react": "^18.2.0",
|
||||
"react-dev-utils": "^12.0.1",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-error-boundary": "^4.0.13",
|
||||
"react-helmet": "^6.1.0",
|
||||
"react-hook-form": "^7.51.0",
|
||||
"react-modal": "^3.16.1",
|
||||
"react-responsive": "^10.0.0",
|
||||
"react-router-dom": "^6.22.3",
|
||||
"semver": "^7.6.0",
|
||||
"solarxr-protocol": "file:../solarxr-protocol",
|
||||
"three": "^0.148.0",
|
||||
"ts-pattern": "^5.0.1",
|
||||
"typescript": "^5.1.6"
|
||||
"three": "^0.163.0",
|
||||
"ts-pattern": "^5.0.8",
|
||||
"typescript": "^5.4.3"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "vite --force",
|
||||
"build": "vite build",
|
||||
"dev": "tauri dev",
|
||||
"skipbundler": "tauri build -b none",
|
||||
"skipbundler": "tauri build --no-bundle",
|
||||
"tauri": "tauri",
|
||||
"lint": "tsc --noEmit && eslint --max-warnings=0 \"src/**/*.{js,jsx,ts,tsx,json}\" && prettier --check \"src/**/*.{js,jsx,ts,tsx,css,md,json}\"",
|
||||
"lint:fix": "tsc --noEmit && eslint --fix --max-warnings=0 \"src/**/*.{js,jsx,ts,tsx,json}\" && npm run format",
|
||||
"lint:fix": "tsc --noEmit && eslint --fix --max-warnings=0 \"src/**/*.{js,jsx,ts,tsx,json}\" && pnpm run format",
|
||||
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,css,md,json}\"",
|
||||
"preview-vite": "vite preview",
|
||||
"javaversion-build": "cd src-tauri/src/ && javac JavaVersion.java && jar cvfe JavaVersion.jar JavaVersion JavaVersion.class"
|
||||
@@ -71,31 +73,33 @@
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"@dword-design/eslint-plugin-import-alias": "^4.0.8",
|
||||
"@tailwindcss/forms": "^0.5.3",
|
||||
"@tauri-apps/cli": "^2.0.0-alpha.10",
|
||||
"@types/file-saver": "^2.0.5",
|
||||
"@types/react": "18.0.25",
|
||||
"@types/react-dom": "^18.0.5",
|
||||
"@types/react-modal": "3.13.1",
|
||||
"@types/three": "^0.148.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.60.1",
|
||||
"@typescript-eslint/parser": "^5.60.1",
|
||||
"autoprefixer": "^10.4.4",
|
||||
"@dword-design/eslint-plugin-import-alias": "^4.0.9",
|
||||
"@tailwindcss/forms": "^0.5.7",
|
||||
"@tauri-apps/cli": "=2.0.0-beta.12",
|
||||
"@types/file-saver": "^2.0.7",
|
||||
"@types/react": "^18.2.73",
|
||||
"@types/react-dom": "^18.2.23",
|
||||
"@types/react-helmet": "^6.1.11",
|
||||
"@types/react-modal": "3.16.3",
|
||||
"@types/semver": "^7.5.8",
|
||||
"@types/three": "^0.163.0",
|
||||
"@typescript-eslint/eslint-plugin": "^7.4.0",
|
||||
"@typescript-eslint/parser": "^7.4.0",
|
||||
"autoprefixer": "^10.4.19",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8.44.0",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-config-airbnb": "^19.0.4",
|
||||
"eslint-import-resolver-typescript": "^3.5.5",
|
||||
"eslint-plugin-import": "^2.27.5",
|
||||
"eslint-plugin-jsx-a11y": "^6.7.1",
|
||||
"eslint-plugin-react": "^7.32.2",
|
||||
"eslint-import-resolver-typescript": "^3.6.1",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-jsx-a11y": "^6.8.0",
|
||||
"eslint-plugin-react": "^7.34.1",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"postcss": "^8.4.24",
|
||||
"prettier": "^2.8.8",
|
||||
"pretty-quick": "^3.1.3",
|
||||
"rollup-plugin-visualizer": "^5.9.2",
|
||||
"tailwind-gradient-mask-image": "^1.0.0",
|
||||
"tailwindcss": "^3.3.2",
|
||||
"vite": "^4.3.9"
|
||||
"postcss": "^8.4.38",
|
||||
"prettier": "^3.2.5",
|
||||
"pretty-quick": "^4.0.0",
|
||||
"rollup-plugin-visualizer": "^5.12.0",
|
||||
"tailwind-gradient-mask-image": "^1.2.0",
|
||||
"tailwindcss": "^3.4.3",
|
||||
"vite": "^5.2.7"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,8 @@ tips-find_tracker = لست متأكد من أجهزة التعقب؟ قم بتح
|
||||
tips-do_not_move_heels = يرجى عدم تحريك كاحليك أثناء التسجيل!
|
||||
tips-file_select = اسحب الملفات وأفلتها لاستخدامها أو <u> تصفح </ u>
|
||||
tips-tap_setup = يمكنك النقر ببطء مرتين على جهاز التعقب لاختياره بدلاً من تحديده من القائمة.
|
||||
tips-turn_on_tracker = هل تستخدم أجهزة تعقب SlimeVR الرسمية؟ تذكر <b><em> أن تشغل أجهزة التعقب </em></b> بعد توصيلها بالكمبيوتر!
|
||||
tips-failed_webgl = فشل تهيئة WebGL.
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -144,6 +146,11 @@ widget-imu_visualizer-rotation_raw = صافي
|
||||
widget-imu_visualizer-rotation_preview = عرض مسبق
|
||||
widget-imu_visualizer-rotation_hide = إخفاء
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = إظهار الهيكل العظمي
|
||||
widget-skeleton_visualizer-hide = إخفاء
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = لا توجد حالة
|
||||
@@ -152,6 +159,7 @@ tracker-status-error = خطأ
|
||||
tracker-status-disconnected = فقد الاتصال
|
||||
tracker-status-occluded = محجوب
|
||||
tracker-status-ok = حسنًا
|
||||
tracker-status-timed_out = انتهت المهله
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -190,6 +198,7 @@ tracker-infos-hardware_rev = مراجعة الأجهزة
|
||||
tracker-infos-hardware_identifier = معرف الجهاز
|
||||
tracker-infos-imu = مستشعر IMU
|
||||
tracker-infos-board_type = اللوحة الرئيسية
|
||||
tracker-infos-network_version = نسخة البروتوكول
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -209,6 +218,9 @@ tracker-settings-drift_compensation_section-edit = السماح بتعويض ا
|
||||
tracker-settings-name_section = اسم جهاز التعقب
|
||||
tracker-settings-name_section-description = أعطها لقب لطيف :)
|
||||
tracker-settings-name_section-placeholder = ساق نايتي بيست اليسرى
|
||||
tracker-settings-forget = انسي جهاز التعقب
|
||||
tracker-settings-forget-description = يزيل جهاز التعقب من خادم SlimeVR ويمنعه من الاتصال به حتى يتم إعادة تشغيل الخادم. لن تضيع تكوين جهاز التعقب.
|
||||
tracker-settings-forget-label = ننسى جهاز التعقب
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -302,6 +314,14 @@ settings-general-steamvr-trackers-feet = القدمين
|
||||
settings-general-steamvr-trackers-knees = الركبتين
|
||||
settings-general-steamvr-trackers-elbows = الكوعين
|
||||
settings-general-steamvr-trackers-hands = اليدين
|
||||
settings-general-steamvr-trackers-tracker_toggling = تعيين جهاز التعقب تلقائي
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = يتعامل تلقائيا مع تبديل أجهزة تعقب SteamVR أو إيقاف تشغيلها اعتمادا على مهام التعقب الحالية
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = تعيين جهاز التعقب التلقائي
|
||||
settings-general-steamvr-trackers-hands-warning =
|
||||
<b>تحذير:</b> ستتجاوز أجهزة تعقب اليد وحدات التحكم الخاصة بك.
|
||||
هل أنت متأكد؟
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = إلغاء
|
||||
settings-general-steamvr-trackers-hands-warning-done = نعم
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -451,6 +471,12 @@ settings-general-interface-feedback_sound = صوت ردود الفعل
|
||||
settings-general-interface-feedback_sound-description = سيصدر هذا الخيار صوتًا عند تشغيل إعادة الضبط
|
||||
settings-general-interface-feedback_sound-label = صوت ردود الفعل
|
||||
settings-general-interface-feedback_sound-volume = حجم صوت ردود الفعل
|
||||
settings-general-interface-connected_trackers_warning = تحذير عن أجهزة التعقب المتصلة
|
||||
settings-general-interface-connected_trackers_warning-description = سيعرض هذا الخيار نافذة كل مرة تحاول فيها الخروج من SlimeVR أثناء وجود جهاز أو أكثر من أجهزة التعقب المتصلة. سيذكرك بإيقاف تشغيل أجهزة التعقب عند الانتهاء للحفاظ على عمر البطارية.
|
||||
settings-general-interface-connected_trackers_warning-label = تحذير عن أجهزة التعقب المتصلة عند الخروج
|
||||
settings-general-interface-use_tray = تصغير إلى علبة النظام
|
||||
settings-general-interface-use_tray-description = يتيح لك إغلاق النافذة دون إغلاق خادم SlimeVR حتى تتمكن من الاستمرار في استخدامه دون إزعاجك من واجهة المستخدم الرسومية.
|
||||
settings-general-interface-use_tray-label = تصغير إلى علبة النظام
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -472,6 +498,7 @@ settings-serial-factory_reset-warning-cancel = إلغاء
|
||||
settings-serial-get_infos = احصل على معلومات
|
||||
settings-serial-serial_select = اختر منفذ تسلسلي
|
||||
settings-serial-auto_dropdown_item = تلقائي
|
||||
settings-serial-get_wifi_scan = احصل على فحص WiFi
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -637,8 +664,8 @@ onboarding-done-close = إغلاق الدليل
|
||||
|
||||
onboarding-connect_tracker-back = العودة إلى بيانات اعتماد الواي فاي
|
||||
onboarding-connect_tracker-title = ربط أجهزة التعقب
|
||||
onboarding-connect_tracker-description-p0 = ننتقل الآن إلى الجزء الممتع ، ربط جميع أجهزة التعقب!
|
||||
onboarding-connect_tracker-description-p1 = ما عليك سوى توصيل كل ما لم يتم توصيله بعد من خلال منفذ يو أس بي.
|
||||
onboarding-connect_tracker-description-p0-v1 = ننتقل الآن إلى الجزء الممتع ، ربط أجهزة التعقب!
|
||||
onboarding-connect_tracker-description-p1-v1 = قم بتوصيل كل جهاز تعقب واحدا تلو الآخر من خلال منفذ USB.
|
||||
onboarding-connect_tracker-issue-serial = أواجه مشكلة في الاتصال!
|
||||
onboarding-connect_tracker-usb = جهاز تعقب يو أس بي
|
||||
onboarding-connect_tracker-connection_status-none = نبحث عن أجهزة التعقب
|
||||
@@ -706,6 +733,7 @@ onboarding-assign_trackers-assigned =
|
||||
}
|
||||
onboarding-assign_trackers-advanced = إظهار مواقع التعيين المتقدمة
|
||||
onboarding-assign_trackers-next = لقد عينت جميع أجهزة التعقب
|
||||
onboarding-assign_trackers-mirror_view = عرض المرآة
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -788,6 +816,13 @@ onboarding-choose_mounting-manual_mounting = التركيب اليدوي
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = المستحسن
|
||||
onboarding-choose_mounting-manual_mounting-description = سيسمح لك باختيار اتجاه التثبيت يدويًا لكل جهاز تعقب
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title =
|
||||
هل أنت متأكد من أنك تريد
|
||||
معايرة التركيب التلقائي؟
|
||||
onboarding-choose_mounting-manual_modal-description = <b>يوصى بمعايرة التركيب اليدوي للمستخدمين الجدد</b> ، حيث قد يكون من الصعب الحصول على أوضاع معايرة التركيب التلقائي الصحيحة من اول مرة وقد تتطلب بعض التمرين.
|
||||
onboarding-choose_mounting-manual_modal-confirm = أنا أعرف ماذا أفعل
|
||||
onboarding-choose_mounting-manual_modal-cancel = إلغاء
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -822,16 +857,17 @@ onboarding-automatic_mounting-put_trackers_on-next = ارتديت جميع أج
|
||||
|
||||
onboarding-choose_proportions = ما هي طريقة معايرة النسب التي يجب استخدامها؟
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description =
|
||||
تستخدم نسب الجسم لمعرفة قياسات جسمك. هم مطلوبون لحساب مواقع أجهزة التعقب.
|
||||
عندما لا تتطابق نسب جسمك مع تلك المحفوظة ، ستكون دقة التتبع لديك أسوأ وستلاحظ أشياء مثل التزلج أو الانزلاق ، أو أن جسمك لا يتطابق مع الصورة الرمزية بشكل جيد.
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
تستخدم نسب الجسم لمعرفة قياسات جسمك. إنهم مطالبون لحساب مواقع أجهزة التعقب.
|
||||
عندما لا تتطابق نسب جسمك مع تلك المحفوظة ، ستكون دقة التعقب أسوأ وستلاحظ أشياء مثل التزلج أو الانزلاق ، أو أن جسمك لا يتطابق مع صورتك الرمزية جيدا.
|
||||
<b>ما عليك سوى قياس جسمك مرة واحدة!</b> إن لم تكن خاطئة أو تغير جسمك ، فلن تحتاج إلى القيام بها مرة أخرى.
|
||||
onboarding-choose_proportions-auto_proportions = النسب التلقائية
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = الموصى به
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv2 =
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
سيؤدي ذلك إلى تخمين نسبك عن طريق تسجيل عينة من تحركاتك وتمريرها عبر خوارزمية.
|
||||
|
||||
<b>هذا يتطلب توصيل HMD الخاص بك ب SlimeVR!</b>
|
||||
<b>يتطلب ذلك توصيل جهاز الواقع الافتراضي (HMD) ب SlimeVR و وضعها على رأسك!</b>
|
||||
onboarding-choose_proportions-manual_proportions = النسب اليدوية
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = للمسات الصغيرة
|
||||
@@ -862,18 +898,20 @@ onboarding-automatic_proportions-put_trackers_on-description = لمعايرة ن
|
||||
onboarding-automatic_proportions-put_trackers_on-next = ارتديت جميع أجهزة التعقب.
|
||||
onboarding-automatic_proportions-requirements-title = المتطلبات
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
لديك على الأقل ما يكفي من أجهزة تعقب لتعقب قدميك (بشكل عام 5 أجهزة تعقب).
|
||||
ارتديت أجهزة التعقب وسماعة الرأس.
|
||||
شغلت أجهزة التعقب وسماعة الرأس.
|
||||
أجهزة التعقب وسماعات الرأس متصلة بسرفر سلايم في ار.
|
||||
تعمل أجهزة التتبع وسماعات الرأس بشكل صحيح داخل سرفر سلايم في ار .
|
||||
تقوم سماعة الرأس الخاصة بك بالإبلاغ عن بيانات الموقع إلى سرفر سلايم في ار (وهذا يعني بشكل عام تشغيل سلايم في ار وتوصيله بـ سلايم في ار باستخدام برنامج تشغيل ستيم في ار من سلايم في ار ).
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
لديك على الأقل ما يكفي من أجهزة التعقب لتتبع قدميك (بشكل عام 5 أجهزة تعقب).
|
||||
لديك أجهزة التعقب وجهاز الواقع الافتراضي الخاص بك وترتديهم.
|
||||
أجهزة التعقب وجهاز الواقع الافتراضي متصلة بخادم SlimeVR وتعمل بشكل صحيح (مثلاً، لا يوجد تأتأة أو قطع اتصال ، إلخ).
|
||||
يقوم جهاز الواقع الافتراضي بالإبلاغ عن البيانات الموضعية إلى خادم SlimeVR (وهذا يعني عموما تشغيل SteamVR وتوصيله ب SlimeVR باستخدام برنامج تشغيل SteamVR الخاص ب SlimeVR).
|
||||
يعمل التتبع الخاص بك ويمثل تحركاتك بدقة (على سبيل المثال ، لقد أجريت إعادة تعيين كاملة وتتحرك في الاتجاه الصحيح عند الركل, الانحناء, الجلوس, إلخ).
|
||||
onboarding-automatic_proportions-requirements-next = لقد قرأت المتطلبات
|
||||
onboarding-automatic_proportions-check_height-title = تحقق من طولك
|
||||
onboarding-automatic_proportions-check_height-description = نستخدم طولك كأساس لقياساتنا باستخدام ارتفاع HMD كتقريب لطولك الفعلي ، ولكن من الأفضل التحقق مما إذا كانت صحيحة بنفسك!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = يرجى الضغط على الزر أثناء الوقوف <u>في وضع مستقيم</u> لحساب طولك. لديك 3 ثوان بعد الضغط على الزر!
|
||||
onboarding-automatic_proportions-check_height-guardian_tip =
|
||||
إذا كنت تستخدم سماعة رأس VR مستقلة ، فتأكد من تشغيل حدود الحارس /
|
||||
لكي يكون طولك صحيحا!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = أنا واقف!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = مجهول
|
||||
@@ -924,6 +962,15 @@ onboarding-automatic_proportions-error_modal-confirm = مفهوم!
|
||||
|
||||
home-no_trackers = لم يتم الكشف أو تعيين عن أي جهاز تعقب
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = أجهزة التعقب لا تزال قيد التشغيل
|
||||
trackers_still_on-modal-description =
|
||||
لا يزال واحد أو أكثر من أجهزة التعقب قيد التشغيل.
|
||||
هل مازلت تريد الخروج من SlimeVR؟
|
||||
trackers_still_on-modal-confirm = الخروج من SlimeVR
|
||||
trackers_still_on-modal-cancel = انتظر...
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = يوصى بإجراء إعادة تعيين كاملة نظرًا لعدم تعديل واحد أو أكثر من أجهزة التعقب.
|
||||
@@ -933,3 +980,31 @@ status_system-StatusSteamVRDisconnected =
|
||||
*[other] حاليًا غير متصل بـ SteamVR عبر برنامج تشغيل SlimeVR.
|
||||
}
|
||||
status_system-StatusTrackerError = يحتوي جهاز التعقب { $trackerName } على خطأ.
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = عرض
|
||||
tray_menu-hide = إخفاء
|
||||
tray_menu-quit = انهاء
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = ماذا يجب أن يفعل زر الإغلاق؟
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
يتيح لك ذلك اختيار ما إذا كنت تريد الخروج من الخادم أو تصغيره إلى علبة النظام عند الضغط على زر الإغلاق.
|
||||
|
||||
يمكنك تغيير هذا لاحقا في إعدادات الواجهة!
|
||||
tray_or_exit_modal-radio-exit = الخروج عند الإغلاق
|
||||
tray_or_exit_modal-radio-tray = تصغير إلى علبة النظام
|
||||
tray_or_exit_modal-submit = احفظ
|
||||
tray_or_exit_modal-cancel = إلغاء
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = تم العثور على جهاز تعقب جديد!
|
||||
unknown_device-modal-description =
|
||||
هناك جهاز تعقب جديد مع عنوان MAC <b>{ $deviceId }</b>.
|
||||
هل تريد توصيله ب SlimeVR؟
|
||||
unknown_device-modal-confirm = أكيد
|
||||
unknown_device-modal-forget = تجاهلها
|
||||
|
||||
@@ -8,15 +8,23 @@
|
||||
## Websocket (server) status
|
||||
|
||||
websocket-connecting = Připojování k serveru
|
||||
websocket-connection_lost = Ztráta spojení se serverem. Pokus o obnovení připojení...
|
||||
websocket-connection_lost = Ztraceno spojení se serverem. Pokouším se znovu připojit...
|
||||
|
||||
## Update notification
|
||||
|
||||
version_update-title = K dispozici je nová verze: { $version }
|
||||
version_update-description = Kliknutím na "{ version_update-update }", stáhnete instalační program SlimeVR.
|
||||
version_update-update = Aktualizace
|
||||
version_update-close = Zavřít
|
||||
|
||||
## Tips
|
||||
|
||||
tips-find_tracker = Nejste si jisti, který tracker je který? Zatřeste tracker a zvýrazní se odpovídající položka.
|
||||
tips-do_not_move_heels = Ujistěte se, že se vaše paty během nahrávání nepohybují!
|
||||
tips-do_not_move_heels = Během nahrávání se ujistěte, že se vaše paty nepohybují!
|
||||
tips-file_select = Nahrajte soubory přetažením zde, nebo tlačítkem <u>procházet</u>
|
||||
tips-tap_setup = Pro výběr trackeru na něj můžete dvakrát pomalu poklepat, místo výběru z nabídky.
|
||||
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.
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -30,6 +38,7 @@ body_part-RIGHT_HAND = Pravá ruka
|
||||
body_part-RIGHT_UPPER_LEG = Pravé stehno
|
||||
body_part-RIGHT_LOWER_LEG = Pravý kotník
|
||||
body_part-RIGHT_FOOT = Pravá noha
|
||||
body_part-UPPER_CHEST = Horní část hrudníku
|
||||
body_part-CHEST = Hrudník
|
||||
body_part-WAIST = Pás
|
||||
body_part-HIP = Kyčel
|
||||
@@ -46,12 +55,15 @@ body_part-LEFT_FOOT = Levá noha
|
||||
skeleton_bone-NONE = Žádný
|
||||
skeleton_bone-HEAD = Posun hlavy
|
||||
skeleton_bone-NECK = Délka krku
|
||||
skeleton_bone-CHEST = Délka hrudníku
|
||||
skeleton_bone-torso_group = Délka trupu
|
||||
skeleton_bone-UPPER_CHEST = Horní délka hrudníku
|
||||
skeleton_bone-CHEST_OFFSET = Odsazení hrudníku
|
||||
skeleton_bone-CHEST = Délka hrudníku
|
||||
skeleton_bone-WAIST = Délka pasu
|
||||
skeleton_bone-HIP = Délka kyčlí
|
||||
skeleton_bone-HIP_OFFSET = Odsazení hrudníku
|
||||
skeleton_bone-HIPS_WIDTH = Šířka kyčlí
|
||||
skeleton_bone-leg_group = Délka nohy
|
||||
skeleton_bone-UPPER_LEG = Délka horní části nohy
|
||||
skeleton_bone-LOWER_LEG = Délka dolní části nohy
|
||||
skeleton_bone-FOOT_LENGTH = Délka chodidla
|
||||
@@ -59,23 +71,27 @@ skeleton_bone-FOOT_SHIFT = Odsazení chodidla
|
||||
skeleton_bone-SKELETON_OFFSET = Odsazení kostry
|
||||
skeleton_bone-SHOULDERS_DISTANCE = Vzdálenost ramen
|
||||
skeleton_bone-SHOULDERS_WIDTH = Šířka ramen
|
||||
skeleton_bone-arm_group = Délka paže
|
||||
skeleton_bone-UPPER_ARM = Délka nadloktí
|
||||
skeleton_bone-LOWER_ARM = Délka podloktí
|
||||
skeleton_bone-HAND_Y = Vzdálenost ruky na ose Y
|
||||
skeleton_bone-HAND_Z = Vzdálenost ruky na ose Z
|
||||
skeleton_bone-ELBOW_OFFSET = Odsazení loktů
|
||||
|
||||
## Tracker reset buttons
|
||||
|
||||
reset-reset_all = Obnovení všech proporcí
|
||||
reset-full = Resetovat
|
||||
reset-mounting = Obnovit montáž
|
||||
reset-reset_all = Obnovit nastavení proporcí
|
||||
reset-full = Plný Reset
|
||||
reset-mounting = Znovu nastavit nasazení
|
||||
reset-yaw = Rychlý reset
|
||||
|
||||
## Serial detection stuff
|
||||
|
||||
serial_detection-new_device-p0 = Nové sériové zařízení detekováno!
|
||||
serial_detection-new_device-p0 = Bylo detekováno nové sériové zařízení!
|
||||
serial_detection-new_device-p1 = Zadejte přihlašovací údaje Wi-Fi!
|
||||
serial_detection-new_device-p2 = Vyberte prosím, co s tím chcete udělat
|
||||
serial_detection-new_device-p2 = Vyberte akci kterou chcete vykonat.
|
||||
serial_detection-open_wifi = Připojit se k Wi-Fi
|
||||
serial_detection-open_serial = Otevřít sériovou konzolu
|
||||
serial_detection-open_serial = Otevřít sériovou konzoly
|
||||
serial_detection-submit = Odeslat!
|
||||
serial_detection-close = Zavřít
|
||||
|
||||
@@ -84,13 +100,13 @@ serial_detection-close = Zavřít
|
||||
navbar-home = Domů
|
||||
navbar-body_proportions = Tělesné proporce
|
||||
navbar-trackers_assign = Přiřazení trackerů
|
||||
navbar-mounting = Montážní kalibrace
|
||||
navbar-mounting = Kalibrace nasazení
|
||||
navbar-onboarding = Průvodce nastavením
|
||||
navbar-settings = Nastavení
|
||||
|
||||
## Biovision hierarchy recording
|
||||
|
||||
bvh-start_recording = Nahrávat BVH
|
||||
bvh-start_recording = Nahrát BVH
|
||||
bvh-recording = Nahrávání...
|
||||
|
||||
## Tracking pause
|
||||
@@ -108,13 +124,17 @@ widget-overlay-is_mirrored_label = Zobrazit překrytí jako zrcadlo
|
||||
|
||||
widget-drift_compensation-clear = Vymazat kompenzaci driftu
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
|
||||
widget-clear_mounting = Vymazat reset nasazení
|
||||
|
||||
## Widget: Developer settings
|
||||
|
||||
widget-developer_mode = Vývojářský režim
|
||||
widget-developer_mode-high_contrast = Vysoký kontrast
|
||||
widget-developer_mode-precise_rotation = Přesná rotace
|
||||
widget-developer_mode-fast_data_feed = Rychlý přenos dat
|
||||
widget-developer_mode-filter_slimes_and_hmd = Filtrovat slimy a HMD
|
||||
widget-developer_mode-filter_slimes_and_hmd = Filtrovat trackery a HMD
|
||||
widget-developer_mode-sort_by_name = Seřadit podle názvu
|
||||
widget-developer_mode-raw_slime_rotation = Nezpracovaná rotace
|
||||
widget-developer_mode-more_info = Více informací
|
||||
@@ -126,6 +146,11 @@ widget-imu_visualizer-rotation_raw = Nezpracované
|
||||
widget-imu_visualizer-rotation_preview = Náhled
|
||||
widget-imu_visualizer-rotation_hide = Skrýt
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Náhled kostry
|
||||
widget-skeleton_visualizer-hide = Skrýt
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = Žádný stav
|
||||
@@ -134,6 +159,7 @@ tracker-status-error = Chyba
|
||||
tracker-status-disconnected = Odpojeno
|
||||
tracker-status-occluded = Zakrytý
|
||||
tracker-status-ok = OK
|
||||
tracker-status-timed_out = Spojení přerušeno
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -151,38 +177,49 @@ tracker-table-column-url = URL
|
||||
## Tracker rotation
|
||||
|
||||
tracker-rotation-front = Přední
|
||||
tracker-rotation-front_left = Vpředu vlevo
|
||||
tracker-rotation-front_right = Vpředu vpravo
|
||||
tracker-rotation-left = Levá
|
||||
tracker-rotation-right = Pravá
|
||||
tracker-rotation-back = Zadní
|
||||
tracker-rotation-back_left = Vzadu vlevo
|
||||
tracker-rotation-back_right = Vzadu vpravo
|
||||
tracker-rotation-custom = Vlastní nastavení
|
||||
tracker-rotation-overriden = (přepsáno kalibrací nasazení)
|
||||
|
||||
## Tracker information
|
||||
|
||||
tracker-infos-manufacturer = Výrobce
|
||||
tracker-infos-display_name = Zobrazovaný název
|
||||
tracker-infos-display_name = Zobrazený název
|
||||
tracker-infos-custom_name = Vlastní název
|
||||
tracker-infos-url = URL Trackeru
|
||||
tracker-infos-version = Verze firmwaru
|
||||
tracker-infos-hardware_rev = Revize hardwaru
|
||||
tracker-infos-hardware_identifier = ID hardwaru
|
||||
tracker-infos-imu = Senzor IMU
|
||||
tracker-infos-board_type = Základní deska
|
||||
tracker-infos-network_version = Verze protokolu
|
||||
|
||||
## Tracker settings
|
||||
|
||||
tracker-settings-back = Zpět na seznam trackerů
|
||||
tracker-settings-title = Nastavení trackeru
|
||||
tracker-settings-assignment_section = Přiřazení
|
||||
tracker-settings-assignment_section-description = K jaké části těla je tracker přiřazen.
|
||||
tracker-settings-assignment_section-description = Na kterou část těla je tracker přiřazen?
|
||||
tracker-settings-assignment_section-edit = Upravit přiřazení
|
||||
tracker-settings-mounting_section = Montážní poloha
|
||||
tracker-settings-mounting_section-description = Kde je tracker namontován?
|
||||
tracker-settings-mounting_section-edit = Upravit montáž
|
||||
tracker-settings-mounting_section = Poloha nasazení
|
||||
tracker-settings-mounting_section-description = Na jakou stranu je tracker nasazený?
|
||||
tracker-settings-mounting_section-edit = Upravit nasazení
|
||||
tracker-settings-drift_compensation_section = Povolit kompenzaci driftu
|
||||
tracker-settings-drift_compensation_section-description = Měl by tento tracker kompenzovat svůj drift, když je zapnuta kompenzace driftu?
|
||||
tracker-settings-drift_compensation_section-edit = Povolit kompenzaci driftu
|
||||
# The .<name> means it's an attribute and it's related to the top key.
|
||||
# In this case that is the settings for the assignment section.
|
||||
tracker-settings-name_section = Název trackeru
|
||||
tracker-settings-name_section-description = Dejte tomu nějakou roztomilou přezdívku :)
|
||||
tracker-settings-name_section-placeholder = Levá noha NightyBeast
|
||||
tracker-settings-name_section-description = Třeba nějakou roztomilou přezdívku :)
|
||||
tracker-settings-name_section-placeholder = Erimelova levá tlapka
|
||||
tracker-settings-forget = Zapomenout tracker
|
||||
tracker-settings-forget-label = Zapomenout tracker
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -192,7 +229,7 @@ tracker-part_card-unassigned = Nepřiřazeno
|
||||
## Body assignment menu
|
||||
|
||||
body_assignment_menu = Kde chcete, aby tento tracker byl?
|
||||
body_assignment_menu-description = Zvolte umístění, kam má být tento tracker přiřazen. Případně můžete spravovat všechny trackery najednou, místo jednoho po druhém.
|
||||
body_assignment_menu-description = Vyberte, kam chcete tento tracker umístit. Nebo můžete spravovat všechny trackery najednou, místo jednoho po druhém.
|
||||
body_assignment_menu-show_advanced_locations = Zobrazit pokročilá místa přiřazení
|
||||
body_assignment_menu-manage_trackers = Spravovat všechny trackery
|
||||
body_assignment_menu-unassign_tracker = Zrušit přiřazení trackeru
|
||||
@@ -216,6 +253,7 @@ tracker_selection_menu-RIGHT_UPPER_LEG = { -tracker_selection-part } pravému st
|
||||
tracker_selection_menu-RIGHT_LOWER_LEG = { -tracker_selection-part } pravému kotníku?
|
||||
tracker_selection_menu-RIGHT_FOOT = { -tracker_selection-part } pravému chodidlu?
|
||||
tracker_selection_menu-RIGHT_CONTROLLER = { -tracker_selection-part } pravému ovladači?
|
||||
tracker_selection_menu-UPPER_CHEST = { -tracker_selection-part } k horní část hrudníku?
|
||||
tracker_selection_menu-CHEST = { -tracker_selection-part } hrudníku?
|
||||
tracker_selection_menu-WAIST = { -tracker_selection-part } pasu?
|
||||
tracker_selection_menu-HIP = Který tracker přiřadit ke kyčli?
|
||||
@@ -233,9 +271,9 @@ tracker_selection_menu-dont_assign = Nepřiřazovat
|
||||
# This line cares about multilines.
|
||||
# <b>text</b> means that the text should be bold.
|
||||
tracker_selection_menu-neck_warning =
|
||||
<b>Varování:</b> Příliš pevně nastavený tracker krku může být smrtelně nebezpečný,
|
||||
popruh může přerušit krevní oběh v hlavě!
|
||||
tracker_selection_menu-neck_warning-done = Chápu rizika
|
||||
<b>Varování:</b> Krční tracker může být smrtelný, pokud je popruh
|
||||
utažen příliš těsně. Popruh by mohl přerušit krevní oběh do hlavy!
|
||||
tracker_selection_menu-neck_warning-done = Chápu riziko
|
||||
tracker_selection_menu-neck_warning-cancel = Zrušit
|
||||
|
||||
## Mounting menu
|
||||
@@ -252,8 +290,11 @@ settings-sidebar-fk_settings = Nastavení trackování
|
||||
settings-sidebar-gesture_control = Ovládání gesty
|
||||
settings-sidebar-interface = Rozhraní
|
||||
settings-sidebar-osc_router = OSC router
|
||||
settings-sidebar-osc_trackers = VRChat OSC tracker
|
||||
settings-sidebar-utils = Nástroje
|
||||
settings-sidebar-serial = Sériová konzole
|
||||
settings-sidebar-appearance = Vzhled
|
||||
settings-sidebar-notifications = Notifikace
|
||||
|
||||
## SteamVR settings
|
||||
|
||||
@@ -268,10 +309,10 @@ settings-general-steamvr-description =
|
||||
Užitečné pro hry nebo aplikace, které podporují pouze určité trackery.
|
||||
settings-general-steamvr-trackers-waist = Pás
|
||||
settings-general-steamvr-trackers-chest = Hrudník
|
||||
settings-general-steamvr-trackers-feet = Chodidla
|
||||
settings-general-steamvr-trackers-knees = Kolena
|
||||
settings-general-steamvr-trackers-elbows = Lokty
|
||||
settings-general-steamvr-trackers-hands = Ruce
|
||||
settings-general-steamvr-trackers-tracker_toggling = Automatické přiřazení trackeru
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = Automaticky zapne trackery ve SteamVR v závislosti na aktuálním přiřazením trackerů.
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = Zrušit
|
||||
settings-general-steamvr-trackers-hands-warning-done = Ano
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -283,11 +324,11 @@ settings-general-tracker_mechanics-filtering-description =
|
||||
Predikce předpovídá pohyb, zatímco vyhlazování pohyb vyhlazuje.
|
||||
settings-general-tracker_mechanics-filtering-type = Typ filtrování
|
||||
settings-general-tracker_mechanics-filtering-type-none = Žádné filtrování
|
||||
settings-general-tracker_mechanics-filtering-type-none-description = Použít rotaci tak, jak e. Nebude se provádět žádné filtrování.
|
||||
settings-general-tracker_mechanics-filtering-type-none-description = Použít rotace tak, jak jsou. Nebude provedeno žádné filtrování.
|
||||
settings-general-tracker_mechanics-filtering-type-smoothing = Vyhlazování
|
||||
settings-general-tracker_mechanics-filtering-type-smoothing-description = Vyhlazuje pohyby, ale přidává určité zpoždění.
|
||||
settings-general-tracker_mechanics-filtering-type-smoothing-description = Vyhlazuje pohyby, ale přidává mírné zpoždění.
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Predikce
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Snižuje zpoždění a zrychluje pohyby, ale může zvýšit jitter.
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Zkracuje prodlevu a zrychluje pohyby, ale může způsobit třesení trackerů.
|
||||
settings-general-tracker_mechanics-filtering-amount = Množství
|
||||
settings-general-tracker_mechanics-drift_compensation = Kompenzace driftu
|
||||
# This cares about multilines
|
||||
@@ -297,6 +338,7 @@ settings-general-tracker_mechanics-drift_compensation-description =
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Kompenzace driftu
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = Množství kompenzace
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Použít až x posledních obnovení
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Uložit "Kalibraci nasazení"
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -310,17 +352,32 @@ settings-general-fk_settings-leg_tweak-floor_clip = Podlahovej clip
|
||||
# since this largely prevents this it corrects for it hence skating correction (note this may be renamed to sliding correction)
|
||||
# definition - Guesses when each foot is in contact with the ground and uses that information to improve tracking
|
||||
settings-general-fk_settings-leg_tweak-skating_correction = Korekce bruslení
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-amount = Síla korekce bruslení
|
||||
settings-general-fk_settings-leg_tweak-toe_snap = Přichycení špiček
|
||||
settings-general-fk_settings-leg_tweak-foot_plant = Narovnání chodidla
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-amount = Síla korekce "bruslení"
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-description = Korekce bruslení snižuje effect "bruslení", ale může snížit přesnost u některých pohybů. Pokud tuto funkci povolíte, nezapomeňte provést úplný reset a zkalibrovat se ve hře.
|
||||
settings-general-fk_settings-leg_tweak-floor_clip-description = Připnutí k podlaze může zlepšit nebo dokonce zabránit propadání trackerů podlahou. Při zapnutí této funkce nezapomeňte provést úplný reset a zkalibrovat se ve hře.
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = Přichycení špiček se pokouší odhadnout rotaci vašich chodidel v případě, že nepoužíváte trackery chodidel.
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = Narovnání chodidla při dotyku narovnává chodidla tak, aby byla rovnoběžně se zemí.
|
||||
settings-general-fk_settings-leg_fk = Sledování nohou
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Aktivovat reset nasazení nohou stoupnutím na špičky.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Reset nasazení nohou
|
||||
settings-general-fk_settings-arm_fk = Trackování ramen
|
||||
settings-general-fk_settings-arm_fk-description = Změna způsobu sledování ramen.
|
||||
settings-general-fk_settings-arm_fk-force_arms = Vynucení ramen z HMD
|
||||
settings-general-fk_settings-skeleton_settings = Nastavení kostry
|
||||
settings-general-fk_settings-arm_fk-description = Vynutit sledování rukou z VR headsetu, i když jsou k dispozici údaje o poloze rukou z trackerů.
|
||||
settings-general-fk_settings-arm_fk-force_arms = Vynutit ruce z VR Headsetu
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Nastavte pózu rukou použitá pro reset nasazení.
|
||||
settings-general-fk_settings-arm_fk-back = Paže dozadu
|
||||
settings-general-fk_settings-arm_fk-back-description = Výchozí režim: paže směřují dozadu, předloktí dopředu.
|
||||
settings-general-fk_settings-arm_fk-tpose_up = T-póza (ruce nahoru)
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Před zahájením plného resetu, očekává že stojíte vzpřímeně a máte paže volně spuštěné podél těla. A pro reset umístění zaujměte uvolněný postoj a pomalu zvedněte paže do pozice Téčka (90 stupňů jako písmeno T).
|
||||
settings-general-fk_settings-arm_fk-tpose_down = T-póza (ruce dolů)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = Před zahájením plného resetu, očekává že zaujmete uvolněný postoj a pomalu zvednete paže do pozice Téčka (90 stupňů jako písmeno T). A pro reset umístění, že stojíte vzpřímeně a máte paže volně spuštěné podél těla.
|
||||
settings-general-fk_settings-arm_fk-forward = Vpřed
|
||||
settings-general-fk_settings-arm_fk-forward-description = Ideální pozice pro Vtubing: zvedněte paže do 90 stupňového úhlu. (90 stupňů jako písmeno T).
|
||||
settings-general-fk_settings-skeleton_settings-description = Zapnutí nebo vypnutí nastavení kostry. Je doporučeno je ponechat zapnuté.
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine = Prodloužená páteř
|
||||
settings-general-fk_settings-skeleton_settings-extended_pelvis = Prodloužená pánev
|
||||
settings-general-fk_settings-skeleton_settings-extended_knees = Prodloužené koleno
|
||||
settings-general-fk_settings-self_localization-description = Režim Mocap je experimentální funkce, která dokáže přibližně určit polohu vašeho těla bez VR Headsetu a dalších trackerů. Pro správnou funkci je však nutné mít trackery pro nohy a hlavu.
|
||||
settings-general-fk_settings-vive_emulation-title = Vive emulace
|
||||
settings-general-fk_settings-vive_emulation-description = Napodobit problémy se sledováním pasu, které mají trackery Vive. Tohle je vtip a zhoršuje sledování.
|
||||
settings-general-fk_settings-vive_emulation-description = Napodobit problémy Vive trackerů. Tohle je jenom pro vtip a zhoršuje trackování.
|
||||
settings-general-fk_settings-vive_emulation-label = Povolení emulace Vive
|
||||
|
||||
## Gesture control settings (tracker tapping)
|
||||
@@ -336,22 +393,54 @@ settings-general-gesture_control-taps =
|
||||
[few] { $amount } klepnutí
|
||||
*[other] { $amount } klepnutí
|
||||
}
|
||||
# This is a unit: 3 trackers, 2 trackers, 1 tracker
|
||||
# $amount (Number) - Amount of trackers
|
||||
settings-general-gesture_control-trackers =
|
||||
{ $amount ->
|
||||
[one] 1 tracker
|
||||
[few] { $amount } trackerů
|
||||
[many] { $amount } trackerů
|
||||
*[other] { $amount } trackerů
|
||||
}
|
||||
settings-general-gesture_control-mountingResetEnabled = Povolit klepnutí pro resetování montáže
|
||||
settings-general-gesture_control-mountingResetDelay = Zpoždění resetování montáže
|
||||
settings-general-gesture_control-mountingResetTaps = Klepnutí pro resetování montáže
|
||||
settings-general-gesture_control-numberTrackersOverThreshold-description = Zvyšte tuto hodnotu, pokud detekce klepnutí nefunguje. Nepřekračujte ji nad hodnotu, která je potřebná k tomu, aby detekce klepnutí fungovala, protože by to mohlo způsobit více falešně pozitivních klepnutí.
|
||||
|
||||
## Interface settings
|
||||
## Appearance settings
|
||||
|
||||
settings-general-interface = Rozhraní
|
||||
settings-interface-appearance = Vzhled
|
||||
settings-general-interface-dev_mode = Vývojářský režim
|
||||
settings-general-interface-dev_mode-description = Tento režim může být užitečný, pokud potřebujete podrobné údaje nebo omunikovat s trackerama na pokročilejší úrovni.
|
||||
settings-general-interface-dev_mode-label = Vývojářský režim
|
||||
settings-general-interface-serial_detection = Detekce sériových zařízení
|
||||
settings-general-interface-serial_detection-description = Tato možnost zobrazí pop-up pokaždé, když připojíte nové sériové zařízení, které by mohlo být trackerem. Pomáhá zlepšit proces nastavení trackeru.
|
||||
settings-general-interface-serial_detection-label = Detekce sériových zařízení
|
||||
settings-general-interface-theme = Barva tématu
|
||||
settings-general-interface-lang = Zvolte jazyk
|
||||
settings-general-interface-lang-description = Změňte výchozí jazyk, který chcete používat.
|
||||
settings-general-interface-lang-placeholder = Zvolte jazyk, který chcete používat.
|
||||
# Keep the font name untranslated
|
||||
settings-interface-appearance-font = Font rozhraní
|
||||
settings-interface-appearance-font-placeholder = Toto změní písmo používané v rozhraní.
|
||||
settings-interface-appearance-font-os_font = Systémový font
|
||||
settings-interface-appearance-font-slime_font = Výchozí font
|
||||
settings-interface-appearance-font_size = Výchozí velikost písma
|
||||
settings-interface-appearance-font_size-description = Toto ovlivňuje velikost písma celého rozhraní, s výjimkou panelu nastavení.
|
||||
|
||||
## Notification settings
|
||||
|
||||
settings-interface-notifications = Notifikace
|
||||
settings-general-interface-serial_detection = Detekce sériových zařízení
|
||||
settings-general-interface-serial_detection-description = Tato možnost zobrazí pop-up pokaždé, když připojíte nové sériové zařízení, které by mohlo být trackerem. Pomáhá zlepšit proces nastavení trackeru.
|
||||
settings-general-interface-serial_detection-label = Detekce sériových zařízení
|
||||
settings-general-interface-feedback_sound = Zvuk zpětné vazby
|
||||
settings-general-interface-feedback_sound-description = Tato možnost spustí zvuk, když je aktivován reset.
|
||||
settings-general-interface-feedback_sound-label = Zvuk zpětné vazby
|
||||
settings-general-interface-feedback_sound-volume = Hlasitost zvuku zpětné vazby
|
||||
settings-general-interface-connected_trackers_warning = Upozornění o připojených trackerů
|
||||
settings-general-interface-connected_trackers_warning-description = Tato možnost zobrazí vyskakovací okno pokaždé, když se pokusíte opustit SlimeVR, když máte připojen jeden nebo více trackerů. Připomene vám, abyste vypnuli své trackery, až budete hotovi, abyste prodloužili životnost baterie.
|
||||
settings-general-interface-connected_trackers_warning-label = Upozornění o připojených trackerech při ukončení
|
||||
settings-general-interface-use_tray = Minimalizovat do oznamovací oblasti
|
||||
settings-general-interface-use_tray-description = Umožňuje vám zavřít okno, aniž byste zavřeli SlimeVR Server, takže ho můžete nadále používat bez rozhraní.
|
||||
settings-general-interface-use_tray-label = Minimalizovat do oznamovací oblasti
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -373,6 +462,7 @@ settings-serial-factory_reset-warning-cancel = Zrušit
|
||||
settings-serial-get_infos = Získat informace
|
||||
settings-serial-serial_select = Vyberte sériový port
|
||||
settings-serial-auto_dropdown_item = Auto
|
||||
settings-serial-get_wifi_scan = Skenovat WiFi
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -430,12 +520,45 @@ settings-osc-vrchat-network-trackers-elbows = Lokty
|
||||
|
||||
## VMC OSC settings
|
||||
|
||||
settings-osc-vmc = Virtuální snímání pohybu (Také známo jako Virtual Motion Capture)
|
||||
settings-osc-vmc-enable = Zapnout
|
||||
settings-osc-vmc-enable-description = Vypnutí a zapnutí odesílání a přijímání dat.
|
||||
settings-osc-vmc-enable-label = Zapnout
|
||||
settings-osc-vmc-network = Síťové porty
|
||||
settings-osc-vmc-network-description = Nastavte porty pro poslech a odesílání dat pomocí VMC.
|
||||
settings-osc-vmc-network-port_in =
|
||||
.label = Port pro příjem
|
||||
.placeholder = Port pro příjem (výchozí: 39540)
|
||||
settings-osc-vmc-network-port_out =
|
||||
.label = Port pro odesílání
|
||||
.placeholder = Port pro odesílání (výchozí: 39539)
|
||||
settings-osc-vmc-network-address = Síťová adresa
|
||||
settings-osc-vmc-network-address-description = Vyberte, na kterou adresu odesílat data pomocí VMC.
|
||||
settings-osc-vmc-network-address-placeholder = Adresa IPV4
|
||||
settings-osc-vmc-vrm = VRM Model
|
||||
settings-osc-vmc-vrm-description = Načtěte VRM model, k umožnení lepšímu sledování hlavy a zlepšení kompatibility s dalšími aplikacemi.
|
||||
settings-osc-vmc-vrm-model_unloaded = Není načten žádný model
|
||||
settings-osc-vmc-vrm-model_loaded =
|
||||
{ $titled ->
|
||||
[true] Model načten: { $name }
|
||||
*[false] Načten neznámý model
|
||||
}
|
||||
settings-osc-vmc-vrm-file_select = Přetáhněte zde model, který chcete použít, nebo <u>procházejte</u>
|
||||
settings-osc-vmc-anchor_hip = Zakotvit v bocích
|
||||
settings-osc-vmc-anchor_hip-description = Zakotvit sledování u boků, užitečné pro VTubing kde sedíte. Pokud je deaktivováno, načíst VRM model.
|
||||
settings-osc-vmc-anchor_hip-label = Zakotvit v bocích
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Přeskočit nastavení
|
||||
onboarding-continue = Pokračovat
|
||||
onboarding-wip = Probíhající práce
|
||||
onboarding-previous_step = Předchozí krok
|
||||
onboarding-setup_warning =
|
||||
<b>Varování:</b> Pro dobré trackování je vyžadována počáteční kalibrace a nastavení,
|
||||
Je nutné, pokud používáte SlimeVR poprvé.
|
||||
onboarding-setup_warning-skip = Přeskočit nastavení
|
||||
onboarding-setup_warning-cancel = Pokračovat v nastavení
|
||||
|
||||
## Wi-Fi setup
|
||||
|
||||
@@ -458,6 +581,19 @@ onboarding-wifi_creds-password =
|
||||
|
||||
onboarding-reset_tutorial-back = Zpět na kalibraci montáže
|
||||
onboarding-reset_tutorial = Obnovit tutoriál
|
||||
onboarding-reset_tutorial-explanation = Během používání trackerů může dojít k jejich vychýlení, ať už kvůli nepřesnostem gyroskopu nebo jejich fyzickému posunutí. Existuje ale několik způsobů, jak to napravit.
|
||||
onboarding-reset_tutorial-skip = Přeskočit krok
|
||||
# Cares about multiline
|
||||
onboarding-reset_tutorial-0 =
|
||||
Klepněte na zvýrazněný snímač { $taps } krát pro resetování rotace.
|
||||
|
||||
Tím nastavíte snímače tak, aby směřovaly stejným směrem jako váš headset (HMD).
|
||||
# Cares about multiline
|
||||
onboarding-reset_tutorial-1 =
|
||||
Pro plný reset poklepejte { $taps } krát na zvýrazněný tracker.
|
||||
|
||||
Pro tuto funkci musíte stát v základní pozici (ruce podél těla). Před provedením resetu je zde 3 sekundová prodleva (lze nastavit).
|
||||
Tímto se kompletně resetuje pozice a rotace všech vašich trackerů, což by mělo vyřešit většinu problémů.
|
||||
|
||||
## Setup start
|
||||
|
||||
@@ -481,12 +617,16 @@ onboarding-done-close = Zavřít průvodce
|
||||
|
||||
onboarding-connect_tracker-back = Zpět na přihlašovací údaje Wi-Fi
|
||||
onboarding-connect_tracker-title = Připojení trackerů
|
||||
onboarding-connect_tracker-description-p0 = A teď ta zábavná část, propojení všech trackerů!
|
||||
onboarding-connect_tracker-description-p1 = Všechny zatím nepřipojené jednoduše připojte přes USB.
|
||||
onboarding-connect_tracker-issue-serial = Mám potíže s připojením!
|
||||
onboarding-connect_tracker-usb = USB Tracker
|
||||
onboarding-connect_tracker-connection_status-connecting = Odesílání přihlašovacích údajů Wi-Fi
|
||||
onboarding-connect_tracker-connection_status-none = Hledám trackery
|
||||
onboarding-connect_tracker-connection_status-serial_init = Připojuji se k sériovému zařízení
|
||||
onboarding-connect_tracker-connection_status-provisioning = Odesílám přihlašovací údaje WiFi
|
||||
onboarding-connect_tracker-connection_status-connecting = Pokouším se připojit k WiFi
|
||||
onboarding-connect_tracker-connection_status-looking_for_server = Hledám server
|
||||
onboarding-connect_tracker-connection_status-connection_error = Nelze se připojit k síti Wi-Fi
|
||||
onboarding-connect_tracker-connection_status-could_not_find_server = Nelze najít server
|
||||
onboarding-connect_tracker-connection_status-done = Připojeno k serveru
|
||||
# $amount (Number) - Amount of trackers connected (this is a number, but you can use CLDR plural rules for your language)
|
||||
# More info on https://www.unicode.org/cldr/cldr-aux/charts/22/supplemental/language_plural_rules.html
|
||||
# English in this case only has 2 plural rules, which are "one" and "other",
|
||||
@@ -496,97 +636,195 @@ onboarding-connect_tracker-connected_trackers =
|
||||
{ $amount ->
|
||||
[0] Žádné připojené trackery
|
||||
[one] 1 připojený tracker
|
||||
[few] { $amount } připojený trackery
|
||||
[few] { $amount } připojené trackery
|
||||
*[other] { $amount } připojených trackerů
|
||||
}
|
||||
onboarding-connect_tracker-next = Připojil jsem všechny své trackery
|
||||
|
||||
## Tracker calibration tutorial
|
||||
|
||||
onboarding-calibration_tutorial = Kalibrační návod pro IMU
|
||||
onboarding-calibration_tutorial-subtitle = Tohle pomůže snížit drift trackerů!
|
||||
onboarding-calibration_tutorial-description = Po každém zapnutí trackerů je potřeba je na chvíli položit na rovný povrch, aby se zkalibrovaly. Stejný postup provedeme teď kliknutím na tlačítko "{ onboarding-calibration_tutorial-calibrate }". <b>Během kalibrace jimi prosím nehýbejte!</b>
|
||||
onboarding-calibration_tutorial-calibrate = Položil jsem trackery na stůl
|
||||
onboarding-calibration_tutorial-status-waiting = Čekám na tebe
|
||||
onboarding-calibration_tutorial-status-calibrating = Kalibruji
|
||||
onboarding-calibration_tutorial-status-success = Super!
|
||||
onboarding-calibration_tutorial-status-error = Trackerem bylo pohnuto.
|
||||
|
||||
## Tracker assignment tutorial
|
||||
|
||||
onboarding-assignment_tutorial = Jak připravit Slime Tracker před nasazením
|
||||
onboarding-assignment_tutorial-first_step = 1. Umístěte na tracker samolepku s částí těla (pokud je máte) dle vlastního výběru.
|
||||
# This text has a character limit of around 11 characters, so please keep it short
|
||||
onboarding-assignment_tutorial-sticker = Samolepka
|
||||
onboarding-assignment_tutorial-second_step-v2 = 2. Připevněte pásek k trackeru. Strana pásku se suchým zipem musí směřovat stejným směrem jako obličej na trackeru:
|
||||
onboarding-assignment_tutorial-second_step-continuation-v2 = Suchý zip pro menší trackery by měla směřovat nahoru, jako na následujícím obrázku:
|
||||
onboarding-assignment_tutorial-done = Nachystal jsem samolepky a pásky!
|
||||
|
||||
## Tracker assignment setup
|
||||
|
||||
onboarding-assign_trackers-back = Zpět na přihlašovací údaje Wi-Fi
|
||||
onboarding-assign_trackers-title = Přiřazení trackerů
|
||||
onboarding-assign_trackers-description = Pojďme si vybrat, kam každý tracker patří. Klikněte na místo, kam chcete umístit tracker
|
||||
onboarding-assign_trackers-description = Vyberte, na jakou končetinu každý tracker patří. Klikněte na místo, kam chcete umístit tracker
|
||||
# Look at translation of onboarding-connect_tracker-connected_trackers on how to use plurals
|
||||
# $assigned (Number) - Trackers that have been assigned a body part
|
||||
# $trackers (Number) - Trackers connected to the server
|
||||
onboarding-assign_trackers-assigned =
|
||||
{ $trackers ->
|
||||
[one] { $assigned } z { $trackers } trackerů přiřazených
|
||||
[few] { $assigned } z { $trackers } trackerů přiřazených
|
||||
*[other] { $assigned } z { $trackers } trackerů přiřazených
|
||||
[one] { $assigned } z { $trackers } trackerů bylo přiřazeno
|
||||
[few] { $assigned } z { $trackers } trackerů bylo přiřazeno
|
||||
*[other] { $assigned } z { $trackers } trackerů bylo přiřazeno
|
||||
}
|
||||
onboarding-assign_trackers-advanced = Zobrazit pokročilá místa přiřazení
|
||||
onboarding-assign_trackers-advanced = Zobrazit pokročilá místa na přiřazení trackerů
|
||||
onboarding-assign_trackers-next = Přiřadil jsem všechny trackery
|
||||
onboarding-assign_trackers-mirror_view = Zrcadlit náhled
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
# Note for devs, number is used for representing boolean states per bit.
|
||||
# $unassigned (Number) - Bits are based on BodyAssignment.ASSIGNMENT_RULES order
|
||||
onboarding-assign_trackers-warning-LEFT_FOOT =
|
||||
{ $unassigned ->
|
||||
[0] Levá noha je přiřazena, ale pro správné fungování musí být také přiřazen levý kotník, levé stehno a jedna z těchto oblastí: hrudník, bok nebo pas.
|
||||
[1] Levá noha je přiřazena, ale pro správné fungování musí být také přiřazeno levé stehno a jedna z těchto oblastí: hrudník, bok nebo pas.
|
||||
[2] Levá noha je přiřazena, ale pro správné fungování musí být také přiřazen levý kotník a jedna z těchto oblastí: hrudník, bok nebo pas.
|
||||
[3] Levá noha je přiřazena, ale pro správné fungování musí být přiřazena jedna z těchto oblastí: hrudník, bok nebo pas.
|
||||
[4] Levá noha je přiřazena, ale pro správné fungování musí být také přiřazen levý kotník a levé stehno.
|
||||
[5] Levá noha je přiřazena, ale pro správné fungování musí být také přiřazeno levé stehno.
|
||||
[6] Levá noha je přiřazena, ale pro správné fungování musí být také přiřazen levý kotník.
|
||||
*[unknown] Levá noha je přiřazena, ale pro správné fungování musí být také přiřazen Neznámá Nepřiřazena část těla.
|
||||
}
|
||||
|
||||
## Tracker mounting method choose
|
||||
|
||||
onboarding-choose_mounting = Jakou metodu nasazení trackerů použít?
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-description = Správná orientace nasazení zajistí přesné sledování trackerů na těle.
|
||||
onboarding-choose_mounting-auto_mounting = Automatická detekce nasazení
|
||||
# Italized text
|
||||
onboarding-choose_mounting-auto_mounting-label = Experimentální
|
||||
onboarding-choose_mounting-auto_mounting-description = Orientace nasazení všech trackerů bude automaticky rozpoznána ze 2 pozic.
|
||||
onboarding-choose_mounting-manual_mounting = Manuální nastavení
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Doporučeno
|
||||
onboarding-choose_mounting-manual_mounting-description = Ručně zadejte orientaci nasazení každého trackeru.
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title =
|
||||
Jste si jistí, že chcete spustit
|
||||
automatickou kalibraci nasazení?
|
||||
onboarding-choose_mounting-manual_modal-description = <b>Pro nové uživatele doporučujeme ruční nastavení nasazení.</b> Automatická detekce nasazení sice nabízí pohodlí, ale zvládnout potřebné pozice napoprvé může být náročné a vyžadovat trochu cviku.
|
||||
onboarding-choose_mounting-manual_modal-confirm = Vím co dělám!
|
||||
onboarding-choose_mounting-manual_modal-cancel = Zrušit
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
onboarding-manual_mounting-back = Zpět na Enter VR
|
||||
onboarding-manual_mounting = Manuální montáž
|
||||
onboarding-manual_mounting-description = Klikněte na každý tracker a vyberte, jakým způsobem jsou namontovány
|
||||
onboarding-manual_mounting-auto_mounting = Automatická montáž
|
||||
onboarding-manual_mounting-back = Zpět do VR
|
||||
onboarding-manual_mounting = Manuální nasazení trackerů
|
||||
onboarding-manual_mounting-description = Klikněte na každý tracker a vyberte, jakým směrem jsou nasazeny
|
||||
onboarding-manual_mounting-auto_mounting = Automatická detekce nasazení
|
||||
onboarding-manual_mounting-next = Další krok
|
||||
|
||||
## Tracker automatic mounting setup
|
||||
|
||||
onboarding-automatic_mounting-back = Zpět na Enter VR
|
||||
onboarding-automatic_mounting-title = Montážní kalibrace
|
||||
onboarding-automatic_mounting-description = Aby trackery SlimeVR fungovaly, je třeba jim přiřadit montážní rotaci, aby se vyrovnaly s fyzickou montáží trackeru.
|
||||
onboarding-automatic_mounting-manual_mounting = Manuální nastavení montáže
|
||||
onboarding-automatic_mounting-back = Zpět do VR
|
||||
onboarding-automatic_mounting-title = Kalibrace nasazení
|
||||
onboarding-automatic_mounting-description = Pro správnou funkci trackerů SlimeVR jim musíme přiřadit orientaci. Ta musí odpovídat tomu, jak jsou fyzicky nasměrovány na vašem těle.
|
||||
onboarding-automatic_mounting-manual_mounting = Manuální nasazení
|
||||
onboarding-automatic_mounting-next = Další krok
|
||||
onboarding-automatic_mounting-prev_step = Předchozí krok
|
||||
onboarding-automatic_mounting-done-title = Otáčení montáže je kalibrováno.
|
||||
onboarding-automatic_mounting-done-description = Kalibrace montáže je dokončena!
|
||||
onboarding-automatic_mounting-done-restart = Návrat na začátek
|
||||
onboarding-automatic_mounting-mounting_reset-title = Reset montáže
|
||||
onboarding-automatic_mounting-mounting_reset-step-0 = 1. Dřepněte si do pozice jak na lyžích s pokrčenýma nohama, horní částí těla nakloněnou dopředu a s pokrčenýma rameny.
|
||||
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Stiskněte tlačítko "Resetování montáže" a počkejte 3 sekundy, než se rotace montáže trackerů resetují.
|
||||
onboarding-automatic_mounting-done-title = Směr nasazení trackerů zkalibrován.
|
||||
onboarding-automatic_mounting-done-description = Kalibrace nasazení trackerů je dokončena!
|
||||
onboarding-automatic_mounting-done-restart = Začít znovu
|
||||
onboarding-automatic_mounting-mounting_reset-title = Reset nasazení trackerů
|
||||
onboarding-automatic_mounting-mounting_reset-step-0 = 1. Dřepněte si, jako při lyžování: nohy pokrčte v kolenou, trup nakloňte mírně dopředu a paže pokrčte.
|
||||
onboarding-automatic_mounting-mounting_reset-step-1 = 2. Stiskněte tlačítko "Resetovat nasazení trackerů" a vyčkejte 3 sekundy. Orientace nasazení trackerů se nastaví na základní hodnoty.
|
||||
onboarding-automatic_mounting-preparation-title = Příprava
|
||||
onboarding-automatic_mounting-preparation-step-0 = 1. Postavte se vzpřímeně s rukama na bocích.
|
||||
onboarding-automatic_mounting-preparation-step-1 = 2. Stiskněte tlačítko "Reset" a počkejte 3 sekundy, než se trackery resetují.
|
||||
onboarding-automatic_mounting-put_trackers_on-title = Nasaďte si trackery
|
||||
onboarding-automatic_mounting-put_trackers_on-description = Pro kalibraci rotace montáže použijeme právě přiřazené trackery. Nasaďte všechny trackery, na obrázku vpravo vidíte, které jsou které.
|
||||
onboarding-automatic_mounting-put_trackers_on-description = Pro kalibraci směru nasazení použijeme právě přiřazené trackery. Nasaďte si prosím všechny trackery. Můžete zkontrolovat jejich umístění na obrázku vpravo.
|
||||
onboarding-automatic_mounting-put_trackers_on-next = Mám nasazené všechny trackery
|
||||
|
||||
## Tracker proportions method choose
|
||||
|
||||
onboarding-choose_proportions = Jakou metodu kalibrace chcete použít?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
Proporce těla potřebujeme, abychom dobře změřili tvoje pohyby. Trackerům totiž pomáhají zjistit, kde přesně se na těle nachází.
|
||||
Když jsou proporce nastaveny špatně, sledování nebude fungovat dobře. Může to způsobit efekt kde tvůj avatar divně klouže, nebo že se divně hýbe.
|
||||
<b>Proporce stačí změřit jednou a máš to vyřešené!</b> Pokud nezměníš výrazně postavu nebo to napoprvé nedopadne dobře, nemusíš už nic měřit.
|
||||
onboarding-choose_proportions-auto_proportions = Automatická detekce proporcí
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Doporučeno
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
Toto odhadne vaše proporce z krátkého záznamu vašich pohybů pomocí speciálního algoritmu.
|
||||
|
||||
<b>K tomu JE NUTNÉ mít VR headset připojený k SlimeVR a nasazený na hlavě!</b>
|
||||
onboarding-choose_proportions-manual_proportions = Manuální nastavení proporcí
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = Pro drobné úpravy
|
||||
onboarding-choose_proportions-manual_proportions-description = Nastavte si vaše proporce ručně dle vašich potřeb.
|
||||
onboarding-choose_proportions-export = Exportovat proporce
|
||||
onboarding-choose_proportions-import = Importovat proporce
|
||||
onboarding-choose_proportions-import-success = Importováno!
|
||||
onboarding-choose_proportions-import-failed = Import byl neúspěšný
|
||||
onboarding-choose_proportions-file_type = Soubor tělesných proporcí
|
||||
|
||||
## Tracker manual proportions setup
|
||||
|
||||
onboarding-manual_proportions-back = Zpět na Reset tutoriál
|
||||
onboarding-manual_proportions-back = Zpět na tutoriál
|
||||
onboarding-manual_proportions-title = Manuální proporce těla
|
||||
onboarding-manual_proportions-precision = Přesná úprava
|
||||
onboarding-manual_proportions-auto = Automatická kalibrace
|
||||
onboarding-manual_proportions-auto = Automatická kalibrace proporcí
|
||||
onboarding-manual_proportions-ratio = Upravit podle poměrů končetin
|
||||
|
||||
## Tracker automatic proportions setup
|
||||
|
||||
onboarding-automatic_proportions-back = Zpět na Reset tutoriál
|
||||
onboarding-automatic_proportions-back = Zpět na tutoriál
|
||||
onboarding-automatic_proportions-title = Změřte své tělo
|
||||
onboarding-automatic_proportions-description = Aby trackery SlimeVR fungovaly, potřebujeme znát délku vašich kostí. Tato krátká kalibrace vám to změří.
|
||||
onboarding-automatic_proportions-manual = Manuální kalibrace
|
||||
onboarding-automatic_proportions-manual = Manuální kalibrace proporcí
|
||||
onboarding-automatic_proportions-prev_step = Předchozí krok
|
||||
onboarding-automatic_proportions-put_trackers_on-title = Nasaďte si trackery
|
||||
onboarding-automatic_proportions-put_trackers_on-description = Pro kalibraci proporcí použijeme trackery, které jste právě přiřadili. Nasaďte si trackery, na obrázku vpravo vidíte, která jsou která.
|
||||
onboarding-automatic_proportions-put_trackers_on-description = Pro kalibraci proporcí použijeme trackery, které jste právě přiřadili. Nasaďte si všechny trackery a na obrázku vpravo zkontrolujte, jak je máte nasazené.
|
||||
onboarding-automatic_proportions-put_trackers_on-next = Mám nasazené všechny trackery
|
||||
onboarding-automatic_proportions-requirements-title = Požadavky
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
Minimálně 5 trackerů: Máte dostatečný počet trackerů pro sledování nohou.
|
||||
Nasazené vybavení: Máte nasazené trackery a headset.
|
||||
Připojení a funkčnost: Trackery a headset jsou připojeny k serveru SlimeVR a fungují správně (bez záseků, odpojování apod.).
|
||||
SteamVR a SlimeVR: Headset odesílá pozici do serveru SlimeVR (obvykle je potřeba mít spuštěný SteamVR a připojený k SlimeVR pomocí ovladače SlimeVR pro SteamVR).
|
||||
Přesné sledování: Sledování funguje a přesně zaznamenává vaše pohyby (například jste provedli kompletní reset a trackery se správně pohybují při kopání, předklonu, sezení apod.).
|
||||
onboarding-automatic_proportions-requirements-next = Přečetl jsem si požadavky
|
||||
onboarding-automatic_proportions-check_height-title = Ujistěte se, že máte správnou výšku
|
||||
onboarding-automatic_proportions-check_height-description = Vaši výšku využíváme jako základ pro měření pohybů. Pro přibližné zjištění výšky používáme výšku vašeho VR headsetu, ale je přesnější, když si svoji skutečnou výšku zadáte sami!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = Pro změření výšky stiskněte tlačítko <u>ve vzpřímeném postoji.</u> Máte na to 3 sekundy od stisknutí!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = Stojím vzpřímeně!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = Neznámá
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-hmd_height1 = Výška vašeho headsetu je
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-height1 = takže vaše výška by měla být
|
||||
onboarding-automatic_proportions-check_height-next_step = Je to v pořádku!
|
||||
onboarding-automatic_proportions-start_recording-title = Připravte se hýbat
|
||||
onboarding-automatic_proportions-start_recording-description = Nyní budeme nahrávat některé konkrétní pózy a pohyby. Tyto se zobrazí na další obrazovce. Po stisknutí tlačítka buďte připraveni začít!
|
||||
onboarding-automatic_proportions-start_recording-description = Připravte se na nahrání několika póz a pohybů. Dostanete přesné instrukce na další obrazovce. Až budete připraveni, stiskněte tlačítko a začněte!
|
||||
onboarding-automatic_proportions-start_recording-next = Spustit nahrávání
|
||||
onboarding-automatic_proportions-recording-title = ZÁZN
|
||||
onboarding-automatic_proportions-recording-title = Nahrát
|
||||
onboarding-automatic_proportions-recording-description-p0 = Probíhá nahrávání...
|
||||
onboarding-automatic_proportions-recording-description-p1 = Proveďte níže uvedené pohyby:
|
||||
onboarding-automatic_proportions-recording-processing = Zpracování výsledku
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-recording-steps =
|
||||
Stůj rovně: Postavte se rovně a vzpřímeně.
|
||||
Kroužení hlavou: Udělejte hlavou kruh, jednou kolem dokola.
|
||||
Dřep s pohledem do stran: Předkloňte se a dřepněte. V dřepu se otočte pohled doleva a doprava.
|
||||
Otáčení horní části těla: S rovnými zády se otočte horní částí těla doleva (proti směru hodinových ručiček), jako byste chtěli rukou sáhnout k zemi. Pak se otočte doprava (po směru hodinových ručiček).
|
||||
Kroužení boky: Krouživým pohybem otáčejte boky, jako byste točili hula hoop kruhem.
|
||||
Pokud zbývá čas, můžete tyto pohyby opakovat až do konce nahrávání.
|
||||
onboarding-automatic_proportions-recording-processing = Zpracovávám výsledek
|
||||
# $time (Number) - Seconds left for the automatic calibration recording to finish (max 20)
|
||||
onboarding-automatic_proportions-recording-timer =
|
||||
{ $time ->
|
||||
@@ -596,16 +834,58 @@ onboarding-automatic_proportions-recording-timer =
|
||||
}
|
||||
onboarding-automatic_proportions-verify_results-title = Ověření výsledků
|
||||
onboarding-automatic_proportions-verify_results-description = Zkontrolujte výsledky níže, vypadají správně?
|
||||
onboarding-automatic_proportions-verify_results-results = Zaznamenávání výsledků
|
||||
onboarding-automatic_proportions-verify_results-processing = Zpracování výsledku
|
||||
onboarding-automatic_proportions-verify_results-results = Zaznamenávání výsledky
|
||||
onboarding-automatic_proportions-verify_results-processing = Zpracovávám výsledek
|
||||
onboarding-automatic_proportions-verify_results-redo = Znovu provést záznam
|
||||
onboarding-automatic_proportions-verify_results-confirm = Jsou správné
|
||||
onboarding-automatic_proportions-done-title = Tělo změřeno a uloženo.
|
||||
onboarding-automatic_proportions-done-description = Kalibrace proporcí vašeho těla je dokončena!
|
||||
onboarding-automatic_proportions-error_modal = <b>Chyba:</b> Při odhadování proporcí došlo k chybě! Prosím, přečtěte si <docs>dokumentaci</docs> nebo se připojte k našemu serveru <discord>Discord</discord> a požádejte o pomoc ^_^
|
||||
onboarding-automatic_proportions-error_modal-confirm = Rozumím!
|
||||
|
||||
## Home
|
||||
|
||||
home-no_trackers = Nebyly zjištěny ani přiřazeny žádné trackery
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = Máte trackery stále zapnuté
|
||||
trackers_still_on-modal-description =
|
||||
Jeden nebo více trackerů jsou stále zapnuty.
|
||||
Opravdu chcete ukončit SlimeVR?
|
||||
trackers_still_on-modal-confirm = Zavřít SlimeVR
|
||||
trackers_still_on-modal-cancel = Dejte my chvilku!
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = Pro dosažení nejlepších výsledků proveďte kompletní reset. Alespoň jeden tracker není správně nastaven.
|
||||
status_system-StatusSteamVRDisconnected =
|
||||
{ $type ->
|
||||
[steamvr_feeder] Nejste připojeni k SlimeVR "Feeder" aplikaci.
|
||||
*[steamvr] Nejste připojeni ke SteamVR zapomocí ovladače SlimeVR.
|
||||
}
|
||||
status_system-StatusTrackerError = Tracker { $trackerName } není v pořádku.
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = Zobrazit
|
||||
tray_menu-hide = Skrýt
|
||||
tray_menu-quit = Ukončit
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = Co chcete aby "křížek" udělal?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
Tímto si zvolíte, zda chcete při stisknutí tlačítka pro zavření ukončit server, nebo jej pouze minimalizovat do systémové lišty.
|
||||
|
||||
Toto nastavení můžete později změnit v nastavení aplikace.
|
||||
tray_or_exit_modal-radio-exit = Ukončit při zavření
|
||||
tray_or_exit_modal-radio-tray = Minimalizovat
|
||||
tray_or_exit_modal-submit = Uložit
|
||||
tray_or_exit_modal-cancel = Zrušit
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-confirm = Jasně!
|
||||
unknown_device-modal-forget = Ignoruj
|
||||
|
||||
@@ -23,6 +23,8 @@ tips-find_tracker = Sie sind sich nicht sicher, welcher Tracker welcher ist? Sch
|
||||
tips-do_not_move_heels = Stellen Sie sicher, dass Sie Ihre Fersen während der Aufnahme nicht bewegen!
|
||||
tips-file_select = Dateien per Drag & Drop verwenden oder <u>durchsuchen</u>
|
||||
tips-tap_setup = Sie können langsam 2 Mal auf Ihren Tracker tippen, um ihn auszuwählen, anstatt ihn aus dem Menü auszuwählen.
|
||||
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.
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -124,6 +126,7 @@ widget-drift_compensation-clear = Driftkompensation zurücksetzen
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
|
||||
widget-clear_mounting = Befestigungs-Reset zurücksetzen
|
||||
|
||||
## Widget: Developer settings
|
||||
|
||||
@@ -143,6 +146,11 @@ widget-imu_visualizer-rotation_raw = Rohe Drehung
|
||||
widget-imu_visualizer-rotation_preview = Vorschau
|
||||
widget-imu_visualizer-rotation_hide = Ausblenden
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Skelett Vorschau
|
||||
widget-skeleton_visualizer-hide = Ausblenden
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = Kein Status
|
||||
@@ -151,6 +159,7 @@ tracker-status-error = Fehler
|
||||
tracker-status-disconnected = Getrennt
|
||||
tracker-status-occluded = Verdeckt
|
||||
tracker-status-ok = Verbunden
|
||||
tracker-status-timed_out = Zeitüberschreitung
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -189,6 +198,7 @@ tracker-infos-hardware_rev = Hardware-Version
|
||||
tracker-infos-hardware_identifier = Hardware-ID
|
||||
tracker-infos-imu = IMU-Sensor
|
||||
tracker-infos-board_type = Platine
|
||||
tracker-infos-network_version = Protokoll Version
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -208,6 +218,9 @@ tracker-settings-drift_compensation_section-edit = Erlaube Drift Kompensierung
|
||||
tracker-settings-name_section = Trackername
|
||||
tracker-settings-name_section-description = Geben Sie ihm einen süßen Spitznamen :)
|
||||
tracker-settings-name_section-placeholder = NightyBeast's linkes Bein
|
||||
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 part card info
|
||||
|
||||
@@ -241,6 +254,7 @@ tracker_selection_menu-RIGHT_UPPER_LEG = { -tracker_selection-part } dem rechten
|
||||
tracker_selection_menu-RIGHT_LOWER_LEG = { -tracker_selection-part } dem rechten Unterschenkel zugewiesen werden?
|
||||
tracker_selection_menu-RIGHT_FOOT = { -tracker_selection-part } dem rechten Fuß zugewiesen werden?
|
||||
tracker_selection_menu-RIGHT_CONTROLLER = { -tracker_selection-part } dem rechten Controller zugewiesen werden?
|
||||
tracker_selection_menu-UPPER_CHEST = { -tracker_selection-part } obere Brust?
|
||||
tracker_selection_menu-CHEST = { -tracker_selection-part } der Brust zugewiesen werden?
|
||||
tracker_selection_menu-WAIST = { -tracker_selection-part } der Taille zugewiesen werden?
|
||||
tracker_selection_menu-HIP = { -tracker_selection-part } der Hüfte zugewiesen werden?
|
||||
@@ -296,10 +310,22 @@ settings-general-steamvr-description =
|
||||
Nützlich für Spiele oder Apps, die nur bestimmte Tracker unterstützen.
|
||||
settings-general-steamvr-trackers-waist = Taille
|
||||
settings-general-steamvr-trackers-chest = Brust
|
||||
settings-general-steamvr-trackers-feet = Füße
|
||||
settings-general-steamvr-trackers-knees = Knie
|
||||
settings-general-steamvr-trackers-elbows = Ellbogen
|
||||
settings-general-steamvr-trackers-hands = Hände
|
||||
settings-general-steamvr-trackers-left_foot = Linker Fuß
|
||||
settings-general-steamvr-trackers-right_foot = Rechter Fuß
|
||||
settings-general-steamvr-trackers-left_knee = Linkes Knie
|
||||
settings-general-steamvr-trackers-right_knee = Rechtes Knie
|
||||
settings-general-steamvr-trackers-left_elbow = Linker Ellenbogen
|
||||
settings-general-steamvr-trackers-right_elbow = Rechter Ellenbogen
|
||||
settings-general-steamvr-trackers-left_hand = Linke Hand
|
||||
settings-general-steamvr-trackers-right_hand = Rechte Hand
|
||||
settings-general-steamvr-trackers-tracker_toggling = Automatische Tracker Zuweisung
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = Automatisches Aktivieren und Deaktivieren von SteamVR Trackern, in Abhängigkeit von der aktuellen Tracker-Zuordnung.
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = Automatische Tracker Zuweisung
|
||||
settings-general-steamvr-trackers-hands-warning =
|
||||
<b>Warnung:</b> Handtracker übersteuern Ihre Controller.
|
||||
Sind Sie sich sicher?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = Abbrechen
|
||||
settings-general-steamvr-trackers-hands-warning-done = Ja
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -317,6 +343,7 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = Glätt
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Vorhersage
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Verringert die Latenz und macht die Bewegungen schneller, kann aber Zittern erhöhen.
|
||||
settings-general-tracker_mechanics-filtering-amount = Stärke
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = Horizontaler Reset Glättungszeit (0s deaktiviert die Glättung)
|
||||
settings-general-tracker_mechanics-drift_compensation = Drift-Kompensierung
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
@@ -325,6 +352,11 @@ settings-general-tracker_mechanics-drift_compensation-description =
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Drift-Kompensierung
|
||||
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-description =
|
||||
Speichert die automatische Befestigungs-Reset Kalibrierung 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
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -346,15 +378,36 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = Bodenclip kann d
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = Zehen-Ausrichtung versucht, die Rotation Ihrer Füße zu erraten, wenn keine Fuß-Tracker verwendet werden.
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = Fußkorrektur richtet Ihre Füße parallel zum Boden aus, wenn sie den Boden berühren.
|
||||
settings-general-fk_settings-leg_fk = Beintracking
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Aktiviert das Zurücksetzen der Fußausrichtung, indem Sie auf die Zehenspitzen stehen.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Fußausrichtung zurücksetzen
|
||||
settings-general-fk_settings-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-skeleton_settings = Skeletteinstellungen
|
||||
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-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_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
|
||||
settings-general-fk_settings-arm_fk-forward-description = Erwartet, dass deine Arme um 90 Grad nach vorne gerichtet sind. Nützlich für VTubing.
|
||||
settings-general-fk_settings-skeleton_settings-toggles = Skelett-Schalter
|
||||
settings-general-fk_settings-skeleton_settings-description = Schalten Sie Skeletteinstellungen ein oder aus. Es wird empfohlen, diese eingeschaltet zu lassen.
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine_model = Erweitertes Wirbelsäulen-Modell
|
||||
settings-general-fk_settings-skeleton_settings-extended_pelvis_model = Erweitertes Pelvis-Modell
|
||||
settings-general-fk_settings-skeleton_settings-extended_knees_model = Erweitertes Knie-Modell
|
||||
settings-general-fk_settings-skeleton_settings-ratios = Skelettverhältnisse
|
||||
settings-general-fk_settings-skeleton_settings-ratios-description = Ändert die Werte der Skeletteinstellungen. Nachdem Sie diese geändert haben, müssen Sie möglicherweise Ihre Proportionen anpassen.
|
||||
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_hip = Taille aus Brust zu Hüfte berechnen
|
||||
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_legs = Taille von Brust zu Beine berechnen
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs = Hüfte von Brust zu Beine berechnen
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_waist_legs = Hüfte von Taille zu Beine berechnen
|
||||
settings-general-fk_settings-skeleton_settings-interp_hip_legs = Interpolieren der horizontalen und Torsionsrotation der Hüfte mit denen der Beine
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = Interpolation der horizontalen und Torsionsrotationen der Knietracker mit denen der Fußgelenke
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = Interpolation der horizontalen und Torsionsrotationen der Knie mit denen der Fußgelenke
|
||||
settings-general-fk_settings-self_localization-title = Motion-Capture-Modus
|
||||
settings-general-fk_settings-self_localization-description = Der Motion-Capture-Modus ermöglicht es dem Skelett, ungefähr die eigene Position ohne Headset oder Tracker zu verfolgen. Beachten Sie, dass diese Funktion Fuß- und Kopf-Tracker benötigt und noch experimentell ist.
|
||||
settings-general-fk_settings-vive_emulation-title = Vive-Simulierung
|
||||
settings-general-fk_settings-vive_emulation-description = Simuliere die Tracking-Probleme, welche bei Vive-Trackern auftreten. Dies ist ein Scherz und verschlechtert das Tracking.
|
||||
settings-general-fk_settings-vive_emulation-label = Vive-Simulierung
|
||||
@@ -375,8 +428,8 @@ settings-general-gesture_control-taps =
|
||||
# $amount (Number) - Amount of trackers
|
||||
settings-general-gesture_control-trackers =
|
||||
{ $amount ->
|
||||
[one] Tracker
|
||||
*[other] Tracker
|
||||
[one] 1 Tracker
|
||||
*[other] { $amount } Tracker
|
||||
}
|
||||
settings-general-gesture_control-yawResetEnabled = Horizontaler Reset durch Antippen
|
||||
settings-general-gesture_control-yawResetDelay = Verzögerung für einen horizontalen Reset
|
||||
@@ -389,6 +442,7 @@ settings-general-gesture_control-mountingResetDelay = Befestigungs-Reset-Verzög
|
||||
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
|
||||
settings-general-gesture_control-numberTrackersOverThreshold-description = Erhöhen Sie diesen Wert wenn Tipp-Erkennung nicht funktioniert. Setzen Sie den Wert nicht höher als benötigt, da dies Fehlauslöser verursachen kann.
|
||||
|
||||
## Appearance settings
|
||||
|
||||
@@ -407,6 +461,7 @@ settings-interface-appearance-font-placeholder = Standard-Schriftart
|
||||
settings-interface-appearance-font-os_font = Betriebssystem-Schriftart
|
||||
settings-interface-appearance-font-slime_font = Standard-Schriftart
|
||||
settings-interface-appearance-font_size = Standard-Schriftgröße
|
||||
settings-interface-appearance-font_size-description = Verändert die Schriftgröße der gesamten Oberfläche außer diesem Einstellungs-Panel.
|
||||
|
||||
## Notification settings
|
||||
|
||||
@@ -418,6 +473,12 @@ settings-general-interface-feedback_sound = Feedback-Geräusch
|
||||
settings-general-interface-feedback_sound-description = Diese Option wird ein Geräusch abspielen, wenn ein Reset ausgeführt wurde.
|
||||
settings-general-interface-feedback_sound-label = Feedback-Geräusch
|
||||
settings-general-interface-feedback_sound-volume = Feedback-Sound-Lautstärke
|
||||
settings-general-interface-connected_trackers_warning = Warnung zu verbundenen Trackern
|
||||
settings-general-interface-connected_trackers_warning-description = Diese Option zeigt jedes Mal ein Pop-up-Fenster an, wenn Sie versuchen, SlimeVR zu beenden, während ein oder mehrere Tracker verbunden sind. Es erinnert Sie daran, die Tracker auszuschalten, um die Akkulaufzeit zu verlängern.
|
||||
settings-general-interface-connected_trackers_warning-label = Warnung vor verbundenen Trackern beim Verlassen
|
||||
settings-general-interface-use_tray = In den Infobereich minimieren
|
||||
settings-general-interface-use_tray-description = Erlaubt Ihnen, das Fenster zu schließen, ohne den SlimeVR-Server zu beenden. Dies erlaubt Ihnen diesen weiterzuverwenden, ohne dass das Fenster stört.
|
||||
settings-general-interface-use_tray-label = In den Infobereich minimieren
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -439,6 +500,7 @@ settings-serial-factory_reset-warning-cancel = Abbruch
|
||||
settings-serial-get_infos = Informationen abrufen
|
||||
settings-serial-serial_select = Wählen Sie einen seriellen Anschluss
|
||||
settings-serial-auto_dropdown_item = Auto
|
||||
settings-serial-get_wifi_scan = WLAN-Scan
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -569,6 +631,13 @@ onboarding-reset_tutorial-1 =
|
||||
|
||||
Sie müssen dafür in einer I-Pose stehen. Es gibt eine Verzögerung von 3 Sekunden (konfigurierbar), bevor der Reset tatsächlich durchgeführt wird.
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
## Setup start
|
||||
|
||||
@@ -592,8 +661,8 @@ onboarding-done-close = Einrichtung schließen
|
||||
|
||||
onboarding-connect_tracker-back = Zurück zu WLAN-Zugangsdaten
|
||||
onboarding-connect_tracker-title = Verbinde Tracker
|
||||
onboarding-connect_tracker-description-p0 = Nun zum unterhaltsamen Teil, verbinde alle Tracker!
|
||||
onboarding-connect_tracker-description-p1 = Verbinden Sie einfach alle Tracker, die noch nicht verbunden sind, über einen USB-Anschluss.
|
||||
onboarding-connect_tracker-description-p0-v1 = Kommen wir nun zum spaßigen Teil, dem Verbinden von Trackern!
|
||||
onboarding-connect_tracker-description-p1-v1 = Schließen Sie jeden Tracker nacheinander und einzeln über einen USB-Anschluss an.
|
||||
onboarding-connect_tracker-issue-serial = Ich habe Schwierigkeiten die Tracker zu verbinden!
|
||||
onboarding-connect_tracker-usb = USB Tracker
|
||||
onboarding-connect_tracker-connection_status-none = Suche nach Trackern
|
||||
@@ -634,7 +703,8 @@ onboarding-assignment_tutorial = So bereiten Sie einen SlimeVR-Tracker vor, bevo
|
||||
onboarding-assignment_tutorial-first_step = 1. Platzieren Sie einen Körperteilaufkleber (falls vorhanden) auf dem Tracker Ihrer Wahl
|
||||
# This text has a character limit of around 11 characters, so please keep it short
|
||||
onboarding-assignment_tutorial-sticker = Aufkleber
|
||||
onboarding-assignment_tutorial-second_step-continuation = Die Klettseite für die Verlängerung sollte in dieser Ausrichtung sein:
|
||||
onboarding-assignment_tutorial-second_step-v2 = 2. Befestigen Sie den Riemen an ihrem Tracker, wobei die Klettseite des Riemens in dieselbe Richtung zeigt wie das SlimeVR Logo Ihres Trackers:
|
||||
onboarding-assignment_tutorial-second_step-continuation-v2 = Die Klettseite für den Erweiterungstracker sollte nach oben zeigen, wie in der folgenden Abbildung:
|
||||
onboarding-assignment_tutorial-done = Ich habe Aufkleber und Bänder angebracht!
|
||||
|
||||
## Tracker assignment setup
|
||||
@@ -652,6 +722,7 @@ onboarding-assign_trackers-assigned =
|
||||
} zugewiesen
|
||||
onboarding-assign_trackers-advanced = Erweiterte Zuweisungspositionen anzeigen
|
||||
onboarding-assign_trackers-next = Ich habe alle Tracker zugewiesen
|
||||
onboarding-assign_trackers-mirror_view = Ansicht spiegeln
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -734,6 +805,13 @@ onboarding-choose_mounting-manual_mounting = Manuelle Befestigungsposition
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Empfohlen
|
||||
onboarding-choose_mounting-manual_mounting-description = Auf diese Weise können Sie die Montagerichtung für jeden Tracker manuell auswählen
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title =
|
||||
Sind Sie sich sicher, dass Sie
|
||||
die automatische Tracker-Ausrichtung durchführen möchten?
|
||||
onboarding-choose_mounting-manual_modal-description = <b>Die manuelle Tracker-Ausrichtung wird für neue Benutzer empfohlen</b>, da die Posen der automatischen Tracker-Ausrichtung anfangs schwer zu treffen sind und möglicherweise etwas Übung erfordern.
|
||||
onboarding-choose_mounting-manual_modal-confirm = Ich bin mir sicher, was ich tue
|
||||
onboarding-choose_mounting-manual_modal-cancel = Abbruch
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -767,12 +845,25 @@ onboarding-automatic_mounting-put_trackers_on-next = Ich habe alle meine Tracker
|
||||
## Tracker proportions method choose
|
||||
|
||||
onboarding-choose_proportions = Welche Kalibrierungsmethode ist zu verwenden?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
Wenn die Proportionen Ihres Körpers nicht mit den Gespeicherten übereinstimmen, ist die Präzision des Trackings schlechter. Außerdem können Probleme wie Skaten oder Rutschen auftreten oder, dass die Bewegungen Ihres Avatars nicht gut mit den Bewegungen Ihres Körpers übereinstimmen.
|
||||
<b>Sie müssen Ihren Körper nur einmal messen!</b> Es sei denn, die Messwerte sind falsch oder Ihr Körper hat sich verändert, dann müssen Sie die Körperproportionen nochmal bestimmen.
|
||||
onboarding-choose_proportions-auto_proportions = Automatische Proportionen
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Empfohlen
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
Dies wird versuchen, Ihre Proportionen mit Hilfe einer Bewegungsaufnahme zu bestimmen, welche von einem Algorithmus verarbeitet wird.
|
||||
|
||||
<b>Dazu muss Ihr Headset (HMD) mit SlimeVR verbunden sein und Sie müssen es an haben!</b>
|
||||
onboarding-choose_proportions-manual_proportions = Manuelle Körperproportionen
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = Für kleine Anpassungen
|
||||
onboarding-choose_proportions-manual_proportions-description = Auf diese Weise können Sie Ihre Proportionen manuell anpassen, indem Sie diese direkt ändern
|
||||
onboarding-choose_proportions-export = Proportionen exportieren
|
||||
onboarding-choose_proportions-import = Proportionen importieren
|
||||
onboarding-choose_proportions-import-success = Importiert
|
||||
onboarding-choose_proportions-import-failed = Fehlgeschlagen
|
||||
onboarding-choose_proportions-file_type = Körperproportions-Datei
|
||||
|
||||
## Tracker manual proportions setup
|
||||
@@ -794,21 +885,41 @@ onboarding-automatic_proportions-put_trackers_on-title = Legen Sie Ihre Tracker
|
||||
onboarding-automatic_proportions-put_trackers_on-description = Um Ihre Proportionen zu kalibrieren, werden wir die Tracker verwenden, die Sie gerade zugewiesen haben. Legen Sie alle Ihre Tracker an. Sie können rechts in der Abbildung sehen, welche welche sind.
|
||||
onboarding-automatic_proportions-put_trackers_on-next = Ich habe alle meine Tracker angelegt
|
||||
onboarding-automatic_proportions-requirements-title = Anforderungen
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
Sie haben genug Tracken, um Ihre Füße zu tracken (in der Regel 5 Tracker).
|
||||
Sie haben Ihre Tracker an und Ihr Headset auf.
|
||||
Ihre Tracker und Ihr Headset ist mit dem SlimeVR-Server verbunden und funktionieren ordnunsgemäß (z.B. kein Stottern, kein Trennen der Verbindung, usw.).
|
||||
Ihr Headset sendet Positionsdaten an den SlimeVR-Server (das bedeutet allgemein, dass SteamVR läuft und über den SlimeVR-SteamVR Treiber mit SteamVR verbunden ist).
|
||||
Ihr Tracking funktioniert und stellt Ihre Bewegungen akkurat dar (z.B.: Sie haben einen Reset durchgeführt und Ihre Tracker bewegen sich beim Treten, Bücken, Sitzen, usw. richtig).
|
||||
onboarding-automatic_proportions-requirements-next = Ich habe die Anforderungen gelesen
|
||||
onboarding-automatic_proportions-check_height-title = Überprüfen Sie Ihre Körpergröße
|
||||
onboarding-automatic_proportions-check_height-description = Wir benutzen die Höhe des Headsets (HMD) als eine Schätzung für Ihre tatsächliche Grösse, doch es ist besser dass Sie diese selbst überprüfen!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = Bitte betätigen Sie auf den Knopf während Sie <u>aufrecht</u> stehen, um Ihre Körpergröße zu berechnen. Sie haben 3 Sekunden Zeit, nachdem Sie auf den Knopf gedrückt haben.
|
||||
onboarding-automatic_proportions-check_height-guardian_tip = Wenn Sie ein eigenständiges VR Headset verwenden, stellen Sie sicher, dass Ihr Guardian Begrenzung aktiviert ist und damit Ihre Größe korrekt ist!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = Ich stehe!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = Unbekannt
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-height = Ihre Körpergröße ist
|
||||
onboarding-automatic_proportions-check_height-hmd_height1 = Ihre Headset-Höhe ist
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-hmd_height = Und Ihre Headset-Höhe ist
|
||||
onboarding-automatic_proportions-check_height-height1 = Ihre tatsächliche Körpergröße ist
|
||||
onboarding-automatic_proportions-check_height-next_step = Werte sind korrekt
|
||||
onboarding-automatic_proportions-start_recording-title = Bereiten Sie sich auf ein paar Bewegungen vor
|
||||
onboarding-automatic_proportions-start_recording-description = Wir werden nun einige bestimmte Posen und Bewegungen aufnehmen. Diese werden im nächsten Bildschirm angezeigt. Bereiten Sie sicht darauf vor, wenn Sie den Knopf drücken!
|
||||
onboarding-automatic_proportions-start_recording-next = Aufnahme starten
|
||||
onboarding-automatic_proportions-recording-title = Aufnahme
|
||||
onboarding-automatic_proportions-recording-description-p0 = Aufnahme läuft...
|
||||
onboarding-automatic_proportions-recording-description-p1 = Machen Sie die unten beschriebenen Bewegungen:
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-recording-steps =
|
||||
Stehen Sie aufrecht und drehen Sie den Kopf im Kreis.
|
||||
Beugen Sie den Rücken nach vorne und gehen Sie in die Hocke. Schauen Sie in der Hocke erst nach links, dann nach rechts.
|
||||
Drehen Sie Ihren Oberkörper nach links (gegen den Uhrzeigersinn), dann strecken Sie sich nach unten zum Boden.
|
||||
Drehen Sie Ihren Oberkörper nach rechts (im Uhrzeigersinn) und strecken Sie ihn dann nach unten zum Boden.
|
||||
Rollen Sie Ihre Hüften in einer kreisförmigen Bewegung, als ob Sie einen Hula-Hoop-Reifen benutzen würden.
|
||||
Wenn die Aufnahme noch nicht zu Ende ist, können Sie diese Schritte wiederholen, bis sie zu Ende ist.
|
||||
onboarding-automatic_proportions-recording-processing = Aufnahme wird verarbeitet...
|
||||
# $time (Number) - Seconds left for the automatic calibration recording to finish (max 20)
|
||||
onboarding-automatic_proportions-recording-timer =
|
||||
@@ -824,11 +935,24 @@ onboarding-automatic_proportions-verify_results-redo = Aufnahme wiederholen
|
||||
onboarding-automatic_proportions-verify_results-confirm = Ergebnisse sind korrekt
|
||||
onboarding-automatic_proportions-done-title = Körper gemessen und gespeichert.
|
||||
onboarding-automatic_proportions-done-description = Ihre Körperproportionen-Kalibrierung ist abgeschlossen!
|
||||
onboarding-automatic_proportions-error_modal =
|
||||
<b>Warnung:</b> Beim Schätzen der Proportionen wurde ein Fehler festgestellt!
|
||||
Bitte <docs>prüfen Sie die Dokumentation</docs> oder treten sie unserem <discord>Discord Server</discord> bei, um Hilfe zu bekommen. ^_^
|
||||
onboarding-automatic_proportions-error_modal-confirm = Verstanden!
|
||||
|
||||
## Home
|
||||
|
||||
home-no_trackers = Keine Tracker erkannt oder zugewiesen
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = Es sind noch Tracker eingeschaltet
|
||||
trackers_still_on-modal-description =
|
||||
Ein oder mehrere Tracker sind noch eingeschaltet.
|
||||
Möchten Sie SlimeVR trotzdem beenden?
|
||||
trackers_still_on-modal-confirm = SlimeVR beenden
|
||||
trackers_still_on-modal-cancel = Bitte warten...
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = Es wird empfohlen, einen vollständigen Reset durchzuführen, da ein oder mehrere Tracker nicht kalibriert sind.
|
||||
@@ -838,3 +962,31 @@ status_system-StatusSteamVRDisconnected =
|
||||
*[other] Derzeit nicht über den SlimeVR-Treiber mit SteamVR verbunden.
|
||||
}
|
||||
status_system-StatusTrackerError = Der Tracker "{ $trackerName }" weist einen Fehler auf.
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = Anzeigen
|
||||
tray_menu-hide = Ausblenden
|
||||
tray_menu-quit = Beenden
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = Was soll der Schließen-Knopf tun?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
Hier können Sie auswählen, ob sich der Server beim Schließen beenden oder in den Infobereich minimiert werden soll.
|
||||
|
||||
Sie können dies später in den Einstellungen der Bedienoberfläche ändern!
|
||||
tray_or_exit_modal-radio-exit = Beenden
|
||||
tray_or_exit_modal-radio-tray = In den Infobereich minimieren
|
||||
tray_or_exit_modal-submit = Speichern
|
||||
tray_or_exit_modal-cancel = Abbruch
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = Ein neuer Tracker wurde gefunden!
|
||||
unknown_device-modal-description =
|
||||
Es gibt einen neuen Tracker mit der MAC-Adresse <b>{ $deviceId }</b>.
|
||||
Möchten Sie diesen mit SlimeVR verbinden?
|
||||
unknown_device-modal-confirm = Sicher!
|
||||
unknown_device-modal-forget = Ignorieren
|
||||
|
||||
@@ -144,6 +144,11 @@ widget-imu_visualizer-rotation_raw = waw
|
||||
widget-imu_visualizer-rotation_preview = pwewiew
|
||||
widget-imu_visualizer-rotation_hide = hoide
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Skeweton pweview
|
||||
widget-skeleton_visualizer-hide = hoide
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = no stawtus
|
||||
@@ -152,6 +157,7 @@ tracker-status-error = ewwow
|
||||
tracker-status-disconnected = disconnyected
|
||||
tracker-status-occluded = occwuded
|
||||
tracker-status-ok = oki
|
||||
tracker-status-timed_out = Timed owt
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -348,9 +354,20 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = fwoow-cwip can r
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = toe-snap atempts to gwess da wotation of ur fweet if fweet tracker thingys arewnt in use
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = pawb-pwant wotates youw feet to be pawawwew to the gwound wen in cawntact.
|
||||
settings-general-fk_settings-leg_fk = leg twacking
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Enyabwe pawb Meownting Weset by tiptoeing.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Pawb Meownting Weset
|
||||
settings-general-fk_settings-arm_fk = awm twacking
|
||||
settings-general-fk_settings-arm_fk-description = chawnge teh way teh awms awe twacked.
|
||||
settings-general-fk_settings-arm_fk-force_arms = fowce awms fwom hmd
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Change which awm pose is expected fow meownting weset.
|
||||
settings-general-fk_settings-arm_fk-back = bak
|
||||
settings-general-fk_settings-arm_fk-back-description = The defauwt mode, wit da uppew awms going back and wowew awms going fowwawd.
|
||||
settings-general-fk_settings-arm_fk-tpose_up = T-pose (up)
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Expects youw awms to be down on the sides duwing Fuww Weset, and 90 degwees up to the sides duwing Meownting Weset.
|
||||
settings-general-fk_settings-arm_fk-tpose_down = T-pose (down)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = Expects youw awms to be 90 degwees up to the sides duwing Fuww Weset, and down on the sides duwing Meownting Weset.
|
||||
settings-general-fk_settings-arm_fk-forward = Fowwawd
|
||||
settings-general-fk_settings-arm_fk-forward-description = Expects youw awms to be up 90 degwees fowwawd. Usefuw fow VTubing.
|
||||
settings-general-fk_settings-skeleton_settings-toggles = skeweton toggews
|
||||
settings-general-fk_settings-skeleton_settings-description = toggwe skeweton sewttings on owow off. is wowcommended to weawve these on~
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine_model = extwended spine modew
|
||||
@@ -364,6 +381,7 @@ settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs = impu
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_waist_legs = impute hip fwom waist to wegs
|
||||
settings-general-fk_settings-skeleton_settings-interp_hip_legs = awewage da hip's yaw and woll wiff da legs'
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = awewage da knee twackews' yaw and woll wiff da ankews'
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = Avewage the knees' yaw and woww with the ankews'
|
||||
settings-general-fk_settings-self_localization-title = mocap mowd
|
||||
settings-general-fk_settings-self_localization-description = mocap mowd awwows da skeweton to wuffly twack is own posishun without a hedset or other twackews. note dat dis wequiwes feet and hed twackews to wowk and is stiwll expewimentaw.
|
||||
settings-general-fk_settings-vive_emulation-title = vive emuwation
|
||||
@@ -431,6 +449,9 @@ settings-general-interface-feedback_sound = feeback sownd
|
||||
settings-general-interface-feedback_sound-description = dis awptshun wiww pway a sownd wen a weset is twiggered (meow~!)
|
||||
settings-general-interface-feedback_sound-label = feeback sownd
|
||||
settings-general-interface-feedback_sound-volume = feedback sownd volyume
|
||||
settings-general-interface-connected_trackers_warning = Connected twackews wawning
|
||||
settings-general-interface-connected_trackers_warning-description = This option wiww show a pop-up evewy time you twy exiting SwimeVR whiwe having one ow mowe connected twackews. It weminds you to tuwn off youw twackews when you awe done to pwesewve battewy wife.
|
||||
settings-general-interface-connected_trackers_warning-label = Connected twackews wawning on exit
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -513,7 +534,7 @@ settings-osc-vmc = viwtuaw motion captuwe
|
||||
# This cares about multilines
|
||||
settings-osc-vmc-description =
|
||||
change settings specific to the vmc (viwtuaw motion captuwe) pwotocow
|
||||
to send swimevr's twacking data and weceive twacking data fwom othew apps.
|
||||
to send SwimeVR's twacking data and weceive twacking data fwom othew apps.
|
||||
settings-osc-vmc-enable = enaybwe
|
||||
settings-osc-vmc-enable-description = toggle teh sending awnd wweceiving of data
|
||||
settings-osc-vmc-enable-label = enaybwe
|
||||
@@ -597,7 +618,7 @@ onboarding-reset_tutorial-2 =
|
||||
|
||||
## Setup start
|
||||
|
||||
onboarding-home = wewcome to swimevr
|
||||
onboarding-home = wewcome to SwimeVR
|
||||
onboarding-home-start = wets get set up!
|
||||
|
||||
## Enter VR part of setup
|
||||
@@ -760,6 +781,13 @@ onboarding-choose_mounting-manual_mounting = manyul meownting
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = wecommended
|
||||
onboarding-choose_mounting-manual_mounting-description = dis will let u chose da meownting diwecshun manuwawwy fow eech twackew
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title =
|
||||
Awe you suwe you want to do
|
||||
the automatic mounting cawibwation?
|
||||
onboarding-choose_mounting-manual_modal-description = <b>The manuaw mounting cawibwation is wecommended fow new usews</b>, as the automatic mounting cawibwation's poses can be hawd to get wight fiwst and may wequiwe some pwactice.
|
||||
onboarding-choose_mounting-manual_modal-confirm = I'm suwe of what I'm doing
|
||||
onboarding-choose_mounting-manual_modal-cancel = cancew :o
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -800,15 +828,18 @@ onboarding-choose_proportions-description =
|
||||
onboarding-choose_proportions-auto_proportions = awtomatic pwopowtions
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = wecommended
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv2 =
|
||||
dis wiww guess youw pwopowshuns by wecowding a sampwe of youw movement and passing it thru an algowithm.
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
This wiww guess youw pwopowtions by wecowding a sampwe of youw movements and passing it thwough an awgowithm.
|
||||
|
||||
<b>dis wequiwes having youw hmd connected to SwimeVR!</b>
|
||||
<b>This wequiwes having youw headset (HMD) connected to SwimeVR and on youw head!</b>
|
||||
onboarding-choose_proportions-manual_proportions = manuwal pwopowtions
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = fow smol touchies
|
||||
onboarding-choose_proportions-manual_proportions-description = dis will let u ajust ur pwopowtions manuwally by modifying dem diwectwy
|
||||
onboarding-choose_proportions-export = expowt pawpowshuns
|
||||
onboarding-choose_proportions-import = Impowt pwopowtions
|
||||
onboarding-choose_proportions-import-success = Impowted
|
||||
onboarding-choose_proportions-import-failed = Faiwed
|
||||
onboarding-choose_proportions-file_type = body pawpowshuns file
|
||||
|
||||
## Tracker manual proportions setup
|
||||
@@ -831,13 +862,12 @@ onboarding-automatic_proportions-put_trackers_on-description = to cawybwate yowu
|
||||
onboarding-automatic_proportions-put_trackers_on-next = i have awl my twackaws on
|
||||
onboarding-automatic_proportions-requirements-title = wequiyements
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
u have at weast enyough twackews to twack youw pawbs (genyewawwy 5 twackews).
|
||||
u have youw twackews and headset on.
|
||||
u awe weawing youw twackews and headset.
|
||||
ur twackews and headset awe connyected to da SwimeVR sewvew.
|
||||
ur twackews and headset awe wowking pwopewwy within the SwimeVR sewvew.
|
||||
ur headset is wepowting positionyaw data to the SwimeVR sewvew (this genyewawwy wenyewawwy means having SteamVR wunnying and connyected to SwimeVR using SwimeVR's SteamVR dwivew).
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
You have at weast enough twackews to twack youw pawbs (genewawwy 5 twackews).
|
||||
You have youw twackews and headset on and awe weawing them.
|
||||
Youw twackews and headset awe connected to the SwimeVR sewvew and awe wowking pwopewwy (ex. no stuttewing, disconnecting, etc).
|
||||
Youw headset is wepowting positionaw data to the SwimeVR sewvew (this genewawwy means having SteamVR wunning and connected to SwimeVR using SwimeVR's SteamVR dwivew).
|
||||
Youw twacking is wowking and is accuwatewy wepwesenting youw movements (ex. you have pewfowmed a fuww weset and they move the wight diwection when kicking, bending ovew, sitting, etc).
|
||||
onboarding-automatic_proportions-requirements-next = i have wed da wequiwemens
|
||||
onboarding-automatic_proportions-check_height-title = check youw height
|
||||
onboarding-automatic_proportions-check_height-description = we use youw height as a basis of ouw measuwements by using da hmd's height as an appwoximashun of youw actuwaw height, but is better to check if they are right youwsewf!
|
||||
@@ -889,6 +919,15 @@ onboarding-automatic_proportions-error_modal-confirm = undewstood!
|
||||
|
||||
home-no_trackers = no twackaws detecyted owo wowigned
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = Twackews stiww on
|
||||
trackers_still_on-modal-description =
|
||||
One ow mowe twackews awe stiww on.
|
||||
Do you stiww want to exit SwimeVR?
|
||||
trackers_still_on-modal-confirm = Exit SwimeVR
|
||||
trackers_still_on-modal-cancel = Howd on...
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = it wecommended to pewfowm a fuwl weset as one or mowe twackews awe unadjussed. -w-
|
||||
|
||||
@@ -19,6 +19,8 @@ tips-find_tracker = Not sure which tracker is which? Shake a tracker and it will
|
||||
tips-do_not_move_heels = Ensure your heels do not move during recording!
|
||||
tips-file_select = Drag & drop files to use, or <u>browse</u>.
|
||||
tips-tap_setup = You can slowly tap 2 times your tracker to choose it instead of selecting it from the menu.
|
||||
tips-turn_on_tracker = Using official SlimeVR trackers? Remember to <b><em>turn on your tracker</em></b> after connecting it to the PC!
|
||||
tips-failed_webgl = Failed to initialize WebGL.
|
||||
|
||||
## Body parts
|
||||
body_part-NONE = Unassigned
|
||||
@@ -117,7 +119,7 @@ widget-developer_mode = Developer Mode
|
||||
widget-developer_mode-high_contrast = High contrast
|
||||
widget-developer_mode-precise_rotation = Precise rotation
|
||||
widget-developer_mode-fast_data_feed = Fast data feed
|
||||
widget-developer_mode-filter_slimes_and_hmd = Filter slimes and HMD
|
||||
widget-developer_mode-filter_slimes_and_hmd = Filter Slimes and HMD
|
||||
widget-developer_mode-sort_by_name = Sort by name
|
||||
widget-developer_mode-raw_slime_rotation = Raw rotation
|
||||
widget-developer_mode-more_info = More info
|
||||
@@ -128,6 +130,10 @@ widget-imu_visualizer-rotation_raw = Raw
|
||||
widget-imu_visualizer-rotation_preview = Preview
|
||||
widget-imu_visualizer-rotation_hide = Hide
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
widget-skeleton_visualizer-preview = Skeleton preview
|
||||
widget-skeleton_visualizer-hide = Hide
|
||||
|
||||
## Tracker status
|
||||
tracker-status-none = No Status
|
||||
tracker-status-busy = Busy
|
||||
@@ -135,6 +141,7 @@ tracker-status-error = Error
|
||||
tracker-status-disconnected = Disconnected
|
||||
tracker-status-occluded = Occluded
|
||||
tracker-status-ok = OK
|
||||
tracker-status-timed_out = Timed out
|
||||
|
||||
## Tracker status columns
|
||||
tracker-table-column-name = Name
|
||||
@@ -170,6 +177,7 @@ tracker-infos-hardware_rev = Hardware Revision
|
||||
tracker-infos-hardware_identifier = Hardware ID
|
||||
tracker-infos-imu = IMU Sensor
|
||||
tracker-infos-board_type = Main board
|
||||
tracker-infos-network_version = Protocol Version
|
||||
|
||||
## Tracker settings
|
||||
tracker-settings-back = Go back to trackers list
|
||||
@@ -177,7 +185,7 @@ tracker-settings-title = Tracker settings
|
||||
tracker-settings-assignment_section = Assignment
|
||||
tracker-settings-assignment_section-description = What part of the body the tracker is assigned to.
|
||||
tracker-settings-assignment_section-edit = Edit assignment
|
||||
tracker-settings-mounting_section = Mounting position
|
||||
tracker-settings-mounting_section = Mounting orientation
|
||||
tracker-settings-mounting_section-description = Where is the tracker mounted?
|
||||
tracker-settings-mounting_section-edit = Edit mounting
|
||||
tracker-settings-drift_compensation_section = Allow drift compensation
|
||||
@@ -188,6 +196,9 @@ tracker-settings-drift_compensation_section-edit = Allow drift compensation
|
||||
tracker-settings-name_section = Tracker name
|
||||
tracker-settings-name_section-description = Give it a cute nickname :)
|
||||
tracker-settings-name_section-placeholder = NightyBeast's left leg
|
||||
tracker-settings-forget = Forget tracker
|
||||
tracker-settings-forget-description = Removes the tracker from the SlimeVR Server and prevent it from connecting to it until the server is restarted. The configuration of the tracker won't be lost.
|
||||
tracker-settings-forget-label = Forget tracker
|
||||
|
||||
## Tracker part card info
|
||||
tracker-part_card-no_name = No name
|
||||
@@ -273,10 +284,21 @@ settings-general-steamvr-description =
|
||||
Useful for games or apps that only support certain trackers.
|
||||
settings-general-steamvr-trackers-waist = Waist
|
||||
settings-general-steamvr-trackers-chest = Chest
|
||||
settings-general-steamvr-trackers-feet = Feet
|
||||
settings-general-steamvr-trackers-knees = Knees
|
||||
settings-general-steamvr-trackers-elbows = Elbows
|
||||
settings-general-steamvr-trackers-hands = Hands
|
||||
settings-general-steamvr-trackers-left_foot = Left foot
|
||||
settings-general-steamvr-trackers-right_foot = Right foot
|
||||
settings-general-steamvr-trackers-left_knee = Left knee
|
||||
settings-general-steamvr-trackers-right_knee = Right knee
|
||||
settings-general-steamvr-trackers-left_elbow = Left elbow
|
||||
settings-general-steamvr-trackers-right_elbow = Right elbow
|
||||
settings-general-steamvr-trackers-left_hand = Left hand
|
||||
settings-general-steamvr-trackers-right_hand = Right hand
|
||||
settings-general-steamvr-trackers-tracker_toggling = Automatic tracker assignment
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = Automatically handles toggling SteamVR trackers on or off depending on your current tracker assignments
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = Automatic tracker assignment
|
||||
settings-general-steamvr-trackers-hands-warning = <b>Warning:</b> hand trackers will override your controllers.
|
||||
Are you sure?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = Cancel
|
||||
settings-general-steamvr-trackers-hands-warning-done = Yes
|
||||
|
||||
## Tracker mechanics
|
||||
settings-general-tracker_mechanics = Tracker mechanics
|
||||
@@ -293,6 +315,7 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = Smooth
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Prediction
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Reduces latency and makes movements more snappy, but may increase jitter.
|
||||
settings-general-tracker_mechanics-filtering-amount = Amount
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = Yaw reset smooth time (0s disables smoothing)
|
||||
settings-general-tracker_mechanics-drift_compensation = Drift compensation
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
@@ -301,6 +324,11 @@ settings-general-tracker_mechanics-drift_compensation-description =
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Drift compensation
|
||||
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-description =
|
||||
Saves the automatic mounting reset calibrations 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
|
||||
|
||||
## FK/Tracking settings
|
||||
settings-general-fk_settings = Tracking settings
|
||||
@@ -325,7 +353,7 @@ settings-general-fk_settings-leg_fk = Leg tracking
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Enable feet Mounting Reset by tiptoeing.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Feet Mounting Reset
|
||||
settings-general-fk_settings-arm_fk = Arm tracking
|
||||
settings-general-fk_settings-arm_fk-description = Force arms to be tracked from the HMD even if positional hand data is available.
|
||||
settings-general-fk_settings-arm_fk-description = Force arms to be tracked from the headset (HMD) even if positional hand data is available.
|
||||
settings-general-fk_settings-arm_fk-force_arms = Force arms from HMD
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Change which arm pose is expected for mounting reset.
|
||||
settings-general-fk_settings-arm_fk-back = Back
|
||||
@@ -414,6 +442,12 @@ settings-general-interface-feedback_sound = Feedback sound
|
||||
settings-general-interface-feedback_sound-description = This option will play a sound when a reset is triggered.
|
||||
settings-general-interface-feedback_sound-label = Feedback sound
|
||||
settings-general-interface-feedback_sound-volume = Feedback sound volume
|
||||
settings-general-interface-connected_trackers_warning = Connected trackers warning
|
||||
settings-general-interface-connected_trackers_warning-description = This option will show a pop-up every time you try exiting SlimeVR while having one or more connected trackers. It reminds you to turn off your trackers when you are done to preserve battery life.
|
||||
settings-general-interface-connected_trackers_warning-label = Connected trackers warning on exit
|
||||
settings-general-interface-use_tray = Minimize to system tray
|
||||
settings-general-interface-use_tray-description = Lets you close the window without closing the SlimeVR Server so you can continue using it without having the GUI bothering you.
|
||||
settings-general-interface-use_tray-label = Minimize to system tray
|
||||
|
||||
## Serial settings
|
||||
settings-serial = Serial Console
|
||||
@@ -434,6 +468,7 @@ settings-serial-factory_reset-warning-cancel = Cancel
|
||||
settings-serial-get_infos = Get Infos
|
||||
settings-serial-serial_select = Select a serial port
|
||||
settings-serial-auto_dropdown_item = Auto
|
||||
settings-serial-get_wifi_scan = Get WiFi Scan
|
||||
|
||||
## OSC router settings
|
||||
settings-osc-router = OSC router
|
||||
@@ -463,7 +498,7 @@ settings-osc-router-network-address-placeholder = IPV4 address
|
||||
settings-osc-vrchat = VRChat OSC Trackers
|
||||
# This cares about multilines
|
||||
settings-osc-vrchat-description =
|
||||
Change VRChat-specific settings to receive HMD data and send
|
||||
Change VRChat-specific settings to receive headset (HMD) data and send
|
||||
tracker data for FBT without SteamVR (ex. Quest standalone).
|
||||
settings-osc-vrchat-enable = Enable
|
||||
settings-osc-vrchat-enable-description = Toggle the sending and receiving of data.
|
||||
@@ -554,7 +589,7 @@ onboarding-reset_tutorial-skip = Skip step
|
||||
# Cares about multiline
|
||||
onboarding-reset_tutorial-0 = Tap { $taps } times the highlighted tracker for triggering yaw reset.
|
||||
|
||||
This will make the trackers face the same direction as your HMD.
|
||||
This will make the trackers face the same direction as your headset (HMD).
|
||||
# Cares about multiline
|
||||
onboarding-reset_tutorial-1 = Tap { $taps } times the highlighted tracker for triggering full reset.
|
||||
|
||||
@@ -585,8 +620,8 @@ onboarding-done-close = Close setup
|
||||
## Tracker connection setup
|
||||
onboarding-connect_tracker-back = Go Back to Wi-Fi credentials
|
||||
onboarding-connect_tracker-title = Connect trackers
|
||||
onboarding-connect_tracker-description-p0 = Now onto the fun part, connecting all the trackers!
|
||||
onboarding-connect_tracker-description-p1 = Simply connect all that aren't connected yet, through a USB port.
|
||||
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.
|
||||
onboarding-connect_tracker-issue-serial = I'm having trouble connecting!
|
||||
onboarding-connect_tracker-usb = USB Tracker
|
||||
onboarding-connect_tracker-connection_status-none = Looking for trackers
|
||||
@@ -641,6 +676,7 @@ onboarding-assign_trackers-assigned = { $assigned } of { $trackers ->
|
||||
} assigned
|
||||
onboarding-assign_trackers-advanced = Show advanced assign locations
|
||||
onboarding-assign_trackers-next = I assigned all the trackers
|
||||
onboarding-assign_trackers-mirror_view = Mirror view
|
||||
|
||||
## Tracker assignment warnings
|
||||
# Note for devs, number is used for representing boolean states per bit.
|
||||
@@ -708,12 +744,17 @@ onboarding-choose_mounting-description = Mounting orientation corrects for the p
|
||||
onboarding-choose_mounting-auto_mounting = Automatic mounting
|
||||
# Italized text
|
||||
onboarding-choose_mounting-auto_mounting-label = Experimental
|
||||
onboarding-choose_mounting-auto_mounting-description = This will automatically detect the mounting directions for all of your trackers from 2 poses
|
||||
onboarding-choose_mounting-auto_mounting-description = This will automatically detect the mounting orientations for all of your trackers from 2 poses
|
||||
onboarding-choose_mounting-manual_mounting = Manual mounting
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Recommended
|
||||
onboarding-choose_mounting-manual_mounting-description = This will let you choose the mounting direction manually for each tracker
|
||||
|
||||
onboarding-choose_mounting-manual_mounting-description = This will let you choose the mounting orientation manually for each tracker
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title = Are you sure you want to do
|
||||
the automatic mounting calibration?
|
||||
onboarding-choose_mounting-manual_modal-description = <b>The manual mounting calibration is recommended for new users</b>, as the automatic mounting calibration's poses can be hard to get right first and may require some practice.
|
||||
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
|
||||
@@ -725,35 +766,36 @@ onboarding-manual_mounting-next = Next step
|
||||
## Tracker automatic mounting setup
|
||||
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 rotation to your trackers to align them with your physical tracker mounting.
|
||||
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
|
||||
onboarding-automatic_mounting-next = Next step
|
||||
onboarding-automatic_mounting-prev_step = Previous step
|
||||
onboarding-automatic_mounting-done-title = Mounting rotations calibrated.
|
||||
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-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 rotations will reset.
|
||||
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-preparation-title = Preparation
|
||||
onboarding-automatic_mounting-preparation-step-0 = 1. Stand upright with your arms to your sides.
|
||||
onboarding-automatic_mounting-preparation-step-1 = 2. Press the "Full Reset" button and wait for 3 seconds before the trackers will reset.
|
||||
onboarding-automatic_mounting-put_trackers_on-title = Put on your trackers
|
||||
onboarding-automatic_mounting-put_trackers_on-description = To calibrate mounting rotations, we're gonna use the trackers you just assigned. Put on all your trackers, you can see which are which in the figure to the right.
|
||||
onboarding-automatic_mounting-put_trackers_on-description = To calibrate mounting orientations, we're gonna use the trackers you just assigned. Put on all your trackers, you can see which are which in the figure to the right.
|
||||
onboarding-automatic_mounting-put_trackers_on-next = I have all my trackers on
|
||||
|
||||
## Tracker proportions method choose
|
||||
onboarding-choose_proportions = What proportion calibration method to use?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description = Body proportions are used to know the measurements of your body. They're required to calculate the trackers' positions.
|
||||
onboarding-choose_proportions-description-v1 = Body proportions are used to know the measurements of your body. They're required to calculate the trackers' positions.
|
||||
When proportions of your body don't match the ones saved, your tracking precision will be worse and you will notice things like skating or sliding, or your body not matching your avatar well.
|
||||
<b>You only need to measure your body once!</b> Unless they are wrong or your body has changed, then you don't need to do them again.
|
||||
onboarding-choose_proportions-auto_proportions = Automatic proportions
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Recommended
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv2 =
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
This will guess your proportions by recording a sample of your movements and passing it through an algorithm.
|
||||
|
||||
<b>This requires having your HMD connected to SlimeVR!</b>
|
||||
<b>This requires having your headset (HMD) connected to SlimeVR and on your head!</b>
|
||||
onboarding-choose_proportions-manual_proportions = Manual proportions
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = For small touches
|
||||
@@ -782,18 +824,19 @@ onboarding-automatic_proportions-put_trackers_on-description = To calibrate your
|
||||
onboarding-automatic_proportions-put_trackers_on-next = I have all my trackers on
|
||||
onboarding-automatic_proportions-requirements-title = Requirements
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
You have at least enough trackers to track your feet (generally 5 trackers).
|
||||
You have your trackers and headset on.
|
||||
You are wearing your trackers and headset.
|
||||
Your trackers and headset are connected to the SlimeVR server.
|
||||
Your trackers and headset are working properly within the SlimeVR server.
|
||||
You have your trackers and headset on and are wearing them.
|
||||
Your trackers and headset are connected to the SlimeVR server and are working properly (ex. no stuttering, disconnecting, etc).
|
||||
Your headset is reporting positional data to the SlimeVR server (this generally means having SteamVR running and connected to SlimeVR using SlimeVR's SteamVR driver).
|
||||
Your tracking is working and is accurately representing your movements (ex. you have performed a full reset and they move the right direction when kicking, bending over, sitting, etc).
|
||||
onboarding-automatic_proportions-requirements-next = I have read the requirements
|
||||
onboarding-automatic_proportions-check_height-title = Check your height
|
||||
onboarding-automatic_proportions-check_height-description = We use your height as a basis of our measurements by using the HMD's height as an approximation of your actual height, but it's better to check if they are right yourself!
|
||||
onboarding-automatic_proportions-check_height-description = We use your height as a basis of our measurements by using the headset's (HMD) height as an approximation of your actual height, but it's better to check if they are right yourself!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = Please press the button while standing <u>upright</u> to calculate your height. You have 3 seconds after you press the button!
|
||||
onboarding-automatic_proportions-check_height-guardian_tip = If you are using a standalone VR headset, make sure to have your guardian /
|
||||
boundary turned on so that your height is correct!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = I'm standing!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = Unknown
|
||||
@@ -838,6 +881,14 @@ onboarding-automatic_proportions-error_modal-confirm = Understood!
|
||||
## Home
|
||||
home-no_trackers = No trackers detected or assigned
|
||||
|
||||
## Trackers Still On notification
|
||||
trackers_still_on-modal-title = Trackers still on
|
||||
trackers_still_on-modal-description =
|
||||
One or more trackers are still on.
|
||||
Do you still want to exit SlimeVR?
|
||||
trackers_still_on-modal-confirm = Exit SlimeVR
|
||||
trackers_still_on-modal-cancel = Hold on...
|
||||
|
||||
## Status system
|
||||
status_system-StatusTrackerReset = It is recommended to perform a full reset as one or more trackers are unadjusted.
|
||||
status_system-StatusSteamVRDisconnected = { $type ->
|
||||
@@ -845,3 +896,26 @@ status_system-StatusSteamVRDisconnected = { $type ->
|
||||
[steamvr_feeder] Currently not connected to the SlimeVR Feeder App.
|
||||
}
|
||||
status_system-StatusTrackerError = The { $trackerName } tracker has an error.
|
||||
|
||||
## Tray Menu
|
||||
tray_menu-show = Show
|
||||
tray_menu-hide = Hide
|
||||
tray_menu-quit = Quit
|
||||
|
||||
## First exit modal
|
||||
tray_or_exit_modal-title = What should the close button do?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description = This lets you choose whether you want to exit the server or to minimize it to the tray when pressing the close button.
|
||||
|
||||
You can change this later in the interface settings!
|
||||
tray_or_exit_modal-radio-exit = Exit on close
|
||||
tray_or_exit_modal-radio-tray = Minimize to system tray
|
||||
tray_or_exit_modal-submit = Save
|
||||
tray_or_exit_modal-cancel = Cancel
|
||||
|
||||
## Unknown device modal
|
||||
unknown_device-modal-title = A new tracker was found!
|
||||
unknown_device-modal-description = There is a new tracker with MAC address <b>{$deviceId}</b>.
|
||||
Do you want to connect it to SlimeVR?
|
||||
unknown_device-modal-confirm = Sure!
|
||||
unknown_device-modal-forget = Ignore it
|
||||
|
||||
@@ -23,6 +23,8 @@ tips-find_tracker = ¿No estás seguro de cuál sensor es cuál? Agita un sensor
|
||||
tips-do_not_move_heels = ¡Asegúrate de no mover los talones en la grabación!
|
||||
tips-file_select = Arrastra y suelta archivos para usarlos, o <u>selecciónalos<u>.
|
||||
tips-tap_setup = Puedes tocar lentamente 2 veces el tracker para seleccionarlo en lugar de seleccionarlo desde el menú.
|
||||
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.
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -144,6 +146,11 @@ widget-imu_visualizer-rotation_raw = Raw
|
||||
widget-imu_visualizer-rotation_preview = Preview
|
||||
widget-imu_visualizer-rotation_hide = Ocultar
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Previsualización del esqueleto
|
||||
widget-skeleton_visualizer-hide = Ocultar
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = Sin estado
|
||||
@@ -152,6 +159,7 @@ tracker-status-error = Error
|
||||
tracker-status-disconnected = Desconectado
|
||||
tracker-status-occluded = Ocluido
|
||||
tracker-status-ok = Conectado
|
||||
tracker-status-timed_out = Conexión interrumpida
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -190,6 +198,7 @@ tracker-infos-hardware_rev = Revisión del hardware
|
||||
tracker-infos-hardware_identifier = ID del hardware
|
||||
tracker-infos-imu = Sensor IMU
|
||||
tracker-infos-board_type = Placa principal
|
||||
tracker-infos-network_version = Versión del protocolo
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -209,6 +218,9 @@ tracker-settings-drift_compensation_section-edit = Permitir compensación de des
|
||||
tracker-settings-name_section = Nombre del sensor
|
||||
tracker-settings-name_section-description = Dale un apodo bonito :)
|
||||
tracker-settings-name_section-placeholder = Pata izquierda de Manteca
|
||||
tracker-settings-forget = Olvidar tracker
|
||||
tracker-settings-forget-description = Remueve el tracker del servidor de SlimeVR y lo previene de conectarse hasta que el servidor se reinicie. La configuración del tracker no se perderá.
|
||||
tracker-settings-forget-label = Olvidar tracker
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -298,10 +310,22 @@ settings-general-steamvr-description =
|
||||
Útil para juegos y aplicaciones que solo soportan ciertos sensores..
|
||||
settings-general-steamvr-trackers-waist = Cintura
|
||||
settings-general-steamvr-trackers-chest = Pecho
|
||||
settings-general-steamvr-trackers-feet = Pies
|
||||
settings-general-steamvr-trackers-knees = Rodillas
|
||||
settings-general-steamvr-trackers-elbows = Codos
|
||||
settings-general-steamvr-trackers-hands = Manos
|
||||
settings-general-steamvr-trackers-left_foot = Pie izquierdo
|
||||
settings-general-steamvr-trackers-right_foot = Pie derecho
|
||||
settings-general-steamvr-trackers-left_knee = Rodilla izquierda
|
||||
settings-general-steamvr-trackers-right_knee = Rodilla derecha
|
||||
settings-general-steamvr-trackers-left_elbow = Codo izquierdo
|
||||
settings-general-steamvr-trackers-right_elbow = Codo derecho
|
||||
settings-general-steamvr-trackers-left_hand = Mano izquierda
|
||||
settings-general-steamvr-trackers-right_hand = Mano derecha
|
||||
settings-general-steamvr-trackers-tracker_toggling = Asignación automatica de trackers
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = Automáticamente se encarga de prender o apagar los trackers de SteamVR dependiendo de los trackers asignados a tu cuerpo
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = Asignación automatica de trackers
|
||||
settings-general-steamvr-trackers-hands-warning =
|
||||
<b>Advertencia:</b> los trackers de mano reemplazaran los controles del VR.
|
||||
¿Estás seguro?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = Cancelar
|
||||
settings-general-steamvr-trackers-hands-warning-done = Sí
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -319,6 +343,7 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = Suaviz
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Predicción
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Reduce la latencia y los movimientos serán más inmediatos, pero puede incrementar la inestabilidad.
|
||||
settings-general-tracker_mechanics-filtering-amount = Cantidad
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = Tiempo de interpolación para el reinicio horizontal (0s desactiva el suavizado)
|
||||
settings-general-tracker_mechanics-drift_compensation = Compensación de desviación
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
@@ -327,6 +352,11 @@ settings-general-tracker_mechanics-drift_compensation-description =
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Compensación de desviación
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = Fuerza de la compensación
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Utilizar hasta los últimos x reinicios
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Guardar calibración automática de reinicio de montura
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
Guarda las calibraciones automáticas del reinicio de montura para los trackers entre reinicios. Útil
|
||||
para cuando se usa un traje donde los trackers no se mueven entre sesiones. <b>¡No se recomienda para usuarios típicos!</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Guardar reinicio de montura
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -348,9 +378,20 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = El clip del suel
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = El encajado de dedos intenta adivinar la rotación de los pies si sus respectivos trackers no están en uso.
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = El plantado del pie rota los pies para que sean paralelos con el suelo al entrar en contacto.
|
||||
settings-general-fk_settings-leg_fk = Tracking de piernas
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Activar reinicio de montura para el pie mediante el pararse de puntillas.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Reinicio de montura de pies
|
||||
settings-general-fk_settings-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
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Cambiar que pose de brazos es esperada para el reinicio de montura.
|
||||
settings-general-fk_settings-arm_fk-back = Detrás
|
||||
settings-general-fk_settings-arm_fk-back-description = El modo predeterminado, con el brazo yendo por detrás y el antebrazo yendo para adelante.
|
||||
settings-general-fk_settings-arm_fk-tpose_up = T-pose (arriba)
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Espera que tus brazos estén abajo hacia los lados durante un reinicio completo, y 90 grados hacia los lados durante un reinicio de montura.
|
||||
settings-general-fk_settings-arm_fk-tpose_down = T-pose (abajo)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = Espera que tus brazos estén 90 grados arriba hacia los lados durante un reinicio completo, y abajo hacia los lados durante un reinicio de montura.
|
||||
settings-general-fk_settings-arm_fk-forward = Delante
|
||||
settings-general-fk_settings-arm_fk-forward-description = Espera que tus brazos estén 90 grados para delante. Útil para VTubing.
|
||||
settings-general-fk_settings-skeleton_settings-toggles = Interruptores del esqueleto
|
||||
settings-general-fk_settings-skeleton_settings-description = Habilita o deshabilita los ajustes de esqueleto. Es recomendado dejar estos ajustes habilitados.
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine_model = Modelo extendido de la columna
|
||||
@@ -363,7 +404,8 @@ settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_legs = Im
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs = Imputar de la cadera al pecho hasta las piernas
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_waist_legs = Imputar de la cadera a la cintura hasta las piernas
|
||||
settings-general-fk_settings-skeleton_settings-interp_hip_legs = Promediar la rotación del eje vertical y horizontal de la cadera con la de las piernas
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = Promediar la rotación del eje vertical y horizontal de la rodilla con la de los tobillos
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = Promediar la rotación del eje vertical y horizontal de los trackers de las rodillas con la de los tobillos
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = Promediar la rotación del eje vertical y horizontal de las rodillas con la de los tobillos
|
||||
settings-general-fk_settings-self_localization-title = Modo mocap
|
||||
settings-general-fk_settings-self_localization-description = El modo mocap permite al esqueleto rastrear de forma aproximada su propia posición sin un casco o otros sensores. Nota que esto requiere que los trackers en el pie y cabeza estén y sigue siendo experimental.
|
||||
settings-general-fk_settings-vive_emulation-title = Vive emulation
|
||||
@@ -431,6 +473,12 @@ settings-general-interface-feedback_sound = Sonido de feedback
|
||||
settings-general-interface-feedback_sound-description = Esta opción reproducirá un sonido cuando se realice un reinicio.
|
||||
settings-general-interface-feedback_sound-label = Sonido de feedback
|
||||
settings-general-interface-feedback_sound-volume = Volumen del sonido de feedback
|
||||
settings-general-interface-connected_trackers_warning = Advertencia de trackers conectados
|
||||
settings-general-interface-connected_trackers_warning-description = Esta opción hará que aparezca un pop-up cada vez que intentas salir de SlimeVR mientras tienes uno o más trackers conectados. Te recuerda de apagar tus trackers cuando ya paraste de usarlos así preservas la duración de la batería.
|
||||
settings-general-interface-connected_trackers_warning-label = Advertencia de trackers conectados al salir
|
||||
settings-general-interface-use_tray = Minimizar a la bandeja del sistema
|
||||
settings-general-interface-use_tray-description = Permite cerrar la ventana sin cerrar el servidor de SlimeVR para que puedas continuar usándolo sin que te moleste la interfaz.
|
||||
settings-general-interface-use_tray-label = Minimizar a la bandeja del sistema
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -452,6 +500,7 @@ settings-serial-factory_reset-warning-cancel = Cancelar
|
||||
settings-serial-get_infos = Obtener información
|
||||
settings-serial-serial_select = Selecciona un puerto serial
|
||||
settings-serial-auto_dropdown_item = Auto
|
||||
settings-serial-get_wifi_scan = Obtener escaneo WiFi
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -617,8 +666,8 @@ onboarding-done-close = Cerrar la guía
|
||||
|
||||
onboarding-connect_tracker-back = Volver a las credenciales Wi-Fi
|
||||
onboarding-connect_tracker-title = Conecta tus sensores
|
||||
onboarding-connect_tracker-description-p0 = Ahora la parte divertida, ¡Conectar todos tus sensores!
|
||||
onboarding-connect_tracker-description-p1 = Simplemente conecta todos los sensores que aún no están conectados, por medio de un puerto USB.
|
||||
onboarding-connect_tracker-description-p0-v1 = Ahora la parte divertida, ¡Conectando tus trackers!
|
||||
onboarding-connect_tracker-description-p1-v1 = Conecte cada tracker de uno en uno a través de un puerto USB.
|
||||
onboarding-connect_tracker-issue-serial = ¡Tengo problemas conectándolos!
|
||||
onboarding-connect_tracker-usb = Sensor USB
|
||||
onboarding-connect_tracker-connection_status-none = Buscando sensores
|
||||
@@ -678,6 +727,7 @@ onboarding-assign_trackers-assigned =
|
||||
}
|
||||
onboarding-assign_trackers-advanced = Mostrar ubicación de asignaciones avanzados.
|
||||
onboarding-assign_trackers-next = He asignado todos los sensores
|
||||
onboarding-assign_trackers-mirror_view = Vista espejo
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -760,6 +810,13 @@ onboarding-choose_mounting-manual_mounting = Montura manual
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Recomendado
|
||||
onboarding-choose_mounting-manual_mounting-description = Esto te permitirá elegir la dirección de montura manualmente para cada tracker.
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title =
|
||||
¿Está seguro de que quiere
|
||||
hacer la calibración automática de montura?
|
||||
onboarding-choose_mounting-manual_modal-description = <b>Está recomendado para nuevos usuarios el uso de la calibración manual de montura</b>, ya que las poses de la calibración automática pueden ser difíciles de hacer correctamente en el primer intento y requieran un poco de práctica.
|
||||
onboarding-choose_mounting-manual_modal-confirm = Estoy seguro de lo que hago
|
||||
onboarding-choose_mounting-manual_modal-cancel = Cancelar
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -794,20 +851,25 @@ onboarding-automatic_mounting-put_trackers_on-next = Tengo puestos todos mis sen
|
||||
|
||||
onboarding-choose_proportions = ¿Qué método de calibración de proporciones quiere usar?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description =
|
||||
Las proporciones del cuerpo se utilizan para conocer las medidas de todo tu cuerpo. Es necesario para calcular las posiciones de los trackers.
|
||||
Cuando las proporciones de tu cuerpo no coinciden con las guardadas, la precisión del senseo será peor y notarás cosas como patinaje o deslizamiento, o que tu cuerpo no coincide bien con tu avatar.
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
Las proporciones corporales son utilizadas para saber las medidas de tu cuerpo. Se requieren para calcular la posición de los trackers.
|
||||
Cuando las proporciones de tu cuerpo no encajan con las guardadas, la precisión de tu tracking será peor y notarás cosas como deslizamiento o desplazamiento, o tu cuerpo no encajando bien con tu avatar.
|
||||
<b>¡Solo necesitas medir tu cuerpo una vez!</b> A menos que estén mal o tu cuerpo haya cambiado, no necesitas hacerlo de nuevo.
|
||||
onboarding-choose_proportions-auto_proportions = Proporciones automáticas
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Recomendado
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv2 =
|
||||
Esto adivinará tus proporciones grabando una muestra de tus movimientos y pasándola por un algoritmo.
|
||||
<b>¡Esto requiere tener tu VR conectado a SlimeVR!</b>
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
Esto estimará tus proporciones grabando una muestra de tus movimientos y pasándolos a través de un algoritmo.
|
||||
|
||||
<b>¡Esto requiere tener tu visor (HMD) conectado a SlimeVR y en tu cabeza!</b>
|
||||
onboarding-choose_proportions-manual_proportions = Proporciones manuales
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = Para toques pequeños
|
||||
onboarding-choose_proportions-manual_proportions-description = Esto te permitirá ajustar tus proporciones manualmente de forma directa
|
||||
onboarding-choose_proportions-export = Exportar proporciones
|
||||
onboarding-choose_proportions-import = Importar proporciones
|
||||
onboarding-choose_proportions-import-success = Importado
|
||||
onboarding-choose_proportions-import-failed = Error
|
||||
onboarding-choose_proportions-file_type = Archivo de proporciones del cuerpo
|
||||
|
||||
## Tracker manual proportions setup
|
||||
@@ -830,18 +892,20 @@ onboarding-automatic_proportions-put_trackers_on-description = Para calibrar tus
|
||||
onboarding-automatic_proportions-put_trackers_on-next = Tengo puestos todos mis sensores
|
||||
onboarding-automatic_proportions-requirements-title = Requisitos
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
Tienes al menos suficientes trackers para rastrear tus pies (generalmente 5 trackers).
|
||||
Tienes tus trackers y VR encendidos.
|
||||
Tienes tus trackers y VR puestos.
|
||||
Tus trackers y VR están conectados al servidor de SlimeVR.
|
||||
Tus trackers y VR están funcionando correctamente con el servidor de SlimeVR.
|
||||
Tu VR está reportando datos posicionales al servidor de SlimeVR (esto generalmente implica que SteamVR esté corriendo y conectado a SlimeVR usando el driver de SlimeVR para SteamVR).
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
Tienes suficientes sensores para mover tus pies (generalmente 5 sensores).
|
||||
Tienes tus sensores y visor encendidos y los tienes puestos.
|
||||
Tus sensores y visor están conectados al servidor de SlimeVR y están funcionando correctamente (ej: no se congela, no se desconecta, etc).
|
||||
Tu visor esta reportando datos posicionales al servidor de SlimeVR (esto generalmente significa tener SteamVR abierto y conectado a SlimeVR usando el driver de SlimeVR para SteamVR).
|
||||
Tus sensores están funcionando y están representando tus movimientos con precisión (ej: Realizaste un reinicio completo y se mueven en la dirección correcta cuando pateas, te agachas, te sientas, etc).
|
||||
onboarding-automatic_proportions-requirements-next = He leído los requisitos
|
||||
onboarding-automatic_proportions-check_height-title = Compruebe su altura
|
||||
onboarding-automatic_proportions-check_height-description = Utilizamos tu altura como base de nuestras mediciones utilizando la altura del VR como aproximación a tu altura real, ¡Pero es mejor que compruebes tú mismo si son correctas!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = Por favor, pulse el botón mientras está <u>de pie</u> para calcular su altura. ¡Tienes unos 3 segundos después de pulsar el botón!
|
||||
onboarding-automatic_proportions-check_height-guardian_tip =
|
||||
Si está utilizando un casco de VR portable, asegúrese de tener el guardián/
|
||||
barrera activado así la altura es detectada correctamente!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = Estoy de pie
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = Desconocida
|
||||
@@ -888,6 +952,15 @@ onboarding-automatic_proportions-error_modal-confirm = ¡Entendido!
|
||||
|
||||
home-no_trackers = No hay sensores detectados o asignados
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = Los trackers siguen encendidos
|
||||
trackers_still_on-modal-description =
|
||||
Uno o más trackers siguen encendidos.
|
||||
¿Estás seguro que quieres salir de SlimeVR?
|
||||
trackers_still_on-modal-confirm = Salir de SlimeVR
|
||||
trackers_still_on-modal-cancel = Espera un momento...
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = Se recomienda realizar un reinicio completo ya que uno o más trackers están sin reiniciar.
|
||||
@@ -897,3 +970,31 @@ status_system-StatusSteamVRDisconnected =
|
||||
*[other] Actualmente no está conectado a SteamVR a través del driver de SlimeVR.
|
||||
}
|
||||
status_system-StatusTrackerError = El tracker { $trackerName } tiene un error.
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = Mostrar
|
||||
tray_menu-hide = Ocultar
|
||||
tray_menu-quit = Salir
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = ¿Que debería hacer el botón de cerrar?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
Esto te deja escoger si quieres cerrar el servidor o minimizarlo a la bandeja cuando se presiona el botón de cerrar.
|
||||
|
||||
¡Puedes cambiar esto luego en los ajustes de la interfaz!
|
||||
tray_or_exit_modal-radio-exit = Salir al cerrar
|
||||
tray_or_exit_modal-radio-tray = Minimizar a la bandeja del sistema
|
||||
tray_or_exit_modal-submit = Guardar
|
||||
tray_or_exit_modal-cancel = Cancelar
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = ¡Se encontró un nuevo tracker!
|
||||
unknown_device-modal-description =
|
||||
Hay un tracker nuevo con la dirección MAC <b>{ $deviceid }</b>.
|
||||
¿Lo quieres conectar a SlimeVR?
|
||||
unknown_device-modal-confirm = ¡Claro!
|
||||
unknown_device-modal-forget = Ignorarlo
|
||||
|
||||
@@ -23,6 +23,8 @@ tips-find_tracker = ¿No estás seguro de qué tracker es el correcto? Agitalo y
|
||||
tips-do_not_move_heels = Asegúrate de no mover los talones durante el guardado de datos.
|
||||
tips-file_select = Arrastra y suelta los archivos para usarlos o <u>navega</u>.
|
||||
tips-tap_setup = Haz clic en el menú o golpea suavemente el tracker 2 veces para seleccionarlo automaticamente.
|
||||
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.
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -36,7 +38,7 @@ body_part-RIGHT_HAND = Mano derecha
|
||||
body_part-RIGHT_UPPER_LEG = Muslo derecho
|
||||
body_part-RIGHT_LOWER_LEG = Tobillo derecho
|
||||
body_part-RIGHT_FOOT = Pie derecho
|
||||
body_part-UPPER_CHEST = Abdomen superior
|
||||
body_part-UPPER_CHEST = Torso superior
|
||||
body_part-CHEST = Pecho
|
||||
body_part-WAIST = Cintura
|
||||
body_part-HIP = Cadera
|
||||
@@ -60,26 +62,26 @@ skeleton_bone-CHEST = Longitud del pecho
|
||||
skeleton_bone-WAIST = Longitud de cintura
|
||||
skeleton_bone-HIP = Longitud de cadera
|
||||
skeleton_bone-HIP_OFFSET = Compensacion de cadera
|
||||
skeleton_bone-HIPS_WIDTH = Ancho de la Cadera
|
||||
skeleton_bone-leg_group = Largo de las piernas
|
||||
skeleton_bone-UPPER_LEG = Largo de la zona alta de las piernas
|
||||
skeleton_bone-LOWER_LEG = Largo de la zona baja de las piernas
|
||||
skeleton_bone-FOOT_LENGTH = Largo del pie
|
||||
skeleton_bone-HIPS_WIDTH = Ancho de la cadera
|
||||
skeleton_bone-leg_group = Longitud de la espinilla
|
||||
skeleton_bone-UPPER_LEG = Longitud del muslo
|
||||
skeleton_bone-LOWER_LEG = Longitud de la espinilla
|
||||
skeleton_bone-FOOT_LENGTH = Longitud del pie
|
||||
skeleton_bone-FOOT_SHIFT = Desplazamiento del pie
|
||||
skeleton_bone-SKELETON_OFFSET = Compensacion del esqueleto
|
||||
skeleton_bone-SHOULDERS_DISTANCE = Distancia de los hombros
|
||||
skeleton_bone-SHOULDERS_WIDTH = Ancho de los hombros
|
||||
skeleton_bone-arm_group = Largo del brazo
|
||||
skeleton_bone-UPPER_ARM = Largo de la zona alta del brazo
|
||||
skeleton_bone-LOWER_ARM = Largo del antebrazo
|
||||
skeleton_bone-HAND_Y = Distancia de la mano Y
|
||||
skeleton_bone-HAND_Z = Distancia de la mano Z
|
||||
skeleton_bone-SHOULDERS_DISTANCE = Distancia de hombros
|
||||
skeleton_bone-SHOULDERS_WIDTH = Ancho de hombros
|
||||
skeleton_bone-arm_group = Longitud del brazo
|
||||
skeleton_bone-UPPER_ARM = Longitud del brazo
|
||||
skeleton_bone-LOWER_ARM = Longitud del antebrazo
|
||||
skeleton_bone-HAND_Y = Distancia Y de la mano
|
||||
skeleton_bone-HAND_Z = Distancia Z de la mano
|
||||
skeleton_bone-ELBOW_OFFSET = Compensacion de los codos
|
||||
|
||||
## Tracker reset buttons
|
||||
|
||||
reset-reset_all = Reiniciar todas las proporciones
|
||||
reset-full = Reiniciar
|
||||
reset-full = Reinicio completo
|
||||
reset-mounting = Reiniciar montura
|
||||
reset-yaw = Restablecimiento horizontal
|
||||
|
||||
@@ -96,7 +98,7 @@ serial_detection-close = Cerrar
|
||||
## Navigation bar
|
||||
|
||||
navbar-home = Inicio
|
||||
navbar-body_proportions = Proporciones corporales
|
||||
navbar-body_proportions = Proporciones físicas
|
||||
navbar-trackers_assign = Asignación de trackers
|
||||
navbar-mounting = Calibración de montura
|
||||
navbar-onboarding = Asistente de Configuración
|
||||
@@ -124,12 +126,14 @@ widget-drift_compensation-clear = Eliminar compensacion del drift
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
|
||||
widget-clear_mounting = Limpiar reinicio de montura
|
||||
|
||||
## Widget: Developer settings
|
||||
|
||||
widget-developer_mode = Modo de desarrollador
|
||||
widget-developer_mode-high_contrast = Contraste alto
|
||||
widget-developer_mode-precise_rotation = Rotación precisa
|
||||
widget-developer_mode-fast_data_feed = Flujo de datos rápido
|
||||
widget-developer_mode-filter_slimes_and_hmd = Filtrar Slimes y HMD
|
||||
widget-developer_mode-sort_by_name = Ordenar por nombre
|
||||
widget-developer_mode-raw_slime_rotation = Rotación sin filtrar
|
||||
@@ -142,6 +146,11 @@ widget-imu_visualizer-rotation_raw = Sin filtrar
|
||||
widget-imu_visualizer-rotation_preview = Previsualización
|
||||
widget-imu_visualizer-rotation_hide = Ocultar
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Previsualización del esqueleto
|
||||
widget-skeleton_visualizer-hide = Ocultar
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = Sin estatus
|
||||
@@ -150,6 +159,7 @@ tracker-status-error = Error
|
||||
tracker-status-disconnected = Desconectado
|
||||
tracker-status-occluded = Ocluída
|
||||
tracker-status-ok = Ok
|
||||
tracker-status-timed_out = Sin respuesta
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -175,6 +185,7 @@ tracker-rotation-back = Trasero
|
||||
tracker-rotation-back_left = Trasero-Izquierdo
|
||||
tracker-rotation-back_right = Trasero-Derecho
|
||||
tracker-rotation-custom = Personalizado
|
||||
tracker-rotation-overriden = (anulado por el reinicio de montura)
|
||||
|
||||
## Tracker information
|
||||
|
||||
@@ -187,6 +198,7 @@ tracker-infos-hardware_rev = Revisión del hardware
|
||||
tracker-infos-hardware_identifier = ID de hardware
|
||||
tracker-infos-imu = Sensor IMU
|
||||
tracker-infos-board_type = Placa principal
|
||||
tracker-infos-network_version = Versión de protocolo
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -206,6 +218,9 @@ tracker-settings-drift_compensation_section-edit = Permitir compensación de dri
|
||||
tracker-settings-name_section = Nombre del tracker
|
||||
tracker-settings-name_section-description = Dale un sobrenombre lindo :)
|
||||
tracker-settings-name_section-placeholder = Pata izquierda del Eevee
|
||||
tracker-settings-forget = Olvidar tracker
|
||||
tracker-settings-forget-description = Elimina el tracker del servidor SlimeVR y evita que se conecte a él hasta que se reinicie el servidor. La configuración del tracker no se perderá.
|
||||
tracker-settings-forget-label = Olvidar tracker
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -238,6 +253,8 @@ tracker_selection_menu-RIGHT_HAND = { -tracker_selection-part } mano derecha?
|
||||
tracker_selection_menu-RIGHT_UPPER_LEG = { -tracker_selection-part } muslo derecho?
|
||||
tracker_selection_menu-RIGHT_LOWER_LEG = { -tracker_selection-part } tobillo derecho?
|
||||
tracker_selection_menu-RIGHT_FOOT = { -tracker_selection-part } pie derecho?
|
||||
tracker_selection_menu-RIGHT_CONTROLLER = { -tracker_selection-part } mando derecho?
|
||||
tracker_selection_menu-UPPER_CHEST = { -tracker_selection-part } torso superior?
|
||||
tracker_selection_menu-CHEST = { -tracker_selection-part } pecho?
|
||||
tracker_selection_menu-WAIST = { -tracker_selection-part } cintura?
|
||||
tracker_selection_menu-HIP = { -tracker_selection-part } cadera?
|
||||
@@ -248,6 +265,7 @@ tracker_selection_menu-LEFT_HAND = { -tracker_selection-part } mano izquierda?
|
||||
tracker_selection_menu-LEFT_UPPER_LEG = { -tracker_selection-part } muslo izquierdo?
|
||||
tracker_selection_menu-LEFT_LOWER_LEG = { -tracker_selection-part } tobillo izquierdo?
|
||||
tracker_selection_menu-LEFT_FOOT = { -tracker_selection-part } pie izquierdo?
|
||||
tracker_selection_menu-LEFT_CONTROLLER = { -tracker_selection-part } mando izquierdo?
|
||||
tracker_selection_menu-unassigned = Trackers sin asignar
|
||||
tracker_selection_menu-assigned = Trackers asignados
|
||||
tracker_selection_menu-dont_assign = No asignar
|
||||
@@ -261,7 +279,7 @@ tracker_selection_menu-neck_warning-cancel = Cancelar
|
||||
|
||||
## Mounting menu
|
||||
|
||||
mounting_selection_menu = ¿Dónde quieres que esté este tracker?
|
||||
mounting_selection_menu = ¿Dónde quieres colocar el tracker?
|
||||
mounting_selection_menu-close = Cerrar
|
||||
|
||||
## Sidebar settings
|
||||
@@ -273,8 +291,11 @@ settings-sidebar-fk_settings = Configuración del tracking
|
||||
settings-sidebar-gesture_control = Control de los gestos
|
||||
settings-sidebar-interface = Interfaz
|
||||
settings-sidebar-osc_router = Router OSC
|
||||
settings-sidebar-osc_trackers = VRChat OSC Trackers
|
||||
settings-sidebar-utils = Utilidades
|
||||
settings-sidebar-serial = Consola serial
|
||||
settings-sidebar-appearance = Apariencia
|
||||
settings-sidebar-notifications = Notificaciones
|
||||
|
||||
## SteamVR settings
|
||||
|
||||
@@ -289,10 +310,20 @@ settings-general-steamvr-description =
|
||||
Útil para juegos o aplicaciones que solo soportan ciertos trackers.
|
||||
settings-general-steamvr-trackers-waist = Cintura
|
||||
settings-general-steamvr-trackers-chest = Pecho
|
||||
settings-general-steamvr-trackers-feet = Pies
|
||||
settings-general-steamvr-trackers-knees = Rodillas
|
||||
settings-general-steamvr-trackers-elbows = Codos
|
||||
settings-general-steamvr-trackers-hands = Manos
|
||||
settings-general-steamvr-trackers-left_foot = Pie izquierdo
|
||||
settings-general-steamvr-trackers-right_foot = Pie derecho
|
||||
settings-general-steamvr-trackers-left_knee = Rodilla izquierda
|
||||
settings-general-steamvr-trackers-right_knee = Rodilla derecha
|
||||
settings-general-steamvr-trackers-left_elbow = Codo izquierdo
|
||||
settings-general-steamvr-trackers-right_elbow = Codo derecho
|
||||
settings-general-steamvr-trackers-left_hand = Mano izquierda
|
||||
settings-general-steamvr-trackers-right_hand = Mano derecha
|
||||
settings-general-steamvr-trackers-tracker_toggling = Asignación automática de trackers
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = Gestiona automáticamente la activación o desactivación de los trackers de SteamVR en función de tus asignaciones en los trackers actuales
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = Asignación automática de trackers
|
||||
settings-general-steamvr-trackers-hands-warning = <b>Advertencia:</b> Los trackers de manos anularán tus mandos. ¿Estás seguro?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = Cancelar
|
||||
settings-general-steamvr-trackers-hands-warning-done = Sí
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -310,9 +341,20 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = Suaviz
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Predicción
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Reduce la latencia y hace que los movimientos sean mas inmediatos, pero puede aumentar la fluctuación.
|
||||
settings-general-tracker_mechanics-filtering-amount = Cantidad
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = Tiempo de suavizado al restablecer el eje horizontal (0s deshabilita el suavizado)
|
||||
settings-general-tracker_mechanics-drift_compensation = Compensación en la desviación
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
Compensa la desviación horizontal del IMU aplicando una rotación inversa.
|
||||
Cambia la cantidad de compensación y de reinicios que se tienen en cuenta.
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Compensación en la desviación
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = Cantidad de compensación
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Usar los últimos X reinicios.
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Guardar la calibración de reajuste de montaje automático
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
Guarda las calibraciones de reajuste de montaje automático para los trackers entre reinicios. Útil
|
||||
cuando se lleva un traje en el que los trackers no se mueven entre sesiones. <b>No recomendado para usuarios normales!</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Guardar restablecimiento de montaje
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -320,18 +362,50 @@ settings-general-fk_settings = Configuración de FK Tracking
|
||||
# Floor clip:
|
||||
# why the name - came from the idea of noclip in video games, but is the opposite where clipping to the floor is a desired feature
|
||||
# definition - Prevents the foot trackers from going lower than they where when a reset was performed
|
||||
settings-general-fk_settings-leg_tweak-floor_clip = Floor clip
|
||||
settings-general-fk_settings-leg_tweak-floor_clip = Anclado al suelo
|
||||
# Skating correction:
|
||||
# why the name - without this enabled the feet will often slide across the ground as if your skating across the ground,
|
||||
# since this largely prevents this it corrects for it hence skating correction (note this may be renamed to sliding correction)
|
||||
# definition - Guesses when each foot is in contact with the ground and uses that information to improve tracking
|
||||
settings-general-fk_settings-leg_tweak-skating_correction = Corrección del patinaje
|
||||
settings-general-fk_settings-leg_tweak-toe_snap = Alineación de pies
|
||||
settings-general-fk_settings-leg_tweak-foot_plant = Planta del pie
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-amount = Intensidad de la corrección del patinaje
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-description = Corrección del patinaje corrige el deslizamiento en el suelo, pero puede disminuir la precisión en ciertos movimientos. Activar esta opción requerirá realizar un reinicio general y recalibrar en el juego.
|
||||
settings-general-fk_settings-leg_tweak-floor_clip-description = Anclado al suelo puede reducir o incluso eliminar el atravesar el piso con tu modelo. Al habilitar esto, asegúrese de hacer un "reinicio completo" y recalibrar en el juego.
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = "Acople de puntera" intenta adivinar la rotación de tus pies si los trackers de estos no están en uso.
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = El plantado de pie gira los pies para que queden paralelos al suelo en el momento del contacto.
|
||||
settings-general-fk_settings-leg_fk = Tracking de piernas
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Habilitar reinicio de montura de los pies al estar de puntillas.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Reinicio de montura de los pies.
|
||||
settings-general-fk_settings-arm_fk = Tracking de brazos
|
||||
settings-general-fk_settings-arm_fk-description = Forzar el seguimiento de los brazos desde el HMD incluso si hay datos de posición de la mano disponibles.
|
||||
settings-general-fk_settings-arm_fk-force_arms = Forzar brazos desde el HMD
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Cambia la posición por defecto para el restablecimiento de montura
|
||||
settings-general-fk_settings-arm_fk-back = Parte posterior del brazo
|
||||
settings-general-fk_settings-arm_fk-back-description = Modo predeterminado, con los brazos hacia atrás y los antebrazos hacia adelante.
|
||||
settings-general-fk_settings-arm_fk-tpose_up = T-pose (arriba)
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Se espera que tus brazos esten relajados, perpendicular a tu cuerpo durante el reinicio completo y 90 grados respecto a tu cuerpo durante el reinicio de montaje.
|
||||
settings-general-fk_settings-arm_fk-tpose_down = T-pose (abajo)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = Se espera que tus brazos estén a 90 grados respecto a tu cuerpo durante el reinicio completo y relajados, perpendicular a tu cuerpo durante el reinicio del montaje.
|
||||
settings-general-fk_settings-arm_fk-forward = Siguiente
|
||||
settings-general-fk_settings-arm_fk-forward-description = Espera que tus brazos estén 90 grados hacia adelante. Útil para VTubing.
|
||||
settings-general-fk_settings-skeleton_settings-toggles = Opciones de esqueleto
|
||||
settings-general-fk_settings-skeleton_settings-description = Activa o desactiva la configuración del esqueleto. Se recomienda dejar esta opción activada.
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine_model = Modelo de columna extendida
|
||||
settings-general-fk_settings-skeleton_settings-extended_pelvis_model = Modelo de pelvis extendida
|
||||
settings-general-fk_settings-skeleton_settings-extended_knees_model = Modelo de rodilla extendida
|
||||
settings-general-fk_settings-skeleton_settings-ratios = Proporciones del esqueleto
|
||||
settings-general-fk_settings-skeleton_settings-ratios-description = Cambia los valores de la configuración del esqueleto. Es posible que debas ajustar tus proporciones de nuevo.
|
||||
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_hip = Atribuye la cintura desde el pecho hasta la cadera
|
||||
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_legs = Atribuye la cintura desde el pecho hasta las piernas
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs = Atribuye la cadera desde el pecho hasta las piernas
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_waist_legs = Atribuye la cadera desde la cintura hasta las piernas
|
||||
settings-general-fk_settings-skeleton_settings-interp_hip_legs = Promedia el balanceo de la cadera con el de las piernas
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = Promedia el balanceo de los trackers de rodilla con el de los tobillos.
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = Promedia el balanceo de las rodillas con la de los tobillos
|
||||
settings-general-fk_settings-self_localization-title = Modo Captura de movimiento
|
||||
settings-general-fk_settings-self_localization-description = El modo captura de movimiento permite al esqueleto seguir aproximadamente tu posición sin auriculares ni otros trackers. Ten en cuenta que esto requiere trrackers de pies y cabeza para funcionar y que aún está en fase experimental.
|
||||
settings-general-fk_settings-vive_emulation-title = Emulación Vive
|
||||
settings-general-fk_settings-vive_emulation-description = Emula los problemas de cintura que lo Vive trackers producen. Es una broma y produce peor tracking.
|
||||
settings-general-fk_settings-vive_emulation-label = Habilitar emulación Vive
|
||||
@@ -340,68 +414,167 @@ settings-general-fk_settings-vive_emulation-label = Habilitar emulación Vive
|
||||
|
||||
settings-general-gesture_control = Control de gestos
|
||||
settings-general-gesture_control-subtitle = Reinicio basado en toques
|
||||
settings-general-gesture_control-description = Permite que los reinicios se activen tocando un tracker. El tracker situado más arriba en tu torso se utiliza para el restablecimiento horizontal, el tracker situado más arriba en tu pierna izquierda se utiliza para el reinicio completo y el tracker situado más arriba en tu pierna derecha se utiliza para el reinicio de montaje. Los toques deben producirse dentro del tiempo límite de 0,3 segundos multiplicado por el número de toques a reconocer.
|
||||
# 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 ->
|
||||
[one] toque
|
||||
[many] toques
|
||||
*[other] toques
|
||||
}
|
||||
# This is a unit: 3 trackers, 2 trackers, 1 tracker
|
||||
# $amount (Number) - Amount of trackers
|
||||
settings-general-gesture_control-trackers =
|
||||
{ $amount ->
|
||||
[one] tracker
|
||||
[many] trackers
|
||||
*[other] trackers
|
||||
}
|
||||
settings-general-gesture_control-yawResetEnabled = Activa toque para restablecimiento horizontal
|
||||
settings-general-gesture_control-yawResetDelay = Retraso de restablecimiento horizontal
|
||||
settings-general-gesture_control-yawResetTaps = Toques para restablecimiento horizontal
|
||||
settings-general-gesture_control-fullResetEnabled = Activa toque para reinicio completo
|
||||
settings-general-gesture_control-fullResetDelay = Retraso de reinicio completo
|
||||
settings-general-gesture_control-fullResetTaps = Da toquecitos para reinicio completo
|
||||
settings-general-gesture_control-mountingResetEnabled = Activa toquecitos para reiniciar montaje
|
||||
settings-general-gesture_control-mountingResetDelay = Reinicio de montaje retrasado
|
||||
settings-general-gesture_control-mountingResetTaps = Da toquecitos para reinicio de montaje
|
||||
# The number of trackers that can have higher acceleration before a tap is rejected
|
||||
settings-general-gesture_control-numberTrackersOverThreshold = Trackers por encima del limite
|
||||
settings-general-gesture_control-numberTrackersOverThreshold-description = Aumenta este valor si la detección de toqueteo no funciona. No lo aumentes por encima de lo necesario para que la detección de toques funcione, ya que crearía más falsos positivos
|
||||
|
||||
## Appearance settings
|
||||
|
||||
settings-interface-appearance = Apariencia
|
||||
settings-general-interface-dev_mode = Modo de desarrollador
|
||||
settings-general-interface-dev_mode-description = Este modo puede ser útil si necesitas datos en profundidad o para interactuar con los trackers conectados a un nivel más avanzado
|
||||
settings-general-interface-dev_mode-label = Modo de desarrollador
|
||||
settings-general-interface-theme = Temas
|
||||
settings-general-interface-lang = Seleccionar idioma
|
||||
settings-general-interface-lang-description = Cambiar el idioma predeterminado que deseas utilizar.
|
||||
settings-general-interface-lang-placeholder = Seleccionar el idioma que desea utilizar
|
||||
# Keep the font name untranslated
|
||||
settings-interface-appearance-font = Fuente de GUI
|
||||
settings-interface-appearance-font-description = Esto cambia la fuente utilizada por la interfaz
|
||||
settings-interface-appearance-font-placeholder = Fuente predeterminada
|
||||
settings-interface-appearance-font-os_font = Fuente SO
|
||||
settings-interface-appearance-font-slime_font = Fuente predeterminada
|
||||
settings-interface-appearance-font_size = Escala de la fuente base
|
||||
settings-interface-appearance-font_size-description = Esto afecta al tamaño de la fuente de toda la interfaz excepto este panel de configuración
|
||||
|
||||
## Notification settings
|
||||
|
||||
settings-interface-notifications = Notificaciones
|
||||
settings-general-interface-serial_detection = Detección de dispositivos seriales
|
||||
settings-general-interface-serial_detection-description = Esta opción mostrará una ventana emergente cada vez que conectes un nuevo dispositivo serie que podría ser un tracker. Ayuda a mejorar el proceso de configuración de un tracker.
|
||||
settings-general-interface-serial_detection-label = Detección de dispositivos seriales
|
||||
settings-general-interface-feedback_sound = Sonido de feedback
|
||||
settings-general-interface-feedback_sound-description = Esta opción reproducirá un sonido cuando se activa un reinicio
|
||||
settings-general-interface-feedback_sound-label = Sonido de feedback
|
||||
settings-general-interface-feedback_sound-volume = Volumen del sonido de feedback
|
||||
settings-general-interface-connected_trackers_warning = Advertencia de trackers conectados
|
||||
settings-general-interface-connected_trackers_warning-description = Esta opción mostrará una ventana emergente cada vez que intentes salir de SlimeVR mientras tengas uno o más trackers conectados. Te recuerda que debes apagar los trackers cuando hayas terminado para ahorrar batería.
|
||||
settings-general-interface-connected_trackers_warning-label = Aviso de trackers conectados al cerrar
|
||||
settings-general-interface-use_tray = Minimizar a la bandeja
|
||||
settings-general-interface-use_tray-description = Te permite cerrar la ventana sin cerrar SlimeVR para que pueda seguir usándolo sin que la interfaz te moleste.
|
||||
settings-general-interface-use_tray-label = Minimizar en la bandeja del sistema
|
||||
|
||||
## Serial settings
|
||||
|
||||
settings-serial = Consola serial
|
||||
# This cares about multilines
|
||||
settings-serial-description =
|
||||
Esta es una fuente de información en vivo para la comunicación serial.
|
||||
Puede ser útil si necesitas saber si el firmware está fallando.
|
||||
settings-serial-connection_lost = Conexión a puerto serial perdida, Reconectando...
|
||||
settings-serial-reboot = Reiniciar
|
||||
settings-serial-factory_reset = Restablecimiento de fábrica
|
||||
# This cares about multilines
|
||||
# <b>text</b> means that the text should be bold
|
||||
settings-serial-factory_reset-warning =
|
||||
<b>Advertencia:</b> Esto restablecerá la configuración de fábrica del tracker.
|
||||
Esto significa que los ajustes de Wi-Fi y calibración <b>se perderán</b>.
|
||||
settings-serial-factory_reset-warning-ok = Sé lo que estoy haciendo
|
||||
settings-serial-factory_reset-warning-cancel = Cancelar
|
||||
settings-serial-get_infos = Obtener información
|
||||
settings-serial-serial_select = Selecciona un puerto serial
|
||||
settings-serial-auto_dropdown_item = Automático
|
||||
settings-serial-get_wifi_scan = Obtener escaneo WiFi
|
||||
|
||||
## OSC router settings
|
||||
|
||||
settings-osc-router = Router OSC
|
||||
# This cares about multilines
|
||||
settings-osc-router-description =
|
||||
Reenvía mensajes OSC desde otro programa.
|
||||
Útil para usar otro programa OSC con VRChat por ejemplo.
|
||||
settings-osc-router-enable = Habilitar
|
||||
settings-osc-router-enable-description = Activar el reenvío de mensajes
|
||||
settings-osc-router-enable-label = Habilitar
|
||||
settings-osc-router-network = Puertos de red
|
||||
# This cares about multilines
|
||||
settings-osc-router-network-description =
|
||||
Establece los puertos para escuchar y enviar datos.
|
||||
Estos pueden ser los mismos que otros puertos utilizados en el servidor de SlimeVR.
|
||||
settings-osc-router-network-port_in =
|
||||
.label = Puerto de entrada
|
||||
.placeholder = Puerto de entrada (por defecto: 9002)
|
||||
settings-osc-router-network-port_out =
|
||||
.label = Puerto de salida
|
||||
.placeholder = Puerto de salida (por defecto: 9000)
|
||||
settings-osc-router-network-address = Dirección de red
|
||||
settings-osc-router-network-address-description = Establece la dirección a la que se enviarán los datos.
|
||||
settings-osc-router-network-address-placeholder = Dirección IPV4
|
||||
|
||||
## OSC VRChat settings
|
||||
|
||||
settings-osc-vrchat = VRChat OSC Trackers
|
||||
# This cares about multilines
|
||||
settings-osc-vrchat-description = Cambia la configuración específica de VRChat para recibir datos del visor (HMD) y enviar datos a los trackers para FBT sin SteamVR (ej. Quest standalone).
|
||||
settings-osc-vrchat-enable = Habilitar
|
||||
settings-osc-vrchat-enable-description = Alternar el envío y la recepción de datos
|
||||
settings-osc-vrchat-enable-label = Habilitar
|
||||
settings-osc-vrchat-network = Puertos de red
|
||||
settings-osc-vrchat-network-description = Configura los puertos para escuchar y enviar datos a VRChat.
|
||||
settings-osc-vrchat-network-port_in =
|
||||
.label = Puerto de entrada
|
||||
.placeholder = Puerto de entrada (Por defecto: 9001)
|
||||
settings-osc-vrchat-network-port_out =
|
||||
.label = Puerto de salida
|
||||
.placeholder = Puerto de salida (Por defecto: 9000)
|
||||
settings-osc-vrchat-network-address = Dirección de red
|
||||
settings-osc-vrchat-network-address-description = Elige a qué dirección enviar los datos a VRChat (Comprueba la configuración Wi-Fi de tu dispositivo).
|
||||
settings-osc-vrchat-network-address-placeholder = Dirección IP de VRChat
|
||||
settings-osc-vrchat-network-trackers = Trackers
|
||||
settings-osc-vrchat-network-trackers-description = Activar el envío de trackers específicos a través de OSC.
|
||||
settings-osc-vrchat-network-trackers-chest = Pecho
|
||||
settings-osc-vrchat-network-trackers-hip = Cadera
|
||||
settings-osc-vrchat-network-trackers-knees = Rodillas
|
||||
settings-osc-vrchat-network-trackers-feet = Pies
|
||||
settings-osc-vrchat-network-trackers-elbows = Codos
|
||||
|
||||
## VMC OSC settings
|
||||
|
||||
settings-osc-vmc = Captura de movimiento virtual
|
||||
# This cares about multilines
|
||||
settings-osc-vmc-description = Cambiar la configuración al protocolo VMC (Virtual Motion Capture) para enviar datos de SlimeVR y recibir información de otras apps.
|
||||
settings-osc-vmc-enable = Habilitar
|
||||
settings-osc-vmc-enable-description = Alterna el envío y recepción de datos.
|
||||
settings-osc-vmc-enable-label = Habilitar
|
||||
settings-osc-vmc-network = Puertos de red
|
||||
settings-osc-vmc-network-address = Dirección de red
|
||||
settings-osc-vmc-network-address-placeholder = Dirección IPV4
|
||||
settings-osc-vmc-vrm-model_unloaded = No hay modelo cargado
|
||||
settings-osc-vmc-anchor_hip = Anclar a la cadera
|
||||
settings-osc-vmc-anchor_hip-description = Ancla el tracking a la cadera, útil para VTubing sentado. Si se deshabilita, carga un modelo VRM.
|
||||
settings-osc-vmc-anchor_hip-label = Anclar a la cadera
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Omitir configuración
|
||||
onboarding-continue = Continuar
|
||||
onboarding-wip = Trabajo en progreso
|
||||
onboarding-previous_step = Paso anterior
|
||||
onboarding-setup_warning-skip = Omitir configuración
|
||||
onboarding-setup_warning-cancel = Continuar con la configuración
|
||||
@@ -409,12 +582,24 @@ onboarding-setup_warning-cancel = Continuar con la configuración
|
||||
## Wi-Fi setup
|
||||
|
||||
onboarding-wifi_creds-back = Volver a la introducción
|
||||
onboarding-wifi_creds = Introduce credenciales de Wi-Fi
|
||||
# This cares about multilines
|
||||
onboarding-wifi_creds-description =
|
||||
Los trackers utilizarán estas credenciales para conectarse de forma inalámbrica.
|
||||
Por favor, utiliza las credenciales a las que está conectado actualmente.
|
||||
onboarding-wifi_creds-skip = Omitir configuración Wi-Fi
|
||||
onboarding-wifi_creds-submit = ¡Enviar!
|
||||
onboarding-wifi_creds-ssid =
|
||||
.label = Nombre Wi-Fi
|
||||
.placeholder = Introduce nombre de Wi-Fi
|
||||
onboarding-wifi_creds-password =
|
||||
.label = Contraseña
|
||||
.placeholder = Introduce contraseña
|
||||
|
||||
## Mounting setup
|
||||
|
||||
onboarding-reset_tutorial = Tutorial para resetteo de trackers
|
||||
onboarding-reset_tutorial-explanation = Mientras usas tus trackers, es posible que se desalineen debido al balanceo de la IMU o porque es posible que se hayan movido físicamente. Tienes varias formas de solucionar este problema.
|
||||
onboarding-reset_tutorial-skip = Omitir paso
|
||||
|
||||
## Setup start
|
||||
@@ -424,48 +609,88 @@ 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!
|
||||
onboarding-done-description = Disfruta de la experiencia de full-body tracking
|
||||
onboarding-done-close = Cerrar configuración
|
||||
|
||||
## Tracker connection setup
|
||||
|
||||
onboarding-connect_tracker-back = Volver a credenciales de Wi-Fi
|
||||
onboarding-connect_tracker-title = Conectar trackers
|
||||
onboarding-connect_tracker-description-p0 = ¡Ahora a la parte divertida, conectando todos los trackers!
|
||||
onboarding-connect_tracker-issue-serial = ¡Tengo problemas para conectarme!
|
||||
onboarding-connect_tracker-usb = Tracker USB
|
||||
onboarding-connect_tracker-connection_status-none = Buscando trackers
|
||||
onboarding-connect_tracker-connection_status-serial_init = Conectándose al dispositivo serial
|
||||
onboarding-connect_tracker-connection_status-provisioning = Enviando credenciales Wi-Fi
|
||||
onboarding-connect_tracker-connection_status-connecting = Intentando conectarse a una red Wi-Fi
|
||||
onboarding-connect_tracker-connection_status-looking_for_server = Buscando servidor
|
||||
onboarding-connect_tracker-connection_status-connection_error = No se puede conectar al Wi-Fi
|
||||
onboarding-connect_tracker-connection_status-could_not_find_server = No se pudo encontrar el servidor
|
||||
onboarding-connect_tracker-connection_status-done = Conectado al Server
|
||||
onboarding-connect_tracker-next = He conectado todos mis trackers
|
||||
|
||||
## Tracker calibration tutorial
|
||||
|
||||
onboarding-calibration_tutorial = Tutorial de calibración de IMU
|
||||
onboarding-calibration_tutorial-subtitle = ¡Esto ayudará a reducir el drift de los trackers!
|
||||
onboarding-calibration_tutorial-calibrate = Mis trackers estan en una superficie plana
|
||||
onboarding-calibration_tutorial-status-waiting = Esperando por ti
|
||||
onboarding-calibration_tutorial-status-calibrating = Calibrando
|
||||
onboarding-calibration_tutorial-status-success = ¡Bien!
|
||||
onboarding-calibration_tutorial-status-error = El tracker se ha movido
|
||||
|
||||
## Tracker assignment tutorial
|
||||
|
||||
onboarding-assignment_tutorial = Cómo preparar un Slime Tracker antes de ponértelo
|
||||
onboarding-assignment_tutorial-first_step = 1. Coloca una pegatina de parte del cuerpo (si tienes una) en el rastreador según tu elección.
|
||||
# This text has a character limit of around 11 characters, so please keep it short
|
||||
onboarding-assignment_tutorial-sticker = Sticker
|
||||
onboarding-assignment_tutorial-second_step-v2 = 2. Conecta la correa con su tracker, manteniendo el lado de velcro de la correa orientado en la misma dirección que la cara de Slime de su rastreador:
|
||||
onboarding-assignment_tutorial-second_step-continuation-v2 = El lado del velcro de la extensión debe quedar hacia arriba como en la siguiente imagen:
|
||||
onboarding-assignment_tutorial-done = ¡Le puse pegatinas y correas!
|
||||
|
||||
## Tracker assignment setup
|
||||
|
||||
onboarding-assign_trackers-back = Volver a credenciales de Wi-Fi
|
||||
onboarding-assign_trackers-title = Asignar trackers
|
||||
onboarding-assign_trackers-description = Elije qué tracker va a dónde. Haz clic en la ubicación donde deseas colocar un tracker
|
||||
onboarding-assign_trackers-advanced = Mostrar ubicaciones de asignación avanzadas
|
||||
onboarding-assign_trackers-next = He asignado todos los trackers
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
# Note for devs, number is used for representing boolean states per bit.
|
||||
# $unassigned (Number) - Bits are based on BodyAssignment.ASSIGNMENT_RULES order
|
||||
onboarding-assign_trackers-warning-LEFT_FOOT =
|
||||
{ $unassigned ->
|
||||
[0] El pie izquierdo está asignado, pero es necesario que también se asignen el tobillo izquierdo, el muslo izquierdo y el pecho, la cadera o la cintura!
|
||||
[1] El pie izquierdo está asignado, pero también es necesario que también se asignen el muslo izquierdo y el pecho, la cadera o la cintura!
|
||||
[2] El pie izquierdo está asignado, pero también es necesario que también se asignen el tobillo izquierdo y el pecho, la cadera o la cintura!
|
||||
[3] El pie izquierdo está asignado, pero también es necesario que también se asignen el pecho, la cadera o la cintura!
|
||||
[4] El pie izquierdo está asignado, pero también es necesario que también se asignen el tobillo izquierdo y el muslo izquierdo!
|
||||
[5] El pie izquierdo está asignado, pero también es necesario que también se asigne el muslo izquierdo!
|
||||
[6] El pie izquierdo está asignado, pero también es necesario que también se asigne el tobillo izquierdo!
|
||||
*[other] El pie izquierdo está asignado, pero también es necesario que también se asigne el Parte del cuerpo asignada desconocida.
|
||||
}
|
||||
# $unassigned (Number) - Bits are based on BodyAssignment.ASSIGNMENT_RULES order
|
||||
onboarding-assign_trackers-warning-RIGHT_FOOT =
|
||||
{ $unassigned ->
|
||||
[0] El pie derecho está asignado, pero es necesario que también se asignen el tobillo derecho, el muslo derecho y el pecho, la cadera o la cintura!
|
||||
[1] El pie derecho está asignado, pero es necesario que también se asignen el muslo derecho y el pecho, la cadera o la cintura!
|
||||
[2] El pie derecho está asignado, pero es necesario que también se asignen el tobillo derecho y el pecho, la cadera o la cintura!
|
||||
[3] El pie derecho está asignado, pero es necesario que también se asignen el pecho, la cadera o la cintura!
|
||||
[4] El pie derecho está asignado, pero es necesario que también se asignen tobillo derecho y el muslo derecho!
|
||||
[5] El pie derecho está asignado, pero es necesario que también se asigne el muslo derecho!
|
||||
[6] El pie derecho está asignado, pero es necesario que también se asigne el tobillo derecho!
|
||||
*[other] Pie derecho asignado, pero necesitas asignar Desconocido
|
||||
}
|
||||
|
||||
## Tracker mounting method choose
|
||||
|
||||
@@ -473,6 +698,7 @@ onboarding-assign_trackers-next = He asignado todos los trackers
|
||||
onboarding-choose_mounting-auto_mounting-label = Experimental
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Recomendado
|
||||
onboarding-choose_mounting-manual_modal-cancel = Cancelar
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -480,6 +706,7 @@ onboarding-manual_mounting-next = Siguiente paso
|
||||
|
||||
## Tracker automatic mounting setup
|
||||
|
||||
onboarding-automatic_mounting-back = Volver para entrar en VR
|
||||
onboarding-automatic_mounting-next = Siguiente paso
|
||||
onboarding-automatic_mounting-prev_step = Paso anterior
|
||||
onboarding-automatic_mounting-done-restart = Volver a intentarlo
|
||||
@@ -492,13 +719,17 @@ onboarding-choose_proportions-auto_proportions = Proporciones automáticas
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Recomendado
|
||||
onboarding-choose_proportions-manual_proportions = Proporciones manuales
|
||||
onboarding-choose_proportions-export = Exportar proporciones
|
||||
onboarding-choose_proportions-import-success = Importado
|
||||
onboarding-choose_proportions-file_type = Archivo de proporciones físicas
|
||||
|
||||
## Tracker manual proportions setup
|
||||
|
||||
onboarding-manual_proportions-title = Proporciones físicas manuales
|
||||
onboarding-manual_proportions-auto = Proporciones automáticas
|
||||
|
||||
## Tracker automatic proportions setup
|
||||
|
||||
onboarding-automatic_proportions-title = Mide tu cuerpo
|
||||
onboarding-automatic_proportions-prev_step = Paso anterior
|
||||
onboarding-automatic_proportions-requirements-title = Requisitos
|
||||
onboarding-automatic_proportions-requirements-next = He leído los requisitos
|
||||
@@ -506,9 +737,23 @@ onboarding-automatic_proportions-recording-title = REC
|
||||
onboarding-automatic_proportions-recording-processing = Procesando los resultados
|
||||
onboarding-automatic_proportions-verify_results-title = Verificar resultados
|
||||
onboarding-automatic_proportions-verify_results-processing = Procesando los resultados
|
||||
onboarding-automatic_proportions-done-title = Proporciones medidas y guardadas.
|
||||
onboarding-automatic_proportions-done-description = ¡Calibración de las proporciones físicas completada!
|
||||
|
||||
## Home
|
||||
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
|
||||
## Status system
|
||||
|
||||
|
||||
## Tray Menu
|
||||
|
||||
|
||||
## First exit modal
|
||||
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
|
||||
@@ -144,6 +144,11 @@ widget-imu_visualizer-rotation_raw = Käsittelemätön
|
||||
widget-imu_visualizer-rotation_preview = Esikatselu
|
||||
widget-imu_visualizer-rotation_hide = Piilota
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Luurangon esikatselu
|
||||
widget-skeleton_visualizer-hide = Piilota
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = Ei tilaa
|
||||
@@ -152,6 +157,7 @@ tracker-status-error = Virhe
|
||||
tracker-status-disconnected = Katkaistu
|
||||
tracker-status-occluded = Peittynyt
|
||||
tracker-status-ok = OK
|
||||
tracker-status-timed_out = Aikakatkaistiin
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -348,9 +354,16 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = Floor clip voi v
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = Toe snap yrittää arvata varpaiden asennon jos jalkaterän jäljitintä ei ole käytössä.
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = Foot plant asettaa jalkateräsi yhdensuuntaisesti maan kanssa kosketuksessa.
|
||||
settings-general-fk_settings-leg_fk = Jalkojen jäljitys
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Ota käyttöön jalkojen asennuksen nollaus varpaillaan.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Jalkojen asennuksen nollaus
|
||||
settings-general-fk_settings-arm_fk = Käsivarsien jäljitys
|
||||
settings-general-fk_settings-arm_fk-description = Muuta tapaa, jolla käsivarsia jäljitetään.
|
||||
settings-general-fk_settings-arm_fk-force_arms = Pakota kädet HMD:ltä
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Muuta, mikä käsivarren asentoa odotetaan asennuksen nollaukselle.
|
||||
settings-general-fk_settings-arm_fk-back = Takaisin
|
||||
settings-general-fk_settings-arm_fk-tpose_up = T-asento (ylös)
|
||||
settings-general-fk_settings-arm_fk-tpose_down = T-asento (alas)
|
||||
settings-general-fk_settings-arm_fk-forward = Eteenpäin
|
||||
settings-general-fk_settings-skeleton_settings-toggles = Luurankoasetuksia
|
||||
settings-general-fk_settings-skeleton_settings-description = Ota tai poista käytöstä luurankoasetukset. On suositeltavaa jättää nämä päälle.
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine_model = Laajennettu selkärankamalli
|
||||
@@ -431,6 +444,8 @@ settings-general-interface-feedback_sound = Palaute ääni
|
||||
settings-general-interface-feedback_sound-description = Tämä asetus toistaa äänen nollauksen tapahtuessa.
|
||||
settings-general-interface-feedback_sound-label = Palaute ääni
|
||||
settings-general-interface-feedback_sound-volume = Palaute äänen voimakkuus
|
||||
settings-general-interface-connected_trackers_warning = Yhdistettyjen jäljittimien varoitus
|
||||
settings-general-interface-connected_trackers_warning-description = Tämä vaihtoehto näyttää ponnahdusikkunan aina, kun yrität poistua SlimeVR:stä, kun sinulla on yksi tai useampi yhdistetty jäljitin. Se muistuttaa sinua sammuttamaan jäljittimet, kun olet valmis, akun käyttöiän säästämiseksi.
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -659,6 +674,7 @@ onboarding-assignment_tutorial = Kuinka valmistellaan Slime-jäljitin ennen käy
|
||||
onboarding-assignment_tutorial-first_step = 1. Aseta kehonosatarra (jos sinulla on) jäljittimeen valintasi mukaan
|
||||
# This text has a character limit of around 11 characters, so please keep it short
|
||||
onboarding-assignment_tutorial-sticker = Tarra
|
||||
onboarding-assignment_tutorial-second_step-v2 = 2. Kiinnitä hihna jäljittimeen pitäen hihnan tarranauhaa samaan suuntaan kuin jäljittimen etupuoli:
|
||||
onboarding-assignment_tutorial-second_step-continuation-v2 = Jatkeen tarranauhapuolen tulee olla ylöspäin seuraavan kuvan mukaisesti:
|
||||
onboarding-assignment_tutorial-done = Laitoin tarrat ja hihnat!
|
||||
|
||||
@@ -759,6 +775,12 @@ onboarding-choose_mounting-manual_mounting = Manuaalinen asennus
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Suositeltu
|
||||
onboarding-choose_mounting-manual_mounting-description = Näin voit valita asennussuunnan manuaalisesti kullekin jäljittimelle
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title =
|
||||
Oletko varma, että haluat tehdä
|
||||
automaattisen asennuksen kalibroinnin?
|
||||
onboarding-choose_mounting-manual_modal-confirm = Tiedän mitä teen
|
||||
onboarding-choose_mounting-manual_modal-cancel = Peruuta
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -794,6 +816,8 @@ onboarding-automatic_mounting-put_trackers_on-next = Minulla on kaikki jäljitti
|
||||
onboarding-choose_proportions = Mitä kalibrointimenetelmää käytetään?
|
||||
onboarding-choose_proportions-auto_proportions = Automaattiset mittasuhteet
|
||||
onboarding-choose_proportions-manual_proportions = Manuaaliset mittasuhteet
|
||||
onboarding-choose_proportions-import-failed = Epäonnistui
|
||||
onboarding-choose_proportions-file_type = Kehon mittasuhteet -tiedosto
|
||||
|
||||
## Tracker manual proportions setup
|
||||
|
||||
@@ -812,6 +836,9 @@ onboarding-automatic_proportions-put_trackers_on-next = Minulla on kaikki jälji
|
||||
onboarding-automatic_proportions-requirements-title = Vaatimukset
|
||||
onboarding-automatic_proportions-requirements-next = Olen lukenut vaatimukset
|
||||
onboarding-automatic_proportions-check_height-title = Tarkista pituutesi
|
||||
onboarding-automatic_proportions-check_height-description = Käytämme pituuttasi mittaustemme perustana käyttämällä HMD:n pituutta likiarvona todellisesta pituudestasi, mutta on parempi tarkistaa itse, ovatko ne oikein!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = Paina painiketta <u>pystyasennossa</u> laskeaksesi pituutesi. Sinulla on 3 sekuntia painikkeen painamisen jälkeen!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = Seison
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = Tuntematon
|
||||
@@ -821,7 +848,9 @@ onboarding-automatic_proportions-check_height-hmd_height1 = HMD-korkeus on
|
||||
onboarding-automatic_proportions-check_height-height1 = Joten todellinen pituutesi on
|
||||
onboarding-automatic_proportions-check_height-next_step = Ne ovat hyvät
|
||||
onboarding-automatic_proportions-start_recording-title = Valmistaudu liikkumaan
|
||||
onboarding-automatic_proportions-start_recording-description = Aiomme nyt tallentaa joitain tiettyä asentoja ja liikkeitä. Näitä kysytään seuraavassa näytössä. Ole valmis aloittamaan, kun painat nappia!
|
||||
onboarding-automatic_proportions-start_recording-next = Aloita tallennus
|
||||
onboarding-automatic_proportions-recording-title = REC
|
||||
onboarding-automatic_proportions-recording-description-p0 = Tallennus käynnissä...
|
||||
onboarding-automatic_proportions-recording-description-p1 = Tee alla esitetyt liikkeet:
|
||||
onboarding-automatic_proportions-recording-processing = Käsitellään tuloksia
|
||||
@@ -835,15 +864,28 @@ onboarding-automatic_proportions-verify_results-title = Vahvista tulokset
|
||||
onboarding-automatic_proportions-verify_results-description = Tarkista alla olevat tulokset, näyttävätkö ne oikeilta?
|
||||
onboarding-automatic_proportions-verify_results-results = Tallennuksen tulokset
|
||||
onboarding-automatic_proportions-verify_results-processing = Käsitellään tuloksia
|
||||
onboarding-automatic_proportions-verify_results-redo = Tee tallennus uudelleen
|
||||
onboarding-automatic_proportions-verify_results-confirm = Nämä ovat oikein
|
||||
onboarding-automatic_proportions-done-title = Keho mitattu ja tallennettu.
|
||||
onboarding-automatic_proportions-done-description = Kehosi mittasuhteiden kalibrointi on valmis!
|
||||
onboarding-automatic_proportions-error_modal =
|
||||
<b>Varoitus:</b> Mittasuhteita arvioitaessa havaittiin virhe!
|
||||
<docs>Tarkista dokumentit</docs> tai liity <discord>Discordiin</discord> saadaksesi apua ^_^
|
||||
onboarding-automatic_proportions-error_modal-confirm = Ymmäretty!
|
||||
|
||||
## Home
|
||||
|
||||
home-no_trackers = Jäjittimiä ei havaittu tai määritetty
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = Jäljittimet ovat vielä päällä
|
||||
trackers_still_on-modal-description =
|
||||
Yksi tai useampi jäljitin on edelleen päällä.
|
||||
Haluatko silti poistua SlimeVR:stä?
|
||||
trackers_still_on-modal-confirm = Poistu SlimeVR:stä
|
||||
trackers_still_on-modal-cancel = Odota...
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = On suositeltavaa suorittaa täydellinen nollaus, koska yhtä tai useampaa jäljitintä ei ole säädetty.
|
||||
|
||||
@@ -23,6 +23,8 @@ tips-find_tracker = Impossible de différencier vos capteurs ? Secouez-en un pou
|
||||
tips-do_not_move_heels = Assurez-vous de ne pas bouger vos pieds pendant l'enregistrement !
|
||||
tips-file_select = Glissez et déposez des fichiers à utiliser, ou <u>parcourir</u>.
|
||||
tips-tap_setup = Vous pouvez tapoter lentement votre capteur 2 fois pour le choisir au lieu de le sélectionner depuis le menu.
|
||||
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.
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -144,6 +146,11 @@ widget-imu_visualizer-rotation_raw = Brute
|
||||
widget-imu_visualizer-rotation_preview = Aperçu
|
||||
widget-imu_visualizer-rotation_hide = Masquer
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Aperçu du squelette
|
||||
widget-skeleton_visualizer-hide = Masquer
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = Pas de statut
|
||||
@@ -152,6 +159,7 @@ tracker-status-error = Erreur
|
||||
tracker-status-disconnected = Déconnecté
|
||||
tracker-status-occluded = Obstrué
|
||||
tracker-status-ok = OK
|
||||
tracker-status-timed_out = Délai expiré
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -190,6 +198,7 @@ tracker-infos-hardware_rev = Révision du hardware
|
||||
tracker-infos-hardware_identifier = ID Matériel
|
||||
tracker-infos-imu = Capteur IMU
|
||||
tracker-infos-board_type = Carte principale
|
||||
tracker-infos-network_version = Version du protocole
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -209,6 +218,9 @@ tracker-settings-drift_compensation_section-edit = Permettre la compensation de
|
||||
tracker-settings-name_section = Nom personalisé
|
||||
tracker-settings-name_section-description = Donnez-lui un joli surnom :3
|
||||
tracker-settings-name_section-placeholder = Patte gauche d'Erimel
|
||||
tracker-settings-forget = Oublier capteur
|
||||
tracker-settings-forget-description = Supprime le capteur du serveur SlimeVR et l’empêche de s’y connecter jusqu’à ce que le serveur soit redémarré. La configuration du capteur ne sera pas perdue.
|
||||
tracker-settings-forget-label = Oublier capteur
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -302,6 +314,14 @@ settings-general-steamvr-trackers-feet = Pieds
|
||||
settings-general-steamvr-trackers-knees = Genoux
|
||||
settings-general-steamvr-trackers-elbows = Coudes
|
||||
settings-general-steamvr-trackers-hands = Mains
|
||||
settings-general-steamvr-trackers-tracker_toggling = Assignation automatique des capteurs
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = Gère automatiquement l’activation ou la désactivation des capteurs SteamVR en fonction de vos capteurs actuellement affectés
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = Assignation automatique des capteurs
|
||||
settings-general-steamvr-trackers-hands-warning =
|
||||
<b>Attention :</b> les capteurs de mains remplaceront vos manettes.
|
||||
Êtes-vous sûr?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = Annuler
|
||||
settings-general-steamvr-trackers-hands-warning-done = Oui
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -319,6 +339,7 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = Fluidi
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Prédiction
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Réduit la latence et rend les mouvements plus vifs, mais moins fluides.
|
||||
settings-general-tracker_mechanics-filtering-amount = Intensité du filtrage
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = Temps de fluidification de la réinitialisation horizontale (0s désactive la fluidification)
|
||||
settings-general-tracker_mechanics-drift_compensation = Compensation de la dérive
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
@@ -327,6 +348,11 @@ settings-general-tracker_mechanics-drift_compensation-description =
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Compensation de la dérive
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = Force de la compensation
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Nombre de réinitialisations prises en compte
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Enregistrer la calibration de la réinitialisation automatique de l'alignement
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
Enregistre les calibrations des réinitialisation automatiques d'alignement pour les capteurs entre les redémarrages.
|
||||
Utile lorsque vous portez une combinaison où les capteurs ne bougent pas entre les sessions. <b>Non recommandé pour les utilisateurs normaux !</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Enregistrer la réinitialisation de l'alignement
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -443,6 +469,12 @@ settings-general-interface-feedback_sound = Son de retour
|
||||
settings-general-interface-feedback_sound-description = Cette option va jouer un son lorsqu'une réanitilisation est enclenchée.
|
||||
settings-general-interface-feedback_sound-label = Son de retour
|
||||
settings-general-interface-feedback_sound-volume = Volume du son de retour
|
||||
settings-general-interface-connected_trackers_warning = Avertissement de capteurs connectés
|
||||
settings-general-interface-connected_trackers_warning-description = Cette option affichera une fenêtre contextuelle chaque fois que vous essaierez de quitter SlimeVR tout en ayant un ou plusieurs capteurs connectés. Il vous rappelle d’éteindre vos capteurs lorsque vous avez terminé pour préserver la durée de vie de la batterie.
|
||||
settings-general-interface-connected_trackers_warning-label = Avertissement de capteurs connectés en quittant
|
||||
settings-general-interface-use_tray = Minimiser dans la zone de notifications
|
||||
settings-general-interface-use_tray-description = Vous permet de fermer la fenêtre sans fermer le serveur SlimeVR afin que vous puissiez continuer à l’utiliser sans l’interface graphique.
|
||||
settings-general-interface-use_tray-label = Minimiser dans la zone de notifications
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -464,6 +496,7 @@ settings-serial-factory_reset-warning-cancel = Annuler
|
||||
settings-serial-get_infos = Obtenir des informations
|
||||
settings-serial-serial_select = Sélectionnez un port série
|
||||
settings-serial-auto_dropdown_item = Automatique
|
||||
settings-serial-get_wifi_scan = Obtenir scan WiFi
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -629,8 +662,8 @@ onboarding-done-close = Fermer le guide
|
||||
|
||||
onboarding-connect_tracker-back = Revenir aux informations d'identification Wi-Fi
|
||||
onboarding-connect_tracker-title = Connecter les capteurs
|
||||
onboarding-connect_tracker-description-p0 = Passons maintenant à la partie amusante: connecter tous les capteurs !
|
||||
onboarding-connect_tracker-description-p1 = Connectez chaque capteur qui n'est pas encore connecté via un port USB.
|
||||
onboarding-connect_tracker-description-p0-v1 = Passons maintenant à la partie amusante, connecter les capteurs!
|
||||
onboarding-connect_tracker-description-p1-v1 = Connectez chaque capteur un par un via un port USB.
|
||||
onboarding-connect_tracker-issue-serial = J'ai des problèmes de connexion !
|
||||
onboarding-connect_tracker-usb = Capteur USB
|
||||
onboarding-connect_tracker-connection_status-none = Recherche de capteurs
|
||||
@@ -690,6 +723,7 @@ onboarding-assign_trackers-assigned =
|
||||
}
|
||||
onboarding-assign_trackers-advanced = Afficher les emplacements d'attribution avancés
|
||||
onboarding-assign_trackers-next = J'ai attribué tous mes capteurs
|
||||
onboarding-assign_trackers-mirror_view = Vue miroir
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -772,6 +806,13 @@ onboarding-choose_mounting-manual_mounting = Alignement manuel
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Recommendée
|
||||
onboarding-choose_mounting-manual_mounting-description = Ceci vous permettra de choisir la direction de chaque capteur manuellement
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title =
|
||||
Êtes-vous sûr de vouloir faire
|
||||
la calibration automatique de l'alignement ?
|
||||
onboarding-choose_mounting-manual_modal-description = <b>La calibration manuel de l'alignement est recommandé pour les nouveaux utilisateurs</b>, car les poses de calibration automatique de l'alignement peuvent être difficiles à reproduire au départ et peuvent nécessiter un peu de pratique.
|
||||
onboarding-choose_mounting-manual_modal-confirm = Je suis sûr de ce que je fais
|
||||
onboarding-choose_mounting-manual_modal-cancel = Annuler
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -806,16 +847,17 @@ onboarding-automatic_mounting-put_trackers_on-next = J'ai tous mes capteurs
|
||||
|
||||
onboarding-choose_proportions = Quelle méthode de calibration des proportions utiliser ?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description =
|
||||
Les proportions corporelles sont utilisées pour connaître les mesures de votre corps. Elles sont nécéssaires pour calculer les positions des capteurs.
|
||||
Lorsque les proportions de votre corps ne correspondent pas à celles enregistrées, la précision des capteurs sera moins bonne et vous remarquerez des problèmes tel que le patinage, le glissage ou votre corps ne correspondant pas bien à votre avatar.
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
Les proportions du corps sont utilisées pour connaître les mesures de votre corps. Elles sont requises pour calculer les positions des capteurs.
|
||||
Lorsque les proportions de votre corps ne correspondent pas à celles enregistrées, la précision du suivi sera moins bonne et vous remarquerez certains problèmes comme du patinage ou de la glisse, ou votre corps ne correspondra pas bien à votre avatar.
|
||||
<b>Vous n’avez besoin de mesurer les proportions de votre corps qu’une seule fois !</b> À moins qu’elle ne soient incorrectes ou que votre corps ait changé, vous n’avez pas besoin de les refaire.
|
||||
onboarding-choose_proportions-auto_proportions = Proportions automatiques
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Recommendée
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv2 =
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
Cela permettra d'estimer vos proportions en enregistrant un échantillon de vos mouvements et en le faisant passer par un algorithme.
|
||||
|
||||
<b>Cela nécessite d’avoir votre casque VR connecté à SlimeVR !</b>
|
||||
<b>Cela nécessite d’avoir votre casque VR connecté à SlimeVR et sur votre tête !</b>
|
||||
onboarding-choose_proportions-manual_proportions = Proportions manuelles
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = Pour les retouches
|
||||
@@ -846,18 +888,20 @@ onboarding-automatic_proportions-put_trackers_on-description = Pour calibrer vos
|
||||
onboarding-automatic_proportions-put_trackers_on-next = J'ai tous mes capteurs
|
||||
onboarding-automatic_proportions-requirements-title = Exigences
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
Vous avez au moins assez de capteurs pour capturer vos pieds (généralement 5 capteurs).
|
||||
Vos capteurs et votre casque VR sont allumés.
|
||||
Vous portez vos capteurs et votre casque VR.
|
||||
Vos capteurs et votre casque VR sont connectés au serveur SlimeVR.
|
||||
Vos capteurs et votre casque VR fonctionnent correctement au sein du serveur SlimeVR.
|
||||
Votre casque envoie sa position au serveur SlimeVR (cela signifie généralement que SteamVR est ouvert et connecté à SlimeVR en utilisant le driver SteamVR de SlimeVR).
|
||||
Vos capteurs et votre casque VR sont allumés et sur vous.
|
||||
Vos capteurs et votre casque VR sont connectés au serveur SlimeVR et fonctionnent correctement (ex. pas de lag, déconnexions, etc).
|
||||
Votre casque envoie sa position au serveur SlimeVR (cela signifie généralement que SteamVR est ouvert et connecté à SlimeVR en utilisant le pilote SteamVR de SlimeVR).
|
||||
La capture des mouvements fonctionne et représente correctement vos mouvements (ex. vous avez effectué une réinitialisation complète des capteurs et ils bougent dans le bon sens lorsque vous donnez des coups de pieds, vous penchez, vous assoyez, etc).
|
||||
onboarding-automatic_proportions-requirements-next = J'ai lu les exigences
|
||||
onboarding-automatic_proportions-check_height-title = Vérifiez votre taille
|
||||
onboarding-automatic_proportions-check_height-description = Nous utilisons votre taille comme la base de nos mesures en utilisant la hauteur de votre casque comme approximation de votre taille réelle, mais il est préférable de vérifier si elles sont correctes vous-même !
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = Veuillez appuyer sur le bouton en vous <u>tenant debout</u> pour calculer votre taille. Vous avez un délais de 3 secondes après avoir appuyé sur le bouton !
|
||||
onboarding-automatic_proportions-check_height-guardian_tip =
|
||||
Si vous utilisez un casque VR sans-fil, assurez-vous d’avoir votre guardien/
|
||||
limite activée pour que votre hauteur soit correcte !
|
||||
onboarding-automatic_proportions-check_height-fetch_height = Je suis debout !
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = Inconnu
|
||||
@@ -904,6 +948,15 @@ onboarding-automatic_proportions-error_modal-confirm = Compris !
|
||||
|
||||
home-no_trackers = Aucun capteur détecté ou attribué
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = Capteurs encore allumés
|
||||
trackers_still_on-modal-description =
|
||||
Un ou plusieurs capteurs sont encore allumés.
|
||||
Voulez-vous quand même quitter SlimeVR ?
|
||||
trackers_still_on-modal-confirm = Quitter SlimeVR
|
||||
trackers_still_on-modal-cancel = Annuler...
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = Il est recommandé d'effectuer une réinitialisation complète vu que un ou plusieurs capteurs sont ne sont pas ajustés.
|
||||
@@ -913,3 +966,30 @@ status_system-StatusSteamVRDisconnected =
|
||||
*[other] Impossible de se connecter à SteamVR via le pilote SlimeVR.
|
||||
}
|
||||
status_system-StatusTrackerError = Le capteur { $trackerName } a une erreur.
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = Afficher
|
||||
tray_menu-hide = Masquer
|
||||
tray_menu-quit = Quitter
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = Que devrait faire le bouton de fermeture ?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
Cela permet de choisir entre quitter le serveur ou le réduire à la barre de notifications lorsque le bouton de fermeture est enfoncé.
|
||||
Vous pouvez modifier cela plus tard dans les paramètres d'interface !
|
||||
tray_or_exit_modal-radio-exit = Quitter à la fermeture
|
||||
tray_or_exit_modal-radio-tray = Minimiser dans la zone de notifications
|
||||
tray_or_exit_modal-submit = Sauvegarder
|
||||
tray_or_exit_modal-cancel = Annuler
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = Un nouveau capteur a été trouvé !
|
||||
unknown_device-modal-description =
|
||||
Il y a un nouveau capteur avec l’adresse MAC <b>{ $deviceId }</b>.
|
||||
Voulez-vous le connecter à SlimeVR ?
|
||||
unknown_device-modal-confirm = Oui!
|
||||
unknown_device-modal-forget = Ignorer
|
||||
|
||||
@@ -23,6 +23,8 @@ tips-find_tracker = Non sei sicurə quale tracker è quale? Agitalo e l'oggetto
|
||||
tips-do_not_move_heels = Assicurati di non muovere i tuoi talloni durante la registrazione!
|
||||
tips-file_select = Trascina qui i file da usare, o <u>sfoglia</u>.
|
||||
tips-tap_setup = Puoi toccare lentamente 2 volte il tracker per sceglierlo invece di selezionarlo dal menu.
|
||||
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.
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -110,13 +112,13 @@ bvh-recording = Registrazione in corso...
|
||||
## Tracking pause
|
||||
|
||||
tracking-unpaused = Pausa il tracking
|
||||
tracking-paused = Riprendio il tracking
|
||||
tracking-paused = Riprendi il tracking
|
||||
|
||||
## Widget: Overlay settings
|
||||
|
||||
widget-overlay = Overlay
|
||||
widget-overlay-is_visible_label = Mostra Overlay in SteamVR
|
||||
widget-overlay-is_mirrored_label = Includi uno specchio nel Overlay
|
||||
widget-overlay-is_mirrored_label = Mostra Overlay come specchio
|
||||
|
||||
## Widget: Drift compensation
|
||||
|
||||
@@ -132,7 +134,7 @@ widget-developer_mode = Modalità sviluppatore
|
||||
widget-developer_mode-high_contrast = Contrasto alto
|
||||
widget-developer_mode-precise_rotation = Rotazione precisa
|
||||
widget-developer_mode-fast_data_feed = Trasmissione veloce dei dati
|
||||
widget-developer_mode-filter_slimes_and_hmd = Filtra gli slime e HMD
|
||||
widget-developer_mode-filter_slimes_and_hmd = Filtra gli Slime e il visore
|
||||
widget-developer_mode-sort_by_name = Ordina per nome
|
||||
widget-developer_mode-raw_slime_rotation = Rotazione non processata
|
||||
widget-developer_mode-more_info = Ulteriori informazioni
|
||||
@@ -144,6 +146,11 @@ widget-imu_visualizer-rotation_raw = Non processato
|
||||
widget-imu_visualizer-rotation_preview = Anteprima
|
||||
widget-imu_visualizer-rotation_hide = Nascondi
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Anteprima dello scheletro
|
||||
widget-skeleton_visualizer-hide = Nascondi
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = Nessuno stato
|
||||
@@ -152,6 +159,7 @@ tracker-status-error = Errore
|
||||
tracker-status-disconnected = Disconnesso
|
||||
tracker-status-occluded = Ostruito
|
||||
tracker-status-ok = OK
|
||||
tracker-status-timed_out = Tempo scaduto
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -190,6 +198,7 @@ tracker-infos-hardware_rev = Versione hardware
|
||||
tracker-infos-hardware_identifier = Hardware ID
|
||||
tracker-infos-imu = Sensore IMU
|
||||
tracker-infos-board_type = Scheda principale
|
||||
tracker-infos-network_version = Versione del protocollo
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -209,6 +218,9 @@ tracker-settings-drift_compensation_section-edit = Consenti compensazione per il
|
||||
tracker-settings-name_section = Nome del tracker
|
||||
tracker-settings-name_section-description = Scegli un soprannome carino :)
|
||||
tracker-settings-name_section-placeholder = Gamba destra di NightyQueer
|
||||
tracker-settings-forget = Dimentica il tracker
|
||||
tracker-settings-forget-description = Rimuove il tracker dal SlimeVR server e impedisce che si riconnetta ad fino al riavvio del server. Le impostazioni del tracker non andranno perse.
|
||||
tracker-settings-forget-label = Dimentica il tracker
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -298,10 +310,22 @@ settings-general-steamvr-description =
|
||||
Utile per alcuni giochi che utilizzano solo alcuni tracker di SteamVR.
|
||||
settings-general-steamvr-trackers-waist = Girovita
|
||||
settings-general-steamvr-trackers-chest = Petto
|
||||
settings-general-steamvr-trackers-feet = Piedi
|
||||
settings-general-steamvr-trackers-knees = Ginocchia
|
||||
settings-general-steamvr-trackers-elbows = Gomiti
|
||||
settings-general-steamvr-trackers-hands = Mani
|
||||
settings-general-steamvr-trackers-left_foot = Piede sinistro
|
||||
settings-general-steamvr-trackers-right_foot = Piede destro
|
||||
settings-general-steamvr-trackers-left_knee = Ginocchio sinistro
|
||||
settings-general-steamvr-trackers-right_knee = Ginocchio destro
|
||||
settings-general-steamvr-trackers-left_elbow = Gomito sinistro
|
||||
settings-general-steamvr-trackers-right_elbow = Gomito destro
|
||||
settings-general-steamvr-trackers-left_hand = Mano sinistra
|
||||
settings-general-steamvr-trackers-right_hand = Mano destra
|
||||
settings-general-steamvr-trackers-tracker_toggling = Assegnazione tracker automatica
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = Gestisce automaticamente l'attivazione o la disattivazione dei tracker SteamVR a seconda delle assegnazioni correnti dei tracker
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = Assegnazione tracker automatica
|
||||
settings-general-steamvr-trackers-hands-warning =
|
||||
<b>Attenzione:</b> i tracker delle mani sostituiranno i controller.
|
||||
Sei sicurə?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = Annulla
|
||||
settings-general-steamvr-trackers-hands-warning-done = Sì
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -319,12 +343,18 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = Attenu
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Predizione
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Riduce ritardo e rende movimenti più istantanei, ma può introdurre tremolio.
|
||||
settings-general-tracker_mechanics-filtering-amount = Quantità
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = Tempo di attenuazione del reset orientamento (0 secondi disabilita l'attenuazione)
|
||||
settings-general-tracker_mechanics-drift_compensation = Compensazione per il drift
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description = Compensa il drift degli IMU applicando una rotazione inversa. Modifica la forza della compensazione e il massimo numero di reset che sono presi in considerazione.
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Compensazione per il drift
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = Grado di compensazione
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Utilizza fino a x ultimi reset
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Salva automaticamente la calibrazione del posizionamento
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
Salva in automatico la calibrazione del posizionamento per i tracker tra un riavvio e l'altro. Utile
|
||||
quando si indossa una tuta in cui la posizione e orientamento dei tracker non cambia tra una sessione e l'altra. <b>Non raccomandato per gli utenti standard!</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Salva reset posizionamento
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -349,8 +379,8 @@ settings-general-fk_settings-leg_fk = Tracking delle gambe
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Abilita Reset posizionamento dei piedi mettendosi in punta di piedi.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Reset posizionamento dei piedi
|
||||
settings-general-fk_settings-arm_fk = Tracking delle braccia
|
||||
settings-general-fk_settings-arm_fk-description = Cambia la modalità di tracking delle braccia.
|
||||
settings-general-fk_settings-arm_fk-force_arms = Forza il calcolo della posizione delle braccia a utilizzare il HMD
|
||||
settings-general-fk_settings-arm_fk-description = Forza il calcolo della posizione delle braccia a utilizzare il visore anche se la posizione delle mani é disponibile.
|
||||
settings-general-fk_settings-arm_fk-force_arms = Forza il calcolo delle braccia dal visore
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Cambia la posa delle braccia usata per il reset posizionamento.
|
||||
settings-general-fk_settings-arm_fk-back = Indietro
|
||||
settings-general-fk_settings-arm_fk-back-description = La modalità predefinita, con la parte superiori delle braccia che vanno indietro e le parte inferiori delle braccia che vanno avanti.
|
||||
@@ -442,6 +472,12 @@ settings-general-interface-feedback_sound = Suono di feedback
|
||||
settings-general-interface-feedback_sound-description = Questa opzione riprodurrà un suono quando viene effettuato un reset
|
||||
settings-general-interface-feedback_sound-label = Suono di feedback
|
||||
settings-general-interface-feedback_sound-volume = Volume del suono di feedback
|
||||
settings-general-interface-connected_trackers_warning = Avviso di tracker connessi
|
||||
settings-general-interface-connected_trackers_warning-description = Questa opzione mostrerà un pop-up ogni volta che proverai ad uscire da SmileVR mentre uno o più tracker sono connessi. Ció ti permetterà di ricordarti di spegnere i tuoi tracker per preservarne la durata delle batterie.
|
||||
settings-general-interface-connected_trackers_warning-label = Avviso di tracker connessi alla chiusura dell'applicazione
|
||||
settings-general-interface-use_tray = Riduci a icona nella barra delle applicazioni
|
||||
settings-general-interface-use_tray-description = Ti consente di chiudere la finestra senza chiudere il server SlimeVR in modo da poter continuare a usarlo senza che la GUI ti infastidisca.
|
||||
settings-general-interface-use_tray-label = Riduci a icona nella barra delle applicazioni
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -463,6 +499,7 @@ settings-serial-factory_reset-warning-cancel = Annulla
|
||||
settings-serial-get_infos = Ottieni informazioni
|
||||
settings-serial-serial_select = Seleziona una porta seriale
|
||||
settings-serial-auto_dropdown_item = Automatico
|
||||
settings-serial-get_wifi_scan = Elenca WiFi Network
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -628,8 +665,8 @@ onboarding-done-close = Chiudi la configurazione
|
||||
|
||||
onboarding-connect_tracker-back = Torna alle credenziali Wi-Fi
|
||||
onboarding-connect_tracker-title = Connetti i tracker
|
||||
onboarding-connect_tracker-description-p0 = Ora passiamo alla parte divertente, colleghiamo tutti i tracker!
|
||||
onboarding-connect_tracker-description-p1 = Collega semplicemente tutti i tracker che non sono ancora collegati tramite una porta USB.
|
||||
onboarding-connect_tracker-description-p0-v1 = Ora passiamo alla parte divertente, colleghiamo i tracker!
|
||||
onboarding-connect_tracker-description-p1-v1 = Collega ogni tracker uno alla volta tramite una porta USB.
|
||||
onboarding-connect_tracker-issue-serial = Sto avendo problemi nel connettermi!
|
||||
onboarding-connect_tracker-usb = Tracker USB
|
||||
onboarding-connect_tracker-connection_status-none = Ricerca dei tracker in corso
|
||||
@@ -689,6 +726,7 @@ onboarding-assign_trackers-assigned =
|
||||
}
|
||||
onboarding-assign_trackers-advanced = Mostra impostazioni avanzate di assegnazione
|
||||
onboarding-assign_trackers-next = Ho assegnato tutti i miei tracker
|
||||
onboarding-assign_trackers-mirror_view = Inverti interfaccia
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -771,6 +809,13 @@ onboarding-choose_mounting-manual_mounting = Posizionamento manuale
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Raccomandato
|
||||
onboarding-choose_mounting-manual_mounting-description = Questo processo ti lascerá scegliere manualmente le direzioni per la posizione di montaggio di tutti i tracker
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title =
|
||||
Sei sicuro di voler fare
|
||||
la calibrazione automatica di posizionamento?
|
||||
onboarding-choose_mounting-manual_modal-description = <b>La calibrazione manuale è raccomandata per i nuovi utenti</b>, considerando che le pose necessarie per la calibrazione automatica di posizionamento possono risultare complicate al primo tentativo e potrebbero richiedere un po' di pratica.
|
||||
onboarding-choose_mounting-manual_modal-confirm = Sono sicurə di ciò che sto facendo.
|
||||
onboarding-choose_mounting-manual_modal-cancel = Annulla
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -805,16 +850,17 @@ onboarding-automatic_mounting-put_trackers_on-next = Sto indossando tutti i miei
|
||||
|
||||
onboarding-choose_proportions = Quale metodo di calibrazione delle proporzioni vuoi usare?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description =
|
||||
"Proporzioni del corpo" vengono utilizzate per conoscere le misure del tuo corpo. Sono necessarie per calcolare le posizioni dei tracker.
|
||||
Quando le proporzioni del tuo corpo non corrispondono a quelle salvate, la tua precisione di tracciamento sarà peggiore e noterai cose come slittamento o la posizione del tuo corpo non corrisponderá bene alla posizione del tuo avatar.
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
Le "Proporzioni del corpo" sono utilizzate per conoscere le esatte misure del tuo corpo. Sono necessarie per calcolare le posizioni dei tracker.
|
||||
Quando le proporzioni del tuo corpo non corrispondono a quelle salvate, la precisione di tracciamento sarà peggiore e noterai cose come slittamento o come la posizione del tuo corpo che no corrisponde con quella del tuo avatar.
|
||||
<b>Devi misurare il tuo corpo solo una volta!</b> A meno che non siano sbagliate o il tuo corpo non sia cambiato, non è necessario rifarlo.
|
||||
onboarding-choose_proportions-auto_proportions = Proporzioni automatiche
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Raccomandato
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv2 =
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
Questo indovinerà le tue proporzioni registrando un campione dei tuoi movimenti e passandolo attraverso un algoritmo.
|
||||
|
||||
<b>Ciò richiede che il tuo HMD sia collegato a SlimeVR!</b>
|
||||
<b>Ciò richiede che il tuo visore (HMD) sia collegato a SlimeVR e indossato correttaments sulla tua testa</b>
|
||||
onboarding-choose_proportions-manual_proportions = Proporzioni manuali
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = Per piccole modifiche
|
||||
@@ -845,17 +891,21 @@ onboarding-automatic_proportions-put_trackers_on-description = Per calibrare le
|
||||
onboarding-automatic_proportions-put_trackers_on-next = Sto indossando tutti i miei tracker
|
||||
onboarding-automatic_proportions-requirements-title = Requisiti
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
Hai almeno abbastanza tracker per tracciare i tuoi piedi (generalmente 5 tracker).
|
||||
Hai indossato i tuoi tracker e il visore.
|
||||
I tuoi tracker e il visore sono connessi al server di SlimeVR.
|
||||
I tuoi tracker e il visore stanno funzionando correttamente con il server di SlimeVR.
|
||||
Hai i tuoi tracker e il visore accessi e li stai indossando.
|
||||
I tuoi tracker e il visore sono connessi al server di SlimeVR e stanno funzionando correttamente (e.g. non si bloccano, disconnettono, etc.)
|
||||
Il tuo visore sta riportando dati di posizione al server di SlimeVR (ciò significa generalmente avere SteamVR in esecuzione e connesso a SlimeVR usando il driver di SlimeVR per SteamVR).
|
||||
Il tuo visore sta riportando dati di posizione al server di SlimeVR (ciò significa generalmente avere SteamVR in esecuzione e connesso a SlimeVR usando il driver di SlimeVR per SteamVR).
|
||||
Il tuo tracciamento funziona e rappresenta accuratamente i tuoi movimenti (e.g. hai eseguito un reset completo e i traker si muovono nella giusta direzione quando calci, ti pieghi, ti siedi, ecc.).
|
||||
onboarding-automatic_proportions-requirements-next = Ho letto i requisiti.
|
||||
onboarding-automatic_proportions-check_height-title = Controlla la tua altezza
|
||||
onboarding-automatic_proportions-check_height-description = Usiamo la tua altezza come base delle nostre misurazioni utilizzando l'altezza dell'HMD come approssimazione della tua altezza effettiva, ma è meglio controllare se il valore è giusto!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = Si prega di premere il pulsante stando in piedi <u>in posizione eretta</u> per calcolare l'altezza. Hai 3 secondi dopo aver premuto il pulsante!
|
||||
onboarding-automatic_proportions-check_height-guardian_tip =
|
||||
Se stai utilizzando un visore VR standalone, assicurati di avere il tuo guardiano/
|
||||
limiti attivato in modo che la tua altezza sia corretta!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = Sono in piedi!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = Sconosciuto
|
||||
@@ -902,6 +952,15 @@ onboarding-automatic_proportions-error_modal-confirm = Ho capito!
|
||||
|
||||
home-no_trackers = Nessun tracker rilevato o assegnato
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = I tracker sono ancora accesi
|
||||
trackers_still_on-modal-description =
|
||||
Uno o più tracker ancora accesi.
|
||||
Vuoi uscire comunque da SmileVR?
|
||||
trackers_still_on-modal-confirm = Chiudi SlimeVR
|
||||
trackers_still_on-modal-cancel = Attendi un momento...
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = É consigliato eseguire un reset completo poiché uno o più tracker non sono regolati.
|
||||
@@ -911,3 +970,31 @@ status_system-StatusSteamVRDisconnected =
|
||||
*[other] Attualmente non è connesso a SteamVR tramite il driver SlimeVR.
|
||||
}
|
||||
status_system-StatusTrackerError = Il tracker { $trackerName } ha un errore.
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = Mostra
|
||||
tray_menu-hide = Nascondi
|
||||
tray_menu-quit = Esci
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = Cosa dovrebbe fare il pulsante di chiusura?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
Questa opzione ti permette di scegliere se si desidera uscire dal server o ridurlo a icona nella barra delle applicationi quando si preme il pulsante di chiusura.
|
||||
|
||||
Puoi cambiare la tua scelta in seguito nelle impostazioni dell'interfaccia!
|
||||
tray_or_exit_modal-radio-exit = Termina alla chiusura
|
||||
tray_or_exit_modal-radio-tray = Riduci a icona nella barra delle applicazioni
|
||||
tray_or_exit_modal-submit = Salva
|
||||
tray_or_exit_modal-cancel = Annulla
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = È stato trovato un nuovo tracker!
|
||||
unknown_device-modal-description =
|
||||
C'è un nuovo tracker con indirizzo MAC <b>{ $deviceId }</b>.
|
||||
Vuoi collegarlo a SlimeVR?
|
||||
unknown_device-modal-confirm = Certo!
|
||||
unknown_device-modal-forget = Ignoralo
|
||||
|
||||
@@ -36,9 +36,10 @@ body_part-RIGHT_HAND = 右手
|
||||
body_part-RIGHT_UPPER_LEG = 右膝
|
||||
body_part-RIGHT_LOWER_LEG = 右足
|
||||
body_part-RIGHT_FOOT = 右足先
|
||||
body_part-UPPER_CHEST = 上胸
|
||||
body_part-CHEST = 胸
|
||||
body_part-WAIST = 腰
|
||||
body_part-HIP = ヒップ
|
||||
body_part-WAIST = 胴体
|
||||
body_part-HIP = 腰
|
||||
body_part-LEFT_SHOULDER = 左肩
|
||||
body_part-LEFT_UPPER_ARM = 左上腕
|
||||
body_part-LEFT_LOWER_ARM = 左前腕
|
||||
@@ -53,6 +54,7 @@ skeleton_bone-NONE = 無し
|
||||
skeleton_bone-HEAD = ヘッドシフト
|
||||
skeleton_bone-NECK = 首長さ
|
||||
skeleton_bone-torso_group = 胴体の長さ
|
||||
skeleton_bone-UPPER_CHEST = 上胸の長さ
|
||||
skeleton_bone-CHEST_OFFSET = 胸オフセット
|
||||
skeleton_bone-CHEST = 胸囲
|
||||
skeleton_bone-WAIST = ウエスト長さ
|
||||
@@ -122,6 +124,7 @@ widget-drift_compensation-clear = ドリフト補正をクリアする
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
|
||||
widget-clear_mounting = リセットマウンティングをクリア
|
||||
|
||||
## Widget: Developer settings
|
||||
|
||||
@@ -141,6 +144,11 @@ widget-imu_visualizer-rotation_raw = 生
|
||||
widget-imu_visualizer-rotation_preview = 生
|
||||
widget-imu_visualizer-rotation_hide = 隠す
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = スケルトンプレビュー
|
||||
widget-skeleton_visualizer-hide = 非表示
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = ステータスなし
|
||||
@@ -149,6 +157,7 @@ tracker-status-error = エラー
|
||||
tracker-status-disconnected = 切断
|
||||
tracker-status-occluded = Occluded
|
||||
tracker-status-ok = 接続中
|
||||
tracker-status-timed_out = タイムアウト
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -166,10 +175,15 @@ tracker-table-column-url = URL
|
||||
## Tracker rotation
|
||||
|
||||
tracker-rotation-front = 前
|
||||
tracker-rotation-front_left = 左前
|
||||
tracker-rotation-front_right = 右前
|
||||
tracker-rotation-left = 左
|
||||
tracker-rotation-right = 右
|
||||
tracker-rotation-back = 後
|
||||
tracker-rotation-back_left = 左後
|
||||
tracker-rotation-back_right = 右後
|
||||
tracker-rotation-custom = カスタム
|
||||
tracker-rotation-overriden = (マウンティングリセットによる上書き)
|
||||
|
||||
## Tracker information
|
||||
|
||||
@@ -234,6 +248,7 @@ tracker_selection_menu-RIGHT_UPPER_LEG = { -tracker_selection-part(body-part: "
|
||||
tracker_selection_menu-RIGHT_LOWER_LEG = { -tracker_selection-part(body-part: "右足首") }
|
||||
tracker_selection_menu-RIGHT_FOOT = { -tracker_selection-part(body-part: "右足先") }
|
||||
tracker_selection_menu-RIGHT_CONTROLLER = { -tracker_selection-part(body-part: "右コントローラ") }
|
||||
tracker_selection_menu-UPPER_CHEST = { -tracker_selection-part } 上胸?
|
||||
tracker_selection_menu-CHEST = { -tracker_selection-part(body-part: "胸") }
|
||||
tracker_selection_menu-WAIST = { -tracker_selection-part(body-part: "腰") }
|
||||
tracker_selection_menu-HIP = { -tracker_selection-part(body-part: "ヒップ") }
|
||||
@@ -271,6 +286,7 @@ settings-sidebar-osc_router = OSCルーター
|
||||
settings-sidebar-osc_trackers = VRChatOSCトラッカー
|
||||
settings-sidebar-utils = ユーティリティ
|
||||
settings-sidebar-serial = シリアルコンソール
|
||||
settings-sidebar-appearance = 外観
|
||||
settings-sidebar-notifications = 通知
|
||||
|
||||
## SteamVR settings
|
||||
@@ -328,12 +344,35 @@ settings-general-fk_settings-leg_tweak-floor_clip = フロアクリップ
|
||||
# since this largely prevents this it corrects for it hence skating correction (note this may be renamed to sliding correction)
|
||||
# definition - Guesses when each foot is in contact with the ground and uses that information to improve tracking
|
||||
settings-general-fk_settings-leg_tweak-skating_correction = スケーティング補正
|
||||
settings-general-fk_settings-leg_tweak-foot_plant = 足の着地
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-amount = スケーティング補正の強さ
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-description = スケート補正はアイススケートを補正しますが、特定の動きでは精度が低下する場合があります。これを有効にする際は、フルリセットし、ゲーム内で再校正してください。
|
||||
settings-general-fk_settings-leg_tweak-floor_clip-description = フロアクリップを有効にすると、床を通り抜けることを減少させるか、完全に排除できます。これを有効にする際は、フルリセットし、ゲーム内で再校正してください。
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = 足指スナップは足トラッカーを使用していない場合、足の回転を推測しようとします。
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = 足の着地は足が地面に接触したときに足を地面に平行に回転させます。
|
||||
settings-general-fk_settings-leg_fk = 足のトラッキング
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = つま先立ちで足のマウンティングリセットを有効にします。
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = 足のマウンティングリセット
|
||||
settings-general-fk_settings-arm_fk = アームトラッキング
|
||||
settings-general-fk_settings-arm_fk-description = 腕の追従方法を変更する。
|
||||
settings-general-fk_settings-arm_fk-force_arms = Force arms from HMD
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = マウンティングリセットのために期待される腕のポーズを変更します。
|
||||
settings-general-fk_settings-arm_fk-back = 後ろ
|
||||
settings-general-fk_settings-arm_fk-back-description = デフォルトモードで、上腕を後ろに、下腕を前にします。
|
||||
settings-general-fk_settings-arm_fk-tpose_up = Tポーズ(上げ)
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = 完全リセット時は腕を下げて立っている姿勢、マウンティングリセット時は腕を体の両側に90度上げる。
|
||||
settings-general-fk_settings-arm_fk-tpose_down = Tポーズ(下げ)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = 完全リセット時は腕を体の両側に90度上げ、マウンティングリセット時は腕を下げて立っている姿勢。
|
||||
settings-general-fk_settings-arm_fk-forward = 前方ポーズ
|
||||
settings-general-fk_settings-arm_fk-forward-description = リセット時に腕を前方に90度上げる。Vチューバーとして座っている時に便利。
|
||||
settings-general-fk_settings-skeleton_settings-toggles = スケルトン設定
|
||||
settings-general-fk_settings-skeleton_settings-description = スケルトン設定のオン/オフを切り替えます。これらはオンのままにしておくことをお勧めします。
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine_model = 拡張脊椎モデル
|
||||
settings-general-fk_settings-skeleton_settings-extended_pelvis_model = 拡張骨盤モデル
|
||||
settings-general-fk_settings-skeleton_settings-extended_knees_model = 拡張膝モデル
|
||||
settings-general-fk_settings-skeleton_settings-ratios = スケルトン比率
|
||||
settings-general-fk_settings-skeleton_settings-ratios-description = スケルトン設定の値を変更する。これらを変更した後、体の比率を調整する必要があるかもしれません。
|
||||
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_hip = 胸から腰への推定
|
||||
settings-general-fk_settings-self_localization-title = モーションキャプチャモード
|
||||
settings-general-fk_settings-vive_emulation-title = Viveエミュレーション
|
||||
settings-general-fk_settings-vive_emulation-description = Viveトラッカーが抱える腰トラッカーの問題をエミュレートします。
|
||||
@@ -523,8 +562,6 @@ onboarding-done-close = ガイドを閉じる
|
||||
|
||||
onboarding-connect_tracker-back = Wi-Fi認証に戻る
|
||||
onboarding-connect_tracker-title = 接続中のトラッカー
|
||||
onboarding-connect_tracker-description-p0 = さあ、楽しい部分に移りましょう。すべてのトラッカーを接続します!
|
||||
onboarding-connect_tracker-description-p1 = まだ接続されていないトラッカーたちをUSBポートを通して接続するだけです。
|
||||
onboarding-connect_tracker-issue-serial = 接続に問題があります!
|
||||
onboarding-connect_tracker-usb = USBトラッカー
|
||||
onboarding-connect_tracker-connection_status-none = トラッカーを探しています
|
||||
@@ -634,8 +671,6 @@ onboarding-automatic_proportions-put_trackers_on-description = プロポーシ
|
||||
onboarding-automatic_proportions-put_trackers_on-next = すべてのトラッカーを装着しました
|
||||
onboarding-automatic_proportions-requirements-title = 要件
|
||||
onboarding-automatic_proportions-requirements-next = 要件を読みました
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-height = あなたの身長は
|
||||
onboarding-automatic_proportions-start_recording-title = 測定の準備をする
|
||||
onboarding-automatic_proportions-start_recording-description = これから具体的なポーズや動きを記録します。これらは次の画面に表示されます。ボタンが押されたらすぐに始められるように準備しておいてください!
|
||||
onboarding-automatic_proportions-start_recording-next = レコーディングスタート
|
||||
@@ -662,6 +697,9 @@ onboarding-automatic_proportions-done-description = ボディプロポーショ
|
||||
|
||||
home-no_trackers = トラッカーを検出できません。もしくは割り当てられていません。
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = 一つ以上のトラッカーが調整されていないため、完全なリセットを実行することをお勧めします
|
||||
@@ -671,3 +709,12 @@ status_system-StatusSteamVRDisconnected =
|
||||
*[other] SlimeVRドライバ経由でSteamVRに接続されていません
|
||||
}
|
||||
status_system-StatusTrackerError = { $trackerName } トラッカーにエラーが発生しています
|
||||
|
||||
## Tray Menu
|
||||
|
||||
|
||||
## First exit modal
|
||||
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
|
||||
@@ -19,10 +19,12 @@ version_update-close = 닫기
|
||||
|
||||
## Tips
|
||||
|
||||
tips-find_tracker = 내 트래커가 어떤 트래커인지 모르시겠다구요? 트래커를 흔들면 해당 항목이 빛날 거예요.
|
||||
tips-find_tracker = 어떤 트래커가 어디에 대응되는지 모르겠나요? 트래커를 흔들면 해당 트래커에 해당되는 항목이 강조 표시됩니다.
|
||||
tips-do_not_move_heels = 기록하는 동안 발뒤꿈치가 움직이지 않도록 조심하세요!
|
||||
tips-file_select = 파일을 <u>열거나,</u> 여기에 드래그&드롭하세요.
|
||||
tips-tap_setup = 목록에서 트래커를 선택하는 대신 할당할 트래커를 천천히 2번 탭해서 선택할 수 있어요.
|
||||
tips-file_select = 파일을 <u>열거나</u>, 여기에 드래그&드롭하세요.
|
||||
tips-tap_setup = 목록에서 트래커를 선택하는 대신 트래커를 천천히 2번 탭해서 선택할 수 있어요.
|
||||
tips-turn_on_tracker = 공식 SlimeVR 트래커를 사용 중이신가요? 트래커를 <b><em>PC에 연결</em></b>하고 <b><em>전원을 키셔야</em></b> 해요.
|
||||
tips-failed_webgl = WebGL 초기화에 실패했습니다.
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -85,7 +87,7 @@ reset-yaw = Yaw 정렬
|
||||
|
||||
## 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 연결
|
||||
@@ -144,6 +146,11 @@ widget-imu_visualizer-rotation_raw = Raw
|
||||
widget-imu_visualizer-rotation_preview = 미리보기
|
||||
widget-imu_visualizer-rotation_hide = 숨기기
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = 골격 비율 미리보기
|
||||
widget-skeleton_visualizer-hide = 숨기기
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = 알 수 없음
|
||||
@@ -152,6 +159,7 @@ tracker-status-error = 오류
|
||||
tracker-status-disconnected = 연결되지 않음
|
||||
tracker-status-occluded = 사용할 수 없음
|
||||
tracker-status-ok = 연결됨
|
||||
tracker-status-timed_out = 시간 초과
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -190,6 +198,7 @@ tracker-infos-hardware_rev = 하드웨어 리비전
|
||||
tracker-infos-hardware_identifier = 하드웨어 ID
|
||||
tracker-infos-imu = IMU 센서
|
||||
tracker-infos-board_type = 메인보드
|
||||
tracker-infos-network_version = 프로토콜 버전
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -209,6 +218,9 @@ tracker-settings-drift_compensation_section-edit = 틀어짐 보정 사용
|
||||
tracker-settings-name_section = 트래커 이름
|
||||
tracker-settings-name_section-description = 귀여운 이름을 지어주세요! >_<
|
||||
tracker-settings-name_section-placeholder = NightyBeast's left leg
|
||||
tracker-settings-forget = 트래커 삭제
|
||||
tracker-settings-forget-description = SlimeVR 서버에서 트래커를 제거하고 서버를 다시 시작할 때까지 자동으로 연결하지 않아요. 트래커의 설정은 지워지지 않아요.
|
||||
tracker-settings-forget-label = 트래커 삭제
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -275,7 +287,7 @@ mounting_selection_menu-close = 닫기
|
||||
settings-sidebar-title = 설정
|
||||
settings-sidebar-general = 일반
|
||||
settings-sidebar-tracker_mechanics = 트래커 역학
|
||||
settings-sidebar-fk_settings = FK 설정
|
||||
settings-sidebar-fk_settings = 트래킹 설정
|
||||
settings-sidebar-gesture_control = 제스처 제어
|
||||
settings-sidebar-interface = 인터페이스
|
||||
settings-sidebar-osc_router = OSC 라우터
|
||||
@@ -296,12 +308,24 @@ settings-general-steamvr-subtitle = SteamVR 트래커
|
||||
settings-general-steamvr-description =
|
||||
SteamVR 트래커를 켜거나 끄세요
|
||||
특정 트래커 구성만 허용하는 게임 또는 앱에서 유용해요.
|
||||
settings-general-steamvr-trackers-waist = Waist
|
||||
settings-general-steamvr-trackers-chest = Chest
|
||||
settings-general-steamvr-trackers-feet = Feet
|
||||
settings-general-steamvr-trackers-knees = Knees
|
||||
settings-general-steamvr-trackers-elbows = Elbows
|
||||
settings-general-steamvr-trackers-hands = Hands
|
||||
settings-general-steamvr-trackers-waist = 허리
|
||||
settings-general-steamvr-trackers-chest = 가슴
|
||||
settings-general-steamvr-trackers-left_foot = 왼발
|
||||
settings-general-steamvr-trackers-right_foot = 오른발
|
||||
settings-general-steamvr-trackers-left_knee = 왼쪽 무릎
|
||||
settings-general-steamvr-trackers-right_knee = 오른쪽 무릎
|
||||
settings-general-steamvr-trackers-left_elbow = 왼쪽 팔꿈치
|
||||
settings-general-steamvr-trackers-right_elbow = 오른쪽 팔꿈치
|
||||
settings-general-steamvr-trackers-left_hand = 왼손
|
||||
settings-general-steamvr-trackers-right_hand = 오른손
|
||||
settings-general-steamvr-trackers-tracker_toggling = 자동 트래커 할당
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = 지정한 트래커 할당 상태에 따라 SteamVR 트래커를 자동으로 켜고 끄기
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = 자동 트래커 할당
|
||||
settings-general-steamvr-trackers-hands-warning =
|
||||
<b>경고:</b> 핸드 트래커를 사용하면 VR 컨트롤러가 작동하지 않아요.
|
||||
그래도 사용할까요?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = 취소
|
||||
settings-general-steamvr-trackers-hands-warning-done = 확인
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -319,6 +343,7 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = 움직
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Prediction
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = 대기 시간이 줄어들고 움직임이 더 빨라지지만 지터가 증가할 수 있어요.
|
||||
settings-general-tracker_mechanics-filtering-amount = 강도
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = 부드러운 Yaw 리셋 작용 시간 (0초는 부드러운 Yaw 리셋을 비활성화 합니다)
|
||||
settings-general-tracker_mechanics-drift_compensation = 틀어짐 보정
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
@@ -327,10 +352,15 @@ settings-general-tracker_mechanics-drift_compensation-description =
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = 틀어짐 보정
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = 보정 강도
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = 보정에 사용할 최근 정렬 횟수
|
||||
settings-general-tracker_mechanics-save_mounting_reset = 자동 착용 방향 정렬 보정값 저장
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
트래커의 자동 마운팅 리셋 보정값을 저장합니다. 트래커들의 위치가 고정된
|
||||
모션 캡처 슈트 같은 것을 사용할 때 유용합니다. <b>일반 사용자들에게는 권장되지 않아요!</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = 착용 방향 정렬 저장
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
settings-general-fk_settings = FK 설정
|
||||
settings-general-fk_settings = 트래킹 설정
|
||||
# Floor clip:
|
||||
# why the name - came from the idea of noclip in video games, but is the opposite where clipping to the floor is a desired feature
|
||||
# definition - Prevents the foot trackers from going lower than they where when a reset was performed
|
||||
@@ -348,11 +378,34 @@ settings-general-fk_settings-leg_tweak-floor_clip-description = 플로어 클립
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = 토 스냅은 발 트래커가 없을 때, 발 트래커가 있는 것처럼 예측해서 움직여주는 기능이에요.
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = 풋 플랜트는 발이 바닥에 닿았을 때 바닥과 평평하게 회전시켜 줘요.
|
||||
settings-general-fk_settings-leg_fk = 발 트래킹
|
||||
settings-general-fk_settings-arm_fk = 팔 운동학
|
||||
settings-general-fk_settings-arm_fk-description = 팔이 추적되는 방식을 변경할 수 있어요.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = 까치발을 들어 발 트래커의 착용 방향 정렬을 활성화하기
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = 발 트래커 착용 방향 정렬
|
||||
settings-general-fk_settings-arm_fk = 팔 트래킹
|
||||
settings-general-fk_settings-arm_fk-description = 손 컨트롤러 위치 데이터를 사용할 수 없는 경우에도 VR 헤드셋(HMD)으로부터 팔을 추적하도록 할 수 있어요.
|
||||
settings-general-fk_settings-arm_fk-force_arms = 팔을 HMD에서만 받아오기
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = 착용 방향 정렬에 사용되는 팔 자세 설정
|
||||
settings-general-fk_settings-arm_fk-back = 뒤쪽
|
||||
settings-general-fk_settings-arm_fk-back-description = 기본값. 위쪽 팔은 뒤를 향하고 아래쪽 팔은 앞을 향하게 하는 자세.
|
||||
settings-general-fk_settings-arm_fk-tpose_up = T-포즈(올리기)
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = 전체 정렬을 수행할 때에는 팔을 차렷 자세로 내리고, 착용 방향 정렬 중에는 팔을 좌우로 나란히 동작으로 펼치는 자세.
|
||||
settings-general-fk_settings-arm_fk-tpose_down = T-포즈(내리기)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = 전체 정렬에서는 좌우로 나란히 자세, 착용 방향 정렬에서는 팔을 차렷 동작으로 내리는 자세
|
||||
settings-general-fk_settings-arm_fk-forward = 앞쪽
|
||||
settings-general-fk_settings-arm_fk-forward-description = 앞으로 나란히 자세. 앉아있거나 버튜버 활동 등에서 유용해요.
|
||||
settings-general-fk_settings-skeleton_settings-toggles = 골격 설정 제어
|
||||
settings-general-fk_settings-skeleton_settings-description = 골격 설정을 설정하거나 해제해요. 이것들은 켜두는 게 좋아요.
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine_model = 확장된 척추 모델
|
||||
settings-general-fk_settings-skeleton_settings-extended_pelvis_model = 확장된 골반 모델
|
||||
settings-general-fk_settings-skeleton_settings-extended_knees_model = 확장된 무릎 모델
|
||||
settings-general-fk_settings-skeleton_settings-ratios = 골격 비율
|
||||
settings-general-fk_settings-skeleton_settings-ratios-description = 골격 비율을 변경하면 신체 비율 설정을 다시 조절해야 할 수 있어요.
|
||||
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_hip = 가슴, 골반으로부터 추측한 허리 데이터
|
||||
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_legs = 가슴, 다리로부터 추측한 허리 데이터
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs = 다리로부터 추측한 골반 데이터
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_waist_legs = 허리, 다리로부터 추측한 골반 데이터
|
||||
settings-general-fk_settings-skeleton_settings-interp_hip_legs = 골반 각도를 계산할 때 다리 각도를 합산
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = 무릎 트래커 각도를 계산할 때 발목 각도를 합산
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = 무릎 각도를 계산할 때 발목 각도를 합산
|
||||
settings-general-fk_settings-self_localization-title = Mocap 모드
|
||||
settings-general-fk_settings-self_localization-description = Mocap 모드에서는 헤드셋이나 다른 트래커 없이 골격이 자신의 위치를 대략적으로 추적할 수 있어요. 발과 머리 트래커가 필요하고 아직 실험적이에요.
|
||||
settings-general-fk_settings-vive_emulation-title = VIVE 에뮬레이션
|
||||
@@ -415,6 +468,12 @@ settings-general-interface-feedback_sound = 피드백 사운드
|
||||
settings-general-interface-feedback_sound-description = 이 옵션을 켜면 트래커를 정렬할 때 효과음을 재생해요
|
||||
settings-general-interface-feedback_sound-label = 피드백 사운드
|
||||
settings-general-interface-feedback_sound-volume = 피드백 사운드 음량
|
||||
settings-general-interface-connected_trackers_warning = 작동 중인 트래커 경고
|
||||
settings-general-interface-connected_trackers_warning-description = 이 옵션은 트래커가 연결되어 있는 채로 SlimeVR을 종료하려고 할 때 팝업을 표시합니다. 그렇게 하면 실수로 트래커를 끄지 않아 배터리가 방전되는 일을 예방할 수 있어요.
|
||||
settings-general-interface-connected_trackers_warning-label = 종료 시 작동 중인 트래커 경고 활성화
|
||||
settings-general-interface-use_tray = 작업 표시줄로 최소화
|
||||
settings-general-interface-use_tray-description = SlimeVR 서버를 닫지 않고 창만 닫을 수 있게 하여 사용 시 항상 GUI를 띄워 놓을 필요가 없게 해요.
|
||||
settings-general-interface-use_tray-label = 작업 표시줄로 최소화
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -436,6 +495,7 @@ settings-serial-factory_reset-warning-cancel = 취소
|
||||
settings-serial-get_infos = 정보 가져오기
|
||||
settings-serial-serial_select = 시리얼 포트 선택
|
||||
settings-serial-auto_dropdown_item = 자동
|
||||
settings-serial-get_wifi_scan = WiFi 검색
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -451,7 +511,7 @@ settings-osc-router-network = 네트워크 포트
|
||||
# This cares about multilines
|
||||
settings-osc-router-network-description =
|
||||
데이터 수신 및 전송을 위한 포트 설정
|
||||
이들은 SlimeVR 서버에서 사용되는 다른 포트와 동일할 수 있어요.
|
||||
이들은 SlimeVR 서버에서 사용되는 다른 포트와 동일해도 돼요.
|
||||
settings-osc-router-network-port_in =
|
||||
.label = 들어오는 포트
|
||||
.placeholder = Port in (기본값: 9002)
|
||||
@@ -467,10 +527,10 @@ settings-osc-router-network-address-placeholder = IPV4 주소
|
||||
settings-osc-vrchat = VRChat OSC Trackers
|
||||
# This cares about multilines
|
||||
settings-osc-vrchat-description =
|
||||
HMD 데이터 수신 및 전송을 위한 VRChat 관련 설정 변경
|
||||
FBT용 트래커 데이터(Quest 단독에서 작동)
|
||||
헤드셋 (HMD) 데이터를 수신하고 SteamVR 없이도 (예: Quest 단독 사용)
|
||||
트래커 정보를 전송하도록 VRChat 관련 설정을 변경
|
||||
settings-osc-vrchat-enable = 활성화
|
||||
settings-osc-vrchat-enable-description = 활성화해서 데이터 송수신
|
||||
settings-osc-vrchat-enable-description = 데이터 송/수신 활성화
|
||||
settings-osc-vrchat-enable-label = 활성화
|
||||
settings-osc-vrchat-network = 네트워크 포트
|
||||
settings-osc-vrchat-network-description = VRChat과 데이터를 주고받는 포트 설정
|
||||
@@ -484,7 +544,7 @@ settings-osc-vrchat-network-address = 네트워크 주소
|
||||
settings-osc-vrchat-network-address-description = VRChat으로 데이터를 보낼 주소를 선택하세요(장치의 Wi-Fi 설정 확인).
|
||||
settings-osc-vrchat-network-address-placeholder = VRChat IP 주소
|
||||
settings-osc-vrchat-network-trackers = 트래커
|
||||
settings-osc-vrchat-network-trackers-description = 활성화해서 데이터 송수신
|
||||
settings-osc-vrchat-network-trackers-description = OSC를 통한 특정 트래커의 전송 여부 설정
|
||||
settings-osc-vrchat-network-trackers-chest = Chest
|
||||
settings-osc-vrchat-network-trackers-hip = 골반
|
||||
settings-osc-vrchat-network-trackers-knees = Knees
|
||||
@@ -496,8 +556,8 @@ settings-osc-vrchat-network-trackers-elbows = Elbows
|
||||
settings-osc-vmc = Virtual Motion Capture
|
||||
# This cares about multilines
|
||||
settings-osc-vmc-description =
|
||||
SlimeVR의 본 데이터를 보내고 다른 앱에서 본 데이터를 수신하려면
|
||||
VMC(Virtual Motion Capture) 프로토콜 설정을 변경하세요.
|
||||
SlimeVR의 골격 데이터를 보내고 다른 앱에서 이 데이터를 수신하기 위해
|
||||
VMC(Virtual Motion Capture) 프로토콜 설정을 변경합니다.
|
||||
settings-osc-vmc-enable = 활성화
|
||||
settings-osc-vmc-enable-description = 활성화해서 데이터 송수신
|
||||
settings-osc-vmc-enable-label = 활성화
|
||||
@@ -513,7 +573,7 @@ settings-osc-vmc-network-address = 네트워크 주소
|
||||
settings-osc-vmc-network-address-description = 데이터를 받을 VMC 클라이언트의 주소
|
||||
settings-osc-vmc-network-address-placeholder = IPV4 주소
|
||||
settings-osc-vmc-vrm = VRM 모델
|
||||
settings-osc-vmc-vrm-description = VRM 모델을 로드할 때 헤드 앵커를 허용하고 다른 애플리케이션과 더 높은 호환성을 가능하게 해요.
|
||||
settings-osc-vmc-vrm-description = VRM 모델을 로드할 때 헤드 앵커를 허용하고 다른 애플리케이션과의 호환성을 높여줘요.
|
||||
settings-osc-vmc-vrm-model_unloaded = 로드된 모델이 없어요
|
||||
settings-osc-vmc-vrm-model_loaded =
|
||||
{ $titled ->
|
||||
@@ -532,8 +592,8 @@ onboarding-continue = 계속하기
|
||||
onboarding-wip = 아직 공사중이에요!
|
||||
onboarding-previous_step = 이전 단계
|
||||
onboarding-setup_warning =
|
||||
<b>주의:</b> SlimeVR을 처음 설정하고 계시다면...
|
||||
트래커가 올바르게 움직이기 위해 이 초기 설정이 필요해요
|
||||
<b>주의:</b> 더 좋은 추적을 위해서는 초기 설정이 필요해요.
|
||||
SlimeVR을 처음 사용하는 경우에도 필요합니다.
|
||||
onboarding-setup_warning-skip = 설정 건너뛰기
|
||||
onboarding-setup_warning-cancel = 설정 계속하기
|
||||
|
||||
@@ -558,13 +618,12 @@ onboarding-wifi_creds-password =
|
||||
|
||||
onboarding-reset_tutorial-back = 착용 방향 정렬로 돌아가기
|
||||
onboarding-reset_tutorial = 정렬 튜토리얼
|
||||
onboarding-reset_tutorial-explanation =
|
||||
트래커를 사용하다 보면 Yaw 드리프트 또는 트래커가 미끄러져서 틀어짐이 발생할 수 있어요.
|
||||
지금부터 그런 문제를 해결하는 방법을 알려 드릴게요.
|
||||
onboarding-reset_tutorial-explanation = 트래커를 사용하다 보면 IMU의 yaw 드리프트 또는 트래커의 위치가 달라져서 틀어짐이 발생할 수 있어요. 이러한 문제들을 해결하는 몇 가지 방법을 알려 드릴게요.
|
||||
onboarding-reset_tutorial-skip = 무시하고 건너뛰기
|
||||
# Cares about multiline
|
||||
onboarding-reset_tutorial-0 =
|
||||
Yaw 정렬을 시도하려면 강조된 트래커를 { $taps }번 탭하세요.
|
||||
|
||||
그러면 트래커는 HMD가 바라보는 면과 같은 방향으로 정렬될 거예요.
|
||||
# Cares about multiline
|
||||
onboarding-reset_tutorial-1 =
|
||||
@@ -602,17 +661,17 @@ onboarding-done-close = 마법사 닫기
|
||||
|
||||
onboarding-connect_tracker-back = Wi-Fi 자격 증명으로 돌아가기
|
||||
onboarding-connect_tracker-title = 트래커 연결
|
||||
onboarding-connect_tracker-description-p0 = 이제 모든 트래커를 연결하는 재미있는 부분으로 가봐요!
|
||||
onboarding-connect_tracker-description-p1 = 그냥 모든 트래커를 USB 포트에 연결하기만 하면 돼요
|
||||
onboarding-connect_tracker-description-p0-v1 = 이제 트래커를 연결하는 재미있는 부분으로 가봐요!
|
||||
onboarding-connect_tracker-description-p1-v1 = USB 포트를 통해 트래커들을 한 개씩 컴퓨터에 연결해 주세요.
|
||||
onboarding-connect_tracker-issue-serial = 연결하는 데 문제가 생겼어요!
|
||||
onboarding-connect_tracker-usb = USB 트래커
|
||||
onboarding-connect_tracker-connection_status-none = 트래커 찾는 중
|
||||
onboarding-connect_tracker-connection_status-serial_init = 시리얼 디바이스에 연결 중
|
||||
onboarding-connect_tracker-connection_status-provisioning = Wi-Fi 자격 증명 전송 중
|
||||
onboarding-connect_tracker-connection_status-connecting = Wi-Fi 자격증명 전송 중
|
||||
onboarding-connect_tracker-connection_status-connecting = Wi-Fi 연결 시도 중
|
||||
onboarding-connect_tracker-connection_status-looking_for_server = 서버 찾는 중
|
||||
onboarding-connect_tracker-connection_status-connection_error = Wi-Fi에 연결할 수 없음
|
||||
onboarding-connect_tracker-connection_status-could_not_find_server = 서버를 찾을 수 없어요
|
||||
onboarding-connect_tracker-connection_status-could_not_find_server = 서버를 찾을 수 없음
|
||||
onboarding-connect_tracker-connection_status-done = 서버에 연결됨
|
||||
# $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
|
||||
@@ -624,25 +683,27 @@ onboarding-connect_tracker-connected_trackers =
|
||||
[0] 연결된 트래커가 없어요.
|
||||
*[other] 트래커 { $amount }개가 연결되었어요.
|
||||
}
|
||||
onboarding-connect_tracker-next = 모든 트래커를 잘 연결했어요
|
||||
onboarding-connect_tracker-next = 트래커를 모두 연결했어요
|
||||
|
||||
## Tracker calibration tutorial
|
||||
|
||||
onboarding-calibration_tutorial = IMU 캘리브레이션 튜토리얼
|
||||
onboarding-calibration_tutorial = IMU 보정 튜토리얼
|
||||
onboarding-calibration_tutorial-subtitle = 트래커 틀어짐을 줄이는 데 도움이 될 거예요!
|
||||
onboarding-calibration_tutorial-description =
|
||||
매번 트래커의 전원을 켤 때마다 평평한 바닥에 트래커를 두고 잠시 기다려서 보정을 수행해야 해요. <b>(트래커를 움직이지 마세요!)</b>
|
||||
어떻게 하면 되는지 "{ onboarding-calibration_tutorial-calibrate }"를 눌러 같이 따라해보죠!
|
||||
onboarding-calibration_tutorial-status-calibrating = 캘리브레이팅
|
||||
onboarding-calibration_tutorial-description = 매번 트래커의 전원을 켤 때마다 평평한 바닥에 트래커를 두고 잠시 기다려서 트래커를 보정해야 해요. 이번엔 "{ onboarding-calibration_tutorial-calibrate }"를 눌러서 직접 보정해 보죠. <b>(트래커를 움직이지 마세요!)</b>
|
||||
onboarding-calibration_tutorial-calibrate = 트래커들을 모두 올려뒀어요
|
||||
onboarding-calibration_tutorial-status-waiting = 대기 중
|
||||
onboarding-calibration_tutorial-status-calibrating = 보정 중
|
||||
onboarding-calibration_tutorial-status-success = 좋아요!
|
||||
onboarding-calibration_tutorial-status-error = 트래커가 움직였습니다
|
||||
|
||||
## Tracker assignment tutorial
|
||||
|
||||
onboarding-assignment_tutorial = 슬라임 트래커를 착용하기 전에 준비하는 방법
|
||||
onboarding-assignment_tutorial = Slime 트래커를 착용하기 전에 준비하는 방법
|
||||
onboarding-assignment_tutorial-first_step = 1. 신체 부위가 적힌 스티커를 가지고 있다면 트래커에 붙여보세요
|
||||
# This text has a character limit of around 11 characters, so please keep it short
|
||||
onboarding-assignment_tutorial-sticker = 스티커
|
||||
onboarding-assignment_tutorial-second_step = 2. 스트랩의 벨크로 테이프 쪽을 그림과 같은 방향으로 유지하면서 스트랩을 트래커에 끼우세요:
|
||||
onboarding-assignment_tutorial-second_step-continuation = 익스텐션 트래커의 벨크로 테이프는 다음과 같은 방향으로 끼워주세요:
|
||||
onboarding-assignment_tutorial-second_step-v2 = 2. 스트랩을 트래커에 장착하되, 벨크로 접착면이 트래커의 Slime 얼굴과 같은 방향을 바라보도록 해 주세요:
|
||||
onboarding-assignment_tutorial-second_step-continuation-v2 = 확장 모듈의 벨크로 접착면이 다음 이미지처럼 위를 바라봐야 합니다:
|
||||
onboarding-assignment_tutorial-done = 스트랩과 스티커를 트래커에 잘 부착했어요!
|
||||
|
||||
## Tracker assignment setup
|
||||
@@ -656,6 +717,7 @@ onboarding-assign_trackers-description = 이제, 어떤 트래커가 어디에
|
||||
onboarding-assign_trackers-assigned = 트래커 { $trackers }개 중 { $assigned }개 연결됨
|
||||
onboarding-assign_trackers-advanced = 고급 할당 위치 보기
|
||||
onboarding-assign_trackers-next = 모든 트래커를 배치했어요
|
||||
onboarding-assign_trackers-mirror_view = 좌우 반전
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -727,13 +789,22 @@ onboarding-assign_trackers-warning-WAIST =
|
||||
|
||||
## Tracker mounting method choose
|
||||
|
||||
onboarding-choose_mounting = 착용 방향을 정렬하기 위해 어떤 방법을 사용할래요?
|
||||
onboarding-choose_mounting = 착용 방향 보정을 위해 어떤 방법을 사용할까요?
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-description = 착용 방향 정렬은 트래커가 몸에 착용된 방향을 찾아 수정하도록 도와줘요.
|
||||
onboarding-choose_mounting-auto_mounting = 자동으로 방향 설정
|
||||
onboarding-choose_mounting-auto_mounting-description = 이렇게 하면 두 가지 자세로 모든 트래커의 착용 방향을 자동으로 설정할 수 있어요
|
||||
# Italized text
|
||||
onboarding-choose_mounting-auto_mounting-label = 실험적
|
||||
onboarding-choose_mounting-auto_mounting-description = 이렇게 하면 2가지 자세로 모든 트래커의 착용 방향을 자동으로 설정할 수 있어요
|
||||
onboarding-choose_mounting-manual_mounting = 수동으로 방향 설정
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = 권장됨
|
||||
onboarding-choose_mounting-manual_mounting-description = 이렇게 하면 각 트래커의 착용 방향을 직접 고를 수 있어요
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title = 자동으로 착용 방향을 설정하시겠어요?
|
||||
onboarding-choose_mounting-manual_modal-description = 자동 착용 방향 정렬은 복잡한 자세와 올바르게 설정된 트래커가 필요하기 때문에 처음 사용하시는 분에게는 조금 어려울 수 있어요. <b>처음 이용하시는 분들께는 수동 착용 방향 정렬을 추천드려요!</b>
|
||||
onboarding-choose_mounting-manual_modal-confirm = 네, 알고 있어요!
|
||||
onboarding-choose_mounting-manual_modal-cancel = 취소
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -747,7 +818,7 @@ onboarding-manual_mounting-next = 다음 단계
|
||||
|
||||
onboarding-automatic_mounting-back = VR 입장 페이지로 돌아가기
|
||||
onboarding-automatic_mounting-title = 착용 방향 정렬
|
||||
onboarding-automatic_mounting-description = SlimeVR 트래커가 작동하려면, 착용 방향을 정해야 해요. 이 단계에서는 실제 트래커의 회전과 맞게 착용 방향을 정렬할 거예요.
|
||||
onboarding-automatic_mounting-description = SlimeVR 트래커가 작동하려면, 실제 트래커의 장착 위치와 맞게 트래커의 착용 방향을 설정해야 해요.
|
||||
onboarding-automatic_mounting-manual_mounting = 수동으로 착용 방향 설정
|
||||
onboarding-automatic_mounting-next = 다음 단계
|
||||
onboarding-automatic_mounting-prev_step = 이전 단계
|
||||
@@ -755,26 +826,38 @@ onboarding-automatic_mounting-done-title = 착용 방향이 정렬되었어요
|
||||
onboarding-automatic_mounting-done-description = 트래커의 착용 방향이 잘 설정되었어요!
|
||||
onboarding-automatic_mounting-done-restart = 다시 처음으로 돌아가기
|
||||
onboarding-automatic_mounting-mounting_reset-title = 착용 방향 정렬
|
||||
onboarding-automatic_mounting-mounting_reset-step-0 = 1. 팔, 다리를 구부린 다음 상체를 앞으로 기울여서 마치 스키를 타는 것처럼 쪼그리고 앉으세요.
|
||||
onboarding-automatic_mounting-mounting_reset-step-0 = 1. 팔, 다리를 구부린 다음 상체를 앞으로 기울여서 마치 스키를 타는 것처럼 몸을 굽혀 낮추세요.
|
||||
onboarding-automatic_mounting-mounting_reset-step-1 = 2. "착용 방향 재설정" 버튼을 누르고 착용 방향이 재설정될 때 까지 3초간 기다려주세요.
|
||||
onboarding-automatic_mounting-preparation-title = 준비
|
||||
onboarding-automatic_mounting-preparation-step-0 = 1. 팔을 몸에 붙이고 똑바로 서 주세요
|
||||
onboarding-automatic_mounting-preparation-step-1 = 2. "전체 정렬" 버튼을 누르고 트래커가 정렬될 때까지 3초간 기다려주세요.
|
||||
onboarding-automatic_mounting-put_trackers_on-title = 트래커를 착용해주세요
|
||||
onboarding-automatic_mounting-put_trackers_on-description = 트래커의 착용 방향이 돌아가는 것을 보정하기 위해 방금 할당한 트래커를 사용할 거예요. 모든 트래커를 착용했다면 오른쪽 그림에서 어떤 트래커인지 확인할 수 있어요.
|
||||
onboarding-automatic_mounting-put_trackers_on-description = 트래커의 착용 방향을 보정하기 위해 방금 할당한 트래커들을 사용할 거예요. 모든 트래커를 착용했다면 오른쪽 그림에서 각각의 트래커가 어떤 위치에 있는지 확인할 수 있어요.
|
||||
onboarding-automatic_mounting-put_trackers_on-next = 모든 트래커를 착용했어요
|
||||
|
||||
## Tracker proportions method choose
|
||||
|
||||
onboarding-choose_proportions = 신체 비율을 설정하기 위해 어떤 방법을 사용할래요?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
신체 비율은 사용자의 신체 치수를 추산하기 위해 사용됩니다. 계산된 신체 치수는 트래커의 위치를 계산하는 데 사용됩니다.
|
||||
설정된 신체 비율과 실제 신체 비율이 다를 경우, 트래킹 정확도가 훨씬 낮아질 수 있으며 사용 중 스케이팅, 슬라이딩, 또는 아바타와 신체 동작이 일치하지 않게 되는 경우가 발생할 수 있어요.
|
||||
<b>신체 비율 측정은 한 번이면 충분해요!</b> 측정치가 부정확하거나 신체 비율이 달라진 경우를 제외하고는 다시 측정할 필요가 없어요.
|
||||
onboarding-choose_proportions-auto_proportions = 자동으로 비율 설정
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = 권장
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
몸을 이리저리 움직여 샘플을 기록한 다음 알고리즘을 통해 연산하는 방식으로 신체 비율을 추산합니다.
|
||||
<b>사용하기 위해서는 VR 헤드셋이 SlimeVR과 연결되어 있어야 해요</b>
|
||||
onboarding-choose_proportions-manual_proportions = 수동으로 비율 설정
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = 정밀하게 설정하고 싶다면
|
||||
onboarding-choose_proportions-manual_proportions-description = 이렇게 하면 신체 비율을 직접 수정하여 수동으로 조절할 수 있어요
|
||||
onboarding-choose_proportions-manual_proportions-description = 이 옵션을 사용하면 신체 비율을 직접 입력해 수동으로 조절할 수 있어요.
|
||||
onboarding-choose_proportions-export = 다른 이름으로 저장
|
||||
onboarding-choose_proportions-import = 신체 비율 가져오기
|
||||
onboarding-choose_proportions-import-success = 가져오기 완료
|
||||
onboarding-choose_proportions-import-failed = 가져오기 실패
|
||||
onboarding-choose_proportions-file_type = 신체 비율 파일
|
||||
|
||||
## Tracker manual proportions setup
|
||||
|
||||
@@ -793,18 +876,32 @@ onboarding-automatic_proportions-manual = 수동 신체 비율 설정
|
||||
onboarding-automatic_proportions-prev_step = 뒤로
|
||||
onboarding-automatic_proportions-put_trackers_on-title = 트래커를 착용하세요
|
||||
onboarding-automatic_proportions-put_trackers_on-description = 비율을 조정하기 위해 방금 할당한 트래커를 사용할 거예요. 모든 트래커를 착용하면 오른쪽 그림에서 어떤 것이 있는지 알 수 있어요.
|
||||
onboarding-automatic_proportions-put_trackers_on-next = 트래커를 다 착용했어요
|
||||
onboarding-automatic_proportions-put_trackers_on-next = 트래커를 모두 착용했어요
|
||||
onboarding-automatic_proportions-requirements-title = 요구사항
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
발까지 추적할 수 있는 적어도 5개의 트래커가 있어야 해요.
|
||||
전원이 켜진 트래커와 헤드셋이 필요해요.
|
||||
트래커와 헤드셋을 착용하고 있어야 해요.
|
||||
트래커와 헤드셋이 SlimeVR 서버와 연결되어 있어야 해요.
|
||||
트래커와 헤드셋이 SlimeVR 서버에서 제대로 작동하고 있어야 해요.
|
||||
헤드셋이 SlimeVR 서버에 위치 데이터를 보고하고 있어야 해요. (SteamVR이 실행 중이고 SlimeVR의 SteamVR 드라이버를 사용하여 SlimeVR에 연결되어 있어야 해요).
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
다리를 추적하기 위해 최소 5개 이상의 트래커를 착용하세요.
|
||||
VR 헤드셋을 착용하세요.
|
||||
VR 헤드셋과 컨트롤러의 위치 정보가 SlimeVR 서버에 실시간으로 표시되는지 확인하세요.
|
||||
SlimeVR 서버에 연결된 트래커와 VR 헤드셋이 끊김이나 렉 없이 제대로 표시되는지 확인하세요. (이것은 SteamVR이 실행 중이며 SlimeVR의 SteamVR 드라이버를 사용하여 SlimeVR에 올바르게 연결되어 있다는 것을 의미합니다)
|
||||
트래커가 제대로 작동하고 나의 움직임을 올바르게 반영중인지 확인하세요. (예: 전체 정렬을 수행했으며 발차기, 허리 숙이기, 앉기 등 올바른 방향으로 움직임)
|
||||
onboarding-automatic_proportions-requirements-next = 요구사항을 모두 읽었어요
|
||||
onboarding-automatic_proportions-start_recording-title = 움직일 준비
|
||||
onboarding-automatic_proportions-check_height-title = 키를 확인하세요
|
||||
onboarding-automatic_proportions-check_height-description = 이 과정에서는 VR 헤드셋(HMD)의 높이를 사용하여 실제 키의 대략적인 값으로 삼고, 이를 측정의 기준으로 활용합니다. 하지만 직접 확인하는 것이 더 정확해요!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = 버튼을 누른 후 3초 이내에 <u>바르게 서서</u> 키를 측정해 주세요!
|
||||
onboarding-automatic_proportions-check_height-guardian_tip =
|
||||
독립형 VR 헤드셋을 사용하는 경우, 꼭 보호자와 함께하셔야 하고
|
||||
높이가 정확하도록 플레이 영역을 설정하는 것을 잊지 말아주세요!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = 서 있어요!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = 알 수 없음
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-hmd_height1 = VR 헤드셋(HMD) 높이
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-height1 = 실제 키
|
||||
onboarding-automatic_proportions-check_height-next_step = 괜찮아 보여요
|
||||
onboarding-automatic_proportions-start_recording-title = 움직일 준비를 해요
|
||||
onboarding-automatic_proportions-start_recording-description = 이제 몇 가지 특정 포즈와 동작을 기록할 거예요. 다음 화면에서 메시지가 표시되면 버튼을 눌러서 시작하세요!
|
||||
onboarding-automatic_proportions-start_recording-next = 기록 시작하기
|
||||
onboarding-automatic_proportions-recording-title = REC
|
||||
@@ -813,7 +910,7 @@ onboarding-automatic_proportions-recording-description-p1 = 아래에 표시된
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-recording-steps =
|
||||
자리에서 똑바로 일어나서, 머리를 원을 그리듯이 움직이세요.
|
||||
등을 앞으로 구부리고 쪼그리고 앉으세요. 그대로 왼쪽을 바라본 다음 오른쪽을 바라보세요.
|
||||
등을 앞으로 구부리고 스쿼트를 하듯이 몸을 낮추세요. 그대로 왼쪽을 바라본 다음 오른쪽을 바라보세요.
|
||||
상체를 왼쪽(시계 반대 방향)으로 비틀어서 바닥을 향해 손을 뻗으세요.
|
||||
상체를 오른쪽(시계 방향)으로 비틀어서 바닥을 향해 손을 뻗으세요.
|
||||
훌라후프를 사용하는 것처럼 골반을 원을 그리며 굴리세요.
|
||||
@@ -832,18 +929,56 @@ onboarding-automatic_proportions-verify_results-redo = 다시 기록하기
|
||||
onboarding-automatic_proportions-verify_results-confirm = 정확해요!
|
||||
onboarding-automatic_proportions-done-title = 몸을 측정하고 저장했어요
|
||||
onboarding-automatic_proportions-done-description = 신체 비율 보정이 완료되었어요!
|
||||
onboarding-automatic_proportions-error_modal =
|
||||
<b>경고:</b> 신체 비율을 계산하는 동안 오류가 발생했습니다!
|
||||
<docs>도움말</docs>을 확인하거나 <discord>디스코드</discord> 서버에서 도움을 받으세요 ^_^
|
||||
onboarding-automatic_proportions-error_modal-confirm = 이해했어요!
|
||||
|
||||
## Home
|
||||
|
||||
home-no_trackers = 감지되거나 할당된 트래커가 없어요.
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = 트래커가 아직 켜져 있어요!
|
||||
trackers_still_on-modal-description = 하나 이상의 트래커가 여전히 켜져 있는 것으로 보여요. SlimeVR을 종료할까요?
|
||||
trackers_still_on-modal-confirm = SlimeVR 종료
|
||||
trackers_still_on-modal-cancel = 돌아가기
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = 아직 정렬되지 않은 트래커가 있어서 전체 정렬을 수행해주세요.
|
||||
status_system-StatusTrackerReset = 전체 정렬을 수행해 아직 정렬되지 않은 트래커를 정렬해주세요.
|
||||
status_system-StatusSteamVRDisconnected =
|
||||
{ $type ->
|
||||
[steamvr_feeder] SlimeVR 피더와 통신할 수 없어요.
|
||||
*[other] SlimeVR 드라이버를 통해 SteamVR과 통신할 수 없어요.
|
||||
[steamvr_feeder] SlimeVR 피더와 연결되지 않음
|
||||
*[other] SlimeVR 드라이버가 SteamVR과 연결되지 않음
|
||||
}
|
||||
status_system-StatusTrackerError = { $trackerName } 트래커에 문제가 발생했어요.
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = 열기
|
||||
tray_menu-hide = 숨기기
|
||||
tray_menu-quit = 종료
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = 닫기 버튼이 무엇을 하도록 할까요?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
이 옵션은 닫기 버튼을 누를 때 서버를 종료할지 또는 시스템 트레이로 최소화할지를 결정합니다.
|
||||
|
||||
언제든지 설정의 인터페이스 탭에서 변경하실 수 있어요!
|
||||
tray_or_exit_modal-radio-exit = SlimeVR 종료하기
|
||||
tray_or_exit_modal-radio-tray = 작업 표시줄로 최소화
|
||||
tray_or_exit_modal-submit = 저장
|
||||
tray_or_exit_modal-cancel = 취소
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = 새로운 트래커를 찾았어요!
|
||||
unknown_device-modal-description =
|
||||
<b>{ $deviceID }</b>의 MAC 주소를 가진 새로운 트래커를 발견했어요.
|
||||
SlimeVR에 연결할까요?
|
||||
unknown_device-modal-confirm = 당연하죠!
|
||||
unknown_device-modal-forget = 무시할게요
|
||||
|
||||
@@ -23,6 +23,8 @@ tips-find_tracker = Weet je niet welke tracker welke is? Schud een tracker en he
|
||||
tips-do_not_move_heels = Zorg ervoor dat je hielen niet bewegen tijdens de opname!
|
||||
tips-file_select = Sleep bestanden naar hier om ze te gebruiken of <u>blader</u>.
|
||||
tips-tap_setup = Je kan langzaam 2 keer op je tracker tikken om deze te kiezen in plaats van deze in het menu te selecteren.
|
||||
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.
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -144,6 +146,11 @@ widget-imu_visualizer-rotation_raw = Rauw
|
||||
widget-imu_visualizer-rotation_preview = Preview
|
||||
widget-imu_visualizer-rotation_hide = Verbergen
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Skelet voorbeeld
|
||||
widget-skeleton_visualizer-hide = Verbergen
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = Geen status
|
||||
@@ -152,6 +159,7 @@ tracker-status-error = Fout
|
||||
tracker-status-disconnected = Verbinding verbroken
|
||||
tracker-status-occluded = Verborgen
|
||||
tracker-status-ok = OK
|
||||
tracker-status-timed_out = Timed Out
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -190,6 +198,7 @@ tracker-infos-hardware_rev = Hardware revisie
|
||||
tracker-infos-hardware_identifier = Hardware-id
|
||||
tracker-infos-imu = IMU-sensor
|
||||
tracker-infos-board_type = Mainbord
|
||||
tracker-infos-network_version = Protocol Versie
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -209,6 +218,9 @@ tracker-settings-drift_compensation_section-edit = Laat drift compensatie toe
|
||||
tracker-settings-name_section = Trackernaam
|
||||
tracker-settings-name_section-description = Geef een schattige bijnaam :)
|
||||
tracker-settings-name_section-placeholder = NightyBeast's linkerbeen
|
||||
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 part card info
|
||||
|
||||
@@ -298,10 +310,12 @@ settings-general-steamvr-description =
|
||||
Handig voor games of apps die alleen bepaalde trackers ondersteunen.
|
||||
settings-general-steamvr-trackers-waist = Taille
|
||||
settings-general-steamvr-trackers-chest = Borst
|
||||
settings-general-steamvr-trackers-feet = Voeten
|
||||
settings-general-steamvr-trackers-knees = Knieën
|
||||
settings-general-steamvr-trackers-elbows = Ellebogen
|
||||
settings-general-steamvr-trackers-hands = Handen
|
||||
settings-general-steamvr-trackers-tracker_toggling = Automatische tracker toewijzing
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = Zorgt automatisch voor het in- en uitschakelen van SteamVR-trackers, afhankelijk van je huidige tracker toewijzingen.
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = Automatische tracker toewijzing
|
||||
settings-general-steamvr-trackers-hands-warning = <b>Waarschuwing:</b> hand trackers negeren je controllers. Weet je zeker dat je wilt doorgaan?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = Annuleren
|
||||
settings-general-steamvr-trackers-hands-warning-done = Ja
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -319,6 +333,7 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = Maakt
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Voorspelling
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Verlaagt latentie en maakt bewegingen snappier, maar kan jitter verhogen.
|
||||
settings-general-tracker_mechanics-filtering-amount = Hoeveelheid
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = Yaw reset vertraging (0s schakelt afvlakking uit)
|
||||
settings-general-tracker_mechanics-drift_compensation = Drift compensatie
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
@@ -327,6 +342,8 @@ settings-general-tracker_mechanics-drift_compensation-description =
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Drift compensate
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = Compensatiesterkte
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Gebruik de laatste x resets
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Sla automatische mounting reset kalibratie op
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description = Slaat de automatische mounting reset kalibraties van de trackers op tussen herstarts. Nuttig als je een pak draagt waarbij trackers niet bewegen tussen sessies. <b>Niet aanbevolen voor normale gebruikers!</b>
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -350,10 +367,20 @@ 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 = Schakel Montage Reset voor de voeten in door op je tenen te staan.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Voeten montage reset.
|
||||
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
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Pas de verwachte armhouding aan voor het resetten van de montage.
|
||||
settings-general-fk_settings-arm_fk-back = Achterzijde
|
||||
settings-general-fk_settings-arm_fk-back-description = De standaardmodus, waarbij de bovenarmen naar achteren gaan en de onderarmen naar voren.
|
||||
settings-general-fk_settings-arm_fk-tpose_up = T-pose (omhoog)
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Verwacht je armen langs je zeiden te hangen tijdens een volledige reset, en 90 graden omhoog langs je zeiden tijdens een Montage Reset.
|
||||
settings-general-fk_settings-arm_fk-tpose_down = T-pose (omlaag)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = Verwacht dat je armen 90 graden naar de zijkanten zijn tijdens een Volledige reset, en aan de zijkanten naar beneden tijdens een montage reset.
|
||||
settings-general-fk_settings-arm_fk-forward = Voorwaards
|
||||
settings-general-fk_settings-arm_fk-forward-description = Verwacht dat je armen 90 graden naar voren staan. Handig voor VTubing.
|
||||
settings-general-fk_settings-skeleton_settings-toggles = Skelet schakelaars
|
||||
settings-general-fk_settings-skeleton_settings-description = Schakel skeleton instellingen in of uit. Het is aanbevolen om deze aan te laten.
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine_model = Uitgebreid ruggengraat model
|
||||
@@ -367,6 +394,7 @@ settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs = Bere
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_waist_legs = Bereken heup van taille naar benen
|
||||
settings-general-fk_settings-skeleton_settings-interp_hip_legs = Bereken het gemiddelde van de 'yaw en roll van de heup met die van de benen'
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = Bereken het gemiddelde van de 'yaw en roll van de knie trackers met die van de enkels'
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = Bereken het gemiddelde van de 'yaw en roll van de knie trackers met die van de enkels'
|
||||
settings-general-fk_settings-self_localization-title = Mocap modus
|
||||
settings-general-fk_settings-self_localization-description = Mocap modus staat het skelet model toe om zijn eigen positie te bepalen zonder het gebruik van een headset of andere trackers. Dit vergt wel het gebruik van voet en hoofd trackers, dit is momenteel nog expirimenteel.
|
||||
settings-general-fk_settings-vive_emulation-title = Vive-emulatie
|
||||
@@ -434,6 +462,11 @@ settings-general-interface-feedback_sound = Feedback geluid
|
||||
settings-general-interface-feedback_sound-description = Speelt een geluid telkens de reset wordt uitgevoerd
|
||||
settings-general-interface-feedback_sound-label = Feedback geluid
|
||||
settings-general-interface-feedback_sound-volume = Feedback geluid volume
|
||||
settings-general-interface-connected_trackers_warning = Waarschuwing voor verbonden trackers
|
||||
settings-general-interface-connected_trackers_warning-label = Waarschuwing voor verbonden trackers bij het afsluiten
|
||||
settings-general-interface-use_tray = Minimaliseren naar systeem vak
|
||||
settings-general-interface-use_tray-description = Hiermee kun je het venster sluiten zonder de SlimeVR server te beëindigen, zodat je deze op de achtergrond kunt blijven gebruiken zonder dat de GUI in de weg zit.
|
||||
settings-general-interface-use_tray-label = Minimaliseren naar systeem vak
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -455,6 +488,7 @@ settings-serial-factory_reset-warning-cancel = Annuleren
|
||||
settings-serial-get_infos = Informatie ophalen
|
||||
settings-serial-serial_select = Selecteer een seriële poort
|
||||
settings-serial-auto_dropdown_item = Automatisch
|
||||
settings-serial-get_wifi_scan = WiFi-scan uitvoeren
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -620,8 +654,8 @@ onboarding-done-close = Sluit de gids
|
||||
|
||||
onboarding-connect_tracker-back = Ga terug naar de instellingen voor WiFi-configuratie
|
||||
onboarding-connect_tracker-title = Trackers verbinden
|
||||
onboarding-connect_tracker-description-p0 = Nu het leuke gedeelte, verbind al je trackers!
|
||||
onboarding-connect_tracker-description-p1 = Gebruik een USB-kabel om alle trackers te verbinden die nog niet verbonden zijn.
|
||||
onboarding-connect_tracker-description-p0-v1 = Op naar het leukste gedeelte, trackers verbinden!
|
||||
onboarding-connect_tracker-description-p1-v1 = Sluit elke tracker één voor één aan via een USB poort.
|
||||
onboarding-connect_tracker-issue-serial = Ik heb problemen met verbinden!
|
||||
onboarding-connect_tracker-usb = USB Tracker
|
||||
onboarding-connect_tracker-connection_status-none = Op zoek naar trackers
|
||||
@@ -681,6 +715,7 @@ onboarding-assign_trackers-assigned =
|
||||
} toegewezen
|
||||
onboarding-assign_trackers-advanced = Geavanceerde toewijzingslocaties weergeven
|
||||
onboarding-assign_trackers-next = Ik heb alle trackers toegewezen
|
||||
onboarding-assign_trackers-mirror_view = Gespiegelde weergave
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -763,6 +798,10 @@ onboarding-choose_mounting-manual_mounting = Handmatige bevestiging
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Aanbevolen
|
||||
onboarding-choose_mounting-manual_mounting-description = Hiermee kunt u de montagerichting handmatig kiezen voor elke tracker
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title = Ben je zeker dat je de automatische kalibratie wilt uitvoeren?
|
||||
onboarding-choose_mounting-manual_modal-confirm = Ik weet zeker wat ik doe
|
||||
onboarding-choose_mounting-manual_modal-cancel = Annuleren
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -797,13 +836,16 @@ onboarding-automatic_mounting-put_trackers_on-next = Ik heb al mijn trackers aan
|
||||
|
||||
onboarding-choose_proportions = Welke verhoudingskalibratiemethode moet worden gebruikt?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description = Lichaamsverhoudingen worden gebruikt om de maten van je lichaam te kennen. Die zijn nodig om de posities van de trackers te berekenen. Wanneer de verhoudingen van uw lichaam niet overeenkomen met de opgeslagen verhoudingen, zal je trackingprecisie slechter zijn en zal je dingen opmerken zoals schaatsen of glijden, of je lichaam past niet goed bij je avatar.
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
Lichaamsverhoudingen worden gebruikt om de afmetingen van je lichaam te bepalen. Deze informatie is nodig om de posities van de trackers te berekenen.
|
||||
Als de verhoudingen van je lichaam niet overeenkomen met de opgeslagen waarden, zal de tracking-precisie slechter zijn. Je kunt dan last krijgen van ongemakkelijke effecten zoals schuiven of glijden, of kan je lichaam niet goed overeenkomen met je avatar in VR.
|
||||
<b>Je hoeft je lichaam maar één keer te meten!</b> Tenzij de metingen onjuist zijn of je lichaam is veranderd, hoef je dit niet opnieuw te doen.
|
||||
onboarding-choose_proportions-auto_proportions = Automatische verhoudingen
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Aanbevolen
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv2 =
|
||||
Dit zal je proporties gokken met jouw bewegingen op basis van een opname, waarna deze door een algoritme gehaald worden.
|
||||
<b>Hiervoor moet een HMD verbonden zijn aan SlimeVR!</b>
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
Deze functie zal je lichaamsverhoudingen schatten door een sample van je bewegingen op te nemen en deze door een algoritme te laten analyseren.
|
||||
<b>Hiervoor moet je headset (HMD) verbonden zijn met SlimeVR en op je hoofd zitten!</b>
|
||||
onboarding-choose_proportions-manual_proportions = Handmatige lichaamsverhoudingen
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = Voor kleine details
|
||||
@@ -833,14 +875,6 @@ onboarding-automatic_proportions-put_trackers_on-title = Doe je trackers aan
|
||||
onboarding-automatic_proportions-put_trackers_on-description = Om je verhoudingen 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_proportions-put_trackers_on-next = Ik heb al mijn trackers aan
|
||||
onboarding-automatic_proportions-requirements-title = Vereisten
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
Je hebt in ieder geval genoeg trackers om je voeten te volgen (over het algemeen 5 trackers).
|
||||
Je hebt je trackers en headset op.
|
||||
Je draagt je trackers en headset.
|
||||
Je trackers en headset zijn verbonden met de SlimeVR server.
|
||||
Je trackers en headset werken goed binnen de SlimeVR server.
|
||||
Je headset rapporteert positiegegevens aan de SlimeVR-server (dit betekent over het algemeen dat SteamVR wordt uitgevoerd en verbonden met SlimeVR met behulp van SlimeVR's SteamVR-stuurprogramma).
|
||||
onboarding-automatic_proportions-requirements-next = Ik heb de vereisten gelezen
|
||||
onboarding-automatic_proportions-check_height-title = Controleer je lengte
|
||||
onboarding-automatic_proportions-check_height-description =
|
||||
@@ -894,6 +928,15 @@ onboarding-automatic_proportions-error_modal-confirm = Begrepen!
|
||||
|
||||
home-no_trackers = Geen trackers gedetecteerd of toegewezen
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = Trackers staan nog steeds aan
|
||||
trackers_still_on-modal-description =
|
||||
Een of meer trackers staan nog aan.
|
||||
Wil je SlimeVR toch afsluiten?
|
||||
trackers_still_on-modal-confirm = SlimeVR afsluiten
|
||||
trackers_still_on-modal-cancel = Wacht even...
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = Het wordt aanbevolen om een volledige reset uit te voeren omdat een of meer trackers niet zijn aangepast.
|
||||
@@ -903,3 +946,29 @@ status_system-StatusSteamVRDisconnected =
|
||||
*[other] Momenteel niet verbonden naar SteamVR via de SlimeVR driver.
|
||||
}
|
||||
status_system-StatusTrackerError = De { $trackerName } tracker heeft een error.
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = Weergeven
|
||||
tray_menu-hide = Verbergen
|
||||
tray_menu-quit = Beëindigen
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = Wat is de actie van de sluitknop?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
Hiermee kun je kiezen wat er gebeurt als je op de sluitknop klikt: het programma afsluiten of minimaliseren naar het systeemvak.
|
||||
|
||||
Deze instelling kun je later altijd nog wijzigen in de interface instellingen!
|
||||
tray_or_exit_modal-radio-exit = Afsluiten bij sluiten
|
||||
tray_or_exit_modal-radio-tray = Minimaliseren naar systeemvak
|
||||
tray_or_exit_modal-submit = Opslaan
|
||||
tray_or_exit_modal-cancel = Annuleren
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = Er is een nieuwe tracker gevonden!
|
||||
unknown_device-modal-description = Er is een nieuwe tracker gevonden met MAC-adres <b>{ $deviceId }</b>. Wil je deze verbinden met SlimeVR?
|
||||
unknown_device-modal-confirm = Tuurlijk!
|
||||
unknown_device-modal-forget = Negeer het
|
||||
|
||||
@@ -19,77 +19,79 @@ version_update-close = Zamknij
|
||||
|
||||
## Tips
|
||||
|
||||
tips-find_tracker = Nie wiesz który tracker to który? Obracaj Trackerem , podczas obracania będzie sie on podświetlał w serwerze.
|
||||
tips-do_not_move_heels = Upewnij się aby pięty pozostały w bezruchu podczas nagrywania.
|
||||
tips-find_tracker = Nie wiesz który tracker to który? Poruszaj trackerem, a będzie sie on podświetlał na serwerze.
|
||||
tips-do_not_move_heels = Upewnij się, aby pięty pozostały w bezruchu podczas nagrywania.
|
||||
tips-file_select = Przeciągnij i upuść pliki, których chcesz użyć, lub <u>przeglądaj</u>.
|
||||
tips-tap_setup = Możesz powoli stuknąć 2 razy tracker, aby go wybrać, zamiast wybierać go z menu.
|
||||
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.
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = Nie Przypisano
|
||||
body_part-NONE = Nieprzypisany
|
||||
body_part-HEAD = Głowa
|
||||
body_part-NECK = Szyja
|
||||
body_part-RIGHT_SHOULDER = Prawe Ramie
|
||||
body_part-RIGHT_UPPER_ARM = Prawy Biceps
|
||||
body_part-RIGHT_LOWER_ARM = Prawe PrzedRamie
|
||||
body_part-RIGHT_HAND = Prawa Dłoń
|
||||
body_part-RIGHT_UPPER_LEG = Prawe Udo
|
||||
body_part-RIGHT_LOWER_LEG = Prawe Podudzie
|
||||
body_part-RIGHT_FOOT = Prawa Stopa
|
||||
body_part-RIGHT_SHOULDER = Prawe ramię
|
||||
body_part-RIGHT_UPPER_ARM = Prawy biceps
|
||||
body_part-RIGHT_LOWER_ARM = Prawe przedramię
|
||||
body_part-RIGHT_HAND = Prawa dłoń
|
||||
body_part-RIGHT_UPPER_LEG = Prawe udo
|
||||
body_part-RIGHT_LOWER_LEG = Prawa kostka
|
||||
body_part-RIGHT_FOOT = Prawa stopa
|
||||
body_part-UPPER_CHEST = Górna część klatki piersiowej
|
||||
body_part-CHEST = Klatka Piersiowa
|
||||
body_part-CHEST = Klatka piersiowa
|
||||
body_part-WAIST = Talia
|
||||
body_part-HIP = Biodra
|
||||
body_part-LEFT_SHOULDER = Lewe Ramie
|
||||
body_part-LEFT_UPPER_ARM = Lewy Biceps
|
||||
body_part-LEFT_LOWER_ARM = Lewe PrzedRamie
|
||||
body_part-LEFT_HAND = Lewa Dłoń
|
||||
body_part-LEFT_UPPER_LEG = Lewe Udo
|
||||
body_part-LEFT_LOWER_LEG = Lewe Podudzie
|
||||
body_part-LEFT_FOOT = Lewa Stopa
|
||||
body_part-LEFT_SHOULDER = Lewe ramię
|
||||
body_part-LEFT_UPPER_ARM = Lewy biceps
|
||||
body_part-LEFT_LOWER_ARM = Lewe przedramię
|
||||
body_part-LEFT_HAND = Lewa dłoń
|
||||
body_part-LEFT_UPPER_LEG = Lewe udo
|
||||
body_part-LEFT_LOWER_LEG = Lewe podudzie
|
||||
body_part-LEFT_FOOT = Lewa stopa
|
||||
|
||||
## Proportions
|
||||
|
||||
skeleton_bone-NONE = Brak
|
||||
skeleton_bone-HEAD = Przesunięcie Głowy
|
||||
skeleton_bone-NECK = Długość Szyi
|
||||
skeleton_bone-HEAD = Przesunięcie głowy
|
||||
skeleton_bone-NECK = Długość szyi
|
||||
skeleton_bone-torso_group = Długość torsu
|
||||
skeleton_bone-UPPER_CHEST = Górna długość klatki piersiowej
|
||||
skeleton_bone-CHEST_OFFSET = Przesunięcie Klatki Piersiowej
|
||||
skeleton_bone-CHEST = Długość Klatki Piersiowej
|
||||
skeleton_bone-WAIST = Długość Talii
|
||||
skeleton_bone-HIP = Długość Bioder
|
||||
skeleton_bone-HIP_OFFSET = Przesunięcie Bioder
|
||||
skeleton_bone-HIPS_WIDTH = Szerokość Bioder
|
||||
skeleton_bone-UPPER_CHEST = Długość górnej części klatki piersiowej
|
||||
skeleton_bone-CHEST_OFFSET = Przesunięcie klatki piersiowej
|
||||
skeleton_bone-CHEST = Długość klatki piersiowej
|
||||
skeleton_bone-WAIST = Długość talii
|
||||
skeleton_bone-HIP = Długość bioder
|
||||
skeleton_bone-HIP_OFFSET = Przesunięcie bioder
|
||||
skeleton_bone-HIPS_WIDTH = Szerokość bioder
|
||||
skeleton_bone-leg_group = Długość nóg
|
||||
skeleton_bone-UPPER_LEG = Długość Górnej Części Nogi
|
||||
skeleton_bone-LOWER_LEG = Długość Dolnej Części Nogi
|
||||
skeleton_bone-FOOT_LENGTH = Długość Stopy
|
||||
skeleton_bone-FOOT_SHIFT = Przesunięcie Stopy
|
||||
skeleton_bone-SKELETON_OFFSET = Przesunięcie Szkieletu
|
||||
skeleton_bone-SHOULDERS_DISTANCE = Odległość Ramion
|
||||
skeleton_bone-SHOULDERS_WIDTH = Szerokość Ramion
|
||||
skeleton_bone-UPPER_LEG = Długość górnej części nogi
|
||||
skeleton_bone-LOWER_LEG = Długość dolnej części nogi
|
||||
skeleton_bone-FOOT_LENGTH = Długość stopy
|
||||
skeleton_bone-FOOT_SHIFT = Przesunięcie stopy
|
||||
skeleton_bone-SKELETON_OFFSET = Przesunięcie szkieletu
|
||||
skeleton_bone-SHOULDERS_DISTANCE = Odległość ramion
|
||||
skeleton_bone-SHOULDERS_WIDTH = Szerokość ramion
|
||||
skeleton_bone-arm_group = Długość ramienia
|
||||
skeleton_bone-UPPER_ARM = Długość Bicepsa
|
||||
skeleton_bone-LOWER_ARM = Długość PrzedRamienia
|
||||
skeleton_bone-HAND_Y = Odległość ręki Y
|
||||
skeleton_bone-HAND_Z = Odległość ręki Z
|
||||
skeleton_bone-ELBOW_OFFSET = Przesunięcie Łokcia
|
||||
skeleton_bone-UPPER_ARM = Długość bicepsa
|
||||
skeleton_bone-LOWER_ARM = Długość przedramienia
|
||||
skeleton_bone-HAND_Y = Odległość dłoni w osi Y
|
||||
skeleton_bone-HAND_Z = Odległość dłoni w osi Z
|
||||
skeleton_bone-ELBOW_OFFSET = Przesunięcie łokcia
|
||||
|
||||
## Tracker reset buttons
|
||||
|
||||
reset-reset_all = Zresetuj wszystkie wymiary
|
||||
reset-full = Reset
|
||||
reset-mounting = Zresetuj Położenie
|
||||
reset-yaw = Reset Odchylenia
|
||||
reset-full = Pełny Reset
|
||||
reset-mounting = Zresetuj położenie
|
||||
reset-yaw = Reset odchylenia
|
||||
|
||||
## Serial detection stuff
|
||||
|
||||
serial_detection-new_device-p0 = Wykryto Nowe Urządzenie.
|
||||
serial_detection-new_device-p0 = Wykryto nowe urządzenie!
|
||||
serial_detection-new_device-p1 = Wprowadź dane Wi-Fi!
|
||||
serial_detection-new_device-p2 = Wybierz co chcesz z nim zrobić.
|
||||
serial_detection-open_wifi = Połącz z Wi-Fi
|
||||
serial_detection-open_serial = Otwórz Konsole
|
||||
serial_detection-open_serial = Otwórz Konsolę
|
||||
serial_detection-submit = Potwierdź!
|
||||
serial_detection-close = Zamknij
|
||||
|
||||
@@ -99,7 +101,7 @@ navbar-home = Strona Główna
|
||||
navbar-body_proportions = Proporcje Ciała
|
||||
navbar-trackers_assign = Przydzielenie Trackerów
|
||||
navbar-mounting = Kalibracja Pozycji
|
||||
navbar-onboarding = Wstępna Konfiguracja
|
||||
navbar-onboarding = Wstępna konfiguracja
|
||||
navbar-settings = Ustawienia
|
||||
|
||||
## Biovision hierarchy recording
|
||||
@@ -114,9 +116,9 @@ tracking-paused = Wznów śledzenie
|
||||
|
||||
## Widget: Overlay settings
|
||||
|
||||
widget-overlay = Overlay
|
||||
widget-overlay-is_visible_label = Pokaż Overlay w SteamVR
|
||||
widget-overlay-is_mirrored_label = Pokaż Overlay jako Lustro
|
||||
widget-overlay = Nakładka
|
||||
widget-overlay-is_visible_label = Wyświetlaj nakładkę w SteamVR
|
||||
widget-overlay-is_mirrored_label = Wyświetlaj nakładkę w lustrzanym odbiciu
|
||||
|
||||
## Widget: Drift compensation
|
||||
|
||||
@@ -128,11 +130,11 @@ widget-clear_mounting = Wyczyść resetowanie montażu
|
||||
|
||||
## Widget: Developer settings
|
||||
|
||||
widget-developer_mode = Tryb Dewelopera
|
||||
widget-developer_mode = Tryb deweloperski
|
||||
widget-developer_mode-high_contrast = Wysoki kontrast
|
||||
widget-developer_mode-precise_rotation = Precise rotation
|
||||
widget-developer_mode-precise_rotation = Wyświetlanie dokładniejszej rotacji
|
||||
widget-developer_mode-fast_data_feed = Szybkie przesyłanie danych
|
||||
widget-developer_mode-filter_slimes_and_hmd = Filtruj slimy i HMD
|
||||
widget-developer_mode-filter_slimes_and_hmd = Filtruj Slime i HMD
|
||||
widget-developer_mode-sort_by_name = Sortuj według nazwy
|
||||
widget-developer_mode-raw_slime_rotation = Surowa rotacja
|
||||
widget-developer_mode-more_info = Więcej info
|
||||
@@ -144,14 +146,20 @@ widget-imu_visualizer-rotation_raw = Raw
|
||||
widget-imu_visualizer-rotation_preview = Podgląd
|
||||
widget-imu_visualizer-rotation_hide = Ukryj
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Podgląd szkieletu
|
||||
widget-skeleton_visualizer-hide = Ukryj
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = Brak Statusu
|
||||
tracker-status-busy = Zajęty
|
||||
tracker-status-error = Error
|
||||
tracker-status-error = Błąd
|
||||
tracker-status-disconnected = Rozłączono
|
||||
tracker-status-occluded = Zablokowany
|
||||
tracker-status-ok = Połączono
|
||||
tracker-status-occluded = Zasłonięty
|
||||
tracker-status-ok = OK
|
||||
tracker-status-timed_out = Wygasły
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -171,8 +179,8 @@ tracker-table-column-url = URL
|
||||
tracker-rotation-front = Przód
|
||||
tracker-rotation-front_left = Przedni lewy
|
||||
tracker-rotation-front_right = Przedni prawy
|
||||
tracker-rotation-left = Lewa
|
||||
tracker-rotation-right = Prawa
|
||||
tracker-rotation-left = Lewy
|
||||
tracker-rotation-right = Prawy
|
||||
tracker-rotation-back = Tył
|
||||
tracker-rotation-back_left = Lewy tył
|
||||
tracker-rotation-back_right = Prawy tył
|
||||
@@ -185,39 +193,43 @@ tracker-infos-manufacturer = Producent
|
||||
tracker-infos-display_name = Wyświetlana Nazwa
|
||||
tracker-infos-custom_name = Niestandardowa Nazwa
|
||||
tracker-infos-url = Tracker URL
|
||||
tracker-infos-version = Wersja Oprogramowania
|
||||
tracker-infos-hardware_rev = Wersja Sprzętu
|
||||
tracker-infos-version = Wersja oprogramowania
|
||||
tracker-infos-hardware_rev = Rewizja sprzętu
|
||||
tracker-infos-hardware_identifier = Identyfikator sprzętu
|
||||
tracker-infos-imu = Czujnik IMU
|
||||
tracker-infos-board_type = Płyta główna
|
||||
tracker-infos-network_version = Wersja protokołu
|
||||
|
||||
## Tracker settings
|
||||
|
||||
tracker-settings-back = Wróć do listy trackerów
|
||||
tracker-settings-title = Ustawienia Trackerów
|
||||
tracker-settings-assignment_section = Przydzielanie
|
||||
tracker-settings-assignment_section-description = Do jakiej części ciała jest przydzielony tracker.
|
||||
tracker-settings-assignment_section-description = Do jakiej części ciała przydzielony jest tracker.
|
||||
tracker-settings-assignment_section-edit = Edytuj
|
||||
tracker-settings-mounting_section = Położenie Trackera
|
||||
tracker-settings-mounting_section-description = Gdzie jest Tracker zamontowany?
|
||||
tracker-settings-mounting_section-description = Gdzie zamontowany jest tracker?
|
||||
tracker-settings-mounting_section-edit = Edytuj
|
||||
tracker-settings-drift_compensation_section = Allow drift compensation
|
||||
tracker-settings-drift_compensation_section-description = Czy ten tracker powinien kompensować dryf, gdy kompensacja dryfu jest włączona?
|
||||
tracker-settings-drift_compensation_section-edit = Allow drift compensation
|
||||
tracker-settings-drift_compensation_section = Pozwalaj na kompensację dryfu
|
||||
tracker-settings-drift_compensation_section-description = Czy ten tracker powinien być korygowany, gdy kompensacja dryfu jest włączona?
|
||||
tracker-settings-drift_compensation_section-edit = Pozwalaj na kompensację dryfu
|
||||
# The .<name> means it's an attribute and it's related to the top key.
|
||||
# In this case that is the settings for the assignment section.
|
||||
tracker-settings-name_section = Nazwa Trackera
|
||||
tracker-settings-name_section-description = Daj mu słodką nazwę :)
|
||||
tracker-settings-name_section-placeholder = Lewa noga Yexo
|
||||
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 part card info
|
||||
|
||||
tracker-part_card-no_name = Brak Nazwy
|
||||
tracker-part_card-no_name = Bez nazwy
|
||||
tracker-part_card-unassigned = Nieprzydzielony
|
||||
|
||||
## Body assignment menu
|
||||
|
||||
body_assignment_menu = Gdzie chcesz żeby ten tracker był?
|
||||
body_assignment_menu = Gdzie chcesz przypisać ten tracker?
|
||||
body_assignment_menu-description = Wybierz miejsce gdzie tracker będzie przydzielony. Alternatywnie możesz ustawić wszystkie na raz.
|
||||
body_assignment_menu-show_advanced_locations = Pokaż zaawansowane położenia
|
||||
body_assignment_menu-manage_trackers = Zarządzaj wszystkimi trackerami
|
||||
@@ -298,10 +310,22 @@ settings-general-steamvr-description =
|
||||
Przydatne jeżeli chcesz więcej kontroli nad SlimeVR.
|
||||
settings-general-steamvr-trackers-waist = Talia
|
||||
settings-general-steamvr-trackers-chest = Klatka Piersiowa
|
||||
settings-general-steamvr-trackers-feet = Stopy
|
||||
settings-general-steamvr-trackers-knees = Kolana
|
||||
settings-general-steamvr-trackers-elbows = Łokcie
|
||||
settings-general-steamvr-trackers-hands = Ręce
|
||||
settings-general-steamvr-trackers-left_foot = Lewa stopa
|
||||
settings-general-steamvr-trackers-right_foot = Prawa stopa
|
||||
settings-general-steamvr-trackers-left_knee = Lewe kolano
|
||||
settings-general-steamvr-trackers-right_knee = Prawe kolano
|
||||
settings-general-steamvr-trackers-left_elbow = Lewy łokieć
|
||||
settings-general-steamvr-trackers-right_elbow = Prawy łokieć
|
||||
settings-general-steamvr-trackers-left_hand = Lewa dłoń
|
||||
settings-general-steamvr-trackers-right_hand = Prawa dłoń
|
||||
settings-general-steamvr-trackers-tracker_toggling = Automatyczne przypisanie wirtualnych trackerów
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = Automatycznie obsługuje włączanie i wyłączanie wirtualnych trackerów SteamVR w zależności od bieżących przypisań fizycznych trackerów
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = Automatyczne przypisanie wirtualnych trackerów SteamVR
|
||||
settings-general-steamvr-trackers-hands-warning =
|
||||
<b>Ostrzeżenie:</b> trackery na dłoniach zastąpią kontrolery.¶
|
||||
Nie jest to typowa konfiguracja. Czy kontynuować?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = Anuluj
|
||||
settings-general-steamvr-trackers-hands-warning-done = Tak
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -313,12 +337,13 @@ settings-general-tracker_mechanics-filtering-description =
|
||||
Przewidywanie przewiduje ruchy a Wygładzanie stara się wygładzić ruchy.
|
||||
settings-general-tracker_mechanics-filtering-type = Filtry
|
||||
settings-general-tracker_mechanics-filtering-type-none = Brak Filtrów
|
||||
settings-general-tracker_mechanics-filtering-type-none-description = Używa rotacji takimi jakimi są.
|
||||
settings-general-tracker_mechanics-filtering-type-none-description = Używa rotacji w niezmienionej formie. Wszystkie filtry są wyłączone.
|
||||
settings-general-tracker_mechanics-filtering-type-smoothing = Wygładzanie
|
||||
settings-general-tracker_mechanics-filtering-type-smoothing-description = Wygładza ruchy lecz dodaje trochę opóźnienia.
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Przewidywanie
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Zmniejsza opóźnienie i robi ruchy trochę ostrzejszymi, ale może dodać trochę drgań.
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Zmniejsza opóźnienie i zwiększa dynamikę ruchów, ale może dodać trochę drgań.
|
||||
settings-general-tracker_mechanics-filtering-amount = Ilość
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = Czas wygładzania resetu odchylenia (0s wyłącza wygładzanie)
|
||||
settings-general-tracker_mechanics-drift_compensation = Kompensacja dryfu
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
@@ -327,6 +352,11 @@ settings-general-tracker_mechanics-drift_compensation-description =
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Kompensacja dryfu
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = Compensation amount
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Użyj maksymalnie x ostatnich resetów
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Zapisz pozycję trackerów na ciele
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
Zapisuje kalibrację pozycji trackerów na ciele pomiędzy ponownymi uruchomieniami. Użyteczne¶
|
||||
podczas noszenia stroju, w którym trackery przymocowane sa na stałe. <b>Niezalecane dla zwykłych użytkowników z odpinanymi trackerami!</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Zapisz pozycję trackerów
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -342,7 +372,7 @@ settings-general-fk_settings-leg_tweak-floor_clip = Klip podłogowy
|
||||
settings-general-fk_settings-leg_tweak-skating_correction = Korekta jazdy na łyżwach
|
||||
settings-general-fk_settings-leg_tweak-toe_snap = Pstryknięcie palcem
|
||||
settings-general-fk_settings-leg_tweak-foot_plant = Korekta stopy
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-amount = Skating correction strength
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-amount = Siła korekcji efektu jazdy na łyżwach
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-description = Korekta jazdy na łyżwach koryguje jazdę na łyżwach, ale może zmniejszyć dokładność niektórych wzorców ruchu. Włączając tę opcję, pamiętaj o pełnym zresetowaniu i ponownej kalibracji w grze.
|
||||
settings-general-fk_settings-leg_tweak-floor_clip-description = Floor-clip może zmniejszyć lub nawet wyeliminować przecinanie podłogi. Włączając tę opcję, pamiętaj o pełnym zresetowaniu i ponownej kalibracji w grze.
|
||||
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.
|
||||
@@ -357,7 +387,7 @@ settings-general-fk_settings-arm_fk-reset_mode-description = Zmień pozycję ram
|
||||
settings-general-fk_settings-arm_fk-back = Wstecz
|
||||
settings-general-fk_settings-arm_fk-back-description = Tryb domyślny, w którym górne ramiona cofają się, a dolne ramiona przesuwają się do przodu.
|
||||
settings-general-fk_settings-arm_fk-tpose_up = T-pose (w górę)
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Oczekuje, że podczas pełnego resetu twoje ramiona będą opuszczone na boki w 90 stopni w górę podczas resetu montażowego.
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Oczekuje, że twoje ręcę będą opuszczone podczas pelnego resetu i wystawione pod kątem 90 stopni na boki podczas resetu montażu.
|
||||
settings-general-fk_settings-arm_fk-tpose_down = T-pose (w dół)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = Oczekuje, że Twoje ramiona będą ustawione pod kątem w 90 stopni na boki podczas Pełnego Resetu i w dół po bokach podczas Resetu Montażowego.
|
||||
settings-general-fk_settings-arm_fk-forward = Do przodu
|
||||
@@ -416,7 +446,7 @@ settings-general-gesture_control-mountingResetDelay = Opóźnienie resetowania p
|
||||
settings-general-gesture_control-mountingResetTaps = Stuknięcie do resetowania położenia
|
||||
# The number of trackers that can have higher acceleration before a tap is rejected
|
||||
settings-general-gesture_control-numberTrackersOverThreshold = Trackery ponad progiem
|
||||
settings-general-gesture_control-numberTrackersOverThreshold-description = Zwiększ tę wartość, jeśli wykrywanie dotknięcia nie działa. Nie zwiększaj go ponad to, co jest potrzebne, aby wykrywanie dotknięcia działało, ponieważ spowoduje to fałszywe alarmy
|
||||
settings-general-gesture_control-numberTrackersOverThreshold-description = Zwiększ tę wartość, jeśli wykrywanie stukniecia nie działa. Nie zwiększaj go ponad to, co konieczne, ponieważ wygeneruje to fałszywe stuknięcia.
|
||||
|
||||
## Appearance settings
|
||||
|
||||
@@ -441,12 +471,18 @@ settings-interface-appearance-font_size-description = Wpływa to na rozmiar czci
|
||||
|
||||
settings-interface-notifications = Powiadomienia
|
||||
settings-general-interface-serial_detection = Wykrywanie urządzeń
|
||||
settings-general-interface-serial_detection-description = Ta opcja daje powiadomienia jeżeli serwer wykryje urządzenie które może być trackerem
|
||||
settings-general-interface-serial_detection-description = Ta opcja otworzy okienko, jeżeli serwer wykryje podłaczenie urządzenia, które może być trackerem.
|
||||
settings-general-interface-serial_detection-label = Wykrywanie urządzeń
|
||||
settings-general-interface-feedback_sound = Dźwięk Informacji
|
||||
settings-general-interface-feedback_sound = Dźwięk zwrotny
|
||||
settings-general-interface-feedback_sound-description = Ta opcja odtworzy dźwięk, gdy reset zostanie uruchomiony
|
||||
settings-general-interface-feedback_sound-label = Dźwięk Informacji
|
||||
settings-general-interface-feedback_sound-volume = Poziom głośności sprzężenia zwrotnego
|
||||
settings-general-interface-connected_trackers_warning = Ostrzeżenie o podłączonych trackerach
|
||||
settings-general-interface-connected_trackers_warning-description = Ta opcja wyświetli wyskakujące okienko za każdym razem, gdy spróbujesz wyjść ze SlimeVR, mając jeden lub więcej podłączonych trackerów. Przypomina o wyłączeniu trackerów, gdy skończysz, aby wydłużyć żywotność baterii.
|
||||
settings-general-interface-connected_trackers_warning-label = Ostrzeżenie o podłączonych trackerach przy wyjściu
|
||||
settings-general-interface-use_tray = Minimalizuj do zasobnika systemowego
|
||||
settings-general-interface-use_tray-description = Pozwala zamknąć okno bez wyłączania serwera SlimeVR, aby używać trackerów bez interfejsu graficznego.
|
||||
settings-general-interface-use_tray-label = Minimalizuj do zasobnika systemowego
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -468,6 +504,7 @@ settings-serial-factory_reset-warning-cancel = Anuluj
|
||||
settings-serial-get_infos = Uzyskaj informacje
|
||||
settings-serial-serial_select = Wybierz port szeregowy
|
||||
settings-serial-auto_dropdown_item = Auto
|
||||
settings-serial-get_wifi_scan = Skanuj sieci WiFi
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -485,11 +522,11 @@ settings-osc-router-network-description =
|
||||
Ustaw porty do odbierania i wysyłania danych.
|
||||
Mogą to być takie same porty, jak inne porty używane na serwerze SlimeVR.
|
||||
settings-osc-router-network-port_in =
|
||||
.label = Port In
|
||||
.placeholder = Port in (default: 9002)
|
||||
.label = Port wejściowy
|
||||
.placeholder = Port wejściowy (domyślnie: 9002)
|
||||
settings-osc-router-network-port_out =
|
||||
.label = Port Out
|
||||
.placeholder = Port out (default: 9000)
|
||||
.label = Port wyjściowy
|
||||
.placeholder = Port wyjściowy (domyślnie: 9000)
|
||||
settings-osc-router-network-address = Adres sieciowy
|
||||
settings-osc-router-network-address-description = Ustaw adres, na który mają być wysyłane dane.
|
||||
settings-osc-router-network-address-placeholder = IPV4 address
|
||||
@@ -514,7 +551,7 @@ settings-osc-vrchat-network-port_out =
|
||||
.placeholder = Port out (default: 9000)
|
||||
settings-osc-vrchat-network-address = Adres sieciowy
|
||||
settings-osc-vrchat-network-address-description = Wybierz adres, na który chcesz wysłać dane do VRChat (sprawdź ustawienia Wi-Fi na swoim urządzeniu).
|
||||
settings-osc-vrchat-network-address-placeholder = VRChat ip address
|
||||
settings-osc-vrchat-network-address-placeholder = Adres IP VRChata
|
||||
settings-osc-vrchat-network-trackers = Trackers
|
||||
settings-osc-vrchat-network-trackers-description = Przełącz wysyłanie określonych trackerów przez OSC.
|
||||
settings-osc-vrchat-network-trackers-chest = Klatka piersiowa
|
||||
@@ -614,7 +651,7 @@ onboarding-reset_tutorial-2 =
|
||||
## Setup start
|
||||
|
||||
onboarding-home = Witamy w SlimeVR
|
||||
onboarding-home-start = Zaczynajmny!
|
||||
onboarding-home-start = Zaczynajmy!
|
||||
|
||||
## Enter VR part of setup
|
||||
|
||||
@@ -633,8 +670,8 @@ onboarding-done-close = Zamknij Poradnik
|
||||
|
||||
onboarding-connect_tracker-back = Cofnij się do ustawień Wi-Fi
|
||||
onboarding-connect_tracker-title = Połącz trackery
|
||||
onboarding-connect_tracker-description-p0 = Teraz czas na zabawę, połączenie wszystkich trackerów!
|
||||
onboarding-connect_tracker-description-p1 = Po prostu połącz wszystkie dotychczas nie połączone trackery za pomocą USB
|
||||
onboarding-connect_tracker-description-p0-v1 = A teraz czas na najfajniejszą część: łączenie trackerów!
|
||||
onboarding-connect_tracker-description-p1-v1 = Podłącz każdy tracker pojedynczo przez port USB.
|
||||
onboarding-connect_tracker-issue-serial = Mam problemy z połączeniem!
|
||||
onboarding-connect_tracker-usb = USB Tracker
|
||||
onboarding-connect_tracker-connection_status-none = Szukanie Trackerów
|
||||
@@ -698,6 +735,7 @@ onboarding-assign_trackers-assigned =
|
||||
}
|
||||
onboarding-assign_trackers-advanced = Pokaż zaawansowane ustawienia pozycji
|
||||
onboarding-assign_trackers-next = Przydzieliłem już wszystkie trackery
|
||||
onboarding-assign_trackers-mirror_view = Widok lustrzany
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -780,6 +818,13 @@ onboarding-choose_mounting-manual_mounting = Montaż ręczny
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Zalecany
|
||||
onboarding-choose_mounting-manual_mounting-description = Umożliwi to ręczne wybranie kierunku montażu dla każdego trackera
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title =
|
||||
Czy na pewno chcesz to zrobić
|
||||
automatyczna kalibracja montażu?
|
||||
onboarding-choose_mounting-manual_modal-description = <b> Ręczna kalibracja montażu jest zalecana dla nowych użytkowników </b> , ponieważ prawidłowe ustawienie pozycji automatycznej kalibracji montażu może być trudne i może wymagać pewnej praktyki.
|
||||
onboarding-choose_mounting-manual_modal-confirm = Jestem pewien tego, co robię
|
||||
onboarding-choose_mounting-manual_modal-cancel = Anuluj
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -801,29 +846,30 @@ onboarding-automatic_mounting-done-title = Rotacja trackerów została skalibrow
|
||||
onboarding-automatic_mounting-done-description = Kalibracja skończona!
|
||||
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łów pochylony do przodu z wygiętymi rękami.
|
||||
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-preparation-title = Przygotowania
|
||||
onboarding-automatic_mounting-preparation-step-0 = 1. Stań prosto z rękami wyciągniętymi na bok.
|
||||
onboarding-automatic_mounting-preparation-step-1 = 2. Naciśnij "Reset" i poczekaj 3 sekundy zanim trackery się zresetują.
|
||||
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 przed chwilą przypisałeś. Załóż wszystkie trackery, będziesz widział który to który na postaci po prawej.
|
||||
onboarding-automatic_mounting-put_trackers_on-next = Mam wszystkie trackery założone
|
||||
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
|
||||
|
||||
## Tracker proportions method choose
|
||||
|
||||
onboarding-choose_proportions = Jakiej metody kalibracji proporcji użyć?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description =
|
||||
Proporcje ciała służą do poznania wymiarów twojego ciała. Są wymagane do obliczenia pozycji trackerów.
|
||||
Kiedy proporcje twojego ciała nie odpowiadają zapisanym, precyzja śledzenia będzie gorsza i zauważysz takie rzeczy, jak jazda na łyżwach lub ślizganie się, lub twoje ciało nie pasuje dobrze do twojego awatara.
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
Proporcje ciała służą do określenia wymiarów Twojego ciała. Są niezbędne do obliczenia właściwej pozycji trackerów.¶
|
||||
Gdy proporcje Twojego ciała nie będą odpowiadać zapisanym, Twoja precyzja śledzenia będzie gorsza i zauważysz takie problemy jak niedopasowanie awatara do Twojego ciała, efekt jazdy na łyżwach i ślizgania się.¶
|
||||
<b>Wystarczy zmierzyć swoje ciało tylko raz!</b> O ile proporcje są poprawne i Twoje ciało się nie zmieniło, nie musisz powtarzać żadnych pomiarów.
|
||||
onboarding-choose_proportions-auto_proportions = Proporcje automatyczne
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Zalecana
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv2 =
|
||||
To odgadnie twoje proporcje, rejestrując próbkę twoich ruchów i przepuszczając ją przez algorytm.
|
||||
|
||||
<b>Wymaga podłączenia HMD do SlimeVR!</b>
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
Spowoduje to estymację Twoich proporcji poprzez zarejestrowanie nagrania Twoich ruchów i przetworzenie ich przez algorytm.¶
|
||||
¶
|
||||
<b>Wymaga to podłączenia headsetu (HMD) do SlimeVR i założenia go na głowę!</b>
|
||||
onboarding-choose_proportions-manual_proportions = Ręczne proporcje
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = Drobne detale
|
||||
@@ -854,25 +900,27 @@ onboarding-automatic_proportions-put_trackers_on-description = Aby skalibrować
|
||||
onboarding-automatic_proportions-put_trackers_on-next = Mam wszystkie trackery założone
|
||||
onboarding-automatic_proportions-requirements-title = Wymagania
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
Masz co najmniej wystarczającą liczbę trackerów do śledzenia twoich stóp (zazwyczaj 5 trackerów).
|
||||
Masz włączone trackery i zestaw VR.
|
||||
Masz na sobie trackery i zestaw VR.
|
||||
Twoje urządzenia śledzące i zestaw VR są połączone z serwerem SlimeVR.
|
||||
Twoje urządzenia śledzące i zestaw VR działają poprawnie na serwerze SlimeVR.
|
||||
Twój zestaw VR przesyła dane pozycyjne do serwera SlimeVR (oznacza to ogólnie, że SteamVR działa i jest połączony ze SlimeVR za pomocą sterownika SlimeVR dla SteamVR).
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
Masz wystarczającą liczbę trackerów, aby śledzić swoje stopy (zwykle 5 trackerów).¶
|
||||
Masz włączone i założone trackery oraz headset.¶
|
||||
Twoje trackery i heaset są połączone z serwerem SlimeVR i działają poprawnie (np. nie ma przycięć, rozłączeń itp.).¶
|
||||
Twój headset raportuje dane o pozycji do serwera SlimeVR (zazwyczaj oznacza to, że SteamVR jest uruchomiony i podłączony do SlimeVR za pomocą sterownika SteamVR SlimeVR).¶
|
||||
Twoje śledzenie działa i dokładnie odzwierciedla Twoje ruchy (wykonałeś pełny reset i poruszają się we właściwym kierunku podczas kopania, schylania się, siedzenia itp.).
|
||||
onboarding-automatic_proportions-requirements-next = Zapoznałem się z wymaganiami
|
||||
onboarding-automatic_proportions-check_height-title = Sprawdź swój wzrost
|
||||
onboarding-automatic_proportions-check_height-description = Używamy Twojego wzrostu jako podstawy naszych pomiarów, używając wzrostu HMD jako przybliżenia Twojego rzeczywistego wzrostu, ale lepiej samemu sprawdzić, czy są prawidłowe!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = Naciśnij przycisk stojąc <u>wyprostowany</u>, aby obliczyć swój wzrost. Masz 3 sekundy po naciśnięciu przycisku!
|
||||
onboarding-automatic_proportions-check_height-guardian_tip =
|
||||
Jeśli korzystasz z samodzielnego zestawu VR, upewnij się, że twoja granica¶
|
||||
bezpieczeństwa (guardian) jest włączona, aby poprawnie rozpoznać Twój wzrost!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = Stoję!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = Nieznany
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-hmd_height1 = Twoja wysokość HMD to
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-height1 = Twoje rzeczywisty wzrost to
|
||||
onboarding-automatic_proportions-check_height-height1 = więc twój rzeczywisty wzrost to
|
||||
onboarding-automatic_proportions-check_height-next_step = Są w porządku
|
||||
onboarding-automatic_proportions-start_recording-title = Bądź gotowy żeby się ruszać
|
||||
onboarding-automatic_proportions-start_recording-description = Będziemy teraz nagrywać specyficzne pozycje i ruchy. Będą one pokazane w następnym okienku. Bądź gotowy po naciśnięciu przycisku!
|
||||
@@ -897,23 +945,32 @@ onboarding-automatic_proportions-recording-timer =
|
||||
[many] Pozostało { $time } sekund
|
||||
*[other] Pozostało { $time } sekund
|
||||
}
|
||||
onboarding-automatic_proportions-verify_results-title = Zweryfikuj Wyniki
|
||||
onboarding-automatic_proportions-verify_results-title = Zweryfikuj wyniki
|
||||
onboarding-automatic_proportions-verify_results-description = Sprawdź wyniki poniżej, czy są prawidłowe?
|
||||
onboarding-automatic_proportions-verify_results-results = Wyniki Nagrywania
|
||||
onboarding-automatic_proportions-verify_results-results = Wyniki nagrywania
|
||||
onboarding-automatic_proportions-verify_results-processing = Przetwarzanie wyniku
|
||||
onboarding-automatic_proportions-verify_results-redo = Powtórz Nagrywanie
|
||||
onboarding-automatic_proportions-verify_results-confirm = Są Prawidłowe
|
||||
onboarding-automatic_proportions-done-title = Zmierzono oraz Zapisano.
|
||||
onboarding-automatic_proportions-verify_results-redo = Powtórz nagranie
|
||||
onboarding-automatic_proportions-verify_results-confirm = Wyniki prawidłowe
|
||||
onboarding-automatic_proportions-done-title = Zmierzono oraz zapisano.
|
||||
onboarding-automatic_proportions-done-description = Twoja kalibracja ciała została zakończona!
|
||||
onboarding-automatic_proportions-error_modal =
|
||||
<b>Ostrzeżenie:</b> Wykryto błąd podczas szacowania proporcji!
|
||||
Proszę <docs>sprawdź dokumenty</docs> lub dołącz do naszego <discord>Discord</discord>, aby uzyskać pomoc ^_^
|
||||
Proszę <docs>sprawdź dokumentację</docs> lub dołącz do naszego <discord>Discord</discord>, aby uzyskać pomoc ^_^
|
||||
onboarding-automatic_proportions-error_modal-confirm = Zrozumiano!
|
||||
|
||||
## Home
|
||||
|
||||
home-no_trackers = Nie wykryto trackerów
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = Trackery nadal włączone
|
||||
trackers_still_on-modal-description =
|
||||
Jeden lub więcej modułów śledzących jest nadal włączonych.
|
||||
Czy nadal chcesz wyjść ze SlimeVR?
|
||||
trackers_still_on-modal-confirm = Wyjdź ze SlimeVR
|
||||
trackers_still_on-modal-cancel = Poczekaj!
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = Zaleca się wykonanie pełnego resetu, ponieważ jeden lub więcej trackerów nie jest wyregulowanych.
|
||||
@@ -922,4 +979,32 @@ status_system-StatusSteamVRDisconnected =
|
||||
[steamvr_feeder] Nie można połączyć się z aplikacją SlimeVR Feeder.
|
||||
*[other] Nie można połączyć się ze SteamVR przez sterownik SlimeVR.
|
||||
}
|
||||
status_system-StatusTrackerError = Moduł śledzący { $trackerName } ma błąd.
|
||||
status_system-StatusTrackerError = Tracker { $trackerName } ma błąd.
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = Pokaż
|
||||
tray_menu-hide = Ukryj
|
||||
tray_menu-quit = Zakończ
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = Co powinien robić przycisk zamykania?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
Dzięki temu możesz wybrać, czy chcesz opuścić serwer, czy zminimalizować go do zasobnika po naciśnięciu przycisku zamykania.¶
|
||||
¶
|
||||
Możesz to później zmienić w ustawieniach interfejsu!
|
||||
tray_or_exit_modal-radio-exit = Wyjdź po zamknięciu
|
||||
tray_or_exit_modal-radio-tray = Minimalizuj do zasobnika systemowego
|
||||
tray_or_exit_modal-submit = Zachowaj
|
||||
tray_or_exit_modal-cancel = Anuluj
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = Znaleziono nowy tracker!
|
||||
unknown_device-modal-description =
|
||||
Dostępny jest nowy tracker z adresem MAC b { $deviceId } /b .¶
|
||||
Czy chcesz podłączyć go do SlimeVR?
|
||||
unknown_device-modal-confirm = Jasne!
|
||||
unknown_device-modal-forget = Ignoruj
|
||||
|
||||
@@ -23,6 +23,8 @@ tips-find_tracker = Não tem certeza qual tracker é qual? Balance o tracker e e
|
||||
tips-do_not_move_heels = Tenha certeza de não mexer seus calcanhares durante a gravação!
|
||||
tips-file_select = Arraste e solte arquivos para usar, ou <u>pesquise</u>.
|
||||
tips-tap_setup = Pode tocar lentamente 2 vezes no seu tracker para o escolher em vez de o selecionar no menu.
|
||||
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.
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -36,6 +38,7 @@ body_part-RIGHT_HAND = Mão Direita
|
||||
body_part-RIGHT_UPPER_LEG = Coxa direita
|
||||
body_part-RIGHT_LOWER_LEG = Canela direita
|
||||
body_part-RIGHT_FOOT = Pé direito
|
||||
body_part-UPPER_CHEST = Peito Superior
|
||||
body_part-CHEST = Peito
|
||||
body_part-WAIST = Cintura
|
||||
body_part-HIP = Quadril
|
||||
@@ -52,12 +55,15 @@ body_part-LEFT_FOOT = Pé esquerdo
|
||||
skeleton_bone-NONE = Nada
|
||||
skeleton_bone-HEAD = Deslocamento da Cabeça
|
||||
skeleton_bone-NECK = Tamanho do Pescoço
|
||||
skeleton_bone-CHEST = Chest Length
|
||||
skeleton_bone-torso_group = Tamanho do Tronco
|
||||
skeleton_bone-UPPER_CHEST = Tamanho do Peito Superior
|
||||
skeleton_bone-CHEST_OFFSET = Chest Offset
|
||||
skeleton_bone-CHEST = Chest Length
|
||||
skeleton_bone-WAIST = Waist Length
|
||||
skeleton_bone-HIP = Hip Length
|
||||
skeleton_bone-HIP_OFFSET = Compensação do Quadril
|
||||
skeleton_bone-HIPS_WIDTH = Largura do Quadril
|
||||
skeleton_bone-leg_group = Tamanho da Perna
|
||||
skeleton_bone-UPPER_LEG = Upper Leg Length
|
||||
skeleton_bone-LOWER_LEG = Lower Leg Length
|
||||
skeleton_bone-FOOT_LENGTH = Tamanho do Pé
|
||||
@@ -65,6 +71,7 @@ skeleton_bone-FOOT_SHIFT = Compensação do Pé
|
||||
skeleton_bone-SKELETON_OFFSET = Compensação do Esqueleto
|
||||
skeleton_bone-SHOULDERS_DISTANCE = Distância dos Ombros
|
||||
skeleton_bone-SHOULDERS_WIDTH = Largura dos Ombros
|
||||
skeleton_bone-arm_group = Tamanho do Braço
|
||||
skeleton_bone-UPPER_ARM = Tamanho do Braço Superior
|
||||
skeleton_bone-LOWER_ARM = Distância do Antebraço
|
||||
skeleton_bone-HAND_Y = Distância da mão Y
|
||||
@@ -74,8 +81,9 @@ skeleton_bone-ELBOW_OFFSET = Compensação do Cotovelo
|
||||
## Tracker reset buttons
|
||||
|
||||
reset-reset_all = Redefinir todas as proporções
|
||||
reset-full = Reset
|
||||
reset-full = Reset Completo
|
||||
reset-mounting = Reset de Posição
|
||||
reset-yaw = Reset de guinada (yaw)
|
||||
|
||||
## Serial detection stuff
|
||||
|
||||
@@ -103,6 +111,8 @@ bvh-recording = Gravando...
|
||||
|
||||
## Tracking pause
|
||||
|
||||
tracking-unpaused = Pausar tracking
|
||||
tracking-paused = Resumir tracking
|
||||
|
||||
## Widget: Overlay settings
|
||||
|
||||
@@ -114,6 +124,10 @@ 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 = Limpar reset de posição
|
||||
|
||||
## Widget: Developer settings
|
||||
|
||||
widget-developer_mode = Modo de desenvolvedor
|
||||
@@ -130,6 +144,12 @@ widget-developer_mode-more_info = More info
|
||||
widget-imu_visualizer = Rotation
|
||||
widget-imu_visualizer-rotation_raw = Raw
|
||||
widget-imu_visualizer-rotation_preview = Preview
|
||||
widget-imu_visualizer-rotation_hide = Esconder
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Visualizar esqueleto
|
||||
widget-skeleton_visualizer-hide = Esconder
|
||||
|
||||
## Tracker status
|
||||
|
||||
@@ -139,6 +159,7 @@ tracker-status-error = Erro
|
||||
tracker-status-disconnected = Desconectado
|
||||
tracker-status-occluded = Ocluso
|
||||
tracker-status-ok = Conectado
|
||||
tracker-status-timed_out = Tempo esgotado
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -156,9 +177,15 @@ tracker-table-column-url = URL
|
||||
## Tracker rotation
|
||||
|
||||
tracker-rotation-front = Frente
|
||||
tracker-rotation-front_left = Frente-Esquerda
|
||||
tracker-rotation-front_right = Frente-direita
|
||||
tracker-rotation-left = Esquerda
|
||||
tracker-rotation-right = Direita
|
||||
tracker-rotation-back = Atrás
|
||||
tracker-rotation-back_left = Trás-esquerda
|
||||
tracker-rotation-back_right = Trás-direita
|
||||
tracker-rotation-custom = Personalizado
|
||||
tracker-rotation-overriden = (substituído por reset de posição)
|
||||
|
||||
## Tracker information
|
||||
|
||||
@@ -168,6 +195,10 @@ tracker-infos-custom_name = Nome personalizado
|
||||
tracker-infos-url = URL do Tracker
|
||||
tracker-infos-version = Versão do firmware
|
||||
tracker-infos-hardware_rev = Revisão do hardware
|
||||
tracker-infos-hardware_identifier = ID do Hardware
|
||||
tracker-infos-imu = Sensor IMU
|
||||
tracker-infos-board_type = Placa principal
|
||||
tracker-infos-network_version = Versão do protocolo
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -187,6 +218,9 @@ tracker-settings-drift_compensation_section-edit = Ligar a compensação de drif
|
||||
tracker-settings-name_section = Nome do tracker
|
||||
tracker-settings-name_section-description = Dê um apelido fofo :)
|
||||
tracker-settings-name_section-placeholder = Coxa esquerda de NightyBeast
|
||||
tracker-settings-forget = Esquecer o tracker
|
||||
tracker-settings-forget-description = Remove o tracker do servidor SlimeVR e impede que ele se conecte a ele até que o servidor seja reiniciado. A configuração do tracker não será perdida.
|
||||
tracker-settings-forget-label = Esquecer o tracker
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -220,6 +254,7 @@ tracker_selection_menu-RIGHT_UPPER_LEG = { -tracker_selection-part } right thigh
|
||||
tracker_selection_menu-RIGHT_LOWER_LEG = { -tracker_selection-part } right ankle?
|
||||
tracker_selection_menu-RIGHT_FOOT = { -tracker_selection-part } right foot?
|
||||
tracker_selection_menu-RIGHT_CONTROLLER = { -tracker_selection-part } right controller?
|
||||
tracker_selection_menu-UPPER_CHEST = { -tracker_selection-part } peito superior?
|
||||
tracker_selection_menu-CHEST = { -tracker_selection-part } chest?
|
||||
tracker_selection_menu-WAIST = { -tracker_selection-part } waist?
|
||||
tracker_selection_menu-HIP = { -tracker_selection-part } hip?
|
||||
@@ -256,8 +291,11 @@ settings-sidebar-fk_settings = Opções de Tracker
|
||||
settings-sidebar-gesture_control = Controle de Gestos
|
||||
settings-sidebar-interface = Interface
|
||||
settings-sidebar-osc_router = Roteador OSC
|
||||
settings-sidebar-osc_trackers = Trackers OSC do VRChat
|
||||
settings-sidebar-utils = Utilidades
|
||||
settings-sidebar-serial = Console Serial
|
||||
settings-sidebar-appearance = Aparência
|
||||
settings-sidebar-notifications = Notificações
|
||||
|
||||
## SteamVR settings
|
||||
|
||||
@@ -272,10 +310,22 @@ settings-general-steamvr-description =
|
||||
Útil se você quer mais controle do que o SlimeVR faz.
|
||||
settings-general-steamvr-trackers-waist = Cintura
|
||||
settings-general-steamvr-trackers-chest = Peito
|
||||
settings-general-steamvr-trackers-feet = Pés
|
||||
settings-general-steamvr-trackers-knees = Joelhos
|
||||
settings-general-steamvr-trackers-elbows = Cotovelos
|
||||
settings-general-steamvr-trackers-hands = Mãos
|
||||
settings-general-steamvr-trackers-left_foot = Pé esquerdo
|
||||
settings-general-steamvr-trackers-right_foot = Pé direito
|
||||
settings-general-steamvr-trackers-left_knee = Joelho esquerdo
|
||||
settings-general-steamvr-trackers-right_knee = Joelho direito
|
||||
settings-general-steamvr-trackers-left_elbow = Cotovelo esquerdo
|
||||
settings-general-steamvr-trackers-right_elbow = Cotovelo direito
|
||||
settings-general-steamvr-trackers-left_hand = Mão esquerda
|
||||
settings-general-steamvr-trackers-right_hand = Mão direita
|
||||
settings-general-steamvr-trackers-tracker_toggling = Atribuição automática de trackers
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = Liga ou desliga automaticamente os trackers SteamVR dependendo das suas configurações atuais dos trackers
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = Atribuição automática de trackers
|
||||
settings-general-steamvr-trackers-hands-warning =
|
||||
<b>Aviso:</b> os trackers de mão substituirão seus controles.
|
||||
Tem certeza?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = Cancelar
|
||||
settings-general-steamvr-trackers-hands-warning-done = Sim
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -293,6 +343,7 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = Suaviz
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Predição
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Reduz latência e torna os movimentos mais responsivos, porém aumenta tremulação (Jitter).
|
||||
settings-general-tracker_mechanics-filtering-amount = Quantidade
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = Suavisação do reset de guinada (yaw). (0s desativa a suavização)
|
||||
settings-general-tracker_mechanics-drift_compensation = Compensação de drift
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
@@ -301,6 +352,11 @@ settings-general-tracker_mechanics-drift_compensation-description =
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Compensação de drift
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = Quantidade de compensação
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Use até x últimos resets
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Salvar a calibragem automática de posição
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
Salva as calibrações automáticas de reset de posição para os trackers entre as reinicializações. Útil
|
||||
ao usar uma roupa em que os trackers não se movem entre as sessões. <b>Não recomendado para usuários normais!</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Salvar reset de Posição
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -308,21 +364,50 @@ settings-general-fk_settings = Opções de Tracker
|
||||
# Floor clip:
|
||||
# why the name - came from the idea of noclip in video games, but is the opposite where clipping to the floor is a desired feature
|
||||
# definition - Prevents the foot trackers from going lower than they where when a reset was performed
|
||||
settings-general-fk_settings-leg_tweak-floor_clip = Atravessar o chão
|
||||
settings-general-fk_settings-leg_tweak-floor_clip = Clipping de chão
|
||||
# Skating correction:
|
||||
# why the name - without this enabled the feet will often slide across the ground as if your skating across the ground,
|
||||
# since this largely prevents this it corrects for it hence skating correction (note this may be renamed to sliding correction)
|
||||
# definition - Guesses when each foot is in contact with the ground and uses that information to improve tracking
|
||||
settings-general-fk_settings-leg_tweak-skating_correction = Correção de deslize
|
||||
settings-general-fk_settings-leg_tweak-toe_snap = Encaixar os dedos do pé
|
||||
settings-general-fk_settings-leg_tweak-foot_plant = Pé plantado
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-amount = Força da correção de deslize
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-description = A correção de deslize corrige o efeito de patinar, mas pode diminuir a precisão em certos padrões de movimento. Ativando essa correção, certifique-se de redefinir totalmente e recalibrar no jogo.
|
||||
settings-general-fk_settings-leg_tweak-floor_clip-description = Clipping de chão pode reduzir e até eliminar o clipping através do chão. Ao ativar isso, certifique-se de redefinir completamente e recalibrar no jogo.
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = Encaixar os dedos do pé, tenta adivinhar a rotação dos seus pés se os trackers dos pés não estiverem em uso.
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = Pé plantado gira os pés para ficarem paralelos ao chão quando em contato.
|
||||
settings-general-fk_settings-leg_fk = Tracking de pernas
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Ativar o Reset de Posição dos pés ao ficar nas pontas dos pés.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Reset de Posição dos pés
|
||||
settings-general-fk_settings-arm_fk = Opções do Braço
|
||||
settings-general-fk_settings-arm_fk-description = Muda o jeito que os braços são rastreados.
|
||||
settings-general-fk_settings-arm_fk-force_arms = Forçar braços do HMD
|
||||
settings-general-fk_settings-skeleton_settings = Opções do esqueleto
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Mudar a pose do braço esperada para o reset de posição.
|
||||
settings-general-fk_settings-arm_fk-back = Atrás
|
||||
settings-general-fk_settings-arm_fk-back-description = O modo padrão, com os braços voltados para trás e os antebraços para frente.
|
||||
settings-general-fk_settings-arm_fk-tpose_up = T-pose (cima)
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Espera que seus braços fiquem para baixo nas laterais durante o reset completo e 90 graus para os lados durante o reset de posição.
|
||||
settings-general-fk_settings-arm_fk-tpose_down = T-pose (baixo)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = Espera que seus braços fiquem 90 graus para os lados durante o reset completo e para baixo nas laterais durante o reset de posição.
|
||||
settings-general-fk_settings-arm_fk-forward = Frente
|
||||
settings-general-fk_settings-arm_fk-forward-description = Espera que seus braços estejam 90 graus à frente. Útil para VTubing.
|
||||
settings-general-fk_settings-skeleton_settings-toggles = Opções do esqueleto
|
||||
settings-general-fk_settings-skeleton_settings-description = Ligar ou desligar opções do esqueleto. É recomendado deixar eles ligados.
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine = Estender coluna
|
||||
settings-general-fk_settings-skeleton_settings-extended_pelvis = Estender pélvis
|
||||
settings-general-fk_settings-skeleton_settings-extended_knees = Estender joelho
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine_model = Modelo de coluna estendida
|
||||
settings-general-fk_settings-skeleton_settings-extended_pelvis_model = Modelo de pélvis estendida
|
||||
settings-general-fk_settings-skeleton_settings-extended_knees_model = Modelo de joelho estendido
|
||||
settings-general-fk_settings-skeleton_settings-ratios = Proporções do esqueleto
|
||||
settings-general-fk_settings-skeleton_settings-ratios-description = Mude os valores das configurações do esqueleto. Pode ser necessário ajustar suas proporções depois de alterá-las.
|
||||
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_hip = Imputar cintura do peito ao quadril
|
||||
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_legs = Imputar cintura do peito às pernas
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs = Imputar o quadril do peito às pernas
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_waist_legs = Imputar quadril da cintura às pernas
|
||||
settings-general-fk_settings-skeleton_settings-interp_hip_legs = Calcular a média da guinada e rolamento do quadril com as pernas
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = Calcular a média da guinada e rolamento dos trackers dos joelhos com os tornozelos
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = Calcular a média da guinada e rolamento do joelho com os tornozelos
|
||||
settings-general-fk_settings-self_localization-title = Modo mocap
|
||||
settings-general-fk_settings-self_localization-description = O modo mocap permite que o esqueleto rastreie aproximadamente sua própria posição sem um headset ou outros trackers. Observe que isso requer trackers de pés e cabeça para funcionar e ainda é experimental.
|
||||
settings-general-fk_settings-vive_emulation-title = Emulação de Vive
|
||||
settings-general-fk_settings-vive_emulation-description = Emule o problema de tracker da cintura que o Vive tracker tem. Isso é uma piada e faz o tracking ficar pior.
|
||||
settings-general-fk_settings-vive_emulation-label = Ativar emulação de Vive
|
||||
@@ -339,22 +424,62 @@ settings-general-gesture_control-taps =
|
||||
[one] 1 tap
|
||||
*[other] { $amount } taps
|
||||
}
|
||||
# This is a unit: 3 trackers, 2 trackers, 1 tracker
|
||||
# $amount (Number) - Amount of trackers
|
||||
settings-general-gesture_control-trackers =
|
||||
{ $amount ->
|
||||
[one] tracker
|
||||
[many] trackers
|
||||
*[other] trackers
|
||||
}
|
||||
settings-general-gesture_control-yawResetEnabled = Ativar toque para reset de guinada
|
||||
settings-general-gesture_control-yawResetDelay = Atraso do reset de guinada
|
||||
settings-general-gesture_control-yawResetTaps = Toques para reset de guinada
|
||||
settings-general-gesture_control-fullResetEnabled = Habilitar toque para reset completo
|
||||
settings-general-gesture_control-fullResetDelay = Atraso no reset completo
|
||||
settings-general-gesture_control-fullResetTaps = Toques para reset completo
|
||||
settings-general-gesture_control-mountingResetEnabled = Toques para o reset de posição
|
||||
settings-general-gesture_control-mountingResetDelay = Delay do reset de posição
|
||||
settings-general-gesture_control-mountingResetTaps = Toques para o reset de posição
|
||||
# The number of trackers that can have higher acceleration before a tap is rejected
|
||||
settings-general-gesture_control-numberTrackersOverThreshold = Trackers acima do limite
|
||||
settings-general-gesture_control-numberTrackersOverThreshold-description = Aumente esse valor se a detecção de toque não estiver funcionando. Não aumente o valor acima do necessário para que a detecção de toque funcione, pois isso causaria mais falsos positivos.
|
||||
|
||||
## Interface settings
|
||||
## Appearance settings
|
||||
|
||||
settings-general-interface = Interface
|
||||
settings-interface-appearance = Aparênia
|
||||
settings-general-interface-dev_mode = Modo de desenvolvedor
|
||||
settings-general-interface-dev_mode-description = Este modo pode ser útil se precisar de dados específicos ou para interagir com trackers conectados a um nível mais avançado
|
||||
settings-general-interface-dev_mode-label = Modo de desenvolvedor
|
||||
settings-general-interface-serial_detection = Detecção de dispositivo serial
|
||||
settings-general-interface-serial_detection-description = Esta opção mostrará um pop-up toda vez que você conectar um novo dispositivo serial que pode ser um tracker. Ajuda a melhorar o processo de configuração de um tracker
|
||||
settings-general-interface-serial_detection-label = Detecção de dispositivo serial
|
||||
settings-general-interface-theme = Cor do tema
|
||||
settings-general-interface-lang = Selecione o idioma
|
||||
settings-general-interface-lang-description = Alterar o idioma padrão que pretende utilizar
|
||||
settings-general-interface-lang-placeholder = Selecione o idioma que vai usar
|
||||
# Keep the font name untranslated
|
||||
settings-interface-appearance-font = Fonte da interface
|
||||
settings-interface-appearance-font-description = Isso altera a fonte usada pela interface.
|
||||
settings-interface-appearance-font-placeholder = Fonte padrão
|
||||
settings-interface-appearance-font-os_font = Fonte do sistema
|
||||
settings-interface-appearance-font-slime_font = Fonte padrão
|
||||
settings-interface-appearance-font_size = Escala da fonte
|
||||
settings-interface-appearance-font_size-description = Isso afeta o tamanho da fonte de toda a interface, exceto neste painel de configurações.
|
||||
|
||||
## Notification settings
|
||||
|
||||
settings-interface-notifications = Notificações
|
||||
settings-general-interface-serial_detection = Detecção de dispositivo serial
|
||||
settings-general-interface-serial_detection-description = Esta opção mostrará um pop-up toda vez que você conectar um novo dispositivo serial que pode ser um tracker. Ajuda a melhorar o processo de configuração de um tracker
|
||||
settings-general-interface-serial_detection-label = Detecção de dispositivo serial
|
||||
settings-general-interface-feedback_sound = Som de feedback
|
||||
settings-general-interface-feedback_sound-description = Essa opção reproduzirá um som quando um reset for acionado.
|
||||
settings-general-interface-feedback_sound-label = Som de feedback
|
||||
settings-general-interface-feedback_sound-volume = Volume do som de feedback
|
||||
settings-general-interface-connected_trackers_warning = Aviso de trackers conectados
|
||||
settings-general-interface-connected_trackers_warning-description = Essa opção exibirá um pop-up toda vez que você tentar fechar o SlimeVR enquanto tiver um ou mais trackers conectados. Ela o lembrará de desligar os trackers quando você terminar para preservar a vida útil da bateria.
|
||||
settings-general-interface-connected_trackers_warning-label = Aviso de trackers conectados ao fechar
|
||||
settings-general-interface-use_tray = Minimizar para bandeja do sistema
|
||||
settings-general-interface-use_tray-description = Permite que você feche a janela sem fechar o servidor do SlimeVR, para que possa continuar usando-o sem que a interface gráfica o incomode.
|
||||
settings-general-interface-use_tray-label = Minimizar para a bandeja do sistema
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -376,6 +501,7 @@ settings-serial-factory_reset-warning-cancel = Cancelar
|
||||
settings-serial-get_infos = Obter informações
|
||||
settings-serial-serial_select = Selecione uma porta serial
|
||||
settings-serial-auto_dropdown_item = Auto
|
||||
settings-serial-get_wifi_scan = Obter varredura WiFi
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -426,18 +552,56 @@ settings-osc-vrchat-network-address-placeholder = Endereço de ip do VRChat
|
||||
settings-osc-vrchat-network-trackers = Trackers
|
||||
settings-osc-vrchat-network-trackers-description = Ligar ou desligar o envio e recepção de dados.
|
||||
settings-osc-vrchat-network-trackers-chest = Peito
|
||||
settings-osc-vrchat-network-trackers-hip = Quadril
|
||||
settings-osc-vrchat-network-trackers-knees = Joelhos
|
||||
settings-osc-vrchat-network-trackers-feet = Pés
|
||||
settings-osc-vrchat-network-trackers-elbows = Cotovelos
|
||||
|
||||
## VMC OSC settings
|
||||
|
||||
settings-osc-vmc = Captura virtual de movimentos
|
||||
# This cares about multilines
|
||||
settings-osc-vmc-description =
|
||||
Altere as configurações específicas do protocolo VMC (Virtual Motion Capture)
|
||||
para enviar dados de esqueleto do SlimeVR e receber dados de esqueleto de outros aplicativos.
|
||||
settings-osc-vmc-enable = Ativar
|
||||
settings-osc-vmc-enable-description = Ative o envio e o recebimento de dados.
|
||||
settings-osc-vmc-enable-label = Ativar
|
||||
settings-osc-vmc-network = Portas de rede
|
||||
settings-osc-vmc-network-description = Defina as portas para escutar e enviar dados via VMC (Virtual Motion Capture).
|
||||
settings-osc-vmc-network-port_in =
|
||||
.label = Porta de entrada
|
||||
.placeholder = Porta de entrada (padrão: 39540)
|
||||
settings-osc-vmc-network-port_out =
|
||||
.label = Porta de saída
|
||||
.placeholder = Porta de saída (padrão: 39539)
|
||||
settings-osc-vmc-network-address = Endereço de rede
|
||||
settings-osc-vmc-network-address-description = Escolha o endereço para envio de dados via VMC (Virtual Motion Capture).
|
||||
settings-osc-vmc-network-address-placeholder = Endereço IPV4
|
||||
settings-osc-vmc-vrm = Modelo VRM
|
||||
settings-osc-vmc-vrm-description = Carregue um modelo de VRM para permitir ancoragem de cabeça e possibilitar uma maior compatibilidade com outras aplicações.
|
||||
settings-osc-vmc-vrm-model_unloaded = Nenhum modelo carregado
|
||||
settings-osc-vmc-vrm-model_loaded =
|
||||
{ $titled ->
|
||||
[true] Modelo carregado: { $name }
|
||||
*[other] Modelo sem título carregado
|
||||
}
|
||||
settings-osc-vmc-vrm-file_select = Arraste e solte um modelo para usar, ou <u>navegue</u>
|
||||
settings-osc-vmc-anchor_hip = Ancorar no quadril
|
||||
settings-osc-vmc-anchor_hip-description = Ancorar o rastreamento no quadril, útil para VTubing sentado. Se desativar, carregue um modelo VRM.
|
||||
settings-osc-vmc-anchor_hip-label = Ancorar no quadril
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
onboarding-skip = Pular configurações
|
||||
onboarding-continue = Continuar
|
||||
onboarding-wip = Trabalho em progresso
|
||||
onboarding-previous_step = Passo anterior
|
||||
onboarding-setup_warning =
|
||||
<b>Aviso:</b> A configuração inicial é necessária para um rastreamento adequado,
|
||||
isso é necessário se for a primeira vez usando o SlimeVR.
|
||||
onboarding-setup_warning-skip = Pular configurações
|
||||
onboarding-setup_warning-cancel = Continuar configurações
|
||||
|
||||
## Wi-Fi setup
|
||||
|
||||
@@ -460,7 +624,26 @@ onboarding-wifi_creds-password =
|
||||
|
||||
onboarding-reset_tutorial-back = Voltar para a Calibragem de Posição
|
||||
onboarding-reset_tutorial = Resetar Tutorial
|
||||
onboarding-reset_tutorial-description = Esse recurso não está concluído, apenas aperte continue
|
||||
onboarding-reset_tutorial-explanation = Enquanto você usa os trackers, eles podem ficar desalinhados devido ao drift de guinada (yaw) da IMU ou porque você pode ter movido os trackers fisicamente. Há várias maneiras de corrigir isso.
|
||||
onboarding-reset_tutorial-skip = Pular passo
|
||||
# Cares about multiline
|
||||
onboarding-reset_tutorial-0 =
|
||||
Toque { $taps } vezes no tracker destacado para acionar o reset de guinada.
|
||||
|
||||
Isso fará com que os trackers fiquem na mesma direção que o seu headset (HMD).
|
||||
# Cares about multiline
|
||||
onboarding-reset_tutorial-1 =
|
||||
Toque { $taps } vezes no tracker destacado para acionar o reset completo.
|
||||
|
||||
Você precisa estar em pé para isso (pose-i). Há um atraso de 3 segundos (configurável) antes que realmente aconteça.
|
||||
Isso reseta completamente a posição e rotação de todos os seus trackers. Deve corrigir a maioria dos problemas.
|
||||
# Cares about multiline
|
||||
onboarding-reset_tutorial-2 =
|
||||
Toque { $taps } vezes no tracker destacado para acionar o reset de posição.
|
||||
|
||||
O reset de posição ajuda a ajustar como os trackers estão realmente colocados em você, então, se você os moveu acidentalmente e alterou significativamente a orientação, isso ajudará.
|
||||
|
||||
Você precisa estar em uma pose como se estivesse esquiando, como é mostrado no Assistente de Posição Automática, e há um atraso de 3 segundos (configurável) antes que seja acionado.
|
||||
|
||||
## Setup start
|
||||
|
||||
@@ -484,8 +667,8 @@ onboarding-done-close = Fechar o guia
|
||||
|
||||
onboarding-connect_tracker-back = Voltar para as credenciais de Wi-Fi
|
||||
onboarding-connect_tracker-title = Conectar os trackers
|
||||
onboarding-connect_tracker-description-p0 = Agora para a parte divertida, conectando todos os seus trackers!
|
||||
onboarding-connect_tracker-description-p1 = Simplesmente conecte todos que ainda não estão conectados, via porta USB.
|
||||
onboarding-connect_tracker-description-p0-v1 = Agora vamos à parte divertida, conectar os trackers!
|
||||
onboarding-connect_tracker-description-p1-v1 = Conecte cada tracker, um de cada vez, por meio de uma porta USB.
|
||||
onboarding-connect_tracker-issue-serial = Estou tendo problemas para conectar!
|
||||
onboarding-connect_tracker-usb = Tracker USB
|
||||
onboarding-connect_tracker-connection_status-none = Procurando por trackers
|
||||
@@ -511,9 +694,24 @@ onboarding-connect_tracker-next = Eu conectei todos os meus trackers
|
||||
|
||||
## Tracker calibration tutorial
|
||||
|
||||
onboarding-calibration_tutorial = Tutorial de Calibração IMU.
|
||||
onboarding-calibration_tutorial-subtitle = Isso ajudará a reduzir o drift dos trackers!
|
||||
onboarding-calibration_tutorial-description = Cada vez que ligar seus trackers, eles precisam ficar parados por um momento em uma superfície plana para calibrar. Vamos fazer a mesma coisa clicando no botão "{ onboarding-calibration_tutorial-calibrate }", <b>não os mova!</b>
|
||||
onboarding-calibration_tutorial-calibrate = Eu coloquei meus trackers na mesa
|
||||
onboarding-calibration_tutorial-status-waiting = Esperando por você
|
||||
onboarding-calibration_tutorial-status-calibrating = Calibrando
|
||||
onboarding-calibration_tutorial-status-success = Legal!
|
||||
onboarding-calibration_tutorial-status-error = O tracker foi movido
|
||||
|
||||
## Tracker assignment tutorial
|
||||
|
||||
onboarding-assignment_tutorial = Como preparar um Slime Tracker antes de colocá-lo.
|
||||
onboarding-assignment_tutorial-first_step = 1. Coloque um adesivo de parte do corpo (se tiver um) no tracker de acordo com sua escolha
|
||||
# This text has a character limit of around 11 characters, so please keep it short
|
||||
onboarding-assignment_tutorial-sticker = Adesivo
|
||||
onboarding-assignment_tutorial-second_step-v2 = 2. Prenda a strap ao seu tracker, mantendo o lado de velcro da strap virado na mesma direção que o lado do rosto do slime em seu tracker:
|
||||
onboarding-assignment_tutorial-second_step-continuation-v2 = O lado de velcro para a extensão deve estar virado para cima, como na imagem a seguir:
|
||||
onboarding-assignment_tutorial-done = Eu coloquei os adesivos e as straps!
|
||||
|
||||
## Tracker assignment setup
|
||||
|
||||
@@ -530,6 +728,7 @@ onboarding-assign_trackers-assigned =
|
||||
} assigned
|
||||
onboarding-assign_trackers-advanced = Mostrar locais de atribuição avançados
|
||||
onboarding-assign_trackers-next = Atribui todos os trackers
|
||||
onboarding-assign_trackers-mirror_view = Inverter visão
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -601,6 +800,24 @@ onboarding-assign_trackers-warning-WAIST =
|
||||
|
||||
## Tracker mounting method choose
|
||||
|
||||
onboarding-choose_mounting = Qual método de calibração de posição você deseja usar?
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-description = A orientação de posição corrige a colocação dos trackers no seu corpo.
|
||||
onboarding-choose_mounting-auto_mounting = Posição automática
|
||||
# Italized text
|
||||
onboarding-choose_mounting-auto_mounting-label = Experimental
|
||||
onboarding-choose_mounting-auto_mounting-description = Isso detectará automaticamente as direções de posição para todos os seus trackers a partir de 2 poses
|
||||
onboarding-choose_mounting-manual_mounting = Posição manual
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Recomendado
|
||||
onboarding-choose_mounting-manual_mounting-description = Isso permitirá que você escolha manualmente a direção de posição para cada tracker
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title =
|
||||
Você tem certeza de que deseja fazer
|
||||
a calibração automática de posição?
|
||||
onboarding-choose_mounting-manual_modal-description = <b>A calibração manual de posição é recomendada para novos usuários</b>, pois as poses da calibração automática podem ser difíceis de acertar no início e podem exigir certa prática.
|
||||
onboarding-choose_mounting-manual_modal-confirm = Estou certo do que estou fazendo.
|
||||
onboarding-choose_mounting-manual_modal-cancel = Cancelar
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -633,6 +850,28 @@ onboarding-automatic_mounting-put_trackers_on-next = Coloquei todos os meus trac
|
||||
|
||||
## Tracker proportions method choose
|
||||
|
||||
onboarding-choose_proportions = Qual método de calibração de proporções você deseja usar?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
As proporções do corpo são usadas para saber as dimensões do seu corpo. Elas são necessárias para calcular as posições dos trackers.
|
||||
Quando as proporções do seu corpo não corresponderem às que estão salvas, a precisão do rastreamento será pior e você observará problemas como efeito de patinação ou deslizamento, ou que seu corpo não corresponde bem ao seu avatar.
|
||||
<b>Você precisará medir seu corpo apenas uma vez!</b> Se as medições estiverem corretas e o seu corpo não tiver passado por mudanças significativas, não há necessidade de repeti-las.
|
||||
onboarding-choose_proportions-auto_proportions = Proporções automáticas
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Recomendado
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
Isso irá estimar suas proporções gravando uma amostra de seus movimentos e passando-a por um algoritmo.
|
||||
|
||||
<b>Isso requer ter seu headset (HMD) conectado ao SlimeVR e na sua cabeça!</b>
|
||||
onboarding-choose_proportions-manual_proportions = Proporções manuais
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = Para pequenos ajustes
|
||||
onboarding-choose_proportions-manual_proportions-description = Isso permitirá que você ajuste suas proporções manualmente, modificando-as diretamente
|
||||
onboarding-choose_proportions-export = Exportar proporções
|
||||
onboarding-choose_proportions-import = Importar proporções
|
||||
onboarding-choose_proportions-import-success = Importado
|
||||
onboarding-choose_proportions-import-failed = Falhou
|
||||
onboarding-choose_proportions-file_type = Arquivo de proporções do corpo
|
||||
|
||||
## Tracker manual proportions setup
|
||||
|
||||
@@ -640,6 +879,7 @@ onboarding-manual_proportions-back = Voltar para o tutorial de reset
|
||||
onboarding-manual_proportions-title = Proporções de corpo manuais
|
||||
onboarding-manual_proportions-precision = Ajuste de precisão
|
||||
onboarding-manual_proportions-auto = Calibragem Automática
|
||||
onboarding-manual_proportions-ratio = Ajustar por grupos de proporções
|
||||
|
||||
## Tracker automatic proportions setup
|
||||
|
||||
@@ -651,12 +891,44 @@ onboarding-automatic_proportions-prev_step = Passo anterior
|
||||
onboarding-automatic_proportions-put_trackers_on-title = Coloque seus trackers
|
||||
onboarding-automatic_proportions-put_trackers_on-description = Para calibrar suas proporções, usaremos os trackers que você atribuiu. Coloque todos os seus trackers, você pode ver quais são quais na figura à direita.
|
||||
onboarding-automatic_proportions-put_trackers_on-next = Coloquei todos os meus trackers
|
||||
onboarding-automatic_proportions-requirements-title = Requisitos
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
Você possui pelo menos trackers suficientes para rastrear seus pés (geralmente 5 trackers).
|
||||
Você está com os trackers e o headset ligados, e os está usando.
|
||||
Seus trackers e o headset estão conectados ao servidor SlimeVR e estão funcionando corretamente (sem travamentos, desconexões, etc.).
|
||||
Seu headset está enviando dados de posição para o servidor SlimeVR (isso geralmente significa ter o SteamVR em execução e conectado ao SlimeVR usando o driver SteamVR do SlimeVR).
|
||||
Seu rastreamento está funcionando e representa com precisão seus movimentos (por exemplo, você realizou uma reinicialização completa e eles se movem na direção certa ao chutar, se inclinar, sentar, etc.).
|
||||
onboarding-automatic_proportions-requirements-next = Eu li os requisitos.
|
||||
onboarding-automatic_proportions-check_height-title = Cheque sua altura
|
||||
onboarding-automatic_proportions-check_height-description = Usamos sua altura como base para nossas medições, usando a altura do headset (HMD) como uma aproximação de sua altura real, mas é melhor verificar se estão corretas por conta própria!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = Por favor, pressione o botão enquanto estiver em pé <u>reto</u> para calcular sua altura. Você tem 3 segundos depois de pressionar o botão!
|
||||
onboarding-automatic_proportions-check_height-guardian_tip =
|
||||
Se você estiver usando um óculos VR standalone, certifique-se de que seu guardião /
|
||||
limite esteja ligado para que sua altura seja a correta!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = Estou em pé!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = Desconhecido
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-hmd_height1 = A altura do seu HMD é
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-height1 = então, sua altura real é
|
||||
onboarding-automatic_proportions-check_height-next_step = Estão bem
|
||||
onboarding-automatic_proportions-start_recording-title = Esteja preparado para se mexer
|
||||
onboarding-automatic_proportions-start_recording-description = Começaremos a gravar algumas poses e movimentos específicos. Estes serão solicitados na próxima tela. Esteja preparado para começar quando o botão for pressionado!
|
||||
onboarding-automatic_proportions-start_recording-next = Começar Gravação
|
||||
onboarding-automatic_proportions-recording-title = GRAVAR
|
||||
onboarding-automatic_proportions-recording-description-p0 = Gravação em progresso...
|
||||
onboarding-automatic_proportions-recording-description-p1 = Faça os movimentos apresentados abaixo:
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-recording-steps =
|
||||
Fique em pé, gire sua cabeça em um círculo.
|
||||
Incline as costas para a frente e agache. Enquanto agacha, olhe para a esquerda e depois para a direita.
|
||||
Gire o tronco para a esquerda (sentido anti-horário) e incline-se em direção ao chão.
|
||||
Gire o tronco para a direita (sentido horário) e incline-se em direção ao chão.
|
||||
Gire os quadris em um movimento circular como se estivesse usando um bambolê.
|
||||
Se houver tempo restante na gravação, você pode repetir esses passos até que termine.
|
||||
onboarding-automatic_proportions-recording-processing = Processando o resultado
|
||||
# $time (Number) - Seconds left for the automatic calibration recording to finish (max 20)
|
||||
onboarding-automatic_proportions-recording-timer =
|
||||
@@ -672,10 +944,58 @@ onboarding-automatic_proportions-verify_results-redo = Refazer a gravação
|
||||
onboarding-automatic_proportions-verify_results-confirm = Eles estão corretos
|
||||
onboarding-automatic_proportions-done-title = Corpo medido e salvo.
|
||||
onboarding-automatic_proportions-done-description = Sua calibragem de proporção de corpo está completa!
|
||||
onboarding-automatic_proportions-error_modal =
|
||||
<b>Aviso:</b> Um erro foi encontrado ao estimar proporções!
|
||||
Por favor, <docs>verifique a documentação</docs> ou junte-se ao nosso <discord>Discord</discord> para obter ajuda ^_^
|
||||
onboarding-automatic_proportions-error_modal-confirm = Entendido!
|
||||
|
||||
## Home
|
||||
|
||||
home-no_trackers = Nenhum tracker detectado ou atribuído
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = Trackers ainda ligados.
|
||||
trackers_still_on-modal-description =
|
||||
Um ou mais trackers ainda estão ligados.
|
||||
Você ainda deseja sair do SlimeVR?
|
||||
trackers_still_on-modal-confirm = Sair do SlimeVR
|
||||
trackers_still_on-modal-cancel = Aguarde...
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = É recomendado realizar um reset completo, pois um ou mais trackers estão desajustados.
|
||||
status_system-StatusSteamVRDisconnected =
|
||||
{ $type ->
|
||||
[steamvr_feeder] Atualmente não conectado ao aplicativo SlimeVR Feeder.
|
||||
*[other] Atualmente não conectado ao SteamVR via driver SlimeVR.
|
||||
}
|
||||
status_system-StatusTrackerError = O tracker { $trackerName } tem um erro.
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = Mostrar
|
||||
tray_menu-hide = Esconder
|
||||
tray_menu-quit = Sair
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = Qual deve ser a função do botão Fechar?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
Isso permite que você escolha se deseja sair do servidor ou minimizá-lo na bandeja ao pressionar o botão Fechar.
|
||||
|
||||
Você pode alterar isso depois nas configurações da interface!
|
||||
tray_or_exit_modal-radio-exit = Sair ao Fechar
|
||||
tray_or_exit_modal-radio-tray = Minimizar para a bandeja do sistema
|
||||
tray_or_exit_modal-submit = Salvar
|
||||
tray_or_exit_modal-cancel = Cancelar
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = Um novo tracker foi encontrado!
|
||||
unknown_device-modal-description =
|
||||
Há um novo tracker com o endereço MAC <b>{ $deviceId }</b>.
|
||||
Deseja conectá-lo ao SlimeVR?
|
||||
unknown_device-modal-confirm = Claro!
|
||||
unknown_device-modal-forget = Ignore-o
|
||||
|
||||
@@ -19,10 +19,12 @@ version_update-close = Закрыть
|
||||
|
||||
## Tips
|
||||
|
||||
tips-find_tracker = Не уверены, какой это трекер? Встряхните его, и трекер выделится в списке.
|
||||
tips-find_tracker = Не уверены, какой трекер какой? Встряхните его, и трекер выделится в списке.
|
||||
tips-do_not_move_heels = Убедитесь, что ваши пятки не двигаются во время записи!
|
||||
tips-file_select = Выберите или перетащите файлы для использования <u>выбрать</u>.
|
||||
tips-tap_setup = Вы можете медленно нажать 2 раза на свой трекер, чтобы выбрать его, вместо того чтобы выбирать его из меню.
|
||||
tips-turn_on_tracker = Используете официальные трекеры SlimeVR? Не забудьте <b><em>включить трекер</em></b> после его подключения к ПК!
|
||||
tips-failed_webgl = Не удалось инициализировать WebGL.
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -144,6 +146,11 @@ widget-imu_visualizer-rotation_raw = RAW
|
||||
widget-imu_visualizer-rotation_preview = Предпросмотр
|
||||
widget-imu_visualizer-rotation_hide = Скрыть
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Предпросмотр скелета
|
||||
widget-skeleton_visualizer-hide = Скрыть
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = Без Статуса
|
||||
@@ -152,6 +159,7 @@ tracker-status-error = Ошибка
|
||||
tracker-status-disconnected = Отключен
|
||||
tracker-status-occluded = Закрыт
|
||||
tracker-status-ok = ОК
|
||||
tracker-status-timed_out = Истекло время ожидания
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -190,6 +198,7 @@ tracker-infos-hardware_rev = Ревизия устройства
|
||||
tracker-infos-hardware_identifier = ID оборудования
|
||||
tracker-infos-imu = Датчик IMU
|
||||
tracker-infos-board_type = Основная плата
|
||||
tracker-infos-network_version = Версия Протокола
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -201,14 +210,17 @@ tracker-settings-assignment_section-edit = Изменить привязку
|
||||
tracker-settings-mounting_section = Положение крепления
|
||||
tracker-settings-mounting_section-description = Где прикреплен трекер?
|
||||
tracker-settings-mounting_section-edit = Изменить прикрепление
|
||||
tracker-settings-drift_compensation_section = Разрешить компенсацию дрифта
|
||||
tracker-settings-drift_compensation_section = Разрешить компенсацию дрейфа
|
||||
tracker-settings-drift_compensation_section-description = Должен ли этот трекер компенсировать свой дрифт?
|
||||
tracker-settings-drift_compensation_section-edit = Разрешить компенсацию дрифта
|
||||
tracker-settings-drift_compensation_section-edit = Разрешить компенсацию дрейфа
|
||||
# The .<name> means it's an attribute and it's related to the top key.
|
||||
# In this case that is the settings for the assignment section.
|
||||
tracker-settings-name_section = Имя трекера
|
||||
tracker-settings-name_section-description = Дай ему милое имя :)
|
||||
tracker-settings-name_section-placeholder = Левая нога NightyBeast'а
|
||||
tracker-settings-forget = Забыть трекер
|
||||
tracker-settings-forget-description = Убирает трекер с SlimeVR Сервер и запрещает ему подключаться к серверу до того как он будет перезапущен. Конфигурация трекера не будет потеряна.
|
||||
tracker-settings-forget-label = Забыть трекер
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -274,15 +286,15 @@ mounting_selection_menu-close = Закрыть
|
||||
|
||||
settings-sidebar-title = Настройки
|
||||
settings-sidebar-general = Общие
|
||||
settings-sidebar-tracker_mechanics = Механики трекеров
|
||||
settings-sidebar-fk_settings = Настройки трекеров
|
||||
settings-sidebar-tracker_mechanics = Механика трекеров
|
||||
settings-sidebar-fk_settings = Настройки отслеживания
|
||||
settings-sidebar-gesture_control = Настройки жестов
|
||||
settings-sidebar-interface = Интерфейс
|
||||
settings-sidebar-osc_router = OSC роутер
|
||||
settings-sidebar-osc_trackers = VRChat OSC Трекеры
|
||||
settings-sidebar-utils = Утилиты
|
||||
settings-sidebar-serial = Консоль
|
||||
settings-sidebar-appearance = Внешность
|
||||
settings-sidebar-appearance = Внешний вид
|
||||
settings-sidebar-notifications = Уведомление
|
||||
|
||||
## SteamVR settings
|
||||
@@ -298,35 +310,45 @@ settings-general-steamvr-description =
|
||||
Полезно для игр или приложений, которые поддерживают только определенные трекеры.
|
||||
settings-general-steamvr-trackers-waist = Талия
|
||||
settings-general-steamvr-trackers-chest = Грудь
|
||||
settings-general-steamvr-trackers-feet = Ступни
|
||||
settings-general-steamvr-trackers-knees = Колени
|
||||
settings-general-steamvr-trackers-elbows = Локти
|
||||
settings-general-steamvr-trackers-hands = Руки
|
||||
settings-general-steamvr-trackers-tracker_toggling = Автоматическое назначение трекеров
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = Автоматически занимается включением и выключением трекеров SlimeVR в зависимости от текущих назначений ваших трекеров
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = Автоматическое назначение трекеров
|
||||
settings-general-steamvr-trackers-hands-warning =
|
||||
<b>Внимание:</b> трекеры рук переопределят ваши контроллеры.
|
||||
Вы уверены?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = Отмена
|
||||
settings-general-steamvr-trackers-hands-warning-done = Да
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
settings-general-tracker_mechanics = Механики трекеров
|
||||
settings-general-tracker_mechanics-filtering = Фильтр
|
||||
settings-general-tracker_mechanics-filtering = Фильтрация
|
||||
# This also cares about multilines
|
||||
settings-general-tracker_mechanics-filtering-description =
|
||||
Выберите тип фильтрации для ваших трекеров.
|
||||
Прогнозирование предсказывает движение, в то время как сглаживание сглаживает движение.
|
||||
settings-general-tracker_mechanics-filtering-type = Тип фильтра
|
||||
settings-general-tracker_mechanics-filtering-type-none = Нет фильтра
|
||||
settings-general-tracker_mechanics-filtering-type = Тип фильтрации
|
||||
settings-general-tracker_mechanics-filtering-type-none = Нет фильтрации
|
||||
settings-general-tracker_mechanics-filtering-type-none-description = Используется вращение как есть. Нет никакой фильтрации.
|
||||
settings-general-tracker_mechanics-filtering-type-smoothing = Сглаживание
|
||||
settings-general-tracker_mechanics-filtering-type-smoothing-description = Сглаживает движения, но добавляет некоторую задержку.
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = Предсказывание
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = Уменьшает задержку и делает движения более быстрыми, но может увеличить дрожание.
|
||||
settings-general-tracker_mechanics-filtering-amount = Количество
|
||||
settings-general-tracker_mechanics-drift_compensation = Компенсация дрифта
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = Время сглаживания сброса отклонения от курса (0 сек. отключает сглаживание)
|
||||
settings-general-tracker_mechanics-drift_compensation = Компенсация дрейфа
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
Компенсирует дрифт по рысканию IMU путем применения обратного вращения.
|
||||
Измените размер компенсации и до скольких сбросов учитывается.
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Компенсация дрифта
|
||||
Компенсирует дрейф IMU по рысканию путем применения обратного вращения.
|
||||
Измените количество компенсации и до скольких сбросов учитывается.
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = Компенсация дрейфа
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = Кол-во компенсации
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = Используйте до x последних сбросов
|
||||
settings-general-tracker_mechanics-save_mounting_reset = Сохранить калибровку автоматического сброса крепления
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
Сохраняет автоматические калибровки сброса крепления для трекеров между перезапусками. Полезный
|
||||
при ношении костюма, в котором трекеры не перемещаются между сессиями. <b>Не рекомендуется для обычных пользователей!</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = Сохранить сброс крепления
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -347,10 +369,21 @@ settings-general-fk_settings-leg_tweak-skating_correction-description = Сила
|
||||
settings-general-fk_settings-leg_tweak-floor_clip-description = Привязка к полу может уменьшить или даже полностью исключить прохождение через пол. При включении обязательно выполните полный сброс и повторную калибровку в игре.
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = Toe-snap пытается угадать вращение ваших ступней, если трекеры для них не используются.
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = Foot-Plant поворачивает ваши ступни так, чтобы они были параллельны земле при контакте.
|
||||
settings-general-fk_settings-leg_fk = Трекинг ноги
|
||||
settings-general-fk_settings-arm_fk = Трекинг руки
|
||||
settings-general-fk_settings-leg_fk = Отслеживание ног
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Включение сброса крепления ног при стоянии на цыпочках.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Сброс крепления ног
|
||||
settings-general-fk_settings-arm_fk = Отслеживание рук
|
||||
settings-general-fk_settings-arm_fk-description = Измените способ отслеживания рук.
|
||||
settings-general-fk_settings-arm_fk-force_arms = Руки от HMD
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Изменение ожидаемой позы руки для сброса крепления.
|
||||
settings-general-fk_settings-arm_fk-back = Назад
|
||||
settings-general-fk_settings-arm_fk-back-description = Режим по умолчанию, в котором плечи идут назад, а предплечья — вперед.
|
||||
settings-general-fk_settings-arm_fk-tpose_up = Т-Поза (вверх)
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Ожидает, что ваши руки будут опущены во время Полного Сброса, и на 90 градусов вверх в стороны во время сброса крепления.
|
||||
settings-general-fk_settings-arm_fk-tpose_down = Т-Поза (вниз)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = Ожидает, что ваши руки будут подняты на 90 градусов вверх во время Полного Сброса, и опущены во время сброса крепления.
|
||||
settings-general-fk_settings-arm_fk-forward = Вперёд
|
||||
settings-general-fk_settings-arm_fk-forward-description = Ожидает, что ваши руки будут подняты на 90 градусов вперед. Полезно для VTube'инга.
|
||||
settings-general-fk_settings-skeleton_settings-toggles = Переключатели скелета
|
||||
settings-general-fk_settings-skeleton_settings-description = Включите или выключите настройки скелета. Рекомендуется оставить их включенными.
|
||||
settings-general-fk_settings-skeleton_settings-extended_spine_model = Модель вытянутого позвоночника
|
||||
@@ -372,7 +405,7 @@ settings-general-fk_settings-vive_emulation-label = Включить эмуля
|
||||
|
||||
## Gesture control settings (tracker tapping)
|
||||
|
||||
settings-general-gesture_control = Контроль жестами
|
||||
settings-general-gesture_control = Управление жестами
|
||||
settings-general-gesture_control-subtitle = Сброс после нажатия
|
||||
settings-general-gesture_control-description = Позволяет запускать сброс настроек нажатием на трекер. Трекер, расположенный выше всего на вашем торсе, используется для быстрого сброса, трекер, расположенный выше всего на вашей левой ноге, используется для сброса, а трекер, расположенный выше всего на вашей правой ноге, используется для сброса установок. Следует отметить, что для регистрации нажатия должны происходить в течение 0,6 секунды.
|
||||
# This is a unit: 3 taps, 2 taps, 1 tap
|
||||
@@ -408,7 +441,7 @@ settings-general-gesture_control-numberTrackersOverThreshold-description = Ув
|
||||
|
||||
## Appearance settings
|
||||
|
||||
settings-interface-appearance = Внешность
|
||||
settings-interface-appearance = Внешний вид
|
||||
settings-general-interface-dev_mode = Режим разработчика
|
||||
settings-general-interface-dev_mode-description = Этот режим может быть полезен, если вам нужны подробные данные или для взаимодействия с подключенными трекерами на более продвинутом уровне.
|
||||
settings-general-interface-dev_mode-label = Режим разработчика
|
||||
@@ -435,6 +468,12 @@ settings-general-interface-feedback_sound = Звук обратной связи
|
||||
settings-general-interface-feedback_sound-description = Эта опция будет воспроизводить звук при срабатывании сброса.
|
||||
settings-general-interface-feedback_sound-label = Звук обратной связи
|
||||
settings-general-interface-feedback_sound-volume = Громкость реакции интерфейса на косание треккера
|
||||
settings-general-interface-connected_trackers_warning = Предупреждение о подключенных трекерах
|
||||
settings-general-interface-connected_trackers_warning-description = Эта опция будет показывать предупреждение каждый раз, когда вы пытаетесь выйти из SlimeVR с одним или несколькими подключенными трекерами. Он напомнит вам о необходимости выключить трекеры, когда вы закончите, чтобы продлить срок службы батареи.
|
||||
settings-general-interface-connected_trackers_warning-label = Предупреждение о подключенных трекеров при выходе
|
||||
settings-general-interface-use_tray = Свернуть в системный трей
|
||||
settings-general-interface-use_tray-description = Позволяет закрыть окно, не закрывая сервер SlimeVR, так что вы можете продолжать использовать его, не беспокоясь о графическом интерфейсе.
|
||||
settings-general-interface-use_tray-label = Свернуть в системный трей
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -456,6 +495,7 @@ settings-serial-factory_reset-warning-cancel = Отмена
|
||||
settings-serial-get_infos = Получить информацию
|
||||
settings-serial-serial_select = Выбрать серийный порт
|
||||
settings-serial-auto_dropdown_item = Авто
|
||||
settings-serial-get_wifi_scan = Получить сканирование Wi-Fi
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -621,8 +661,8 @@ onboarding-done-close = Закрыть гид
|
||||
|
||||
onboarding-connect_tracker-back = Вернуться к учетным данным Wi-Fi
|
||||
onboarding-connect_tracker-title = Подключить трекеры
|
||||
onboarding-connect_tracker-description-p0 = Теперь самое интересное - подключение всех трекеров!
|
||||
onboarding-connect_tracker-description-p1 = Просто подключите все, что еще не подключены, через USB-порт.
|
||||
onboarding-connect_tracker-description-p0-v1 = Теперь самое интересное - подключение трекеров!
|
||||
onboarding-connect_tracker-description-p1-v1 = Подключите каждый трекер по одному через USB-порт.
|
||||
onboarding-connect_tracker-issue-serial = У меня проблемы с подключением!
|
||||
onboarding-connect_tracker-usb = USB Трекер
|
||||
onboarding-connect_tracker-connection_status-none = Поиск трекеров
|
||||
@@ -651,7 +691,7 @@ onboarding-connect_tracker-next = Я подключил все трекеры!
|
||||
## Tracker calibration tutorial
|
||||
|
||||
onboarding-calibration_tutorial = Учебное пособие по калибровке IMU
|
||||
onboarding-calibration_tutorial-subtitle = Это поможет уменьшить дрифт трекера!
|
||||
onboarding-calibration_tutorial-subtitle = Это поможет уменьшить дрейф трекера!
|
||||
onboarding-calibration_tutorial-description = Каждый раз, когда вы включаете трекеры, они должны на мгновение отдохнуть на плоской поверхности для калибровки. Давайте сделаем то же самое, нажав кнопку «{ onboarding-calibration_tutorial-calibrate }», <b>не перемещайте их!</b>
|
||||
onboarding-calibration_tutorial-calibrate = Я положил свои трекеры на стол
|
||||
onboarding-calibration_tutorial-status-waiting = Ждем вас
|
||||
@@ -686,6 +726,7 @@ onboarding-assign_trackers-assigned =
|
||||
}
|
||||
onboarding-assign_trackers-advanced = Показать дополнительные места привязки
|
||||
onboarding-assign_trackers-next = Я привязал все трекеры
|
||||
onboarding-assign_trackers-mirror_view = Зеркальный вид
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -757,7 +798,7 @@ onboarding-assign_trackers-warning-WAIST =
|
||||
|
||||
## Tracker mounting method choose
|
||||
|
||||
onboarding-choose_mounting = Какой метод калибровки монтажа использовать?
|
||||
onboarding-choose_mounting = Какой метод калибровки крепления использовать?
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-description = Ориентация крепления корректирует размещение трекеров на вашем теле.
|
||||
onboarding-choose_mounting-auto_mounting = Автоматическая привязка
|
||||
@@ -768,6 +809,13 @@ onboarding-choose_mounting-manual_mounting = Ручная привязка
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = Рекомендованный
|
||||
onboarding-choose_mounting-manual_mounting-description = Это позволит вам выбрать направление монтажа вручную для каждого трекера
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title =
|
||||
Вы уверены, что хотите сделать
|
||||
Автоматическую калибровку крепления?
|
||||
onboarding-choose_mounting-manual_modal-description = <b>Ручная калибровка крепления рекомендуется для новых пользователей</b>, так как позы автоматической калибровки крепления могут быть трудными для повторения и могут потребовать некоторой практики.
|
||||
onboarding-choose_mounting-manual_modal-confirm = Я уверен в том, что делаю
|
||||
onboarding-choose_mounting-manual_modal-cancel = Отмена
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -802,16 +850,17 @@ onboarding-automatic_mounting-put_trackers_on-next = Я включил и над
|
||||
|
||||
onboarding-choose_proportions = Какой метод калибровки пропорций использовать?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description =
|
||||
Пропорции тела используются для определения размеров вашего тела. Они необходимы для расчета местоположения трекеров.
|
||||
Если пропорции вашего тела не соответствуют сохраненным, точность отслеживания будет хуже, и вы заметите такие вещи, как катание на коньках или скольжение, или ваше тело не совсем соответствует вашему аватару.
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
Пропорции тела используются для определения размеров вашего тела. Они необходимы для вычисления позиций трекеров.
|
||||
Когда пропорции вашего тела не совпадают с сохраненными, точность отслеживания будет хуже, и вы заметите такие вещи, как скольжение или дрифт, или ваше тело не очень хорошо соответствует вашему аватару.
|
||||
<b>Вам нужно измерить свое тело только один раз!</b> Если они не неправильны или ваше тело не изменилось, то вам не нужно делать их снова.
|
||||
onboarding-choose_proportions-auto_proportions = Автоматическая привязка
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Рекомендуется
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv2 =
|
||||
Приложение попытаеться угадать ваши пропорции, записывая образец ваших движений и пропуская его через алгоритм.
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
Это попробует угадать ваши пропорции, записывая образец ваших движений и пропуская его через алгоритм.
|
||||
|
||||
<b>Для этого необходимо, чтобы ваш HMD был подключен к SlimeVR!</b>
|
||||
<b>Для этого необходимо, чтобы ваш Шлем (HMD) был подключен к SlimeVR и был надет на голову!</b>
|
||||
onboarding-choose_proportions-manual_proportions = Ручные пропорции
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = Для небольших штрихов
|
||||
@@ -842,18 +891,18 @@ onboarding-automatic_proportions-put_trackers_on-description = Чтобы отк
|
||||
onboarding-automatic_proportions-put_trackers_on-next = Я надел все свои трекеры
|
||||
onboarding-automatic_proportions-requirements-title = Требования
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
У вас есть как минимум достаточно трекеров, чтобы отслеживать ваши ноги (обычно 5 трекеров).
|
||||
У вас есть трекеры и гарнитура.
|
||||
Вы носите трекеры и гарнитуру.
|
||||
Ваши трекеры и гарнитура подключены к серверу SlimeVR.
|
||||
Ваши трекеры и гарнитура правильно работают на сервере SlimeVR.
|
||||
Ваша гарнитура передает данные о местоположении на сервер SlimeVR (обычно это означает, что SteamVR запущен и подключен к SlimeVR с помощью драйвера SlimeVR SteamVR).
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
У вас достаточно трекеров, чтобы отслеживать ваши ноги (обычно 5 трекеров).
|
||||
У вас есть трекеры и гарнитура, и они на вас надеты.
|
||||
Ваши трекеры и гарнитура подключены к серверу SlimeVR, и правильно функционируют (например, отсутствие лагов, отключений и т. д.)
|
||||
Ваша гарнитура передает данные о местоположении на сервер SlimeVR (обычно это означает, что SteamVR запущен и подключен к SlimeVR с помощью драйвера SteamVR).
|
||||
Ваше отслеживание работает и точно отражает ваши движения (например, вы выполнили полный сброс, и они движутся в правильном направлении при ударах ногами, наклонах, сидении и т. д.).
|
||||
onboarding-automatic_proportions-requirements-next = Я прочитал требования
|
||||
onboarding-automatic_proportions-check_height-title = Проверьте ваш рост
|
||||
onboarding-automatic_proportions-check_height-description = Мы используем ваш рост в качестве основы для наших измерений, используя высоту HMD как приблизительное значение к вашему фактическому росту, но лучше проверить, верны ли эти значения самому!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = Для рассчёта вашего роста, пожалуйста, нажимите кнопку стоя, <u>смотря вперёд</u>. У вас будут 3 секунды после того, как вы нажмете кнопку!
|
||||
onboarding-automatic_proportions-check_height-guardian_tip = Если вы используете автономную гарнитуру виртуальной реальности, убедитесь, что у вас включена Граница, чтобы ваш рост был верным!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = Я стою!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = Неизвестно
|
||||
@@ -902,6 +951,15 @@ onboarding-automatic_proportions-error_modal-confirm = Принято!
|
||||
|
||||
home-no_trackers = Трекеры не обнаружены и не привязаны
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = Трекеры все еще включены
|
||||
trackers_still_on-modal-description =
|
||||
Один или несколько трекеров все еще включены.
|
||||
Вы точно хотите выйти из SlimeVR?
|
||||
trackers_still_on-modal-confirm = Выйти из SlimeVR
|
||||
trackers_still_on-modal-cancel = Погоди...
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = Рекомендуется выполнить полный сброс, так как один или несколько трекеров не настроены.
|
||||
@@ -911,3 +969,31 @@ status_system-StatusSteamVRDisconnected =
|
||||
*[other] В настоящее время не подключен к SteamVR через драйвер SlimeVR.
|
||||
}
|
||||
status_system-StatusTrackerError = В трекере { $trackerName } обнаружена ошибка.
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = Показать
|
||||
tray_menu-hide = Скрыть
|
||||
tray_menu-quit = Выйти
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = Что должна делать кнопка закрытия?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
Это позволяет вам выбрать, хотите ли вы выйти из сервера или свернуть его в трей при нажатии кнопки закрытия.
|
||||
|
||||
Вы можете изменить это позже в настройках интерфейса!
|
||||
tray_or_exit_modal-radio-exit = Выход при закрытии
|
||||
tray_or_exit_modal-radio-tray = Свернуть в системный трей
|
||||
tray_or_exit_modal-submit = Сохранить
|
||||
tray_or_exit_modal-cancel = Отмена
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = Новый трекер был найден!
|
||||
unknown_device-modal-description =
|
||||
Появился новый трекер с MAC-адресом <b>{ $deviceId }</b>.
|
||||
Хотите подключить его к SlimeVR?
|
||||
unknown_device-modal-confirm = Конечно!
|
||||
unknown_device-modal-forget = Игнорировать
|
||||
|
||||
@@ -13,15 +13,19 @@ websocket-connection_lost = ขาดการเชื่อมต่อกั
|
||||
## Update notification
|
||||
|
||||
version_update-title = มีเวอใหม่พร้อมแล้ว: { $version }
|
||||
version_update-description = คลิกที่ "{ version_update-update }" จะดาวน์โหลดตัวติดตั้ง SlimeVR ให้คุณ
|
||||
version_update-update = อัพเดท
|
||||
version_update-close = ปิด
|
||||
|
||||
## Tips
|
||||
|
||||
tips-find_tracker = ไม่แน่ใจว่าแทร็กเก้อตัวไหน? เขย่าแทร็กเก้อและจะไฮไลท์ตัวที่เกี่ยวข้อง
|
||||
tips-do_not_move_heels = ให้แน่ใจว่าเท้าไม่ขยับระหว่างการอัด/บันทึก
|
||||
tips-file_select = ลากและวางไฟล์ที่จะใช้ หรือ<u>เรียกดู</u>
|
||||
|
||||
## Body parts
|
||||
|
||||
body_part-NONE = ไม่ได้มอบหมาย
|
||||
body_part-HEAD = หัว
|
||||
body_part-NECK = คอ
|
||||
body_part-RIGHT_SHOULDER = ใหล่ขวา
|
||||
@@ -31,6 +35,7 @@ body_part-RIGHT_HAND = มือขวา
|
||||
body_part-RIGHT_UPPER_LEG = น่องขาขวา
|
||||
body_part-RIGHT_LOWER_LEG = ข้อเท้าขวา
|
||||
body_part-RIGHT_FOOT = เท้าขวา
|
||||
body_part-UPPER_CHEST = หน้าอกส่วนบน
|
||||
body_part-CHEST = หน้าอก
|
||||
body_part-WAIST = เอว
|
||||
body_part-HIP = สะโพก
|
||||
@@ -46,51 +51,92 @@ body_part-LEFT_FOOT = เท้าขวา
|
||||
|
||||
skeleton_bone-NONE = ไม่มี
|
||||
skeleton_bone-NECK = ความยาวขอ
|
||||
skeleton_bone-torso_group = ความยาวลําตัว
|
||||
skeleton_bone-UPPER_CHEST = ความยาวหน้าอกส่วนบน
|
||||
skeleton_bone-CHEST_OFFSET = ออฟเซ็ตหน้าอก
|
||||
skeleton_bone-CHEST = ความยาวหน้าอก
|
||||
skeleton_bone-WAIST = ความยาวเอว
|
||||
skeleton_bone-HIP = ความยาวสะโพก
|
||||
skeleton_bone-HIP_OFFSET = ออฟเซ็ตสะโพก
|
||||
skeleton_bone-HIPS_WIDTH = ความกว้างสะโพก
|
||||
skeleton_bone-leg_group = ความยาวขา
|
||||
skeleton_bone-UPPER_LEG = ความยาวขาส่วนบน
|
||||
skeleton_bone-LOWER_LEG = ความยาวขาส่วนล่าง
|
||||
skeleton_bone-FOOT_LENGTH = ความยาวเท้า
|
||||
skeleton_bone-SHOULDERS_DISTANCE = ระยะไหล่
|
||||
skeleton_bone-SHOULDERS_WIDTH = ความกว่างไหล่
|
||||
skeleton_bone-arm_group = ความยาวแขน
|
||||
skeleton_bone-UPPER_ARM = ความยาวแขนส่วนบน
|
||||
skeleton_bone-LOWER_ARM = ความยาวแขนส่วนล่าง
|
||||
skeleton_bone-HAND_Y = ระยะมือ Y
|
||||
skeleton_bone-HAND_Z = ระยะมือ Z
|
||||
skeleton_bone-ELBOW_OFFSET = ออฟเซ็ตข้อศอก
|
||||
|
||||
## Tracker reset buttons
|
||||
|
||||
reset-reset_all = รีเซ็ตสัดส่วนร้างกายทั้งหมด
|
||||
reset-full = รีเซ็ตทั้งหมด
|
||||
reset-mounting = รีเซ็ตการสวมใส่
|
||||
|
||||
## Serial detection stuff
|
||||
|
||||
serial_detection-new_device-p2 = โปรดเลือกสิ่งที่คุณต้องการทํากับมัน
|
||||
serial_detection-open_wifi = เชื่อมต่อ Wi-Fi
|
||||
serial_detection-submit = ส่ง
|
||||
serial_detection-close = ปิด
|
||||
|
||||
## Navigation bar
|
||||
|
||||
navbar-home = หน้าหลัก
|
||||
navbar-body_proportions = สัดส่วนร่างกาย
|
||||
navbar-trackers_assign = การกำหนดแทรกเก้อ
|
||||
navbar-onboarding = Setup Wizard
|
||||
navbar-settings = ตั้งค่า
|
||||
|
||||
## Biovision hierarchy recording
|
||||
|
||||
bvh-start_recording = อัด BVH
|
||||
bvh-recording = กำลังอัดบันทึก
|
||||
|
||||
## Tracking pause
|
||||
|
||||
tracking-unpaused = หยุดการติดตามชั่วคราว
|
||||
tracking-paused = ยกเลิกการหยุดการติดตาม
|
||||
|
||||
## Widget: Overlay settings
|
||||
|
||||
widget-overlay = โอเวอร์เลย์.
|
||||
widget-overlay-is_visible_label = แสดงโอเวอร์เลย์ ใน SteamVR
|
||||
widget-overlay-is_mirrored_label = แสดงโอเวอร์เลย์เป็นกระจก
|
||||
|
||||
## Widget: Drift compensation
|
||||
|
||||
widget-drift_compensation-clear = เคลียร์การชดเชยดริฟ
|
||||
|
||||
## Widget: Clear Reset Mounting
|
||||
|
||||
|
||||
## Widget: Developer settings
|
||||
|
||||
widget-developer_mode = โหมดนักพัฒนา
|
||||
widget-developer_mode-high_contrast = คอนทราสต์สูง
|
||||
widget-developer_mode-fast_data_feed = ฟีดข้อมูลเร็ว
|
||||
widget-developer_mode-filter_slimes_and_hmd = แยก Slime ออกจาก HMD
|
||||
widget-developer_mode-sort_by_name = เรียงด้วยชื่อ
|
||||
widget-developer_mode-more_info = ข้อมูลเพิ่มเติม
|
||||
|
||||
## Widget: IMU Visualizer
|
||||
|
||||
widget-imu_visualizer = การหมุน
|
||||
widget-imu_visualizer-rotation_raw = ดิบ
|
||||
widget-imu_visualizer-rotation_preview = ดูตัวอย่าง
|
||||
widget-imu_visualizer-rotation_hide = ซ่อน
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = ตัวอย่างโครงกระดูก
|
||||
widget-skeleton_visualizer-hide = ซ่อน
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = ไม่มีสถานะ
|
||||
@@ -105,32 +151,56 @@ tracker-table-column-name = ชื่อ
|
||||
tracker-table-column-type = พิมพ์
|
||||
tracker-table-column-battery = แบตเตอรี่
|
||||
tracker-table-column-ping = ความหน่วง
|
||||
tracker-table-column-tps = TPS
|
||||
tracker-table-column-temperature = อุณหภูมิ °C
|
||||
tracker-table-column-linear-acceleration = อัตราเร่ง X/Y/Z
|
||||
tracker-table-column-rotation = การหมุน X/Y/Z
|
||||
tracker-table-column-position = ตําแหน่ง X/Y/Z
|
||||
tracker-table-column-url = URL
|
||||
|
||||
## Tracker rotation
|
||||
|
||||
tracker-rotation-front = หน้า
|
||||
tracker-rotation-front_left = หน้าซ้าย
|
||||
tracker-rotation-front_right = หน้าขวา
|
||||
tracker-rotation-left = ซ้าย
|
||||
tracker-rotation-right = ขวา
|
||||
tracker-rotation-back = หลัง
|
||||
tracker-rotation-back_left = หลังซ้าย
|
||||
tracker-rotation-back_right = หลังขวา
|
||||
tracker-rotation-custom = กำหนดเอง
|
||||
|
||||
## Tracker information
|
||||
|
||||
tracker-infos-manufacturer = ผู้ผลิต
|
||||
tracker-infos-display_name = ชื่อที่ใช้แสดง
|
||||
tracker-infos-custom_name = ชื่อที่กําหนดเอง
|
||||
tracker-infos-url = URL แทรกเก้อ
|
||||
tracker-infos-version = เวอร์ชั่นของเฟิร์มแวร์
|
||||
tracker-infos-hardware_identifier = รหัสฮาร์ดแวร์
|
||||
tracker-infos-imu = เซ็นเซอร์ IMU
|
||||
tracker-infos-board_type = เมนบอร์ด
|
||||
|
||||
## Tracker settings
|
||||
|
||||
tracker-settings-title = การตั้งค่าแทรกเก้อ
|
||||
tracker-settings-assignment_section = กำหนด
|
||||
tracker-settings-assignment_section-edit = เปลี่ยนการกำหนด
|
||||
tracker-settings-drift_compensation_section = อนุญาตชดเชยการดริฟ
|
||||
tracker-settings-drift_compensation_section-edit = อนุญาตชดเชยการดริฟ
|
||||
# The .<name> means it's an attribute and it's related to the top key.
|
||||
# In this case that is the settings for the assignment section.
|
||||
tracker-settings-name_section = ชื่อแทรกเก้อ
|
||||
tracker-settings-name_section-description = ใส่ชื่อน่ารักๆให้ :)
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
tracker-part_card-no_name = ไม่มีชื่อ
|
||||
tracker-part_card-unassigned = ไม่ได้กำหนด
|
||||
|
||||
## Body assignment menu
|
||||
|
||||
body_assignment_menu-manage_trackers = จัดการแทรเก้อทั้งหมด
|
||||
|
||||
## Tracker assignment menu
|
||||
|
||||
@@ -144,21 +214,35 @@ mounting_selection_menu-close = ปิด
|
||||
## Sidebar settings
|
||||
|
||||
settings-sidebar-title = การตั้งค่า
|
||||
settings-sidebar-general = ทั่วไป
|
||||
settings-sidebar-interface = อินเทอร์เฟซ
|
||||
|
||||
## SteamVR settings
|
||||
|
||||
settings-general-steamvr = SteamVR
|
||||
settings-general-steamvr-subtitle = แทรกเก้อ SteamVR
|
||||
settings-general-steamvr-trackers-waist = เอว
|
||||
settings-general-steamvr-trackers-chest = หน้าอก
|
||||
settings-general-steamvr-trackers-feet = เท้า
|
||||
settings-general-steamvr-trackers-knees = หัวเข่า
|
||||
settings-general-steamvr-trackers-elbows = ข้อศอก
|
||||
settings-general-steamvr-trackers-hands = มือ
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
settings-general-tracker_mechanics-filtering-amount = จำนวน
|
||||
settings-general-tracker_mechanics-drift_compensation = การชดเชยดริฟท์
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = การชดเชยดริฟท์
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = จํานวนชดเชยดริฟ
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
settings-general-fk_settings-arm_fk-back = หลัง
|
||||
|
||||
## Gesture control settings (tracker tapping)
|
||||
|
||||
|
||||
## Interface settings
|
||||
## Appearance settings
|
||||
|
||||
settings-general-interface-dev_mode = โหมดนักพัฒนา
|
||||
settings-general-interface-dev_mode-label = โหมดนักพัฒนา
|
||||
@@ -167,6 +251,9 @@ settings-general-interface-lang = เลือกภาษา
|
||||
settings-general-interface-lang-description = เลือกภาษาตั้งต้นที่คุณต้องการใช้
|
||||
settings-general-interface-lang-placeholder = เลือกภาษาที่ใช้
|
||||
|
||||
## Notification settings
|
||||
|
||||
|
||||
## Serial settings
|
||||
|
||||
settings-serial-reboot = เริ่มการทำงานใหม่
|
||||
@@ -285,5 +372,17 @@ onboarding-automatic_proportions-verify_results-description = ตรวจสอ
|
||||
## Home
|
||||
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
|
||||
## Status system
|
||||
|
||||
|
||||
## Tray Menu
|
||||
|
||||
|
||||
## First exit modal
|
||||
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
|
||||
@@ -53,6 +53,8 @@ body_part-LEFT_FOOT = Bàn chân trái
|
||||
skeleton_bone-NONE = Chưa được gán
|
||||
skeleton_bone-HEAD = Sai số đầu
|
||||
skeleton_bone-NECK = Chiều dài cổ
|
||||
skeleton_bone-torso_group = Độ dài thân
|
||||
skeleton_bone-UPPER_CHEST = Độ dài ngực trên
|
||||
skeleton_bone-CHEST_OFFSET = Sai số ngực
|
||||
skeleton_bone-CHEST = Khoảng cách ngực
|
||||
skeleton_bone-WAIST = Khoảng cách eo
|
||||
@@ -70,6 +72,8 @@ skeleton_bone-SHOULDERS_WIDTH = Chiều rộng vai
|
||||
skeleton_bone-arm_group = Chiều dài cánh tay
|
||||
skeleton_bone-UPPER_ARM = Chiều dài bắp tay
|
||||
skeleton_bone-LOWER_ARM = Chiều dài cẳng tay
|
||||
skeleton_bone-HAND_Y = Khoảng cách tay Y
|
||||
skeleton_bone-HAND_Z = Khoảng cách tay Z
|
||||
skeleton_bone-ELBOW_OFFSET = Sai số khuỷu tay
|
||||
|
||||
## Tracker reset buttons
|
||||
@@ -77,6 +81,7 @@ skeleton_bone-ELBOW_OFFSET = Sai số khuỷu tay
|
||||
reset-reset_all = Đặt lại tất cả bộ phận
|
||||
reset-full = Đặt lại
|
||||
reset-mounting = Đặt lại hướng gắn tracker
|
||||
reset-yaw = Reset Yaw
|
||||
|
||||
## Serial detection stuff
|
||||
|
||||
@@ -139,6 +144,11 @@ widget-imu_visualizer-rotation_raw = Gốc
|
||||
widget-imu_visualizer-rotation_preview = Qua xử lí
|
||||
widget-imu_visualizer-rotation_hide = Ẩn
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = Xem trước khung xương
|
||||
widget-skeleton_visualizer-hide = Ẩn
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = Không có trạng thái
|
||||
@@ -147,6 +157,7 @@ tracker-status-error = Lỗi
|
||||
tracker-status-disconnected = Đã ngắt kết nối
|
||||
tracker-status-occluded = Nghẽn
|
||||
tracker-status-ok = Đã kết nối
|
||||
tracker-status-timed_out = Hết thời gian chờ
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -164,10 +175,15 @@ tracker-table-column-url = Đường dẫn
|
||||
## Tracker rotation
|
||||
|
||||
tracker-rotation-front = Trước
|
||||
tracker-rotation-front_left = Phía trước-Bên trái
|
||||
tracker-rotation-front_right = Phía trước-Bên phải
|
||||
tracker-rotation-left = Trái
|
||||
tracker-rotation-right = Phải
|
||||
tracker-rotation-back = Sau
|
||||
tracker-rotation-back_left = Phía sau-Bên trái
|
||||
tracker-rotation-back_right = Phía sau-Bên phải
|
||||
tracker-rotation-custom = Tùy chọn
|
||||
tracker-rotation-overriden = (được ghi đè bởi reset hướng gắn tracker)
|
||||
|
||||
## Tracker information
|
||||
|
||||
@@ -179,6 +195,7 @@ tracker-infos-version = Phiên bản firmware
|
||||
tracker-infos-hardware_rev = Revision phần cứng
|
||||
tracker-infos-hardware_identifier = Hardware ID
|
||||
tracker-infos-imu = Cảm biến IMU (IMU Sensor)
|
||||
tracker-infos-board_type = Bảng mạch chính
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -231,6 +248,7 @@ tracker_selection_menu-RIGHT_UPPER_LEG = { -tracker_selection-part } bắp chân
|
||||
tracker_selection_menu-RIGHT_LOWER_LEG = { -tracker_selection-part } cẳng chân phải?
|
||||
tracker_selection_menu-RIGHT_FOOT = { -tracker_selection-part } bàn chân phải?
|
||||
tracker_selection_menu-RIGHT_CONTROLLER = { -tracker_selection-part } tay cầm bên phải?
|
||||
tracker_selection_menu-UPPER_CHEST = { -tracker_selection-part } ngực trên?
|
||||
tracker_selection_menu-CHEST = { -tracker_selection-part } ngực?
|
||||
tracker_selection_menu-WAIST = { -tracker_selection-part } eo?
|
||||
tracker_selection_menu-HIP = { -tracker_selection-part } hông?
|
||||
@@ -245,6 +263,11 @@ tracker_selection_menu-LEFT_CONTROLLER = { -tracker_selection-part } tay cầm b
|
||||
tracker_selection_menu-unassigned = Chưa gắn vị trí
|
||||
tracker_selection_menu-assigned = Đã gán vị trí
|
||||
tracker_selection_menu-dont_assign = Không gắn
|
||||
# This line cares about multilines.
|
||||
# <b>text</b> means that the text should be bold.
|
||||
tracker_selection_menu-neck_warning =
|
||||
<b>Cảnh báo:</b> Tracker ở cổ rất nguy hiểm và có thể gây tử vong nếu điều chỉnh quá chặt,
|
||||
Dây đeo có thể cắt lưu thông máu đến đầu của bạn!
|
||||
tracker_selection_menu-neck_warning-done = Tôi hiểu những rủi ro
|
||||
tracker_selection_menu-neck_warning-cancel = Hủy
|
||||
|
||||
@@ -265,6 +288,7 @@ settings-sidebar-osc_router = Router OSC
|
||||
settings-sidebar-osc_trackers = Trình theo dõi VRChat OSC
|
||||
settings-sidebar-utils = Công cụ
|
||||
settings-sidebar-serial = Cổng Serial
|
||||
settings-sidebar-appearance = Giao diện
|
||||
settings-sidebar-notifications = Thông báo
|
||||
|
||||
## SteamVR settings
|
||||
@@ -322,10 +346,28 @@ settings-general-fk_settings-leg_tweak-floor_clip = Ngăn xuyên sàn
|
||||
# since this largely prevents this it corrects for it hence skating correction (note this may be renamed to sliding correction)
|
||||
# definition - Guesses when each foot is in contact with the ground and uses that information to improve tracking
|
||||
settings-general-fk_settings-leg_tweak-skating_correction = Sửa trượt
|
||||
settings-general-fk_settings-leg_tweak-toe_snap = Đoán hướng xoay chân
|
||||
settings-general-fk_settings-leg_tweak-foot_plant = Cân bằng chân
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-amount = Mức độ sửa
|
||||
settings-general-fk_settings-leg_tweak-skating_correction-description = Sửa trượt sẽ điều chỉnh nhằm giảm thiểu hiện tượng trượt băng nhưng có thể làm giảm độ chính xác trong một vài kiểu chuyển động nhất định. Khi bật tính năng này, vui lòng đảm bảo thực hiện thao tác đặt lại hoàn toàn và hiệu chỉnh lại trong trò chơi.
|
||||
settings-general-fk_settings-leg_tweak-floor_clip-description = Ngăn xuyên sàn có thể giảm hoặc loại bỏ khả năng tracker của bạn đi xuyên sàn nhà. Khi bật tính năng này, vui lòng đảm bảo thực hiện thao tác đặt lại hoàn toàn và hiệu chỉnh lại trong trò chơi.
|
||||
settings-general-fk_settings-leg_tweak-toe_snap-description = Đoán hướng xoay chân sẽ đoán hướng xoay của chân đồng thời khóa ngón chân của bạn vào mặt sàn bạn nếu bạn không sử dụng tracker cho chân.
|
||||
settings-general-fk_settings-leg_tweak-foot_plant-description = Cân bằng chân sẽ xoay chân song song với mặt đất khi lại gần.
|
||||
settings-general-fk_settings-leg_fk = Track chân
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet-description = Đặt lại hướng gắn tracker bàn chân bằng cách nhón chân.
|
||||
settings-general-fk_settings-leg_fk-reset_mounting_feet = Đặt lại hướng gắn tracker bàn chân
|
||||
settings-general-fk_settings-arm_fk = Track cánh tay
|
||||
settings-general-fk_settings-arm_fk-description = Thay đổi cách cánh tay được track
|
||||
settings-general-fk_settings-arm_fk-force_arms = Lấy dữ liệu cánh tay từ kính
|
||||
settings-general-fk_settings-arm_fk-reset_mode-description = Thay đổi tư thế cánh tay để đặt lại hướng gắn tracker.
|
||||
settings-general-fk_settings-arm_fk-back = Khuỷu tay ra sau
|
||||
settings-general-fk_settings-arm_fk-back-description = Chế độ mặc định, với cánh tay trên trỏ về phía sau và cánh tay dưới hướng về phía trước.
|
||||
settings-general-fk_settings-arm_fk-tpose_up = T-pose
|
||||
settings-general-fk_settings-arm_fk-tpose_up-description = Hai tay của bạn sẽ hướng xuống ở hai bên khi đặt lại hoàn toàn, và đưa lên 90 độ sang hai bên khi đặt lại hướng gắn tracker.
|
||||
settings-general-fk_settings-arm_fk-tpose_down = T-pose (ngược lại)
|
||||
settings-general-fk_settings-arm_fk-tpose_down-description = Hai tay của bạn sẽ đưa lên 90 độ sang hai bên khi đặt lại hoàn toàn, và hai tay hướng xuống hai bên khi đặt lại hướng gắn tracker.
|
||||
settings-general-fk_settings-arm_fk-forward = Hai tay ra trước
|
||||
settings-general-fk_settings-arm_fk-forward-description = Hai cánh tay của bạn nâng lên 90 độ về phía trước. Hữu dụng cho việc VTubing.
|
||||
settings-general-fk_settings-skeleton_settings-description = Bật hoặc tắt các cài đặt về khung cơ thể. Các lựa chọn này nên được giữ bật
|
||||
settings-general-fk_settings-self_localization-title = Chế độ Mocap
|
||||
settings-general-fk_settings-vive_emulation-title = Giả lập tracker Vive
|
||||
@@ -353,6 +395,7 @@ settings-general-gesture_control-mountingResetTaps = Số lần chạm cho đặ
|
||||
|
||||
## Appearance settings
|
||||
|
||||
settings-interface-appearance = Giao diện
|
||||
settings-general-interface-dev_mode = Chế độ nhà phát triển
|
||||
settings-general-interface-dev_mode-description = Hữu dụng nếu cần thêm thông tin chi tiết của tracker hay can thiệp sâu hơn vào tracker
|
||||
settings-general-interface-dev_mode-label = Chế độ nhà phát triển
|
||||
@@ -360,6 +403,8 @@ settings-general-interface-theme = Màu giao diện
|
||||
settings-general-interface-lang = Thay đổi ngôn ngữ (Change language)
|
||||
settings-general-interface-lang-description = Đổi ngôn ngữ hiển thị (Change the default language you want to use)
|
||||
settings-general-interface-lang-placeholder = Chọn ngôn ngữ để sử dụng (Select the language to use)
|
||||
# Keep the font name untranslated
|
||||
settings-interface-appearance-font = Phông chữ cho GUI
|
||||
settings-interface-appearance-font-placeholder = Phông chữ mặc định
|
||||
settings-interface-appearance-font-os_font = Phông chữ hệ điều hành
|
||||
settings-interface-appearance-font-slime_font = Phông chữ mặc định
|
||||
@@ -444,9 +489,30 @@ settings-osc-vrchat-network-trackers-elbows = Khuỷu tay
|
||||
|
||||
## VMC OSC settings
|
||||
|
||||
settings-osc-vmc = Virtual Motion Capture
|
||||
settings-osc-vmc-enable = Bật
|
||||
settings-osc-vmc-enable-description = Cho phép nhận và gửi dữ liệu OSC
|
||||
settings-osc-vmc-enable-label = Chuyển tiếp dữ liệu OSC
|
||||
settings-osc-vmc-network = Cổng mạng (Network ports)
|
||||
settings-osc-vmc-network-description = Đặt các cổng để nghe và gửi dữ liệu qua VMC.
|
||||
settings-osc-vmc-network-port_in =
|
||||
.label = Cổng vào (Port In)
|
||||
.placeholder = Port in (default: 39540)
|
||||
settings-osc-vmc-network-port_out =
|
||||
.label = Cổng ra (Port out)
|
||||
.placeholder = Port out (default: 39539)
|
||||
settings-osc-vmc-network-address = Địa chỉ mạng (Network address)
|
||||
settings-osc-vmc-network-address-description = Chọn địa chỉ để gửi dữ liệu qua VMC.
|
||||
settings-osc-vmc-network-address-placeholder = Địa chỉ IPV4
|
||||
settings-osc-vmc-vrm = Model VRM
|
||||
settings-osc-vmc-vrm-description = Tải mô hình VRM để cho phép neo đầu và cho phép khả năng tương thích cao hơn với các ứng dụng khác.
|
||||
settings-osc-vmc-vrm-model_unloaded = Chưa có mô hình tải lên
|
||||
settings-osc-vmc-vrm-model_loaded =
|
||||
{ $titled ->
|
||||
[true] Mô hình đã được tải: { $name }
|
||||
*[other] Mô hình chưa có tiêu đề đã được tải
|
||||
}
|
||||
settings-osc-vmc-vrm-file_select = Kéo và thả mô hình để sử dụng hoặc <u>duyệt file</u>
|
||||
|
||||
## Setup/onboarding menu
|
||||
|
||||
@@ -564,6 +630,9 @@ onboarding-assign_trackers-next = Hoàn thành
|
||||
|
||||
## Tracker mounting method choose
|
||||
|
||||
# Italized text
|
||||
onboarding-choose_mounting-auto_mounting-label = Thử nghiệm
|
||||
onboarding-choose_mounting-manual_modal-cancel = Hủy
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -596,6 +665,22 @@ onboarding-automatic_mounting-put_trackers_on-next = Tiếp tục
|
||||
|
||||
## Tracker proportions method choose
|
||||
|
||||
onboarding-choose_proportions-auto_proportions = Đo kích thước cơ thể tự động
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = Khuyến khích dùng
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
Tính năng này sẽ đoán tỷ lệ cơ thể của bạn bằng cách ghi lại một mẫu chuyển động của bạn và chuyển nó qua một thuật toán.
|
||||
|
||||
<b>Tính năng này sẽ yêu cầu headset của bạn (HMD) được kết nối với SlimeVR và đang nằm ở trên đầu của bạn!</b>
|
||||
onboarding-choose_proportions-manual_proportions = Đo kích thước cơ thể thủ công
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = Cho chính xác
|
||||
onboarding-choose_proportions-manual_proportions-description = Tính năng này sẽ cho phép bạn điều chỉnh tỉ lệ cơ thể của mình theo cách thủ công bằng cách chỉnh sửa các con số một cách trực tiếp
|
||||
onboarding-choose_proportions-export = Xuất tỉ lệ cơ thể
|
||||
onboarding-choose_proportions-import = Nhập tỉ lệ cơ thể
|
||||
onboarding-choose_proportions-import-success = Đã được nhập
|
||||
onboarding-choose_proportions-import-failed = Thất bại
|
||||
onboarding-choose_proportions-file_type = File tỉ lệ cơ thể
|
||||
|
||||
## Tracker manual proportions setup
|
||||
|
||||
@@ -615,16 +700,40 @@ onboarding-automatic_proportions-put_trackers_on-title = Đeo tracker lên ngư
|
||||
onboarding-automatic_proportions-put_trackers_on-description = Để đo kích thước cơ thể, SlimeVR sẽ sử dụng một thuật toán để dự đoán kích thước của các bộ phận, hãy đeo tracker theo đúng vị trí đã thiết lập như hình bên
|
||||
onboarding-automatic_proportions-put_trackers_on-next = Tiếp tục
|
||||
onboarding-automatic_proportions-requirements-title = Yêu cầu
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
Bạn có ít nhất đủ tracker để theo dõi bàn chân của mình (thường là 5 tracker).
|
||||
Bạn đã bật tracker và headset và đang đeo chúng.
|
||||
Tracker và headset của bạn được kết nối với máy chủ SlimeVR và đang hoạt động bình thường (ví dụ: không bị lag, ngắt kết nối, v.v.).
|
||||
Headset của bạn đang báo cáo dữ liệu vị trí cho máy chủ SlimeVR (điều này thường có nghĩa là SteamVR đang chạy và kết nối với SlimeVR bằng driver SteamVR của SlimeVR).
|
||||
Tracking của bạn đang hoạt động và thể hiện chính xác các chuyển động của bạn (ví dụ: bạn đã thực hiện thiết đặt lại hoàn toàn và chúng di chuyển đúng hướng khi đá, cúi xuống, ngồi, v.v.).
|
||||
onboarding-automatic_proportions-requirements-next = Tôi đã đọc các yêu cầu
|
||||
onboarding-automatic_proportions-check_height-title = Kiểm tra chiều cao của bạn
|
||||
onboarding-automatic_proportions-check_height-description = Chúng tôi sử dụng chiều cao của bạn làm cơ sở cho các phép đo của chúng tôi bằng cách sử dụng chiều cao của headset (HMD) làm chiều cao ước tính thực tế của bạn, nhưng tốt hơn hết bạn nên tự kiểm tra xem chúng có đúng không!
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = Vui lòng nhấn nút trong khi đứng <u>thẳng</u> để tính chiều cao của bạn. Bạn có 3 giây sau khi nhấn nút!
|
||||
onboarding-automatic_proportions-check_height-fetch_height = Tôi đang đứng!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = Không rõ
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-hmd_height1 = Chiều cao của HMD là
|
||||
# Shows an element below it
|
||||
onboarding-automatic_proportions-check_height-height1 = vậy chiều cao thật của bạn là
|
||||
onboarding-automatic_proportions-check_height-next_step = Những chỉ số này là đúng
|
||||
onboarding-automatic_proportions-start_recording-title = Chuẩn bị đo
|
||||
onboarding-automatic_proportions-start_recording-description = Phần mềm sẽ đo một số chuyển động, cử chỉ cụ thể, hãy chuẩn bị cho việc di chuyển theo yêu cầu trong phần tiếp theo
|
||||
onboarding-automatic_proportions-start_recording-next = Bắt đầu
|
||||
onboarding-automatic_proportions-recording-title = REC
|
||||
onboarding-automatic_proportions-recording-description-p0 = Đang ghi...
|
||||
onboarding-automatic_proportions-recording-description-p1 = Thực hiện các thao tác sau:
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-recording-steps =
|
||||
Đứng thẳng, xoay đầu một vòng tròn.
|
||||
Cong lưng về phía trước và ngồi xổm. Trong khi ngồi xổm, nhìn sang trái, sau đó sang phải.
|
||||
Xoay phần thân trên của bạn sang trái (ngược chiều kim đồng hồ), sau đó đưa tay xuống đất.
|
||||
Xoay phần thân trên của bạn sang phải (theo chiều kim đồng hồ), sau đó với tay xuống đất.
|
||||
Xoay hông của bạn theo chuyển động tròn như thể bạn đang xoay vòng hula.
|
||||
Nếu còn thời gian, bạn có thể lặp lại các bước này cho đến khi kết thúc.
|
||||
onboarding-automatic_proportions-recording-processing = Đang xử lí kết quả...
|
||||
# $time (Number) - Seconds left for the automatic calibration recording to finish (max 20)
|
||||
onboarding-automatic_proportions-recording-timer =
|
||||
@@ -640,12 +749,24 @@ onboarding-automatic_proportions-verify_results-redo = Thử lại
|
||||
onboarding-automatic_proportions-verify_results-confirm = Kết quả tương đối chính xác
|
||||
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 =
|
||||
<b>Cảnh báo:</b> Một lỗi đã được tìm thấy trong khi ước tính tỷ lệ cơ thể!
|
||||
Vui lòng <docs>kiểm tra tài liệu</docs> hoặc tham gia <discord>Discord</discord> của chúng tôi để được trợ giúp ^_^
|
||||
onboarding-automatic_proportions-error_modal-confirm = Đã hiểu!
|
||||
|
||||
## Home
|
||||
|
||||
home-no_trackers = Không tìm thấy tracker / Tracker chưa được gán
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = Tracker vẫn còn bật
|
||||
trackers_still_on-modal-description =
|
||||
Vẫn còn một hoặc nhiều tracker vẫn đang bật.
|
||||
Bạn vẫn muốn thoát khỏi SlimeVR?
|
||||
trackers_still_on-modal-confirm = Thoát SlimeVR
|
||||
trackers_still_on-modal-cancel = Vui lòng đợi...
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = Bạn nên thực hiện thiết lập lại toàn bộ vì một hoặc nhiều trình theo dõi không được điều chỉnh.
|
||||
|
||||
@@ -23,6 +23,8 @@ tips-find_tracker = 分不清哪个追踪器是哪个了?摇一摇它,对应
|
||||
tips-do_not_move_heels = 确保你的脚跟在录制的时候不会发生移动!
|
||||
tips-file_select = 拖放文档或 <u>浏览文档</u> 以使用
|
||||
tips-tap_setup = 你可以缓慢地敲击2次追踪器来选中它,而不是从菜单中选取。
|
||||
tips-turn_on_tracker = 如果使用的是 SlimeVR 官方的追踪器,请在将追踪器连接到电脑后再<b><em>打开追踪器的电源</em></b>!
|
||||
tips-failed_webgl = WebGL初始化失败
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -144,6 +146,11 @@ widget-imu_visualizer-rotation_raw = 原始旋转
|
||||
widget-imu_visualizer-rotation_preview = 预览
|
||||
widget-imu_visualizer-rotation_hide = 隐藏
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = 骨架预览
|
||||
widget-skeleton_visualizer-hide = 隐藏
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = 无状态
|
||||
@@ -152,6 +159,7 @@ tracker-status-error = 错误
|
||||
tracker-status-disconnected = 断开连接
|
||||
tracker-status-occluded = 被遮挡
|
||||
tracker-status-ok = 已连接
|
||||
tracker-status-timed_out = 连接超时
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -190,6 +198,7 @@ tracker-infos-hardware_rev = 硬件版本
|
||||
tracker-infos-hardware_identifier = 硬件ID
|
||||
tracker-infos-imu = IMU型号
|
||||
tracker-infos-board_type = 主板型号
|
||||
tracker-infos-network_version = 协议版本
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -209,6 +218,9 @@ tracker-settings-drift_compensation_section-edit = 允许漂移补偿
|
||||
tracker-settings-name_section = 追踪器名称
|
||||
tracker-settings-name_section-description = 给它起一个可爱的名字吧=w=~
|
||||
tracker-settings-name_section-placeholder = CC 封印着漆黑之力的漆黑左臂
|
||||
tracker-settings-forget = 忘记追踪器
|
||||
tracker-settings-forget-description = 从 SlimeVR 服务器中移除该追踪器,并在服务器重启前不再连接这一追踪器。追踪器的配置信息不会被清除。
|
||||
tracker-settings-forget-label = 忘记追踪器
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -298,10 +310,22 @@ settings-general-steamvr-description =
|
||||
对于只支持特定追踪器的游戏或应用会很有用。
|
||||
settings-general-steamvr-trackers-waist = 腰部
|
||||
settings-general-steamvr-trackers-chest = 胸部
|
||||
settings-general-steamvr-trackers-feet = 脚部
|
||||
settings-general-steamvr-trackers-knees = 膝盖
|
||||
settings-general-steamvr-trackers-elbows = 肘部
|
||||
settings-general-steamvr-trackers-hands = 手部
|
||||
settings-general-steamvr-trackers-left_foot = 左脚
|
||||
settings-general-steamvr-trackers-right_foot = 右脚
|
||||
settings-general-steamvr-trackers-left_knee = 左膝
|
||||
settings-general-steamvr-trackers-right_knee = 右膝
|
||||
settings-general-steamvr-trackers-left_elbow = 左手肘
|
||||
settings-general-steamvr-trackers-right_elbow = 右手肘
|
||||
settings-general-steamvr-trackers-left_hand = 左手
|
||||
settings-general-steamvr-trackers-right_hand = 右手
|
||||
settings-general-steamvr-trackers-tracker_toggling = 自动开关追踪器
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = 根据当前已分配的追踪器,自动选择可用的SteamVR虚拟追踪器
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = 自动开关追踪器
|
||||
settings-general-steamvr-trackers-hands-warning =
|
||||
<b>警告:</b>开启手部虚拟追踪器将覆盖手柄的追踪信息。
|
||||
是否确定?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = 取消
|
||||
settings-general-steamvr-trackers-hands-warning-done = 是
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -319,6 +343,7 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = 让运
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = 预测型
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = 减少延迟并使移动更敏捷,但可能会增加一些抖动。
|
||||
settings-general-tracker_mechanics-filtering-amount = 滤波强度
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = 重置航向轴平滑过渡时长(0s时关闭平滑瞬移到位)
|
||||
settings-general-tracker_mechanics-drift_compensation = 漂移补偿
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
@@ -327,6 +352,11 @@ settings-general-tracker_mechanics-drift_compensation-description =
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = 漂移补偿
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = 补偿量
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = 使用几次的重置结果?
|
||||
settings-general-tracker_mechanics-save_mounting_reset = 保存佩戴重置结果
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
在SlimeVR服务器关闭时保留追踪器自动佩戴重置结果。适用于一体式动捕服等
|
||||
追踪器佩戴位置保持不变的场景。<b>不建议普通用户使用!</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = 保存佩戴重置
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -438,6 +468,12 @@ settings-general-interface-feedback_sound = 声音反馈
|
||||
settings-general-interface-feedback_sound-description = 开启此选项会在触发重置时发出提示音
|
||||
settings-general-interface-feedback_sound-label = 声音反馈
|
||||
settings-general-interface-feedback_sound-volume = 提示音音量
|
||||
settings-general-interface-connected_trackers_warning = 已连接追踪器警告
|
||||
settings-general-interface-connected_trackers_warning-description = 启用本选项后,每次当退出 SlimeVR 时仍有追踪器连接着会显示通知,提醒你在使用完毕时关闭追踪器电源来节省电池电量。
|
||||
settings-general-interface-connected_trackers_warning-label = 退出时,有追踪器连接中则显示警告
|
||||
settings-general-interface-use_tray = 最小化至任务栏
|
||||
settings-general-interface-use_tray-description = 关闭 SlimeVR 窗口时,SlimeVR 服务器将会隐藏至任务栏图标而不会直接退出,可以继续使用。
|
||||
settings-general-interface-use_tray-label = 最小化至任务栏
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -459,6 +495,7 @@ settings-serial-factory_reset-warning-cancel = 取消
|
||||
settings-serial-get_infos = 获取信息
|
||||
settings-serial-serial_select = 选择串行端口
|
||||
settings-serial-auto_dropdown_item = 自动
|
||||
settings-serial-get_wifi_scan = 扫描可用WiFi
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -624,8 +661,8 @@ onboarding-done-close = 关闭向导
|
||||
|
||||
onboarding-connect_tracker-back = 返回到 Wi-Fi 凭据设置
|
||||
onboarding-connect_tracker-title = 连接追踪器
|
||||
onboarding-connect_tracker-description-p0 = 来到了我第二喜欢的环节,连接所有的追踪器!
|
||||
onboarding-connect_tracker-description-p1 = 只需通过 USB 连接所有尚未连接的设备即可。
|
||||
onboarding-connect_tracker-description-p0-v1 = 来到了我第二喜欢的环节,连接追踪器!
|
||||
onboarding-connect_tracker-description-p1-v1 = 一次一个,将所有追踪器依次通过USB口连接至电脑。
|
||||
onboarding-connect_tracker-issue-serial = QAQ 我在连接时遇到问题!
|
||||
onboarding-connect_tracker-usb = USB 追踪器
|
||||
onboarding-connect_tracker-connection_status-none = 正在寻找追踪器
|
||||
@@ -680,6 +717,7 @@ onboarding-assign_trackers-description = 让我们选择哪个追踪器在哪里
|
||||
onboarding-assign_trackers-assigned = { $assigned }/{ $trackers } 个追踪器已分配
|
||||
onboarding-assign_trackers-advanced = 显示高级分配部位
|
||||
onboarding-assign_trackers-next = 所有的追踪器都分配好了
|
||||
onboarding-assign_trackers-mirror_view = 镜像显示
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -762,6 +800,11 @@ onboarding-choose_mounting-manual_mounting = 手动设置佩戴方向
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = 推荐
|
||||
onboarding-choose_mounting-manual_mounting-description = 这将需要你手动选择每个追踪器的佩戴方向
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title = 确定要进行自动佩戴校准?
|
||||
onboarding-choose_mounting-manual_modal-description = <b>我们建议新手使用手动佩戴校准</b>,因为自动佩戴校准的姿势要一次做正确比较困难,可能需要一些练习。
|
||||
onboarding-choose_mounting-manual_modal-confirm = 我已知晓
|
||||
onboarding-choose_mounting-manual_modal-cancel = 取消
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -796,16 +839,17 @@ onboarding-automatic_mounting-put_trackers_on-next = 所有的追踪器都已开
|
||||
|
||||
onboarding-choose_proportions = 使用哪种方法校准身体比例?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description =
|
||||
身体比例校准用于了解您身体的测量值。它们被需要用于计算追踪器的位置。
|
||||
当你的身体比例与保存的不匹配时,你的追踪精度会变差,而且你会注意到诸如脚滑溜冰、不正常的滑动等情况,或者是你的身体与你的虚拟形象对不上。
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
身体比例记录了你身体各部分的尺寸。它们被用来计算虚拟追踪器的位置。
|
||||
如果保存的身体比例和实际身体尺寸不匹配,追踪精度将会下降,并且会出现脚在地面滑动,或是身体和虚拟形象动作不一致的情况。
|
||||
<b>身体比例设置只要进行一次!</b> 除非身体比例存在错误或是身体尺寸发生了改变,否则不需要重复进行身体比例设置。
|
||||
onboarding-choose_proportions-auto_proportions = 自动调整身体比例
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = 推荐
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv2 =
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
这将录制你的运动样本并通过算法来推测你的身体比例。
|
||||
|
||||
<b>需要连接头戴设备到 SlimeVR!</b>
|
||||
<b>需要戴上头戴设备,并确保设备已连接到 SlimeVR!</b>
|
||||
onboarding-choose_proportions-manual_proportions = 手动调整身体比例
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = 用于精细调整
|
||||
@@ -836,18 +880,20 @@ onboarding-automatic_proportions-put_trackers_on-description = 为了校准你
|
||||
onboarding-automatic_proportions-put_trackers_on-next = 所有的追踪器都已开启!
|
||||
onboarding-automatic_proportions-requirements-title = 准备工作
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
你需要足够的追踪器以追踪脚部(通常为 5 个)。
|
||||
你已经打开追踪器和头戴设备的电源。
|
||||
你已经穿戴好追踪器和头戴设备。
|
||||
你的追踪器和头戴设备都已经连接到 SlimeVR 服务器。
|
||||
你的追踪器和头戴设备在 SlimeVR 服务器中工作正常。
|
||||
你的头戴设备在回报位置信息给 SlimeVR 服务器(通常需要 SteamVR 正在运行且通过 SlimeVR 的 SteamVR 驱动连接到 SlimeVR)。
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
你需要足够的追踪器以追踪脚部(通常至少为 5 个)。
|
||||
你已经穿戴好并打开追踪器和头戴设备的电源。
|
||||
你的追踪器和头戴设备都已经连接到 SlimeVR 服务器并正常工作(没有卡顿、断联等问题)。
|
||||
你的头戴设备正在向 SlimeVR 服务器回报位置信息(通常需要 SteamVR 正在运行且通过 SlimeVR 的 SteamVR 驱动连接到 SlimeVR)。
|
||||
你的追踪器正常工作并能反应实际运动(进行过完整重置和佩戴重置,踢腿、弯腰、坐下等动作时虚拟骨骼向正确的方向弯曲)。
|
||||
onboarding-automatic_proportions-requirements-next = 我已阅读
|
||||
onboarding-automatic_proportions-check_height-title = 检查你的身高
|
||||
onboarding-automatic_proportions-check_height-description = 我们会使用头戴设备回报的高度来推算您的实际身高,但我们仍建议您检查一下数值是否正确。
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = 请<u>站直</u>后按下按钮以计算身高,按下后您有 3 秒钟来调整姿势。
|
||||
onboarding-automatic_proportions-check_height-guardian_tip =
|
||||
如果你正在使用一体机进行串流,请确保开启并设置了安全边界,
|
||||
以获取正确的高度信息。
|
||||
onboarding-automatic_proportions-check_height-fetch_height = 我站好了!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = 未知
|
||||
@@ -890,6 +936,15 @@ onboarding-automatic_proportions-error_modal-confirm = 了解!
|
||||
|
||||
home-no_trackers = 未检测到或未分配追踪器
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = 有追踪器的电源还开着
|
||||
trackers_still_on-modal-description =
|
||||
至少有一个追踪器的电源还开着。
|
||||
确定要退出 SlimeVR 吗?
|
||||
trackers_still_on-modal-confirm = 退出 SlimeVR
|
||||
trackers_still_on-modal-cancel = 等会…
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = 建议执行完整重置,因为有至少一个追踪器未被调整。
|
||||
@@ -899,3 +954,30 @@ status_system-StatusSteamVRDisconnected =
|
||||
*[other] 尚未通过 SlimeVR 驱动程序连接到 SteamVR
|
||||
}
|
||||
status_system-StatusTrackerError = { $trackerName } 追踪器发生错误
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = 显示窗口
|
||||
tray_menu-hide = 隐藏窗口
|
||||
tray_menu-quit = 退出 SlimeVR
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = 选择关闭按钮的功能
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
你可以选择在按下关闭按钮时,是退出 SlimeVR 服务器,还是仅将窗口最小化至任务栏图标。
|
||||
你也可以在设置-交互界面中修改这个选项
|
||||
tray_or_exit_modal-radio-exit = 退出 SlimeVR
|
||||
tray_or_exit_modal-radio-tray = 最小化至任务栏
|
||||
tray_or_exit_modal-submit = 保存
|
||||
tray_or_exit_modal-cancel = 取消
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = 发现了一个新的追踪器!
|
||||
unknown_device-modal-description =
|
||||
发现一个MAC地址为 <b>{ $deviceId }</b> 的新追踪器。
|
||||
要将它连接到 SlimeVR 吗?
|
||||
unknown_device-modal-confirm = 是的!
|
||||
unknown_device-modal-forget = 忽略它
|
||||
|
||||
@@ -23,6 +23,8 @@ tips-find_tracker = 若你不確定手上的追蹤器是哪一個,搖一搖它
|
||||
tips-do_not_move_heels = 確保你的腳跟在測量過程時不會發生移動!
|
||||
tips-file_select = 拖曳檔案或 <u>瀏覽檔案</u> 以使用
|
||||
tips-tap_setup = 除了從列表挑選追蹤器以外,您也可以慢慢敲擊 2 次追蹤器來選擇它。
|
||||
tips-turn_on_tracker = 您使用的是官方的 SlimeVR 追蹤器嗎?記得要在連接到電腦以後<b><em>打開追蹤器的電源</em></b>喔!
|
||||
tips-failed_webgl = 初始化 WebGL 失敗。
|
||||
|
||||
## Body parts
|
||||
|
||||
@@ -144,6 +146,11 @@ widget-imu_visualizer-rotation_raw = 原始旋轉
|
||||
widget-imu_visualizer-rotation_preview = 預覽
|
||||
widget-imu_visualizer-rotation_hide = 隱藏
|
||||
|
||||
## Widget: Skeleton Visualizer
|
||||
|
||||
widget-skeleton_visualizer-preview = 骨架預覽
|
||||
widget-skeleton_visualizer-hide = 隱藏
|
||||
|
||||
## Tracker status
|
||||
|
||||
tracker-status-none = 無
|
||||
@@ -152,6 +159,7 @@ tracker-status-error = 錯誤
|
||||
tracker-status-disconnected = 連線中斷
|
||||
tracker-status-occluded = 被遮擋
|
||||
tracker-status-ok = 已連線
|
||||
tracker-status-timed_out = 已逾時
|
||||
|
||||
## Tracker status columns
|
||||
|
||||
@@ -190,6 +198,7 @@ tracker-infos-hardware_rev = 硬體版本
|
||||
tracker-infos-hardware_identifier = 硬體 ID
|
||||
tracker-infos-imu = 慣性測量單元 (IMU)
|
||||
tracker-infos-board_type = 主板
|
||||
tracker-infos-network_version = 通訊協定版本
|
||||
|
||||
## Tracker settings
|
||||
|
||||
@@ -209,6 +218,9 @@ tracker-settings-drift_compensation_section-edit = 允許偏移補償
|
||||
tracker-settings-name_section = 追蹤器名稱
|
||||
tracker-settings-name_section-description = 給它起一個可愛的名字吧 ^^
|
||||
tracker-settings-name_section-placeholder = ↖★煞氣a黑貓☆↘的美味右腿
|
||||
tracker-settings-forget = 忘記追蹤器
|
||||
tracker-settings-forget-description = 從 SlimeVR 伺服器程式中移除該追蹤器,且直到重新啟動伺服器前不會再次連接。該追蹤器的設定不會遺失。
|
||||
tracker-settings-forget-label = 忘記追蹤器
|
||||
|
||||
## Tracker part card info
|
||||
|
||||
@@ -298,10 +310,22 @@ settings-general-steamvr-description =
|
||||
對於只支援特定追蹤器的遊戲或應用程式,本功能會有所幫助。
|
||||
settings-general-steamvr-trackers-waist = 腰部
|
||||
settings-general-steamvr-trackers-chest = 胸部
|
||||
settings-general-steamvr-trackers-feet = 腳部
|
||||
settings-general-steamvr-trackers-knees = 膝蓋
|
||||
settings-general-steamvr-trackers-elbows = 肘部
|
||||
settings-general-steamvr-trackers-hands = 手部
|
||||
settings-general-steamvr-trackers-left_foot = 左腳
|
||||
settings-general-steamvr-trackers-right_foot = 右腳
|
||||
settings-general-steamvr-trackers-left_knee = 左膝
|
||||
settings-general-steamvr-trackers-right_knee = 右膝
|
||||
settings-general-steamvr-trackers-left_elbow = 左手肘
|
||||
settings-general-steamvr-trackers-right_elbow = 右手肘
|
||||
settings-general-steamvr-trackers-left_hand = 左手
|
||||
settings-general-steamvr-trackers-right_hand = 右手
|
||||
settings-general-steamvr-trackers-tracker_toggling = 自動追蹤器分配
|
||||
settings-general-steamvr-trackers-tracker_toggling-description = 根據目前的追蹤器分配,自動處理 SteamVR 的追蹤器的啟用與停用
|
||||
settings-general-steamvr-trackers-tracker_toggling-label = 自動追蹤器分配
|
||||
settings-general-steamvr-trackers-hands-warning =
|
||||
<b>警告:</b>手部追蹤器將會取代控制器的追蹤。
|
||||
您確定嗎?
|
||||
settings-general-steamvr-trackers-hands-warning-cancel = 取消
|
||||
settings-general-steamvr-trackers-hands-warning-done = 確定
|
||||
|
||||
## Tracker mechanics
|
||||
|
||||
@@ -319,6 +343,7 @@ settings-general-tracker_mechanics-filtering-type-smoothing-description = 讓運
|
||||
settings-general-tracker_mechanics-filtering-type-prediction = 預測型
|
||||
settings-general-tracker_mechanics-filtering-type-prediction-description = 減少延遲並使移動更敏捷,但可能會增加一些抖動。
|
||||
settings-general-tracker_mechanics-filtering-amount = 濾波強度
|
||||
settings-general-tracker_mechanics-yaw-reset-smooth-time = 左右偏擺重置平滑過渡時間(0秒為關閉)
|
||||
settings-general-tracker_mechanics-drift_compensation = 偏移補償
|
||||
# This cares about multilines
|
||||
settings-general-tracker_mechanics-drift_compensation-description =
|
||||
@@ -327,6 +352,11 @@ settings-general-tracker_mechanics-drift_compensation-description =
|
||||
settings-general-tracker_mechanics-drift_compensation-enabled-label = 偏移補償
|
||||
settings-general-tracker_mechanics-drift_compensation-amount-label = 補償量
|
||||
settings-general-tracker_mechanics-drift_compensation-max_resets-label = 使用幾次的重置結果?
|
||||
settings-general-tracker_mechanics-save_mounting_reset = 儲存自動配戴重置的校正
|
||||
settings-general-tracker_mechanics-save_mounting_reset-description =
|
||||
儲存自動配戴重置的校正,重新啟動 SlimeVR 後不需要再進行校正。
|
||||
本設定適用於動捕服,因為多次穿戴後追蹤器的位置不會變化。<b>不建議一般使用者使用!</b>
|
||||
settings-general-tracker_mechanics-save_mounting_reset-enabled-label = 儲存自動配戴重置的校正
|
||||
|
||||
## FK/Tracking settings
|
||||
|
||||
@@ -373,9 +403,9 @@ settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_hip = 推
|
||||
settings-general-fk_settings-skeleton_settings-impute_waist_from_chest_legs = 推算腰部定位時,胸部與腿部定位使用的比例
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_chest_legs = 推算臀部定位時,胸部與腿部定位使用的比例
|
||||
settings-general-fk_settings-skeleton_settings-impute_hip_from_waist_legs = 推算臀部定位時, 腰部與腿部定位使用的比例
|
||||
settings-general-fk_settings-skeleton_settings-interp_hip_legs = 臀部的偏航軸與翻滾軸,混合腿部定位的比例
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = 膝部的偏航軸與翻滾軸,混合腳踝定位的比例
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = 將膝部的偏航軸與翻滾軸與腳踝計算平均
|
||||
settings-general-fk_settings-skeleton_settings-interp_hip_legs = 臀部的偏航軸與翻滾軸,與腿部定位平均的比例
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_tracker_ankle = 膝部的偏航軸與翻滾軸,與腳踝定位平均的比例
|
||||
settings-general-fk_settings-skeleton_settings-interp_knee_ankle = 膝部的偏航軸與翻滾軸,與腳踝定位平均的比例
|
||||
settings-general-fk_settings-self_localization-title = 動作捕捉模式
|
||||
settings-general-fk_settings-self_localization-description = 動作捕捉模式允許在沒有頭戴顯示器或其他追蹤器時,粗略的追蹤身體骨架的定位。請注意,本功能需要腳部與頭部的追蹤器,並且本功能仍在實驗階段。
|
||||
settings-general-fk_settings-vive_emulation-title = Vive 模擬
|
||||
@@ -438,6 +468,12 @@ settings-general-interface-feedback_sound = 聲音回饋
|
||||
settings-general-interface-feedback_sound-description = 啟用本選項後,觸發重置時會發出提示音。
|
||||
settings-general-interface-feedback_sound-label = 聲音回饋
|
||||
settings-general-interface-feedback_sound-volume = 聲音回饋音量
|
||||
settings-general-interface-connected_trackers_warning = 已連接追蹤器警告
|
||||
settings-general-interface-connected_trackers_warning-description = 啟用本選項後,每次當退出 SlimeVR 時仍有追蹤器連接著會顯示通知,提醒你在使用完畢時關閉追蹤器電源來節省電池電量。
|
||||
settings-general-interface-connected_trackers_warning-label = 當退出程式時,有追蹤器連接中則顯示警告
|
||||
settings-general-interface-use_tray = 最小化到系統列
|
||||
settings-general-interface-use_tray-description = 本選項可以讓您在關閉視窗時不會關閉 SlimeVR 的伺服器程式,讓您在不受圖形介面的打擾下繼續使用追蹤器。
|
||||
settings-general-interface-use_tray-label = 最小化到系統列
|
||||
|
||||
## Serial settings
|
||||
|
||||
@@ -457,6 +493,7 @@ settings-serial-factory_reset-warning-cancel = 取消
|
||||
settings-serial-get_infos = 取得資訊
|
||||
settings-serial-serial_select = 選擇串列埠
|
||||
settings-serial-auto_dropdown_item = 自動
|
||||
settings-serial-get_wifi_scan = 取得 Wi-Fi 掃描
|
||||
|
||||
## OSC router settings
|
||||
|
||||
@@ -622,8 +659,8 @@ onboarding-done-close = 關閉設定
|
||||
|
||||
onboarding-connect_tracker-back = 返回到 Wi-Fi 認證資訊設定
|
||||
onboarding-connect_tracker-title = 連接追蹤器
|
||||
onboarding-connect_tracker-description-p0 = 來到了我第二喜歡的環節,連線所有的追蹤器!
|
||||
onboarding-connect_tracker-description-p1 = 只需透過 USB 連線所有尚未連線的裝置即可。
|
||||
onboarding-connect_tracker-description-p0-v1 = 來到了我第二喜歡的環節,連接追蹤器!
|
||||
onboarding-connect_tracker-description-p1-v1 = 透過 USB,一次連接一個追蹤器。
|
||||
onboarding-connect_tracker-issue-serial = 我在連接時碰到問題了!
|
||||
onboarding-connect_tracker-usb = USB 追蹤器
|
||||
onboarding-connect_tracker-connection_status-none = 正在尋找追蹤器
|
||||
@@ -678,6 +715,7 @@ onboarding-assign_trackers-description = 這些追蹤器要放在身上的哪個
|
||||
onboarding-assign_trackers-assigned = { $assigned }/{ $trackers } 個追蹤器已分配
|
||||
onboarding-assign_trackers-advanced = 顯示進階分配部位
|
||||
onboarding-assign_trackers-next = 所有的追蹤器都分配好了
|
||||
onboarding-assign_trackers-mirror_view = 鏡像顯示
|
||||
|
||||
## Tracker assignment warnings
|
||||
|
||||
@@ -760,6 +798,11 @@ onboarding-choose_mounting-manual_mounting = 手動配戴校正
|
||||
# Italized text
|
||||
onboarding-choose_mounting-manual_mounting-label = 推薦使用
|
||||
onboarding-choose_mounting-manual_mounting-description = 本選項可以讓你選擇每個追蹤器的配戴方位
|
||||
# Multiline text
|
||||
onboarding-choose_mounting-manual_modal-title = 確定要進行自動配戴校正?
|
||||
onboarding-choose_mounting-manual_modal-description = <b>我們建議新手使用手動配戴校正</b>,因為自動配戴校正的姿勢要一次做正確比較困難,可能需要一些練習。
|
||||
onboarding-choose_mounting-manual_modal-confirm = 我確定要這樣做
|
||||
onboarding-choose_mounting-manual_modal-cancel = 取消
|
||||
|
||||
## Tracker manual mounting setup
|
||||
|
||||
@@ -794,16 +837,17 @@ onboarding-automatic_mounting-put_trackers_on-next = 我所有的追蹤器都戴
|
||||
|
||||
onboarding-choose_proportions = 要使用哪一種軀幹比例的校正方式?
|
||||
# Multiline string
|
||||
onboarding-choose_proportions-description =
|
||||
onboarding-choose_proportions-description-v1 =
|
||||
軀幹比例用於取得身體各個部位的長短,為計算追蹤器的位置而有所必要。
|
||||
當您的軀幹比例與設定的比例有差異時,追蹤精確度會變差,您可能會注意到出現腳滑溜冰的情形,或者你的身體與你的虛擬角色對不太上。
|
||||
<b>軀幹比例的測量只需要進行一次!</b>除非設定有誤,或是身材有明顯變化,本設定不需要重複進行。
|
||||
onboarding-choose_proportions-auto_proportions = 自動軀幹比例校正
|
||||
# Italized text
|
||||
onboarding-choose_proportions-auto_proportions-subtitle = 推薦使用
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv2 =
|
||||
onboarding-choose_proportions-auto_proportions-descriptionv3 =
|
||||
本選項會從您的身體動作錄製一段樣本,並通過演算法來推算您的軀幹比例。
|
||||
|
||||
<b>使用本功能需要連接頭戴顯示器到 SlimeVR!</b>
|
||||
<b>使用本功能需要連接頭戴顯示器到 SlimeVR,並且配戴在頭部!</b>
|
||||
onboarding-choose_proportions-manual_proportions = 手動軀幹比例校正
|
||||
# Italized text
|
||||
onboarding-choose_proportions-manual_proportions-subtitle = 適合進行微調
|
||||
@@ -834,18 +878,20 @@ onboarding-automatic_proportions-put_trackers_on-description = 為了校準你
|
||||
onboarding-automatic_proportions-put_trackers_on-next = 我所有的追蹤器都戴好了!
|
||||
onboarding-automatic_proportions-requirements-title = 使用需求
|
||||
# Each line of text is a different list item
|
||||
onboarding-automatic_proportions-requirements-description =
|
||||
onboarding-automatic_proportions-requirements-descriptionv2 =
|
||||
你需要足夠的追蹤器以進行足部追蹤(通常為 5 個)。
|
||||
你已經打開追蹤器與頭戴顯示器的電源。
|
||||
追蹤器的電源已經打開並已經穿著在身上。
|
||||
你需要穿戴上追蹤器與頭戴顯示器。
|
||||
你的追蹤器與頭戴顯示器都已經連接到 SlimeVR 伺服器。
|
||||
你的追蹤器與頭戴顯示器在 SlimeVR 伺服器中運作正常。
|
||||
你的頭戴顯示器會回報定位資料給 SlimeVR 伺服器(通常為執行 SteamVR 並透過 SlimeVR 的 SteamVR 驅動程式來連接 SlimeVR)。
|
||||
追蹤器與頭戴顯示器都已經連接到 SlimeVR 伺服器,並且正常運作(亦即沒有卡頓或斷線等狀況)。
|
||||
追蹤器與頭戴顯示器在 SlimeVR 伺服器中運作正常。
|
||||
頭戴顯示器會回報定位資料給 SlimeVR 伺服器(通常為執行 SteamVR 並透過 SlimeVR 的 SteamVR 驅動程式來連接 SlimeVR)。
|
||||
追蹤狀態正常且能反映你的移動姿態(例如,進行完全重置後,踢腿、彎曲、坐下時的肢體方向是正確的)。
|
||||
onboarding-automatic_proportions-requirements-next = 我已閱讀使用需求
|
||||
onboarding-automatic_proportions-check_height-title = 檢查您的身高
|
||||
onboarding-automatic_proportions-check_height-description = 我們會透過頭戴顯示器回報的高度來推算您的實際身高,但我們仍建議您檢查一下數值是否正確。
|
||||
# All the text is in bold!
|
||||
onboarding-automatic_proportions-check_height-calculation_warning = 請<u>站直</u>並按下按鈕以計算身高,按下按鈕後您有 3 秒鐘來調整姿勢。
|
||||
onboarding-automatic_proportions-check_height-guardian_tip = 如果您使用的是一體式 VR 頭盔,請確認頭盔的守護神/邊界設定已經開啟,以確保身高能正確測量。
|
||||
onboarding-automatic_proportions-check_height-fetch_height = 我站著了!
|
||||
# Context is that the height is unknown
|
||||
onboarding-automatic_proportions-check_height-unknown = 不明
|
||||
@@ -870,7 +916,7 @@ onboarding-automatic_proportions-recording-steps =
|
||||
如果進度條還沒走完,可以重複以上動作直到錄製結束。
|
||||
onboarding-automatic_proportions-recording-processing = 正在處理結果
|
||||
# $time (Number) - Seconds left for the automatic calibration recording to finish (max 20)
|
||||
onboarding-automatic_proportions-recording-timer = 剩下 { $time } 秒
|
||||
onboarding-automatic_proportions-recording-timer = 倒數 { $time } 秒
|
||||
onboarding-automatic_proportions-verify_results-title = 檢查結果
|
||||
onboarding-automatic_proportions-verify_results-description = 檢查下面的結果,它們看起來是正確的嗎?
|
||||
onboarding-automatic_proportions-verify_results-results = 錄製結果
|
||||
@@ -888,12 +934,49 @@ onboarding-automatic_proportions-error_modal-confirm = 瞭解!
|
||||
|
||||
home-no_trackers = 未偵測到或未分配追蹤器
|
||||
|
||||
## Trackers Still On notification
|
||||
|
||||
trackers_still_on-modal-title = 有追蹤器的電源還開著
|
||||
trackers_still_on-modal-description =
|
||||
至少有一個追蹤器的電源還開著。
|
||||
確定要退出 SlimeVR 嗎?
|
||||
trackers_still_on-modal-confirm = 退出 SlimeVR
|
||||
trackers_still_on-modal-cancel = 先不要…
|
||||
|
||||
## Status system
|
||||
|
||||
status_system-StatusTrackerReset = 建議執行完全重置,因為有至少一個追蹤器尚未調整
|
||||
status_system-StatusTrackerReset = 有至少一個追蹤器尚未進行調整,建議執行完整重置。
|
||||
status_system-StatusSteamVRDisconnected =
|
||||
{ $type ->
|
||||
[steamvr_feeder] 尚未連接 SlimeVR 資料迴送程式
|
||||
*[other] 尚未透過 SlimeVR 驅動程式連接到 SteamVR
|
||||
}
|
||||
status_system-StatusTrackerError = { $trackerName } 追蹤器發生錯誤
|
||||
|
||||
## Tray Menu
|
||||
|
||||
tray_menu-show = 顯示
|
||||
tray_menu-hide = 隱藏
|
||||
tray_menu-quit = 離開
|
||||
|
||||
## First exit modal
|
||||
|
||||
tray_or_exit_modal-title = 關閉視窗的動作是什麼?
|
||||
# Multiline text
|
||||
tray_or_exit_modal-description =
|
||||
您可以選擇在關閉視窗時,一併退出伺服器程式,或是將視窗最小化到系統列圖示中。
|
||||
|
||||
本設定之後也可以在使用者介面設定中更改。
|
||||
tray_or_exit_modal-radio-exit = 退出 SlimeVR
|
||||
tray_or_exit_modal-radio-tray = 最小化到系統列
|
||||
tray_or_exit_modal-submit = 儲存
|
||||
tray_or_exit_modal-cancel = 取消
|
||||
|
||||
## Unknown device modal
|
||||
|
||||
unknown_device-modal-title = 找到了新的追蹤器!
|
||||
unknown_device-modal-description =
|
||||
偵測到新的追蹤器,其 MAC 位址為 <b>{ $deviceId }</b>。
|
||||
要將它連接到 SlimeVR 嗎?
|
||||
unknown_device-modal-confirm = 好喔!
|
||||
unknown_device-modal-forget = 別管它
|
||||
|
||||
BIN
gui/public/images/autobone-poster.webp
Normal file
|
After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 218 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 192 KiB After Width: | Height: | Size: 6.3 KiB |
@@ -1,5 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-miterlimit="10" version="1.1" viewBox="0 0 380 380" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<style>svg { background-color: #663499; }</style>
|
||||
<rect id="bg" width="100%" height="100%" fill="#663499"/><g id="logo" fill="none" stroke="#fff"><path id="left" d="m72.867 191.74 37-39 39 36" stroke-width="13.62px"/><path id="right" d="m208.87 187.74 38-35 36 38" stroke-width="13.62px"/><path id="outer" d="m56.867 253.74s130.61-31.182 248 5c13.45 4.146 20.244 2.975 20-8s1.909-126.06-46-131" stroke-linecap="square" stroke-width="17px"/></g>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" stroke-miterlimit="10" clip-rule="evenodd" version="1.1" viewBox="0 0 380 380" xml:space="preserve"><style>svg{background-color:#663499}</style><rect id="bg" width="100%" height="100%" fill="#663499"/><g id="logo" fill="none" stroke="#fff"><path id="left" stroke-width="13.62" d="m72.867 191.74 37-39 39 36"/><path id="right" stroke-width="13.62" d="m208.87 187.74 38-35 36 38"/><path id="outer" stroke-linecap="square" stroke-width="17" d="m56.867 253.74s130.61-31.182 248 5c13.45 4.146 20.244 2.975 20-8s1.909-126.06-46-131"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 660 B After Width: | Height: | Size: 598 B |
BIN
gui/public/videos/autobone.webm
Normal file
1
gui/src-tauri/.gitignore
vendored
@@ -3,3 +3,4 @@
|
||||
/target/
|
||||
WixTools
|
||||
src/JavaVersion.class
|
||||
/gen/schemas
|
||||
|
||||
3
gui/src-tauri/.lintstagedrc.mjs
Normal file
@@ -0,0 +1,3 @@
|
||||
export default {
|
||||
'**/*.rs': 'cargo fmt --',
|
||||
};
|
||||
@@ -21,39 +21,37 @@ default = ["custom-protocol"]
|
||||
custom-protocol = ["tauri/custom-protocol"]
|
||||
|
||||
[build-dependencies]
|
||||
tauri-build = { version = "2.0.0-alpha.6", features = [] }
|
||||
cfg_aliases = "0.1"
|
||||
shadow-rs = "0.23"
|
||||
tauri-build = { version = "=2.0.0-beta.11", features = [] }
|
||||
cfg_aliases = "0.2"
|
||||
shadow-rs = "0.27"
|
||||
|
||||
[dependencies]
|
||||
serde_json = "1"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
tauri = { version = "2.0.0-alpha.10", features = ["devtools"] }
|
||||
tauri-runtime = "0.13.0-alpha.6"
|
||||
tauri-plugin-dialog = { git = "https://github.com/tauri-apps/plugins-workspace", rev = "4ab90f048eab2918344f97dc8e04413a404e392d" }
|
||||
tauri-plugin-fs = { git = "https://github.com/tauri-apps/plugins-workspace", rev = "4ab90f048eab2918344f97dc8e04413a404e392d" }
|
||||
tauri-plugin-os = { git = "https://github.com/tauri-apps/plugins-workspace", rev = "4ab90f048eab2918344f97dc8e04413a404e392d" }
|
||||
tauri-plugin-shell = { git = "https://github.com/tauri-apps/plugins-workspace", rev = "4ab90f048eab2918344f97dc8e04413a404e392d" }
|
||||
tauri-plugin-window = { git = "https://github.com/tauri-apps/plugins-workspace", rev = "4ab90f048eab2918344f97dc8e04413a404e392d", features = [
|
||||
"devtools",
|
||||
] }
|
||||
flexi_logger = "0.25"
|
||||
tauri = { version = "=2.0.0-beta.14", features = ["devtools", "tray-icon", "image-png"] }
|
||||
tauri-runtime = "=2.0.0-beta.11"
|
||||
tauri-plugin-dialog = "=2.0.0-beta.4"
|
||||
tauri-plugin-fs = "=2.0.0-beta.4"
|
||||
tauri-plugin-os = "=2.0.0-beta.3"
|
||||
tauri-plugin-shell = "=2.0.0-beta.3"
|
||||
tauri-plugin-store = "=2.0.0-beta.4"
|
||||
flexi_logger = "0.28"
|
||||
log-panics = { version = "2", features = ["with-backtrace"] }
|
||||
log = "0.4"
|
||||
clap = { version = "4.0.29", features = ["derive"] }
|
||||
clap-verbosity-flag = "2"
|
||||
rand = "0.8.5"
|
||||
tempfile = "3"
|
||||
which = "4.3"
|
||||
which = "6.0"
|
||||
glob = "0.3"
|
||||
open = "5"
|
||||
shadow-rs = { version = "0.23", default-features = false }
|
||||
shadow-rs = { version = "0.27", default-features = false }
|
||||
const_format = "0.2.30"
|
||||
cfg-if = "1"
|
||||
color-eyre = "0.6"
|
||||
rfd = "0.11.4"
|
||||
rfd = { version = "0.14", features = ["gtk3"], default-features = false }
|
||||
dirs-next = "2.0.0"
|
||||
|
||||
[target.'cfg(windows)'.dependencies]
|
||||
win32job = "1"
|
||||
winreg = "0.50"
|
||||
winreg = "0.52"
|
||||
|
||||
33
gui/src-tauri/capabilities/migrated.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"identifier": "migrated",
|
||||
"description": "permissions that were migrated from v1",
|
||||
"local": true,
|
||||
"windows": [
|
||||
"main"
|
||||
],
|
||||
"permissions": [
|
||||
"path:default",
|
||||
"event:default",
|
||||
"window:default",
|
||||
"app:default",
|
||||
"resources:default",
|
||||
"menu:default",
|
||||
"tray:default",
|
||||
"store:default",
|
||||
"os:allow-os-type",
|
||||
"webview:default",
|
||||
"dialog:allow-save",
|
||||
"window:allow-close",
|
||||
"window:allow-toggle-maximize",
|
||||
"window:allow-minimize",
|
||||
"window:allow-start-dragging",
|
||||
"window:allow-hide",
|
||||
"window:allow-show",
|
||||
"window:allow-set-focus",
|
||||
"shell:allow-open",
|
||||
"store:allow-get",
|
||||
"store:allow-set",
|
||||
"store:allow-save",
|
||||
"fs:allow-write-text-file"
|
||||
]
|
||||
}
|
||||
BIN
gui/src-tauri/icons/appleTrayIcon.png
Normal file
|
After Width: | Height: | Size: 922 B |
@@ -11,9 +11,7 @@ use std::time::Instant;
|
||||
use clap::Parser;
|
||||
use color_eyre::Result;
|
||||
use state::WindowState;
|
||||
use tauri::Manager;
|
||||
use tauri::RunEvent;
|
||||
use tauri::WindowEvent;
|
||||
use tauri::{Manager, RunEvent, WindowEvent};
|
||||
use tauri_plugin_shell::process::CommandChild;
|
||||
|
||||
use crate::util::{
|
||||
@@ -21,6 +19,7 @@ use crate::util::{
|
||||
};
|
||||
|
||||
mod state;
|
||||
mod tray;
|
||||
mod util;
|
||||
|
||||
#[tauri::command]
|
||||
@@ -71,22 +70,19 @@ fn main() -> Result<()> {
|
||||
use flexi_logger::{
|
||||
Age, Cleanup, Criterion, Duplicate, FileSpec, Logger, Naming, WriteMode,
|
||||
};
|
||||
use tauri::path::Error;
|
||||
use tauri::Error;
|
||||
|
||||
// Based on https://docs.rs/tauri/2.0.0-alpha.10/src/tauri/path/desktop.rs.html#238-256
|
||||
#[cfg(target_os = "macos")]
|
||||
let path = dirs_next::home_dir().ok_or(Error::UnknownPath).map(|dir| {
|
||||
dir.join("Library/Logs")
|
||||
.join(&tauri_context.config().tauri.bundle.identifier)
|
||||
.join(&tauri_context.config().identifier)
|
||||
});
|
||||
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
let path = dirs_next::data_dir()
|
||||
.ok_or(Error::UnknownPath)
|
||||
.map(|dir| {
|
||||
dir.join(&tauri_context.config().tauri.bundle.identifier)
|
||||
.join("logs")
|
||||
});
|
||||
.map(|dir| dir.join(&tauri_context.config().identifier).join("logs"));
|
||||
|
||||
Logger::try_with_env_or_str("info")?
|
||||
.log_to_file(
|
||||
@@ -124,7 +120,9 @@ fn main() -> Result<()> {
|
||||
if !webview2_exists() {
|
||||
// This makes a dialog appear which let's you press Ok or Cancel
|
||||
// If you press Ok it will open the SlimeVR installer documentation
|
||||
use rfd::{MessageButtons, MessageDialog, MessageLevel};
|
||||
use rfd::{
|
||||
MessageButtons, MessageDialog, MessageDialogResult, MessageLevel,
|
||||
};
|
||||
|
||||
let confirm = MessageDialog::new()
|
||||
.set_title("SlimeVR")
|
||||
@@ -132,7 +130,7 @@ fn main() -> Result<()> {
|
||||
.set_buttons(MessageButtons::OkCancel)
|
||||
.set_level(MessageLevel::Error)
|
||||
.show();
|
||||
if confirm {
|
||||
if confirm == MessageDialogResult::Ok {
|
||||
open::that("https://docs.slimevr.dev/server-setup/installing-and-connecting.html#install-the-latest-slimevr-installer").unwrap();
|
||||
}
|
||||
return Ok(());
|
||||
@@ -172,40 +170,47 @@ fn main() -> Result<()> {
|
||||
.plugin(tauri_plugin_fs::init())
|
||||
.plugin(tauri_plugin_os::init())
|
||||
.plugin(tauri_plugin_shell::init())
|
||||
.plugin(tauri_plugin_window::init())
|
||||
.plugin(tauri_plugin_store::Builder::default().build())
|
||||
.invoke_handler(tauri::generate_handler![
|
||||
update_window_state,
|
||||
logging,
|
||||
erroring,
|
||||
warning
|
||||
warning,
|
||||
tray::update_translations,
|
||||
tray::update_tray_text
|
||||
])
|
||||
.setup(move |app| {
|
||||
let window_state =
|
||||
WindowState::open_state(app.path().app_config_dir().unwrap())
|
||||
.unwrap_or_default();
|
||||
|
||||
let window = tauri::WindowBuilder::new(
|
||||
let window = tauri::WebviewWindowBuilder::new(
|
||||
app,
|
||||
"main",
|
||||
tauri::WindowUrl::App("index.html".into()),
|
||||
tauri::WebviewUrl::App("index.html".into()),
|
||||
)
|
||||
.title("SlimeVR")
|
||||
.inner_size(1289.0, 709.0)
|
||||
.min_inner_size(393.0, 667.0)
|
||||
.min_inner_size(util::MIN_WINDOW_SIZE_WIDTH, util::MIN_WINDOW_SIZE_HEIGHT)
|
||||
.resizable(true)
|
||||
.visible(true)
|
||||
.decorations(false)
|
||||
.fullscreen(false)
|
||||
.disable_file_drop_handler()
|
||||
.build()?;
|
||||
if window_state.is_old() {
|
||||
window_state.update_window(&window, false)?;
|
||||
window_state.update_window(&window.as_ref().window(), false)?;
|
||||
}
|
||||
|
||||
#[cfg(desktop)]
|
||||
{
|
||||
let handle = app.handle();
|
||||
tray::create_tray(&handle)?;
|
||||
}
|
||||
|
||||
app.manage(Mutex::new(window_state));
|
||||
|
||||
if let Some((java_bin, p)) = server_info {
|
||||
let app_handle = app.app_handle();
|
||||
let app_handle = app.app_handle().clone();
|
||||
tauri::async_runtime::spawn(async move {
|
||||
use tauri_plugin_shell::{process::CommandEvent, ShellExt};
|
||||
|
||||
@@ -238,21 +243,21 @@ fn main() -> Result<()> {
|
||||
_ => ("other", "".to_string()),
|
||||
};
|
||||
app_handle
|
||||
.emit_all("server-status", emit_me)
|
||||
.emit("server-status", emit_me)
|
||||
.expect("Check server log files. \nFailed to emit");
|
||||
}
|
||||
log::error!("Java server receiver died");
|
||||
app_handle
|
||||
.emit_all("server-status", ("other", "receiver cancelled"))
|
||||
.emit("server-status", ("other", "receiver cancelled"))
|
||||
.expect("Failed to emit");
|
||||
});
|
||||
}
|
||||
Ok(())
|
||||
})
|
||||
.on_window_event(|e| match e.event() {
|
||||
.on_window_event(|w, e| match e {
|
||||
WindowEvent::CloseRequested { .. } => {
|
||||
let window_state = e.window().state::<Mutex<WindowState>>();
|
||||
if let Err(e) = update_window_state(e.window().clone(), window_state) {
|
||||
let window_state = w.state::<Mutex<WindowState>>();
|
||||
if let Err(e) = update_window_state(w.clone(), window_state) {
|
||||
log::error!("failed to update window state {}", e)
|
||||
}
|
||||
}
|
||||
@@ -300,7 +305,9 @@ fn main() -> Result<()> {
|
||||
// I should log this anyways, don't want to dig a grave by not logging the error.
|
||||
log::error!("CreateWebview error {}", error);
|
||||
|
||||
use rfd::{MessageButtons, MessageDialog, MessageLevel};
|
||||
use rfd::{
|
||||
MessageButtons, MessageDialog, MessageDialogResult, MessageLevel,
|
||||
};
|
||||
|
||||
let confirm = MessageDialog::new()
|
||||
.set_title("SlimeVR")
|
||||
@@ -308,7 +315,7 @@ fn main() -> Result<()> {
|
||||
.set_buttons(MessageButtons::OkCancel)
|
||||
.set_level(MessageLevel::Error)
|
||||
.show();
|
||||
if confirm {
|
||||
if confirm == MessageDialogResult::Ok {
|
||||
open::that("https://docs.slimevr.dev/common-issues.html#webview2-is-missing--slimevr-gui-crashes-immediately--panicked-at--webview2error").unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ use color_eyre::Result;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tauri::{LogicalSize, Monitor, PhysicalPosition, PhysicalSize, Window};
|
||||
|
||||
use crate::util;
|
||||
|
||||
static STATE_FILENAME: &str = ".window-state.json";
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Default)]
|
||||
@@ -73,7 +75,11 @@ impl WindowState {
|
||||
window.unmaximize()?;
|
||||
}
|
||||
|
||||
window.set_size(LogicalSize::new(self.width, self.height))?;
|
||||
if self.width > util::MIN_WINDOW_SIZE_WIDTH
|
||||
&& self.height > util::MIN_WINDOW_SIZE_HEIGHT
|
||||
{
|
||||
window.set_size(LogicalSize::new(self.width, self.height))?;
|
||||
}
|
||||
|
||||
let pos = PhysicalPosition::new(self.x, self.y);
|
||||
for monitor in window.available_monitors()? {
|
||||
|
||||
120
gui/src-tauri/src/tray.rs
Normal file
@@ -0,0 +1,120 @@
|
||||
use std::{collections::HashMap, sync::Mutex};
|
||||
|
||||
use tauri::{
|
||||
image::Image,
|
||||
menu::{Menu, MenuBuilder, MenuItemBuilder, MenuItemKind},
|
||||
tray::{ClickType, TrayIconBuilder},
|
||||
AppHandle, Manager, Runtime, State,
|
||||
};
|
||||
|
||||
pub struct TrayMenu<R: Runtime>(Menu<R>);
|
||||
|
||||
pub struct TrayTranslations {
|
||||
store: Mutex<HashMap<String, String>>,
|
||||
}
|
||||
|
||||
impl TrayTranslations {
|
||||
fn get(&self, key: &str) -> String {
|
||||
let lock = self.store.lock().unwrap();
|
||||
lock.get(key)
|
||||
.map_or_else(|| key.to_string(), |v| v.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn update_translations<R: Runtime>(
|
||||
app: AppHandle<R>,
|
||||
i18n: State<TrayTranslations>,
|
||||
menu: State<TrayMenu<R>>,
|
||||
new_i18n: HashMap<String, String>,
|
||||
) -> color_eyre::Result<(), String> {
|
||||
{
|
||||
let mut lock = i18n.store.lock().map_err(|e| e.to_string())?;
|
||||
for (new_key, new_value) in new_i18n {
|
||||
lock.insert(new_key, new_value);
|
||||
}
|
||||
}
|
||||
|
||||
update_tray_text(app, i18n, menu)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn update_tray_text<R: Runtime>(
|
||||
app: AppHandle<R>,
|
||||
i18n: State<TrayTranslations>,
|
||||
menu: State<TrayMenu<R>>,
|
||||
) -> color_eyre::Result<(), String> {
|
||||
if let Some((window, MenuItemKind::MenuItem(toggle_i))) =
|
||||
app.get_webview_window("main").zip(menu.0.get("toggle"))
|
||||
{
|
||||
let new_title = if window.is_visible().unwrap_or_default() {
|
||||
i18n.get("tray_menu-hide")
|
||||
} else {
|
||||
i18n.get("tray_menu-show")
|
||||
};
|
||||
toggle_i.set_text(new_title).map_err(|e| e.to_string())?;
|
||||
}
|
||||
|
||||
if let Some(MenuItemKind::MenuItem(quit_i)) = menu.0.get("quit") {
|
||||
quit_i
|
||||
.set_text(i18n.get("tray_menu-quit"))
|
||||
.map_err(|e| e.to_string())?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
|
||||
let toggle_i = MenuItemBuilder::with_id("toggle", "Hide").build(app)?;
|
||||
let quit_i = MenuItemBuilder::with_id("quit", "Quit").build(app)?;
|
||||
let menu1 = MenuBuilder::new(app).items(&[&toggle_i, &quit_i]).build()?;
|
||||
|
||||
let _ = TrayIconBuilder::with_id("tray-1")
|
||||
.menu(&menu1)
|
||||
.title("SlimeVR")
|
||||
.tooltip("SlimeVR")
|
||||
.icon_as_template(true)
|
||||
.menu_on_left_click(false)
|
||||
.icon(if cfg!(target_os = "macos") {
|
||||
Image::from_bytes(include_bytes!("../icons/appleTrayIcon.png"))
|
||||
} else {
|
||||
Image::from_bytes(include_bytes!("../icons/128x128.png"))
|
||||
}?)
|
||||
.on_menu_event(move |app, event| match event.id.as_ref() {
|
||||
"quit" => app.emit("try-close", "tray").unwrap(),
|
||||
"toggle" => {
|
||||
let i18n = app.state::<TrayTranslations>();
|
||||
if let Some(window) = app.get_webview_window("main") {
|
||||
let new_title = if window.is_visible().unwrap_or_default() {
|
||||
let _ = window.hide();
|
||||
i18n.get("tray_menu-show")
|
||||
} else {
|
||||
let _ = window.show();
|
||||
let _ = window.set_focus();
|
||||
i18n.get("tray_menu-hide")
|
||||
};
|
||||
toggle_i.set_text(new_title).unwrap();
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
})
|
||||
.on_tray_icon_event(|tray, event| {
|
||||
if event.click_type == ClickType::Left {
|
||||
let app = tray.app_handle();
|
||||
if let Some(window) = app.get_webview_window("main") {
|
||||
let _ = window.show();
|
||||
let _ = window.set_focus();
|
||||
}
|
||||
}
|
||||
})
|
||||
.build(app)?;
|
||||
|
||||
app.manage(TrayMenu(menu1));
|
||||
app.manage(TrayTranslations {
|
||||
store: Default::default(),
|
||||
});
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -28,6 +28,8 @@ pub static POSSIBLE_TITLES: &[&str] = &[
|
||||
"never gonna let you down",
|
||||
"uwu sowwy",
|
||||
];
|
||||
pub const MIN_WINDOW_SIZE_WIDTH: f64 = 393.0;
|
||||
pub const MIN_WINDOW_SIZE_HEIGHT: f64 = 667.0;
|
||||
|
||||
shadow!(build);
|
||||
// Tauri has a way to return the package.json version, but it's not a constant...
|
||||
@@ -95,17 +97,17 @@ pub fn spawn_java(java: &OsStr, java_version: &OsStr) -> std::io::Result<Child>
|
||||
#[cfg(desktop)]
|
||||
pub fn show_error(text: &str) -> bool {
|
||||
use rand::{seq::SliceRandom, thread_rng};
|
||||
use rfd::{MessageButtons, MessageDialog, MessageLevel};
|
||||
use rfd::{MessageButtons, MessageDialog, MessageDialogResult, MessageLevel};
|
||||
|
||||
MessageDialog::new()
|
||||
.set_title(&format!(
|
||||
.set_title(format!(
|
||||
"SlimeVR GUI crashed - {}",
|
||||
POSSIBLE_TITLES.choose(&mut thread_rng()).unwrap()
|
||||
))
|
||||
.set_description(text)
|
||||
.set_buttons(MessageButtons::Ok)
|
||||
.set_level(MessageLevel::Error)
|
||||
.show()
|
||||
.show() == MessageDialogResult::Ok
|
||||
}
|
||||
|
||||
#[cfg(mobile)]
|
||||
|
||||
@@ -1,87 +1,85 @@
|
||||
{
|
||||
"package": {
|
||||
"productName": "slimevr",
|
||||
"version": "../package.json"
|
||||
},
|
||||
"build": {
|
||||
"distDir": "../dist",
|
||||
"devPath": "http://localhost:5173",
|
||||
"beforeDevCommand": "npm run start",
|
||||
"beforeBuildCommand": "npm run build"
|
||||
"beforeBuildCommand": "pnpm run build",
|
||||
"beforeDevCommand": "pnpm run start",
|
||||
"frontendDist": "../dist",
|
||||
"devUrl": "http://localhost:5173"
|
||||
},
|
||||
"plugins": {
|
||||
"shell": {
|
||||
"open": true
|
||||
},
|
||||
"fs": {
|
||||
"scope": ["$APP/*", "$APP"],
|
||||
"all": true
|
||||
},
|
||||
"os": {
|
||||
"all": true
|
||||
},
|
||||
"window": {
|
||||
"setResizable": true,
|
||||
"setTitle": true,
|
||||
"maximize": true,
|
||||
"unmaximize": true,
|
||||
"minimize": true,
|
||||
"unminimize": true,
|
||||
"close": true,
|
||||
"startDragging": true,
|
||||
"setSize": true
|
||||
}
|
||||
},
|
||||
"tauri": {
|
||||
"bundle": {
|
||||
"active": true,
|
||||
"targets": "all",
|
||||
"identifier": "dev.slimevr.SlimeVR",
|
||||
"icon": [
|
||||
"icons/32x32.png",
|
||||
"icons/128x128.png",
|
||||
"icons/128x128@2x.png",
|
||||
"icons/icon.icns",
|
||||
"icons/icon.ico"
|
||||
],
|
||||
"resources": [],
|
||||
"externalBin": [],
|
||||
"copyright": "",
|
||||
"category": "DeveloperTool",
|
||||
"shortDescription": "",
|
||||
"longDescription": "",
|
||||
"bundle": {
|
||||
"active": true,
|
||||
"linux": {
|
||||
"deb": {
|
||||
"depends": ["openjdk-17-jre-headless"],
|
||||
"depends": [
|
||||
"openjdk-17-jre-headless"
|
||||
],
|
||||
"files": {
|
||||
"/usr/share/slimevr/slimevr.jar": "../../server/desktop/build/libs/slimevr.jar"
|
||||
}
|
||||
},
|
||||
"appimage": {
|
||||
"bundleMediaFramework": true
|
||||
},
|
||||
"macOS": {
|
||||
"frameworks": [],
|
||||
"exceptionDomain": "localhost",
|
||||
"signingIdentity": null,
|
||||
"providerShortName": null,
|
||||
"entitlements": null,
|
||||
"license": "../../LICENSE-MIT"
|
||||
},
|
||||
"windows": {
|
||||
"certificateThumbprint": null,
|
||||
"digestAlgorithm": "sha256",
|
||||
"timestampUrl": ""
|
||||
}
|
||||
},
|
||||
"security": {
|
||||
"csp": null,
|
||||
"dangerousRemoteDomainIpcAccess": [
|
||||
{
|
||||
"domain": "tauri.localhost",
|
||||
"windows": ["main"],
|
||||
"plugins": ["dialog", "fs", "os", "shell", "window"]
|
||||
}
|
||||
"category": "DeveloperTool",
|
||||
"copyright": "",
|
||||
"targets": "all",
|
||||
"externalBin": [],
|
||||
"icon": [
|
||||
"icons/32x32.png",
|
||||
"icons/128x128.png",
|
||||
"icons/128x128@2x.png",
|
||||
"icons/icon.icns",
|
||||
"icons/icon.ico"
|
||||
],
|
||||
"windows": {
|
||||
"certificateThumbprint": null,
|
||||
"digestAlgorithm": "sha256",
|
||||
"timestampUrl": ""
|
||||
},
|
||||
"longDescription": "",
|
||||
"macOS": {
|
||||
"entitlements": null,
|
||||
"exceptionDomain": "localhost",
|
||||
"frameworks": [],
|
||||
"signingIdentity": null,
|
||||
"providerShortName": null
|
||||
},
|
||||
"resources": [],
|
||||
"shortDescription": "",
|
||||
"licenseFile": "../../LICENSE-MIT"
|
||||
},
|
||||
"plugins": {
|
||||
"fs": {
|
||||
"all": true,
|
||||
"scope": [
|
||||
"$APP/*",
|
||||
"$APP"
|
||||
]
|
||||
},
|
||||
"os": {
|
||||
"all": true
|
||||
},
|
||||
"shell": {
|
||||
"open": true
|
||||
},
|
||||
"window": {
|
||||
"close": true,
|
||||
"maximize": true,
|
||||
"minimize": true,
|
||||
"setResizable": true,
|
||||
"setSize": true,
|
||||
"setTitle": true,
|
||||
"startDragging": true,
|
||||
"unmaximize": true,
|
||||
"unminimize": true
|
||||
}
|
||||
},
|
||||
"productName": "slimevr",
|
||||
"version": "../package.json",
|
||||
"identifier": "dev.slimevr.SlimeVR",
|
||||
"app": {
|
||||
"security": {
|
||||
"csp": null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,11 +47,13 @@ import { CalibrationTutorialPage } from './components/onboarding/pages/Calibrati
|
||||
import { AssignmentTutorialPage } from './components/onboarding/pages/assignment-preparation/AssignmentTutorial';
|
||||
import { open } from '@tauri-apps/plugin-shell';
|
||||
import semver from 'semver';
|
||||
import { useBreakpoint } from './hooks/breakpoint';
|
||||
import { useBreakpoint, useIsTauri } from './hooks/breakpoint';
|
||||
import { VRModePage } from './components/vr-mode/VRModePage';
|
||||
import { InterfaceSettings } from './components/settings/pages/InterfaceSettings';
|
||||
import { error, log } from './utils/logging';
|
||||
import { AppLayout } from './AppLayout';
|
||||
import { Preload } from './components/Preload';
|
||||
import { UnknownDeviceModal } from './components/UnknownDeviceModal';
|
||||
|
||||
export const GH_REPO = 'SlimeVR/SlimeVR-Server';
|
||||
export const VersionContext = createContext('');
|
||||
@@ -65,6 +67,7 @@ function Layout() {
|
||||
<>
|
||||
<SerialDetectionModal></SerialDetectionModal>
|
||||
<VersionUpdateModal></VersionUpdateModal>
|
||||
<UnknownDeviceModal></UnknownDeviceModal>
|
||||
<Routes>
|
||||
<Route element={<AppLayout />}>
|
||||
<Route
|
||||
@@ -156,6 +159,24 @@ export default function App() {
|
||||
const websocketAPI = useProvideWebsocketApi();
|
||||
const { l10n } = useLocalization();
|
||||
const [updateFound, setUpdateFound] = useState('');
|
||||
const isTauri = useIsTauri();
|
||||
|
||||
useEffect(() => {
|
||||
const onKeydown: (arg0: KeyboardEvent) => void = function (event) {
|
||||
// prevent search bar keybind
|
||||
if (
|
||||
event.key === 'F3' ||
|
||||
(event.ctrlKey && event.key === 'f') ||
|
||||
(event.metaKey && event.key === 'f')
|
||||
) {
|
||||
event.preventDefault();
|
||||
}
|
||||
};
|
||||
|
||||
window.addEventListener('keydown', onKeydown);
|
||||
return () => window.removeEventListener('keydown', onKeydown);
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
async function fetchReleases() {
|
||||
const releases = await fetch(
|
||||
@@ -175,7 +196,7 @@ export default function App() {
|
||||
fetchReleases().catch(() => error('failed to fetch releases'));
|
||||
}, []);
|
||||
|
||||
if (window.__TAURI_METADATA__) {
|
||||
if (isTauri) {
|
||||
useEffect(() => {
|
||||
os.type()
|
||||
.then((type) => document.body.classList.add(type.toLowerCase()))
|
||||
@@ -189,7 +210,7 @@ export default function App() {
|
||||
}, []);
|
||||
}
|
||||
|
||||
if (window.__TAURI_METADATA__) {
|
||||
if (isTauri) {
|
||||
useEffect(() => {
|
||||
const unlisten = listen(
|
||||
'server-status',
|
||||
@@ -226,8 +247,7 @@ export default function App() {
|
||||
}
|
||||
);
|
||||
return () => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
||||
unlisten.then(() => {});
|
||||
unlisten.then((fn) => fn());
|
||||
};
|
||||
}, []);
|
||||
}
|
||||
@@ -252,6 +272,7 @@ export default function App() {
|
||||
<StatusProvider>
|
||||
<VersionContext.Provider value={updateFound}>
|
||||
<div className="h-full w-full text-standard bg-background-80 text-background-10">
|
||||
<Preload />
|
||||
<div className="flex-col h-full">
|
||||
{!websocketAPI.isConnected && (
|
||||
<>
|
||||
|
||||
@@ -16,7 +16,7 @@ export function ClearDriftCompensationButton() {
|
||||
return (
|
||||
<BigButton
|
||||
text={l10n.getString('widget-drift_compensation-clear')}
|
||||
icon={<TrashIcon width={20} />}
|
||||
icon={<TrashIcon size={20} />}
|
||||
onClick={clearDriftCompensation}
|
||||
>
|
||||
{}
|
||||
|
||||
@@ -36,7 +36,7 @@ export function ClearMountingButton() {
|
||||
return (
|
||||
<BigButton
|
||||
text={l10n.getString('widget-clear_mounting')}
|
||||
icon={<TrashIcon width={20} />}
|
||||
icon={<TrashIcon size={20} />}
|
||||
onClick={clearMounting}
|
||||
disabled={!trackerWithMounting}
|
||||
/>
|
||||
|
||||
50
gui/src/components/Preload.tsx
Normal file
@@ -0,0 +1,50 @@
|
||||
import { Helmet } from 'react-helmet';
|
||||
export function Preload() {
|
||||
return (
|
||||
<Helmet>
|
||||
<link rel="preload" href="/images/front-standing-pose.webp" as="image" />
|
||||
<link rel="preload" href="/images/slime-girl.webp" as="image" />
|
||||
<link rel="preload" href="/images/mounting-reset-pose.webp" as="image" />
|
||||
<link rel="preload" href="/images/reset-pose.webp" as="image" />
|
||||
<link rel="preload" href="/images/slimes.webp" as="image" />
|
||||
|
||||
<link rel="preload" href="/videos/autobone.webm" as="video" />
|
||||
|
||||
<link
|
||||
rel="preload"
|
||||
href="/sounds/quick-reset-started-sound.mp3"
|
||||
as="audio"
|
||||
/>
|
||||
<link
|
||||
rel="preload"
|
||||
href="/sounds/full-reset-started-sound.mp3"
|
||||
as="audio"
|
||||
/>
|
||||
<link
|
||||
rel="preload"
|
||||
href="/sounds/mounting-reset-started-sound.mp3"
|
||||
as="audio"
|
||||
/>
|
||||
<link rel="preload" href="/sounds/first-tap.mp3" as="audio" />
|
||||
<link rel="preload" href="/sounds/second-tap.mp3" as="audio" />
|
||||
<link rel="preload" href="/sounds/third-tap.mp3" as="audio" />
|
||||
<link rel="preload" href="/sounds/fourth-tap.mp3" as="audio" />
|
||||
<link rel="preload" href="/sounds/fifth-tap.mp3" as="audio" />
|
||||
<link rel="preload" href="/sounds/end-tap.mp3" as="audio" />
|
||||
<link rel="preload" href="/sounds/tapextrasetup.mp3" as="audio" />
|
||||
|
||||
<link
|
||||
rel="preload"
|
||||
href="/models/tracker.gltf"
|
||||
as="fetch"
|
||||
crossOrigin="anonymous"
|
||||
/>
|
||||
<link
|
||||
rel="preload"
|
||||
href="/models/extension.gltf"
|
||||
as="fetch"
|
||||
crossOrigin="anonymous"
|
||||
/>
|
||||
</Helmet>
|
||||
);
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
import { getCurrent } from '@tauri-apps/plugin-window';
|
||||
import { getCurrent } from '@tauri-apps/api/webviewWindow';
|
||||
import { ReactNode, useContext, useEffect, useState } from 'react';
|
||||
import { NavLink, useMatch } from 'react-router-dom';
|
||||
import {
|
||||
RpcMessage,
|
||||
ServerInfosRequestT,
|
||||
ServerInfosResponseT,
|
||||
TrackerStatus,
|
||||
} from 'solarxr-protocol';
|
||||
import { useWebsocketAPI } from '@/hooks/websocket-api';
|
||||
import { CloseIcon } from './commons/icon/CloseIcon';
|
||||
@@ -15,12 +16,17 @@ import { ProgressBar } from './commons/ProgressBar';
|
||||
import { Typography } from './commons/Typography';
|
||||
import { DownloadIcon } from './commons/icon/DownloadIcon';
|
||||
import { open } from '@tauri-apps/plugin-shell';
|
||||
import { GH_REPO, VersionContext, DOCS_SITE } from '@/App';
|
||||
import { DOCS_SITE, GH_REPO, VersionContext } from '@/App';
|
||||
import classNames from 'classnames';
|
||||
import { QuestionIcon } from './commons/icon/QuestionIcon';
|
||||
import { useBreakpoint, useIsTauri } from '@/hooks/breakpoint';
|
||||
import { GearIcon } from './commons/icon/GearIcon';
|
||||
import { invoke } from '@tauri-apps/api';
|
||||
import { invoke } from '@tauri-apps/api/core';
|
||||
import { useTrackers } from '@/hooks/tracker';
|
||||
import { TrackersStillOnModal } from './TrackersStillOnModal';
|
||||
import { useConfig } from '@/hooks/config';
|
||||
import { listen } from '@tauri-apps/api/event';
|
||||
import { TrayOrExitModal } from './TrayOrExitModal';
|
||||
|
||||
export function VersionTag() {
|
||||
return (
|
||||
@@ -49,11 +55,54 @@ export function TopBar({
|
||||
const isTauri = useIsTauri();
|
||||
const { isMobile } = useBreakpoint('mobile');
|
||||
const { useRPCPacket, sendRPCPacket } = useWebsocketAPI();
|
||||
const { useConnectedIMUTrackers } = useTrackers();
|
||||
const connectedIMUTrackers = useConnectedIMUTrackers();
|
||||
const { config, setConfig } = useConfig();
|
||||
const version = useContext(VersionContext);
|
||||
const [localIp, setLocalIp] = useState<string | null>(null);
|
||||
const [showConnectedTrackersWarning, setConnectedTrackerWarning] =
|
||||
useState(false);
|
||||
const [showTrayOrExitModal, setShowTrayOrExitModal] = useState(false);
|
||||
const doesMatchSettings = useMatch({
|
||||
path: '/settings/*',
|
||||
});
|
||||
const closeApp = async () => {
|
||||
await invoke('update_window_state');
|
||||
await getCurrent().close();
|
||||
};
|
||||
const tryCloseApp = async (dontTray = false) => {
|
||||
if (isTauri && config?.useTray === null) {
|
||||
setShowTrayOrExitModal(true);
|
||||
return;
|
||||
}
|
||||
|
||||
if (config?.useTray && !dontTray) {
|
||||
await getCurrent().hide();
|
||||
await invoke('update_tray_text');
|
||||
} else if (
|
||||
config?.connectedTrackersWarning &&
|
||||
connectedIMUTrackers.filter(
|
||||
(t) => t.tracker.status !== TrackerStatus.TIMED_OUT
|
||||
).length > 0
|
||||
) {
|
||||
setConnectedTrackerWarning(true);
|
||||
} else {
|
||||
await closeApp();
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
const unlisten = listen('try-close', async () => {
|
||||
const window = getCurrent();
|
||||
await window.show();
|
||||
await window.setFocus();
|
||||
await invoke('update_tray_text');
|
||||
await tryCloseApp(true);
|
||||
});
|
||||
return () => {
|
||||
unlisten.then((fn) => fn());
|
||||
};
|
||||
}, [config?.useTray, config?.connectedTrackersWarning]);
|
||||
|
||||
useEffect(() => {
|
||||
sendRPCPacket(RpcMessage.ServerInfosRequest, new ServerInfosRequestT());
|
||||
@@ -197,10 +246,7 @@ export function TopBar({
|
||||
</div>
|
||||
<div
|
||||
className="flex items-center justify-center hover:bg-background-60 rounded-full w-7 h-7"
|
||||
onClick={async () => {
|
||||
await invoke('update_window_state');
|
||||
getCurrent().close();
|
||||
}}
|
||||
onClick={() => tryCloseApp()}
|
||||
>
|
||||
<CloseIcon></CloseIcon>
|
||||
</div>
|
||||
@@ -214,6 +260,32 @@ export function TopBar({
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<TrayOrExitModal
|
||||
isOpen={showTrayOrExitModal}
|
||||
accept={async (useTray) => {
|
||||
await setConfig({ useTray });
|
||||
setShowTrayOrExitModal(false);
|
||||
|
||||
// Doing this in here just in case config doesn't get updated in time
|
||||
if (useTray) {
|
||||
await getCurrent().hide();
|
||||
await invoke('update_tray_text');
|
||||
} else if (
|
||||
config?.connectedTrackersWarning &&
|
||||
connectedIMUTrackers.length > 0
|
||||
) {
|
||||
setConnectedTrackerWarning(true);
|
||||
} else {
|
||||
await closeApp();
|
||||
}
|
||||
}}
|
||||
cancel={() => setShowTrayOrExitModal(false)}
|
||||
/>
|
||||
<TrackersStillOnModal
|
||||
isOpen={showConnectedTrackersWarning}
|
||||
accept={() => closeApp()}
|
||||
cancel={() => setConnectedTrackerWarning(false)}
|
||||
></TrackersStillOnModal>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
51
gui/src/components/TrackersStillOnModal.tsx
Normal file
@@ -0,0 +1,51 @@
|
||||
import { useLocalization } from '@fluent/react';
|
||||
import { BaseModal } from './commons/BaseModal';
|
||||
import { Button } from './commons/Button';
|
||||
import { Typography } from './commons/Typography';
|
||||
|
||||
export function TrackersStillOnModal({
|
||||
isOpen = true,
|
||||
cancel,
|
||||
accept,
|
||||
}: {
|
||||
/**
|
||||
* Is the parent/sibling component opened?
|
||||
*/
|
||||
isOpen: boolean;
|
||||
/**
|
||||
* Function to trigger when you still want to close the app
|
||||
*/
|
||||
accept: () => void;
|
||||
/**
|
||||
* Function to trigger when cancelling app close
|
||||
*/
|
||||
cancel?: () => void;
|
||||
}) {
|
||||
const { l10n } = useLocalization();
|
||||
|
||||
return (
|
||||
<BaseModal isOpen={isOpen} onRequestClose={cancel}>
|
||||
<div className="flex flex-col gap-3">
|
||||
<>
|
||||
<div className="flex flex-col items-center gap-3 fill-accent-background-20">
|
||||
<div className="flex flex-col items-center gap-2">
|
||||
<Typography variant="main-title">
|
||||
{l10n.getString('trackers_still_on-modal-title')}
|
||||
</Typography>
|
||||
<Typography variant="standard">
|
||||
{l10n.getString('trackers_still_on-modal-description')}
|
||||
</Typography>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Button variant="primary" onClick={accept}>
|
||||
{l10n.getString('trackers_still_on-modal-confirm')}
|
||||
</Button>
|
||||
<Button variant="tertiary" onClick={cancel}>
|
||||
{l10n.getString('trackers_still_on-modal-cancel')}
|
||||
</Button>
|
||||
</>
|
||||
</div>
|
||||
</BaseModal>
|
||||
);
|
||||
}
|
||||
@@ -1,6 +1,11 @@
|
||||
import { useLocalization } from '@fluent/react';
|
||||
import { useState } from 'react';
|
||||
import { SetPauseTrackingRequestT, RpcMessage } from 'solarxr-protocol';
|
||||
import {
|
||||
SetPauseTrackingRequestT,
|
||||
RpcMessage,
|
||||
TrackingPauseStateResponseT,
|
||||
TrackingPauseStateRequestT,
|
||||
} from 'solarxr-protocol';
|
||||
import { useWebsocketAPI } from '@/hooks/websocket-api';
|
||||
import { BigButton } from './commons/BigButton';
|
||||
import { PlayIcon } from './commons/icon/PlayIcon';
|
||||
@@ -10,16 +15,26 @@ export function TrackingPauseButton(
|
||||
props: React.HTMLAttributes<HTMLButtonElement>
|
||||
) {
|
||||
const { l10n } = useLocalization();
|
||||
const { sendRPCPacket } = useWebsocketAPI();
|
||||
const { useRPCPacket, sendRPCPacket } = useWebsocketAPI();
|
||||
const [trackingPause, setTrackingPause] = useState(false);
|
||||
|
||||
const toggleTracking = () => {
|
||||
const pause = new SetPauseTrackingRequestT();
|
||||
pause.pauseTracking = !trackingPause;
|
||||
setTrackingPause(pause.pauseTracking);
|
||||
const pause = new SetPauseTrackingRequestT(!trackingPause);
|
||||
sendRPCPacket(RpcMessage.SetPauseTrackingRequest, pause);
|
||||
};
|
||||
|
||||
useRPCPacket(
|
||||
RpcMessage.TrackingPauseStateResponse,
|
||||
(data: TrackingPauseStateResponseT) => {
|
||||
setTrackingPause(data.trackingPaused);
|
||||
}
|
||||
);
|
||||
|
||||
sendRPCPacket(
|
||||
RpcMessage.TrackingPauseStateRequest,
|
||||
new TrackingPauseStateRequestT()
|
||||
);
|
||||
|
||||
return (
|
||||
<BigButton
|
||||
text={l10n.getString(
|
||||
|
||||
78
gui/src/components/TrayOrExitModal.tsx
Normal file
@@ -0,0 +1,78 @@
|
||||
import { useLocalization } from '@fluent/react';
|
||||
import { BaseModal } from './commons/BaseModal';
|
||||
import { Button } from './commons/Button';
|
||||
import { Typography } from './commons/Typography';
|
||||
import { useForm } from 'react-hook-form';
|
||||
import { Radio } from './commons/Radio';
|
||||
|
||||
interface TrayOrExitForm {
|
||||
exitType: string;
|
||||
}
|
||||
|
||||
export function TrayOrExitModal({
|
||||
isOpen = true,
|
||||
cancel,
|
||||
accept,
|
||||
}: {
|
||||
/**
|
||||
* Is the parent/sibling component opened?
|
||||
*/
|
||||
isOpen: boolean;
|
||||
/**
|
||||
* Function to trigger when you still want to close the app
|
||||
* @param tray If asked for close to tray
|
||||
*/
|
||||
accept: (tray: boolean) => void;
|
||||
/**
|
||||
* Function to trigger when cancelling app close
|
||||
*/
|
||||
cancel?: () => void;
|
||||
}) {
|
||||
const { l10n } = useLocalization();
|
||||
const { control, handleSubmit } = useForm<TrayOrExitForm>({
|
||||
defaultValues: {
|
||||
exitType: '0',
|
||||
},
|
||||
});
|
||||
|
||||
return (
|
||||
<BaseModal isOpen={isOpen} onRequestClose={cancel}>
|
||||
<form
|
||||
className="flex flex-col gap-3 w-[27rem]"
|
||||
onSubmit={handleSubmit((form) => accept(form.exitType === '1'))}
|
||||
>
|
||||
<div className="flex flex-col items-center gap-3 fill-accent-background-20">
|
||||
<div className="flex flex-col items-center gap-2">
|
||||
<Typography variant="main-title">
|
||||
{l10n.getString('tray_or_exit_modal-title')}
|
||||
</Typography>
|
||||
<div>
|
||||
<Typography variant="standard" whitespace="whitespace-pre-line">
|
||||
{l10n.getString('tray_or_exit_modal-description')}
|
||||
</Typography>
|
||||
</div>
|
||||
</div>
|
||||
<Radio
|
||||
control={control}
|
||||
name="exitType"
|
||||
label={l10n.getString('tray_or_exit_modal-radio-exit')}
|
||||
value="0"
|
||||
></Radio>
|
||||
<Radio
|
||||
control={control}
|
||||
name="exitType"
|
||||
label={l10n.getString('tray_or_exit_modal-radio-tray')}
|
||||
value="1"
|
||||
></Radio>
|
||||
</div>
|
||||
|
||||
<Button type="submit" variant="primary">
|
||||
{l10n.getString('tray_or_exit_modal-submit')}
|
||||
</Button>
|
||||
<Button variant="tertiary" onClick={cancel}>
|
||||
{l10n.getString('tray_or_exit_modal-cancel')}
|
||||
</Button>
|
||||
</form>
|
||||
</BaseModal>
|
||||
);
|
||||
}
|
||||
104
gui/src/components/UnknownDeviceModal.tsx
Normal file
@@ -0,0 +1,104 @@
|
||||
import { useState } from 'react';
|
||||
import { BaseModal } from './commons/BaseModal';
|
||||
import { Typography } from './commons/Typography';
|
||||
import { Button } from './commons/Button';
|
||||
import { Localized, useLocalization } from '@fluent/react';
|
||||
import { useWebsocketAPI } from '@/hooks/websocket-api';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import {
|
||||
AddUnknownDeviceRequestT,
|
||||
RpcMessage,
|
||||
UnknownDeviceHandshakeNotificationT,
|
||||
} from 'solarxr-protocol';
|
||||
import { useDebouncedEffect } from '@/hooks/timeout';
|
||||
import { useAppContext } from '@/hooks/app';
|
||||
|
||||
export function UnknownDeviceModal() {
|
||||
const { l10n } = useLocalization();
|
||||
const [open, setOpen] = useState(0);
|
||||
const { pathname } = useLocation();
|
||||
const { state, dispatch } = useAppContext();
|
||||
const [currentTracker, setCurrentTracker] = useState<string | null>(null);
|
||||
const { useRPCPacket, sendRPCPacket } = useWebsocketAPI();
|
||||
|
||||
useRPCPacket(
|
||||
RpcMessage.UnknownDeviceHandshakeNotification,
|
||||
({ macAddress }: UnknownDeviceHandshakeNotificationT) => {
|
||||
if (
|
||||
['/onboarding/connect-trackers'].includes(pathname) ||
|
||||
state.ignoredTrackers.has(macAddress as string) ||
|
||||
(currentTracker !== null && currentTracker !== macAddress)
|
||||
)
|
||||
return;
|
||||
|
||||
setCurrentTracker(macAddress as string);
|
||||
setOpen((old) => old + 1);
|
||||
}
|
||||
);
|
||||
|
||||
useDebouncedEffect(
|
||||
() => {
|
||||
setOpen(0);
|
||||
setCurrentTracker(null);
|
||||
},
|
||||
[open],
|
||||
3000
|
||||
);
|
||||
|
||||
const closeModal = () => {
|
||||
setCurrentTracker(null);
|
||||
setOpen(0);
|
||||
};
|
||||
|
||||
return (
|
||||
<BaseModal isOpen={open !== 0}>
|
||||
<div className="flex flex-col gap-3">
|
||||
<div className="flex flex-col items-center gap-3 fill-accent-background-20">
|
||||
<div className="flex flex-col items-center gap-2">
|
||||
<Typography variant="main-title">
|
||||
{l10n.getString('unknown_device-modal-title')}
|
||||
</Typography>
|
||||
<Localized
|
||||
id="unknown_device-modal-description"
|
||||
elems={{ b: <b></b> }}
|
||||
vars={{ deviceId: currentTracker ?? 'ERROR' }}
|
||||
>
|
||||
<Typography
|
||||
variant="standard"
|
||||
textAlign="text-center"
|
||||
whitespace="whitespace-pre-line"
|
||||
>
|
||||
There is a new device in here!
|
||||
</Typography>
|
||||
</Localized>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Button
|
||||
variant="primary"
|
||||
onClick={() => {
|
||||
sendRPCPacket(
|
||||
RpcMessage.AddUnknownDeviceRequest,
|
||||
new AddUnknownDeviceRequestT(currentTracker)
|
||||
);
|
||||
closeModal();
|
||||
}}
|
||||
>
|
||||
{l10n.getString('unknown_device-modal-confirm')}
|
||||
</Button>
|
||||
<Button
|
||||
variant="tertiary"
|
||||
onClick={() => {
|
||||
dispatch({
|
||||
type: 'ignoreTracker',
|
||||
value: currentTracker as string,
|
||||
});
|
||||
closeModal();
|
||||
}}
|
||||
>
|
||||
{l10n.getString('unknown_device-modal-forget')}
|
||||
</Button>
|
||||
</div>
|
||||
</BaseModal>
|
||||
);
|
||||
}
|
||||
@@ -19,6 +19,7 @@ import { parseStatusToLocale, useStatusContext } from '@/hooks/status-system';
|
||||
import { useWebsocketAPI } from '@/hooks/websocket-api';
|
||||
import { useAppContext } from '@/hooks/app';
|
||||
import { ClearMountingButton } from './ClearMountingButton';
|
||||
import { ToggleableSkeletonVisualizerWidget } from './widgets/SkeletonVisualizerWidget';
|
||||
|
||||
export function WidgetsComponent() {
|
||||
const { config } = useConfig();
|
||||
@@ -58,6 +59,9 @@ export function WidgetsComponent() {
|
||||
<div className="w-full">
|
||||
<OverlayWidget></OverlayWidget>
|
||||
</div>
|
||||
<div className="mb-2">
|
||||
<ToggleableSkeletonVisualizerWidget height={400} />
|
||||
</div>
|
||||
<div className="w-full flex flex-col gap-3 mb-2">
|
||||
{unprioritizedStatuses.map((status) => (
|
||||
<Localized
|
||||
|
||||
@@ -12,6 +12,7 @@ export function BodyInteractions({
|
||||
width = 228,
|
||||
dotsSize = 15,
|
||||
variant = 'tracker-select',
|
||||
mirror,
|
||||
onSelectRole,
|
||||
}: {
|
||||
leftControls?: ReactNode;
|
||||
@@ -22,6 +23,7 @@ export function BodyInteractions({
|
||||
assignedRoles: BodyPart[];
|
||||
onSelectRole: (role: BodyPart) => void;
|
||||
highlightedRoles: BodyPart[];
|
||||
mirror: boolean;
|
||||
}) {
|
||||
const { isMobile } = useBreakpoint('mobile');
|
||||
|
||||
@@ -166,7 +168,7 @@ export function BodyInteractions({
|
||||
variant === 'tracker-select' && 'mobile:mx-0 xs:mx-10'
|
||||
)}
|
||||
>
|
||||
<PersonFrontIcon width={width}></PersonFrontIcon>
|
||||
<PersonFrontIcon width={width} mirror={mirror}></PersonFrontIcon>
|
||||
{slotsButtonsPos.map(
|
||||
({ top, left, height, width, id, hidden, buttonOffset }) => (
|
||||
<div
|
||||
|
||||
@@ -33,6 +33,8 @@ export const mapPart: Record<
|
||||
[BodyPart.CHEST]: ({ width }) => <ChestIcon width={width}></ChestIcon>,
|
||||
[BodyPart.HEAD]: ({ width }) => <HeadsetIcon width={width}></HeadsetIcon>,
|
||||
[BodyPart.HIP]: ({ width }) => <HipIcon width={width}></HipIcon>,
|
||||
[BodyPart.LEFT_HIP]: ({ width }) => <HipIcon width={width}></HipIcon>, // Unused
|
||||
[BodyPart.RIGHT_HIP]: ({ width }) => <HipIcon width={width}></HipIcon>, // Unused
|
||||
[BodyPart.LEFT_FOOT]: ({ width, currentLocales }) =>
|
||||
currentLocales.includes('en-x-owo') ? (
|
||||
<PawIcon></PawIcon>
|
||||
|
||||
@@ -47,7 +47,7 @@ export function Button({
|
||||
rounded = false,
|
||||
...props
|
||||
}: {
|
||||
children: ReactNode;
|
||||
children?: ReactNode;
|
||||
icon?: ReactNode;
|
||||
variant: 'primary' | 'secondary' | 'tertiary' | 'quaternary';
|
||||
to?: string;
|
||||
|
||||
@@ -5,6 +5,7 @@ import { Control, Controller } from 'react-hook-form';
|
||||
export function CheckBox({
|
||||
label,
|
||||
variant = 'checkbox',
|
||||
color = 'primary',
|
||||
control,
|
||||
outlined,
|
||||
name,
|
||||
@@ -16,6 +17,7 @@ export function CheckBox({
|
||||
control: Control<any>;
|
||||
name: string;
|
||||
variant?: 'checkbox' | 'toggle';
|
||||
color?: 'primary' | 'secondary' | 'tertiary';
|
||||
outlined?: boolean;
|
||||
} & React.HTMLProps<HTMLInputElement>) {
|
||||
const classes = useMemo(() => {
|
||||
@@ -44,8 +46,11 @@ export function CheckBox({
|
||||
<div
|
||||
className={classNames(
|
||||
{
|
||||
'bg-background-60 rounded-lg text-background-10': outlined,
|
||||
'text-background-30': !outlined,
|
||||
'rounded-lg': outlined,
|
||||
'text-background-30': !outlined || disabled,
|
||||
'bg-background-60': outlined && color === 'primary',
|
||||
'bg-background-70': outlined && color === 'secondary',
|
||||
'bg-background-50': outlined && color === 'tertiary',
|
||||
},
|
||||
'flex items-center gap-2 w-full'
|
||||
)}
|
||||
@@ -66,19 +71,24 @@ export function CheckBox({
|
||||
name={name}
|
||||
className={classes.checkbox}
|
||||
type="checkbox"
|
||||
disabled={disabled}
|
||||
{...props}
|
||||
/>
|
||||
{variant === 'toggle' && (
|
||||
<div
|
||||
className={classNames(classes.toggle, {
|
||||
'bg-accent-background-30': value,
|
||||
'bg-background-50': !value,
|
||||
'bg-accent-background-30': value && !disabled,
|
||||
'bg-accent-background-50': value && disabled,
|
||||
'bg-background-50':
|
||||
(!value && color == 'primary') || color == 'secondary',
|
||||
'bg-background-40': !value && color == 'tertiary',
|
||||
})}
|
||||
>
|
||||
<div
|
||||
className={classNames(classes.pin, {
|
||||
'left-0': !value,
|
||||
'right-0': value,
|
||||
'bg-background-30': disabled,
|
||||
})}
|
||||
></div>
|
||||
</div>
|
||||
|
||||
@@ -1,12 +1,33 @@
|
||||
import classNames from 'classnames';
|
||||
import { useEffect, useState } from 'react';
|
||||
import {
|
||||
Control,
|
||||
Controller,
|
||||
UseFormGetValues,
|
||||
useWatch,
|
||||
} from 'react-hook-form';
|
||||
import { useEffect, useRef, useState } from 'react';
|
||||
import { Control, Controller, UseControllerProps } from 'react-hook-form';
|
||||
import { a11yClick } from '@/utils/a11y';
|
||||
import { createPortal } from 'react-dom';
|
||||
import { useElemSize } from '@/hooks/layout';
|
||||
import { ArrowDownIcon } from './icon/ArrowIcons';
|
||||
|
||||
interface DropdownProps {
|
||||
direction?: DropdownDirection;
|
||||
variant?: 'primary' | 'secondary' | 'tertiary';
|
||||
alignment?: 'right' | 'left';
|
||||
display?: 'fit' | 'block';
|
||||
placeholder: string;
|
||||
control: Control<any>;
|
||||
name: string;
|
||||
items: DropdownItem[];
|
||||
maxHeight?: string | number;
|
||||
rules?: UseControllerProps<any>['rules'];
|
||||
}
|
||||
|
||||
type DropdownItemsProps = Pick<
|
||||
DropdownProps,
|
||||
'direction' | 'variant' | 'alignment' | 'display' | 'items' | 'maxHeight'
|
||||
> & {
|
||||
onSelectItem: (item: DropdownItem) => void;
|
||||
onBackdropClick: () => void;
|
||||
value: string;
|
||||
dropdownBounds: DOMRect;
|
||||
};
|
||||
|
||||
export interface DropdownItem {
|
||||
label: string;
|
||||
@@ -16,200 +37,188 @@ export interface DropdownItem {
|
||||
|
||||
export type DropdownDirection = 'up' | 'down';
|
||||
|
||||
export function DropdownItems({
|
||||
display,
|
||||
direction,
|
||||
variant,
|
||||
alignment,
|
||||
items,
|
||||
maxHeight,
|
||||
value,
|
||||
dropdownBounds,
|
||||
onSelectItem,
|
||||
onBackdropClick,
|
||||
}: DropdownItemsProps) {
|
||||
const { height, width, ref } = useElemSize<HTMLDivElement>();
|
||||
|
||||
const GAP = 8;
|
||||
|
||||
return (
|
||||
<>
|
||||
<div
|
||||
className="z-[999] fixed top-0 w-full h-full"
|
||||
onClick={onBackdropClick}
|
||||
></div>
|
||||
<div
|
||||
ref={ref}
|
||||
className={classNames(
|
||||
'z-[1000] fixed rounded shadow',
|
||||
'overflow-y-auto dropdown-scroll overflow-x-hidden text-background-10',
|
||||
variant == 'primary' && 'bg-background-60',
|
||||
variant == 'secondary' && 'bg-background-70',
|
||||
variant == 'tertiary' && 'bg-accent-background-30',
|
||||
height == 0 && 'opacity-0' // Avoid flicker while the component find its position
|
||||
)}
|
||||
style={{
|
||||
maxHeight: maxHeight,
|
||||
left:
|
||||
alignment === 'left'
|
||||
? dropdownBounds.left
|
||||
: dropdownBounds.left + dropdownBounds.width - width,
|
||||
top:
|
||||
direction == 'down'
|
||||
? dropdownBounds.bottom + GAP
|
||||
: dropdownBounds.top - height - GAP,
|
||||
minWidth: display === 'block' ? dropdownBounds.width : 'inherit',
|
||||
}}
|
||||
>
|
||||
<ul className="py-1 text-sm flex flex-col">
|
||||
{items.map((item) => (
|
||||
<li
|
||||
style={item.fontName ? { fontFamily: item.fontName } : {}}
|
||||
className={classNames(
|
||||
'py-2 px-4 min-w-max cursor-pointer',
|
||||
variant == 'primary' &&
|
||||
'checked-hover:bg-background-50 text-background-20 ' +
|
||||
'checked-hover:text-background-10',
|
||||
variant == 'secondary' &&
|
||||
'checked-hover:bg-background-60 text-background-20 ' +
|
||||
'checked-hover:text-background-10',
|
||||
variant == 'tertiary' &&
|
||||
'bg-accent-background-30 checked-hover:bg-accent-background-20'
|
||||
)}
|
||||
onClick={() => {
|
||||
onSelectItem(item);
|
||||
}}
|
||||
onKeyDown={(ev) => {
|
||||
if (!a11yClick(ev)) return;
|
||||
onSelectItem(item);
|
||||
}}
|
||||
key={item.value}
|
||||
tabIndex={0}
|
||||
data-checked={item.value === value}
|
||||
>
|
||||
{item.label}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export function Dropdown({
|
||||
direction = 'up',
|
||||
variant = 'primary',
|
||||
alignment = 'right',
|
||||
display = 'fit',
|
||||
maxHeight = '50vh',
|
||||
placeholder,
|
||||
control,
|
||||
getValues,
|
||||
rules,
|
||||
name,
|
||||
items = [],
|
||||
}: {
|
||||
direction?: DropdownDirection;
|
||||
variant?: 'primary' | 'secondary' | 'tertiary';
|
||||
alignment?: 'right' | 'left';
|
||||
display?: 'fit' | 'block';
|
||||
placeholder: string;
|
||||
control: Control<any>;
|
||||
getValues: UseFormGetValues<any>;
|
||||
name: string;
|
||||
items: DropdownItem[];
|
||||
}) {
|
||||
const itemRefs: Record<string, HTMLLIElement> = {};
|
||||
const [isOpen, setOpen] = useState(false);
|
||||
const formValue = {
|
||||
...{ value: useWatch({ control, name }) as string },
|
||||
...{ value: getValues(name) as string },
|
||||
}: DropdownProps) {
|
||||
const ref = useRef<HTMLDivElement | null>(null);
|
||||
const [isOpen, setOpenState] = useState(false);
|
||||
const [dropdownBounds, setDropdownBounds] = useState<DOMRect>();
|
||||
|
||||
const updateBounds = () => {
|
||||
if (!ref.current) return;
|
||||
setDropdownBounds(ref.current?.getBoundingClientRect());
|
||||
};
|
||||
|
||||
const onResize = () => {
|
||||
// We could have two behaviours here:
|
||||
// 1 - We update the bounds of the dropdown so the size and position match.
|
||||
// Works but have a slight delay when resizing, kinda looks laggy
|
||||
// 2 - We close the dropdown on resize.
|
||||
// We could consider this as the same as clicking outside of the dropdown
|
||||
// This is the approach choosen RN
|
||||
setOpen(false);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (!isOpen) return;
|
||||
|
||||
const curItem = itemRefs[formValue.value];
|
||||
const dropdownParent = curItem
|
||||
? (curItem.closest('.dropdown-scroll') as HTMLElement | null)
|
||||
: null;
|
||||
if (curItem && dropdownParent) {
|
||||
dropdownParent.scroll({
|
||||
top: curItem.offsetTop - dropdownParent.offsetHeight / 2,
|
||||
});
|
||||
}
|
||||
|
||||
function onWheelEvent() {
|
||||
if (isOpen && !document.querySelector('div.dropdown-scroll:hover')) {
|
||||
setOpen(false);
|
||||
}
|
||||
}
|
||||
|
||||
function onTouchEvent(event: TouchEvent) {
|
||||
// Check if we touch scroll outside of the dropdown
|
||||
if (
|
||||
isOpen &&
|
||||
!document
|
||||
.querySelector('div.dropdown-scroll')
|
||||
?.contains(event.target as HTMLDivElement)
|
||||
) {
|
||||
setOpen(false);
|
||||
}
|
||||
}
|
||||
|
||||
function onClick(event: MouseEvent) {
|
||||
const isInDropdownScroll = document
|
||||
.querySelector('div.dropdown-scroll')
|
||||
?.contains(event.target as HTMLDivElement);
|
||||
const isInDropdown = !!(event.target as HTMLDivElement).closest(
|
||||
'.dropdown'
|
||||
);
|
||||
if (isOpen && !isInDropdownScroll && !isInDropdown) {
|
||||
setOpen(false);
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('click', onClick, false);
|
||||
document.addEventListener('touchmove', onTouchEvent, false);
|
||||
// TS doesn't let me specify { passive: true }, but I believe it will work anyways
|
||||
document.addEventListener('wheel', onWheelEvent, { passive: true });
|
||||
window.addEventListener('resize', onResize);
|
||||
return () => {
|
||||
document.removeEventListener('wheel', onWheelEvent);
|
||||
document.removeEventListener('click', onClick);
|
||||
document.removeEventListener('touchmove', onTouchEvent);
|
||||
window.removeEventListener('resize', onResize);
|
||||
};
|
||||
}, [isOpen]);
|
||||
}, []);
|
||||
|
||||
const setOpen = (open: boolean | ((prevState: boolean) => boolean)) => {
|
||||
updateBounds();
|
||||
setOpenState(open);
|
||||
};
|
||||
|
||||
return (
|
||||
<Controller
|
||||
control={control}
|
||||
name={name}
|
||||
rules={rules}
|
||||
render={({ field: { onChange, value } }) => (
|
||||
<>
|
||||
{isOpen && (
|
||||
<div
|
||||
className="absolute top-0 left-0 w-full h-full bg-transparent"
|
||||
onClick={() => setOpen(false)}
|
||||
></div>
|
||||
)}
|
||||
<div
|
||||
ref={ref}
|
||||
className={classNames(
|
||||
'relative',
|
||||
'min-h-[42px] text-background-10 px-5 py-3 rounded-md focus:ring-4 text-center dropdown',
|
||||
'flex cursor-pointer',
|
||||
variant == 'primary' && 'bg-background-60 hover:bg-background-50',
|
||||
variant == 'secondary' &&
|
||||
'bg-background-70 hover:bg-background-60',
|
||||
variant == 'tertiary' &&
|
||||
'bg-accent-background-30 hover:bg-accent-background-20',
|
||||
display === 'fit' && 'w-fit',
|
||||
display === 'block' && 'w-full'
|
||||
)}
|
||||
onClick={() => setOpen((open) => !open)}
|
||||
onKeyDown={(ev) => a11yClick(ev) && setOpen((open) => !open)}
|
||||
tabIndex={0}
|
||||
>
|
||||
<div className="flex-grow text-standard">
|
||||
{items.find((i) => i.value == value)?.label || placeholder}
|
||||
</div>
|
||||
<div
|
||||
className={classNames(
|
||||
'min-h-[35px] text-background-10 px-5 py-2.5 rounded-md focus:ring-4 text-center dropdown',
|
||||
'flex cursor-pointer',
|
||||
variant == 'primary' &&
|
||||
'bg-background-60 hover:bg-background-50',
|
||||
variant == 'secondary' &&
|
||||
'bg-background-70 hover:bg-background-60',
|
||||
variant == 'tertiary' &&
|
||||
'bg-accent-background-30 hover:bg-accent-background-20'
|
||||
'ml-2 fill-background-10',
|
||||
direction == 'up' && 'rotate-180',
|
||||
direction == 'down' && 'rotate-0'
|
||||
)}
|
||||
onClick={() => setOpen((open) => !open)}
|
||||
onKeyDown={(ev) => a11yClick(ev) && setOpen((open) => !open)}
|
||||
tabIndex={0}
|
||||
>
|
||||
<div className="flex-grow text-standard">
|
||||
{items.find((i) => i.value == value)?.label || placeholder}
|
||||
</div>
|
||||
<div
|
||||
className={classNames(
|
||||
'ml-2',
|
||||
direction == 'up' && 'rotate-180',
|
||||
direction == 'down' && 'rotate-0'
|
||||
)}
|
||||
>
|
||||
<svg
|
||||
className="justify-end w-4 h-4 "
|
||||
aria-hidden="true"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
viewBox="0 0 24 24"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth="2"
|
||||
d="M19 9l-7 7-7-7"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
<ArrowDownIcon size={16}></ArrowDownIcon>
|
||||
</div>
|
||||
{isOpen && (
|
||||
<div
|
||||
className={classNames(
|
||||
'absolute z-10 rounded shadow min-w-max max-h-[50vh]',
|
||||
'overflow-y-auto dropdown-scroll overflow-x-hidden',
|
||||
display === 'fit' && 'w-fit',
|
||||
display === 'block' && 'w-full',
|
||||
direction === 'up' && 'bottom-[45px]',
|
||||
direction === 'down' && 'top-[45px]',
|
||||
variant == 'primary' && 'bg-background-60',
|
||||
variant == 'secondary' && 'bg-background-70',
|
||||
variant == 'tertiary' && 'bg-accent-background-30',
|
||||
alignment === 'right' && 'right-0',
|
||||
alignment === 'left' && 'left-0'
|
||||
)}
|
||||
>
|
||||
<ul className="py-1 text-sm flex flex-col">
|
||||
{items.map((item) => (
|
||||
<li
|
||||
style={item.fontName ? { fontFamily: item.fontName } : {}}
|
||||
className={classNames(
|
||||
'py-2 px-4 min-w-max cursor-pointer',
|
||||
variant == 'primary' &&
|
||||
'checked-hover:bg-background-50 text-background-20 ' +
|
||||
'checked-hover:text-background-10',
|
||||
variant == 'secondary' &&
|
||||
'checked-hover:bg-background-60 text-background-20 ' +
|
||||
'checked-hover:text-background-10',
|
||||
variant == 'tertiary' &&
|
||||
'bg-accent-background-30 checked-hover:bg-accent-background-20'
|
||||
)}
|
||||
onClick={() => {
|
||||
onChange(item.value);
|
||||
setOpen(false);
|
||||
}}
|
||||
onKeyDown={(ev) => {
|
||||
if (!a11yClick(ev)) return;
|
||||
onChange(item.value);
|
||||
setOpen(false);
|
||||
}}
|
||||
ref={(ref) => (ref ? (itemRefs[item.value] = ref) : {})}
|
||||
key={item.value}
|
||||
tabIndex={0}
|
||||
data-checked={item.value === value}
|
||||
>
|
||||
{item.label}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
{isOpen &&
|
||||
dropdownBounds &&
|
||||
createPortal(
|
||||
<DropdownItems
|
||||
items={items}
|
||||
dropdownBounds={dropdownBounds}
|
||||
direction={direction}
|
||||
display={display}
|
||||
alignment={alignment}
|
||||
maxHeight={maxHeight}
|
||||
variant={variant}
|
||||
value={value}
|
||||
onSelectItem={(item) => {
|
||||
setOpen(false);
|
||||
onChange(item.value);
|
||||
}}
|
||||
onBackdropClick={() => {
|
||||
setOpen(false);
|
||||
}}
|
||||
></DropdownItems>,
|
||||
document.body
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
/>
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
import classNames from 'classnames';
|
||||
import { forwardRef, MouseEvent, useMemo, useState } from 'react';
|
||||
import { Control, Controller, UseControllerProps } from 'react-hook-form';
|
||||
import {
|
||||
Control,
|
||||
Controller,
|
||||
FieldError,
|
||||
UseControllerProps,
|
||||
} from 'react-hook-form';
|
||||
import { EyeIcon } from './icon/EyeIcon';
|
||||
|
||||
interface InputProps {
|
||||
@@ -14,6 +19,7 @@ export const InputInside = forwardRef<
|
||||
{
|
||||
variant?: 'primary' | 'secondary' | 'tertiary';
|
||||
label?: string;
|
||||
error?: FieldError;
|
||||
onChange: () => void;
|
||||
} & Partial<HTMLInputElement>
|
||||
>(function AppInput(
|
||||
@@ -21,10 +27,12 @@ export const InputInside = forwardRef<
|
||||
type,
|
||||
placeholder,
|
||||
label,
|
||||
disabled,
|
||||
autocomplete,
|
||||
name,
|
||||
onChange,
|
||||
value,
|
||||
error,
|
||||
variant = 'primary',
|
||||
},
|
||||
ref
|
||||
@@ -38,16 +46,40 @@ export const InputInside = forwardRef<
|
||||
|
||||
const classes = useMemo(() => {
|
||||
const variantsMap = {
|
||||
primary: classNames('bg-background-60 border-background-60'),
|
||||
secondary: classNames('bg-background-50 border-background-50'),
|
||||
tertiary: classNames('bg-background-40 border-background-40'),
|
||||
primary: classNames({
|
||||
'placeholder:text-background-30 bg-background-60 border-background-60':
|
||||
!disabled,
|
||||
'text-background-30 placeholder:text-background-30 border-background-70 bg-background-70':
|
||||
disabled,
|
||||
}),
|
||||
secondary: classNames({
|
||||
'placeholder:text-background-30 bg-background-50 border-background-50':
|
||||
!disabled,
|
||||
'text-background-40 placeholder:text-background-40 border-background-70 bg-background-70':
|
||||
disabled,
|
||||
}),
|
||||
tertiary: classNames({
|
||||
'placeholder:text-background-30 bg-background-40 border-background-40':
|
||||
!disabled,
|
||||
'text-background-30 placeholder:text-background-30 border-background-70 bg-background-70':
|
||||
disabled,
|
||||
}),
|
||||
};
|
||||
|
||||
return classNames(
|
||||
variantsMap[variant],
|
||||
'w-full focus:ring-transparent focus:ring-offset-transparent focus:outline-transparent rounded-md focus:border-accent-background-40 placeholder:text-background-30 text-standard relative'
|
||||
'w-full focus:ring-transparent focus:ring-offset-transparent min-h-[42px] z-10',
|
||||
'focus:outline-transparent rounded-md focus:border-accent-background-40',
|
||||
'text-standard relative transition-colors',
|
||||
error && 'border-status-critical border-1'
|
||||
);
|
||||
}, [variant]);
|
||||
}, [variant, disabled, error]);
|
||||
|
||||
const computedValue = disabled
|
||||
? placeholder
|
||||
: value !== undefined
|
||||
? value
|
||||
: '';
|
||||
|
||||
return (
|
||||
<label className="flex flex-col gap-1">
|
||||
@@ -60,15 +92,21 @@ export const InputInside = forwardRef<
|
||||
autoComplete={autocomplete ? 'off' : 'on'}
|
||||
onChange={onChange}
|
||||
name={name}
|
||||
value={value || ''}
|
||||
value={computedValue} // Do we want that behaviour ?
|
||||
disabled={disabled}
|
||||
ref={ref}
|
||||
></input>
|
||||
{type === 'password' && (
|
||||
<div
|
||||
className="fill-background-10 absolute top-0 h-full flex flex-col justify-center right-0 p-4"
|
||||
className="fill-background-10 absolute inset-y-0 right-0 pr-6 z-10 my-auto w-[16px] h-[16px]"
|
||||
onClick={togglePassword}
|
||||
>
|
||||
<EyeIcon></EyeIcon>
|
||||
<EyeIcon width={16} closed={forceText}></EyeIcon>
|
||||
</div>
|
||||
)}
|
||||
{error?.message && (
|
||||
<div className="absolute top-[38px] z-0 pt-1.5 bg-background-70 px-1 w-full rounded-b-md text-status-critical">
|
||||
{error.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@@ -77,12 +115,13 @@ export const InputInside = forwardRef<
|
||||
});
|
||||
|
||||
export const Input = ({
|
||||
type,
|
||||
type = 'text',
|
||||
control,
|
||||
name,
|
||||
placeholder,
|
||||
label,
|
||||
autocomplete,
|
||||
disabled,
|
||||
variant = 'primary',
|
||||
rules,
|
||||
}: {
|
||||
@@ -95,7 +134,10 @@ export const Input = ({
|
||||
control={control}
|
||||
name={name}
|
||||
rules={rules}
|
||||
render={({ field: { onChange, value, ref, name } }) => (
|
||||
render={({
|
||||
field: { onChange, value, ref, name },
|
||||
fieldState: { error },
|
||||
}) => (
|
||||
<InputInside
|
||||
type={type}
|
||||
autocomplete={autocomplete}
|
||||
@@ -103,6 +145,8 @@ export const Input = ({
|
||||
placeholder={placeholder}
|
||||
variant={variant}
|
||||
value={value}
|
||||
disabled={disabled}
|
||||
error={error}
|
||||
onChange={onChange}
|
||||
ref={ref}
|
||||
name={name}
|
||||
|
||||
@@ -15,11 +15,9 @@ export function LangSelector({
|
||||
const { changeLocales } = useContext(LangContext);
|
||||
const { l10n } = useLocalization();
|
||||
const { config, setConfig } = useConfig();
|
||||
const { control, watch, handleSubmit, getValues } = useForm<{ lang: string }>(
|
||||
{
|
||||
defaultValues: { lang: config?.lang || 'en' },
|
||||
}
|
||||
);
|
||||
const { control, watch, handleSubmit } = useForm<{ lang: string }>({
|
||||
defaultValues: { lang: config?.lang || 'en' },
|
||||
});
|
||||
|
||||
const languagesItems = useMemo(
|
||||
() => langs.map(({ key, name }) => ({ label: name, value: key })),
|
||||
@@ -39,7 +37,6 @@ export function LangSelector({
|
||||
return (
|
||||
<Dropdown
|
||||
control={control}
|
||||
getValues={getValues}
|
||||
name="lang"
|
||||
placeholder={l10n.getString(
|
||||
'settings-general-interface-lang-placeholder'
|
||||
|
||||
@@ -1,7 +1,36 @@
|
||||
import { BodyPart } from 'solarxr-protocol';
|
||||
|
||||
export function PersonFrontIcon({ width }: { width?: number }) {
|
||||
export const SIDES = [
|
||||
{
|
||||
shoulder: BodyPart.LEFT_SHOULDER,
|
||||
upperArm: BodyPart.LEFT_UPPER_ARM,
|
||||
lowerArm: BodyPart.LEFT_LOWER_ARM,
|
||||
hand: BodyPart.LEFT_HAND,
|
||||
upperLeg: BodyPart.LEFT_UPPER_LEG,
|
||||
lowerLeg: BodyPart.LEFT_LOWER_LEG,
|
||||
foot: BodyPart.LEFT_FOOT,
|
||||
},
|
||||
{
|
||||
shoulder: BodyPart.RIGHT_SHOULDER,
|
||||
upperArm: BodyPart.RIGHT_UPPER_ARM,
|
||||
lowerArm: BodyPart.RIGHT_LOWER_ARM,
|
||||
hand: BodyPart.RIGHT_HAND,
|
||||
upperLeg: BodyPart.RIGHT_UPPER_LEG,
|
||||
lowerLeg: BodyPart.RIGHT_LOWER_LEG,
|
||||
foot: BodyPart.RIGHT_FOOT,
|
||||
},
|
||||
];
|
||||
|
||||
export function PersonFrontIcon({
|
||||
width,
|
||||
mirror = true,
|
||||
}: {
|
||||
width?: number;
|
||||
mirror?: boolean;
|
||||
}) {
|
||||
const CIRCLE_RADIUS = 0.0001;
|
||||
const left = +!mirror;
|
||||
const right = +mirror;
|
||||
|
||||
return (
|
||||
<svg
|
||||
@@ -62,49 +91,49 @@ export function PersonFrontIcon({ width }: { width?: number }) {
|
||||
cx="128"
|
||||
cy="218"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.RIGHT_HAND]}
|
||||
id={BodyPart[SIDES[right].hand]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="115"
|
||||
cy="140"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.RIGHT_UPPER_ARM]}
|
||||
id={BodyPart[SIDES[right].upperArm]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="105"
|
||||
cy="105"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.RIGHT_SHOULDER]}
|
||||
id={BodyPart[SIDES[right].shoulder]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="125"
|
||||
cy="194"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.RIGHT_LOWER_ARM]}
|
||||
id={BodyPart[SIDES[right].lowerArm]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="97.004"
|
||||
cy="360"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.RIGHT_LOWER_LEG]}
|
||||
id={BodyPart[SIDES[right].lowerLeg]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="97"
|
||||
cy="250"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.RIGHT_UPPER_LEG]}
|
||||
id={BodyPart[SIDES[right].upperLeg]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="97.004"
|
||||
cy="380"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.RIGHT_FOOT]}
|
||||
id={BodyPart[SIDES[right].foot]}
|
||||
/>
|
||||
|
||||
<circle
|
||||
@@ -112,7 +141,7 @@ export function PersonFrontIcon({ width }: { width?: number }) {
|
||||
cx="36"
|
||||
cy="218"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.LEFT_HAND]}
|
||||
id={BodyPart[SIDES[left].hand]}
|
||||
/>
|
||||
|
||||
<circle
|
||||
@@ -120,28 +149,28 @@ export function PersonFrontIcon({ width }: { width?: number }) {
|
||||
cx="50"
|
||||
cy="140"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.LEFT_UPPER_ARM]}
|
||||
id={BodyPart[SIDES[left].upperArm]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="58"
|
||||
cy="105"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.LEFT_SHOULDER]}
|
||||
id={BodyPart[SIDES[left].shoulder]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="39"
|
||||
cy="194"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.LEFT_LOWER_ARM]}
|
||||
id={BodyPart[SIDES[left].lowerArm]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="67.004"
|
||||
cy="360"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.LEFT_LOWER_LEG]}
|
||||
id={BodyPart[SIDES[left].lowerLeg]}
|
||||
/>
|
||||
|
||||
<circle
|
||||
@@ -149,14 +178,14 @@ export function PersonFrontIcon({ width }: { width?: number }) {
|
||||
cx="67"
|
||||
cy="250"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.LEFT_UPPER_LEG]}
|
||||
id={BodyPart[SIDES[left].upperLeg]}
|
||||
/>
|
||||
<circle
|
||||
className="body-part-circle"
|
||||
cx="67.004"
|
||||
cy="380"
|
||||
r={CIRCLE_RADIUS}
|
||||
id={BodyPart[BodyPart.LEFT_FOOT]}
|
||||
id={BodyPart[SIDES[left].foot]}
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
|
||||
@@ -7,7 +7,7 @@ export function Radio({
|
||||
name,
|
||||
label,
|
||||
value,
|
||||
desciption,
|
||||
description,
|
||||
// input props
|
||||
disabled,
|
||||
...props
|
||||
@@ -15,8 +15,8 @@ export function Radio({
|
||||
control: Control<any>;
|
||||
name: string;
|
||||
label: string;
|
||||
value: string | number;
|
||||
desciption?: string | null;
|
||||
value: string;
|
||||
description?: string | null;
|
||||
} & React.HTMLProps<HTMLInputElement>) {
|
||||
return (
|
||||
<Controller
|
||||
@@ -24,14 +24,12 @@ export function Radio({
|
||||
name={name}
|
||||
render={({ field: { onChange, ref, name, value: checked } }) => (
|
||||
<label
|
||||
className={classNames(
|
||||
'w-full bg-background-60 p-3 rounded-md flex gap-3 border-2',
|
||||
{
|
||||
'border-accent-background-30': value == checked,
|
||||
'border-transparent': value != checked,
|
||||
'cursor-pointer': !disabled,
|
||||
}
|
||||
)}
|
||||
className={classNames('w-full p-3 rounded-md flex gap-3 border-2', {
|
||||
'border-accent-background-30': value == checked,
|
||||
'border-transparent': value != checked,
|
||||
'bg-background-60 cursor-pointer': !disabled,
|
||||
'bg-background-80 cursor-not-allowed': disabled,
|
||||
})}
|
||||
>
|
||||
<input
|
||||
type="radio"
|
||||
@@ -43,14 +41,15 @@ export function Radio({
|
||||
ref={ref}
|
||||
onChange={onChange}
|
||||
value={value}
|
||||
disabled={disabled}
|
||||
checked={value == checked}
|
||||
{...props}
|
||||
/>
|
||||
<div className="flex flex-col gap-2">
|
||||
<Typography bold>{label}</Typography>
|
||||
{desciption && (
|
||||
{description && (
|
||||
<Typography variant="standard" color="secondary">
|
||||
{desciption}
|
||||
{description}
|
||||
</Typography>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -13,7 +13,7 @@ export function ThemeSelector({
|
||||
control: Control<any>;
|
||||
name: string;
|
||||
colors: string | undefined;
|
||||
value: string | number;
|
||||
value: string;
|
||||
} & React.HTMLProps<HTMLInputElement>) {
|
||||
return (
|
||||
<Controller
|
||||
|
||||
@@ -8,13 +8,20 @@ export function TipBox({
|
||||
children,
|
||||
hideIcon = false,
|
||||
whitespace = false,
|
||||
className,
|
||||
}: {
|
||||
children: ReactNode;
|
||||
hideIcon?: boolean;
|
||||
whitespace?: boolean;
|
||||
className?: string;
|
||||
}) {
|
||||
return (
|
||||
<div className="flex flex-row gap-4 bg-accent-background-50 p-4 rounded-md">
|
||||
<div
|
||||
className={classNames(
|
||||
'flex flex-row gap-4 bg-accent-background-50 p-4 rounded-md',
|
||||
className
|
||||
)}
|
||||
>
|
||||
<div
|
||||
className={classNames(
|
||||
'fill-accent-background-20 flex flex-col justify-center',
|
||||
|
||||
@@ -8,6 +8,7 @@ export function Typography({
|
||||
whitespace = 'whitespace-normal',
|
||||
children,
|
||||
italic = false,
|
||||
textAlign,
|
||||
}: {
|
||||
variant?:
|
||||
| 'main-title'
|
||||
@@ -25,7 +26,14 @@ export function Typography({
|
||||
| 'whitespace-pre'
|
||||
| 'whitespace-pre-line'
|
||||
| 'whitespace-pre-wrap';
|
||||
children: ReactNode;
|
||||
textAlign?:
|
||||
| 'text-left'
|
||||
| 'text-center'
|
||||
| 'text-right'
|
||||
| 'text-justify'
|
||||
| 'text-start'
|
||||
| 'text-end';
|
||||
children?: ReactNode;
|
||||
}) {
|
||||
const tag = useMemo(() => {
|
||||
const tags = {
|
||||
@@ -55,9 +63,10 @@ export function Typography({
|
||||
color === 'secondary' && 'text-background-30',
|
||||
typeof color === 'string' && color,
|
||||
whitespace,
|
||||
textAlign,
|
||||
italic && 'italic',
|
||||
]),
|
||||
},
|
||||
children
|
||||
children || []
|
||||
);
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ export function ArrowDownIcon({ size = 24 }: { size?: number }) {
|
||||
);
|
||||
}
|
||||
|
||||
export function ArrowUpIcon({ size = 24 }: { size: number }) {
|
||||
export function ArrowUpIcon({ size = 24 }: { size?: number }) {
|
||||
return (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
|
||||
@@ -1,12 +1,36 @@
|
||||
export function EyeIcon() {
|
||||
return (
|
||||
export function EyeIcon({
|
||||
width = 14,
|
||||
closed = false,
|
||||
}: {
|
||||
width?: number;
|
||||
closed?: boolean;
|
||||
}) {
|
||||
return closed ? (
|
||||
<svg
|
||||
width="14"
|
||||
height="10"
|
||||
viewBox="0 0 14 10"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width={width}
|
||||
height={width}
|
||||
viewBox="0 0 24 24"
|
||||
fill="currentColor"
|
||||
>
|
||||
<path d="M9.09817 4.99914C9.09817 6.11133 8.15709 7.01294 6.9962 7.01294C5.83532 7.01294 4.89424 6.11133 4.89424 4.99914C4.89424 3.88693 5.83532 2.98533 6.9962 2.98533C8.15709 2.98532 9.09817 3.88694 9.09817 4.99914ZM7 0.806091C5.79804 0.811423 4.55217 1.10403 3.37279 1.66426C2.49711 2.09735 1.64372 2.70838 0.90293 3.46257C0.539093 3.84756 0.0750283 4.40501 0 4.99979C0.00886667 5.515 0.561517 6.15093 0.90293 6.53703C1.5976 7.2616 2.42877 7.85557 3.37279 8.33578C4.47262 8.86954 5.68997 9.17685 7 9.19395C8.2031 9.18853 9.44869 8.89255 10.6268 8.33578C11.5024 7.90269 12.3563 7.29122 13.0971 6.53703C13.4609 6.15204 13.925 5.59457 14 4.99979C13.9911 4.48458 13.4385 3.84863 13.0971 3.46254C12.4024 2.73797 11.5708 2.14446 10.6268 1.66423C9.52751 1.13088 8.30716 0.82568 7 0.806091ZM6.99911 1.84732C8.8205 1.84732 10.297 3.25891 10.297 5.00025C10.297 6.74157 8.8205 8.15316 6.99911 8.15316C5.17773 8.15316 3.70124 6.74156 3.70124 5.00025C3.70124 3.25891 5.17773 1.84732 6.99911 1.84732Z" />
|
||||
<path d="M3.53 2.47a.75.75 0 0 0-1.06 1.06l18 18a.75.75 0 1 0 1.06-1.06l-18-18ZM22.676 12.553a11.249 11.249 0 0 1-2.631 4.31l-3.099-3.099a5.25 5.25 0 0 0-6.71-6.71L7.759 4.577a11.217 11.217 0 0 1 4.242-.827c4.97 0 9.185 3.223 10.675 7.69.12.362.12.752 0 1.113Z" />
|
||||
<path d="M15.75 12c0 .18-.013.357-.037.53l-4.244-4.243A3.75 3.75 0 0 1 15.75 12ZM12.53 15.713l-4.243-4.244a3.75 3.75 0 0 0 4.244 4.243Z" />
|
||||
<path d="M6.75 12c0-.619.107-1.213.304-1.764l-3.1-3.1a11.25 11.25 0 0 0-2.63 4.31c-.12.362-.12.752 0 1.114 1.489 4.467 5.704 7.69 10.675 7.69 1.5 0 2.933-.294 4.242-.827l-2.477-2.477A5.25 5.25 0 0 1 6.75 12Z" />
|
||||
</svg>
|
||||
) : (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width={width}
|
||||
height={width}
|
||||
viewBox="0 0 24 24"
|
||||
fill="currentColor"
|
||||
>
|
||||
<path d="M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z" />
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
d="M1.323 11.447C2.811 6.976 7.028 3.75 12.001 3.75c4.97 0 9.185 3.223 10.675 7.69.12.362.12.752 0 1.113-1.487 4.471-5.705 7.697-10.677 7.697-4.97 0-9.186-3.223-10.675-7.69a1.762 1.762 0 0 1 0-1.113ZM17.25 12a5.25 5.25 0 1 1-10.5 0 5.25 5.25 0 0 1 10.5 0Z"
|
||||
clipRule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -7,8 +7,10 @@ export enum SlimeState {
|
||||
|
||||
export function LoaderIcon({
|
||||
slimeState = SlimeState.HAPPY,
|
||||
size = 85,
|
||||
}: {
|
||||
slimeState: SlimeState;
|
||||
size?: number | string;
|
||||
}) {
|
||||
return (
|
||||
<>
|
||||
@@ -16,28 +18,28 @@ export function LoaderIcon({
|
||||
hidden={slimeState !== SlimeState.JUMPY}
|
||||
src="/images/jumping-slime.gif"
|
||||
alt="Slime jumping"
|
||||
width="85"
|
||||
width={size}
|
||||
// className="crisp-edges"
|
||||
></img>
|
||||
<img
|
||||
hidden={slimeState !== SlimeState.HAPPY}
|
||||
src="/images/happy-slime.gif"
|
||||
alt="Happy slime"
|
||||
width="85"
|
||||
width={size}
|
||||
// className="crisp-edges"
|
||||
></img>
|
||||
<img
|
||||
hidden={slimeState !== SlimeState.SAD}
|
||||
src="/images/sad-slime.gif"
|
||||
alt="Sad slime"
|
||||
width="85"
|
||||
width={size}
|
||||
// className="crisp-edges"
|
||||
></img>
|
||||
<img
|
||||
hidden={slimeState !== SlimeState.CURIOUS}
|
||||
src="/images/curious-slime.gif"
|
||||
alt="Slime looking for something"
|
||||
width="85"
|
||||
width={size}
|
||||
// className="crisp-edges"
|
||||
></img>
|
||||
</>
|
||||
|
||||
@@ -5,3 +5,20 @@ export function PlayIcon({ width = 33 }: { width?: number }) {
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
|
||||
export function PlayCircleIcon({ width = 24 }: { width?: number }) {
|
||||
return (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width={width}
|
||||
viewBox="0 0 24 24"
|
||||
fill="inherit"
|
||||
>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm14.024-.983a1.125 1.125 0 0 1 0 1.966l-5.603 3.113A1.125 1.125 0 0 1 9 15.113V8.887c0-.857.921-1.4 1.671-.983l5.603 3.113Z"
|
||||
clipRule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
export function QuestionIcon({ width = 35 }: { width?: number }) {
|
||||
export function QuestionIcon({ width = 23 }: { width?: number }) {
|
||||
return (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
export function TrashIcon({ width = 33 }: { width: number }) {
|
||||
export function TrashIcon({ size = 33 }: { size?: number }) {
|
||||
return (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
width={width}
|
||||
height="29"
|
||||
width={size}
|
||||
height={size}
|
||||
>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
|
||||
@@ -5,7 +5,16 @@ import { useTrackers } from '@/hooks/tracker';
|
||||
import { BodyInteractions } from '@/components/commons/BodyInteractions';
|
||||
import { TrackerPartCard } from '@/components/tracker/TrackerPartCard';
|
||||
import { BodyPartError } from './pages/trackers-assign/TrackerAssignment';
|
||||
import { SIDES } from '@/components/commons/PersonFrontIcon';
|
||||
|
||||
export const LOWER_BODY = new Set([
|
||||
BodyPart.LEFT_FOOT,
|
||||
BodyPart.RIGHT_FOOT,
|
||||
BodyPart.LEFT_LOWER_LEG,
|
||||
BodyPart.RIGHT_LOWER_LEG,
|
||||
BodyPart.LEFT_UPPER_LEG,
|
||||
BodyPart.RIGHT_UPPER_LEG,
|
||||
]);
|
||||
export const SPINE_PARTS = [
|
||||
BodyPart.UPPER_CHEST,
|
||||
BodyPart.CHEST,
|
||||
@@ -37,6 +46,7 @@ export const ASSIGNMENT_RULES: Partial<
|
||||
|
||||
export function BodyAssignment({
|
||||
advanced,
|
||||
mirror,
|
||||
onRoleSelected,
|
||||
rolesWithErrors = {},
|
||||
highlightedRoles = [],
|
||||
@@ -44,6 +54,7 @@ export function BodyAssignment({
|
||||
width,
|
||||
}: {
|
||||
advanced: boolean;
|
||||
mirror: boolean;
|
||||
onlyAssigned?: boolean;
|
||||
rolesWithErrors?: Partial<Record<BodyPart, BodyPartError>>;
|
||||
highlightedRoles?: BodyPart[];
|
||||
@@ -80,10 +91,14 @@ export function BodyAssignment({
|
||||
[assignedTrackers]
|
||||
);
|
||||
|
||||
const left = +!mirror;
|
||||
const right = +mirror;
|
||||
|
||||
return (
|
||||
<>
|
||||
<BodyInteractions
|
||||
width={width}
|
||||
mirror={mirror}
|
||||
assignedRoles={assignedRoles}
|
||||
highlightedRoles={highlightedRoles}
|
||||
onSelectRole={onRoleSelected}
|
||||
@@ -116,39 +131,39 @@ export function BodyAssignment({
|
||||
{advanced && (
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.LEFT_SHOULDER]?.label}
|
||||
td={trackerPartGrouped[BodyPart.LEFT_SHOULDER]}
|
||||
role={BodyPart.LEFT_SHOULDER}
|
||||
onClick={() => onRoleSelected(BodyPart.LEFT_SHOULDER)}
|
||||
roleError={rolesWithErrors[SIDES[left].shoulder]?.label}
|
||||
td={trackerPartGrouped[SIDES[left].shoulder]}
|
||||
role={SIDES[left].shoulder}
|
||||
onClick={() => onRoleSelected(SIDES[left].shoulder)}
|
||||
direction="right"
|
||||
/>
|
||||
)}
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.LEFT_UPPER_ARM]?.label}
|
||||
td={trackerPartGrouped[BodyPart.LEFT_UPPER_ARM]}
|
||||
role={BodyPart.LEFT_UPPER_ARM}
|
||||
onClick={() => onRoleSelected(BodyPart.LEFT_UPPER_ARM)}
|
||||
roleError={rolesWithErrors[SIDES[left].upperArm]?.label}
|
||||
td={trackerPartGrouped[SIDES[left].upperArm]}
|
||||
role={SIDES[left].upperArm}
|
||||
onClick={() => onRoleSelected(SIDES[left].upperArm)}
|
||||
direction="right"
|
||||
/>
|
||||
</div>
|
||||
<div className="flex flex-col gap-2">
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.LEFT_LOWER_ARM]?.label}
|
||||
td={trackerPartGrouped[BodyPart.LEFT_LOWER_ARM]}
|
||||
role={BodyPart.LEFT_LOWER_ARM}
|
||||
onClick={() => onRoleSelected(BodyPart.LEFT_LOWER_ARM)}
|
||||
roleError={rolesWithErrors[SIDES[left].lowerArm]?.label}
|
||||
td={trackerPartGrouped[SIDES[left].lowerArm]}
|
||||
role={SIDES[left].lowerArm}
|
||||
onClick={() => onRoleSelected(SIDES[left].lowerArm)}
|
||||
direction="right"
|
||||
/>
|
||||
|
||||
{advanced && (
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.LEFT_HAND]?.label}
|
||||
td={trackerPartGrouped[BodyPart.LEFT_HAND]}
|
||||
role={BodyPart.LEFT_HAND}
|
||||
onClick={() => onRoleSelected(BodyPart.LEFT_HAND)}
|
||||
roleError={rolesWithErrors[SIDES[left].hand]?.label}
|
||||
td={trackerPartGrouped[SIDES[left].hand]}
|
||||
role={SIDES[left].hand}
|
||||
onClick={() => onRoleSelected(SIDES[left].hand)}
|
||||
direction="right"
|
||||
/>
|
||||
)}
|
||||
@@ -156,27 +171,27 @@ export function BodyAssignment({
|
||||
<div className="flex flex-col gap-2">
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.LEFT_UPPER_LEG]?.label}
|
||||
td={trackerPartGrouped[BodyPart.LEFT_UPPER_LEG]}
|
||||
role={BodyPart.LEFT_UPPER_LEG}
|
||||
onClick={() => onRoleSelected(BodyPart.LEFT_UPPER_LEG)}
|
||||
roleError={rolesWithErrors[SIDES[left].upperLeg]?.label}
|
||||
td={trackerPartGrouped[SIDES[left].upperLeg]}
|
||||
role={SIDES[left].upperLeg}
|
||||
onClick={() => onRoleSelected(SIDES[left].upperLeg)}
|
||||
direction="right"
|
||||
/>
|
||||
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.LEFT_LOWER_LEG]?.label}
|
||||
td={trackerPartGrouped[BodyPart.LEFT_LOWER_LEG]}
|
||||
role={BodyPart.LEFT_LOWER_LEG}
|
||||
onClick={() => onRoleSelected(BodyPart.LEFT_LOWER_LEG)}
|
||||
roleError={rolesWithErrors[SIDES[left].lowerLeg]?.label}
|
||||
td={trackerPartGrouped[SIDES[left].lowerLeg]}
|
||||
role={SIDES[left].lowerLeg}
|
||||
onClick={() => onRoleSelected(SIDES[left].lowerLeg)}
|
||||
direction="right"
|
||||
/>
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.LEFT_FOOT]?.label}
|
||||
td={trackerPartGrouped[BodyPart.LEFT_FOOT]}
|
||||
role={BodyPart.LEFT_FOOT}
|
||||
onClick={() => onRoleSelected(BodyPart.LEFT_FOOT)}
|
||||
roleError={rolesWithErrors[SIDES[left].foot]?.label}
|
||||
td={trackerPartGrouped[SIDES[left].foot]}
|
||||
role={SIDES[left].foot}
|
||||
onClick={() => onRoleSelected(SIDES[left].foot)}
|
||||
direction="right"
|
||||
/>
|
||||
</div>
|
||||
@@ -208,20 +223,20 @@ export function BodyAssignment({
|
||||
{advanced && (
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.RIGHT_SHOULDER]?.label}
|
||||
td={trackerPartGrouped[BodyPart.RIGHT_SHOULDER]}
|
||||
role={BodyPart.RIGHT_SHOULDER}
|
||||
onClick={() => onRoleSelected(BodyPart.RIGHT_SHOULDER)}
|
||||
roleError={rolesWithErrors[SIDES[right].shoulder]?.label}
|
||||
td={trackerPartGrouped[SIDES[right].shoulder]}
|
||||
role={SIDES[right].shoulder}
|
||||
onClick={() => onRoleSelected(SIDES[right].shoulder)}
|
||||
direction="left"
|
||||
/>
|
||||
)}
|
||||
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.RIGHT_UPPER_ARM]?.label}
|
||||
td={trackerPartGrouped[BodyPart.RIGHT_UPPER_ARM]}
|
||||
role={BodyPart.RIGHT_UPPER_ARM}
|
||||
onClick={() => onRoleSelected(BodyPart.RIGHT_UPPER_ARM)}
|
||||
roleError={rolesWithErrors[SIDES[right].upperArm]?.label}
|
||||
td={trackerPartGrouped[SIDES[right].upperArm]}
|
||||
role={SIDES[right].upperArm}
|
||||
onClick={() => onRoleSelected(SIDES[right].upperArm)}
|
||||
direction="left"
|
||||
/>
|
||||
</div>
|
||||
@@ -248,19 +263,19 @@ export function BodyAssignment({
|
||||
<div className="flex flex-col gap-2">
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.RIGHT_LOWER_ARM]?.label}
|
||||
td={trackerPartGrouped[BodyPart.RIGHT_LOWER_ARM]}
|
||||
role={BodyPart.RIGHT_LOWER_ARM}
|
||||
onClick={() => onRoleSelected(BodyPart.RIGHT_LOWER_ARM)}
|
||||
roleError={rolesWithErrors[SIDES[right].lowerArm]?.label}
|
||||
td={trackerPartGrouped[SIDES[right].lowerArm]}
|
||||
role={SIDES[right].lowerArm}
|
||||
onClick={() => onRoleSelected(SIDES[right].lowerArm)}
|
||||
direction="left"
|
||||
/>
|
||||
{advanced && (
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.RIGHT_HAND]?.label}
|
||||
td={trackerPartGrouped[BodyPart.RIGHT_HAND]}
|
||||
onClick={() => onRoleSelected(BodyPart.RIGHT_HAND)}
|
||||
role={BodyPart.RIGHT_HAND}
|
||||
roleError={rolesWithErrors[SIDES[right].hand]?.label}
|
||||
td={trackerPartGrouped[SIDES[right].hand]}
|
||||
onClick={() => onRoleSelected(SIDES[right].hand)}
|
||||
role={SIDES[right].hand}
|
||||
direction="left"
|
||||
/>
|
||||
)}
|
||||
@@ -269,27 +284,27 @@ export function BodyAssignment({
|
||||
<div className="flex flex-col gap-2">
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.RIGHT_UPPER_LEG]?.label}
|
||||
td={trackerPartGrouped[BodyPart.RIGHT_UPPER_LEG]}
|
||||
role={BodyPart.RIGHT_UPPER_LEG}
|
||||
onClick={() => onRoleSelected(BodyPart.RIGHT_UPPER_LEG)}
|
||||
roleError={rolesWithErrors[SIDES[right].upperLeg]?.label}
|
||||
td={trackerPartGrouped[SIDES[right].upperLeg]}
|
||||
role={SIDES[right].upperLeg}
|
||||
onClick={() => onRoleSelected(SIDES[right].upperLeg)}
|
||||
direction="left"
|
||||
/>
|
||||
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.RIGHT_LOWER_LEG]?.label}
|
||||
td={trackerPartGrouped[BodyPart.RIGHT_LOWER_LEG]}
|
||||
role={BodyPart.RIGHT_LOWER_LEG}
|
||||
onClick={() => onRoleSelected(BodyPart.RIGHT_LOWER_LEG)}
|
||||
roleError={rolesWithErrors[SIDES[right].lowerLeg]?.label}
|
||||
td={trackerPartGrouped[SIDES[right].lowerLeg]}
|
||||
role={SIDES[right].lowerLeg}
|
||||
onClick={() => onRoleSelected(SIDES[right].lowerLeg)}
|
||||
direction="left"
|
||||
/>
|
||||
<TrackerPartCard
|
||||
onlyAssigned={onlyAssigned}
|
||||
roleError={rolesWithErrors[BodyPart.RIGHT_FOOT]?.label}
|
||||
td={trackerPartGrouped[BodyPart.RIGHT_FOOT]}
|
||||
role={BodyPart.RIGHT_FOOT}
|
||||
onClick={() => onRoleSelected(BodyPart.RIGHT_FOOT)}
|
||||
roleError={rolesWithErrors[SIDES[right].foot]?.label}
|
||||
td={trackerPartGrouped[SIDES[right].foot]}
|
||||
role={SIDES[right].foot}
|
||||
onClick={() => onRoleSelected(SIDES[right].foot)}
|
||||
direction="left"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -10,12 +10,14 @@ import {
|
||||
import { useElemSize } from '@/hooks/layout';
|
||||
import { CheckIcon } from '@/components/commons/icon/CheckIcon';
|
||||
import { Typography } from '@/components/commons/Typography';
|
||||
import { useDebouncedEffect } from '@/hooks/timeout';
|
||||
|
||||
type StepComponentType = FC<{
|
||||
nextStep: () => void;
|
||||
prevStep: () => void;
|
||||
resetSteps: () => void;
|
||||
variant: 'alone' | 'onboarding';
|
||||
active: boolean;
|
||||
}>;
|
||||
export type Step = {
|
||||
type: 'numbered' | 'fullsize';
|
||||
@@ -99,6 +101,7 @@ export function StepperSlider({
|
||||
const ref = useRef<HTMLDivElement | null>(null);
|
||||
const { width } = useElemSize(ref);
|
||||
const [stepsContainers, setSteps] = useState(0);
|
||||
const [shouldAnimate, setShouldAnimate] = useState(true);
|
||||
const [step, setStep] = useState(0);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -122,11 +125,26 @@ export function StepperSlider({
|
||||
setStep(0);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
setShouldAnimate(false);
|
||||
}, [width]);
|
||||
|
||||
// Make it so if you resize the window it wont try to move the slide with an animation
|
||||
useDebouncedEffect(
|
||||
() => {
|
||||
setShouldAnimate(true);
|
||||
},
|
||||
[width],
|
||||
500
|
||||
);
|
||||
|
||||
return (
|
||||
<div className="w-full flex flex-col gap-4">
|
||||
<div className="w-full flex" ref={ref}>
|
||||
<div
|
||||
className="transition-transform duration-500 flex gap-8"
|
||||
className={classNames('flex gap-8', {
|
||||
'transition-transform duration-500 ': shouldAnimate,
|
||||
})}
|
||||
style={{ transform: `translateX(-${(width + 32) * step}px)` }}
|
||||
>
|
||||
{steps.map(({ type, component: StepComponent }, index) => (
|
||||
@@ -143,6 +161,7 @@ export function StepperSlider({
|
||||
nextStep={nextStep}
|
||||
prevStep={prevStep}
|
||||
resetSteps={resetSteps}
|
||||
active={index === step}
|
||||
/>
|
||||
</StepContainer>
|
||||
))}
|
||||
|
||||
@@ -102,8 +102,8 @@ export function CalibrationTutorialPage() {
|
||||
isCounting
|
||||
? (IMU_CALIBRATION_TIME - timer) / IMU_CALIBRATION_TIME
|
||||
: calibrationStatus === CalibrationStatus.SUCCESS
|
||||
? 1
|
||||
: 0
|
||||
? 1
|
||||
: 0
|
||||
}
|
||||
height={14}
|
||||
animated={true}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
import { useLocalization } from '@fluent/react';
|
||||
import { Localized, useLocalization } from '@fluent/react';
|
||||
import classNames from 'classnames';
|
||||
import { useEffect, useMemo, useState } from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import {
|
||||
AddUnknownDeviceRequestT,
|
||||
RpcMessage,
|
||||
StartWifiProvisioningRequestT,
|
||||
StopWifiProvisioningRequestT,
|
||||
UnknownDeviceHandshakeNotificationT,
|
||||
WifiProvisioningStatus,
|
||||
WifiProvisioningStatusResponseT,
|
||||
} from 'solarxr-protocol';
|
||||
@@ -97,6 +99,15 @@ export function ConnectTrackersPage() {
|
||||
}
|
||||
);
|
||||
|
||||
useRPCPacket(
|
||||
RpcMessage.UnknownDeviceHandshakeNotification,
|
||||
({ macAddress }: UnknownDeviceHandshakeNotificationT) =>
|
||||
sendRPCPacket(
|
||||
RpcMessage.AddUnknownDeviceRequest,
|
||||
new AddUnknownDeviceRequestT(macAddress)
|
||||
)
|
||||
);
|
||||
|
||||
const isError =
|
||||
provisioningStatus === WifiProvisioningStatus.CONNECTION_ERROR ||
|
||||
provisioningStatus === WifiProvisioningStatus.COULD_NOT_FIND_SERVER;
|
||||
@@ -126,6 +137,14 @@ export function ConnectTrackersPage() {
|
||||
}
|
||||
}, [provisioningStatus]);
|
||||
|
||||
const currentTip = useMemo(
|
||||
() =>
|
||||
connectedIMUTrackers.length > 0
|
||||
? 'tips-find_tracker'
|
||||
: 'tips-turn_on_tracker',
|
||||
[connectedIMUTrackers.length]
|
||||
);
|
||||
|
||||
return (
|
||||
<div className="flex flex-col h-full items-center px-4 pb-4">
|
||||
<div className="flex gap-10 mobile:flex-col w-full xs:max-w-7xl">
|
||||
@@ -134,10 +153,10 @@ export function ConnectTrackersPage() {
|
||||
{l10n.getString('onboarding-connect_tracker-title')}
|
||||
</Typography>
|
||||
<Typography color="secondary">
|
||||
{l10n.getString('onboarding-connect_tracker-description-p0')}
|
||||
{l10n.getString('onboarding-connect_tracker-description-p0-v1')}
|
||||
</Typography>
|
||||
<Typography color="secondary">
|
||||
{l10n.getString('onboarding-connect_tracker-description-p1')}
|
||||
{l10n.getString('onboarding-connect_tracker-description-p1-v1')}
|
||||
</Typography>
|
||||
<div className="flex flex-col gap-2 py-5">
|
||||
{/* <ArrowLink
|
||||
@@ -156,7 +175,12 @@ export function ConnectTrackersPage() {
|
||||
{l10n.getString('onboarding-connect_tracker-issue-serial')}
|
||||
</ArrowLink>
|
||||
</div>
|
||||
<TipBox>{l10n.getString('tips-find_tracker')}</TipBox>
|
||||
<Localized
|
||||
id={currentTip}
|
||||
elems={{ em: <em className="italic"></em>, b: <b></b> }}
|
||||
>
|
||||
<TipBox>Conditional tip</TipBox>
|
||||
</Localized>
|
||||
|
||||
<div
|
||||
className={classNames(
|
||||
@@ -210,8 +234,8 @@ export function ConnectTrackersPage() {
|
||||
state.alonePage
|
||||
? '/'
|
||||
: bnoExists
|
||||
? '/onboarding/calibration-tutorial'
|
||||
: '/onboarding/assign-tutorial'
|
||||
? '/onboarding/calibration-tutorial'
|
||||
: '/onboarding/assign-tutorial'
|
||||
}
|
||||
className="ml-auto"
|
||||
>
|
||||
|
||||
@@ -77,7 +77,14 @@ export function WifiCredsPage() {
|
||||
>
|
||||
<Input
|
||||
control={control}
|
||||
rules={{ required: true }}
|
||||
rules={{
|
||||
validate: {
|
||||
validPassword: (v: string | undefined) =>
|
||||
v === undefined ||
|
||||
v.length === 0 ||
|
||||
new Blob([v]).size >= 8,
|
||||
},
|
||||
}}
|
||||
name="password"
|
||||
type="password"
|
||||
label="Password"
|
||||
|
||||
@@ -13,7 +13,8 @@ import { Recording } from './autobone-steps/Recording';
|
||||
import { StartRecording } from './autobone-steps/StartRecording';
|
||||
import { VerifyResultsStep } from './autobone-steps/VerifyResults';
|
||||
import { useCountdown } from '@/hooks/countdown';
|
||||
import { CheckHeight } from './autobone-steps/СheckHeight';
|
||||
import { CheckHeight } from './autobone-steps/CheckHeight';
|
||||
import { PreparationStep } from './autobone-steps/Preparation';
|
||||
|
||||
export function AutomaticProportionsPage() {
|
||||
const { l10n } = useLocalization();
|
||||
@@ -50,6 +51,7 @@ export function AutomaticProportionsPage() {
|
||||
variant={state.alonePage ? 'alone' : 'onboarding'}
|
||||
steps={[
|
||||
{ type: 'numbered', component: PutTrackersOnStep },
|
||||
{ type: 'numbered', component: PreparationStep },
|
||||
{ type: 'numbered', component: RequirementsStep },
|
||||
{ type: 'numbered', component: CheckHeight },
|
||||
{ type: 'numbered', component: StartRecording },
|
||||
@@ -60,7 +62,7 @@ export function AutomaticProportionsPage() {
|
||||
></StepperSlider>
|
||||
</div>
|
||||
</div>
|
||||
<div className="w-full pb-4 flex flex-grow flex-row mobile:justify-center">
|
||||
<div className="w-full pb-4 flex flex-row mobile:justify-center">
|
||||
<Button
|
||||
variant="secondary"
|
||||
onClick={startCountdown}
|
||||
|
||||
@@ -4,12 +4,12 @@ import { useOnboarding } from '@/hooks/onboarding';
|
||||
import { useWebsocketAPI } from '@/hooks/websocket-api';
|
||||
import { Button } from '@/components/commons/Button';
|
||||
import { CheckBox } from '@/components/commons/Checkbox';
|
||||
import { PersonFrontIcon } from '@/components/commons/PersonFrontIcon';
|
||||
import { Typography } from '@/components/commons/Typography';
|
||||
import { BodyProportions } from './BodyProportions';
|
||||
import { useLocalization } from '@fluent/react';
|
||||
import { useEffect, useMemo } from 'react';
|
||||
import { useBreakpoint } from '@/hooks/breakpoint';
|
||||
import { SkeletonVisualizerWidget } from '@/components/widgets/SkeletonVisualizerWidget';
|
||||
|
||||
export function ButtonsControl() {
|
||||
const { l10n } = useLocalization();
|
||||
@@ -53,13 +53,15 @@ export function ManualProportionsPage() {
|
||||
|
||||
const savedValue = useMemo(() => localStorage.getItem('ratioMode'), []);
|
||||
|
||||
const defaultValues = { precise: false, ratio: savedValue !== 'false' };
|
||||
|
||||
const { control, watch } = useForm<{ precise: boolean; ratio: boolean }>({
|
||||
defaultValues: { precise: false, ratio: savedValue !== 'false' },
|
||||
defaultValues,
|
||||
});
|
||||
const { precise, ratio } = watch();
|
||||
|
||||
useEffect(() => {
|
||||
localStorage.setItem('ratioMode', ratio.toString());
|
||||
localStorage.setItem('ratioMode', ratio?.toString() ?? 'true');
|
||||
}, [ratio]);
|
||||
|
||||
return (
|
||||
@@ -94,14 +96,14 @@ export function ManualProportionsPage() {
|
||||
</div>
|
||||
<div className="w-full px-2">
|
||||
<BodyProportions
|
||||
precise={precise}
|
||||
precise={precise ?? defaultValues.precise}
|
||||
type={ratio ? 'ratio' : 'linear'}
|
||||
variant={state.alonePage ? 'alone' : 'onboarding'}
|
||||
></BodyProportions>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex-col flex-grow gap-3 rounded-xl fill-background-50 items-center hidden md:flex">
|
||||
<PersonFrontIcon width={200}></PersonFrontIcon>
|
||||
<SkeletonVisualizerWidget height="65vh" maxHeight={600} />
|
||||
</div>
|
||||
</div>
|
||||
{!isMobile && (
|
||||
|
||||
@@ -159,13 +159,18 @@ export function ProportionsChoose() {
|
||||
{l10n.getString('onboarding-choose_proportions')}
|
||||
</Typography>
|
||||
<div className="xs:w-10/12 xs:max-w-[666px]">
|
||||
<Typography
|
||||
variant="standard"
|
||||
color="secondary"
|
||||
whitespace="whitespace-pre-line"
|
||||
<Localized
|
||||
id="onboarding-choose_proportions-description-v1"
|
||||
elems={{ b: <b className="text-base underline"></b> }}
|
||||
>
|
||||
{l10n.getString('onboarding-choose_proportions-description')}
|
||||
</Typography>
|
||||
<Typography
|
||||
variant="standard"
|
||||
color="secondary"
|
||||
whitespace="whitespace-pre-line"
|
||||
>
|
||||
How to measure your body!
|
||||
</Typography>
|
||||
</Localized>
|
||||
</div>
|
||||
<div
|
||||
className={classNames(
|
||||
@@ -244,7 +249,7 @@ export function ProportionsChoose() {
|
||||
</div>
|
||||
<div>
|
||||
<Localized
|
||||
id="onboarding-choose_proportions-auto_proportions-descriptionv2"
|
||||
id="onboarding-choose_proportions-auto_proportions-descriptionv3"
|
||||
elems={{ b: <b></b> }}
|
||||
>
|
||||
<Typography
|
||||
|
||||
@@ -18,6 +18,7 @@ import {
|
||||
} from '@/components/onboarding/pages/body-proportions/ProportionsChoose';
|
||||
import { useLocaleConfig } from '@/i18n/config';
|
||||
import { useCountdown } from '@/hooks/countdown';
|
||||
import { TipBox } from '@/components/commons/TipBox';
|
||||
|
||||
interface HeightForm {
|
||||
height: number;
|
||||
@@ -104,18 +105,24 @@ export function CheckHeight({
|
||||
</Typography>
|
||||
</Localized>
|
||||
|
||||
<Button
|
||||
variant="primary"
|
||||
className="mt-2"
|
||||
onClick={startCountdown}
|
||||
disabled={isCounting}
|
||||
>
|
||||
{isCounting
|
||||
? sFormat.format(timer, 'second')
|
||||
: l10n.getString(
|
||||
'onboarding-automatic_proportions-check_height-fetch_height'
|
||||
)}
|
||||
</Button>
|
||||
<div className="flex flex-row items-center mt-2 gap-2">
|
||||
<Button
|
||||
variant="primary"
|
||||
onClick={startCountdown}
|
||||
disabled={isCounting}
|
||||
>
|
||||
{isCounting
|
||||
? sFormat.format(timer, 'second')
|
||||
: l10n.getString(
|
||||
'onboarding-automatic_proportions-check_height-fetch_height'
|
||||
)}
|
||||
</Button>
|
||||
<TipBox className="break-words">
|
||||
{l10n.getString(
|
||||
'onboarding-automatic_proportions-check_height-guardian_tip'
|
||||
)}
|
||||
</TipBox>
|
||||
</div>
|
||||
</div>
|
||||
<form className="flex flex-col self-center items-center justify-center">
|
||||
<NumberSelector
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Typography } from '@/components/commons/Typography';
|
||||
import { useLocalization } from '@fluent/react';
|
||||
import { Button } from '@/components/commons/Button';
|
||||
import { SkeletonVisualizerWidget } from '@/components/widgets/SkeletonVisualizerWidget';
|
||||
|
||||
export function DoneStep({ variant }: { variant: 'onboarding' | 'alone' }) {
|
||||
const { l10n } = useLocalization();
|
||||
@@ -16,13 +17,14 @@ export function DoneStep({ variant }: { variant: 'onboarding' | 'alone' }) {
|
||||
</Typography>
|
||||
</div>
|
||||
|
||||
<div className="flex">
|
||||
<div className="flex gap-3">
|
||||
{variant === 'onboarding' && (
|
||||
<Button variant="primary" to="/onboarding/done">
|
||||
{l10n.getString('onboarding-continue')}
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
<SkeletonVisualizerWidget />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
import { ResetType } from 'solarxr-protocol';
|
||||
import { Button } from '@/components/commons/Button';
|
||||
import { Typography } from '@/components/commons/Typography';
|
||||
import { ResetButton } from '@/components/home/ResetButton';
|
||||
import { useLocalization } from '@fluent/react';
|
||||
import { useBreakpoint } from '@/hooks/breakpoint';
|
||||
|
||||
export function PreparationStep({
|
||||
nextStep,
|
||||
prevStep,
|
||||
variant,
|
||||
}: {
|
||||
nextStep: () => void;
|
||||
prevStep: () => void;
|
||||
variant: 'onboarding' | 'alone';
|
||||
}) {
|
||||
const { isMobile } = useBreakpoint('mobile');
|
||||
const { l10n } = useLocalization();
|
||||
|
||||
return (
|
||||
<div className="flex mobile:flex-col items-center w-full">
|
||||
<div className="flex flex-col flex-grow justify-between">
|
||||
<div className="flex flex-col gap-4 max-w-sm">
|
||||
<Typography variant="main-title" bold>
|
||||
{l10n.getString('onboarding-automatic_mounting-preparation-title')}
|
||||
</Typography>
|
||||
<div>
|
||||
<Typography color="secondary">
|
||||
{l10n.getString(
|
||||
'onboarding-automatic_mounting-preparation-step-0'
|
||||
)}
|
||||
</Typography>
|
||||
<Typography color="secondary">
|
||||
{l10n.getString(
|
||||
'onboarding-automatic_mounting-preparation-step-1'
|
||||
)}
|
||||
</Typography>
|
||||
</div>
|
||||
</div>
|
||||
{isMobile && (
|
||||
<div className="flex flex-col pt-1 items-center fill-background-50 justify-center px-12">
|
||||
<img
|
||||
src="/images/reset-pose.webp"
|
||||
width={100}
|
||||
alt="Reset position"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
<div className="flex gap-3 mobile:justify-between">
|
||||
<Button
|
||||
variant={variant === 'onboarding' ? 'secondary' : 'tertiary'}
|
||||
onClick={prevStep}
|
||||
>
|
||||
{l10n.getString('onboarding-automatic_mounting-prev_step')}
|
||||
</Button>
|
||||
<ResetButton
|
||||
variant="small"
|
||||
type={ResetType.Full}
|
||||
onReseted={nextStep}
|
||||
></ResetButton>
|
||||
</div>
|
||||
</div>
|
||||
{!isMobile && (
|
||||
<div className="flex flex-col pt-1 items-center fill-background-50 justify-center px-12">
|
||||
<img src="/images/reset-pose.webp" width={90} alt="Reset position" />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ReactNode, useEffect, useState } from 'react';
|
||||
import { ReactNode, useEffect, useRef, useState } from 'react';
|
||||
import { ProcessStatus, useAutobone } from '@/hooks/autobone';
|
||||
import { ProgressBar } from '@/components/commons/ProgressBar';
|
||||
import { TipBox } from '@/components/commons/TipBox';
|
||||
@@ -6,13 +6,16 @@ import { Typography } from '@/components/commons/Typography';
|
||||
import { useLocalization } from '@fluent/react';
|
||||
import { P, match } from 'ts-pattern';
|
||||
import { AutoboneErrorModal } from './AutoboneErrorModal';
|
||||
import { PlayCircleIcon } from '@/components/commons/icon/PlayIcon';
|
||||
|
||||
export function Recording({
|
||||
nextStep,
|
||||
resetSteps,
|
||||
active,
|
||||
}: {
|
||||
nextStep: () => void;
|
||||
resetSteps: () => void;
|
||||
active: boolean;
|
||||
}) {
|
||||
const { l10n } = useLocalization();
|
||||
const { progress, hasCalibration, hasRecording, eta } = useAutobone();
|
||||
@@ -35,8 +38,33 @@ export function Recording({
|
||||
}
|
||||
}, [progress, hasCalibration, hasRecording]);
|
||||
|
||||
const videoRef = useRef<HTMLVideoElement | null>(null);
|
||||
const [paused, setPaused] = useState(true);
|
||||
|
||||
function toggleVideo() {
|
||||
if (!videoRef.current) return;
|
||||
if (videoRef.current.paused) {
|
||||
videoRef.current.play();
|
||||
} else {
|
||||
videoRef.current.pause();
|
||||
videoRef.current.currentTime = 0;
|
||||
}
|
||||
setPaused(videoRef.current.paused);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (!active && !paused) {
|
||||
toggleVideo();
|
||||
return;
|
||||
}
|
||||
if (active && paused) {
|
||||
toggleVideo();
|
||||
return;
|
||||
}
|
||||
}, [active]);
|
||||
|
||||
return (
|
||||
<div className="flex flex-col items-center w-full justify-between">
|
||||
<div className="flex flex-row flex-grow">
|
||||
<AutoboneErrorModal
|
||||
isOpen={modalOpen}
|
||||
onClose={() => {
|
||||
@@ -44,75 +72,99 @@ export function Recording({
|
||||
resetSteps();
|
||||
}}
|
||||
></AutoboneErrorModal>
|
||||
<div className="flex gap-1 flex-col justify-center items-center">
|
||||
<div className="flex text-status-critical justify-center items-center gap-1">
|
||||
<div className="w-2 h-2 rounded-lg bg-status-critical"></div>
|
||||
<Typography color="text-status-critical">
|
||||
{l10n.getString('onboarding-automatic_proportions-recording-title')}
|
||||
<div className="flex flex-col items-center w-full justify-between">
|
||||
<div className="flex gap-1 flex-col justify-center items-center">
|
||||
<div className="flex text-status-critical justify-center items-center gap-1">
|
||||
<div className="w-2 h-2 rounded-lg bg-status-critical"></div>
|
||||
<Typography color="text-status-critical">
|
||||
{l10n.getString(
|
||||
'onboarding-automatic_proportions-recording-title'
|
||||
)}
|
||||
</Typography>
|
||||
</div>
|
||||
<Typography variant="section-title">
|
||||
{l10n.getString(
|
||||
'onboarding-automatic_proportions-recording-description-p0'
|
||||
)}
|
||||
</Typography>
|
||||
<Typography color="secondary">
|
||||
{l10n.getString(
|
||||
'onboarding-automatic_proportions-recording-description-p1'
|
||||
)}
|
||||
</Typography>
|
||||
</div>
|
||||
<Typography variant="section-title">
|
||||
{l10n.getString(
|
||||
'onboarding-automatic_proportions-recording-description-p0'
|
||||
)}
|
||||
</Typography>
|
||||
<Typography color="secondary">
|
||||
{l10n.getString(
|
||||
'onboarding-automatic_proportions-recording-description-p1'
|
||||
)}
|
||||
</Typography>
|
||||
</div>
|
||||
<ol className="list-decimal mobile:px-4">
|
||||
<>
|
||||
{l10n
|
||||
.getString('onboarding-automatic_proportions-recording-steps')
|
||||
.split('\n')
|
||||
.map((line, i) => (
|
||||
<li key={i}>
|
||||
<Typography color="secondary">{line}</Typography>
|
||||
</li>
|
||||
))}
|
||||
</>
|
||||
</ol>
|
||||
<div className="flex">
|
||||
<TipBox>{l10n.getString('tips-do_not_move_heels')}</TipBox>
|
||||
</div>
|
||||
<div className="flex flex-col gap-2 items-center w-full max-w-[150px]">
|
||||
<ProgressBar
|
||||
progress={progress}
|
||||
height={2}
|
||||
colorClass={match([hasCalibration, hasRecording])
|
||||
.returnType<string | undefined>()
|
||||
.with(
|
||||
P.union(
|
||||
[ProcessStatus.REJECTED, P._],
|
||||
[P._, ProcessStatus.REJECTED]
|
||||
),
|
||||
() => 'bg-status-critical'
|
||||
)
|
||||
.with(
|
||||
[ProcessStatus.FULFILLED, ProcessStatus.FULFILLED],
|
||||
() => 'bg-status-success'
|
||||
)
|
||||
.otherwise(() => undefined)}
|
||||
></ProgressBar>
|
||||
<Typography color="secondary">
|
||||
{match([hasCalibration, hasRecording])
|
||||
.returnType<ReactNode>()
|
||||
.with([ProcessStatus.PENDING, ProcessStatus.FULFILLED], () =>
|
||||
l10n.getString(
|
||||
'onboarding-automatic_proportions-recording-processing'
|
||||
<ol className="list-decimal mobile:px-4 nsmol:hidden">
|
||||
<>
|
||||
{l10n
|
||||
.getString('onboarding-automatic_proportions-recording-steps')
|
||||
.split('\n')
|
||||
.map((line, i) => (
|
||||
<li key={i}>
|
||||
<Typography color="secondary">{line}</Typography>
|
||||
</li>
|
||||
))}
|
||||
</>
|
||||
</ol>
|
||||
<div className="flex">
|
||||
<TipBox>{l10n.getString('tips-do_not_move_heels')}</TipBox>
|
||||
</div>
|
||||
<div className="flex flex-col gap-2 items-center w-full max-w-[150px]">
|
||||
<ProgressBar
|
||||
progress={progress}
|
||||
height={2}
|
||||
colorClass={match([hasCalibration, hasRecording])
|
||||
.returnType<string | undefined>()
|
||||
.with(
|
||||
P.union(
|
||||
[ProcessStatus.REJECTED, P._],
|
||||
[P._, ProcessStatus.REJECTED]
|
||||
),
|
||||
() => 'bg-status-critical'
|
||||
)
|
||||
)
|
||||
.with([ProcessStatus.PENDING, ProcessStatus.PENDING], () =>
|
||||
l10n.getString(
|
||||
'onboarding-automatic_proportions-recording-timer',
|
||||
{ time: Math.round(eta) }
|
||||
.with(
|
||||
[ProcessStatus.FULFILLED, ProcessStatus.FULFILLED],
|
||||
() => 'bg-status-success'
|
||||
)
|
||||
)
|
||||
.otherwise(() => '')}
|
||||
</Typography>
|
||||
.otherwise(() => undefined)}
|
||||
></ProgressBar>
|
||||
<Typography color="secondary">
|
||||
{match([hasCalibration, hasRecording])
|
||||
.returnType<ReactNode>()
|
||||
.with([ProcessStatus.PENDING, ProcessStatus.FULFILLED], () =>
|
||||
l10n.getString(
|
||||
'onboarding-automatic_proportions-recording-processing'
|
||||
)
|
||||
)
|
||||
.with([ProcessStatus.PENDING, ProcessStatus.PENDING], () =>
|
||||
l10n.getString(
|
||||
'onboarding-automatic_proportions-recording-timer',
|
||||
{ time: Math.round(eta) }
|
||||
)
|
||||
)
|
||||
.otherwise(() => '')}
|
||||
</Typography>
|
||||
</div>
|
||||
</div>
|
||||
<button className="relative appearance-none h-fit" onClick={toggleVideo}>
|
||||
<div
|
||||
className="absolute w-[100px] h-[100px] top-0 bottom-0 left-0 right-0 m-auto fill-background-20"
|
||||
hidden={!paused}
|
||||
>
|
||||
<PlayCircleIcon width={100}></PlayCircleIcon>
|
||||
</div>
|
||||
|
||||
<video
|
||||
preload=""
|
||||
ref={videoRef}
|
||||
src="/videos/autobone.webm"
|
||||
className="min-w-[12rem] w-[12rem]"
|
||||
muted
|
||||
loop
|
||||
playsInline
|
||||
controls={false}
|
||||
poster="/images/autobone-poster.webp"
|
||||
></video>
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ export function RequirementsStep({
|
||||
<>
|
||||
{l10n
|
||||
.getString(
|
||||
'onboarding-automatic_proportions-requirements-description'
|
||||
'onboarding-automatic_proportions-requirements-descriptionv2'
|
||||
)
|
||||
.split('\n')
|
||||
.map((line, i) => (
|
||||
|
||||
@@ -3,18 +3,39 @@ import { Button } from '@/components/commons/Button';
|
||||
import { TipBox } from '@/components/commons/TipBox';
|
||||
import { Typography } from '@/components/commons/Typography';
|
||||
import { useLocalization } from '@fluent/react';
|
||||
import { useEffect, useRef, useState } from 'react';
|
||||
import { PlayCircleIcon } from '@/components/commons/icon/PlayIcon';
|
||||
|
||||
export function StartRecording({
|
||||
nextStep,
|
||||
prevStep,
|
||||
variant,
|
||||
active,
|
||||
}: {
|
||||
nextStep: () => void;
|
||||
prevStep: () => void;
|
||||
variant: 'onboarding' | 'alone';
|
||||
active: boolean;
|
||||
}) {
|
||||
const { l10n } = useLocalization();
|
||||
const { startRecording } = useAutobone();
|
||||
const videoRef = useRef<HTMLVideoElement | null>(null);
|
||||
const [paused, setPaused] = useState(true);
|
||||
|
||||
function toggleVideo() {
|
||||
if (!videoRef.current) return;
|
||||
if (videoRef.current.paused) {
|
||||
videoRef.current.play();
|
||||
} else {
|
||||
videoRef.current.pause();
|
||||
videoRef.current.currentTime = 0;
|
||||
}
|
||||
setPaused(videoRef.current.paused);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (!active && !paused) toggleVideo();
|
||||
}, [active]);
|
||||
|
||||
const start = () => {
|
||||
nextStep();
|
||||
@@ -23,37 +44,65 @@ export function StartRecording({
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="flex flex-col flex-grow">
|
||||
<div className="flex flex-grow flex-col gap-4">
|
||||
<Typography variant="main-title" bold>
|
||||
{l10n.getString(
|
||||
'onboarding-automatic_proportions-start_recording-title'
|
||||
)}
|
||||
</Typography>
|
||||
<div>
|
||||
<Typography color="secondary">
|
||||
<div className="flex flex-col flex-grow gap-3">
|
||||
<div className="flex flex-row flex-grow">
|
||||
<div className="flex flex-grow flex-col gap-4">
|
||||
<Typography variant="main-title" bold>
|
||||
{l10n.getString(
|
||||
'onboarding-automatic_proportions-start_recording-description'
|
||||
'onboarding-automatic_proportions-start_recording-title'
|
||||
)}
|
||||
</Typography>
|
||||
<div>
|
||||
<Typography color="secondary">
|
||||
{l10n.getString(
|
||||
'onboarding-automatic_proportions-start_recording-description'
|
||||
)}
|
||||
</Typography>
|
||||
</div>
|
||||
<ol className="list-decimal mobile:px-4 nsmol:hidden">
|
||||
<>
|
||||
{l10n
|
||||
.getString('onboarding-automatic_proportions-recording-steps')
|
||||
.split('\n')
|
||||
.map((line, i) => (
|
||||
<li key={i}>
|
||||
<Typography color="secondary">{line}</Typography>
|
||||
</li>
|
||||
))}
|
||||
</>
|
||||
</ol>
|
||||
<div className="flex nsmol:hidden">
|
||||
<TipBox>{l10n.getString('tips-do_not_move_heels')}</TipBox>
|
||||
</div>
|
||||
</div>
|
||||
<ol className="list-decimal mobile:px-4">
|
||||
<>
|
||||
{l10n
|
||||
.getString('onboarding-automatic_proportions-recording-steps')
|
||||
.split('\n')
|
||||
.map((line, i) => (
|
||||
<li key={i}>
|
||||
<Typography color="secondary">{line}</Typography>
|
||||
</li>
|
||||
))}
|
||||
</>
|
||||
</ol>
|
||||
<div className="flex">
|
||||
<TipBox>{l10n.getString('tips-do_not_move_heels')}</TipBox>
|
||||
</div>
|
||||
<button
|
||||
className="relative appearance-none h-fit"
|
||||
onClick={toggleVideo}
|
||||
>
|
||||
<div
|
||||
className="absolute w-[100px] h-[100px] top-0 bottom-0 left-0 right-0 m-auto fill-background-20"
|
||||
hidden={!paused}
|
||||
>
|
||||
<PlayCircleIcon width={100}></PlayCircleIcon>
|
||||
</div>
|
||||
|
||||
<video
|
||||
preload=""
|
||||
ref={videoRef}
|
||||
src="/videos/autobone.webm"
|
||||
className="min-w-[12rem] w-[12rem]"
|
||||
muted
|
||||
loop
|
||||
playsInline
|
||||
controls={false}
|
||||
poster="/images/autobone-poster.webp"
|
||||
></video>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div className="flex smol:hidden">
|
||||
<TipBox>{l10n.getString('tips-do_not_move_heels')}</TipBox>
|
||||
</div>
|
||||
<div className="flex gap-3 mobile:justify-between">
|
||||
<Button
|
||||
variant={variant === 'onboarding' ? 'secondary' : 'tertiary'}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useMemo, useState } from 'react';
|
||||
import { useEffect, useMemo, useState } from 'react';
|
||||
import { AssignTrackerRequestT, BodyPart, RpcMessage } from 'solarxr-protocol';
|
||||
import { FlatDeviceTracker } from '@/hooks/app';
|
||||
import { useOnboarding } from '@/hooks/onboarding';
|
||||
@@ -13,12 +13,14 @@ import { MountingSelectionMenu } from './MountingSelectionMenu';
|
||||
import { useLocalization } from '@fluent/react';
|
||||
import { useBreakpoint } from '@/hooks/breakpoint';
|
||||
import { Quaternion } from 'three';
|
||||
import { defaultConfig, useConfig } from '@/hooks/config';
|
||||
|
||||
export function ManualMountingPage() {
|
||||
const { isMobile } = useBreakpoint('mobile');
|
||||
const { l10n } = useLocalization();
|
||||
const { applyProgress, state } = useOnboarding();
|
||||
const { sendRPCPacket } = useWebsocketAPI();
|
||||
const { setConfig, config } = useConfig();
|
||||
|
||||
const [selectedRole, setSelectRole] = useState<BodyPart>(BodyPart.NONE);
|
||||
|
||||
@@ -27,6 +29,10 @@ export function ManualMountingPage() {
|
||||
const { useAssignedTrackers } = useTrackers();
|
||||
const assignedTrackers = useAssignedTrackers();
|
||||
|
||||
useEffect(() => {
|
||||
setConfig({ doneManualMounting: true });
|
||||
}, []);
|
||||
|
||||
const trackerPartGrouped = useMemo(
|
||||
() =>
|
||||
assignedTrackers.reduce<{ [key: number]: FlatDeviceTracker[] }>(
|
||||
@@ -96,6 +102,7 @@ export function ManualMountingPage() {
|
||||
<div className="flex flex-row justify-center">
|
||||
<BodyAssignment
|
||||
width={isMobile ? 160 : undefined}
|
||||
mirror={config?.mirrorView ?? defaultConfig.mirrorView}
|
||||
onlyAssigned={true}
|
||||
advanced={true}
|
||||
onRoleSelected={setSelectRole}
|
||||
|
||||
@@ -5,12 +5,18 @@ import { SkipSetupWarningModal } from '@/components/onboarding/SkipSetupWarningM
|
||||
import classNames from 'classnames';
|
||||
import { Typography } from '@/components/commons/Typography';
|
||||
import { Button } from '@/components/commons/Button';
|
||||
import { TryManualFirstModal } from './TryManualFirstModal';
|
||||
import { useConfig } from '@/hooks/config';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
|
||||
export function MountingChoose() {
|
||||
const { l10n } = useLocalization();
|
||||
const { applyProgress, skipSetup, state } = useOnboarding();
|
||||
const navigate = useNavigate();
|
||||
const { config, setConfig } = useConfig();
|
||||
const [animated, setAnimated] = useState(false);
|
||||
const [skipWarning, setSkipWarning] = useState(false);
|
||||
const [manualModal, setManualModal] = useState(false);
|
||||
|
||||
applyProgress(0.65);
|
||||
|
||||
@@ -66,7 +72,16 @@ export function MountingChoose() {
|
||||
</div>
|
||||
<Button
|
||||
variant={!state.alonePage ? 'secondary' : 'tertiary'}
|
||||
to="/onboarding/mounting/auto"
|
||||
to={
|
||||
config?.doneManualMounting
|
||||
? '/onboarding/mounting/auto'
|
||||
: undefined
|
||||
}
|
||||
onClick={
|
||||
!config?.doneManualMounting
|
||||
? () => setManualModal(true)
|
||||
: undefined
|
||||
}
|
||||
className="self-start mt-auto"
|
||||
state={{ alonePage: state.alonePage }}
|
||||
>
|
||||
@@ -137,6 +152,14 @@ export function MountingChoose() {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<TryManualFirstModal
|
||||
isOpen={manualModal}
|
||||
accept={() => {
|
||||
setConfig({ doneManualMounting: true });
|
||||
navigate('/onboarding/mounting/auto');
|
||||
}}
|
||||
cancel={() => setManualModal(false)}
|
||||
></TryManualFirstModal>
|
||||
<SkipSetupWarningModal
|
||||
accept={skipSetup}
|
||||
onClose={() => setSkipWarning(false)}
|
||||
|
||||
@@ -28,6 +28,8 @@ export const mapPart: Record<
|
||||
[BodyPart.CHEST]: ({ width }) => <FootIcon width={width}></FootIcon>,
|
||||
[BodyPart.HEAD]: ({ width }) => <FootIcon width={width}></FootIcon>,
|
||||
[BodyPart.HIP]: ({ width }) => <FootIcon width={width}></FootIcon>,
|
||||
[BodyPart.LEFT_HIP]: ({ width }) => <FootIcon width={width}></FootIcon>, // Unused
|
||||
[BodyPart.RIGHT_HIP]: ({ width }) => <FootIcon width={width}></FootIcon>, // Unused
|
||||
[BodyPart.LEFT_FOOT]: ({ width, currentLocales }) =>
|
||||
currentLocales.includes('en-x-owo') ? (
|
||||
<PawIcon
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
import { BaseModal } from '@/components/commons/BaseModal';
|
||||
import { Button } from '@/components/commons/Button';
|
||||
import { Typography } from '@/components/commons/Typography';
|
||||
import { Localized, useLocalization } from '@fluent/react';
|
||||
|
||||
export function TryManualFirstModal({
|
||||
isOpen = true,
|
||||
cancel,
|
||||
accept,
|
||||
}: {
|
||||
/**
|
||||
* Is the parent/sibling component opened?
|
||||
*/
|
||||
isOpen: boolean;
|
||||
/**
|
||||
* Function to trigger when they want to do automatic anyways
|
||||
*/
|
||||
accept: () => void;
|
||||
/**
|
||||
* Function to trigger when they agree to do manual
|
||||
*/
|
||||
cancel?: () => void;
|
||||
}) {
|
||||
const { l10n } = useLocalization();
|
||||
|
||||
return (
|
||||
<BaseModal isOpen={isOpen} onRequestClose={cancel}>
|
||||
<div className="flex flex-col gap-3">
|
||||
<>
|
||||
<div className="flex flex-col items-center gap-3 fill-accent-background-20">
|
||||
<div className="flex flex-col items-center gap-2">
|
||||
<Typography
|
||||
variant="main-title"
|
||||
whitespace="whitespace-pre"
|
||||
textAlign="text-center"
|
||||
>
|
||||
{l10n.getString(
|
||||
'onboarding-choose_mounting-manual_modal-title'
|
||||
)}
|
||||
</Typography>
|
||||
<div className="w-[30vw] min-w-fit">
|
||||
<Localized
|
||||
id="onboarding-choose_mounting-manual_modal-description"
|
||||
elems={{ b: <b></b> }}
|
||||
>
|
||||
<Typography variant="standard">
|
||||
You should do manual mounting first!
|
||||
</Typography>
|
||||
</Localized>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Button variant="primary" onClick={accept}>
|
||||
{l10n.getString('onboarding-choose_mounting-manual_modal-confirm')}
|
||||
</Button>
|
||||
<Button variant="tertiary" onClick={cancel}>
|
||||
{l10n.getString('onboarding-choose_mounting-manual_modal-cancel')}
|
||||
</Button>
|
||||
</>
|
||||
</div>
|
||||
</BaseModal>
|
||||
);
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import { Button } from '@/components/commons/Button';
|
||||
import { Typography } from '@/components/commons/Typography';
|
||||
import { SkeletonVisualizerWidget } from '@/components/widgets/SkeletonVisualizerWidget';
|
||||
import { useLocalization } from '@fluent/react';
|
||||
|
||||
export function DoneStep({
|
||||
@@ -38,6 +39,8 @@ export function DoneStep({
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<SkeletonVisualizerWidget />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||