diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index fe246cc2..8a7bdc1a 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -24,14 +24,15 @@ jobs:
with:
node-version: 22.11.0
cache: "npm"
+
+ # Install and setup rpm/Flatpak for Ubuntu
+ - name: Install rpm/flatpak packages (Ubuntu only)
+ if: matrix.os == 'ubuntu-latest'
+ run: sudo apt-get install -y flatpak flatpak-builder rpm libarchive-tools
+
- run: npm ci
- run: npm run package
- # Install and setup Flatpak for Ubuntu
- - name: Install flatpak packages (Ubuntu only)
- if: matrix.os == 'ubuntu-latest'
- run: sudo apt-get install -y flatpak flatpak-builder
-
- name: Setup flatpak repo (Ubuntu only)
if: matrix.os == 'ubuntu-latest'
run: |
diff --git a/.github/workflows/release-linux.yaml b/.github/workflows/release-linux.yaml
index 0996f1ae..7e361647 100644
--- a/.github/workflows/release-linux.yaml
+++ b/.github/workflows/release-linux.yaml
@@ -20,8 +20,8 @@ jobs:
- name: Check out Git repository
uses: actions/checkout@v4
- - name: Install flatpak packages
- run: sudo apt-get install -y flatpak flatpak-builder
+ - name: Install rpm/flatpak packages
+ run: sudo apt-get install -y flatpak flatpak-builder rpm libarchive-tools
- name: Setup flatpak repo
run: |
@@ -39,6 +39,9 @@ jobs:
- name: Build deb
run: npx electron-builder --config electron-builder.config.js --publish always --linux deb --x64
+ - name: Build rpm
+ run: npx electron-builder --config electron-builder.config.js --publish always --linux rpm --x64
+
- name: Build flatpak
run: env DEBUG="@malept/flatpak-bundler" npx electron-builder --config electron-builder.config.js --publish always --linux flatpak
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 933d3a8a..0aca4d39 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,148 @@
## Not released yet ~
+[PR Merged since the last release](https://github.com/Zagrios/bs-manager/pulls?q=is%3Apr+is%3Amerged+merged%3A%3E2025-01-18)\
+[PR Merged since the last alpha](https://github.com/Zagrios/bs-manager/pulls?q=is%3Apr+is%3Amerged+merged%3A%3E2025-01-11+)
+
+## [1.4.18](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.18) (Jan 18, 2025)
+
+### Fixes
+- Fixed an issue where enabling Oculus sideloading was not working if BSManager installation path contained spaces #735
+- The IPA folder is now cleared each time BSIPA is installed to prevent potential crashes caused by conflicts with old BSIPA files #746
+- Added a check to ensure the file system supports symlinks before moving contents to the shared folder #739
+
+### Other changes
+- Events occurring in `bs-admin-start.exe` and `oculus-allow-dev-sideloaded.exe` are now logged #735
+
+## [1.4.17](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.17) (Jan 2, 2025)
+
+### Fixes
+- Fixed an issue where original Steam installations of Beat Saber did not have any mods available
+- Mod descriptions should no longer contain HTML tags
+
+## [1.4.16](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.16) (Jan 2, 2025)
+
+### Fixes
+- Fixed infinite mod loading when a mod file could not be found on BeatMods #725 (Thanks to @silentrald)
+- Fixed an issue where no mods were shown as installed when a mod dependency could not be found #726 (Thanks to @silentrald)
+- Fixed minor UI issues
+
+## [1.4.15](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.15) (Jan 2, 2025)
+
+### Fixes
+- Use the sideloading feature of Oculus to prevent errors when launching Oculus versions of Beat Saber #720
+- Oculus token starting with `OC` are now accepted
+
+### Other changes
+- Mods now load faster #508
+- Switched to the new BeatMods API for loading mods
+
+
+## [1.4.14](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.14) (Dec 2, 2024)
+
+### Fixes
+- Fixed an issue where downloading private playlists through OneClick was always resulting in an error #679 (Thanks to @Top-Cat)
+- Beat Saber file verification was broken due to an error in DepotDownloader #677
+
+
+## [1.4.13](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.13) (Nov 26, 2024)
+
+### Features
+- Added the possibility to unselect all mods from the mods panel #666
+
+### Fixes
+- Fixed an issue where downloading maps with subfolders was not possible #649 (Thanks to @silentrald)
+- Corrected the mods search bar color in the light theme #660 (Thanks to @chk1)
+
+### Other changes
+- Added the BeatLeader icon to the OneClick playlist settings #653
+- A warning now appears before downloading an outdated BeatSaber version #654
+- Oculus BeatSaber versions no longer launch if the Oculus library is not found #657 (Thanks to @LiamillionSS)
+- Maps from BeatSaver are now sorted by relevance by default #662 (Thanks to @Top-Cat)
+- Removed the `--no-yeet` argument when launching original copies of BeatSaber #667
+- Added warnings for outdated versions in the versions view #673
+
+
+## [1.4.12](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.12) (Nov 6, 2024)
+
+### Fixes
+- Fixed OneClick playlist download that has been broken in the previous release #645
+- Fixed an issue where downloading playlists could fail if the playlist's file contained special characters #645
+
+## [1.4.11](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.11) (Nov 4, 2024)
+
+### Fixes
+- BSManager was not working if the path to BSM's installation folder contained URL special characters #636
+- Linking folders was no longer working if the folders contained files
+- Under certain conditions, loading maps could result in a black screen
+
+### Other changes
+- The "Broken Models" notification has been removed #640
+
+
+## [1.4.10](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.10) (Oct 27, 2024)
+
+### Fixes
+- Mods using a manifest file were sometimes not detected as installed #564
+- BSIPA installation was always considered as successfull even if an error occured #511
+- Some map filter tags were no longer working #619 (Thanks to @silentrald)
+- Fixed an issue where, under certain conditions, linking a folder could result in the loss of its contents #568
+
+### Other changes
+- Default mods are no longer reselected when mods are already installed #535
+- The `DLC` folder has been removed from the default list of folders that can be linked #628
+- The naming scheme for downloaded maps and playlists has been updated to prevent duplicates when downloading maps or playlists from Beat Saber or other tools
+
+
+## [1.4.9](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.9) (Oct 15, 2024)
+
+### Fixes
+- Updated DepotDownloader dependency to fix connection errors with Steam
+
+### Other changes
+- Added support for `info.dat` v4
+
+
+## [1.4.8](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.8) (Aug 1, 2024)
+
+### Other changes
+- Added checks to avoid logging sensitive data in log files
+- The oldest log files are deleted to retain a maximum of 5 log files
+
+
+## [1.4.7](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.7) (Mar 13, 2024)
+
+### Fixes
+- Fixed being unable to download models with BSManager #436
+
+### Other changes
+- Fixed a typo in german translation (Thanks to @fllppi)
+
+## [1.4.6](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.6) (Mar 6, 2024)
+
+### Features
+- It's now possible to exclude already installed maps when downloading maps from BSManager #426 (Thanks to @Liborsaf)
+
+### Fixes
+- Fixed an issue where BSManager couldn't get path to user's documents under certain conditions, preventing any action from the user #431
+- To prevent the last launched Beat Saber version getting wiped by Oculus auto-updates, the symlink created to launch the version is now deleted after the game stops #432
+
+## [1.4.5](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.5) (Feb 12, 2024)
+
+### Fixes
+- Fixed an issue preventing launching downgraded Steam versions under certain conditions #415
+- Fixed an issue preventing launching downgraded Oculus versions under certain conditions #421
+- Fixed an issue where SteamVR was not properly restored after launching Beat Saber from a shortcut with FPFC mode #417 (Thanks to @slinkstr)
+
+## [1.4.4](https://github.com/Zagrios/bs-manager/releases/edit/v1.4.4) (Feb 1, 2024)
+
+### Fixes
+- When launching an Oculus Beat Saber version, the Oculus app is also started if needed to avoid crashes #405
+- If Steam is running as admin, Beat Saber is now also started as admin to avoid crashes #404
+- Fixed the issue where BSManager could fail to start due to a missing DLL #400
+- Fixed the issue where BSManager could not locate the Oculus library #398
+
+### Other changes
+- Added some tooltips to the maps UIs #397
+- Updated the maps panel UI for consistency with the rest of BSManager UIs #399
## [1.4.3](https://github.com/Zagrios/bs-manager/releases/tag/v1.4.3) (Dec 27, 2023)
diff --git a/README.md b/README.md
index 6b47a043..e887788b 100644
--- a/README.md
+++ b/README.md
@@ -559,7 +559,7 @@
Insprill - Co-Developer, Linux Developer, AUR Maintainer.
-
silentrald - Co-Developer, Linux Developer, deb and flatpak Maintainer.
+
silentrald - Co-Developer, Linux Developer, deb/rpm/flatpak Maintainer.
diff --git a/assets/jsons/patreons.json b/assets/jsons/patreons.json
index 33bd4a11..9bd6acc1 100644
--- a/assets/jsons/patreons.json
+++ b/assets/jsons/patreons.json
@@ -138,5 +138,9 @@
{
"username": "Alexander Herman",
"type": "gold"
+ },
+ {
+ "username": "Arts Rimuro Suraimu",
+ "type": "gold"
}
]
diff --git a/assets/jsons/translations/de.json b/assets/jsons/translations/de.json
index c7e7a533..c7eadb2d 100644
--- a/assets/jsons/translations/de.json
+++ b/assets/jsons/translations/de.json
@@ -28,6 +28,11 @@
"pin": "Anheften",
"unpin": "Lösen"
},
+ "generic": {
+ "env": {
+ "parse": "Konnte den Umgebungsvariablen-String nicht richtig parsen."
+ }
+ },
"title-bar": {
"outdated": "veraltet"
},
@@ -51,7 +56,7 @@
"outdated-tippy": "Diese Version ist veraltet, und einige Mods oder Funktionen funktionieren möglicherweise nicht wie erwartet. Es wird empfohlen, die empfohlene Version ({recommendedVersion}) von Beat Saber zu verwenden, um die neuesten Funktionen und Fehlerbehebungen zu genießen.",
"advanced-launch": {
"button": "Startoptionen",
- "placeholder": "Weitere Argumente, bspw: --revert; --nowait"
+ "placeholder": "Startoptionen, bspw: KEY=VALUE %command% fpfc"
},
"skipsteam": "Steam überspringen",
"skipsteam-description": "Verhindert, dass Steam automatisch mit Beat Saber geöffnet wird. Aktivieren Sie dies, wenn Sie eine andere VR-Laufzeit wie WiVRn oder Monado verwenden, mit der SteamVR interferieren könnte.",
@@ -148,6 +153,14 @@
"all-mods-already-installed": {
"title": "Mods bereits installiert",
"description": "Alle ausgewählten Mods sind bereits installiert"
+ },
+ "outdated-mods": {
+ "title": "Veraltetes Mod",
+ "title-plural": "Veraltete Mods",
+ "description": "Das Mod {name} ist veraltet. Möchten Sie es aktualisieren?",
+ "description-plural": "Diese Version enthält {nb} veraltete Mods. Möchten Sie sie aktualisieren?",
+ "dont-remind-me": "Nicht mehr daran erinnern",
+ "update": "Aktualisieren"
}
},
"drop-zone": {
@@ -227,6 +240,7 @@
"es-ES": "Español",
"it-IT": "Italiano",
"de-DE": "Deutsch",
+ "pt-BR": "Português (Brasil)",
"ru-RU": "Русский",
"zh-CN": "简体中文",
"zh-TW": "正體中文",
@@ -237,6 +251,7 @@
"en-US": "Englisch, USA",
"fr-FR": "Französisch",
"es-ES": "Spanisch",
+ "pt-BR": "Portugiesisch",
"it-IT": "Italienisch",
"de-DE": "Deutsch",
"ru-RU": "Russisch",
diff --git a/assets/jsons/translations/en.json b/assets/jsons/translations/en.json
index 8b769c7d..3054223e 100644
--- a/assets/jsons/translations/en.json
+++ b/assets/jsons/translations/en.json
@@ -28,6 +28,11 @@
"pin": "Pin",
"unpin": "Unpin"
},
+ "generic": {
+ "env": {
+ "parse": "Could not properly parse the env var string."
+ }
+ },
"title-bar": {
"outdated": "outdated"
},
@@ -51,7 +56,7 @@
"outdated-tippy": "This version is outdated, and some mods or features may no longer work as expected. Prefer using the recommended version ({recommendedVersion}) of Beat Saber to enjoy the latest features and bugfixes.",
"advanced-launch": {
"button": "Launch options",
- "placeholder": "Additional arguments ex: --revert; --nowait"
+ "placeholder": "Launch options ex: KEY=VALUE %command% fpfc"
},
"skipsteam": "Skip Steam",
"skipsteam-description": "Stops Steam from opening automatically with Beat Saber, enable if you are using a different VR runtime like WiVRn or Monado that SteamVR may interfere with.",
@@ -148,6 +153,14 @@
"all-mods-already-installed": {
"title": "Mods already installed",
"description": "All selected mods are already installed"
+ },
+ "outdated-mods": {
+ "title": "Outdated Mod",
+ "title-plural": "Outdated Mods",
+ "description": "{name} mod is outdated. Do you want to update it?",
+ "description-plural": "This version has {nb} outdated mods. Do you want to update them?",
+ "dont-remind-me": "Don't remind me",
+ "update": "Update"
}
},
"drop-zone": {
@@ -227,6 +240,7 @@
"es-ES": "Español",
"it-IT": "Italiano",
"de-DE": "Deutsch",
+ "pt-BR": "Português (Brasil)",
"ru-RU": "Русский",
"zh-CN": "简体中文",
"zh-TW": "正體中文",
@@ -239,6 +253,7 @@
"es-ES": "Spanish",
"it-IT": "Italian",
"de-DE": "German",
+ "pt-BR": "Portuguese (Brazil)",
"ru-RU": "Russian",
"zh-CN": "Chinese (Simplified)",
"zh-TW": "Chinese (Traditional)",
diff --git a/assets/jsons/translations/es.json b/assets/jsons/translations/es.json
index 61cba828..c7681628 100644
--- a/assets/jsons/translations/es.json
+++ b/assets/jsons/translations/es.json
@@ -28,6 +28,11 @@
"pin": "Fijar",
"unpin": "Desfijar"
},
+ "generic": {
+ "env": {
+ "parse": "No se pudo analizar correctamente la cadena de la variable de entorno."
+ }
+ },
"title-bar": {
"outdated": "obsoleto"
},
@@ -51,7 +56,7 @@
"outdated-tippy": "Esta versión está desactualizada, y algunos mods o funciones pueden no funcionar como se espera. Es mejor usar la versión recomendada ({recommendedVersion}) de Beat Saber para disfrutar de las últimas características y correcciones.",
"advanced-launch": {
"button": "Opciones de lanzamiento",
- "placeholder": "Argumentos adicionales ej: --revert; --no-wait"
+ "placeholder": "Opciones de lanzamiento ej: KEY=VALUE %command% fpfc"
},
"skipsteam": "Saltar Steam",
"skipsteam-description": "Evita que Steam se abra automáticamente con Beat Saber, habilita esto si estás usando un runtime de VR diferente como WiVRn o Monado que SteamVR podría interferir.",
@@ -148,6 +153,14 @@
"all-mods-already-installed": {
"title": "Mods ya instalados",
"description": "Todos los mods seleccionados ya están instalados"
+ },
+ "outdated-mods": {
+ "title": "Mod desactualizado",
+ "title-plural": "Mods desactualizados",
+ "description": "El mod {name} está desactualizado. ¿Quieres actualizarlo?",
+ "description-plural": "Esta versión tiene {nb} mods desactualizados. ¿Quieres actualizarlos?",
+ "dont-remind-me": "No me lo recuerdes",
+ "update": "Actualizar"
}
},
"drop-zone": {
@@ -227,6 +240,7 @@
"es-ES": "Español",
"it-IT": "Italiano",
"de-DE": "Deutsch",
+ "pt-BR": "Português (Brasil)",
"ru-RU": "Русский",
"zh-CN": "简体中文",
"zh-TW": "正體中文",
@@ -239,6 +253,7 @@
"es-ES": "Español",
"it-IT": "Italiano",
"de-DE": "Alemán",
+ "pt-BR": "Portugués (Brasil)",
"ru-RU": "Ruso",
"zh-CN": "Chino simplificado",
"zh-TW": "Chino tradicional",
diff --git a/assets/jsons/translations/fr.json b/assets/jsons/translations/fr.json
index 09ff7267..d065f6d5 100644
--- a/assets/jsons/translations/fr.json
+++ b/assets/jsons/translations/fr.json
@@ -28,6 +28,11 @@
"pin": "Épingler",
"unpin": "Désépingler"
},
+ "generic": {
+ "env": {
+ "parse": "Impossible d'analyser correctement la chaîne de variable d'environnement."
+ }
+ },
"title-bar": {
"outdated": "obsolète"
},
@@ -51,7 +56,7 @@
"outdated-tippy": "Cette version est obsolète et certains mods ou fonctionnalités peuvent ne plus fonctionner comme prévu. Préférez utiliser la version recommandée ({recommendedVersion}) de Beat Saber pour profiter des dernières fonctionnalités et correctifs.",
"advanced-launch": {
"button": "Options de lancement",
- "placeholder": "Arguments supplémentaires ex: --revert; --nowait"
+ "placeholder": "Options de lancement ex: KEY=VALUE %command% fpfc"
},
"skipsteam": "Ignorer Steam",
"skipsteam-description": "Empêche Steam de s'ouvrir automatiquement avec Beat Saber, activez-le si vous utilisez un autre runtime VR comme WiVRn ou Monado avec lequel SteamVR pourrait interférer.",
@@ -148,6 +153,14 @@
"all-mods-already-installed": {
"title": "Mods déjà installées",
"description": "Tous les mods séléctionnées sont déjà installées"
+ },
+ "outdated-mods": {
+ "title": "Mod obsolète",
+ "title-plural": "Mods obsolètes",
+ "description": "Le mod {name} est obsolète. Voulez-vous le mettre à jour ?",
+ "description-plural": "Cette version contient {nb} mods obsolètes. Voulez-vous les mettre à jour ?",
+ "dont-remind-me": "Ne plus me rappeler",
+ "update": "Mettre à jour"
}
},
"drop-zone": {
@@ -227,6 +240,7 @@
"es-ES": "Español",
"it-IT": "Italiano",
"de-DE": "Deutsch",
+ "pt-BR": "Português (Brasil)",
"ru-RU": "Русский",
"zh-CN": "简体中文",
"zh-TW": "正體中文",
@@ -237,6 +251,7 @@
"en-US": "Anglais, États-Unis",
"fr-FR": "Français",
"es-ES": "Espagnol",
+ "pt-BR": "Portugais (Brésil)",
"it-IT": "Italien",
"de-DE": "Allemand",
"ru-RU": "Russe",
diff --git a/assets/jsons/translations/it.json b/assets/jsons/translations/it.json
index 6be54279..0bb01e70 100644
--- a/assets/jsons/translations/it.json
+++ b/assets/jsons/translations/it.json
@@ -28,6 +28,11 @@
"pin": "Fissa",
"unpin": "Rimuovi Fissaggio"
},
+ "generic": {
+ "env": {
+ "parse": "Impossibile analizzare correttamente la stringa della variabile d'ambiente."
+ }
+ },
"title-bar": {
"outdated": "obsoleta"
},
@@ -51,7 +56,7 @@
"outdated-tippy": "Questa versione è obsoleta, e alcune mod o funzioni non potrebbero più funzionare correttamente. Consigliamo di usare la versione raccomandata ({recommendedVersion}) di Beat Saber per godere delle ultime funzioni e bugfix.",
"advanced-launch": {
"button": "Opzioni di Lancio",
- "placeholder": "Argomenti aggiuntivi es: --revert; --nowait"
+ "placeholder": "Opzioni di Lancio es: KEY=VALUE %command% fpfc"
},
"skipsteam": "Salta Steam",
"skipsteam-description": "Ferma Steam da aprirsi automaticamente con Beat Saber, abilitalo se stai usando un VR runtime differente come WiVRn o Monado con cui SteamVR potrebbe interferire.",
@@ -148,6 +153,14 @@
"all-mods-already-installed": {
"title": "Mod già installata",
"description": "Tutte le mod selezionate sono già installate"
+ },
+ "outdated-mods": {
+ "title": "Mod obsoleto",
+ "title-plural": "Mod obsoleti",
+ "description": "Il mod {name} è obsoleto. Vuoi aggiornarlo?",
+ "description-plural": "Questa versione ha {nb} mod obsoleti. Vuoi aggiornarli?",
+ "dont-remind-me": "Non ricordarmelo",
+ "update": "Aggiorna"
}
},
"drop-zone": {
@@ -227,6 +240,7 @@
"es-ES": "Español",
"it-IT": "Italiano",
"de-DE": "Deutsch",
+ "pt-BR": "Português (Brasil)",
"ru-RU": "Русский",
"zh-CN": "简体中文",
"zh-TW": "正體中文",
@@ -239,6 +253,7 @@
"es-ES": "Spagnolo",
"it-IT": "Italiano",
"de-DE": "Tedesco",
+ "pt-BR": "Portoghese (Brasile)",
"ru-RU": "Russo",
"zh-CN": "Cinese (Semplificato)",
"zh-TW": "Cinese (Tradizionale)",
diff --git a/assets/jsons/translations/ja.json b/assets/jsons/translations/ja.json
index 356fb81e..32e8c7ed 100644
--- a/assets/jsons/translations/ja.json
+++ b/assets/jsons/translations/ja.json
@@ -28,6 +28,11 @@
"pin": "固定",
"unpin": "固定解除"
},
+ "generic": {
+ "env": {
+ "parse": "環境変数の文字列を正しく解析できませんでした。"
+ }
+ },
"title-bar": {
"outdated": "時代遅れ"
},
@@ -51,7 +56,7 @@
"outdated-tippy": "このバージョンは古いため、一部のMODや機能が期待通りに動作しない可能性があります。最新の機能やバグ修正を楽しむには、推奨バージョン ({recommendedVersion}) のBeat Saberを使用することをお勧めします。",
"advanced-launch": {
"button": "起動オプション",
- "placeholder": "追加引数 例:--revert; --nowait"
+ "placeholder": "起動オプション 例:KEY=VALUE %command% fpfc"
},
"skipsteam": "Steamをスキップ",
"skipsteam-description": "Beat Saberと一緒にSteamが自動的に開くのを防ぎます。SteamVRが干渉する可能性のあるWiVRnやMonadoなど、別のVRランタイムを使用している場合は有効にしてください。",
@@ -148,6 +153,14 @@
"all-mods-already-installed": {
"title": "すでにインストール済みのMOD",
"description": "選択したすべてのMODはすでにインストールされています"
+ },
+ "outdated-mods": {
+ "title": "古いMod",
+ "title-plural": "古いMod",
+ "description": "{name} Modが古くなっています。更新しますか?",
+ "description-plural": "このバージョンには古いModが{nb}個あります。更新しますか?",
+ "dont-remind-me": "もう知らせない",
+ "update": "更新する"
}
},
"drop-zone": {
@@ -227,6 +240,7 @@
"es-ES": "Español",
"it-IT": "Italiano",
"de-DE": "Deutsch",
+ "pt-BR": "Português (Brasil)",
"ru-RU": "Русский",
"zh-CN": "简体中文",
"zh-TW": "正體中文",
@@ -239,6 +253,7 @@
"es-ES": "スペイン語",
"it-IT": "イタリア語",
"de-DE": "ドイツ語",
+ "pt-BR": "ポルトガル語 (ブラジル)",
"ru-RU": "ロシア語",
"zh-CN": "簡体字中国",
"zh-TW": "繁体字中国",
diff --git a/assets/jsons/translations/ko.json b/assets/jsons/translations/ko.json
index d95476be..035fefed 100644
--- a/assets/jsons/translations/ko.json
+++ b/assets/jsons/translations/ko.json
@@ -28,6 +28,11 @@
"pin": "고정",
"unpin": "고정 해제"
},
+ "generic": {
+ "env": {
+ "parse": "환경 변수 문자열을 제대로 파싱할 수 없습니다."
+ }
+ },
"title-bar": {
"outdated": "구식"
},
@@ -51,7 +56,7 @@
"outdated-tippy": "이 버전은 오래되어 일부 모드나 기능이 예상대로 작동하지 않을 수 있습니다. 최신 기능과 버그 수정을 사용하려면 권장 버전({recommendedVersion})의 Beat Saber를 사용하는 것이 좋습니다.",
"advanced-launch": {
"button": "실행 옵션",
- "placeholder": "추가 인수 예: --revert; --nowait"
+ "placeholder": "실행 옵션 예: KEY=VALUE %command% fpfc"
},
"skipsteam": "Steam 실행 건너뛰기",
"skipsteam-description": "Beat Saber와 함께 Steam이 자동으로 열리는 것을 방지합니다. SteamVR이 간섭할 수 있는 WiVRn 또는 Monado와 같은 다른 VR 런타임을 사용하는 경우 활성화하세요.",
@@ -148,7 +153,16 @@
"all-mods-already-installed": {
"title": "이미 설치된 모드",
"description": "선택한 모든 모드가 이미 설치되었습니다."
+ },
+ "outdated-mods": {
+ "title": "구식 모드",
+ "title-plural": "구식 모드",
+ "description": "{name} 모드가 오래되었습니다. 업데이트하시겠습니까?",
+ "description-plural": "이 버전에는 {nb}개의 구식 모드가 있습니다. 업데이트하시겠습니까?",
+ "dont-remind-me": "다시는 알리지 않기",
+ "update": "업데이트"
}
+
},
"drop-zone": {
"text": "모드를 가져오기",
@@ -227,6 +241,7 @@
"es-ES": "Español",
"it-IT": "Italiano",
"de-DE": "Deutsch",
+ "pt-BR": "Português (Brasil)",
"ru-RU": "Русский",
"zh-CN": "简体中文",
"zh-TW": "正體中文",
@@ -239,6 +254,7 @@
"es-ES": "스페인어",
"it-IT": "이탈리아어",
"de-DE": "독일어",
+ "pt-BR": "포르투갈 인 (브라질)",
"ru-RU": "러시아어",
"zh-CN": "중국어 (간체)",
"zh-TW": "중국어 (번체)",
diff --git a/assets/jsons/translations/pt-br.json b/assets/jsons/translations/pt-br.json
new file mode 100644
index 00000000..ba034dcd
--- /dev/null
+++ b/assets/jsons/translations/pt-br.json
@@ -0,0 +1,1321 @@
+{
+ "misc": {
+ "download": "Baixar",
+ "add": "Adicionar",
+ "verify": "Verificar",
+ "launch": "Iniciar",
+ "mods": "Mods",
+ "maps": "Mapas",
+ "playlists": "Playlists",
+ "models": "Modelos",
+ "avatars": "Avatares",
+ "sabers": "Sabres",
+ "platforms": "Platformas",
+ "blocks": "Blocos",
+ "cancel": "Cancelar",
+ "delete": "Deletar",
+ "accept": "Aceitar",
+ "refuse": "Recusar",
+ "apply": "Aplicar",
+ "copy": "Copiar",
+ "copied": "Copiado!",
+ "confirm": "Confirmar",
+ "choose-folder": "Escolher pasta",
+ "unknown": "Um erro desconhecido aconteceu ¯\\_(ツ)_/¯",
+ "warning": "Aviso",
+ "continue": "Continuar",
+ "shared": "Compartilhados",
+ "pin": "Fixar",
+ "unpin": "Desafixar"
+ },
+ "generic": {
+ "env": {
+ "parse": "Não foi possível interpretar corretamente a string da variável de ambiente."
+ }
+ },
+ "title-bar": {
+ "outdated": "Desatualizado"
+ },
+ "nav-bar": {
+ "add-version": "Adicionar uma versão",
+ "settings": "Configurações",
+ "shared": {
+ "text": "Compartilhados",
+ "tooltip": "Conteúdos compartilhados"
+ }
+ },
+ "pages": {
+ "version-viewer": {
+ "launch-mods": {
+ "oculus": "Modo Oculus",
+ "oculus-description": "Se você está utilizando Beat Saber pela Steam, isso permite que você use o compositor do Oculus VR sem passar pelo SteamVR, para possíveis ganhos de performance. Isso não é necessário para utilizar o Oculus.",
+ "desktop": "Modo FPFC",
+ "desktop-description": "O modo Controle Voador em Primeira Pessoa permite utilizar WASD e o mouse para navegar pelo menu do jogo. Isso facilita testes, pois não é necessário colocar o Oculus!",
+ "debug": "Modo Debug",
+ "debug-description": "Habilita a janela com logs de saída para IPA. Isso vai mostrar o console de debug que os mods usam.",
+ "outdated-tippy": "Essa versão está desatualizada, e alguns mods ou funções podem não funcionar mais como esperado. Prefira utilizar a versão recomendada ({recommendedVersion}) de Beat Saber para aproveitar todas as últimas novidades e correções de erros.",
+ "advanced-launch": {
+ "button": "Opções de Inicialização",
+ "placeholder": "Opções de lançamento, ex: KEY=VALUE %command% fpfc"
+ },
+ "skipsteam": "Pular Steam",
+ "skipsteam-description": "Faz com que a Steam pare de abrir automaticamente com Beat Saber, ative se você está utilizando algum outro executável de VR como WiVRn ou Monado, que pode interferir com o SteamVR.",
+ "map-editor": "Editor de Mapas",
+ "map-editor-description": "Iniciar o editor oficial de mapas do Beat Saber ao invés do jogo.",
+ "proton-logs": "Logs do Proton",
+ "proton-logs-description": "Habilita a gravação de logs do proton para essa instalação do Beat Saber Saber em \"{versionPath}\"."
+ },
+ "maps": {
+ "search-bar": {
+ "search-placeholder": "Procurar um mapa",
+ "filters-btn": "Filtros",
+ "dropdown": {
+ "export-maps": "Exportar mapas",
+ "delete-maps": "Deletar mapas",
+ "delete-duplicate-maps": "Deletar duplicatas"
+ }
+ },
+ "tabs": {
+ "maps": {
+ "actions": {
+ "drop-down": {
+ "browse-maps": "Explorar mapas",
+ "import-maps": "Importar mapas"
+ },
+ "link-maps": {
+ "tooltips": {
+ "link": "Vincular mapas",
+ "unlink": "Desvincular mapas"
+ }
+ }
+ },
+ "empty-maps": {
+ "text": "Sem mapas",
+ "button": "Baixar mapas"
+ },
+ "drop-zone": {
+ "text": "Importar seus mapas",
+ "subtext": "Jogue seus arquivos zip aqui para importar seus mapas"
+ },
+ "sort": {
+ "name": "Nome",
+ "song-author": "Autor da Música",
+ "map-author": "Autor do Mapa",
+ "bpm": "BPM",
+ "duration": "Duração",
+ "likes": "Gostei",
+ "date-uploaded": "Data de envio"
+ }
+ },
+ "playlists": {
+ "drop-down": {
+ "browse-playlists": "Explorar playlists",
+ "create-a-playlist": "Criar uma playlist",
+ "import-playlists": "Importar playlists"
+ },
+ "drop-zone": {
+ "text": "Importar suas playlists",
+ "subtext": "Jogue seu arquivos \".bplist\" ou \".json\" aqui para importá-los"
+ },
+ "sort": {
+ "title": "Título",
+ "author": "Autor",
+ "number-of-maps": "Quantidade de Mapas",
+ "duration": "Duração",
+ "notes-per-second": "NPS"
+ }
+ }
+ }
+ },
+ "mods": {
+ "loading-mods": "Carregando mods...",
+ "no-internet": "Sem internet",
+ "mods-not-available": "Nenhum mod está disponível para essa versão de Beat Saber ainda",
+ "buttons": {
+ "more-infos": "Mais informações",
+ "install-or-update": "Instalar ou Atualizar",
+ "reinstall-all": "Reinstalar todos"
+ },
+ "mods-grid": {
+ "header-bar": {
+ "name": "Nome",
+ "installed": "Instalado",
+ "latest": "Mais recente",
+ "description": "Descrição",
+ "dropdown": {
+ "import-mods": "Importar mods",
+ "desinstalar-all": "Desinstalar todos",
+ "unselect-all": "Desmarcar todos"
+ }
+ }
+ },
+ "notifications": {
+ "all-mods-already-installed": {
+ "title": "Mods já instalados",
+ "description": "Todos os mods selecionados já estão instalados"
+ },
+ "outdated-mods": {
+ "title": "Mod Desatualizado",
+ "title-plural": "Mods Desatualizados",
+ "description": "O mod {name} está desatualizado. Deseja atualizá-lo?",
+ "description-plural": "Esta versão possui {nb} mods desatualizados. Deseja atualizá-los?",
+ "dont-remind-me": "Não me lembre",
+ "update": "Atualizar"
+ }
+ },
+ "drop-zone": {
+ "text": "Importar seus mods",
+ "subtext": "Jogue seus arquivos \"zip\" ou \"dll\" aqui para importá-los"
+ }
+ },
+ "dropdown": {
+ "open-folder": "Abrir pasta",
+ "verify-files": "Verificar arquivos",
+ "clone": "Clonar",
+ "edit": "Editar",
+ "desinstalar": "Desintalar",
+ "create-shortcut": "Criar um atalho",
+ "shared-folders": "Pastas compartilhadas"
+ }
+ },
+ "available-versions": {
+ "title": "Baixar uma versão",
+ "steam-release": "Página do lançamento",
+ "dropdown": {
+ "refresh": "Atualizar versões",
+ "import-version": "Importar uma versão"
+ },
+ "recommended": "Recomendado",
+ "recommended-tooltip": "Versão mais modificável"
+ },
+ "settings": {
+ "steam-and-oculus": {
+ "title": "Steam & Oculus",
+ "description": "Desconectar irá te permitir trocar de contas no próximo download de Beat Saber.",
+ "logout": "Deslogar",
+ "logout-success": "Deslogado com sucesso",
+ "download-platform": {
+ "title": "Plataforma padrão",
+ "desc": "Escolha a plataforma padrão que será utilizada para baixar as versões de Beat Saber.",
+ "always-ask": "Sempre perguntar"
+ }
+ },
+ "appearance": {
+ "title": "Aparências",
+ "description": "Escolha entre as duas cores principais do BSManager.",
+ "reset": "Resetar",
+ "sub-title": "Tema",
+ "themes": {
+ "dark": "Escuro",
+ "light": "Claro",
+ "os": "Sincronizar com seu computador"
+ }
+ },
+ "installation-folder": {
+ "title": "Pasta de instalação",
+ "description": "Alterar a pasta que contem todos os conteúdos baixados pelo BSManager."
+ },
+ "proton-folder": {
+ "title": "Pasta do Proton ",
+ "description": "Alterar a pasta do Proton. (exemplo: Proton - Experimental)",
+ "errors": {
+ "title": "Alteração na pasta do Proton falhou",
+ "invalid-folder": "Caminho inválido para a pasta do Proton"
+ }
+ },
+ "additional-content": {
+ "title": "Conteúdo Adicional",
+ "description": "Conteúdo Adicional que te permite customizar Beat Saber!",
+ "deep-links": {
+ "sub-title": "Instalações em apenas um clique"
+ }
+ },
+ "language": {
+ "title": "Idiomas",
+ "description": "Selecione um idioma.",
+ "languages": {
+ "en-EN": "English, UK",
+ "en-US": "English, US",
+ "fr-FR": "Français",
+ "es-ES": "Español",
+ "it-IT": "Italiano",
+ "de-DE": "Deutsch",
+ "pt-BR": "Português (Brasil)",
+ "ru-RU": "Русский",
+ "zh-CN": "简体中文",
+ "zh-TW": "正體中文",
+ "ja-JP": "日本語",
+ "ko-KR": "한국어",
+ "translated": {
+ "en-EN": "Inglês, Reino Unido",
+ "en-US": "Inglês, Estados Unidos",
+ "fr-FR": "Francês",
+ "es-ES": "Espanhol",
+ "it-IT": "Italiano",
+ "de-DE": "Alemão",
+ "pt-BR": "Português (Brasil)",
+ "ru-RU": "Russo",
+ "zh-CN": "Chinês (Simplificado)",
+ "zh-TW": "Chinês (Tradicional)",
+ "ja-JP": "Japonês",
+ "ko-KR": "Coreano"
+ }
+ }
+ },
+ "patreon": {
+ "title": "Apoie BSManager 💖",
+ "description": "Apoie o projeto e nos ajude a continuar trazendo melhorias para o BSManager.",
+ "buttons": {
+ "support": "Apoie BSManager 🥰",
+ "supporters": "Apoiadores 👀"
+ },
+ "view": {
+ "no-supporters": "Nenhum apoiador no momento",
+ "sponsors": "Patrocinadores",
+ "supporters": "Apoiadores"
+ }
+ },
+ "discord": {
+ "description": "Junte-se a comunidade do BSManager nos seguindo nas nossas redes sociais!"
+ },
+ "contribution": {
+ "description": "Sugira uma nova função ou reporte um erro para nos ajudar a melhorar BSManager!",
+ "buttons": {
+ "request-features": "Solicitar nova função",
+ "report-bug": "Reportar um erro",
+ "open-logs": "Abrir logs"
+ }
+ },
+ "advanced": {
+ "title": "Avançado",
+ "description": "Configurações avançadas para BSManager.",
+ "hardware-acceleration": {
+ "title": "Aceleração de Hardware",
+ "description": "Ativar aceleração de hardware para utilizar a sua GPU e melhorar a performance do BSManager. Desligue isso se você está enfrentando perda de quadros.",
+ "modal": {
+ "title": "Reinício necessário",
+ "body": "Alterar a configuração de aceleração de hardware irá fechar e reabrir BSManager. Você quer continuar com isso?",
+ "confirm-btn": "Sim, eu quero"
+ },
+ "error-notification": {
+ "message": "Um erro aconteceu, não foi possível desabilitar a aceleração de hardware."
+ }
+ },
+ "use-symlinks": {
+ "title": "Usar SymLinks",
+ "description": "Use SymLinks ao invés de atalhos para pastas. Só ative isso se você realmente precisar.",
+ "modal": {
+ "title": "Permissões de Symlink",
+ "body": "Quando criando symlinks, BSManager irá solicitar privilégios de administrador ou modo desenvolvedor habilitado no seu sistema. Você quer continuar com isso?",
+ "confirm-btn": "Sim, eu quero"
+ },
+ "error-notification": {
+ "message": "Um erro aconteceu, não foi possível alterar a configuração de Symlinks."
+ }
+ },
+ "use-system-proxy": {
+ "title": "Usar proxy de sistema",
+ "description": "BSManager irá enviar chamadas de rede pelo seu proxy de sistema.",
+ "error-notification": {
+ "message": "Um erro aconteceu, não foi possível alterar a configuração de proxy de sistema."
+ }
+ }
+ }
+ }
+ },
+ "notifications": {
+ "types": {
+ "error": "🚨 Erro",
+ "warning": "⚠️ Perigo",
+ "success": "🎉 Succeso"
+ },
+ "common": {
+ "msg": {
+ "error-occurred": "Um erro aconteceu"
+ }
+ },
+ "shared": {
+ "errors": {
+ "titles": {
+ "operation-running": "Operação em andamento",
+ "no-internet": "Sem internet",
+ "file-not-supported": "Arquivo não suportado"
+ },
+ "msg": {
+ "operation-running": "Espere a operação atual terminar, e então tente novamente.",
+ "no-internet": "Verifique sua conexão e tente novamente.",
+ "file-not-supported": "Apenas os arquivos {types} são suportados."
+ }
+ }
+ },
+ "bs-download": {
+ "success": {
+ "titles": {
+ "download-success": "Download completo",
+ "verification-finished": "Verificação completa"
+ }
+ },
+ "steam-download": {
+ "warnings": {
+ "msg": {
+ "ManifestChecksum": "O manifesto baixado anteriormente não é igual ao novo 🤔",
+ "ConnectionTimeout": "Sua conexão de internet parece instável 🥶",
+ "ConnectionLost": "A conexão foi perdida, tente novamente...",
+ "ConnectionError": "Não foi possível conectar a Steam, tente novamente...",
+ "Unknown": "Algo estranho aconteceu 🤔 sua conexão provavelmente está instável."
+ }
+ },
+ "errors": {
+ "msg": {
+ "401": "Steam não está nos permitindo baixar Beat Saber 😢",
+ "404": "Não foi possível conectar com os servidores da Steam.",
+ "ExeNotFoundWindows": "\"DepotDownloader.exe\" está faltando. Por favor verifique se o executável está em quarentena pelo seu anti-virus.",
+ "ExeNotFoundLinux": "\"DepotDownloader\" executable está faltando.",
+ "Password": "Senha inválida.",
+ "InvalidCredentials": "Credenciais de login inválidas, conexão negada, ou muitas tentativas de login foram feitas.",
+ "NoManifest": "Nenhum manifesto foi encontrado",
+ "DirectoryCreate": "Não foi possível criar as pastas necessárias.",
+ "NotAvailableApp": "Você está tentando baixar BeatSaber sem ter comprado o jogo? 🤣",
+ "DepotNotFound": "Não foi possivel baixar Beat Saber 😥 tente novamente mais tarde 😕",
+ "NotCompleted": "Não foi possível completar o download ¯\\_(ツ)_/¯",
+ "InvalidManifest": "Não foi possível baixar Beat Saber 😥 tente novamente mais tarde 😕",
+ "NoValidKey": "Não foi possível baixar Beat Saber 😥 tente novamente mais tarde 😕",
+ "NoManifestCode": "Não foi possível baixar Beat Saber 😥 tente novamente mais tarde 😕",
+ "Unknown": "Um erro desconhecido aconteceu ¯\\_(ツ)_/¯",
+ "NoServer": "Não foi possível conectar aos servidores da Steam.",
+ "NotAllowed": "Aparentemente você não tem permissão para baixar Beat Saber 🥱",
+ "ConnectionTimeout": "Não foi possível conectar na Steam 😕",
+ "SteamLib": "Se você tiver esse erro, reporte no GitHub com os logs, por favor.",
+ "ConnectionError": "Não foi possível conectar na Steam depois de 10 tentativas 🤯",
+ "LicenceError": "Não foi possível pegar a lista de licenças.",
+ "RateLimitExceeded": "Você tentou muitas vezes, por favor espere um momento e tente novamente mais tarde",
+ "TokenRejected": "Seu token de login foi rejeitado 😕 Por favor tente novamente.",
+ "AccessDenied": "Seu acesso a Steam foi negado."
+ }
+ }
+ },
+ "oculus-download": {
+ "errors": {
+ "msg": {
+ "DOWNLOAD_MANIFEST_FAILED": "Não foi possível baixar o manifesto para essa versão; seu token de login pode estár inválido.",
+ "MANIFEST_FILE_NOT_FOUND": "Não foi possível encontrar o manifesto para essa versão.",
+ "PARSE_MANIFEST_FILE_FAILED": "Um erro aconteceu enquanto o manifesto estava sendo lido.",
+ "ALREADY_DOWNLOADING": "Uma versão já está sendo baixada.",
+ "UNABLE_TO_GET_MANIFEST": "Não foi possível obter o manifesto necessário para baixar.",
+ "VERIFY_INTEGRITY_FAILED": "Um erro aconteceu durante a verificação de arquivos.",
+ "SOME_FILES_FAILED_TO_DOWNLOAD": "Alguns arquivos falharam na hora de serem baixados.",
+ "META_LOGIN_TIMED_OUT": "O token de login demorou tempo de mais para chegar.",
+ "META_LOGIN_WINDOW_CLOSED_BY_USER": "A tela de login da Meta foi fechada.",
+ "NO_META_AUTH_TOKEN": "Não foi possível recuperar o token de login da Meta necessário para baixar.",
+ "UNKNOWN_ERROR": "Um erro desconhecido aconteceu."
+ }
+ }
+ }
+ },
+ "bs-import-version": {
+ "success": {
+ "start-import": {
+ "title": "Importação em progresso 👌",
+ "desc": "A importação pode levar muitos minutos dependendo das suas configurações."
+ },
+ "imported": {
+ "title": "Versão importada 🎉"
+ }
+ },
+ "errors": {
+ "import-error": {
+ "desc": "Verifique que a pasta selecionada contém uma instalação de Beat Saber."
+ }
+ }
+ },
+ "settings": {
+ "move-folder": {
+ "success": {
+ "titles": {
+ "transfer-started": "Movendo arquivos",
+ "transfer-finished": "Mudança completa"
+ },
+ "descs": {
+ "transfer-started": "A transferência de arquivos começou e pode levar muitos minutos dependendo das suas configurações."
+ }
+ },
+ "errors": {
+ "titles": {
+ "transfer-failed": "A mudança de arquivos falhou 😕"
+ },
+ "descs": {
+ "COPY_TO_SUBPATH": "A pasta destino não pode ser uma subpasta de uma pasta raiz.",
+ "restore-linked-folders": "Um erro aconteceu enquanto restaurando as pastas compartilhadas. Você ainda pode manualmente restaurara elas pelo menu 'Pastas Compartilhadas' na página de versões."
+ }
+ }
+ },
+ "steam": {
+ "success": {
+ "titles": {
+ "logout": "Desconectado da Steam."
+ }
+ }
+ },
+ "additional-content": {
+ "deep-link": {
+ "select-all": "Selecionar todos",
+ "activation": {
+ "success": {
+ "title": "UmClique ativado!",
+ "description": "Instalações em UmClique foram ativadas."
+ },
+ "error": {
+ "description": "Não foi possível ativar instalações em UmClique."
+ }
+ },
+ "deactivation": {
+ "success": {
+ "title": "UmClique desativado!",
+ "description": "Instalações em UmClique foram desativadas."
+ },
+ "error": {
+ "description": "Um erro aconteceu."
+ }
+ },
+ "check-all-enabled": {
+ "title": "UmClique desabilitado",
+ "description": "Uma ou mais instalações UmClique estão desabilitadas. Vá nas configurações para habilitá-las",
+ "actions": {
+ "settings": "Configurações",
+ "not-remind": "Não me lembrar novamente"
+ }
+ }
+ }
+ }
+ },
+ "bs-launch": {
+ "success": {
+ "titles": {
+ "BS_LAUNCHING": "Iniciando...🚀",
+ "STEAM_LAUNCHING": "Iniciando Steam!",
+ "SKIPPING_STEAM_LAUNCH": "Pulando início da Steam"
+ },
+ "msg": {
+ "BS_LAUNCHING": "Não se esqueça do aquecimento 😉",
+ "STEAM_LAUNCHING": "Beat Saber irá automaticamente iniciar após a Steam.",
+ "SKIPPING_STEAM_LAUNCH": "Eu espero que você saiba o que está fazendo :)"
+ }
+ },
+ "errors": {
+ "titles": {
+ "UNKNOWN_ERROR": "Não foi possível iniciar",
+ "STEAM_NOT_RUNNING": "Steam não está iniciando",
+ "OCULUS_NOT_RUNNING": "Oculus não está iniciando",
+ "BS_ALREADY_RUNNING": "Beat Saber já está rodando",
+ "EXE_NOT_FINDED": "Arquivos faltando",
+ "PROTON_NOT_SET": "Pasta do Proton não está configurada",
+ "PROTON_NOT_FOUND": "Binário do Proton não encontrado",
+ "EXIT": "Interrupção Abrupta",
+ "OCULUS_LIB_NOT_FOUND": "Biblioteca Oculus não encontrada",
+ "ORIGINAL_OCULUS_NOT_INSTALLED": "Versão original do Oculus não encontrada"
+ },
+ "msg": {
+ "UNKNOWN_ERROR": "Um erro desconhecido aconteceu.",
+ "STEAM_NOT_RUNNING": "Steam precisa estar rodando para iniciar BeatSaber.",
+ "OCULUS_NOT_RUNNING": "Oculus precisa estar rodando para iniciar.",
+ "BS_ALREADY_RUNNING": "Feche BeatSaber antes de iniciar novamente.",
+ "EXE_NOT_FINDED": "Alguns arquivos parecem estar faltando, tente verificar os arquivos.",
+ "EXIT": "BeatSaber parou abruptamente, tente verificar os arquivos.",
+ "OCULUS_LIB_NOT_FOUND": "Verifique que o aplicativo Oculus está instalado corretamente, e que as bibliotecas estão definidas no Oculus.",
+ "PROTON_NOT_SET": "Defina o Proton nas configurações.",
+ "PROTON_NOT_FOUND": "Defina o caminho da pasta do proton nas configurações.",
+ "ORIGINAL_OCULUS_NOT_INSTALLED": "Beat Saber precisa estar instalado no aplicativo do Oculus antes de iniciar."
+ },
+ "actions": {
+ "STEAM_NOT_RUNNING": "Iniciar Steam"
+ }
+ }
+ },
+ "steam": {
+ "steam-launching": {
+ "title": "Iniciando Steam!",
+ "description": "Beat Saber irá automaticamente iniciar depois da Steam."
+ }
+ },
+ "custom-version": {
+ "errors": {
+ "titles": {
+ "CantEditSteam": "Não foi possível editar",
+ "CantRename": "Impossível renomear",
+ "VersionAlreadExist": "Essa versão já existe",
+ "CantClone": "Impossível clonar",
+ "UnknownError": "Um erro desconhecido aconteceu"
+ },
+ "msg": {
+ "CantEditSteam": "Você não pode editar a versão da Steam, mas você pode cloná-la."
+ }
+ },
+ "success": {
+ "titles": {
+ "CloningFinished": "Clonagem completa 🎉"
+ }
+ }
+ },
+ "mods": {
+ "install-mods": {
+ "titles": {
+ "success": "Mods instalados 🎉",
+ "warning": "Mods instalados 🤔"
+ },
+ "msg": {
+ "success": "Todos os mods foram instalados.",
+ "warning": "Um ou mais mods não foram instalados.",
+ "errors": {
+ "no-mods": "Nenhum mod para instalar.",
+ "cannot-install-bsipa": "Instalação BSIPA falhou 😨"
+ }
+ }
+ },
+ "desinstalar-mod": {
+ "titles": {
+ "success": "Mod desinstalado 🎉"
+ },
+ "msg": {
+ "errors": {
+ "no-mods": "Esse mod não está instalado 😑"
+ }
+ }
+ },
+ "desinstalar-all-mods": {
+ "titles": {
+ "success": "Mods desinstalados 🎉"
+ },
+ "msg": {
+ "success": "Todos os mods foram desinstalados.",
+ "errors": {
+ "no-mods": "Nenhum mod está instalado nessa versão 😑"
+ }
+ }
+ },
+ "import-mod": {
+ "titles": {
+ "success": "Importação de mods completa",
+ "error": "Um erro aconteceu durante a importação de mods"
+ },
+ "msgs": {
+ "success": "Importação de Mods foi concluída.",
+ "some-success": "Alguns mods foram importados com sucesso.",
+ "no-dlls": "Os arquivos não possuem nenhum arquivo \"dll\"."
+ }
+ }
+ },
+ "maps": {
+ "one-click-install": {
+ "success": "Mapa instalado com sucesso",
+ "error": "Um erro aconteceu durante a instalação do mapa"
+ },
+ "no-duplicates-maps": {
+ "title": "Sem duplicatas",
+ "msg": "Nenhum mapa foi deletado"
+ },
+ "duplicates-maps-deleted": {
+ "title": "Duplicatas Deletadas",
+ "msg": "Duplicatas foram deletadas"
+ },
+ "import-map": {
+ "titles": {
+ "success": "Importação de Maps concluída",
+ "error": "Um erro aconteceu durante a importação de mapas"
+ },
+ "msgs": {
+ "success": "Mapas importados com sucesso.",
+ "some-success": "Alguns mapas foram importados com sucesso.",
+ "only-accept-zip": "Apenas arquivos zip são suportados.",
+ "invalid-zip": "O arquivo zip não possui nenhum mapa.",
+ "unknown": "Um erro desconhecido aconteceu"
+ }
+ }
+ },
+ "playlists": {
+ "one-click-install": {
+ "success": "Instalação de playlist concluída",
+ "error": "Um erro aconteceu durante a importação da playlist"
+ }
+ },
+ "models": {
+ "one-click-install": {
+ "success": "Instalação do Modelo concluída",
+ "error": "Um erro aconteceu durante a importação do modelo"
+ }
+ },
+ "shared-folder": {
+ "info": {
+ "userdata-backup-created": {
+ "title": "Backup criado",
+ "msg": "Compartilhar a past 'UserData' pode gerar erros, em aso de problemas, remova o link da pasta e restaure o backup"
+ }
+ },
+ "linking-error": {
+ "title": "Erro durante linkagem do arquivos",
+ "msg": {
+ "EPERM": "BSManager não tem as permissões necessárias para abrir a pasta.",
+ "EACCES": "BSManager não tem as permissões necessárias para linkagem da pasta.",
+ "ENOSPC": "O disco está cheio, abra algum espaço e tente novamente",
+ "LinkingNotSupported": "Linkagem de pastas não é suportada nesse sistema de arquivos.",
+ "UNKNOWN_ERROR": "Um erro desconhecido aconteceu durante a linkagem de arquivos."
+ }
+ },
+ "adding-error": {
+ "title": "Adição de pasta compartilhada falhou",
+ "msg": "Você não pode adicionar \"{folder}\" às pastas compartilhadas."
+ }
+ },
+ "create-launch-shortcut": {
+ "success": {
+ "title": "Atalho criado",
+ "msg": "O atalho foi criado na Área de Trabalho.",
+ "msg-steam": "O atalho foi criado na biblioteca da Steam."
+ },
+ "error": {
+ "msg": "Um erro aconteceu enquanto o atalho era criado."
+ }
+ },
+ "bs-version-oudated": {
+ "title": "Versão desatualizada",
+ "msg": "Essa versão do Beat Saber está desatualizada, use a versão recomendada para utilizar as funções mais recentes e correções de erros",
+ "actions": {
+ "do-not-remind": "Não me lembrar novamente",
+ "ok": "Ok"
+ }
+ }
+ },
+ "modals": {
+ "misc": {
+ "remember-my-choice": "Lembrar minhas escolhas"
+ },
+ "choose-store": {
+ "title": "Qual platforma?",
+ "body": "Selecione a plataforma na qual você quer baixar Beat Saber.",
+ "set-in-settings": "Configura a plataforma padrão nas configurações"
+ },
+ "guard": {
+ "title": "Steam Guard",
+ "inputs": {
+ "guard-code": {
+ "label": "Código Guard",
+ "placeholder": "Digite seu Código do Guard"
+ }
+ },
+ "buttons": {
+ "submit": "Login"
+ }
+ },
+ "steam-login": {
+ "title": "Steam Login",
+ "inputs": {
+ "username": {
+ "label": "Entrar com seu usuário",
+ "placeholder": "Digite seu usuário"
+ },
+ "password": {
+ "label": "Senha",
+ "placeholder": "Digite sua senha",
+ "max-length-warning": "Sua senha ultrapassa 64 caracteres! Se a senha é inválida, tente digitar apenas os primeiros 64 caracteres."
+ },
+ "qr": {
+ "label": "Ou com um QR code",
+ "note": {
+ "use-the": "Use o ",
+ "steam-mobile-app": "Aplicativo móvel da Steam",
+ "to-connect-with-qr": "Para entrar com o QR code."
+ }
+ },
+ "stay": "Lembre-se de mim"
+ },
+ "why-credentials": "Por que minhas credenciais são necessárias?",
+ "need-help-to-connect": "Eu preciso de ajuda para acessar minha conta!",
+ "buttons": {
+ "submit": "Entrar"
+ }
+ },
+ "steam-auth-approve": {
+ "title": "Esperando confirmação",
+ "protected-by-mobile-auth": "Conta progeida por autenticador móvel.",
+ "use-steam-app-to-approve": "Use o aplicativo móvel da steam para confirmar essa conexão...",
+ "not-access-to-steam-app": "Eu não tenho acesso ao aplicativo móvel da Steam"
+ },
+ "steam-credentials": {
+ "title": "Credenciais Steam",
+ "p-1": "Suas credenciais da Steam são necessárias apenas para baixar as versões de Beat Saber, nós usamos DepotDownloader para fazer isso, e verificar que você possuí o jogo na sua biblioteca antes de baixar o jogo. Suas credenciais não são armazenadas ou salvas, e são passadas direto para o DepotDownloader. Entretanto, se você não quiser fazer isso, você pode seguir esse tutorial: ",
+ "p-2": "Após isso, você pode apertar no ícone de engrenagem no topo direito da tela e selecionar \"Importar uma versãp\", e então selecionar a pasta com a instalação do Beat Saber. (Se você seguiu o tutorial, você vai ter a pasta correta)"
+ },
+ "bs-import-version": {
+ "title": "Importar uma versão",
+ "description": "Importa uma versão de Beat Saber para usar com o BSManager. Isso vai copiar a pasta de instalação selecionada para a pasta de versões do BSManager.",
+ "oculus-version": "Versão do Oculus",
+ "oculus-version-tooltip": "Verifique se é uma versão do Oculus",
+ "buttons": {
+ "submit": "Importar uma versão"
+ }
+ },
+ "bs-desinstalar": {
+ "title": "Desinstalar",
+ "description": "Você tem certeza que quer desinstalar Beat Saber {version}? Você vai ter que baixar ela novamente se quiser jogá-la.",
+ "buttons": {
+ "submit": "Desinstalar"
+ }
+ },
+ "install-folder": {
+ "title": "Pasta de instalação",
+ "description": "Alterar a pasta padrão de instalação vai resultar em mover todos os arquivos instalados para a nova pasta.",
+ "buttons": {
+ "submit": "Escolher pasta"
+ }
+ },
+ "edit-version": {
+ "title": "Editar a versão",
+ "buttons": {
+ "submit": "Editar"
+ }
+ },
+ "clone-version": {
+ "title": "Clonar a versão",
+ "description": "Clonar a versão te perimte separar conteúdos adicionais entre duas versões.",
+ "inputs": {
+ "name": {
+ "label": "Nome",
+ "placeholder": "Nome da versão"
+ },
+ "color": {
+ "label": "Cor"
+ }
+ },
+ "buttons": {
+ "submit": "Clonar"
+ }
+ },
+ "desinstalar-mod": {
+ "title": "Desinstalar",
+ "description": "Você tem certeza que quer desinstalar Beat Saber {mod}? Pode fazer com que outros mods parem de funcionar.",
+ "description-bsipa": "Você tem certeza que quer desinstalar BSIPA? Depois, nenhum mod irá funcionar."
+ },
+ "desinstalar-all-mods": {
+ "title": "Desinstalando mods",
+ "description": "Você tem certeza que quer desinstalar todos os mods da versão {version}? Essa operação não pode ser desfeita."
+ },
+ "maps-actions": {
+ "delete-maps": {
+ "title": {
+ "single": "Deletar esse mapa?",
+ "multiple": "Deletar mapas?"
+ },
+ "desc": {
+ "single": "Você tem certeza que quer desinstalar o mapa {name}?",
+ "multiple": "Você tem certeza que quer desinstalar {nb} mapas?"
+ },
+ "info": {
+ "desc": {
+ "single": "Esse mapa faz parte de um mapa compartilhado",
+ "multiple": "Esses mapas fazem parte de mapas compartilhados"
+ },
+ "title": {
+ "single": "Esse mapa também será removido de suas versões utilizando mapas compartilhados",
+ "multiple": "Esses mapas também serão removidos de suas versões utilizando mapas compartilhados"
+ }
+ }
+ }
+ },
+ "link-contents":{
+ "title": "Vincular {contentType}",
+ "p-1": "Vincular {contentType} permite compartilhar {contentType} entre todas as suas versões que possuam essa função habilitada. Uma vez vinculados, essa versão irá se beneficiar dos {contentType} compartilhados.",
+ "p-2": "Para que possa aproveitar a função de vinculação, todos os seus {itemsHtml} serão movidos para a pasta {sharedHtml}. Depois disso, um link simbólico apontando para a pasta compartilhada {contentType} irá substituir sua pasta original {contentType}.",
+ "warning": "Por favor, observe que qualquer mudança que afete {contentType} também irá afetar todas as versões com essa função habilitada.",
+ "what-is-a-symbolic-link": "O que é um link simbólico?",
+ "i-need-help": "Eu preciso de ajuda",
+ "valid-btn": "Link {contentType}"
+ },
+ "unlink-contents":{
+ "title": "Desvincular {contentType}",
+ "p-1": "Cuidado! Desvincular {contentType} irá desabilitar o compartilhamento de {contentType} para essa versão, até que seja habilitado novamente.",
+ "p-2": "Para que possa desvincular seus mapas, o link simbólico criado anteriomente para {sharedHtml} será removido. Depois disso, todos os mapas na pasta compartilhada serão copiados para a pasta {itemsHtml} da sua versão do Beat Saber.",
+ "do-not-copy-contents": "Não copie {contentType}",
+ "do-not-copy-contents-tip": "Se habilitado, {contentType} na pasta compartilhada não será copiado para sua versão de Beat Saber. Como consequência, nenhum {contentType} irá se manter na sua versão do Beat Saber depois da desvinculação.",
+ "valid-btn": "Desvincular {contentType}"
+ },
+ "download-maps": {
+ "search-btn": "Procurar",
+ "loading-maps": "Carregando mapas...",
+ "no-maps-found": "Nenhum mapa encontrado",
+ "no-internet": "Sem internet"
+ },
+ "mods-disclaimer": {
+ "title": "Aviso",
+ "p-1": "Ao escolher utilizar mods, você entende que:",
+ "li-1": "Você pode experienciar problemas que não existem no jogo convencional. 99.9% dos bugs, crashes, e lags acontecem por causa de mods.",
+ "li-2": "Mods estão sujeitos a serem quebrados por atualizações e isso é normal - seja paciente e respeitoso quando isso acontecer, visto que as pessoas são voluntárias com vidas reais.",
+ "li-3": "A empresa não está propositalmente tentando quebrar os mods. Eles apenas querem trabalhar no código base e as vezes isso quebra os mods, mas eles não estão tentando matá-los.",
+ "p-2": "Não ataque os desenvolvedores do jogo por problemas relacionados aos mods e vice-versa. Os desenvolvedores do jogo e dos mods são 2 grupos separados. Apenas não seja um idiota, ok?."
+ },
+ "shared-folders": {
+ "title": "Pastas compartilhadas",
+ "description": "Vincule pastas do Beat Saber para sincronizar seus conteúdos com pastas compartilhadas entre as versões. Observe que deleções também são compartilhadas.",
+ "buttons": {
+ "add-folder": "Adicionar Pasta",
+ "link-folder": "Vincular Pasta",
+ "unlink-folder": "Desvincular Pasta",
+ "link-all": "Vincular todas",
+ "remove-from-the-list": "Remover da lista"
+ }
+ },
+ "adding-shared-folder": {
+ "title": "Adicionando pasta compartilhada",
+ "description": "Você pode experienciar problemas vinculando a pasta \"{folder}\". Você tem certeza que quer adicioná-la?"
+ },
+ "create-launch-shortcut": {
+ "title": "Criar um atalho",
+ "desc": "Criar um atalho irá permitir que você inicie o Beat Saber com as opções escolhidas sem ter que entrar no BSManager.",
+ "launch-options": "Iniciar opções",
+ "advanced-launch": "Início Avançado",
+ "valid-btn": "Criar o atalho",
+ "create-steam-shortcut": "Criar um atalho da Steam",
+ "steam-shortcut-tippy": "Se habilitado, ao invés de criar um atalho na área de trabalho, o atalho será criado na Steam."
+ },
+ "connect-to-meta": {
+ "title": "Conectar a Meta",
+ "body": {
+ "token-needed": "Seu token de conexão com a Meta é necessário para baixar Beat Saber.",
+ "need-cookie-enabled": "Ao entrar na Meta, uma janela de login irá aparecer e então você pode iniciar o processo de login. Por favor, lembre de aceitar os cookies, caso contrário, podemos não conseguir recuperar seu token para começar o download.",
+ "enter-token-manually": "Digitar meu token de login manualmente",
+ "enter-token-manually-tooltip": "Isso irá lhe permitir digitar seu token de login sem ter que passar pelo login da Meta."
+ },
+ "stay": "Lembre-se de mim",
+ "connect-to-meta": "Conectar a Meta"
+ },
+ "enable-oculus-sideloaded-apps": {
+ "title": "Habilitar Aplicativos Externos",
+ "info-1": "Para que possamos iniciar Beat Saber, a possibilidade de executar aplicativos carregados externamente precisam estar habilitados. BSManager irá solicitar acesso de administrador para habilitar essa função automaticamente.",
+ "info-2": "A função de aplicativos externos irá permitir que jogos sejam iniciados por fora da sua pasta de biblioteca do Oculus.",
+ "info-3": "Após ativar os aplicativos externos, a função irá se manter ativa, e não pediremos mais para habilitá-la.",
+ "i-want-to-do-it-myself": "Eu quero fazer isso eu mesmo",
+ "understood": "Entendido"
+ },
+ "enter-meta-token": {
+ "title": "Token Oculus",
+ "body": {
+ "info-enter-token": "Para baixar Beat Saber, seu token de login do Oculus é necessário.",
+ "how-obtain-token": "Como eu obtenho meu token Oculus?",
+ "oculus-token": "Token Oculus",
+ "token-is-invalid": "O token é inválido.",
+ "save-my-token": "Salvar meu token",
+ "have-token-saved": "Eu já tenho um token salvo",
+ "save-token-info": "Isso irá salvar seu token para facilitar o reuso. Você precisará criar uma senha para criptografar seu token a fim de armazená-lo com segurança. Se você esquecer sua senha, só precisará fornecer o token novamente.",
+ "password": "Senha",
+ "password-too-short": "Senha muito curta",
+ "info-enter-password": "Para baixar Beat Saber, seu token de login é necessário. Digite a senha anteriormente utilizada para salvar seu token.",
+ "info-disabled-btn-password": "Não foi possível descriptografar o token com essa senha. Tenha certeza que a senha é a mesma utilizada para salvar o token anteriormente.",
+ "enter-oculus-token": "Digite um token Oculus"
+ },
+ "valid-btn": "Validar"
+ },
+ "launch-as-admin": {
+ "title": "Permissões de Administrador",
+ "body": {
+ "info": "Steam está rodando com permissões de administrador. Para comunicar com a Steam, o Beat Saber também precisa ser iniciado como administrador. Caso contrário, Beat Saber pode experiênciar problemas e fechar após iniciar.",
+ "info-2": "Iniciar Beat Saber no modo administrador também irá dar permissões de administrador para os mods instalados. Dessa forma, é recomendado que você reinicie a Steam sem permissões de administrador.",
+ "info-3": "Observe que não é recomendado dar permissões de administrador para a Steam, visto que afeta os mods e os jogos instalados, podendo ser um risco de segurança."
+ },
+ "launch-as-admin": "Iniciar como Administrador",
+ "not-remind-me": "Não me perguntar novamente"
+ },
+ "ask-install-path": {
+ "title": "Pasta de instalação",
+ "choose-folder-description": "Escolha a pasta que irá conter todos os conteúdos baixados pelo BSManager. (versões, mods, mapas, playlists, etc.)",
+ "default": "Padrão",
+ "default-tooltip": "Utiliza sua pasta padrão"
+ },
+ "choose-proton-folder": {
+ "title": "Pasta Proton",
+ "proton-folder-description": "No linux, BSManager precisa do Proton para funcionar. Escolha a pasta de instalação do Proton para continuar.",
+ "proton-folder-placeholder": "Pasta de instalação do Proton Proton",
+ "where-is-proton-installed": "Onde Proton é instalado?"
+ },
+ "bs-version-outdated": {
+ "body": "Essa versão {outdatedVersion} está desatualizada, e alguns mods ou funções podem não funcionar como esperado. Por favor baixe a versão mais recente ({recommendedVersion}) de Beat Saber para aproveitar as últimas novidades e correções."
+ }
+ },
+ "maps": {
+ "map-filter-panel": {
+ "duration": "Duração",
+ "nps": "Notas Por Segundo",
+ "njs": "Velocidade de Aparecimento das Notas",
+ "tags": "Rótulos",
+ "specificities": "Gerais",
+ "requirements": "Requerimentos",
+ "exclude": "Excluir",
+ "leaderboard": "leaderboard"
+ },
+ "map-types": {
+ "accuracy": "Acurácia",
+ "balanced": "Balanceado",
+ "challenge": "Desafios",
+ "dance-style": "dança",
+ "fitness": "fitness",
+ "speed": "velocidade",
+ "tech": "técnica"
+ },
+ "map-styles": {
+ "dance": "dança",
+ "swing": "swing",
+ "nightcore": "nightcore",
+ "folk-acoustic": "folk & acústica",
+ "kids-family": "crianças & familia",
+ "ambient": "ambiente",
+ "funk-disco": "funk & disco",
+ "jazz": "jazz",
+ "soul": "soul",
+ "speedcore": "speedcore",
+ "punk": "punk",
+ "rb": "r&b",
+ "holiday": "festivas",
+ "vocaloid": "vocaloid",
+ "j-rock": "j-rock",
+ "trance": "trance",
+ "drum-and-bass": "bateria & baixo",
+ "comedy-meme": "comedia & memes",
+ "instrumental": "instrumental",
+ "hardcore": "hardcore",
+ "k-pop": "k-pop",
+ "indie": "indie",
+ "techno": "techno",
+ "house": "house",
+ "video-game-soundtrack": "video game",
+ "tv-movie-soundtrack": "TV & film",
+ "alternative": "alternativos",
+ "dubstep": "dubstep",
+ "metal": "metal",
+ "anime": "anime",
+ "hip-hop-rap": "hip hop & rap",
+ "j-pop": "j-pop",
+ "rock": "rock",
+ "pop": "pop",
+ "electronic": "electrônica",
+ "classical-orchestral": "Classica & Orquestras"
+ },
+ "map-specificities": {
+ "automapper": "AI",
+ "curated": "Curadas",
+ "verified": "verificadas",
+ "fullSpread": "full spread"
+ },
+ "map-leaderboard": {
+ "All": "All",
+ "Ranked": "Ranqueada",
+ "BeatLeader": "BeatLeader",
+ "ScoreSaber": "ScoreSaber"
+ },
+ "map-excludes": {
+ "installed": "instaladas"
+ },
+ "difficulties": {
+ "Easy": "fácil",
+ "Normal": "normal",
+ "Hard": "difícil",
+ "Expert": "expert",
+ "ExpertPlus": "expert+"
+ },
+ "map-item": {
+ "by": "Por {songAutor}",
+ "mapped-by": "Mapeado por",
+ "delete": "Deletar",
+ "preview": "Pré-visualização do mapa",
+ "bsr-code": "código BSR",
+ "download": "Baixar mapa",
+ "downloading": "Baixando mapa",
+ "cancel-download": "Cancelar download",
+ "hightlight-difficulty": "Destacar dificuldade"
+ }
+ },
+ "models": {
+ "types": {
+ "singular": {
+ "avatar": "avatar",
+ "saber": "sabre",
+ "platform": "platforma",
+ "bloq": "bloco"
+ },
+ "plural": {
+ "avatar": "avatares",
+ "saber": "sabres",
+ "platform": "platformas",
+ "bloq": "blocos"
+ }
+ },
+ "sorts": {
+ "name": "Nome",
+ "date": "Data",
+ "author": "Autor"
+ },
+ "panel": {
+ "actions": {
+ "search": "Procurar um modelo",
+ "drop-down": {
+ "delete": "Deletar modelos",
+ "export": "Exportar modelos"
+ },
+ "link-models": "Vincular modelos",
+ "unlink-models": "Desvincular modelos"
+ },
+ "grid": {
+ "loading": "Carregando modelos...",
+ "no-models": "Nenhum modelo",
+ "download-models": "Baixar modelos"
+ }
+ },
+ "modals": {
+ "delete-model": {
+ "title": "Deletar o modelo",
+ "desc": "Tem certeza que quer deletar o modelo {modelName}?",
+ "linked-annotation": "Esse modelo será removido de todas as suas versões vinculadas."
+ },
+ "delete-models": {
+ "title": "Deletar modelos",
+ "desc": "Tem certeza que quer deletar {nb} modelos?",
+ "linked-annotation": "Esses modelos serão removidos de todas as suas versões vinculadas."
+ },
+ "download-models": {
+ "search-btn": "Procurar",
+ "search-placeholder": "Procurar um modelo",
+ "search-tips": {
+ "header": {
+ "tag": "Rótulo",
+ "desc": "Descrição"
+ },
+ "author-desc": "Mostrar apenas modelos desse autor específico.",
+ "hash-desc": "Mostrar apenas modelos com essa hash específica.",
+ "tag-desc": "Mostrar apenas modelos com esse rótulo.",
+ "name-desc": "Mostrar apenas modelos com o nome especificado.",
+ "discordid-desc": "Mostrar apenas modelos desse usuário do discord.",
+ "status-desc": "Mostrar apenas modelos com esse status específico. (apenas perfil, e apenas do autor)"
+ },
+ "no-models": "Nenhum modelo encontrado.",
+ "no-internet": "Sem conexão com a internet.",
+ "error-occurred": "Um erro aconteceu, tente novamente"
+ }
+ },
+ "notifications": {
+ "prevent-for-mods": {
+ "title": "Mods necessários",
+ "desc": "Certifique-se de instalar os mods necessários par autilizar esse modelo em Beat Saber",
+ "go-to-mods": "Ir para mods",
+ "not-remind": "Não me lembrar novamente"
+ },
+ "export-success": {
+ "title": "Exportação completa 🎉"
+ }
+ }
+ },
+ "beat-saver": {
+ "maps-sorts": {
+ "Latest": "Mais recente",
+ "Relevance": "Relevância",
+ "Rating": "Avaliação",
+ "Curated": "Curados"
+ }
+ },
+ "auto-update": {
+ "checking": "Verificando atualizações",
+ "downloading": "Baixando atualizações"
+ },
+ "bs-shortcut-launch": {
+ "beat-saber-launching": "Iniciando Beat Saber",
+ "launching": "Iniciando",
+ "open-bsmanager": "Abra BSManager",
+ "status-text": {
+ "init": "Inicializando...",
+ "success": {
+ "BS_LAUNCHING": "Inicializando Beat Saber...",
+ "STEAM_LAUNCHING": "Iniciando Steam...",
+ "STEAM_LAUNCHED": "Steam iniciada com sucesso!",
+ "UNABLE_TO_LAUNCH_STEAM": "Não foi possível iniciar Steam, obrigando Beat Saber a iniciar..."
+ }
+ }
+ },
+ "drop-zone": {
+ "or-browse-files": "Ou navegar pelos arquivos"
+ },
+ "playlist": {
+ "error-playlist-creation-title": "Erro criando playlist",
+ "error-playlist-creation-desc": "Um erro aconteceu enquanto criávamos a playlist.",
+ "playlist-created-title": "Playlist criada",
+ "playlist-created-desc": "A playlist foi criada com sucesso, agora você pode sincronizar seus mapas!",
+ "download-playlist": "Baixar playlist",
+ "synchronize-playlist": "Sincronizar playlist",
+ "synchronize-maps": "Sincronizar maps",
+ "error-playlists-synchronization-title": "Erro ao sincronizar playlists",
+ "error-playlists-synchronization-desc": "Um erro aconteceu enquanto sincronizávamos as playlists.",
+ "playlists-synchronized-title": "Playlists sincronizadas!",
+ "playlists-synchronized-desc": "Playlists e seus mapas foram baixados.",
+ "playlists-export-error-title": "Erro ao exportar playlists",
+ "playlists-export-error-desc": "Um erro aconteceu enquanto exportávamos as playlists.",
+ "playlists-exported-title": "Playlists exportadas!",
+ "playlists-exported-desc": "Playlists foram exportadas com sucesso.",
+ "playlists-with-maps-exported-desc": "Playlists e seus mapas foram exportados com sucesso.",
+ "playlist-delete-error-title": "Erro ao deletar playlist",
+ "playlist-delete-error-desc": "Um erro aconteceu enquanto tentávamos deletar a playlist.",
+ "playlists-deleted-title": "Playlists deletadas!",
+ "playlists-deleted-desc": "Playlists foram deletadas com sucesso.",
+ "edit-playlist": "Editar playlist",
+ "playlist-edit-error-title": "Erro ao editar playlist",
+ "playlist-edit-error-desc": "Um erro aconteceu enquanto editavamos a playlist.",
+ "playlist-edited-title": "Playlist editada!",
+ "playlist-edited-desc": "A playlist foi modificada com sucesso. Agora você pode sincronizar seus mapas!",
+ "playlists-loading": "Carregando playlists...",
+ "no-playlists": "Nenhuma playlists",
+ "download-playlists": "Baixar playlists",
+ "created-by": "Criado por",
+ "stop-download": "Pausar download",
+ "cancel-download": "Cancelar download",
+ "open-file": "Abrir arquivo",
+ "delete-playlist-ask": "Deletar playlist?",
+ "delete-playlists-ask": "Deletar playlists?",
+ "delete-playlist-desc": "Tem certeza que quer deletar a playlist \"{playlistTitle}\"?",
+ "delete-playlists-desc": "Tem certeza que quer deletar {nb} playlists?",
+ "delete-maps": "Deletar mapas",
+ "delete-playlist-maps-tip": "Se habilitado, todos os mapas na playlist serão deletados",
+ "delete-playlists-maps-tip": "Se habilitado, todos os mapas na playlist serão deletados",
+ "export-playlist-ask": "Exportar playlist?",
+ "export-playlists-ask": "Exportar playlists?",
+ "export-playlist-desc": "Tem certeza que quer exportar a playlist \"{playlistTitle}\"?",
+ "export-playlists-desc": "Tem certeza que quer exportar {nb} playlists?",
+ "export-maps": "Exportar mapas",
+ "export-playlist-maps-tip": "Se habilitado, todos os mapas na playlist também serão exportados",
+ "export-playlists-maps-tip": "Se habilitado, todos os mapas na playlist também serão exportados",
+ "export": "Exportar",
+ "need-clone-title": "Aviso",
+ "need-clone-desc-1": "Essa playlist foi baixada de um site externo e contém um vínculo de sincronização.",
+ "need-clone-desc-2": "Para impedir que perca suas alterações durante a sincronização, essa playlist será duplicada e sua vinculação será removida.",
+ "need-clone-desc-3": "Você pode depois, se desejar, deletar a playlist original.",
+ "understood": "Eu entendi",
+ "synchronize-playlist-ask": "Sincronizar playlist?",
+ "synchronize-playlists-ask": "Sincronizar playlists?",
+ "synchronize-playlist-desc": "Tem certeza que quer sincronizar a playlist \"{playlistTitle}\"?",
+ "synchronize-playlists-desc": "Tem certeza que quer sincronizar {nb} playlists?",
+ "synchronize-playlist-tip": "Essa ação atualizará as playlists e baixará mapas que estão faltando; Pode levar vários minutos.",
+ "synchronize": "Sincronizar",
+ "curated": "Curadas",
+ "verified-mapper": "Criador de mapas Verificado",
+ "empty-playlists": "Playlists vazias",
+ "search-playlist": "Procurar por uma playlist",
+ "no-playlists-found": "Nenhuma playlists encontrada",
+ "error-occur-while-loading-playlists": "Um erro aconteceu enquanto carregávamos a playlist",
+ "error-occur-while-loading-playlist": "Um erro aconteceu enquanto carregávamos a playlist",
+ "loading-maps": "Carregando mapas...",
+ "no-maps-found-for-playlist": "Nenhum mapa encontrado para essa playlist",
+ "playlist-contain-no-maps": "Essa playlist não possui mapas",
+ "no-map-installed-for-playlist": "Nenhum mapa instalado para essa playlist",
+ "playlist-is-waiting-to-download": "A playlist está esperando para ser baixada",
+ "download-maps": "Baixar mapas",
+ "download-missing-maps": "Baixar mapas que estão faltando",
+ "playlist-is-downloading": "A playlist está sendo baixada",
+ "some-playlist-maps-are-missing": "Alguns mapas nessa playlist estão faltando",
+ "create-a-playlist": "Criar uma playlist",
+ "synchronize-playlists": "Sincronizar playlists",
+ "export-playlists": "Exportar playlists",
+ "delete-playlists": "Deletar playlists",
+ "choose-image": "Escolher uma imagem",
+ "title": "Título",
+ "playlist-title": "Título da Playlist",
+ "description": "Descrição",
+ "playlist-description": "Descrição da Playlist",
+ "author": "Autor",
+ "playlist-author": "Autor da Playlist",
+ "save": "Salvar",
+ "loading": "Carregando...",
+ "installed": "Instalado",
+ "no-map-found": "Nenhum mapa encontrado",
+ "edit-playlist-shortcuts": "Segure Shift ou Ctrl para selecionar múltiplos mapas",
+ "add-to-playlist": "Adicionar à playlist",
+ "remove-from-playlist": "Remover da playlist",
+ "playlist-is-empty": "A playlist está vazia",
+ "continue": "Continuar",
+ "nb-maps": "Quantidade de mapas",
+ "nb-mappers": "Quantidade de editores de mapa",
+ "duration": "Duração",
+ "nps": "Notas por segundo",
+ "date-picker": {
+ "start-date-end-date": "Date ínicio — Data Fim",
+ "all": "Todos",
+ "last-24h": "Últimas 24hrs",
+ "last-week": "Última semana",
+ "last-month": "Último mês",
+ "3-last-month": "Últimos 3 meses"
+ },
+ "playlists-imported": "Playlists importadas",
+ "all-playlists-have-been-successfully-imported": "Todas as playlists foram importadas com sucesso",
+ "no-playlist-found": "Nenhuma playlist encontrada",
+ "no-playlist-found-in-selected-files": "Nenhuma playlist encontrada nos arquivos selecionados",
+ "some-playlists-not-imported": "Algumas playlists não foram importadas",
+ "some-playlists-have-been-imported": {
+ "INVALID_SOURCE": "Algumas playlists não puderam ser encontradas",
+ "INVALID_PLAYLIST_FILE": "Algumas playlists são inválidas",
+ "CANNOT_PARSE_PLAYLIST": "Algumas playlists não podem ser lidas",
+ "unknown": "Algumas playlists não puderam ser importadas"
+ },
+ "no-playlists-imported": "Nenhuma playlists importada",
+ "no-playlists-imported-errors": {
+ "INVALID_SOURCE": "Playlists não foram encontradas",
+ "INVALID_PLAYLIST_FILE": "Playlists são invalidas",
+ "CANNOT_PARSE_PLAYLIST": "Playlists não podem ser lidas",
+ "unknown": "Nenhuma playlist pode ser importada"
+ }
+ },
+ "dateformat": {
+ "dayNames": [
+ "Dom",
+ "Seg",
+ "Ter",
+ "Qua",
+ "Qui",
+ "Sex",
+ "Sab",
+ "Domingo",
+ "Segunda",
+ "Terça",
+ "Quarta",
+ "Quinta",
+ "Sexta",
+ "Sábado"
+ ],
+ "monthNames": [
+ "Jan",
+ "Fev",
+ "Mar",
+ "Abr",
+ "Maio",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Set",
+ "Out",
+ "Nov",
+ "Dez",
+ "Janeiro",
+ "Fevereiro",
+ "Março",
+ "Abril",
+ "Maio",
+ "Junho",
+ "Julho",
+ "Agosto",
+ "Setembro",
+ "Outubro",
+ "Novembro",
+ "Dezembro"
+ ],
+ "timeNames": [
+ "a",
+ "p",
+ "am",
+ "pm",
+ "A",
+ "P",
+ "AM",
+ "PM"
+ ]
+ }
+}
diff --git a/assets/jsons/translations/ru.json b/assets/jsons/translations/ru.json
index d583e90e..4a4500a1 100644
--- a/assets/jsons/translations/ru.json
+++ b/assets/jsons/translations/ru.json
@@ -28,6 +28,11 @@
"pin": "Закрепить",
"unpin": "Открепить"
},
+ "generic": {
+ "env": {
+ "parse": "Не удалось правильно разобрать строку переменной окружения."
+ }
+ },
"title-bar": {
"outdated": "устаревший"
},
@@ -51,7 +56,7 @@
"outdated-tippy": "Эта версия устарела, и некоторые моды или функции могут работать не так, как ожидалось. Рекомендуется использовать рекомендуемую версию ({recommendedVersion}) Beat Saber, чтобы воспользоваться последними функциями и исправлениями ошибок.",
"advanced-launch": {
"button": "Параметры запуска",
- "placeholder": "Параметры запуска, например: --revert; --nowait"
+ "placeholder": "Параметры запуска, например: KEY=VALUE %command% fpfc"
},
"skipsteam": "Пропустить Steam",
"skipsteam-description": "Предотвращает автоматическое открытие Steam с Beat Saber, включите, если вы используете другую VR-среду, такую как WiVRn или Monado, с которой SteamVR может мешать.",
@@ -148,6 +153,14 @@
"all-mods-already-installed": {
"title": "Моды уже установлены",
"description": "Все выбранные моды уже установлены"
+ },
+ "outdated-mods": {
+ "title": "Устаревший мод",
+ "title-plural": "Устаревшие моды",
+ "description": "Мод {name} устарел. Хотите его обновить?",
+ "description-plural": "В этой версии есть {nb} устаревших модов. Хотите их обновить?",
+ "dont-remind-me": "Не напоминать мне",
+ "update": "Обновить"
}
},
"drop-zone": {
@@ -227,6 +240,7 @@
"es-ES": "Español",
"it-IT": "Italiano",
"de-DE": "Deutsch",
+ "pt-BR": "Português (Brasil)",
"ru-RU": "Русский",
"zh-CN": "简体中文",
"zh-TW": "正體中文",
@@ -239,6 +253,7 @@
"es-ES": "Испанский",
"it-IT": "Итальянец",
"de-DE": "Немецкий",
+ "pt-BR": "португальский (Бразилия)",
"ru-RU": "Русский",
"zh-CN": "Китайский (упрощенный)",
"zh-TW": "Китайский (традиционный)",
diff --git a/assets/jsons/translations/zh-tw.json b/assets/jsons/translations/zh-tw.json
index bec5592d..cacac60a 100644
--- a/assets/jsons/translations/zh-tw.json
+++ b/assets/jsons/translations/zh-tw.json
@@ -28,6 +28,11 @@
"pin": "固定",
"unpin": "取消固定"
},
+ "generic": {
+ "env": {
+ "parse": "無法正確解析環境變數字串。"
+ }
+ },
"title-bar": {
"outdated": "過時"
},
@@ -51,7 +56,7 @@
"outdated-tippy": "此版本已過時,某些模組或功能可能無法按預期運作。建議使用推薦版本的 Beat Saber ({recommendedVersion}),以享受最新功能和修復。",
"advanced-launch": {
"button": "啟動選項",
- "placeholder": "額外啟動參數,例如: --revert; --nowait"
+ "placeholder": "啟動選項,例如: KEY=VALUE %command% fpfc"
},
"skipsteam": "跳過 Steam",
"skipsteam-description": "防止 Steam 與 Beat Saber 自動打開,如果您使用的是其他 VR 執行時,如 WiVRn 或 Monado,SteamVR 可能會干擾,請啟用此選項。",
@@ -148,6 +153,14 @@
"all-mods-already-installed": {
"title": "模組已安裝",
"description": "所有選中的模組已經安裝"
+ },
+ "outdated-mods": {
+ "title": "過時的模組",
+ "title-plural": "過時的模組",
+ "description": "{name} 模組已過時。您想更新嗎?",
+ "description-plural": "此版本有 {nb} 個過時的模組。您想更新它們嗎?",
+ "dont-remind-me": "不要提醒我",
+ "update": "更新"
}
},
"drop-zone": {
@@ -227,6 +240,7 @@
"es-ES": "Español",
"it-IT": "Italiano",
"de-DE": "Deutsch",
+ "pt-BR": "Português (Brasil)",
"ru-RU": "Русский",
"zh-CN": "簡體中文",
"zh-TW": "正體中文",
@@ -239,6 +253,7 @@
"es-ES": "西班牙語",
"it-IT": "義大利語",
"de-DE": "德語",
+ "pt-BR": "葡萄牙語 (巴西)",
"ru-RU": "俄語",
"zh-CN": "簡體中文",
"zh-TW": "正體中文",
diff --git a/assets/jsons/translations/zh.json b/assets/jsons/translations/zh.json
index 93434081..da08ac9b 100644
--- a/assets/jsons/translations/zh.json
+++ b/assets/jsons/translations/zh.json
@@ -28,6 +28,11 @@
"pin": "固定",
"unpin": "取消固定"
},
+ "generic": {
+ "env": {
+ "parse": "无法正确解析环境变量字符串。"
+ }
+ },
"title-bar": {
"outdated": "过时"
},
@@ -51,7 +56,7 @@
"outdated-tippy": "此版本已过时,某些模组或功能可能无法按预期运行。建议使用推荐版本的 Beat Saber ({recommendedVersion}),以享受最新功能和修复。",
"advanced-launch": {
"button": "启动选项",
- "placeholder": "额外启动参数,例如: --revert; --nowait"
+ "placeholder": "启动选项,例如: KEY=VALUE %command% fpfc"
},
"skipsteam": "跳过 Steam",
"skipsteam-description": "防止 Steam 与 Beat Saber 自动打开,如果您使用的是其他 VR 运行时,如 WiVRn 或 Monado,SteamVR 可能会干扰,请启用此选项。",
@@ -148,6 +153,14 @@
"all-mods-already-installed": {
"title": "模组已安装",
"description": "所有选中的模组已经安装"
+ },
+ "outdated-mods": {
+ "title": "过时的模组",
+ "title-plural": "过时的模组",
+ "description": "{name} 模组已过时。您想更新吗?",
+ "description-plural": "此版本有 {nb} 个过时的模组。您想更新它们吗?",
+ "dont-remind-me": "不要提醒我",
+ "update": "更新"
}
},
"drop-zone": {
@@ -239,6 +252,7 @@
"es-ES": "西班牙语",
"it-IT": "意大利语",
"de-DE": "德语",
+ "pt-BR": "葡萄牙语 (巴西)",
"ru-RU": "俄语",
"zh-CN": "简体中文",
"zh-TW": "正体中文",
diff --git a/build/after-install.sh b/build/after-install.sh
index a9e1aedd..f2ec23df 100644
--- a/build/after-install.sh
+++ b/build/after-install.sh
@@ -1,6 +1,2 @@
-# Add write permissions to anybody so that this can be sync with the
-# github's bs-versions.json when starting bsmanager
-/usr/bin/chmod +002 /opt/BSManager/resources/assets/jsons/bs-versions.json
-
# https://github.com/electron/electron/issues/42510
/usr/bin/chmod 4755 /opt/BSManager/chrome-sandbox
diff --git a/docs/wiki/Home.md b/docs/wiki/Home.md
index a0fbf9a7..737d8fce 100644
--- a/docs/wiki/Home.md
+++ b/docs/wiki/Home.md
@@ -49,7 +49,6 @@ Guidance on fixing errors during setup or version updates
- __🐧Linux__:
- [Missing Icons in Game]([Linux]-Missing-Icons-in-Game)
- - [Permission Denied on "bs-versions.json"]([Linux]-Permission-Denied-on-bs-version.json)
- [[Deb] The SUID Sandbox Helper Binary Was Found]([Linux]-[deb]-The-SUID-Sandbox-Helper-Binary-Was-Found)
- [[Flatpak] Steam Beat Saber Version Not Showing / Proton Not Detected]([Linux]-[Flatpak]-Steam-Beat-Saber-Version-Not-Showing-Proton-Not-Detected)
- [[Flatpak] Changing Installation Folder]([Linux]-[Flatpak]-Changing-Installation-Folder)
diff --git a/docs/wiki/Troubleshoots/Installation-Problems/Linux/[Linux]-Permission-Denied-on-bs-version.json/[Linux]-Permission-Denied-on-bs-version.json.md b/docs/wiki/Troubleshoots/Installation-Problems/Linux/[Linux]-Permission-Denied-on-bs-version.json/[Linux]-Permission-Denied-on-bs-version.json.md
deleted file mode 100644
index 81e9af5d..00000000
--- a/docs/wiki/Troubleshoots/Installation-Problems/Linux/[Linux]-Permission-Denied-on-bs-version.json/[Linux]-Permission-Denied-on-bs-version.json.md
+++ /dev/null
@@ -1,13 +0,0 @@
-
-Unhandled Exception UnhandledRejection Error: EACCES: permission denied, open '/opt/BSManager/resources/assets/jsons/bs-versions.json'
-
-
-To fix this issue, the current user must have write permissions to the "bs-versions.json". To correct the permissions do command below:
-
-```bash
-chmod +002 /opt/BSManager/resources/assets/jsons/bs-versions.json
-
-# or
-
-chown $(whoami) /opt/BSManager/resources/assets/jsons/bs-versions.json
-```
diff --git a/docs/wiki/_Sidebar.md b/docs/wiki/_Sidebar.md
index d114fbc6..1c5eddab 100644
--- a/docs/wiki/_Sidebar.md
+++ b/docs/wiki/_Sidebar.md
@@ -71,7 +71,6 @@
🐧 Linux