From f4fb6cfafd2f2a6448484880d2b767a376f8f93d Mon Sep 17 00:00:00 2001 From: HighError Date: Thu, 30 Jan 2025 15:14:05 +0200 Subject: [PATCH 01/21] Added some strings and icon --- assets/jsons/translations/de.json | 16 +- assets/jsons/translations/en.json | 63 +- assets/jsons/translations/es.json | 59 +- assets/jsons/translations/fr.json | 34 +- assets/jsons/translations/it.json | 173 +-- assets/jsons/translations/ja.json | 16 +- assets/jsons/translations/ko.json | 60 +- assets/jsons/translations/pt-br.json | 63 +- assets/jsons/translations/ru.json | 16 +- assets/jsons/translations/uk.json | 1274 +++++++++++++++++ assets/jsons/translations/zh-tw.json | 4 +- assets/jsons/translations/zh.json | 16 +- package-lock.json | 4 +- .../components/svgs/bsm-icon.component.tsx | 6 +- .../flags/ukraine-icon.component copy.tsx | 12 + .../config/default-configuration.config.ts | 2 +- 16 files changed, 1441 insertions(+), 377 deletions(-) create mode 100644 assets/jsons/translations/uk.json create mode 100644 src/renderer/components/svgs/flags/ukraine-icon.component copy.tsx diff --git a/assets/jsons/translations/de.json b/assets/jsons/translations/de.json index c7eadb2d..4ae6518e 100644 --- a/assets/jsons/translations/de.json +++ b/assets/jsons/translations/de.json @@ -246,6 +246,7 @@ "zh-TW": "正體中文", "ja-JP": "日本語", "ko-KR": "한국어", + "uk-UA": "Українська", "translated": { "en-EN": "Englisch, Vereinigtes Königreich", "en-US": "Englisch, USA", @@ -258,7 +259,8 @@ "zh-CN": "Vereinfachtes Chinesisch", "zh-TW": "Traditionelles Chinesisch", "ja-JP": "Japanisch", - "ko-KR": "Koreanisch" + "ko-KR": "Koreanisch", + "uk-UA": "Ukrainisch" } } }, @@ -946,7 +948,7 @@ "maps": { "map-filter-panel": { "duration": "Länge", - "nps" : "Noten pro Sekunde", + "nps": "Noten pro Sekunde", "njs": "Notensprunggeschwindigkeit", "tags": "Stichwörter", "specificities": "Allgemein", @@ -1027,11 +1029,11 @@ "by": "Von {songAutor}", "mapped-by": "Gemapped von", "delete": "Löschen", - "preview" : "Kartenvorschau", - "bsr-code" : "BSR Code", - "download" : "Karte herunterladen", - "downloading" :"Karte wird heruntergeladen", - "cancel-download" : "Download abbrechen", + "preview": "Kartenvorschau", + "bsr-code": "BSR Code", + "download": "Karte herunterladen", + "downloading": "Karte wird heruntergeladen", + "cancel-download": "Download abbrechen", "hightlight-difficulty": "Schwierigkeit hervorheben" } }, diff --git a/assets/jsons/translations/en.json b/assets/jsons/translations/en.json index 3054223e..cdfb4cb7 100644 --- a/assets/jsons/translations/en.json +++ b/assets/jsons/translations/en.json @@ -246,6 +246,7 @@ "zh-TW": "正體中文", "ja-JP": "日本語", "ko-KR": "한국어", + "uk-UA": "Українська", "translated": { "en-EN": "English, United Kingdom", "en-US": "English, USA", @@ -258,7 +259,8 @@ "zh-CN": "Chinese (Simplified)", "zh-TW": "Chinese (Traditional)", "ja-JP": "Japanese", - "ko-KR": "Korean" + "ko-KR": "Korean", + "uk-UA": "Ukrainian" } } }, @@ -820,7 +822,7 @@ } } }, - "link-contents":{ + "link-contents": { "title": "Link {contentType}", "p-1": "Linking {contentType} allows sharing {contentType} between all versions with this feature enabled. Once linked, this version will benefit from shared {contentType}.", "p-2": "In order to enjoy the linking feature, all your {itemsHtml} will be moved to the {sharedHtml} folder. After that, a symbolic link pointing to the shared {contentType} folder will replace your original {contentType} folder.", @@ -829,7 +831,7 @@ "i-need-help": "I need help", "valid-btn": "Link {contentType}" }, - "unlink-contents":{ + "unlink-contents": { "title": "Unlink {contentType}", "p-1": "Be careful, unlinking {contentType} will disable the use of shared {contentType} for this version, until it is reenabled.", "p-2": "In order to unlink your maps, the symbolic link pointing to the {sharedHtml} will be removed. After that, all maps in the shared folder will be copied to the {itemsHtml} folder of your Beat Saber version.", @@ -1265,57 +1267,8 @@ } }, "dateformat": { - "dayNames": [ - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat", - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ], - "monthNames": [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "June", - "Jul", - "Aug", - "Sept", - "Oct", - "Nov", - "Dec", - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ], - "timeNames": [ - "a", - "p", - "am", - "pm", - "A", - "P", - "AM", - "PM" - ] + "dayNames": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + "monthNames": ["Jan", "Feb", "Mar", "Apr", "May", "June", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + "timeNames": ["a", "p", "am", "pm", "A", "P", "AM", "PM"] } } diff --git a/assets/jsons/translations/es.json b/assets/jsons/translations/es.json index c7681628..202a7577 100644 --- a/assets/jsons/translations/es.json +++ b/assets/jsons/translations/es.json @@ -246,6 +246,7 @@ "zh-TW": "正體中文", "ja-JP": "日本語", "ko-KR": "한국어", + "uk-UA": "Українська", "translated": { "en-EN": "Inglés, Reino Unido", "en-US": "Inglés, Estados Unidos", @@ -258,7 +259,8 @@ "zh-CN": "Chino simplificado", "zh-TW": "Chino tradicional", "ja-JP": "Japonés", - "ko-KR": "Coreano" + "ko-KR": "Coreano", + "uk-UA": "Ucraniano" } } }, @@ -1270,57 +1272,8 @@ } }, "dateformat": { - "dayNames": [ - "Dom", - "Lun", - "Mar", - "Mié", - "Jue", - "Vie", - "Sáb", - "Domingo", - "Lunes", - "Martes", - "Miércoles", - "Jueves", - "Viernes", - "Sábado" - ], - "monthNames": [ - "Ene", - "Feb", - "Mar", - "Abr", - "May", - "Jun", - "Jul", - "Ago", - "Sep", - "Oct", - "Nov", - "Dic", - "Enero", - "Febrero", - "Marzo", - "Abril", - "Mayo", - "Junio", - "Julio", - "Agosto", - "Septiembre", - "Octubre", - "Noviembre", - "Diciembre" - ], - "timeNames": [ - "a", - "p", - "am", - "pm", - "A", - "P", - "AM", - "PM" - ] + "dayNames": ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"], + "monthNames": ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], + "timeNames": ["a", "p", "am", "pm", "A", "P", "AM", "PM"] } } diff --git a/assets/jsons/translations/fr.json b/assets/jsons/translations/fr.json index d065f6d5..e7458889 100644 --- a/assets/jsons/translations/fr.json +++ b/assets/jsons/translations/fr.json @@ -246,6 +246,7 @@ "zh-TW": "正體中文", "ja-JP": "日本語", "ko-KR": "한국어", + "uk-UA": "Українська", "translated": { "en-EN": "Anglais, Royaume-Uni", "en-US": "Anglais, États-Unis", @@ -258,7 +259,8 @@ "zh-CN": "Chinois simplifié", "zh-TW": "Chinois traditionnel", "ja-JP": "Japonais", - "ko-KR": "Coréen" + "ko-KR": "Coréen", + "uk-UA": "Ukrainien" } } }, @@ -664,7 +666,6 @@ "title": "L'ajout du dossier partagé a échoué", "msg": "Vous ne pouvez pas ajouter \"{folder}\" aux dossiers partagés." } - }, "create-launch-shortcut": { "success": { @@ -947,7 +948,7 @@ "maps": { "map-filter-panel": { "duration": "Durée", - "nps" : "Notes Par Seconde", + "nps": "Notes Par Seconde", "njs": "Vitesse de saut des notes", "tags": "tags", "specificities": "général", @@ -1028,12 +1029,12 @@ "by": "Par {songAutor}", "mapped-by": "mappée par", "delete": "Supprimer", - "preview" : "Aperçu de la carte", - "bsr-code" : "Code BSR", - "download" : "Télécharger la carte", - "downloading" :"Téléchargement de la carte", - "cancel-download" : "Annuler le téléchargement", - "hightlight-difficulty" : "Surligner la difficulté" + "preview": "Aperçu de la carte", + "bsr-code": "Code BSR", + "download": "Télécharger la carte", + "downloading": "Téléchargement de la carte", + "cancel-download": "Annuler le téléchargement", + "hightlight-difficulty": "Surligner la difficulté" } }, "models": { @@ -1210,15 +1211,15 @@ "no-playlists-found": "Aucune playlists trouvées", "error-occur-while-loading-playlists": "Une erreur est survenue lors du chargement des playlists", "error-occur-while-loading-playlist": "Une erreur est survenue lors du chargement de la playlist", - "loading-maps":"Chargement des maps...", - "no-maps-found-for-playlist":"Aucune map trouvée pour cette playlist", - "playlist-contain-no-maps":"La playlist ne contient aucune map", - "no-map-installed-for-playlist":"Aucune map installée pour cette playlist", - "playlist-is-waiting-to-download":"La playlist est en attente de téléchargment", + "loading-maps": "Chargement des maps...", + "no-maps-found-for-playlist": "Aucune map trouvée pour cette playlist", + "playlist-contain-no-maps": "La playlist ne contient aucune map", + "no-map-installed-for-playlist": "Aucune map installée pour cette playlist", + "playlist-is-waiting-to-download": "La playlist est en attente de téléchargment", "download-maps": "Télécharger les maps", "download-missing-maps": "Télécharger les maps manquantes", - "playlist-is-downloading":"La playlist est en cours de téléchargement", - "some-playlist-maps-are-missing":"Certaines maps de cette playlist sont manquantes", + "playlist-is-downloading": "La playlist est en cours de téléchargement", + "some-playlist-maps-are-missing": "Certaines maps de cette playlist sont manquantes", "create-a-playlist": "Créer une playlist", "synchronize-playlists": "Synchroniser les playlists", "export-playlists": "Exporter les playlists", @@ -1269,7 +1270,6 @@ "CANNOT_PARSE_PLAYLIST": "Les playlists ne sont pas lisibles", "unknown": "Aucune playlist n'a pu être importée" } - }, "dateformat": { "dayNames": ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"], diff --git a/assets/jsons/translations/it.json b/assets/jsons/translations/it.json index 0bb01e70..33a81291 100644 --- a/assets/jsons/translations/it.json +++ b/assets/jsons/translations/it.json @@ -246,6 +246,7 @@ "zh-TW": "正體中文", "ja-JP": "日本語", "ko-KR": "한국어", + "uk-UA": "Українська", "translated": { "en-EN": "Inglese, Regno Unito", "en-US": "Inglese, Stati Uniti d'America", @@ -258,7 +259,8 @@ "zh-CN": "Cinese (Semplificato)", "zh-TW": "Cinese (Tradizionale)", "ja-JP": "Giapponese", - "ko-KR": "Coreano" + "ko-KR": "Coreano", + "uk-UA": "Ucraino" } } }, @@ -820,7 +822,7 @@ } } }, - "link-contents":{ + "link-contents": { "title": "Collega {contentType}", "p-1": "Collegare {contentType} consente di condividere {contentType} tra tutte le versioni con questa funzione attiva. Quando collegate, questa versione avrà il beneficio della condivisione di {contentType}.", "p-2": "Per usufruire della funzione di collegamento, tutti i tuoi {itemsHtml} saranno spostati nella cartella {sharedHtml}. Successivamente, un collegamento simbolico che punta alla cartella condivisa {contentType} sostituirà la tua cartella originale {contentType}.", @@ -829,7 +831,7 @@ "i-need-help": "Mi serve aiuto", "valid-btn": "Collega {contentType}" }, - "unlink-contents":{ + "unlink-contents": { "title": "Scollega {contentType}", "p-1": "Attenzione, scollegare {contentType} disabiliterà l'uso di {contentType} condivisi per questa versione, fino a quando non verrà riabilitato.", "p-2": "Per scollegare le tue mappe, il collegamento simbolico che punta alla {sharedHtml} verrà rimosso. Dopodiché, tutte le mappe nella cartella condivisa verranno copiate nella cartella {itemsHtml} della tua versione di Beat Saber.", @@ -878,65 +880,65 @@ "connect-to-meta": { "title": "Connettiti a Meta", "body": { - "token-needed": "Il tuo token di connessione Meta è necessario per scaricare Beat Saber.", - "need-cookie-enabled": "Accedendo a Meta, si aprirà una finestra di login e potrai quindi avviare il processo di login. Assicurati di accettare i cookie, altrimenti potremmo non essere in grado di recuperare il tuo token per avviare il download.", - "enter-token-manually": "Inserisci manualmente il mio token di login", - "enter-token-manually-tooltip": "Questo ti permetterà di inserire il tuo token di accesso senza passare per il login di Meta." + "token-needed": "Il tuo token di connessione Meta è necessario per scaricare Beat Saber.", + "need-cookie-enabled": "Accedendo a Meta, si aprirà una finestra di login e potrai quindi avviare il processo di login. Assicurati di accettare i cookie, altrimenti potremmo non essere in grado di recuperare il tuo token per avviare il download.", + "enter-token-manually": "Inserisci manualmente il mio token di login", + "enter-token-manually-tooltip": "Questo ti permetterà di inserire il tuo token di accesso senza passare per il login di Meta." + }, + "stay": "Ricordami", + "connect-to-meta": "Connettiti a Meta" }, - "stay": "Ricordami", - "connect-to-meta": "Connettiti a Meta" - }, "enable-oculus-sideloaded-apps": { - "title": "Abilita Sideloading", - "info-1": "Per avviare Beat Saber, è necessario abilitare la possibilità di eseguire app sideloaded. BSManager richiederà i diritti di amministratore per abilitare automaticamente questa funzione.", - "info-2": "La funzione di sideloading consente di avviare giochi situati al di fuori della cartella della libreria Oculus.", - "info-3": "Dopo che il sideloading è stato attivato, la funzione rimarrà attiva e non ti verrà più chiesto di abilitarla.", - "i-want-to-do-it-myself": "Voglio farlo da solo", - "understood": "Ho capito" - }, - "enter-meta-token": { - "title": "Token Oculus", - "body": { - "info-enter-token": "Per scaricare Beat Saber, è richiesto il tuo token di accesso Oculus.", - "how-obtain-token": "Come posso ottenere il mio token Oculus?", - "oculus-token": "Token Oculus", - "token-is-invalid": "Il token non è valido.", - "save-my-token": "Salva il mio token", - "have-token-saved": "Ho già un token salvato", - "save-token-info": "Questo salverà il tuo token per un uso più facile. Dovrai creare una password per criptare il tuo token a scopo di archiviazione. Se dimentichi la tua password, dovrai semplicemente fornire di nuovo il tuo token.", - "password": "Password", - "password-too-short": "Password troppo corta", - "info-enter-password": "Per scaricare Beat Saber, è richiesto il tuo token di accesso Oculus. Inserisci la password usata per salvare il tuo token Oculus.", - "info-disabled-btn-password": "Il token decriptato con la password fornita non è valido. Assicurati che la password sia la stessa usata per salvare il token.", - "enter-oculus-token": "Inserisci un token Oculus" + "title": "Abilita Sideloading", + "info-1": "Per avviare Beat Saber, è necessario abilitare la possibilità di eseguire app sideloaded. BSManager richiederà i diritti di amministratore per abilitare automaticamente questa funzione.", + "info-2": "La funzione di sideloading consente di avviare giochi situati al di fuori della cartella della libreria Oculus.", + "info-3": "Dopo che il sideloading è stato attivato, la funzione rimarrà attiva e non ti verrà più chiesto di abilitarla.", + "i-want-to-do-it-myself": "Voglio farlo da solo", + "understood": "Ho capito" }, - "valid-btn": "Valida" - }, - "launch-as-admin": { - "title": "Permessi di Amministratore", - "body": { - "info": "Steam è stato rilevato come in esecuzione con permessi di amministratore. Per comunicare con Steam, Beat Saber deve essere avviato anche come amministratore. Altrimenti, Beat Saber potrebbe riscontrare problemi e chiudersi dopo l'avvio.", - "info-2": "Avviare Beat Saber in modalità amministratore darà anche diritti di amministratore alle mod installate. Pertanto, è consigliato riavviare Steam senza permessi di amministratore.", - "info-3": "Si sconsiglia di dare diritti di amministratore a Steam, poiché questo influisce sui giochi e le mod installate, presentando un rischio per la sicurezza." + "enter-meta-token": { + "title": "Token Oculus", + "body": { + "info-enter-token": "Per scaricare Beat Saber, è richiesto il tuo token di accesso Oculus.", + "how-obtain-token": "Come posso ottenere il mio token Oculus?", + "oculus-token": "Token Oculus", + "token-is-invalid": "Il token non è valido.", + "save-my-token": "Salva il mio token", + "have-token-saved": "Ho già un token salvato", + "save-token-info": "Questo salverà il tuo token per un uso più facile. Dovrai creare una password per criptare il tuo token a scopo di archiviazione. Se dimentichi la tua password, dovrai semplicemente fornire di nuovo il tuo token.", + "password": "Password", + "password-too-short": "Password troppo corta", + "info-enter-password": "Per scaricare Beat Saber, è richiesto il tuo token di accesso Oculus. Inserisci la password usata per salvare il tuo token Oculus.", + "info-disabled-btn-password": "Il token decriptato con la password fornita non è valido. Assicurati che la password sia la stessa usata per salvare il token.", + "enter-oculus-token": "Inserisci un token Oculus" + }, + "valid-btn": "Valida" }, - "launch-as-admin": "Avvia come Amministratore", - "not-remind-me": "Non ricordarmelo" - }, - "ask-install-path": { - "title": "Cartella di installazione", - "choose-folder-description": "Scegli la cartella che conterrà tutti i contenuti scaricati da BSManager. (versioni, mod, mappe, playlist, ecc.)", - "default": "Predefinito", - "default-tooltip": "Predefinito nella tua cartella home" - }, - "choose-proton-folder": { - "title": "Cartella di Proton", - "proton-folder-description": "Su Linux, BSManager richiede Proton per funzionare. Scegli la cartella di installazione di Proton per continuare.", - "proton-folder-placeholder": "Cartella di installazione di Proton", - "where-is-proton-installed": "Dove è installato Proton?" - }, - "bs-version-outdated": { - "body": "La versione {outdatedVersion} è obsoleta, e alcune mod o funzioni potrebbero non funzionare più come previsto. Per favore scarica l'ultima versione raccomandata ({recommendedVersion}) di Beat Saber per godere delle ultime funzioni e bugfix." - } + "launch-as-admin": { + "title": "Permessi di Amministratore", + "body": { + "info": "Steam è stato rilevato come in esecuzione con permessi di amministratore. Per comunicare con Steam, Beat Saber deve essere avviato anche come amministratore. Altrimenti, Beat Saber potrebbe riscontrare problemi e chiudersi dopo l'avvio.", + "info-2": "Avviare Beat Saber in modalità amministratore darà anche diritti di amministratore alle mod installate. Pertanto, è consigliato riavviare Steam senza permessi di amministratore.", + "info-3": "Si sconsiglia di dare diritti di amministratore a Steam, poiché questo influisce sui giochi e le mod installate, presentando un rischio per la sicurezza." + }, + "launch-as-admin": "Avvia come Amministratore", + "not-remind-me": "Non ricordarmelo" + }, + "ask-install-path": { + "title": "Cartella di installazione", + "choose-folder-description": "Scegli la cartella che conterrà tutti i contenuti scaricati da BSManager. (versioni, mod, mappe, playlist, ecc.)", + "default": "Predefinito", + "default-tooltip": "Predefinito nella tua cartella home" + }, + "choose-proton-folder": { + "title": "Cartella di Proton", + "proton-folder-description": "Su Linux, BSManager richiede Proton per funzionare. Scegli la cartella di installazione di Proton per continuare.", + "proton-folder-placeholder": "Cartella di installazione di Proton", + "where-is-proton-installed": "Dove è installato Proton?" + }, + "bs-version-outdated": { + "body": "La versione {outdatedVersion} è obsoleta, e alcune mod o funzioni potrebbero non funzionare più come previsto. Per favore scarica l'ultima versione raccomandata ({recommendedVersion}) di Beat Saber per godere delle ultime funzioni e bugfix." + } }, "maps": { "map-filter-panel": { @@ -1266,57 +1268,8 @@ } }, "dateformat": { - "dayNames": [ - "Dom", - "Lun", - "Mar", - "Mer", - "Gio", - "Ven", - "Sab", - "Domenica", - "Lunedì", - "Martedì", - "Mercoledì", - "Giovedì", - "Venerdì", - "Sabato" - ], - "monthNames": [ - "Gen", - "Feb", - "Mar", - "Apr", - "Mag", - "Giu", - "Lug", - "Ago", - "Set", - "Ott", - "Nov", - "Dic", - "Gennaio", - "Febbraio", - "Marzo", - "Aprile", - "Maggio", - "Giugno", - "Luglio", - "Augosto", - "Settembre", - "Ottobre", - "Novembre", - "Dicembre" - ], - "timeNames": [ - "a", - "p", - "am", - "pm", - "A", - "P", - "AM", - "PM" - ] + "dayNames": ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"], + "monthNames": ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic", "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Augosto", "Settembre", "Ottobre", "Novembre", "Dicembre"], + "timeNames": ["a", "p", "am", "pm", "A", "P", "AM", "PM"] } } diff --git a/assets/jsons/translations/ja.json b/assets/jsons/translations/ja.json index 32e8c7ed..2364060a 100644 --- a/assets/jsons/translations/ja.json +++ b/assets/jsons/translations/ja.json @@ -246,6 +246,7 @@ "zh-TW": "正體中文", "ja-JP": "日本語", "ko-KR": "한국어", + "uk-UA": "Українська", "translated": { "en-EN": "イギリス英語", "en-US": "アメリカ英語", @@ -258,7 +259,8 @@ "zh-CN": "簡体字中国", "zh-TW": "繁体字中国", "ja-JP": "日本語", - "ko-KR": "韓国語" + "ko-KR": "韓国語", + "uk-UA": "ウクライナ語" } } }, @@ -946,7 +948,7 @@ "maps": { "map-filter-panel": { "duration": "尺", - "nps" : "秒間ノート数", + "nps": "秒間ノート数", "njs": "ノートジャンプ速度", "tags": "タグ", "specificities": "一般", @@ -1027,11 +1029,11 @@ "by": "By {songAutor}", "mapped-by": "作成者 ", "delete": "削除", - "preview" : "マッププレビュー", - "bsr-code" : "BSRコード", - "download" : "マップをダウンロード", - "downloading" :"マップをダウンロード中", - "cancel-download" : "ダウンロードをキャンセル", + "preview": "マッププレビュー", + "bsr-code": "BSRコード", + "download": "マップをダウンロード", + "downloading": "マップをダウンロード中", + "cancel-download": "ダウンロードをキャンセル", "hightlight-difficulty": "難易度をハイライト" } }, diff --git a/assets/jsons/translations/ko.json b/assets/jsons/translations/ko.json index 035fefed..9db92f87 100644 --- a/assets/jsons/translations/ko.json +++ b/assets/jsons/translations/ko.json @@ -162,7 +162,6 @@ "dont-remind-me": "다시는 알리지 않기", "update": "업데이트" } - }, "drop-zone": { "text": "모드를 가져오기", @@ -247,6 +246,7 @@ "zh-TW": "正體中文", "ja-JP": "日本語", "ko-KR": "한국어", + "uk-UA": "Українська", "translated": { "en-EN": "영어(영국)", "en-US": "영어(미국)", @@ -259,7 +259,8 @@ "zh-CN": "중국어 (간체)", "zh-TW": "중국어 (번체)", "ja-JP": "일본어", - "ko-KR": "한국어" + "ko-KR": "한국어", + "uk-UA": "우크라이나어" } } }, @@ -1265,57 +1266,8 @@ } }, "dateformat": { - "dayNames": [ - "일", - "월", - "화", - "수", - "목", - "금", - "토", - "일요일", - "월요일", - "화요일", - "수요일", - "목요일", - "금요일", - "토요일" - ], - "monthNames": [ - "1월", - "2월", - "3월", - "4월", - "5월", - "6월", - "7월", - "8월", - "9월", - "10월", - "11월", - "12월", - "1월", - "2월", - "3월", - "4월", - "5월", - "6월", - "7월", - "8월", - "9월", - "10월", - "11월", - "12월" - ], - "timeNames": [ - "오전", - "오후", - "오전", - "오후", - "오전", - "오후", - "오전", - "오후" - ] + "dayNames": ["일", "월", "화", "수", "목", "금", "토", "일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"], + "monthNames": ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월", "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"], + "timeNames": ["오전", "오후", "오전", "오후", "오전", "오후", "오전", "오후"] } } diff --git a/assets/jsons/translations/pt-br.json b/assets/jsons/translations/pt-br.json index db3447f9..b352bce4 100644 --- a/assets/jsons/translations/pt-br.json +++ b/assets/jsons/translations/pt-br.json @@ -246,6 +246,7 @@ "zh-TW": "正體中文", "ja-JP": "日本語", "ko-KR": "한국어", + "uk-UA": "Українська", "translated": { "en-EN": "Inglês, Reino Unido", "en-US": "Inglês, Estados Unidos", @@ -258,7 +259,8 @@ "zh-CN": "Chinês (Simplificado)", "zh-TW": "Chinês (Tradicional)", "ja-JP": "Japonês", - "ko-KR": "Coreano" + "ko-KR": "Coreano", + "uk-UA": "Ucraniano" } } }, @@ -820,7 +822,7 @@ } } }, - "link-contents":{ + "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}.", @@ -829,7 +831,7 @@ "i-need-help": "Eu preciso de ajuda", "valid-btn": "Link {contentType}" }, - "unlink-contents":{ + "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.", @@ -1265,57 +1267,8 @@ } }, "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" - ] + "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 4a4500a1..2123fe93 100644 --- a/assets/jsons/translations/ru.json +++ b/assets/jsons/translations/ru.json @@ -246,6 +246,7 @@ "zh-TW": "正體中文", "ja-JP": "日本語", "ko-KR": "한국어", + "uk-UA": "Українська", "translated": { "en-EN": "Английский, Великобритания", "en-US": "Английский, США", @@ -258,7 +259,8 @@ "zh-CN": "Китайский (упрощенный)", "zh-TW": "Китайский (традиционный)", "ja-JP": "Японский", - "ko-KR": "Корейский" + "ko-KR": "Корейский", + "uk-UA": "Украинский" } } }, @@ -945,7 +947,7 @@ "maps": { "map-filter-panel": { "duration": "Длительность", - "nps" : "Нот в Секунду", + "nps": "Нот в Секунду", "njs": "Скорость прыжка нот", "tags": "тэги", "specificities": "основное", @@ -1026,11 +1028,11 @@ "by": "От {songAutor}", "mapped-by": "автор карты ", "delete": "Удалить", - "preview" : "Предпросмотр карты", - "bsr-code" : "Код BSR", - "download" : "Скачать карту", - "downloading" :"Загрузка карты", - "cancel-download" : "Отменить загрузку", + "preview": "Предпросмотр карты", + "bsr-code": "Код BSR", + "download": "Скачать карту", + "downloading": "Загрузка карты", + "cancel-download": "Отменить загрузку", "hightlight-difficulty": "Выделить сложность" } }, diff --git a/assets/jsons/translations/uk.json b/assets/jsons/translations/uk.json new file mode 100644 index 00000000..11d48291 --- /dev/null +++ b/assets/jsons/translations/uk.json @@ -0,0 +1,1274 @@ +{ + "misc": { + "download": "Завантажити", + "add": "Додати", + "verify": "Перевірити", + "launch": "Запустити", + "mods": "Моди", + "maps": "Карти", + "playlists": "Прейлисти", + "models": "Моделі", + "avatars": "Аватари", + "sabers": "Шпаги", + "platforms": "Платформи", + "blocks": "Блоки", + "cancel": "Скасувати", + "delete": "Видалити", + "accept": "Прийняти", + "refuse": "Відмовитись", + "apply": "Застосувати", + "copy": "Скопіювати", + "copied": "Скопійовано!", + "confirm": "Підтвердити", + "choose-folder": "Змінити папку", + "unknown": "Невідома помилка ¯\\_(ツ)_/¯", + "warning": "Увага", + "continue": "Продовжити", + "shared": "Спільне", + "pin": "Закріпти", + "unpin": "Відкріпити" + }, + "generic": { + "env": { + "parse": "Не вдалось розібрати рядок змінної оточення" + } + }, + "title-bar": { + "outdated": "застарілий" + }, + "nav-bar": { + "add-version": "Додати версію", + "settings": "Налаштування", + "shared": { + "text": "Спільне", + "tooltip": "Спільний контент" + } + }, + "pages": { + "version-viewer": { + "launch-mods": { + "oculus": "Режим Oculus", + "oculus-description": "Якщо ви використовуєте Beat Saber через Steam, це дозволяє використовувати Oculus VR в обхід SteamVR, для потенційного приросту продуктивності. Це не обов'язково для Oculus.", + "desktop": "Режим FPFC", + "desktop-description": "Режим літаючих контроллерів від першого лиця дозволяє використовувати меню за допомогою WASD і мишки. Це облегшує тестування модів, так як гра запускається без використання шолому VR!", + "debug": "Режим відладки", + "debug-description": "Включає вікно логів для IPA. В вікні будуть відображатись логи модів.", + "outdated-tippy": "Ця версія застаріла і деякі моди і/або функції можуть працювати некоректно. Рекомендуємо використовувати версію ({recommendedVersion}), щоб скористатись останніми функціями і виправленнями.", + "advanced-launch": { + "button": "Параметри запуску", + "placeholder": "Параметри запуску, наприклад: KEY=VALUE %command% fpfc" + }, + "skipsteam": "Пропустити Steam", + "skipsteam-description": "Запобігає автоматичному відкриттю Steam. Включіть це, якщо ви використовуєте інше серидовище VR (WiVRn/Monado), з яким Steam праює некоректно.", + "map-editor": "Редактор карт", + "map-editor-description": "Запускає офіційний редактор карт Beat Saber замість гри.", + "proton-logs": "Протонний журнал", + "proton-logs-description": "Увімкнути запис журналів протонів для цієї установки Beat Saber до \"{versionPath}\"." + }, + "maps": { + "search-bar": { + "search-placeholder": "Пошук серед карт", + "filters-btn": "Фільтри", + "dropdown": { + "export-maps": "Експорт карт", + "delete-maps": "Видалити карти", + "delete-duplicate-maps": "Видалити дублікати" + } + }, + "tabs": { + "maps": { + "actions": { + "drop-down": { + "browse-maps": "Перегляд карт", + "import-maps": "Імпорт карт" + }, + "link-maps": { + "tooltips": { + "link": "З'єднати карти", + "unlink": "Роз'єднати карти" + } + } + }, + "empty-maps": { + "text": "Карт немає", + "button": "Завантажити карти" + }, + "drop-zone": { + "text": "Імпортувати свої карти", + "subtext": "Пересуньте свої zip-файли сюди, щоб імпортувати карти" + }, + "sort": { + "name": "Назва", + "song-author": "Автор пісні", + "map-author": "Авто карти", + "bpm": "BPM", + "duration": "Довжина", + "likes": "Лайки", + "date-uploaded": "Дата завантаження" + } + }, + "playlists": { + "drop-down": { + "browse-playlists": "Переглнянути плейлист", + "create-a-playlist": "Створити плейлист", + "import-playlists": "Імпортувати плейлист" + }, + "drop-zone": { + "text": "Імпортуйте свої плейлисти", + "subtext": "Скиньте свої \".bplist\" або \".json\" файли сюди, щоб імпортувати їх" + }, + "sort": { + "title": "Назва", + "author": "Автор", + "number-of-maps": "Кількість карт", + "duration": "Довжина", + "notes-per-second": "NPS" + } + } + } + }, + "mods": { + "loading-mods": "Завантаження модів...", + "no-internet": "Немає інтернету", + "mods-not-available": "Для цієї версії Beat Saber поки що немає модів", + "buttons": { + "more-infos": "Більше інформації", + "install-or-update": "Встановити або оновити", + "reinstall-all": "Перевстановити всі" + }, + "mods-grid": { + "header-bar": { + "name": "Назва", + "installed": "Встановлено", + "latest": "Остання", + "description": "Опис", + "dropdown": { + "import-mods": "Імпортувати моди", + "uninstall-all": "Видалити всі", + "unselect-all": "Зняти виділення з всіх" + } + } + }, + "notifications": { + "all-mods-already-installed": { + "title": "Моди вже встановлені", + "description": "Всі вибрані моди вже встановлені" + }, + "outdated-mods": { + "title": "Застарілий мод", + "title-plural": "Застарілі моди", + "description": "{name} застарілий. Хочете оновити його?", + "description-plural": "Ця версія має {nb} застаріл(-ий/-і/-их) мод(-и/-ів). Ви хочете оновити їх?", + "dont-remind-me": "Не нагадувати", + "update": "Оновити" + } + }, + "drop-zone": { + "text": "Імпортувати свої моди", + "subtext": "Завантажте свої \".zip\" або \".dll\" файли сюди, щоб імпортувати їх" + } + }, + "dropdown": { + "open-folder": "Відкрийте папку", + "verify-files": "Перевірити файли", + "clone": "Клонувати", + "edit": "Змінити", + "uninstall": "Видалити", + "create-shortcut": "Створити ярлик", + "shared-folders": "Спільні папки" + } + }, + "available-versions": { + "title": "Завантажити версію", + "steam-release": "Сторінка релізу", + "dropdown": { + "refresh": "Оновити версії", + "import-version": "Іспортувати версію" + }, + "recommended": "рекомендована", + "recommended-tooltip": "Найбільш модифікована версія" + }, + "settings": { + "steam-and-oculus": { + "title": "Steam & Oculus", + "description": "Вийшовши з системи, ви зможете змінити обліковий запис під час наступного завантаження Beat Saber.", + "logout": "Вийти", + "logout-success": "Успішний вихід з системи", + "download-platform": { + "title": "Платформа за замовчуванням", + "desc": "Виберіть платформу за замовчуванням, яку ви хочете використовувати для завантаження версій Beat Saber.", + "always-ask": "Завжди запитувати" + } + }, + "appearance": { + "title": "Зовнішній вигляд", + "description": "Виберіть два основні кольори BSManager.", + "reset": "Скинути", + "sub-title": "Тема", + "themes": { + "dark": "Темна", + "light": "Світла", + "os": "Синхронізувати з комп'ютером" + } + }, + "installation-folder": { + "title": "Тека встановлення", + "description": "Змініть теку, яка міститиме весь контент, завантажений BSManager." + }, + "proton-folder": { + "title": "Тека Proton", + "description": "Змініть теку на шлях до Proton. (напр. Proton - Experimental)", + "errors": { + "title": "Не вдалося встановити теку Proton", + "invalid-folder": "Некоректний шлях до Proton" + } + }, + "additional-content": { + "title": "Додатковий контент", + "description": "Додатковий контент, що дозволяє налаштувати Beat Saber!", + "deep-links": { + "sub-title": "OneClick-встановлення" + } + }, + "language": { + "title": "Мова", + "description": "Виберіть мову.", + "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": "한국어", + "uk-UA": "Українська", + "translated": { + "en-EN": "Англійська, Велика Британія", + "en-US": "Англійська, США", + "fr-FR": "Французька", + "es-ES": "Іспанська", + "it-IT": "Італійська", + "de-DE": "Німецька", + "pt-BR": "Португальська (Бразилія)", + "ru-RU": "Російська", + "zh-CN": "Китайська (спрощена)", + "zh-TW": "Китайська (традиційна)", + "ja-JP": "Японська", + "ko-KR": "Корейська", + "uk-UA": "Українська" + } + } + }, + "patreon": { + "title": "Підтримайте BSManager 💖", + "description": "Підтримайте проєкт і допоможіть нам продовжувати вдосконалювати BSManager.", + "buttons": { + "support": "Підтримати BSManager 🥰", + "supporters": "Підписники 👀" + }, + "view": { + "no-supporters": "Ще немає підписників", + "sponsors": "Спонсори", + "supporters": "Підписники" + } + }, + "discord": { + "description": "Приєднуйтесь до спільноти BSManager, підписавшись на наші соціальні мережі!" + }, + "contribution": { + "description": "Запропонуйте нові функції або повідомте про помилку, щоб допомогти покращити BSManager!", + "buttons": { + "request-features": "Запропонувати нову функцію", + "report-bug": "Повідомити про помилку", + "open-logs": "Відкрити логи" + } + }, + "advanced": { + "title": "Додатково", + "description": "Додаткові налаштування для BSManager.", + "hardware-acceleration": { + "title": "Апаратне прискорення", + "description": "Увімкніть апаратне прискорення, щоб використовувати ваш GPU та покращити продуктивність BSManager. Вимкніть цю опцію, якщо у вас спостерігаються просідання кадрів.", + "modal": { + "title": "Потрібен перезапуск", + "body": "Зміна налаштувань апаратного прискорення призведе до виходу та повторного запуску BSManager. Ви впевнені, що хочете це зробити?", + "confirm-btn": "Так, я впевнений" + }, + "error-notification": { + "message": "Сталася помилка, неможливо вимкнути апаратне прискорення." + } + }, + "use-symlinks": { + "title": "Використовувати символьні посилання", + "description": "Використовувати символьні посилання замість з'єднань для прив’язки папок. Увімкніть цю опцію лише за необхідності.", + "modal": { + "title": "Дозволи для символьних посилань", + "body": "Для створення символьних посилань BSManager потребуватиме прав адміністратора або увімкненого режиму розробника у вашій системі. Ви впевнені, що хочете продовжити?", + "confirm-btn": "Так, я впевнений" + }, + "error-notification": { + "message": "Сталася помилка, неможливо змінити налаштування символьних посилань." + } + }, + "use-system-proxy": { + "title": "Використовувати системний проксі", + "description": "BSManager виконуватиме мережеві запити через ваш системний проксі.", + "error-notification": { + "message": "Сталася помилка, неможливо змінити налаштування системного проксі." + } + } + } + } + }, + "notifications": { + "types": { + "error": "🚨 Error", + "warning": "⚠️ Warning", + "success": "🎉 Success" + }, + "common": { + "msg": { + "error-occurred": "An error has occurred" + } + }, + "shared": { + "errors": { + "titles": { + "operation-running": "Operation running", + "no-internet": "No internet", + "file-not-supported": "File not supported" + }, + "msg": { + "operation-running": "Wait for the current operation to finish, then try again.", + "no-internet": "Check your connection and try again.", + "file-not-supported": "Only {types} files are supported." + } + } + }, + "bs-download": { + "success": { + "titles": { + "download-success": "Download complete", + "verification-finished": "Verification complete" + } + }, + "steam-download": { + "warnings": { + "msg": { + "ManifestChecksum": "The previously downloaded manifest does not match the new 🤔", + "ConnectionTimeout": "Your internet connection seems unstable 🥶", + "ConnectionLost": "The connection has been lost, try again...", + "ConnectionError": "Unable to connect to Steam, try again...", + "Unknown": "Something strange has happened 🤔 Your connection is probably unstable." + } + }, + "errors": { + "msg": { + "401": "Steam doesn't seem to want to let us download Beat Saber 😢", + "404": "Unable to contact Steam servers.", + "ExeNotFoundWindows": "\"DepotDownloader.exe\" is missing. Please check if the executable is quarantined by your anti-virus.", + "ExeNotFoundLinux": "\"DepotDownloader\" executable is missing.", + "Password": "Password is invalid.", + "InvalidCredentials": "Invalid login credentials, unapproved connection, or too many login attempts.", + "NoManifest": "No manifest was found", + "DirectoryCreate": "Unable to install the necessary folders.", + "NotAvailableApp": "Are you trying to download Beat Saber when you don't have it? 🤣", + "DepotNotFound": "Unable to download Beat Saber 😥 try again later 😕", + "NotCompleted": "The download could not complete ¯\\_(ツ)_/¯", + "InvalidManifest": "Unable to download Beat Saber 😥 try again later 😕", + "NoValidKey": "Unable to download Beat Saber 😥 try again later 😕", + "NoManifestCode": "Unable to download Beat Saber 😥 try again later 😕", + "Unknown": "An unknown error occurred ¯\\_(ツ)_/¯", + "NoServer": "Unable to contact Steam servers.", + "NotAllowed": "Apparently you are not allowed to download Beat Saber 🥱", + "ConnectionTimeout": "Cannot connect to Steam 😕", + "SteamLib": "If you have this error, report the bug on GitHub with the logs pls.", + "ConnectionError": "Unable to connect to Steam after 10 tries 🤯", + "LicenceError": "Unable to get the list of licenses.", + "RateLimitExceeded": "You've tried too many times, wait a while and try again later.", + "TokenRejected": "Your login token has been rejected 😕 Please try again.", + "AccessDenied": "Access to Steam has been denied." + } + } + }, + "oculus-download": { + "errors": { + "msg": { + "DOWNLOAD_MANIFEST_FAILED": "Unable to download the manifest for this version; your login token may be invalid.", + "MANIFEST_FILE_NOT_FOUND": "Unable to find the manifest for this version.", + "PARSE_MANIFEST_FILE_FAILED": "An error occurred while reading the manifest.", + "ALREADY_DOWNLOADING": "A version is already being downloaded.", + "UNABLE_TO_GET_MANIFEST": "Unable to obtain the manifest required for download.", + "VERIFY_INTEGRITY_FAILED": "An error occurred during file verification.", + "SOME_FILES_FAILED_TO_DOWNLOAD": "Some files failed to download.", + "META_LOGIN_TIMED_OUT": "The login token took too long to retrieve.", + "META_LOGIN_WINDOW_CLOSED_BY_USER": "The Meta login window was closed.", + "NO_META_AUTH_TOKEN": "Unable to retrieve the Meta login token required for download.", + "UNKNOWN_ERROR": "An unknown error occurred." + } + } + } + }, + "bs-import-version": { + "success": { + "start-import": { + "title": "Import in progress 👌", + "desc": "The import may take several minutes depending on your configuration." + }, + "imported": { + "title": "Imported version 🎉" + } + }, + "errors": { + "import-error": { + "desc": "Check that the selected folder is a Beat Saber installation." + } + } + }, + "settings": { + "move-folder": { + "success": { + "titles": { + "transfer-started": "Transfer in progress", + "transfer-finished": "Transfer complete" + }, + "descs": { + "transfer-started": "The transfer has started and may take several minutes depending on your configuration." + } + }, + "errors": { + "titles": { + "transfer-failed": "Transfer failed 😕" + }, + "descs": { + "COPY_TO_SUBPATH": "The destination folder cannot be a subfolder of the source folder.", + "restore-linked-folders": "An error occurred while restoring shared folders. You can still manually restore them via the 'Shared Folders' menu on the versions page." + } + } + }, + "steam": { + "success": { + "titles": { + "logout": "Disconnected from Steam." + } + } + }, + "additional-content": { + "deep-link": { + "select-all": "Select all", + "activation": { + "success": { + "title": "OneClick activated!", + "description": "OneClick installations have been activated." + }, + "error": { + "description": "Unable to activate OneClick installations." + } + }, + "deactivation": { + "success": { + "title": "OneClick deactivated!", + "description": "OneClick installations have been deactivated." + }, + "error": { + "description": "An unknown error occurred." + } + }, + "check-all-enabled": { + "title": "OneClick Disabled", + "description": "One or more OneClick installations are disabled. Go to settings to enable them.", + "actions": { + "settings": "Settings", + "not-remind": "Don't remind me" + } + } + } + } + }, + "bs-launch": { + "success": { + "titles": { + "BS_LAUNCHING": "Launching...🚀", + "STEAM_LAUNCHING": "Steam is launching!", + "SKIPPING_STEAM_LAUNCH": "Skipping Steam launch" + }, + "msg": { + "BS_LAUNCHING": "Don't forget to warm up 😉", + "STEAM_LAUNCHING": "Beat Saber will automatically launch after Steam.", + "SKIPPING_STEAM_LAUNCH": "I hope you know what you're doing :)" + } + }, + "errors": { + "titles": { + "UNKNOWN_ERROR": "Unable to launch", + "STEAM_NOT_RUNNING": "Steam is not running", + "OCULUS_NOT_RUNNING": "Oculus is not running", + "BS_ALREADY_RUNNING": "Beat Saber already running", + "EXE_NOT_FINDED": "Missing files", + "PROTON_NOT_SET": "Proton folder not set", + "PROTON_NOT_FOUND": "Proton binary not found", + "EXIT": "Abrupt stop", + "OCULUS_LIB_NOT_FOUND": "Oculus library not found", + "ORIGINAL_OCULUS_NOT_INSTALLED": "Original Oculus version not found" + }, + "msg": { + "UNKNOWN_ERROR": "An unknown error has occurred.", + "STEAM_NOT_RUNNING": "Steam must be running to launch BeatSaber.", + "OCULUS_NOT_RUNNING": "Oculus must be running to launch BeatSaber.", + "BS_ALREADY_RUNNING": "Close BeatSaber before launching it again.", + "EXE_NOT_FINDED": "Some files seem to be missing, try to verify the files.", + "EXIT": "BeatSaber stopped abruptly, tries to check the files.", + "OCULUS_LIB_NOT_FOUND": "Check that the Oculus application is properly installed, and that the libraries are correctly defined in Oculus.", + "PROTON_NOT_SET": "Set the Proton path in settings.", + "PROTON_NOT_FOUND": "Set the Proton path in settings.", + "ORIGINAL_OCULUS_NOT_INSTALLED": "Beat Saber must be installed from the Oculus app before opening." + }, + "actions": { + "STEAM_NOT_RUNNING": "Launch Steam" + } + } + }, + "steam": { + "steam-launching": { + "title": "Steam is launching!", + "description": "Beat Saber will automatically launch after Steam." + } + }, + "custom-version": { + "errors": { + "titles": { + "CantEditSteam": "Unable to edit", + "CantRename": "Renaming impossible", + "VersionAlreadExist": "This version already exists", + "CantClone": "Cloning impossible", + "UnknownError": "An unknown error occurred" + }, + "msg": { + "CantEditSteam": "You can't edit the Steam version. You can clone it though." + } + }, + "success": { + "titles": { + "CloningFinished": "Cloning complete 🎉" + } + } + }, + "mods": { + "install-mods": { + "titles": { + "success": "Mods installed 🎉", + "warning": "Mods installed 🤔" + }, + "msg": { + "success": "All mods have been installed.", + "warning": "One or more mods could not be installed.", + "errors": { + "no-mods": "No mods to install.", + "cannot-install-bsipa": "BSIPA installation failed 😨" + } + } + }, + "uninstall-mod": { + "titles": { + "success": "Mod uninstalled 🎉" + }, + "msg": { + "errors": { + "no-mods": "This mod isn't installed 😑" + } + } + }, + "uninstall-all-mods": { + "titles": { + "success": "Mods uninstalled 🎉" + }, + "msg": { + "success": "All mods have been uninstalled.", + "errors": { + "no-mods": "No mods are installed in this version 😑" + } + } + }, + "import-mod": { + "titles": { + "success": "Mods import completed", + "error": "An error occurred during the mods import" + }, + "msgs": { + "success": "Mods successfully imported.", + "some-success": "Some mods were successfully imported.", + "no-dlls": "The file(s) do not contain any \"dll\" files." + } + } + }, + "maps": { + "one-click-install": { + "success": "Map installation complete", + "error": "An error occurred while installing the map" + }, + "no-duplicates-maps": { + "title": "No Duplicates", + "msg": "No maps were deleted" + }, + "duplicates-maps-deleted": { + "title": "Duplicates Deleted", + "msg": "Duplicates were deleted" + }, + "import-map": { + "titles": { + "success": "Maps import completed", + "error": "An error occurred during the maps import" + }, + "msgs": { + "success": "Maps successfully imported.", + "some-success": "Some maps were successfully imported.", + "only-accept-zip": "Only zip files are supported.", + "invalid-zip": "The zip file(s) do not contain any maps.", + "unknown": "An unknown error occurred." + } + } + }, + "playlists": { + "one-click-install": { + "success": "Playlist installation complete", + "error": "An error occurred while installing the playlist" + } + }, + "models": { + "one-click-install": { + "success": "Model installation complete", + "error": "An error occurred while installing the model" + } + }, + "shared-folder": { + "info": { + "userdata-backup-created": { + "title": "Backup created", + "msg": "Sharing the 'UserData' folder can generate errors, in case of problems unlink the folder to restore the backup" + } + }, + "linking-error": { + "title": "Error while linking folder", + "msg": { + "EPERM": "BSManager does not have the necessary permissions to link the folder.", + "EACCES": "BSManager does not have the necessary permissions to link the folder.", + "ENOSPC": "The disk is full, make some space and try again.", + "LinkingNotSupported": "Folder linking is not supported on this file system.", + "UNKNOWN_ERROR": "An unknown error has occurred while linking the folder." + } + }, + "adding-error": { + "title": "Adding shared folder failed", + "msg": "You can't add \"{folder}\" to shared folders." + } + }, + "create-launch-shortcut": { + "success": { + "title": "Shortcut created", + "msg": "The shortcut has been created on the desktop.", + "msg-steam": "The shortcut has been created in the Steam library." + }, + "error": { + "msg": "An error occurred while creating the shortcut." + } + }, + "bs-version-oudated": { + "title": "Version Outdated", + "msg": "This Beat Saber version is outdated, use the recommended version to enjoy the latest features and bugfixes", + "actions": { + "do-not-remind": "Do not remind me", + "ok": "Ok" + } + } + }, + "modals": { + "misc": { + "remember-my-choice": "Remember my choice" + }, + "choose-store": { + "title": "Which platform?", + "body": "Select the platform from which you wish to download Beat Saber.", + "set-in-settings": "Set the default platform in settings" + }, + "guard": { + "title": "Steam Guard", + "inputs": { + "guard-code": { + "label": "Guard Code", + "placeholder": "Enter your Guard code" + } + }, + "buttons": { + "submit": "Login" + } + }, + "steam-login": { + "title": "Steam Login", + "inputs": { + "username": { + "label": "Sign in with account name", + "placeholder": "Enter your account name" + }, + "password": { + "label": "Password", + "placeholder": "Enter your password", + "max-length-warning": "The password exceeds 64 characters! If the password is invalid, try to enter only its first 64 characters." + }, + "qr": { + "label": "Or with a QR code", + "note": { + "use-the": "Use the ", + "steam-mobile-app": "Steam Mobile App", + "to-connect-with-qr": "to sign in via QR code." + } + }, + "stay": "Remember me" + }, + "why-credentials": "Why are my credentials necessary?", + "need-help-to-connect": "I need help to access my account!", + "buttons": { + "submit": "Sign in" + } + }, + "steam-auth-approve": { + "title": "Waiting for confirmation", + "protected-by-mobile-auth": "Account protected by mobile authenticator.", + "use-steam-app-to-approve": "Use the Steam mobile app to confirm the connection...", + "not-access-to-steam-app": "I don't have access to the Steam mobile app" + }, + "steam-credentials": { + "title": "Steam Credentials", + "p-1": "Your Steam credentials are only required to download versions of Beat Saber, we use DepotDownloader to achieve this which requires your Steam credentials to verify that you own the game within your library before allowing you to retrieve the game files, your credentials are not stored or saved and are passed directly to DepotDownloader. However, if you don't want to do that, you can follow this tutorial instead: ", + "p-2": "Afterwards you can click on the gear icon in the top right corner and select \"Import a version\", then you can select the folder where Beat Saber was downloaded to. (If you followed the tutorial, you will have the right location)" + }, + "bs-import-version": { + "title": "Import a version", + "description": "Imports a version of Beat Saber to use with BSManager. This will copy the selected Beat Saber installation folder to the BSManager versions folder.", + "oculus-version": "Oculus Version", + "oculus-version-tooltip": "Check if it's an Oculus version", + "buttons": { + "submit": "Import a version" + } + }, + "bs-uninstall": { + "title": "Uninstall", + "description": "Are you sure you want to uninstall Beat Saber {version}? You will have to download it again to play it.", + "buttons": { + "submit": "Uninstall" + } + }, + "install-folder": { + "title": "Installation folder", + "description": "Changing the default installation folder will result in moving all installed data to the new folder.", + "buttons": { + "submit": "Choose folder" + } + }, + "edit-version": { + "title": "Edit the version", + "buttons": { + "submit": "Edit" + } + }, + "clone-version": { + "title": "Clone version", + "description": "Cloning the version allows you to separate additional Beat Saber content between two versions.", + "inputs": { + "name": { + "label": "Name", + "placeholder": "Version name" + }, + "color": { + "label": "Color" + } + }, + "buttons": { + "submit": "Clone" + } + }, + "uninstall-mod": { + "title": "Uninstall", + "description": "Are you sure you want to uninstall {mod}? It could cause other installed mods to malfunction.", + "description-bsipa": "Are you sure you want to uninstall BSIPA? After that all installed mods will not work anymore." + }, + "uninstall-all-mods": { + "title": "Uninstalling mods", + "description": "Are you sure you want to uninstall all the mods from version {version}? This operation cannot be undone." + }, + "maps-actions": { + "delete-maps": { + "title": { + "single": "Delete this map?", + "multiple": "Delete maps?" + }, + "desc": { + "single": "Are you sure you want to delete the map {name}?", + "multiple": "Are you sure you want to delete all {nb} maps?" + }, + "info": { + "desc": { + "single": "This map is part of the shared maps", + "multiple": "These maps are part of the shared maps" + }, + "title": { + "single": "This map will also be removed from versions using shared maps", + "multiple": "These maps will also be removed from versions using shared maps" + } + } + } + }, + "link-contents": { + "title": "Link {contentType}", + "p-1": "Linking {contentType} allows sharing {contentType} between all versions with this feature enabled. Once linked, this version will benefit from shared {contentType}.", + "p-2": "In order to enjoy the linking feature, all your {itemsHtml} will be moved to the {sharedHtml} folder. After that, a symbolic link pointing to the shared {contentType} folder will replace your original {contentType} folder.", + "warning": "Please note that any changes affecting {contentType} will also affect all versions with this feature enabled.", + "what-is-a-symbolic-link": "What is a symbolic link?", + "i-need-help": "I need help", + "valid-btn": "Link {contentType}" + }, + "unlink-contents": { + "title": "Unlink {contentType}", + "p-1": "Be careful, unlinking {contentType} will disable the use of shared {contentType} for this version, until it is reenabled.", + "p-2": "In order to unlink your maps, the symbolic link pointing to the {sharedHtml} will be removed. After that, all maps in the shared folder will be copied to the {itemsHtml} folder of your Beat Saber version.", + "do-not-copy-contents": "Do not copy {contentType}", + "do-not-copy-contents-tip": "If enabled, {contentType} in the shared folder will not be copied to your Beat Saber version. As a result, no {contentType} will remain in your Beat Saber version after unlinking.", + "valid-btn": "Unlink {contentType}" + }, + "download-maps": { + "search-btn": "Search", + "loading-maps": "Loading maps...", + "no-maps-found": "No maps found", + "no-internet": "No internet" + }, + "mods-disclaimer": { + "title": "disclaimer", + "p-1": "By choosing to use mods, you understand that:", + "li-1": "You may experience problems that don't exist in the vanilla game. 99.9% of bugs, crashes, and lag are due to mods.", + "li-2": "Mods are subject to being broken by updates and that's normal - be patient and respectful when this happens, as modders are volunteers with real lives.", + "li-3": "Beat Games aren't purposefully trying to break mods. They wish to work on the codebase and sometimes this breaks mods, but they are not out to kill mods.", + "p-2": "Do not attack the game developers for issues related to mods, and vice versa - modders and game developers are two separate groups. Just don't be a jerk ok." + }, + "shared-folders": { + "title": "Shared Folders", + "description": "Link Beat Saber folders to synchronize their contents with shared folders in other versions. Note that deleting content will also be shared.", + "buttons": { + "add-folder": "Add Folder", + "link-folder": "Link Folder", + "unlink-folder": "Unlink Folder", + "link-all": "Link all", + "remove-from-the-list": "Remove from the list" + } + }, + "adding-shared-folder": { + "title": "Adding Shared Folder", + "description": "You might experience issues when linking the \"{folder}\" folder. Are you sure you want to add it?" + }, + "create-launch-shortcut": { + "title": "Create a shortcut", + "desc": "Creating a shortcut will allow you to start Beat Saber with the chosen options without going through BSManager.", + "launch-options": "Launch options", + "advanced-launch": "Advanced launch", + "valid-btn": "Create the shortcut", + "create-steam-shortcut": "Create a Steam shortcut", + "steam-shortcut-tippy": "If enabled, instead of creating a shortcut on the desktop, it will be created in Steam." + }, + "connect-to-meta": { + "title": "Connect to Meta", + "body": { + "token-needed": "Your Meta connection token is required to download Beat Saber.", + "need-cookie-enabled": "By logging into Meta, a login window will open and you can then start the login process. Please ensure to accept cookies, otherwise, we might not be able to retrieve your token to start the download.", + "enter-token-manually": "Enter my login token manually", + "enter-token-manually-tooltip": "This will allow you to enter your login token without going through Meta login." + }, + "stay": "Remember me", + "connect-to-meta": "Connect to Meta" + }, + "enable-oculus-sideloaded-apps": { + "title": "Enable Sideloading", + "info-1": "In order to launch Beat Saber, the ability to run sideloaded apps must be enabled. BSManager will request administrator rights to enable this feature automatically.", + "info-2": "The sideloaded apps feature allows launching games located outside your Oculus library folder.", + "info-3": "After sideloading is activated, the feature will remain active, and you will no longer be prompted to enable it.", + "i-want-to-do-it-myself": "I want to do it myself", + "understood": "Understood" + }, + "enter-meta-token": { + "title": "Oculus Token", + "body": { + "info-enter-token": "To download Beat Saber, your Oculus login token is required.", + "how-obtain-token": "How do I obtain my Oculus Token?", + "oculus-token": "Oculus Token", + "token-is-invalid": "The Token is invalid.", + "save-my-token": "Save my token", + "have-token-saved": "I already have a token saved", + "save-token-info": "This will save your token for easier reuse. You will need to create a password to encrypt your token for storage purposes. If you ever forget your password, you just need to provide your token again.", + "password": "Password", + "password-too-short": "Password too short", + "info-enter-password": "To download Beat Saber, your Oculus login token is required. Enter the password used to save your Oculus token.", + "info-disabled-btn-password": "The token decrypted with the provided password is invalid. Make sure the password is the same as the one used to save the token.", + "enter-oculus-token": "Enter an Oculus token" + }, + "valid-btn": "Validate" + }, + "launch-as-admin": { + "title": "Administrator Permissions", + "body": { + "info": "Steam has been detected as running with administrator permissions. To communicate with Steam, Beat Saber must also be launched as an administrator. Otherwise, Beat Saber might experience problems and close after launching.", + "info-2": "Launching Beat Saber in administrator mode will also give administrator rights to the installed mods. Therefore, it is recommended to restart Steam without administrator permissions.", + "info-3": "Note that it is advised against giving administrator rights to Steam, as this affects the installed games and mods, presenting a security risk." + }, + "launch-as-admin": "Launch as Administrator", + "not-remind-me": "Do not remind me" + }, + "ask-install-path": { + "title": "Installation folder", + "choose-folder-description": "Choose the folder that will contain all the content downloaded by BSManager. (versions, mods, maps, playlists, etc.)", + "default": "Default", + "default-tooltip": "Defaults to your home folder" + }, + "choose-proton-folder": { + "title": "Proton Folder", + "proton-folder-description": "On Linux, BSManager requires Proton to work. Choose the Proton installation folder to continue.", + "proton-folder-placeholder": "Proton installation folder", + "where-is-proton-installed": "Where is Proton installed?" + }, + "bs-version-outdated": { + "body": "The version {outdatedVersion} is outdated, and some mods or features may no longer work as expected. Please download the latest recommended version ({recommendedVersion}) of Beat Saber to enjoy the latest features and bugfixes." + } + }, + "maps": { + "map-filter-panel": { + "duration": "Duration", + "nps": "Notes Per Second", + "njs": "Note Jump Speed", + "tags": "tags", + "specificities": "general", + "requirements": "requirements", + "exclude": "exclude", + "leaderboard": "leaderboard" + }, + "map-types": { + "accuracy": "accuracy", + "balanced": "balanced", + "challenge": "challenge", + "dance-style": "dance", + "fitness": "fitness", + "speed": "speed", + "tech": "tech" + }, + "map-styles": { + "dance": "dance", + "swing": "swing", + "nightcore": "nightcore", + "folk-acoustic": "folk & acoustic", + "kids-family": "kids & family", + "ambient": "ambient", + "funk-disco": "funk & disco", + "jazz": "jazz", + "soul": "soul", + "speedcore": "speedcore", + "punk": "punk", + "rb": "r&b", + "holiday": "holiday", + "vocaloid": "vocaloid", + "j-rock": "j-rock", + "trance": "trance", + "drum-and-bass": "drum & bass", + "comedy-meme": "comedy & meme", + "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": "alternative", + "dubstep": "dubstep", + "metal": "metal", + "anime": "anime", + "hip-hop-rap": "hip hop & rap", + "j-pop": "j-pop", + "rock": "rock", + "pop": "pop", + "electronic": "electronic", + "classical-orchestral": "Classical & Orchestral" + }, + "map-specificities": { + "automapper": "AI", + "curated": "curated", + "verified": "verified", + "fullSpread": "full spread" + }, + "map-leaderboard": { + "All": "All", + "Ranked": "Ranked", + "BeatLeader": "BeatLeader", + "ScoreSaber": "ScoreSaber" + }, + "map-excludes": { + "installed": "installed" + }, + "difficulties": { + "Easy": "easy", + "Normal": "normal", + "Hard": "hard", + "Expert": "expert", + "ExpertPlus": "expert+" + }, + "map-item": { + "by": "By {songAutor}", + "mapped-by": "mapped by", + "delete": "Delete", + "preview": "Preview map", + "bsr-code": "BSR code", + "download": "Download map", + "downloading": "Downloading map", + "cancel-download": "Cancel download", + "hightlight-difficulty": "Highlight difficulty" + } + }, + "models": { + "types": { + "singular": { + "avatar": "avatar", + "saber": "saber", + "platform": "platform", + "bloq": "block" + }, + "plural": { + "avatar": "avatars", + "saber": "sabers", + "platform": "platforms", + "bloq": "blocks" + } + }, + "sorts": { + "name": "Name", + "date": "Date", + "author": "Author" + }, + "panel": { + "actions": { + "search": "Search a model", + "drop-down": { + "delete": "Delete models", + "export": "Export models" + }, + "link-models": "Link models", + "unlink-models": "Unlink models" + }, + "grid": { + "loading": "Loading models...", + "no-models": "No models", + "download-models": "Download models" + } + }, + "modals": { + "delete-model": { + "title": "Delete the model", + "desc": "Are you sure you want to delete the model {modelName}?", + "linked-annotation": "This model will be removed from all linked versions." + }, + "delete-models": { + "title": "Delete models", + "desc": "Are you sure you want to delete the {nb} models?", + "linked-annotation": "These models will be removed from all linked versions." + }, + "download-models": { + "search-btn": "Search", + "search-placeholder": "Search a model", + "search-tips": { + "header": { + "tag": "Tag", + "desc": "Description" + }, + "author-desc": "Show only models from the specified author.", + "hash-desc": "Show only models with the specified hash.", + "tag-desc": "Show only models with the specified tag.", + "name-desc": "Show only models with the specified name.", + "discordid-desc": "Show only models from the specified discord user.", + "status-desc": "Show only models with the specified status. (profile only, and only for the author)" + }, + "no-models": "No models found.", + "no-internet": "No internet connection.", + "error-occurred": "An error occurred, try again later." + } + }, + "notifications": { + "prevent-for-mods": { + "title": "Required mods", + "desc": "Make sure you've installed the necessary mods to use models in Beat Saber", + "go-to-mods": "Go to mods", + "not-remind": "Don't remind me" + }, + "export-success": { + "title": "Export completed 🎉" + } + } + }, + "beat-saver": { + "maps-sorts": { + "Latest": "Latest", + "Relevance": "Relevance", + "Rating": "Rating", + "Curated": "Curated" + } + }, + "auto-update": { + "checking": "Checking for updates", + "downloading": "Downloading updates" + }, + "bs-shortcut-launch": { + "beat-saber-launching": "Launching Beat Saber", + "launching": "Launching", + "open-bsmanager": "Open BSManager", + "status-text": { + "init": "Initializing...", + "success": { + "BS_LAUNCHING": "Launching Beat Saber...", + "STEAM_LAUNCHING": "Launching Steam...", + "STEAM_LAUNCHED": "Steam successfully launched!", + "UNABLE_TO_LAUNCH_STEAM": "Unable to launch Steam, forcing Beat Saber launch..." + } + } + }, + "drop-zone": { + "or-browse-files": "Or browse files" + }, + "playlist": { + "error-playlist-creation-title": "Error creating playlist", + "error-playlist-creation-desc": "An error occurred while creating the playlist.", + "playlist-created-title": "Playlist created", + "playlist-created-desc": "The playlist has been successfully created. You can now sync its maps!", + "download-playlist": "Download playlist", + "synchronize-playlist": "Synchronize playlist", + "synchronize-maps": "Synchronize maps", + "error-playlists-synchronization-title": "Error synchronizing playlists", + "error-playlists-synchronization-desc": "An error occurred while synchronizing playlists.", + "playlists-synchronized-title": "Playlists synchronized!", + "playlists-synchronized-desc": "Playlists and their maps have been downloaded.", + "playlists-export-error-title": "Error exporting playlists", + "playlists-export-error-desc": "An error occurred while exporting playlists.", + "playlists-exported-title": "Playlists exported!", + "playlists-exported-desc": "Playlists have been successfully exported.", + "playlists-with-maps-exported-desc": "Playlists and their maps have been successfully exported.", + "playlist-delete-error-title": "Error deleting playlist", + "playlist-delete-error-desc": "An error occurred while deleting the playlist.", + "playlists-deleted-title": "Playlists deleted!", + "playlists-deleted-desc": "Playlists have been successfully deleted.", + "edit-playlist": "Edit playlist", + "playlist-edit-error-title": "Error editing playlist", + "playlist-edit-error-desc": "An error occurred while editing the playlist.", + "playlist-edited-title": "Playlist edited!", + "playlist-edited-desc": "The playlist has been successfully modified. You can now sync its maps!", + "playlists-loading": "Loading playlists...", + "no-playlists": "No playlists", + "download-playlists": "Download playlists", + "created-by": "Created by", + "stop-download": "Stop download", + "cancel-download": "Cancel download", + "open-file": "Open file", + "delete-playlist-ask": "Delete playlist?", + "delete-playlists-ask": "Delete playlists?", + "delete-playlist-desc": "Are you sure you want to delete the playlist \"{playlistTitle}\"?", + "delete-playlists-desc": "Are you sure you want to delete {nb} playlists?", + "delete-maps": "Delete maps", + "delete-playlist-maps-tip": "If enabled, all maps in the playlist will be deleted", + "delete-playlists-maps-tip": "If enabled, all maps in the playlists will be deleted", + "export-playlist-ask": "Export playlist?", + "export-playlists-ask": "Export playlists?", + "export-playlist-desc": "Are you sure you want to export the playlist \"{playlistTitle}\"?", + "export-playlists-desc": "Are you sure you want to export {nb} playlists?", + "export-maps": "Export maps", + "export-playlist-maps-tip": "If enabled, all maps in the playlist will also be exported", + "export-playlists-maps-tip": "If enabled, all maps in the playlists will also be exported", + "export": "Export", + "need-clone-title": "Warning", + "need-clone-desc-1": "This playlist has been downloaded from an external site and contains a synchronization link.", + "need-clone-desc-2": "To avoid losing your changes during synchronization, the playlist will be duplicated and its synchronization link removed.", + "need-clone-desc-3": "You can then, if you wish, delete the original playlist.", + "understood": "I understand", + "synchronize-playlist-ask": "Synchronize playlist?", + "synchronize-playlists-ask": "Synchronize playlists?", + "synchronize-playlist-desc": "Are you sure you want to synchronize the playlist \"{playlistTitle}\"?", + "synchronize-playlists-desc": "Are you sure you want to synchronize {nb} playlists?", + "synchronize-playlist-tip": "This action updates playlists and downloads missing maps; it may take several minutes.", + "synchronize": "Synchronize", + "curated": "Recommended", + "verified-mapper": "Verified mapper", + "empty-playlists": "Empty playlists", + "search-playlist": "Search for a playlist", + "no-playlists-found": "No playlists found", + "error-occur-while-loading-playlists": "An error occurred while loading playlists", + "error-occur-while-loading-playlist": "An error occurred while loading the playlist", + "loading-maps": "Loading maps...", + "no-maps-found-for-playlist": "No maps found for this playlist", + "playlist-contain-no-maps": "The playlist contains no maps", + "no-map-installed-for-playlist": "No maps installed for this playlist", + "playlist-is-waiting-to-download": "The playlist is waiting to download", + "download-maps": "Download maps", + "download-missing-maps": "Download missing maps", + "playlist-is-downloading": "The playlist is downloading", + "some-playlist-maps-are-missing": "Some maps in this playlist are missing", + "create-a-playlist": "Create a playlist", + "synchronize-playlists": "Synchronize playlists", + "export-playlists": "Export playlists", + "delete-playlists": "Delete playlists", + "choose-image": "Choose an image", + "title": "Title", + "playlist-title": "Playlist title", + "description": "Description", + "playlist-description": "Playlist description", + "author": "Author", + "playlist-author": "Playlist author", + "save": "Save", + "loading": "Loading...", + "installed": "Installed", + "no-map-found": "No map found", + "edit-playlist-shortcuts": "Hold Shift or Ctrl to select multiple maps", + "add-to-playlist": "Add to playlist", + "remove-from-playlist": "Remove from playlist", + "playlist-is-empty": "The playlist is empty", + "continue": "Continue", + "nb-maps": "Number of maps", + "nb-mappers": "Number of mappers", + "duration": "Duration", + "nps": "Notes per second", + "date-picker": { + "start-date-end-date": "Start date — End date", + "all": "All", + "last-24h": "Last 24h", + "last-week": "Last week", + "last-month": "Last month", + "3-last-month": "Last 3 months" + }, + "playlists-imported": "Playlists imported", + "all-playlists-have-been-successfully-imported": "All playlists have been successfully imported", + "no-playlist-found": "No playlist found", + "no-playlist-found-in-selected-files": "No playlist found in the selected files", + "some-playlists-not-imported": "Some playlists not imported", + "some-playlists-have-been-imported": { + "INVALID_SOURCE": "Some playlists could not be found", + "INVALID_PLAYLIST_FILE": "Some playlists are invalid", + "CANNOT_PARSE_PLAYLIST": "Some playlists are unreadable", + "unknown": "Some playlists could not be imported" + }, + "no-playlists-imported": "No playlists imported", + "no-playlists-imported-errors": { + "INVALID_SOURCE": "Playlists could not be found", + "INVALID_PLAYLIST_FILE": "Playlists are invalid", + "CANNOT_PARSE_PLAYLIST": "Playlists are unreadable", + "unknown": "No playlist could be imported" + } + }, + "dateformat": { + "dayNames": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + "monthNames": ["Jan", "Feb", "Mar", "Apr", "May", "June", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + "timeNames": ["a", "p", "am", "pm", "A", "P", "AM", "PM"] + } +} diff --git a/assets/jsons/translations/zh-tw.json b/assets/jsons/translations/zh-tw.json index cacac60a..42a50870 100644 --- a/assets/jsons/translations/zh-tw.json +++ b/assets/jsons/translations/zh-tw.json @@ -246,6 +246,7 @@ "zh-TW": "正體中文", "ja-JP": "日本語", "ko-KR": "한국어", + "uk-UA": "Українська", "translated": { "en-EN": "英式英語", "en-US": "美式英語", @@ -258,7 +259,8 @@ "zh-CN": "簡體中文", "zh-TW": "正體中文", "ja-JP": "日語", - "ko-KR": "韓語" + "ko-KR": "韓語", + "uk-UA": "烏克蘭" } } }, diff --git a/assets/jsons/translations/zh.json b/assets/jsons/translations/zh.json index da08ac9b..eabad9a9 100644 --- a/assets/jsons/translations/zh.json +++ b/assets/jsons/translations/zh.json @@ -245,6 +245,7 @@ "zh-TW": "正體中文", "ja-JP": "日本語", "ko-KR": "한국어", + "uk-UA": "Українська", "translated": { "en-EN": "英式英语", "en-US": "美式英语", @@ -257,7 +258,8 @@ "zh-CN": "简体中文", "zh-TW": "正体中文", "ja-JP": "日语", - "ko-KR": "韩语" + "ko-KR": "韩语", + "uk-UA": "烏克蘭" } } }, @@ -945,7 +947,7 @@ "maps": { "map-filter-panel": { "duration": "时长", - "nps" : "每秒音符数", + "nps": "每秒音符数", "njs": "音符跳跃速度", "tags": "标签", "specificities": "general", @@ -1026,11 +1028,11 @@ "by": "By {songAutor}", "mapped-by": "mapped by", "delete": "删除", - "preview" : "预览地图", - "bsr-code" : "BSR代码", - "download" : "下载地图", - "downloading" :"正在下载地图", - "cancel-download" : "取消下载", + "preview": "预览地图", + "bsr-code": "BSR代码", + "download": "下载地图", + "downloading": "正在下载地图", + "cancel-download": "取消下载", "hightlight-difficulty": "突出显示难度" } }, diff --git a/package-lock.json b/package-lock.json index a5d14dd9..cad04554 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "bs-manager", - "version": "1.5.0-alpha.9", + "version": "1.5.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "bs-manager", - "version": "1.5.0-alpha.9", + "version": "1.5.0", "hasInstallScript": true, "license": "GPL-3.0-only", "dependencies": { diff --git a/src/renderer/components/svgs/bsm-icon.component.tsx b/src/renderer/components/svgs/bsm-icon.component.tsx index fde8d8f4..ef4761bd 100644 --- a/src/renderer/components/svgs/bsm-icon.component.tsx +++ b/src/renderer/components/svgs/bsm-icon.component.tsx @@ -12,6 +12,7 @@ import { FranceIcon } from "./flags/france-icon.component"; import { SpainIcon } from "./flags/spain-icon.component"; import { ItalyIcon } from "./flags/italy-icon.component"; import { UsaIcon } from "./flags/usa-icon.component"; +import { UkraineIcon } from "./flags/ukraine-icon.component copy"; import { UkIcon } from "./flags/uk-icon.component"; import { TaskIcon } from "./icons/task-icon.component"; import { CopyIcon } from "./icons/copy-icon.component"; @@ -73,7 +74,7 @@ import { ArrowUpwardIcon } from "./icons/arrow-upward-icon.component"; -export type BsmIconType = SongDetailDiffCharactertistic | ("settings" | "trash" | "favorite" | "folder" | "bsNote" | "check" | "three-dots" | "twitch" | "eye" | "play" | "checkCircleIcon" | "discord" | "info" | "eye-cross" | "terminal" | "desktop" | "oculus" | "add" | "cross" | "task" | "github" | "close" | "thumbUpFill" | "timerFill" | "pause" | "twitter" | "sync" | "chevron-top" | "copy" | "steam" | "edit" | "export" | "patreon" | "search" | "bsMapDifficulty" | "link" | "unlink" | "download" | "filter" | "mee6" | "volume-up" | "volume-off" | "volume-down" | "shortcut" | "backup-restore" | "web-site" | "clean" | "browse" | "add-file" | "arrow-upward" | "cancel" | "warning" | "fr-FR-flag" | "es-ES-flag" | "it-IT-flag" | "en-US-flag" | "en-EN-flag" | "de-DE-flag" | "ru-RU-flag" | "zh-CN-flag" | "zh-TW-flag" | "ja-JP-flag" | "ko-KR-flag" | "pt-BR-flag" | "null" ); +export type BsmIconType = SongDetailDiffCharactertistic | ("settings" | "trash" | "favorite" | "folder" | "bsNote" | "check" | "three-dots" | "twitch" | "eye" | "play" | "checkCircleIcon" | "discord" | "info" | "eye-cross" | "terminal" | "desktop" | "oculus" | "add" | "cross" | "task" | "github" | "close" | "thumbUpFill" | "timerFill" | "pause" | "twitter" | "sync" | "chevron-top" | "copy" | "steam" | "edit" | "export" | "patreon" | "search" | "bsMapDifficulty" | "link" | "unlink" | "download" | "filter" | "mee6" | "volume-up" | "volume-off" | "volume-down" | "shortcut" | "backup-restore" | "web-site" | "clean" | "browse" | "add-file" | "arrow-upward" | "cancel" | "warning" | "fr-FR-flag" | "es-ES-flag" | "it-IT-flag" | "en-US-flag" | "en-EN-flag" | "de-DE-flag" | "ru-RU-flag" | "zh-CN-flag" | "zh-TW-flag" | "ja-JP-flag" | "ko-KR-flag" | "pt-BR-flag" | "uk-UA-flag"| "null" ); export const BsmIcon = memo(({ className, icon, style }: { className?: string; icon: BsmIconType; style?: CSSProperties }) => { // TODO : Very ugly very messy, need to find a better way to do this @@ -146,6 +147,9 @@ export const BsmIcon = memo(({ className, icon, style }: { className?: string; i if (icon === "pt-BR-flag"){ return ; } + if (icon === "uk-UA-flag"){ + return ; + } if (icon === "task") { return ; diff --git a/src/renderer/components/svgs/flags/ukraine-icon.component copy.tsx b/src/renderer/components/svgs/flags/ukraine-icon.component copy.tsx new file mode 100644 index 00000000..68571453 --- /dev/null +++ b/src/renderer/components/svgs/flags/ukraine-icon.component copy.tsx @@ -0,0 +1,12 @@ +import { CSSProperties } from "react"; + +export function UkraineIcon(props: { className?: string; style?: CSSProperties }) { + return ( + + + + + + + ); +} diff --git a/src/renderer/config/default-configuration.config.ts b/src/renderer/config/default-configuration.config.ts index e2c2bd90..645b116a 100644 --- a/src/renderer/config/default-configuration.config.ts +++ b/src/renderer/config/default-configuration.config.ts @@ -25,7 +25,7 @@ export const defaultConfiguration: { "second-color": "#ff4444", theme: "os", language: window.navigator.language.length <= 2 ? `${window.navigator.language}-${window.navigator.language.toLocaleUpperCase()}` : window.navigator.language, - supported_languages: ["en-US", "en-EN", "fr-FR", "es-ES", "it-IT", "de-DE", "ru-RU", "zh-CN", "zh-TW", "ja-JP", "ko-KR", "pt-BR"], + supported_languages: ["en-US", "en-EN", "fr-FR", "es-ES", "it-IT", "de-DE", "ru-RU", "zh-CN", "zh-TW", "ja-JP", "ko-KR", "pt-BR", "uk-UA"], default_mods: ["SongCore", "WhyIsThereNoLeaderboard", "BeatSaverDownloader", "BeatSaverVoting", "PlaylistManager"], "default-shared-folders": [ window.electron.path.join("Beat Saber_Data", "CustomLevels"), From dd70df19d02f01882535570b78de49c1770fb60d Mon Sep 17 00:00:00 2001 From: HighError Date: Thu, 30 Jan 2025 15:58:03 +0200 Subject: [PATCH 02/21] Added all strings --- assets/jsons/translations/uk.json | 1142 ++++++++++++++--------------- 1 file changed, 571 insertions(+), 571 deletions(-) diff --git a/assets/jsons/translations/uk.json b/assets/jsons/translations/uk.json index 11d48291..be38ed80 100644 --- a/assets/jsons/translations/uk.json +++ b/assets/jsons/translations/uk.json @@ -327,89 +327,89 @@ }, "notifications": { "types": { - "error": "🚨 Error", - "warning": "⚠️ Warning", - "success": "🎉 Success" + "error": "🚨 Помилка", + "warning": "⚠️ Попередження", + "success": "🎉 Успіх" }, "common": { "msg": { - "error-occurred": "An error has occurred" + "error-occurred": "Сталася помилка" } }, "shared": { "errors": { "titles": { - "operation-running": "Operation running", - "no-internet": "No internet", - "file-not-supported": "File not supported" + "operation-running": "Операція виконується", + "no-internet": "Немає інтернету", + "file-not-supported": "Файл не підтримується" }, "msg": { - "operation-running": "Wait for the current operation to finish, then try again.", - "no-internet": "Check your connection and try again.", - "file-not-supported": "Only {types} files are supported." + "operation-running": "Дочекайтеся завершення поточної операції, а потім спробуйте ще раз.", + "no-internet": "Перевірте підключення до мережі та спробуйте ще раз.", + "file-not-supported": "Підтримуються лише файли {types}." } } }, "bs-download": { "success": { "titles": { - "download-success": "Download complete", - "verification-finished": "Verification complete" + "download-success": "Завантаження завершено", + "verification-finished": "Перевірка завершена" } }, "steam-download": { "warnings": { "msg": { - "ManifestChecksum": "The previously downloaded manifest does not match the new 🤔", - "ConnectionTimeout": "Your internet connection seems unstable 🥶", - "ConnectionLost": "The connection has been lost, try again...", - "ConnectionError": "Unable to connect to Steam, try again...", - "Unknown": "Something strange has happened 🤔 Your connection is probably unstable." + "ManifestChecksum": "Раніше завантажений маніфест не збігається з новим 🤔", + "ConnectionTimeout": "Ваше інтернет-з'єднання нестабільне 🥶", + "ConnectionLost": "З'єднання втрачено, спробуйте ще раз...", + "ConnectionError": "Не вдалося підключитися до Steam, спробуйте ще раз...", + "Unknown": "Сталося щось дивне 🤔 Ймовірно, ваше з'єднання нестабільне." } }, "errors": { "msg": { - "401": "Steam doesn't seem to want to let us download Beat Saber 😢", - "404": "Unable to contact Steam servers.", - "ExeNotFoundWindows": "\"DepotDownloader.exe\" is missing. Please check if the executable is quarantined by your anti-virus.", - "ExeNotFoundLinux": "\"DepotDownloader\" executable is missing.", - "Password": "Password is invalid.", - "InvalidCredentials": "Invalid login credentials, unapproved connection, or too many login attempts.", - "NoManifest": "No manifest was found", - "DirectoryCreate": "Unable to install the necessary folders.", - "NotAvailableApp": "Are you trying to download Beat Saber when you don't have it? 🤣", - "DepotNotFound": "Unable to download Beat Saber 😥 try again later 😕", - "NotCompleted": "The download could not complete ¯\\_(ツ)_/¯", - "InvalidManifest": "Unable to download Beat Saber 😥 try again later 😕", - "NoValidKey": "Unable to download Beat Saber 😥 try again later 😕", - "NoManifestCode": "Unable to download Beat Saber 😥 try again later 😕", - "Unknown": "An unknown error occurred ¯\\_(ツ)_/¯", - "NoServer": "Unable to contact Steam servers.", - "NotAllowed": "Apparently you are not allowed to download Beat Saber 🥱", - "ConnectionTimeout": "Cannot connect to Steam 😕", - "SteamLib": "If you have this error, report the bug on GitHub with the logs pls.", - "ConnectionError": "Unable to connect to Steam after 10 tries 🤯", - "LicenceError": "Unable to get the list of licenses.", - "RateLimitExceeded": "You've tried too many times, wait a while and try again later.", - "TokenRejected": "Your login token has been rejected 😕 Please try again.", - "AccessDenied": "Access to Steam has been denied." + "401": "Steam не дозволяє нам завантажити Beat Saber 😢", + "404": "Не вдалося зв'язатися з серверами Steam.", + "ExeNotFoundWindows": "\"DepotDownloader.exe\" відсутній. Переконайтеся, що ваш антивірус не помістив файл у карантин.", + "ExeNotFoundLinux": "Виконуваний файл \"DepotDownloader\" відсутній.", + "Password": "Неправильний пароль.", + "InvalidCredentials": "Недійсні облікові дані, несанкціоноване підключення або забагато спроб входу.", + "NoManifest": "Маніфест не знайдено.", + "DirectoryCreate": "Не вдалося створити необхідні папки.", + "NotAvailableApp": "Ви намагаєтеся завантажити Beat Saber, не маючи його у бібліотеці? 🤣", + "DepotNotFound": "Не вдалося завантажити Beat Saber 😥 Спробуйте пізніше 😕", + "NotCompleted": "Завантаження не було завершено ¯\\_(ツ)_/¯", + "InvalidManifest": "Не вдалося завантажити Beat Saber 😥 Спробуйте пізніше 😕", + "NoValidKey": "Не вдалося завантажити Beat Saber 😥 Спробуйте пізніше 😕", + "NoManifestCode": "Не вдалося завантажити Beat Saber 😥 Спробуйте пізніше 😕", + "Unknown": "Сталася невідома помилка ¯\\_(ツ)_/¯", + "NoServer": "Не вдалося зв'язатися з серверами Steam.", + "NotAllowed": "Схоже, що вам не дозволено завантажувати Beat Saber 🥱", + "ConnectionTimeout": "Не вдалося підключитися до Steam 😕", + "SteamLib": "Якщо у вас з'явилася ця помилка, повідомте про баг на GitHub разом із логами.", + "ConnectionError": "Не вдалося підключитися до Steam після 10 спроб 🤯", + "LicenceError": "Не вдалося отримати список ліцензій.", + "RateLimitExceeded": "Забагато спроб, зачекайте і спробуйте ще раз пізніше.", + "TokenRejected": "Ваш токен входу відхилено 😕 Будь ласка, спробуйте ще раз.", + "AccessDenied": "Доступ до Steam було відхилено." } } }, "oculus-download": { "errors": { "msg": { - "DOWNLOAD_MANIFEST_FAILED": "Unable to download the manifest for this version; your login token may be invalid.", - "MANIFEST_FILE_NOT_FOUND": "Unable to find the manifest for this version.", - "PARSE_MANIFEST_FILE_FAILED": "An error occurred while reading the manifest.", - "ALREADY_DOWNLOADING": "A version is already being downloaded.", - "UNABLE_TO_GET_MANIFEST": "Unable to obtain the manifest required for download.", - "VERIFY_INTEGRITY_FAILED": "An error occurred during file verification.", - "SOME_FILES_FAILED_TO_DOWNLOAD": "Some files failed to download.", - "META_LOGIN_TIMED_OUT": "The login token took too long to retrieve.", - "META_LOGIN_WINDOW_CLOSED_BY_USER": "The Meta login window was closed.", - "NO_META_AUTH_TOKEN": "Unable to retrieve the Meta login token required for download.", - "UNKNOWN_ERROR": "An unknown error occurred." + "DOWNLOAD_MANIFEST_FAILED": "Не вдалося завантажити маніфест для цієї версії; ваш токен входу може бути недійсним.", + "MANIFEST_FILE_NOT_FOUND": "Не вдалося знайти маніфест для цієї версії.", + "PARSE_MANIFEST_FILE_FAILED": "Сталася помилка під час читання маніфесту.", + "ALREADY_DOWNLOADING": "Версія вже завантажується.", + "UNABLE_TO_GET_MANIFEST": "Не вдалося отримати маніфест, необхідний для завантаження.", + "VERIFY_INTEGRITY_FAILED": "Сталася помилка під час перевірки цілісності файлів.", + "SOME_FILES_FAILED_TO_DOWNLOAD": "Деякі файли не вдалося завантажити.", + "META_LOGIN_TIMED_OUT": "Токен входу занадто довго отримувався.", + "META_LOGIN_WINDOW_CLOSED_BY_USER": "Вікно входу в Meta було закрите користувачем.", + "NO_META_AUTH_TOKEN": "Не вдалося отримати токен входу Meta, необхідний для завантаження.", + "UNKNOWN_ERROR": "Сталася невідома помилка." } } } @@ -417,16 +417,16 @@ "bs-import-version": { "success": { "start-import": { - "title": "Import in progress 👌", - "desc": "The import may take several minutes depending on your configuration." + "title": "Імпорт триває 👌", + "desc": "Імпорт може зайняти кілька хвилин залежно від вашої конфігурації." }, "imported": { - "title": "Imported version 🎉" + "title": "Версія імпортована 🎉" } }, "errors": { "import-error": { - "desc": "Check that the selected folder is a Beat Saber installation." + "desc": "Переконайтеся, що вибрана папка є встановленою версією Beat Saber." } } }, @@ -434,57 +434,57 @@ "move-folder": { "success": { "titles": { - "transfer-started": "Transfer in progress", - "transfer-finished": "Transfer complete" + "transfer-started": "Передача триває", + "transfer-finished": "Передача завершена" }, "descs": { - "transfer-started": "The transfer has started and may take several minutes depending on your configuration." + "transfer-started": "Передача розпочалася і може зайняти кілька хвилин залежно від вашої конфігурації." } }, "errors": { "titles": { - "transfer-failed": "Transfer failed 😕" + "transfer-failed": "Передача не вдалася 😕" }, "descs": { - "COPY_TO_SUBPATH": "The destination folder cannot be a subfolder of the source folder.", - "restore-linked-folders": "An error occurred while restoring shared folders. You can still manually restore them via the 'Shared Folders' menu on the versions page." + "COPY_TO_SUBPATH": "Цільова папка не може бути підпапкою вихідної папки.", + "restore-linked-folders": "Сталася помилка під час відновлення спільних папок. Ви все ще можете відновити їх вручну через меню 'Спільні папки' на сторінці версій." } } }, "steam": { "success": { "titles": { - "logout": "Disconnected from Steam." + "logout": "Відключено від Steam." } } }, "additional-content": { "deep-link": { - "select-all": "Select all", + "select-all": "Вибрати все", "activation": { "success": { - "title": "OneClick activated!", - "description": "OneClick installations have been activated." + "title": "OneClick активовано!", + "description": "OneClick-встановлення активовано." }, "error": { - "description": "Unable to activate OneClick installations." + "description": "Не вдалося активувати OneClick-встановлення." } }, "deactivation": { "success": { - "title": "OneClick deactivated!", - "description": "OneClick installations have been deactivated." + "title": "OneClick деактивовано!", + "description": "OneClick-встановлення деактивовано." }, "error": { - "description": "An unknown error occurred." + "description": "Сталася невідома помилка." } }, "check-all-enabled": { - "title": "OneClick Disabled", - "description": "One or more OneClick installations are disabled. Go to settings to enable them.", + "title": "OneClick вимкнено", + "description": "Одна або більше OneClick-встановлень вимкнено. Перейдіть до налаштувань, щоб увімкнути їх.", "actions": { - "settings": "Settings", - "not-remind": "Don't remind me" + "settings": "Налаштування", + "not-remind": "Не нагадувати" } } } @@ -493,782 +493,782 @@ "bs-launch": { "success": { "titles": { - "BS_LAUNCHING": "Launching...🚀", - "STEAM_LAUNCHING": "Steam is launching!", - "SKIPPING_STEAM_LAUNCH": "Skipping Steam launch" + "BS_LAUNCHING": "Запускається...🚀", + "STEAM_LAUNCHING": "Steam запускається!", + "SKIPPING_STEAM_LAUNCH": "Пропуск запуску Steam" }, "msg": { - "BS_LAUNCHING": "Don't forget to warm up 😉", - "STEAM_LAUNCHING": "Beat Saber will automatically launch after Steam.", - "SKIPPING_STEAM_LAUNCH": "I hope you know what you're doing :)" + "BS_LAUNCHING": "Не забудьте розім'ятися 😉", + "STEAM_LAUNCHING": "Beat Saber запуститься автоматично після Steam.", + "SKIPPING_STEAM_LAUNCH": "Сподіваюся, ви знаєте, що робите :)" } }, "errors": { "titles": { - "UNKNOWN_ERROR": "Unable to launch", - "STEAM_NOT_RUNNING": "Steam is not running", - "OCULUS_NOT_RUNNING": "Oculus is not running", - "BS_ALREADY_RUNNING": "Beat Saber already running", - "EXE_NOT_FINDED": "Missing files", - "PROTON_NOT_SET": "Proton folder not set", - "PROTON_NOT_FOUND": "Proton binary not found", - "EXIT": "Abrupt stop", - "OCULUS_LIB_NOT_FOUND": "Oculus library not found", - "ORIGINAL_OCULUS_NOT_INSTALLED": "Original Oculus version not found" + "UNKNOWN_ERROR": "Неможливо запустити", + "STEAM_NOT_RUNNING": "Steam не запущено", + "OCULUS_NOT_RUNNING": "Oculus не запущено", + "BS_ALREADY_RUNNING": "Beat Saber вже запущено", + "EXE_NOT_FINDED": "Відсутні файли", + "PROTON_NOT_SET": "Папку Proton не встановлено", + "PROTON_NOT_FOUND": "Виконуваний файл Proton не знайдено", + "EXIT": "Раптова зупинка", + "OCULUS_LIB_NOT_FOUND": "Бібліотеку Oculus не знайдено", + "ORIGINAL_OCULUS_NOT_INSTALLED": "Оригінальну версію Oculus не знайдено" }, "msg": { - "UNKNOWN_ERROR": "An unknown error has occurred.", - "STEAM_NOT_RUNNING": "Steam must be running to launch BeatSaber.", - "OCULUS_NOT_RUNNING": "Oculus must be running to launch BeatSaber.", - "BS_ALREADY_RUNNING": "Close BeatSaber before launching it again.", - "EXE_NOT_FINDED": "Some files seem to be missing, try to verify the files.", - "EXIT": "BeatSaber stopped abruptly, tries to check the files.", - "OCULUS_LIB_NOT_FOUND": "Check that the Oculus application is properly installed, and that the libraries are correctly defined in Oculus.", - "PROTON_NOT_SET": "Set the Proton path in settings.", - "PROTON_NOT_FOUND": "Set the Proton path in settings.", - "ORIGINAL_OCULUS_NOT_INSTALLED": "Beat Saber must be installed from the Oculus app before opening." + "UNKNOWN_ERROR": "Сталася невідома помилка.", + "STEAM_NOT_RUNNING": "Для запуску BeatSaber має бути запущений Steam.", + "OCULUS_NOT_RUNNING": "Для запуску BeatSaber має бути запущений Oculus.", + "BS_ALREADY_RUNNING": "Закрийте BeatSaber перед повторним запуском.", + "EXE_NOT_FINDED": "Схоже, деякі файли відсутні, спробуйте перевірити файли.", + "EXIT": "BeatSaber раптово зупинився, спробуйте перевірити файли.", + "OCULUS_LIB_NOT_FOUND": "Перевірте, чи правильно встановлено додаток Oculus і чи правильно визначено бібліотеки в Oculus.", + "PROTON_NOT_SET": "Встановіть шлях до Proton в налаштуваннях.", + "PROTON_NOT_FOUND": "Встановіть шлях до Proton в налаштуваннях.", + "ORIGINAL_OCULUS_NOT_INSTALLED": "Beat Saber має бути встановлений з додатку Oculus перед відкриттям." }, "actions": { - "STEAM_NOT_RUNNING": "Launch Steam" + "STEAM_NOT_RUNNING": "Запустити Steam" } } }, "steam": { "steam-launching": { - "title": "Steam is launching!", - "description": "Beat Saber will automatically launch after Steam." + "title": "Steam запускається!", + "description": "Beat Saber запуститься автоматично після Steam." } }, "custom-version": { "errors": { "titles": { - "CantEditSteam": "Unable to edit", - "CantRename": "Renaming impossible", - "VersionAlreadExist": "This version already exists", - "CantClone": "Cloning impossible", - "UnknownError": "An unknown error occurred" + "CantEditSteam": "Неможливо редагувати", + "CantRename": "Перейменування неможливе", + "VersionAlreadExist": "Ця версія вже існує", + "CantClone": "Клонування неможливе", + "UnknownError": "Сталася невідома помилка" }, "msg": { - "CantEditSteam": "You can't edit the Steam version. You can clone it though." + "CantEditSteam": "Ви не можете редагувати версію Steam. Але ви можете її клонувати." } }, "success": { "titles": { - "CloningFinished": "Cloning complete 🎉" + "CloningFinished": "Клонування завершено 🎉" } } }, "mods": { "install-mods": { "titles": { - "success": "Mods installed 🎉", - "warning": "Mods installed 🤔" + "success": "Моди встановлено 🎉", + "warning": "Моди встановлено 🤔" }, "msg": { - "success": "All mods have been installed.", - "warning": "One or more mods could not be installed.", + "success": "Усі моди були встановлені.", + "warning": "Один або кілька модів не вдалося встановити.", "errors": { - "no-mods": "No mods to install.", - "cannot-install-bsipa": "BSIPA installation failed 😨" + "no-mods": "Немає модів для встановлення.", + "cannot-install-bsipa": "Не вдалося встановити BSIPA 😨" } } }, "uninstall-mod": { "titles": { - "success": "Mod uninstalled 🎉" + "success": "Мод видалено 🎉" }, "msg": { "errors": { - "no-mods": "This mod isn't installed 😑" + "no-mods": "Цей мод не встановлено 😑" } } }, "uninstall-all-mods": { "titles": { - "success": "Mods uninstalled 🎉" + "success": "Моди видалено 🎉" }, "msg": { - "success": "All mods have been uninstalled.", + "success": "Усі моди були видалені.", "errors": { - "no-mods": "No mods are installed in this version 😑" + "no-mods": "У цій версії не встановлено жодних модів 😑" } } }, "import-mod": { "titles": { - "success": "Mods import completed", - "error": "An error occurred during the mods import" + "success": "Імпорт модів завершено", + "error": "Сталася помилка під час імпорту модів" }, "msgs": { - "success": "Mods successfully imported.", - "some-success": "Some mods were successfully imported.", - "no-dlls": "The file(s) do not contain any \"dll\" files." + "success": "Моди успішно імпортовано.", + "some-success": "Деякі моди були успішно імпортовані.", + "no-dlls": "Файл(и) не містять жодних файлів \"dll\"." } } }, "maps": { "one-click-install": { - "success": "Map installation complete", - "error": "An error occurred while installing the map" + "success": "Встановлення карти завершено", + "error": "Сталася помилка під час встановлення карти" }, "no-duplicates-maps": { - "title": "No Duplicates", - "msg": "No maps were deleted" + "title": "Немає дублікатів", + "msg": "Жодних карт не було видалено" }, "duplicates-maps-deleted": { - "title": "Duplicates Deleted", - "msg": "Duplicates were deleted" + "title": "Дублікати видалено", + "msg": "Дублікати були видалені" }, "import-map": { "titles": { - "success": "Maps import completed", - "error": "An error occurred during the maps import" + "success": "Імпорт карт завершено", + "error": "Сталася помилка під час імпорту карт" }, "msgs": { - "success": "Maps successfully imported.", - "some-success": "Some maps were successfully imported.", - "only-accept-zip": "Only zip files are supported.", - "invalid-zip": "The zip file(s) do not contain any maps.", - "unknown": "An unknown error occurred." + "success": "Карти успішно імпортовано.", + "some-success": "Деякі карти були успішно імпортовані.", + "only-accept-zip": "Підтримуються лише zip-файли.", + "invalid-zip": "Zip-файл(и) не містять жодних карт.", + "unknown": "Сталася невідома помилка." } } }, "playlists": { "one-click-install": { - "success": "Playlist installation complete", - "error": "An error occurred while installing the playlist" + "success": "Встановлення плейлиста завершено", + "error": "Сталася помилка під час встановлення плейлиста" } }, "models": { "one-click-install": { - "success": "Model installation complete", - "error": "An error occurred while installing the model" + "success": "Встановлення моделі завершено", + "error": "Сталася помилка під час встановлення моделі" } }, "shared-folder": { "info": { "userdata-backup-created": { - "title": "Backup created", - "msg": "Sharing the 'UserData' folder can generate errors, in case of problems unlink the folder to restore the backup" + "title": "Резервну копію створено", + "msg": "Спільний доступ до папки 'UserData' може спричинити помилки, у разі виникнення проблем від'єднайте папку, щоб відновити резервну копію" } }, "linking-error": { - "title": "Error while linking folder", + "title": "Помилка під час прив'язки папки", "msg": { - "EPERM": "BSManager does not have the necessary permissions to link the folder.", - "EACCES": "BSManager does not have the necessary permissions to link the folder.", - "ENOSPC": "The disk is full, make some space and try again.", - "LinkingNotSupported": "Folder linking is not supported on this file system.", - "UNKNOWN_ERROR": "An unknown error has occurred while linking the folder." + "EPERM": "BSManager не має необхідних дозволів для прив'язки папки.", + "EACCES": "BSManager не має необхідних дозволів для прив'язки папки.", + "ENOSPC": "Диск заповнений, звільніть місце та спробуйте знову.", + "LinkingNotSupported": "Прив'язка папок не підтримується на цій файловій системі.", + "UNKNOWN_ERROR": "Сталася невідома помилка під час прив'язки папки." } }, "adding-error": { - "title": "Adding shared folder failed", - "msg": "You can't add \"{folder}\" to shared folders." + "title": "Не вдалося додати спільну папку", + "msg": "Ви не можете додати \"{folder}\" до спільних папок." } }, "create-launch-shortcut": { "success": { - "title": "Shortcut created", - "msg": "The shortcut has been created on the desktop.", - "msg-steam": "The shortcut has been created in the Steam library." + "title": "Ярлик створено", + "msg": "Ярлик було створено на робочому столі.", + "msg-steam": "Ярлик було створено в бібліотеці Steam." }, "error": { - "msg": "An error occurred while creating the shortcut." + "msg": "Сталася помилка під час створення ярлика." } }, "bs-version-oudated": { - "title": "Version Outdated", - "msg": "This Beat Saber version is outdated, use the recommended version to enjoy the latest features and bugfixes", + "title": "Версія застаріла", + "msg": "Ця версія Beat Saber застаріла, використовуйте рекомендовану версію, щоб насолоджуватися останніми функціями та виправленнями помилок", "actions": { - "do-not-remind": "Do not remind me", - "ok": "Ok" + "do-not-remind": "Не нагадувати", + "ok": "Гаразд" } } }, "modals": { "misc": { - "remember-my-choice": "Remember my choice" + "remember-my-choice": "Запам'ятати мій вибір" }, "choose-store": { - "title": "Which platform?", - "body": "Select the platform from which you wish to download Beat Saber.", - "set-in-settings": "Set the default platform in settings" + "title": "Яка платформа?", + "body": "Виберіть платформу, з якої ви бажаєте завантажити Beat Saber.", + "set-in-settings": "Встановіть платформу за замовчуванням у налаштуваннях" }, "guard": { "title": "Steam Guard", "inputs": { "guard-code": { - "label": "Guard Code", - "placeholder": "Enter your Guard code" + "label": "Код Guard", + "placeholder": "Введіть ваш код Guard" } }, "buttons": { - "submit": "Login" + "submit": "Увійти" } }, "steam-login": { - "title": "Steam Login", + "title": "Вхід у Steam", "inputs": { "username": { - "label": "Sign in with account name", - "placeholder": "Enter your account name" + "label": "Увійти з іменем облікового запису", + "placeholder": "Введіть ім'я облікового запису" }, "password": { - "label": "Password", - "placeholder": "Enter your password", - "max-length-warning": "The password exceeds 64 characters! If the password is invalid, try to enter only its first 64 characters." + "label": "Пароль", + "placeholder": "Введіть ваш пароль", + "max-length-warning": "Пароль перевищує 64 символи! Якщо пароль недійсний, спробуйте ввести лише перші 64 символи." }, "qr": { - "label": "Or with a QR code", + "label": "Або за допомогою QR-коду", "note": { - "use-the": "Use the ", - "steam-mobile-app": "Steam Mobile App", - "to-connect-with-qr": "to sign in via QR code." + "use-the": "Використовуйте ", + "steam-mobile-app": "мобільний додаток Steam", + "to-connect-with-qr": "для входу через QR-код." } }, - "stay": "Remember me" + "stay": "Запам'ятати мене" }, - "why-credentials": "Why are my credentials necessary?", - "need-help-to-connect": "I need help to access my account!", + "why-credentials": "Чому потрібні мої облікові дані?", + "need-help-to-connect": "Мені потрібна допомога для доступу до мого облікового запису!", "buttons": { - "submit": "Sign in" + "submit": "Увійти" } }, "steam-auth-approve": { - "title": "Waiting for confirmation", - "protected-by-mobile-auth": "Account protected by mobile authenticator.", - "use-steam-app-to-approve": "Use the Steam mobile app to confirm the connection...", - "not-access-to-steam-app": "I don't have access to the Steam mobile app" + "title": "Очікування підтвердження", + "protected-by-mobile-auth": "Обліковий запис захищено мобільним автентифікатором.", + "use-steam-app-to-approve": "Використовуйте мобільний додаток Steam для підтвердження з'єднання...", + "not-access-to-steam-app": "У мене немає доступу до мобільного додатку Steam" }, "steam-credentials": { - "title": "Steam Credentials", - "p-1": "Your Steam credentials are only required to download versions of Beat Saber, we use DepotDownloader to achieve this which requires your Steam credentials to verify that you own the game within your library before allowing you to retrieve the game files, your credentials are not stored or saved and are passed directly to DepotDownloader. However, if you don't want to do that, you can follow this tutorial instead: ", - "p-2": "Afterwards you can click on the gear icon in the top right corner and select \"Import a version\", then you can select the folder where Beat Saber was downloaded to. (If you followed the tutorial, you will have the right location)" + "title": "Облікові дані Steam", + "p-1": "Ваші облікові дані Steam потрібні лише для завантаження версій Beat Saber. Ми використовуємо DepotDownloader, якому потрібні ваші облікові дані Steam для перевірки наявності гри у вашій бібліотеці перед тим, як дозволити вам отримати файли гри. Ваші облікові дані не зберігаються і передаються безпосередньо до DepotDownloader. Однак, якщо ви не хочете цього робити, ви можете натомість скористатися цим посібником: ", + "p-2": "Після цього ви можете натиснути на значок шестерні у верхньому правому куті та вибрати \"Імпортувати версію\", потім ви можете вибрати папку, куди було завантажено Beat Saber. (Якщо ви слідували посібнику, у вас буде правильне розташування)" }, "bs-import-version": { - "title": "Import a version", - "description": "Imports a version of Beat Saber to use with BSManager. This will copy the selected Beat Saber installation folder to the BSManager versions folder.", - "oculus-version": "Oculus Version", - "oculus-version-tooltip": "Check if it's an Oculus version", + "title": "Імпортувати версію", + "description": "Імпортує версію Beat Saber для використання з BSManager. Це скопіює вибрану папку встановлення Beat Saber до папки версій BSManager.", + "oculus-version": "Версія Oculus", + "oculus-version-tooltip": "Відмітьте, якщо це версія Oculus", "buttons": { - "submit": "Import a version" + "submit": "Імпортувати версію" } }, "bs-uninstall": { - "title": "Uninstall", - "description": "Are you sure you want to uninstall Beat Saber {version}? You will have to download it again to play it.", + "title": "Видалення", + "description": "Ви впевнені, що хочете видалити Beat Saber {version}? Вам доведеться завантажити його знову, щоб грати.", "buttons": { - "submit": "Uninstall" + "submit": "Видалити" } }, "install-folder": { - "title": "Installation folder", - "description": "Changing the default installation folder will result in moving all installed data to the new folder.", + "title": "Папка встановлення", + "description": "Зміна папки встановлення за замовчуванням призведе до переміщення всіх встановлених даних до нової папки.", "buttons": { - "submit": "Choose folder" + "submit": "Вибрати папку" } }, "edit-version": { - "title": "Edit the version", + "title": "Редагувати версію", "buttons": { - "submit": "Edit" + "submit": "Редагувати" } }, "clone-version": { - "title": "Clone version", - "description": "Cloning the version allows you to separate additional Beat Saber content between two versions.", + "title": "Клонувати версію", + "description": "Клонування версії дозволяє розділити додатковий вміст Beat Saber між двома версіями.", "inputs": { "name": { - "label": "Name", - "placeholder": "Version name" + "label": "Назва", + "placeholder": "Назва версії" }, "color": { - "label": "Color" + "label": "Колір" } }, "buttons": { - "submit": "Clone" + "submit": "Клонувати" } }, "uninstall-mod": { - "title": "Uninstall", - "description": "Are you sure you want to uninstall {mod}? It could cause other installed mods to malfunction.", - "description-bsipa": "Are you sure you want to uninstall BSIPA? After that all installed mods will not work anymore." + "title": "Видалення", + "description": "Ви впевнені, що хочете видалити {mod}? Це може призвести до неправильної роботи інших встановлених модів.", + "description-bsipa": "Ви впевнені, що хочете видалити BSIPA? Після цього всі встановлені моди перестануть працювати." }, "uninstall-all-mods": { - "title": "Uninstalling mods", - "description": "Are you sure you want to uninstall all the mods from version {version}? This operation cannot be undone." + "title": "Видалення модів", + "description": "Ви впевнені, що хочете видалити всі моди з версії {version}? Цю операцію неможливо скасувати." }, "maps-actions": { "delete-maps": { "title": { - "single": "Delete this map?", - "multiple": "Delete maps?" + "single": "Видалити цю карту?", + "multiple": "Видалити карти?" }, "desc": { - "single": "Are you sure you want to delete the map {name}?", - "multiple": "Are you sure you want to delete all {nb} maps?" + "single": "Ви впевнені, що хочете видалити карту {name}?", + "multiple": "Ви впевнені, що хочете видалити {nb} карт(-и)?" }, "info": { "desc": { - "single": "This map is part of the shared maps", - "multiple": "These maps are part of the shared maps" + "single": "Ця карта є частиною спільних карт", + "multiple": "Ці карти є частиною спільних карт" }, "title": { - "single": "This map will also be removed from versions using shared maps", - "multiple": "These maps will also be removed from versions using shared maps" + "single": "Ця карта також буде видалена з версій, що використовують спільні карти", + "multiple": "Ці карти також будуть видалені з версій, що використовують спільні карти" } } } }, "link-contents": { - "title": "Link {contentType}", - "p-1": "Linking {contentType} allows sharing {contentType} between all versions with this feature enabled. Once linked, this version will benefit from shared {contentType}.", - "p-2": "In order to enjoy the linking feature, all your {itemsHtml} will be moved to the {sharedHtml} folder. After that, a symbolic link pointing to the shared {contentType} folder will replace your original {contentType} folder.", - "warning": "Please note that any changes affecting {contentType} will also affect all versions with this feature enabled.", - "what-is-a-symbolic-link": "What is a symbolic link?", - "i-need-help": "I need help", - "valid-btn": "Link {contentType}" + "title": "Прив'язати {contentType}", + "p-1": "Прив'язка {contentType} дозволяє ділитися {contentType} між усіма версіями з увімкненою цією функцією. Після прив'язки ця версія отримає доступ до спільних {contentType}.", + "p-2": "Щоб скористатися функцією прив'язки, всі ваші {itemsHtml} будуть переміщені до папки {sharedHtml}. Після цього символічне посилання, що вказує на спільну папку {contentType}, замінить вашу оригінальну папку {contentType}.", + "warning": "Зверніть увагу, що будь-які зміни, що впливають на {contentType}, також вплинуть на всі версії з увімкненою цією функцією.", + "what-is-a-symbolic-link": "Що таке символічне посилання?", + "i-need-help": "Мені потрібна допомога", + "valid-btn": "Прив'язати {contentType}" }, "unlink-contents": { - "title": "Unlink {contentType}", - "p-1": "Be careful, unlinking {contentType} will disable the use of shared {contentType} for this version, until it is reenabled.", - "p-2": "In order to unlink your maps, the symbolic link pointing to the {sharedHtml} will be removed. After that, all maps in the shared folder will be copied to the {itemsHtml} folder of your Beat Saber version.", - "do-not-copy-contents": "Do not copy {contentType}", - "do-not-copy-contents-tip": "If enabled, {contentType} in the shared folder will not be copied to your Beat Saber version. As a result, no {contentType} will remain in your Beat Saber version after unlinking.", - "valid-btn": "Unlink {contentType}" + "title": "Відв'язати {contentType}", + "p-1": "Будьте обережні, відв'язка {contentType} вимкне використання спільних {contentType} для цієї версії, доки її не буде знову ввімкнено.", + "p-2": "Для відв'язки ваших карт символічне посилання, що вказує на {sharedHtml}, буде видалено. Після цього всі карти зі спільної папки будуть скопійовані до папки {itemsHtml} вашої версії Beat Saber.", + "do-not-copy-contents": "Не копіювати {contentType}", + "do-not-copy-contents-tip": "Якщо увімкнено, {contentType} зі спільної папки не будуть скопійовані до вашої версії Beat Saber. В результаті після відв'язки у вашій версії Beat Saber не залишиться {contentType}.", + "valid-btn": "Відв'язати {contentType}" }, "download-maps": { - "search-btn": "Search", - "loading-maps": "Loading maps...", - "no-maps-found": "No maps found", - "no-internet": "No internet" + "search-btn": "Пошук", + "loading-maps": "Завантаження карт...", + "no-maps-found": "Карт не знайдено", + "no-internet": "Немає інтернету" }, "mods-disclaimer": { - "title": "disclaimer", - "p-1": "By choosing to use mods, you understand that:", - "li-1": "You may experience problems that don't exist in the vanilla game. 99.9% of bugs, crashes, and lag are due to mods.", - "li-2": "Mods are subject to being broken by updates and that's normal - be patient and respectful when this happens, as modders are volunteers with real lives.", - "li-3": "Beat Games aren't purposefully trying to break mods. They wish to work on the codebase and sometimes this breaks mods, but they are not out to kill mods.", - "p-2": "Do not attack the game developers for issues related to mods, and vice versa - modders and game developers are two separate groups. Just don't be a jerk ok." + "title": "Застереження", + "p-1": "Вибираючи використання модів, ви розумієте, що:", + "li-1": "Ви можете зіткнутися з проблемами, яких немає у оригінальній грі. 99.9% помилок, збоїв і затримок спричинені модами.", + "li-2": "Моди можуть перестати працювати після оновлень, і це нормально - будьте терплячі та поважайте це, оскільки модери є добровольцями з власним життям.", + "li-3": "Beat Games не намагаються навмисно зламати моди. Вони працюють над кодовою базою, і іноді це ламає моди, але вони не прагнуть знищити моди.", + "p-2": "Не нападайте на розробників гри через проблеми, пов'язані з модами, і навпаки - модери та розробники гри є двома окремими групами. Просто не будьте грубими, добре?" }, "shared-folders": { - "title": "Shared Folders", - "description": "Link Beat Saber folders to synchronize their contents with shared folders in other versions. Note that deleting content will also be shared.", + "title": "Спільні папки", + "description": "Прив'яжіть папки Beat Saber для синхронізації їхнього вмісту зі спільними папками в інших версіях. Зауважте, що видалення вмісту також буде спільним.", "buttons": { - "add-folder": "Add Folder", - "link-folder": "Link Folder", - "unlink-folder": "Unlink Folder", - "link-all": "Link all", - "remove-from-the-list": "Remove from the list" + "add-folder": "Додати папку", + "link-folder": "Прив'язати папку", + "unlink-folder": "Відв'язати папку", + "link-all": "Прив'язати все", + "remove-from-the-list": "Видалити зі списку" } }, "adding-shared-folder": { - "title": "Adding Shared Folder", - "description": "You might experience issues when linking the \"{folder}\" folder. Are you sure you want to add it?" + "title": "Додавання спільної папки", + "description": "Ви можете зіткнутися з проблемами при прив'язці папки \"{folder}\". Ви впевнені, що хочете додати її?" }, "create-launch-shortcut": { - "title": "Create a shortcut", - "desc": "Creating a shortcut will allow you to start Beat Saber with the chosen options without going through BSManager.", - "launch-options": "Launch options", - "advanced-launch": "Advanced launch", - "valid-btn": "Create the shortcut", - "create-steam-shortcut": "Create a Steam shortcut", - "steam-shortcut-tippy": "If enabled, instead of creating a shortcut on the desktop, it will be created in Steam." + "title": "Створити ярлик", + "desc": "Створення ярлика дозволить вам запускати Beat Saber з обраними опціями без використання BSManager.", + "launch-options": "Параметри запуску", + "advanced-launch": "Розширений запуск", + "valid-btn": "Створити ярлик", + "create-steam-shortcut": "Створити ярлик Steam", + "steam-shortcut-tippy": "Якщо ввімкнено, замість створення ярлика на робочому столі, його буде створено в Steam." }, "connect-to-meta": { - "title": "Connect to Meta", + "title": "Підключення до Meta", "body": { - "token-needed": "Your Meta connection token is required to download Beat Saber.", - "need-cookie-enabled": "By logging into Meta, a login window will open and you can then start the login process. Please ensure to accept cookies, otherwise, we might not be able to retrieve your token to start the download.", - "enter-token-manually": "Enter my login token manually", - "enter-token-manually-tooltip": "This will allow you to enter your login token without going through Meta login." + "token-needed": "Для завантаження Beat Saber потрібен ваш токен підключення Meta.", + "need-cookie-enabled": "При вході в Meta відкриється вікно входу, і ви зможете розпочати процес входу. Будь ласка, прийміть куки, інакше ми не зможемо отримати ваш токен для початку завантаження.", + "enter-token-manually": "Ввести мій токен входу вручну", + "enter-token-manually-tooltip": "Це дозволить вам ввести ваш токен входу без проходження входу через Meta." }, - "stay": "Remember me", - "connect-to-meta": "Connect to Meta" + "stay": "Запам'ятати мене", + "connect-to-meta": "Підключитися до Meta" }, "enable-oculus-sideloaded-apps": { - "title": "Enable Sideloading", - "info-1": "In order to launch Beat Saber, the ability to run sideloaded apps must be enabled. BSManager will request administrator rights to enable this feature automatically.", - "info-2": "The sideloaded apps feature allows launching games located outside your Oculus library folder.", - "info-3": "After sideloading is activated, the feature will remain active, and you will no longer be prompted to enable it.", - "i-want-to-do-it-myself": "I want to do it myself", - "understood": "Understood" + "title": "Увімкнути сайдлоадинг", + "info-1": "Для запуску Beat Saber потрібно ввімкнути можливість запуску сайдлоад додатків. BSManager запитає права адміністратора для автоматичного ввімкнення цієї функції.", + "info-2": "Функція сайдлоад додатків дозволяє запускати ігри, розташовані поза папкою бібліотеки Oculus.", + "info-3": "Після активації сайдлоадингу функція залишиться активною, і вас більше не проситимуть увімкнути її.", + "i-want-to-do-it-myself": "Я хочу зробити це самостійно", + "understood": "Зрозуміло" }, "enter-meta-token": { - "title": "Oculus Token", + "title": "Токен Oculus", "body": { - "info-enter-token": "To download Beat Saber, your Oculus login token is required.", - "how-obtain-token": "How do I obtain my Oculus Token?", - "oculus-token": "Oculus Token", - "token-is-invalid": "The Token is invalid.", - "save-my-token": "Save my token", - "have-token-saved": "I already have a token saved", - "save-token-info": "This will save your token for easier reuse. You will need to create a password to encrypt your token for storage purposes. If you ever forget your password, you just need to provide your token again.", - "password": "Password", - "password-too-short": "Password too short", - "info-enter-password": "To download Beat Saber, your Oculus login token is required. Enter the password used to save your Oculus token.", - "info-disabled-btn-password": "The token decrypted with the provided password is invalid. Make sure the password is the same as the one used to save the token.", - "enter-oculus-token": "Enter an Oculus token" + "info-enter-token": "Для завантаження Beat Saber потрібен ваш токен входу Oculus.", + "how-obtain-token": "Як отримати мій токен Oculus?", + "oculus-token": "Токен Oculus", + "token-is-invalid": "Токен недійсний.", + "save-my-token": "Зберегти мій токен", + "have-token-saved": "У мене вже є збережений токен", + "save-token-info": "Це збереже ваш токен для легшого повторного використання. Вам потрібно буде створити пароль для шифрування вашого токена для цілей зберігання. Якщо ви коли-небудь забудете пароль, вам просто потрібно буде надати токен знову.", + "password": "Пароль", + "password-too-short": "Пароль занадто короткий", + "info-enter-password": "Для завантаження Beat Saber потрібен ваш токен входу Oculus. Введіть пароль, використаний для збереження вашого токена Oculus.", + "info-disabled-btn-password": "Токен, розшифрований із наданим паролем, недійсний. Переконайтеся, що пароль такий самий, як той, що використовувався для збереження токена.", + "enter-oculus-token": "Введіть токен Oculus" }, - "valid-btn": "Validate" + "valid-btn": "Підтвердити" }, "launch-as-admin": { - "title": "Administrator Permissions", + "title": "Права адміністратора", "body": { - "info": "Steam has been detected as running with administrator permissions. To communicate with Steam, Beat Saber must also be launched as an administrator. Otherwise, Beat Saber might experience problems and close after launching.", - "info-2": "Launching Beat Saber in administrator mode will also give administrator rights to the installed mods. Therefore, it is recommended to restart Steam without administrator permissions.", - "info-3": "Note that it is advised against giving administrator rights to Steam, as this affects the installed games and mods, presenting a security risk." + "info": "Виявлено, що Steam працює з правами адміністратора. Для зв'язку зі Steam, Beat Saber також потрібно запустити як адміністратор. Інакше Beat Saber може зіткнутися з проблемами і закритися після запуску.", + "info-2": "Запуск Beat Saber в режимі адміністратора також надасть права адміністратора встановленим модам. Тому рекомендується перезапустити Steam без прав адміністратора.", + "info-3": "Зауважте, що не рекомендується надавати права адміністратора Steam, оскільки це впливає на встановлені ігри та моди, створюючи ризик безпеки." }, - "launch-as-admin": "Launch as Administrator", - "not-remind-me": "Do not remind me" + "launch-as-admin": "Запустити як адміністратор", + "not-remind-me": "Не нагадувати мені" }, "ask-install-path": { - "title": "Installation folder", - "choose-folder-description": "Choose the folder that will contain all the content downloaded by BSManager. (versions, mods, maps, playlists, etc.)", - "default": "Default", - "default-tooltip": "Defaults to your home folder" + "title": "Папка встановлення", + "choose-folder-description": "Виберіть папку, яка міститиме весь вміст, завантажений BSManager. (версії, моди, карти, плейлисти тощо)", + "default": "За замовчуванням", + "default-tooltip": "За замовчуванням ваша домашня папка" }, "choose-proton-folder": { - "title": "Proton Folder", - "proton-folder-description": "On Linux, BSManager requires Proton to work. Choose the Proton installation folder to continue.", - "proton-folder-placeholder": "Proton installation folder", - "where-is-proton-installed": "Where is Proton installed?" + "title": "Папка Proton", + "proton-folder-description": "На Linux, BSManager потребує Proton для роботи. Виберіть папку встановлення Proton, щоб продовжити.", + "proton-folder-placeholder": "Папка встановлення Proton", + "where-is-proton-installed": "Де встановлено Proton?" }, "bs-version-outdated": { - "body": "The version {outdatedVersion} is outdated, and some mods or features may no longer work as expected. Please download the latest recommended version ({recommendedVersion}) of Beat Saber to enjoy the latest features and bugfixes." - } - }, - "maps": { - "map-filter-panel": { - "duration": "Duration", - "nps": "Notes Per Second", - "njs": "Note Jump Speed", - "tags": "tags", - "specificities": "general", - "requirements": "requirements", - "exclude": "exclude", - "leaderboard": "leaderboard" + "body": "Версія {outdatedVersion} застаріла, і деякі моди чи функції можуть більше не працювати належним чином. Будь ласка, завантажте останню рекомендовану версію ({recommendedVersion}) Beat Saber, щоб насолоджуватися останніми функціями та виправленнями помилок." }, - "map-types": { - "accuracy": "accuracy", - "balanced": "balanced", - "challenge": "challenge", - "dance-style": "dance", - "fitness": "fitness", - "speed": "speed", - "tech": "tech" - }, - "map-styles": { - "dance": "dance", - "swing": "swing", - "nightcore": "nightcore", - "folk-acoustic": "folk & acoustic", - "kids-family": "kids & family", - "ambient": "ambient", - "funk-disco": "funk & disco", - "jazz": "jazz", - "soul": "soul", - "speedcore": "speedcore", - "punk": "punk", - "rb": "r&b", - "holiday": "holiday", - "vocaloid": "vocaloid", - "j-rock": "j-rock", - "trance": "trance", - "drum-and-bass": "drum & bass", - "comedy-meme": "comedy & meme", - "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": "alternative", - "dubstep": "dubstep", - "metal": "metal", - "anime": "anime", - "hip-hop-rap": "hip hop & rap", - "j-pop": "j-pop", - "rock": "rock", - "pop": "pop", - "electronic": "electronic", - "classical-orchestral": "Classical & Orchestral" - }, - "map-specificities": { - "automapper": "AI", - "curated": "curated", - "verified": "verified", - "fullSpread": "full spread" - }, - "map-leaderboard": { - "All": "All", - "Ranked": "Ranked", - "BeatLeader": "BeatLeader", - "ScoreSaber": "ScoreSaber" - }, - "map-excludes": { - "installed": "installed" - }, - "difficulties": { - "Easy": "easy", - "Normal": "normal", - "Hard": "hard", - "Expert": "expert", - "ExpertPlus": "expert+" - }, - "map-item": { - "by": "By {songAutor}", - "mapped-by": "mapped by", - "delete": "Delete", - "preview": "Preview map", - "bsr-code": "BSR code", - "download": "Download map", - "downloading": "Downloading map", - "cancel-download": "Cancel download", - "hightlight-difficulty": "Highlight difficulty" + "maps": { + "map-filter-panel": { + "duration": "Тривалість", + "nps": "Нот за секунду", + "njs": "Швидкість стрибка нот", + "tags": "теги", + "specificities": "загальне", + "requirements": "вимоги", + "exclude": "виключити", + "leaderboard": "таблиця лідерів" + }, + "map-types": { + "accuracy": "точність", + "balanced": "збалансовані", + "challenge": "виклик", + "dance-style": "танець", + "fitness": "фітнес", + "speed": "швидкість", + "tech": "техніка" + }, + "map-styles": { + "dance": "танцювальні", + "swing": "свінг", + "nightcore": "найткор", + "folk-acoustic": "фолк і акустика", + "kids-family": "для дітей і сім'ї", + "ambient": "ембієнт", + "funk-disco": "фанк і диско", + "jazz": "джаз", + "soul": "соул", + "speedcore": "спідкор", + "punk": "панк", + "rb": "r&b", + "holiday": "святкові", + "vocaloid": "вокалоїд", + "j-rock": "j-rock", + "trance": "транс", + "drum-and-bass": "драм-н-бейс", + "comedy-meme": "комедія і меми", + "instrumental": "інструментальні", + "hardcore": "хардкор", + "k-pop": "k-pop", + "indie": "інді", + "techno": "техно", + "house": "хаус", + "video-game-soundtrack": "відеоігри", + "tv-movie-soundtrack": "ТБ і фільми", + "alternative": "альтернатива", + "dubstep": "дабстеп", + "metal": "метал", + "anime": "аніме", + "hip-hop-rap": "хіп-хоп і реп", + "j-pop": "j-pop", + "rock": "рок", + "pop": "поп", + "electronic": "електронна", + "classical-orchestral": "Класична і оркестрова" + }, + "map-specificities": { + "automapper": "ШІ", + "curated": "куровані", + "verified": "перевірені", + "fullSpread": "повний набір" + }, + "map-leaderboard": { + "All": "Всі", + "Ranked": "Ранговані", + "BeatLeader": "BeatLeader", + "ScoreSaber": "ScoreSaber" + }, + "map-excludes": { + "installed": "встановлені" + }, + "difficulties": { + "Easy": "легкий", + "Normal": "нормальний", + "Hard": "складний", + "Expert": "експерт", + "ExpertPlus": "експерт+" + }, + "map-item": { + "by": "Від {songAutor}", + "mapped-by": "автор карти", + "delete": "Видалити", + "preview": "Попередній перегляд карти", + "bsr-code": "BSR код", + "download": "Завантажити карту", + "downloading": "Завантаження карти", + "cancel-download": "Скасувати завантаження", + "hightlight-difficulty": "Виділити складність" + } } }, "models": { "types": { "singular": { - "avatar": "avatar", - "saber": "saber", - "platform": "platform", - "bloq": "block" + "avatar": "аватар", + "saber": "шпага", + "platform": "платформа", + "bloq": "блок" }, "plural": { - "avatar": "avatars", - "saber": "sabers", - "platform": "platforms", - "bloq": "blocks" + "avatar": "аватари", + "saber": "шпаги", + "platform": "платформи", + "bloq": "блоки" } }, "sorts": { - "name": "Name", - "date": "Date", - "author": "Author" + "name": "Ім'я", + "date": "Дата", + "author": "Автор" }, "panel": { "actions": { - "search": "Search a model", + "search": "Пошук завантажених моделей", "drop-down": { - "delete": "Delete models", - "export": "Export models" + "delete": "Видалити моделі", + "export": "Експортувати моделі" }, - "link-models": "Link models", - "unlink-models": "Unlink models" + "link-models": "Зв'язати моделі", + "unlink-models": "Відв'язати моделі" }, "grid": { - "loading": "Loading models...", - "no-models": "No models", - "download-models": "Download models" + "loading": "Завантаження моделей...", + "no-models": "Немає моделей", + "download-models": "Завантажити моделі" } }, "modals": { "delete-model": { - "title": "Delete the model", - "desc": "Are you sure you want to delete the model {modelName}?", - "linked-annotation": "This model will be removed from all linked versions." + "title": "Видалити модель", + "desc": "Ви впевнені, що хочете видалити модель {modelName}?", + "linked-annotation": "Цю модель буде видалено з усіх пов'язаних версій." }, "delete-models": { - "title": "Delete models", - "desc": "Are you sure you want to delete the {nb} models?", - "linked-annotation": "These models will be removed from all linked versions." + "title": "Видалити моделі", + "desc": "Ви впевнені, що хочете видалити {nb} модел(-і/-ей)?", + "linked-annotation": "Ці моделі буде видалено з усіх пов'язаних версій." }, "download-models": { - "search-btn": "Search", - "search-placeholder": "Search a model", + "search-btn": "Пошук", + "search-placeholder": "Пошук моделі", "search-tips": { "header": { - "tag": "Tag", - "desc": "Description" + "tag": "Тег", + "desc": "Опис" }, - "author-desc": "Show only models from the specified author.", - "hash-desc": "Show only models with the specified hash.", - "tag-desc": "Show only models with the specified tag.", - "name-desc": "Show only models with the specified name.", - "discordid-desc": "Show only models from the specified discord user.", - "status-desc": "Show only models with the specified status. (profile only, and only for the author)" + "author-desc": "Показати лише моделі від вказаного автора.", + "hash-desc": "Показати лише моделі з вказаним хешем.", + "tag-desc": "Показати лише моделі з вказаним тегом.", + "name-desc": "Показати лише моделі з вказаною назвою.", + "discordid-desc": "Показати лише моделі від вказаного користувача Discord.", + "status-desc": "Показати лише моделі з вказаним статусом. (тільки для профілю і лише для автора)" }, - "no-models": "No models found.", - "no-internet": "No internet connection.", - "error-occurred": "An error occurred, try again later." + "no-models": "Моделей не знайдено.", + "no-internet": "Немає підключення до інтернету.", + "error-occurred": "Сталася помилка, спробуйте пізніше." } }, "notifications": { "prevent-for-mods": { - "title": "Required mods", - "desc": "Make sure you've installed the necessary mods to use models in Beat Saber", - "go-to-mods": "Go to mods", - "not-remind": "Don't remind me" + "title": "Необхідні моди", + "desc": "Переконайтеся, що ви встановили необхідні моди для використання моделей у Beat Saber", + "go-to-mods": "Перейти до модів", + "not-remind": "Не нагадувати" }, "export-success": { - "title": "Export completed 🎉" + "title": "Експорт завершено 🎉" } } }, "beat-saver": { "maps-sorts": { - "Latest": "Latest", - "Relevance": "Relevance", - "Rating": "Rating", - "Curated": "Curated" + "Latest": "Останні", + "Relevance": "Актуальні", + "Rating": "Рейтинг", + "Curated": "Оцінені куратором" } }, "auto-update": { - "checking": "Checking for updates", - "downloading": "Downloading updates" + "checking": "Перевірка оновлень", + "downloading": "Завантаження оновлень" }, "bs-shortcut-launch": { - "beat-saber-launching": "Launching Beat Saber", - "launching": "Launching", - "open-bsmanager": "Open BSManager", + "beat-saber-launching": "Запуск Beat Saber", + "launching": "Запуск", + "open-bsmanager": "Відкрити BSManager", "status-text": { - "init": "Initializing...", + "init": "Ініціалізація...", "success": { - "BS_LAUNCHING": "Launching Beat Saber...", - "STEAM_LAUNCHING": "Launching Steam...", - "STEAM_LAUNCHED": "Steam successfully launched!", - "UNABLE_TO_LAUNCH_STEAM": "Unable to launch Steam, forcing Beat Saber launch..." + "BS_LAUNCHING": "Запуск Beat Saber...", + "STEAM_LAUNCHING": "Запуск Steam...", + "STEAM_LAUNCHED": "Steam успішно запущено!", + "UNABLE_TO_LAUNCH_STEAM": "Не вдалося запустити Steam, спроба запустити Beat Saber..." } } }, "drop-zone": { - "or-browse-files": "Or browse files" + "or-browse-files": "Або перегляньте файли" }, "playlist": { - "error-playlist-creation-title": "Error creating playlist", - "error-playlist-creation-desc": "An error occurred while creating the playlist.", - "playlist-created-title": "Playlist created", - "playlist-created-desc": "The playlist has been successfully created. You can now sync its maps!", - "download-playlist": "Download playlist", - "synchronize-playlist": "Synchronize playlist", - "synchronize-maps": "Synchronize maps", - "error-playlists-synchronization-title": "Error synchronizing playlists", - "error-playlists-synchronization-desc": "An error occurred while synchronizing playlists.", - "playlists-synchronized-title": "Playlists synchronized!", - "playlists-synchronized-desc": "Playlists and their maps have been downloaded.", - "playlists-export-error-title": "Error exporting playlists", - "playlists-export-error-desc": "An error occurred while exporting playlists.", - "playlists-exported-title": "Playlists exported!", - "playlists-exported-desc": "Playlists have been successfully exported.", - "playlists-with-maps-exported-desc": "Playlists and their maps have been successfully exported.", - "playlist-delete-error-title": "Error deleting playlist", - "playlist-delete-error-desc": "An error occurred while deleting the playlist.", - "playlists-deleted-title": "Playlists deleted!", - "playlists-deleted-desc": "Playlists have been successfully deleted.", - "edit-playlist": "Edit playlist", - "playlist-edit-error-title": "Error editing playlist", - "playlist-edit-error-desc": "An error occurred while editing the playlist.", - "playlist-edited-title": "Playlist edited!", - "playlist-edited-desc": "The playlist has been successfully modified. You can now sync its maps!", - "playlists-loading": "Loading playlists...", - "no-playlists": "No playlists", - "download-playlists": "Download playlists", - "created-by": "Created by", - "stop-download": "Stop download", - "cancel-download": "Cancel download", - "open-file": "Open file", - "delete-playlist-ask": "Delete playlist?", - "delete-playlists-ask": "Delete playlists?", - "delete-playlist-desc": "Are you sure you want to delete the playlist \"{playlistTitle}\"?", - "delete-playlists-desc": "Are you sure you want to delete {nb} playlists?", - "delete-maps": "Delete maps", - "delete-playlist-maps-tip": "If enabled, all maps in the playlist will be deleted", - "delete-playlists-maps-tip": "If enabled, all maps in the playlists will be deleted", - "export-playlist-ask": "Export playlist?", - "export-playlists-ask": "Export playlists?", - "export-playlist-desc": "Are you sure you want to export the playlist \"{playlistTitle}\"?", - "export-playlists-desc": "Are you sure you want to export {nb} playlists?", - "export-maps": "Export maps", - "export-playlist-maps-tip": "If enabled, all maps in the playlist will also be exported", - "export-playlists-maps-tip": "If enabled, all maps in the playlists will also be exported", - "export": "Export", - "need-clone-title": "Warning", - "need-clone-desc-1": "This playlist has been downloaded from an external site and contains a synchronization link.", - "need-clone-desc-2": "To avoid losing your changes during synchronization, the playlist will be duplicated and its synchronization link removed.", - "need-clone-desc-3": "You can then, if you wish, delete the original playlist.", - "understood": "I understand", - "synchronize-playlist-ask": "Synchronize playlist?", - "synchronize-playlists-ask": "Synchronize playlists?", - "synchronize-playlist-desc": "Are you sure you want to synchronize the playlist \"{playlistTitle}\"?", - "synchronize-playlists-desc": "Are you sure you want to synchronize {nb} playlists?", - "synchronize-playlist-tip": "This action updates playlists and downloads missing maps; it may take several minutes.", - "synchronize": "Synchronize", - "curated": "Recommended", - "verified-mapper": "Verified mapper", - "empty-playlists": "Empty playlists", - "search-playlist": "Search for a playlist", - "no-playlists-found": "No playlists found", - "error-occur-while-loading-playlists": "An error occurred while loading playlists", - "error-occur-while-loading-playlist": "An error occurred while loading the playlist", - "loading-maps": "Loading maps...", - "no-maps-found-for-playlist": "No maps found for this playlist", - "playlist-contain-no-maps": "The playlist contains no maps", - "no-map-installed-for-playlist": "No maps installed for this playlist", - "playlist-is-waiting-to-download": "The playlist is waiting to download", - "download-maps": "Download maps", - "download-missing-maps": "Download missing maps", - "playlist-is-downloading": "The playlist is downloading", - "some-playlist-maps-are-missing": "Some maps in this playlist are missing", - "create-a-playlist": "Create a playlist", - "synchronize-playlists": "Synchronize playlists", - "export-playlists": "Export playlists", - "delete-playlists": "Delete playlists", - "choose-image": "Choose an image", - "title": "Title", - "playlist-title": "Playlist title", - "description": "Description", - "playlist-description": "Playlist description", - "author": "Author", - "playlist-author": "Playlist author", - "save": "Save", - "loading": "Loading...", - "installed": "Installed", - "no-map-found": "No map found", - "edit-playlist-shortcuts": "Hold Shift or Ctrl to select multiple maps", - "add-to-playlist": "Add to playlist", - "remove-from-playlist": "Remove from playlist", - "playlist-is-empty": "The playlist is empty", - "continue": "Continue", - "nb-maps": "Number of maps", - "nb-mappers": "Number of mappers", - "duration": "Duration", - "nps": "Notes per second", + "error-playlist-creation-title": "Помилка створення списку", + "error-playlist-creation-desc": "Виникла помилка під час створення списку.", + "playlist-created-title": "Список створюється", + "playlist-created-desc": "Список успішно створений. Тепер ви можете синхронізувати його карти!", + "download-playlist": "Завантажити список", + "synchronize-playlist": "Синхронізувати список", + "synchronize-maps": "Синхронізувати карти", + "error-playlists-synchronization-title": "Помилка синхронізації списків", + "error-playlists-synchronization-desc": "Виникла помилка під час синхронізації списків.", + "playlists-synchronized-title": "Списки синхронізовані!", + "playlists-synchronized-desc": "Списки та їх карти завантажені.", + "playlists-export-error-title": "Помилка експорту списків", + "playlists-export-error-desc": "Виникла помилка під час експорту списків.", + "playlists-exported-title": "Списки експортовані!", + "playlists-exported-desc": "Списки успішно експортовані.", + "playlists-with-maps-exported-desc": "Списки та їх карти успішно експортовані.", + "playlist-delete-error-title": "Помилка видалення списку", + "playlist-delete-error-desc": "Виникла помилка під час видалення списку.", + "playlists-deleted-title": "Списки видалені!", + "playlists-deleted-desc": "Списки успішно видалені.", + "edit-playlist": "Редагувати список", + "playlist-edit-error-title": "Помилка редагування списку", + "playlist-edit-error-desc": "Виникла помилка під час редагування списку.", + "playlist-edited-title": "Список змінений!", + "playlist-edited-desc": "Список успішно змінений. Тепер ви можете синхронізувати його карти!", + "playlists-loading": "Завантаження списків...", + "no-playlists": "Немає списоків", + "download-playlists": "Завантажити списки", + "created-by": "Створено", + "stop-download": "Припинити завантаження", + "cancel-download": "Скасувати завантаження", + "open-file": "Відкрити файл", + "delete-playlist-ask": "Видалити список?", + "delete-playlists-ask": "Видалити списки?", + "delete-playlist-desc": "Ви впевнені, що хочете видалити список \"{playlistTitle}\"?", + "delete-playlists-desc": "Ви впевнені, що хочете видалити {nb} списк(-и/-ів)?", + "delete-maps": "Видалити карти", + "delete-playlist-maps-tip": "Якщо включено, всі карти в списку будуть видалені", + "delete-playlists-maps-tip": "Якщо включено, всі карти в списках будуть видалені", + "export-playlist-ask": "Експортувати список?", + "export-playlists-ask": "Експортувати списки?", + "export-playlist-desc": "Ви впевнені, що хочете експортувати список \"{playlistTitle}\"?", + "export-playlists-desc": "Ви впевнені, що хочете експортувати {nb} списк(-и/-ів)?", + "export-maps": "Експортувати карти", + "export-playlist-maps-tip": "Якщо включено, всі карти в списку будуть також експортовані", + "export-playlists-maps-tip": "Якщо включено, всі карти в списках будуть також експортовані", + "export": "Експортувати", + "need-clone-title": "Повідомлення", + "need-clone-desc-1": "Цей список завантажений з зовнішнього сайту та містить посилання на синхронізацію.", + "need-clone-desc-2": "Для уникнення втрати змін під час синхронізації, список буде дубльований та його посилання на синхронізацію буде видалене", + "need-clone-desc-3": "Ви можете потім, якщо захочете, видалити оригінальний список", + "understood": "Я розумію", + "synchronize-playlist-ask": "Синхронізувати список?", + "synchronize-playlists-ask": "Синхронізувати списки?", + "synchronize-playlist-desc": "Ви впевнені, що хочете синхронізувати список \"{playlistTitle}\"?", + "synchronize-playlists-desc": "Ви впевнені, що хочете синхронізувати {nb} списк(-и/-ів)?", + "synchronize-playlist-tip": "Ця дія оновлює списки та завантажує відсутні карти; вона може зайняти кілька хвилин", + "synchronize": "Синхронізувати", + "curated": "Рекомендовані", + "verified-mapper": "Перевірений маппер", + "empty-playlists": "Порожні списки", + "search-playlist": "Шукати списки", + "no-playlists-found": "Немає списків", + "error-occur-while-loading-playlists": "Виникла помилка під час завантаження списків", + "error-occur-while-loading-playlist": "Виникла помилка під час завантаження списку", + "loading-maps": "Завантаження карт...", + "no-maps-found-for-playlist": "Для цього списку не знайдено карт", + "playlist-contain-no-maps": "Список не містить жодної карти", + "no-map-installed-for-playlist": "Для цього списку не встановлено карт", + "playlist-is-waiting-to-download": "Список чекає на завантаження", + "download-maps": "Завантажити карти", + "download-missing-maps": "Завантажити відсутні карти", + "playlist-is-downloading": "Список завантажується", + "some-playlist-maps-are-missing": "Деякі карти в цьому списку відсутні", + "create-a-playlist": "Створіть список", + "synchronize-playlists": "Синхронізувати списки", + "export-playlists": "Експортувати списки", + "delete-playlists": "Видалити списки", + "choose-image": "Оберіть зображення", + "title": "Назва", + "playlist-title": "Назва списку", + "description": "Опис", + "playlist-description": "Опис списку", + "author": "Автор", + "playlist-author": "Автор списку", + "save": "Зберегти", + "loading": "Завантаження...", + "installed": "Встановлено", + "no-map-found": "Нічого не знайдено", + "edit-playlist-shortcuts": "Натисніть Shift або Ctrl, щоб обрати кілька карт", + "add-to-playlist": "Додати до списку", + "remove-from-playlist": "Видалити з списку", + "playlist-is-empty": "Список порожній", + "continue": "Продовжити", + "nb-maps": "Кількість карт", + "nb-mappers": "Кількість виконавців", + "duration": "Тривалість", + "nps": "Нот в секунду (NPS)", "date-picker": { - "start-date-end-date": "Start date — End date", - "all": "All", - "last-24h": "Last 24h", - "last-week": "Last week", - "last-month": "Last month", - "3-last-month": "Last 3 months" + "start-date-end-date": "Дата початку — Дата завершення", + "all": "Всі", + "last-24h": "Останні 24 години", + "last-week": "Остання неділя", + "last-month": "Останній місяць", + "3-last-month": "Останні 3 місяці" }, - "playlists-imported": "Playlists imported", - "all-playlists-have-been-successfully-imported": "All playlists have been successfully imported", - "no-playlist-found": "No playlist found", - "no-playlist-found-in-selected-files": "No playlist found in the selected files", - "some-playlists-not-imported": "Some playlists not imported", + "playlists-imported": "Списки імпортовані", + "all-playlists-have-been-successfully-imported": "Всі списки успішно імпортовані", + "no-playlist-found": "Нічого не знайдено", + "no-playlist-found-in-selected-files": "Нічого не знайдено серед обраних файлів", + "some-playlists-not-imported": "Нечи списки не імпортовані", "some-playlists-have-been-imported": { - "INVALID_SOURCE": "Some playlists could not be found", - "INVALID_PLAYLIST_FILE": "Some playlists are invalid", - "CANNOT_PARSE_PLAYLIST": "Some playlists are unreadable", - "unknown": "Some playlists could not be imported" + "INVALID_SOURCE": "Деякі списки не знайдені", + "INVALID_PLAYLIST_FILE": "Деякі списки не можуть бути імпортовані", + "CANNOT_PARSE_PLAYLIST": "Деякі списки не можуть бути прочитані", + "unknown": "Деякі списки не можуть бути імпортовані" }, - "no-playlists-imported": "No playlists imported", + "no-playlists-imported": "Нічого не імпортовано", "no-playlists-imported-errors": { - "INVALID_SOURCE": "Playlists could not be found", - "INVALID_PLAYLIST_FILE": "Playlists are invalid", - "CANNOT_PARSE_PLAYLIST": "Playlists are unreadable", - "unknown": "No playlist could be imported" + "INVALID_SOURCE": "Списки не знайдено", + "INVALID_PLAYLIST_FILE": "Списки не можуть бути імпортовані", + "CANNOT_PARSE_PLAYLIST": "Списки не можуть бути прочитані", + "unknown": "Нічого не імпортовано" } }, "dateformat": { - "dayNames": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - "monthNames": ["Jan", "Feb", "Mar", "Apr", "May", "June", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + "dayNames": ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"], + "monthNames": ["Січ", "Лют", "Бер", "Кві", "Тра", "Чер", "Лип", "Сер", "Вер", "Жов", "Лис", "Гру", "Січень", "Лютий", "Березень", "Квітень", "Травень", "Червень", "Липень", "Серпень", "Вересень", "Жовтень", "Листопад", "Грудень"], "timeNames": ["a", "p", "am", "pm", "A", "P", "AM", "PM"] } } From abacf5f628a60290e03672a3f6ebe2c43bd33359 Mon Sep 17 00:00:00 2001 From: HighError Date: Thu, 30 Jan 2025 16:15:14 +0200 Subject: [PATCH 03/21] Fixed rounded flag --- .../svgs/flags/ukraine-icon.component copy.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/renderer/components/svgs/flags/ukraine-icon.component copy.tsx b/src/renderer/components/svgs/flags/ukraine-icon.component copy.tsx index 68571453..d341ac28 100644 --- a/src/renderer/components/svgs/flags/ukraine-icon.component copy.tsx +++ b/src/renderer/components/svgs/flags/ukraine-icon.component copy.tsx @@ -1,12 +1,12 @@ import { CSSProperties } from "react"; +// Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools + export function UkraineIcon(props: { className?: string; style?: CSSProperties }) { return ( - - - - - + + + ); } From a2a0c4e00ef61f742ae98db7b9212b09217d7123 Mon Sep 17 00:00:00 2001 From: HighError Date: Thu, 30 Jan 2025 16:25:28 +0200 Subject: [PATCH 04/21] fixed some mistypes --- assets/jsons/translations/uk.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/assets/jsons/translations/uk.json b/assets/jsons/translations/uk.json index be38ed80..edafa588 100644 --- a/assets/jsons/translations/uk.json +++ b/assets/jsons/translations/uk.json @@ -6,7 +6,7 @@ "launch": "Запустити", "mods": "Моди", "maps": "Карти", - "playlists": "Прейлисти", + "playlists": "Плейлисти", "models": "Моделі", "avatars": "Аватари", "sabers": "Шпаги", @@ -25,12 +25,12 @@ "warning": "Увага", "continue": "Продовжити", "shared": "Спільне", - "pin": "Закріпти", + "pin": "Закріпити", "unpin": "Відкріпити" }, "generic": { "env": { - "parse": "Не вдалось розібрати рядок змінної оточення" + "parse": "Не вдалося розібрати рядок змінної оточення" } }, "title-bar": { @@ -50,16 +50,16 @@ "oculus": "Режим Oculus", "oculus-description": "Якщо ви використовуєте Beat Saber через Steam, це дозволяє використовувати Oculus VR в обхід SteamVR, для потенційного приросту продуктивності. Це не обов'язково для Oculus.", "desktop": "Режим FPFC", - "desktop-description": "Режим літаючих контроллерів від першого лиця дозволяє використовувати меню за допомогою WASD і мишки. Це облегшує тестування модів, так як гра запускається без використання шолому VR!", + "desktop-description": "Режим літаючих контролерів від першого лиця дозволяє використовувати меню за допомогою WASD і мишки. Це облегшує тестування модів, так як гра запускається без використання шолому VR!", "debug": "Режим відладки", - "debug-description": "Включає вікно логів для IPA. В вікні будуть відображатись логи модів.", - "outdated-tippy": "Ця версія застаріла і деякі моди і/або функції можуть працювати некоректно. Рекомендуємо використовувати версію ({recommendedVersion}), щоб скористатись останніми функціями і виправленнями.", + "debug-description": "Включає вікно логів для IPA. У вікні будуть відображатись логи модів.", + "outdated-tippy": "Ця версія застаріла і деякі моди і/або функції можуть працювати некоректно. Рекомендуємо використовувати версію ({recommendedVersion}), щоб скористатися останніми функціями і виправленнями.", "advanced-launch": { "button": "Параметри запуску", "placeholder": "Параметри запуску, наприклад: KEY=VALUE %command% fpfc" }, "skipsteam": "Пропустити Steam", - "skipsteam-description": "Запобігає автоматичному відкриттю Steam. Включіть це, якщо ви використовуєте інше серидовище VR (WiVRn/Monado), з яким Steam праює некоректно.", + "skipsteam-description": "Запобігає автоматичному відкриттю Steam. Увімкніть це, якщо ви використовуєте інше серидовище VR (WiVRn/Monado), з яким Steam праює некоректно.", "map-editor": "Редактор карт", "map-editor-description": "Запускає офіційний редактор карт Beat Saber замість гри.", "proton-logs": "Протонний журнал", @@ -100,7 +100,7 @@ "sort": { "name": "Назва", "song-author": "Автор пісні", - "map-author": "Авто карти", + "map-author": "Автор карти", "bpm": "BPM", "duration": "Довжина", "likes": "Лайки", @@ -109,7 +109,7 @@ }, "playlists": { "drop-down": { - "browse-playlists": "Переглнянути плейлист", + "browse-playlists": "Переглянути плейлист", "create-a-playlist": "Створити плейлист", "import-playlists": "Імпортувати плейлист" }, @@ -169,7 +169,7 @@ } }, "dropdown": { - "open-folder": "Відкрийте папку", + "open-folder": "Відкрити папку", "verify-files": "Перевірити файли", "clone": "Клонувати", "edit": "Змінити", @@ -183,7 +183,7 @@ "steam-release": "Сторінка релізу", "dropdown": { "refresh": "Оновити версії", - "import-version": "Іспортувати версію" + "import-version": "Імпортувати версію" }, "recommended": "рекомендована", "recommended-tooltip": "Найбільш модифікована версія" From 2262f1d2ce9f41d1435a9417a66eb15bd2a1ccce Mon Sep 17 00:00:00 2001 From: HighError Date: Thu, 30 Jan 2025 16:47:50 +0200 Subject: [PATCH 05/21] renamed list to playlist --- assets/jsons/translations/uk.json | 158 +++++++++++++++--------------- 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/assets/jsons/translations/uk.json b/assets/jsons/translations/uk.json index edafa588..c89ad5ed 100644 --- a/assets/jsons/translations/uk.json +++ b/assets/jsons/translations/uk.json @@ -861,7 +861,7 @@ "link-folder": "Прив'язати папку", "unlink-folder": "Відв'язати папку", "link-all": "Прив'язати все", - "remove-from-the-list": "Видалити зі списку" + "remove-from-the-list": "Видалити зі плейслисту" } }, "adding-shared-folder": { @@ -1141,99 +1141,99 @@ "or-browse-files": "Або перегляньте файли" }, "playlist": { - "error-playlist-creation-title": "Помилка створення списку", - "error-playlist-creation-desc": "Виникла помилка під час створення списку.", - "playlist-created-title": "Список створюється", - "playlist-created-desc": "Список успішно створений. Тепер ви можете синхронізувати його карти!", - "download-playlist": "Завантажити список", - "synchronize-playlist": "Синхронізувати список", + "error-playlist-creation-title": "Помилка створення плейлисту", + "error-playlist-creation-desc": "Виникла помилка під час створення плейлисту.", + "playlist-created-title": "Плейлист створюється", + "playlist-created-desc": "Плейлист успішно створений. Тепер ви можете синхронізувати його карти!", + "download-playlist": "Завантажити плейлист", + "synchronize-playlist": "Синхронізувати плейлист", "synchronize-maps": "Синхронізувати карти", - "error-playlists-synchronization-title": "Помилка синхронізації списків", - "error-playlists-synchronization-desc": "Виникла помилка під час синхронізації списків.", - "playlists-synchronized-title": "Списки синхронізовані!", - "playlists-synchronized-desc": "Списки та їх карти завантажені.", - "playlists-export-error-title": "Помилка експорту списків", - "playlists-export-error-desc": "Виникла помилка під час експорту списків.", - "playlists-exported-title": "Списки експортовані!", - "playlists-exported-desc": "Списки успішно експортовані.", - "playlists-with-maps-exported-desc": "Списки та їх карти успішно експортовані.", - "playlist-delete-error-title": "Помилка видалення списку", - "playlist-delete-error-desc": "Виникла помилка під час видалення списку.", - "playlists-deleted-title": "Списки видалені!", - "playlists-deleted-desc": "Списки успішно видалені.", - "edit-playlist": "Редагувати список", - "playlist-edit-error-title": "Помилка редагування списку", - "playlist-edit-error-desc": "Виникла помилка під час редагування списку.", - "playlist-edited-title": "Список змінений!", - "playlist-edited-desc": "Список успішно змінений. Тепер ви можете синхронізувати його карти!", - "playlists-loading": "Завантаження списків...", - "no-playlists": "Немає списоків", - "download-playlists": "Завантажити списки", + "error-playlists-synchronization-title": "Помилка синхронізації плейлистів", + "error-playlists-synchronization-desc": "Виникла помилка під час синхронізації плейлистів.", + "playlists-synchronized-title": "Плейлисти синхронізовані!", + "playlists-synchronized-desc": "Плейлисти та їх карти завантажені.", + "playlists-export-error-title": "Помилка експорту плейлистів", + "playlists-export-error-desc": "Виникла помилка під час експорту плейлистів.", + "playlists-exported-title": "Плейлисти експортовані!", + "playlists-exported-desc": "Плейлисти успішно експортовані.", + "playlists-with-maps-exported-desc": "Плейлисти та їх карти успішно експортовані.", + "playlist-delete-error-title": "Помилка видалення плейлисту", + "playlist-delete-error-desc": "Виникла помилка під час видалення плейлисту.", + "playlists-deleted-title": "Плейлисти видалені!", + "playlists-deleted-desc": "Плейлисти успішно видалені.", + "edit-playlist": "Редагувати плейлист", + "playlist-edit-error-title": "Помилка редагування плейлисту", + "playlist-edit-error-desc": "Виникла помилка під час редагування плейлисту.", + "playlist-edited-title": "Плейлист змінений!", + "playlist-edited-desc": "Плейлист успішно змінений. Тепер ви можете синхронізувати його карти!", + "playlists-loading": "Завантаження плейлистів...", + "no-playlists": "Немає плейлистів", + "download-playlists": "Завантажити плейлисти", "created-by": "Створено", "stop-download": "Припинити завантаження", "cancel-download": "Скасувати завантаження", "open-file": "Відкрити файл", - "delete-playlist-ask": "Видалити список?", - "delete-playlists-ask": "Видалити списки?", - "delete-playlist-desc": "Ви впевнені, що хочете видалити список \"{playlistTitle}\"?", - "delete-playlists-desc": "Ви впевнені, що хочете видалити {nb} списк(-и/-ів)?", + "delete-playlist-ask": "Видалити плейлист?", + "delete-playlists-ask": "Видалити плейлисти?", + "delete-playlist-desc": "Ви впевнені, що хочете видалити плейлист \"{playlistTitle}\"?", + "delete-playlists-desc": "Ви впевнені, що хочете видалити {nb} плейлист(-и/-ів)?", "delete-maps": "Видалити карти", - "delete-playlist-maps-tip": "Якщо включено, всі карти в списку будуть видалені", - "delete-playlists-maps-tip": "Якщо включено, всі карти в списках будуть видалені", - "export-playlist-ask": "Експортувати список?", - "export-playlists-ask": "Експортувати списки?", - "export-playlist-desc": "Ви впевнені, що хочете експортувати список \"{playlistTitle}\"?", - "export-playlists-desc": "Ви впевнені, що хочете експортувати {nb} списк(-и/-ів)?", + "delete-playlist-maps-tip": "Якщо включено, всі карти в плейлисті будуть видалені", + "delete-playlists-maps-tip": "Якщо включено, всі карти в плейлистах будуть видалені", + "export-playlist-ask": "Експортувати плейлист?", + "export-playlists-ask": "Експортувати плейлисти?", + "export-playlist-desc": "Ви впевнені, що хочете експортувати плейлист \"{playlistTitle}\"?", + "export-playlists-desc": "Ви впевнені, що хочете експортувати {nb} плейлист(-и/-ів)?", "export-maps": "Експортувати карти", - "export-playlist-maps-tip": "Якщо включено, всі карти в списку будуть також експортовані", - "export-playlists-maps-tip": "Якщо включено, всі карти в списках будуть також експортовані", + "export-playlist-maps-tip": "Якщо включено, всі карти в плейлисті будуть також експортовані", + "export-playlists-maps-tip": "Якщо включено, всі карти в плейлистах будуть також експортовані", "export": "Експортувати", "need-clone-title": "Повідомлення", - "need-clone-desc-1": "Цей список завантажений з зовнішнього сайту та містить посилання на синхронізацію.", - "need-clone-desc-2": "Для уникнення втрати змін під час синхронізації, список буде дубльований та його посилання на синхронізацію буде видалене", - "need-clone-desc-3": "Ви можете потім, якщо захочете, видалити оригінальний список", + "need-clone-desc-1": "Цей плейлист завантажений з зовнішнього сайту та містить посилання на синхронізацію.", + "need-clone-desc-2": "Для уникнення втрати змін під час синхронізації, плейлист буде дубльований та його посилання на синхронізацію буде видалене", + "need-clone-desc-3": "Ви можете потім, якщо захочете, видалити оригінальний плейлист", "understood": "Я розумію", - "synchronize-playlist-ask": "Синхронізувати список?", - "synchronize-playlists-ask": "Синхронізувати списки?", - "synchronize-playlist-desc": "Ви впевнені, що хочете синхронізувати список \"{playlistTitle}\"?", - "synchronize-playlists-desc": "Ви впевнені, що хочете синхронізувати {nb} списк(-и/-ів)?", - "synchronize-playlist-tip": "Ця дія оновлює списки та завантажує відсутні карти; вона може зайняти кілька хвилин", + "synchronize-playlist-ask": "Синхронізувати плейлист?", + "synchronize-playlists-ask": "Синхронізувати плейлисти?", + "synchronize-playlist-desc": "Ви впевнені, що хочете синхронізувати плейлист \"{playlistTitle}\"?", + "synchronize-playlists-desc": "Ви впевнені, що хочете синхронізувати {nb} плейлист(-и/-ів)?", + "synchronize-playlist-tip": "Ця дія оновлює плейлисти та завантажує відсутні карти; вона може зайняти кілька хвилин", "synchronize": "Синхронізувати", "curated": "Рекомендовані", "verified-mapper": "Перевірений маппер", - "empty-playlists": "Порожні списки", - "search-playlist": "Шукати списки", - "no-playlists-found": "Немає списків", - "error-occur-while-loading-playlists": "Виникла помилка під час завантаження списків", - "error-occur-while-loading-playlist": "Виникла помилка під час завантаження списку", + "empty-playlists": "Порожні плейлисти", + "search-playlist": "Шукати плейлисти", + "no-playlists-found": "Немає плейлистів", + "error-occur-while-loading-playlists": "Виникла помилка під час завантаження плейлистів", + "error-occur-while-loading-playlist": "Виникла помилка під час завантаження плейлиста", "loading-maps": "Завантаження карт...", - "no-maps-found-for-playlist": "Для цього списку не знайдено карт", - "playlist-contain-no-maps": "Список не містить жодної карти", - "no-map-installed-for-playlist": "Для цього списку не встановлено карт", - "playlist-is-waiting-to-download": "Список чекає на завантаження", + "no-maps-found-for-playlist": "Для цього плейлиста не знайдено карт", + "playlist-contain-no-maps": "Плейлист не містить жодної карти", + "no-map-installed-for-playlist": "Для цього плейлиста не встановлено карт", + "playlist-is-waiting-to-download": "Плейлист чекає на завантаження", "download-maps": "Завантажити карти", "download-missing-maps": "Завантажити відсутні карти", - "playlist-is-downloading": "Список завантажується", - "some-playlist-maps-are-missing": "Деякі карти в цьому списку відсутні", - "create-a-playlist": "Створіть список", - "synchronize-playlists": "Синхронізувати списки", - "export-playlists": "Експортувати списки", - "delete-playlists": "Видалити списки", + "playlist-is-downloading": "Плейлист завантажується", + "some-playlist-maps-are-missing": "Деякі карти в цьому плейлисті відсутні", + "create-a-playlist": "Створіть плейлист", + "synchronize-playlists": "Синхронізувати плейлисти", + "export-playlists": "Експортувати плейлисти", + "delete-playlists": "Видалити плейлисти", "choose-image": "Оберіть зображення", "title": "Назва", - "playlist-title": "Назва списку", + "playlist-title": "Назва плейлисту", "description": "Опис", - "playlist-description": "Опис списку", + "playlist-description": "Опис плейлисту", "author": "Автор", - "playlist-author": "Автор списку", + "playlist-author": "Автор плейлисту", "save": "Зберегти", "loading": "Завантаження...", "installed": "Встановлено", "no-map-found": "Нічого не знайдено", "edit-playlist-shortcuts": "Натисніть Shift або Ctrl, щоб обрати кілька карт", - "add-to-playlist": "Додати до списку", - "remove-from-playlist": "Видалити з списку", - "playlist-is-empty": "Список порожній", + "add-to-playlist": "Додати до плейлисту", + "remove-from-playlist": "Видалити з плейлисту", + "playlist-is-empty": "Плейлист порожній", "continue": "Продовжити", "nb-maps": "Кількість карт", "nb-mappers": "Кількість виконавців", @@ -1247,22 +1247,22 @@ "last-month": "Останній місяць", "3-last-month": "Останні 3 місяці" }, - "playlists-imported": "Списки імпортовані", - "all-playlists-have-been-successfully-imported": "Всі списки успішно імпортовані", + "playlists-imported": "Плейлисти імпортовані", + "all-playlists-have-been-successfully-imported": "Всі плейлисти успішно імпортовані", "no-playlist-found": "Нічого не знайдено", "no-playlist-found-in-selected-files": "Нічого не знайдено серед обраних файлів", - "some-playlists-not-imported": "Нечи списки не імпортовані", + "some-playlists-not-imported": "Деякі плейлисти не імпортовані", "some-playlists-have-been-imported": { - "INVALID_SOURCE": "Деякі списки не знайдені", - "INVALID_PLAYLIST_FILE": "Деякі списки не можуть бути імпортовані", - "CANNOT_PARSE_PLAYLIST": "Деякі списки не можуть бути прочитані", - "unknown": "Деякі списки не можуть бути імпортовані" + "INVALID_SOURCE": "Деякі плейлисти не знайдені", + "INVALID_PLAYLIST_FILE": "Деякі плейлисти не можуть бути імпортовані", + "CANNOT_PARSE_PLAYLIST": "Деякі плейлисти не можуть бути прочитані", + "unknown": "Деякі плейлисти не можуть бути імпортовані" }, "no-playlists-imported": "Нічого не імпортовано", "no-playlists-imported-errors": { - "INVALID_SOURCE": "Списки не знайдено", - "INVALID_PLAYLIST_FILE": "Списки не можуть бути імпортовані", - "CANNOT_PARSE_PLAYLIST": "Списки не можуть бути прочитані", + "INVALID_SOURCE": "Плейлисти не знайдено", + "INVALID_PLAYLIST_FILE": "Плейлисти не можуть бути імпортовані", + "CANNOT_PARSE_PLAYLIST": "Плейлисти не можуть бути прочитані", "unknown": "Нічого не імпортовано" } }, From 55ff418f4a064992bf1d432a530676383db272de Mon Sep 17 00:00:00 2001 From: HighError Date: Wed, 5 Feb 2025 17:26:34 +0200 Subject: [PATCH 06/21] renamed icon name --- src/renderer/components/svgs/bsm-icon.component.tsx | 2 +- ...raine-icon.component copy.tsx => ukraine-icon.component.tsx} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/renderer/components/svgs/flags/{ukraine-icon.component copy.tsx => ukraine-icon.component.tsx} (85%) diff --git a/src/renderer/components/svgs/bsm-icon.component.tsx b/src/renderer/components/svgs/bsm-icon.component.tsx index ef4761bd..d86f3faf 100644 --- a/src/renderer/components/svgs/bsm-icon.component.tsx +++ b/src/renderer/components/svgs/bsm-icon.component.tsx @@ -12,7 +12,7 @@ import { FranceIcon } from "./flags/france-icon.component"; import { SpainIcon } from "./flags/spain-icon.component"; import { ItalyIcon } from "./flags/italy-icon.component"; import { UsaIcon } from "./flags/usa-icon.component"; -import { UkraineIcon } from "./flags/ukraine-icon.component copy"; +import { UkraineIcon } from "./flags/ukraine-icon.component"; import { UkIcon } from "./flags/uk-icon.component"; import { TaskIcon } from "./icons/task-icon.component"; import { CopyIcon } from "./icons/copy-icon.component"; diff --git a/src/renderer/components/svgs/flags/ukraine-icon.component copy.tsx b/src/renderer/components/svgs/flags/ukraine-icon.component.tsx similarity index 85% rename from src/renderer/components/svgs/flags/ukraine-icon.component copy.tsx rename to src/renderer/components/svgs/flags/ukraine-icon.component.tsx index d341ac28..2f9088ef 100644 --- a/src/renderer/components/svgs/flags/ukraine-icon.component copy.tsx +++ b/src/renderer/components/svgs/flags/ukraine-icon.component.tsx @@ -1,6 +1,6 @@ import { CSSProperties } from "react"; -// Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools +// Uploaded from: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools export function UkraineIcon(props: { className?: string; style?: CSSProperties }) { return ( From 7aae6ae6bc343a2a94ed1abc38587224e67d7efe Mon Sep 17 00:00:00 2001 From: silentrald Date: Thu, 6 Feb 2025 12:49:18 +0800 Subject: [PATCH 07/21] [bugfix] fixed issue with null folderVersion --- src/main/services/bs-local-version.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/services/bs-local-version.service.ts b/src/main/services/bs-local-version.service.ts index 14d31dde..c97ac1ea 100644 --- a/src/main/services/bs-local-version.service.ts +++ b/src/main/services/bs-local-version.service.ts @@ -106,10 +106,10 @@ export class BSLocalVersionService { const versionFilePath = path.join(bsPath, 'Beat Saber_Data', 'globalgamemanagers'); const folderVersion = await this.getVersionFromGlobalGameManagerFile(versionFilePath); - folderVersion.path = bsPath; - if(!folderVersion){ return null; } + folderVersion.path = bsPath; + if(options?.steam || options?.oculus){ return {...folderVersion, ...options}; } From c83b630e1a59250eee10fa8bb4651d6fe650a086 Mon Sep 17 00:00:00 2001 From: GaetanGrd <40648115+GaetanGrd@users.noreply.github.com> Date: Fri, 7 Feb 2025 17:15:55 +0100 Subject: [PATCH 08/21] Update CONTRIBUTING.md --- CONTRIBUTING.md | 114 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 92 insertions(+), 22 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 961b371f..3e7cb6b2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,33 +1,103 @@ -## Contributing +# Contributing to BS-Manager -[code-of-conduct]: CODE_OF_CONDUCT.md -[fork]: https://github.com/Zagrios/bs-manager/fork -[pr]: https://github.com/Zagrios/bs-manager/compare -[style]: https://github.com/basarat/typescript-book/blob/master/docs/styleguide/styleguide.md +[code-of-conduct]: CODE_OF_CONDUCT.md +[fork]: https://github.com/Zagrios/bs-manager/fork +[pr]: https://github.com/Zagrios/bs-manager/compare -Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. +Hello! We’re delighted that you’re interested in contributing to **BS-Manager**. Your help is essential to maintaining and improving this project. -Please note that this project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating in this project you agree to abide by its terms. +> [!NOTE] +> This project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating, you agree to abide by its terms. -## Issues and PRs +--- -If you have suggestions for how this project could be improved, or want to report a bug, open an issue! We'd love all and any contributions. If you have questions, too, we'd love to hear them. +## Opening Issues -We'd also love PRs. If you're thinking of a large PR, we advise opening up an issue first to talk about it, though! Look at the links below if you're not sure how to open a PR. +- **Reporting Bugs** + If you find a bug or any unexpected behavior, feel free to open an issue. Be sure to include steps to reproduce it, relevant logs, versions, and any other pertinent details. +- **Suggesting Enhancements** + Have an idea for improving BS-Manager? We welcome all suggestions—open an issue to discuss your proposal. -## Submitting a pull request +> [!TIP] +> Before opening a new issue, please check if there’s already an existing one for the same topic to avoid duplicates. -1. [Fork][fork] and clone the repository. -1. Install the correct NodeJS version (highly recommend installing [Volta](https://volta.sh/) for that). -1. Configure and install the dependencies: `npm install`. -1. Create a new branch following naming convention: `git checkout -b (feature|bugfix|hotfix|chore)/(short-description)(/issue-id)`. -1. Make your change, test, and make sure BSManager work fine. -1. Push to your fork and [submit a pull request][pr]. -1. Pat your self on the back and wait for your pull request to be reviewed and merged. +--- -Here are a few things you can do that will increase the likelihood of your pull request being accepted: +## Submitting Pull Requests -- Follow the [style guide][style] which is using standard. -- Keep your changes as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests. +### Before You Begin -Work in Progress pull requests are also welcome to get feedback early on, or if there is something blocked you. +1. **[Fork the repository][fork]** and **clone** your fork locally. +2. **Install the required Node.js version** (we recommend using [Volta](https://volta.sh/) to manage Node versions). +3. **Install project dependencies**: + ```bash + npm install + ``` + +### Create a Dedicated Branch + +Use a clear naming convention for your branch: + +```bash +git checkout -b (feature|bugfix|hotfix|chore)/(short-description)(/issue-id) +``` + +> [!NOTE] +> Exemple : `git checkout -b feature/update-docs/42` + +### Develop and Test + +- Make the necessary changes on your new branch. +- Test your changes manually to ensure everything is working correctly. +- Verify that your updates do not introduce regressions or break existing functionality. + +### 2.4 Open a Pull Request + +1. **Push** your branch to your fork. +2. Visit the main **BS-Manager** repository and click “Compare & pull request” or use [this link][pr]. +3. Provide a **clear description** of your changes (the context, what problem it solves, etc.). +4. **Submit** your pull request. A maintainer will review it and may ask for adjustments or clarifications. + +--- + +## 3. Useful Commands + +### Development + +```bash +npm start +``` + +> Runs the application in development mode. + +### Packaging + +```bash +npm run package +``` + +> Packages the application using Electron Builder. + +```bash +npm run build && electron-builder --config electron-builder.config.js --publish never --x64 --linux +``` + +> Package for Linux distros (deb, rpm, pacman) + +```bash +npm run publish +``` + +> Publishes the application (primarily for Windows). + +```bash +npm run publish:flatpak +``` + +> Build a Flatpak package + +## Need Help? + +If you have any questions or need further assistance, feel free to **open an issue** or reach out via the project’s communication channels. We appreciate any and all contributions you make to BS-Manager! + +Thank you for your interest in making BS-Manager better! From 3e1c595cd7266167d5148984ba99fff93e52b342 Mon Sep 17 00:00:00 2001 From: GaetanGrd <40648115+GaetanGrd@users.noreply.github.com> Date: Fri, 7 Feb 2025 17:16:31 +0100 Subject: [PATCH 09/21] Update CONTRIBUTING.md --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3e7cb6b2..0124b523 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,9 @@ # Contributing to BS-Manager -[code-of-conduct]: CODE_OF_CONDUCT.md -[fork]: https://github.com/Zagrios/bs-manager/fork -[pr]: https://github.com/Zagrios/bs-manager/compare +[code-of-conduct]: CODE_OF_CONDUCT.md +[fork]: https://github.com/Zagrios/bs-manager/fork +[pr]: https://github.com/Zagrios/bs-manager/compare +[style]: https://github.com/basarat/typescript-book/blob/master/docs/styleguide/styleguide.md Hello! We’re delighted that you’re interested in contributing to **BS-Manager**. Your help is essential to maintaining and improving this project. From 3f8b3a0594eff26f99b0789994d1981285fafa61 Mon Sep 17 00:00:00 2001 From: GaetanGrd <40648115+GaetanGrd@users.noreply.github.com> Date: Fri, 7 Feb 2025 17:22:58 +0100 Subject: [PATCH 10/21] Update CONTRIBUTING.md --- CONTRIBUTING.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0124b523..1984783b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,11 +1,11 @@ -# Contributing to BS-Manager +# Contributing to BSManager [code-of-conduct]: CODE_OF_CONDUCT.md [fork]: https://github.com/Zagrios/bs-manager/fork [pr]: https://github.com/Zagrios/bs-manager/compare [style]: https://github.com/basarat/typescript-book/blob/master/docs/styleguide/styleguide.md -Hello! We’re delighted that you’re interested in contributing to **BS-Manager**. Your help is essential to maintaining and improving this project. +Hello! We’re delighted that you’re interested in contributing to **BSManager**. Your help is essential to maintaining and improving this project. > [!NOTE] > This project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating, you agree to abide by its terms. @@ -17,7 +17,7 @@ Hello! We’re delighted that you’re interested in contributing to **BS-Manage - **Reporting Bugs** If you find a bug or any unexpected behavior, feel free to open an issue. Be sure to include steps to reproduce it, relevant logs, versions, and any other pertinent details. - **Suggesting Enhancements** - Have an idea for improving BS-Manager? We welcome all suggestions—open an issue to discuss your proposal. + Have an idea for improving BSManager? We welcome all suggestions—open an issue to discuss your proposal. > [!TIP] > Before opening a new issue, please check if there’s already an existing one for the same topic to avoid duplicates. @@ -48,20 +48,24 @@ git checkout -b (feature|bugfix|hotfix|chore)/(short-description)(/issue-id) ### Develop and Test +> [!TIP] +> - Follow the [style guide][style] which is using standard. +> - Keep your changes as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests. + - Make the necessary changes on your new branch. - Test your changes manually to ensure everything is working correctly. - Verify that your updates do not introduce regressions or break existing functionality. -### 2.4 Open a Pull Request +### Open a Pull Request 1. **Push** your branch to your fork. -2. Visit the main **BS-Manager** repository and click “Compare & pull request” or use [this link][pr]. +2. Visit the main **BSManager** repository and click “Compare & pull request” or use [this link][pr]. 3. Provide a **clear description** of your changes (the context, what problem it solves, etc.). 4. **Submit** your pull request. A maintainer will review it and may ask for adjustments or clarifications. --- -## 3. Useful Commands +## Useful Commands ### Development @@ -99,6 +103,6 @@ npm run publish:flatpak ## Need Help? -If you have any questions or need further assistance, feel free to **open an issue** or reach out via the project’s communication channels. We appreciate any and all contributions you make to BS-Manager! +If you have any questions or need further assistance, feel free to **open an issue** or reach out via the project’s communication channels. We appreciate any and all contributions you make to BSManager! -Thank you for your interest in making BS-Manager better! +Thank you for your interest in making BSManager better! From 1f5904d135cc2f6841d11ef392bd733184058229 Mon Sep 17 00:00:00 2001 From: GaetanGrd <40648115+GaetanGrd@users.noreply.github.com> Date: Fri, 7 Feb 2025 17:33:22 +0100 Subject: [PATCH 11/21] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1984783b..1749270c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -103,6 +103,6 @@ npm run publish:flatpak ## Need Help? -If you have any questions or need further assistance, feel free to **open an issue** or reach out via the project’s communication channels. We appreciate any and all contributions you make to BSManager! +If you have any questions or need further assistance, feel free to **open an issue** or reach out via our [discord](https://discord.gg/uSqbHVpKdV). We appreciate any and all contributions you make to BSManager! Thank you for your interest in making BSManager better! From 913ef5c281c9c3933cad87c3794b12aa24115efe Mon Sep 17 00:00:00 2001 From: Iluhadesu <92525749+Iluhadesu@users.noreply.github.com> Date: Sat, 8 Feb 2025 14:26:40 +0000 Subject: [PATCH 12/21] Update bs-versions.json according to the late announcement --- assets/jsons/bs-versions.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/assets/jsons/bs-versions.json b/assets/jsons/bs-versions.json index 9de46cb6..db1aeb23 100644 --- a/assets/jsons/bs-versions.json +++ b/assets/jsons/bs-versions.json @@ -827,6 +827,8 @@ "BSVersion": "1.40.2", "BSManifest": "5496832903170665287", "OculusBinaryId": "8626990240734012", + "ReleaseURL": "https://steamcommunity.com/games/620980/announcements/detail/510697606000673692", + "ReleaseImg": "https://clan.fastly.steamstatic.com/images/32055887/04ad25256ffc2686f4ea19830e70df6b2752f728.png", "ReleaseDate": "1738951837", "year": "2025" } From 7600ead380373acdeebb7e32979fc112d3268611 Mon Sep 17 00:00:00 2001 From: Zagrios <40181755+Zagrios@users.noreply.github.com> Date: Sat, 8 Feb 2025 16:38:41 +0100 Subject: [PATCH 13/21] fix map translations + update ukraine flag --- assets/jsons/translations/uk.json | 182 +++++++++--------- .../components/svgs/bsm-icon.component.tsx | 2 +- .../svgs/flags/ukraine-icon.component.tsx | 16 +- 3 files changed, 101 insertions(+), 99 deletions(-) diff --git a/assets/jsons/translations/uk.json b/assets/jsons/translations/uk.json index c89ad5ed..f40a46a9 100644 --- a/assets/jsons/translations/uk.json +++ b/assets/jsons/translations/uk.json @@ -938,98 +938,98 @@ }, "bs-version-outdated": { "body": "Версія {outdatedVersion} застаріла, і деякі моди чи функції можуть більше не працювати належним чином. Будь ласка, завантажте останню рекомендовану версію ({recommendedVersion}) Beat Saber, щоб насолоджуватися останніми функціями та виправленнями помилок." + } + }, + "maps": { + "map-filter-panel": { + "duration": "Тривалість", + "nps": "Нот за секунду", + "njs": "Швидкість стрибка нот", + "tags": "теги", + "specificities": "загальне", + "requirements": "вимоги", + "exclude": "виключити", + "leaderboard": "таблиця лідерів" }, - "maps": { - "map-filter-panel": { - "duration": "Тривалість", - "nps": "Нот за секунду", - "njs": "Швидкість стрибка нот", - "tags": "теги", - "specificities": "загальне", - "requirements": "вимоги", - "exclude": "виключити", - "leaderboard": "таблиця лідерів" - }, - "map-types": { - "accuracy": "точність", - "balanced": "збалансовані", - "challenge": "виклик", - "dance-style": "танець", - "fitness": "фітнес", - "speed": "швидкість", - "tech": "техніка" - }, - "map-styles": { - "dance": "танцювальні", - "swing": "свінг", - "nightcore": "найткор", - "folk-acoustic": "фолк і акустика", - "kids-family": "для дітей і сім'ї", - "ambient": "ембієнт", - "funk-disco": "фанк і диско", - "jazz": "джаз", - "soul": "соул", - "speedcore": "спідкор", - "punk": "панк", - "rb": "r&b", - "holiday": "святкові", - "vocaloid": "вокалоїд", - "j-rock": "j-rock", - "trance": "транс", - "drum-and-bass": "драм-н-бейс", - "comedy-meme": "комедія і меми", - "instrumental": "інструментальні", - "hardcore": "хардкор", - "k-pop": "k-pop", - "indie": "інді", - "techno": "техно", - "house": "хаус", - "video-game-soundtrack": "відеоігри", - "tv-movie-soundtrack": "ТБ і фільми", - "alternative": "альтернатива", - "dubstep": "дабстеп", - "metal": "метал", - "anime": "аніме", - "hip-hop-rap": "хіп-хоп і реп", - "j-pop": "j-pop", - "rock": "рок", - "pop": "поп", - "electronic": "електронна", - "classical-orchestral": "Класична і оркестрова" - }, - "map-specificities": { - "automapper": "ШІ", - "curated": "куровані", - "verified": "перевірені", - "fullSpread": "повний набір" - }, - "map-leaderboard": { - "All": "Всі", - "Ranked": "Ранговані", - "BeatLeader": "BeatLeader", - "ScoreSaber": "ScoreSaber" - }, - "map-excludes": { - "installed": "встановлені" - }, - "difficulties": { - "Easy": "легкий", - "Normal": "нормальний", - "Hard": "складний", - "Expert": "експерт", - "ExpertPlus": "експерт+" - }, - "map-item": { - "by": "Від {songAutor}", - "mapped-by": "автор карти", - "delete": "Видалити", - "preview": "Попередній перегляд карти", - "bsr-code": "BSR код", - "download": "Завантажити карту", - "downloading": "Завантаження карти", - "cancel-download": "Скасувати завантаження", - "hightlight-difficulty": "Виділити складність" - } + "map-types": { + "accuracy": "точність", + "balanced": "збалансовані", + "challenge": "виклик", + "dance-style": "танець", + "fitness": "фітнес", + "speed": "швидкість", + "tech": "техніка" + }, + "map-styles": { + "dance": "танцювальні", + "swing": "свінг", + "nightcore": "найткор", + "folk-acoustic": "фолк і акустика", + "kids-family": "для дітей і сім'ї", + "ambient": "ембієнт", + "funk-disco": "фанк і диско", + "jazz": "джаз", + "soul": "соул", + "speedcore": "спідкор", + "punk": "панк", + "rb": "r&b", + "holiday": "святкові", + "vocaloid": "вокалоїд", + "j-rock": "j-rock", + "trance": "транс", + "drum-and-bass": "драм-н-бейс", + "comedy-meme": "комедія і меми", + "instrumental": "інструментальні", + "hardcore": "хардкор", + "k-pop": "k-pop", + "indie": "інді", + "techno": "техно", + "house": "хаус", + "video-game-soundtrack": "відеоігри", + "tv-movie-soundtrack": "ТБ і фільми", + "alternative": "альтернатива", + "dubstep": "дабстеп", + "metal": "метал", + "anime": "аніме", + "hip-hop-rap": "хіп-хоп і реп", + "j-pop": "j-pop", + "rock": "рок", + "pop": "поп", + "electronic": "електронна", + "classical-orchestral": "Класична і оркестрова" + }, + "map-specificities": { + "automapper": "ШІ", + "curated": "куровані", + "verified": "перевірені", + "fullSpread": "повний набір" + }, + "map-leaderboard": { + "All": "Всі", + "Ranked": "Ранговані", + "BeatLeader": "BeatLeader", + "ScoreSaber": "ScoreSaber" + }, + "map-excludes": { + "installed": "встановлені" + }, + "difficulties": { + "Easy": "легкий", + "Normal": "нормальний", + "Hard": "складний", + "Expert": "експерт", + "ExpertPlus": "експерт+" + }, + "map-item": { + "by": "Від {songAutor}", + "mapped-by": "автор карти", + "delete": "Видалити", + "preview": "Попередній перегляд карти", + "bsr-code": "BSR код", + "download": "Завантажити карту", + "downloading": "Завантаження карти", + "cancel-download": "Скасувати завантаження", + "hightlight-difficulty": "Виділити складність" } }, "models": { diff --git a/src/renderer/components/svgs/bsm-icon.component.tsx b/src/renderer/components/svgs/bsm-icon.component.tsx index d86f3faf..f4f95305 100644 --- a/src/renderer/components/svgs/bsm-icon.component.tsx +++ b/src/renderer/components/svgs/bsm-icon.component.tsx @@ -13,7 +13,6 @@ import { SpainIcon } from "./flags/spain-icon.component"; import { ItalyIcon } from "./flags/italy-icon.component"; import { UsaIcon } from "./flags/usa-icon.component"; import { UkraineIcon } from "./flags/ukraine-icon.component"; -import { UkIcon } from "./flags/uk-icon.component"; import { TaskIcon } from "./icons/task-icon.component"; import { CopyIcon } from "./icons/copy-icon.component"; import { SteamIcon } from "./icons/steam-icon.component"; @@ -71,6 +70,7 @@ import { AddFileIcon } from "./icons/add-file-icon.component"; import { CancelIcon } from "./icons/cancel-icon.component"; import { WarningIcon } from "./icons/warning-icon.component"; import { ArrowUpwardIcon } from "./icons/arrow-upward-icon.component"; +import { UkIcon } from "./flags/uk-icon.component"; diff --git a/src/renderer/components/svgs/flags/ukraine-icon.component.tsx b/src/renderer/components/svgs/flags/ukraine-icon.component.tsx index 2f9088ef..517ed36a 100644 --- a/src/renderer/components/svgs/flags/ukraine-icon.component.tsx +++ b/src/renderer/components/svgs/flags/ukraine-icon.component.tsx @@ -1,12 +1,14 @@ -import { CSSProperties } from "react"; +import { createSvgIcon } from "../svg-icon.type"; // Uploaded from: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -export function UkraineIcon(props: { className?: string; style?: CSSProperties }) { +export const UkraineIcon = createSvgIcon((props, ref) => { return ( - - - - + + + + + + ); -} +}) From 2536b0c4d3d98a9e957a1e6eae8b9a8c0037cff4 Mon Sep 17 00:00:00 2001 From: silentrald Date: Mon, 3 Feb 2025 22:28:11 +0800 Subject: [PATCH 14/21] translation: created tl.json --- assets/jsons/translations/de.json | 4 +- assets/jsons/translations/en.json | 4 +- assets/jsons/translations/es.json | 4 +- assets/jsons/translations/fr.json | 4 +- assets/jsons/translations/it.json | 4 +- assets/jsons/translations/ja.json | 4 +- assets/jsons/translations/ko.json | 4 +- assets/jsons/translations/pt-br.json | 4 +- assets/jsons/translations/ru.json | 4 +- assets/jsons/translations/tl.json | 1330 +++++++++++++++++ assets/jsons/translations/uk.json | 4 +- assets/jsons/translations/zh-tw.json | 4 +- assets/jsons/translations/zh.json | 4 +- .../components/svgs/bsm-icon.component.tsx | 6 +- .../svgs/flags/philippine-icon.component.tsx | 13 + .../config/default-configuration.config.ts | 2 +- 16 files changed, 1385 insertions(+), 14 deletions(-) create mode 100644 assets/jsons/translations/tl.json create mode 100644 src/renderer/components/svgs/flags/philippine-icon.component.tsx diff --git a/assets/jsons/translations/de.json b/assets/jsons/translations/de.json index 4ae6518e..a1644cf7 100644 --- a/assets/jsons/translations/de.json +++ b/assets/jsons/translations/de.json @@ -247,6 +247,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "Englisch, Vereinigtes Königreich", "en-US": "Englisch, USA", @@ -260,7 +261,8 @@ "zh-TW": "Traditionelles Chinesisch", "ja-JP": "Japanisch", "ko-KR": "Koreanisch", - "uk-UA": "Ukrainisch" + "uk-UA": "Ukrainisch", + "tl-PH": "Filipino" } } }, diff --git a/assets/jsons/translations/en.json b/assets/jsons/translations/en.json index d14d1087..b881d2ff 100644 --- a/assets/jsons/translations/en.json +++ b/assets/jsons/translations/en.json @@ -247,6 +247,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "English, United Kingdom", "en-US": "English, USA", @@ -260,7 +261,8 @@ "zh-TW": "Chinese (Traditional)", "ja-JP": "Japanese", "ko-KR": "Korean", - "uk-UA": "Ukrainian" + "uk-UA": "Ukrainian", + "tl-PH": "Filipino" } } }, diff --git a/assets/jsons/translations/es.json b/assets/jsons/translations/es.json index 202a7577..50da2c5c 100644 --- a/assets/jsons/translations/es.json +++ b/assets/jsons/translations/es.json @@ -247,6 +247,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "Inglés, Reino Unido", "en-US": "Inglés, Estados Unidos", @@ -260,7 +261,8 @@ "zh-TW": "Chino tradicional", "ja-JP": "Japonés", "ko-KR": "Coreano", - "uk-UA": "Ucraniano" + "uk-UA": "Ucraniano", + "tl-PH": "Filipino" } } }, diff --git a/assets/jsons/translations/fr.json b/assets/jsons/translations/fr.json index e7458889..e3b586ea 100644 --- a/assets/jsons/translations/fr.json +++ b/assets/jsons/translations/fr.json @@ -247,6 +247,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "Anglais, Royaume-Uni", "en-US": "Anglais, États-Unis", @@ -260,7 +261,8 @@ "zh-TW": "Chinois traditionnel", "ja-JP": "Japonais", "ko-KR": "Coréen", - "uk-UA": "Ukrainien" + "uk-UA": "Ukrainien", + "tl-PH": "Philippin" } } }, diff --git a/assets/jsons/translations/it.json b/assets/jsons/translations/it.json index 2faad53a..325856e4 100644 --- a/assets/jsons/translations/it.json +++ b/assets/jsons/translations/it.json @@ -247,6 +247,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "Inglese, Regno Unito", "en-US": "Inglese, Stati Uniti d'America", @@ -260,7 +261,8 @@ "zh-TW": "Cinese (Tradizionale)", "ja-JP": "Giapponese", "ko-KR": "Coreano", - "uk-UA": "Ucraino" + "uk-UA": "Ucraino", + "tl-PH": "Filippino" } } }, diff --git a/assets/jsons/translations/ja.json b/assets/jsons/translations/ja.json index 2364060a..0abecefc 100644 --- a/assets/jsons/translations/ja.json +++ b/assets/jsons/translations/ja.json @@ -247,6 +247,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "イギリス英語", "en-US": "アメリカ英語", @@ -260,7 +261,8 @@ "zh-TW": "繁体字中国", "ja-JP": "日本語", "ko-KR": "韓国語", - "uk-UA": "ウクライナ語" + "uk-UA": "ウクライナ語", + "tl-PH": "フィリピン人" } } }, diff --git a/assets/jsons/translations/ko.json b/assets/jsons/translations/ko.json index 9db92f87..0d43b598 100644 --- a/assets/jsons/translations/ko.json +++ b/assets/jsons/translations/ko.json @@ -247,6 +247,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "영어(영국)", "en-US": "영어(미국)", @@ -260,7 +261,8 @@ "zh-TW": "중국어 (번체)", "ja-JP": "일본어", "ko-KR": "한국어", - "uk-UA": "우크라이나어" + "uk-UA": "우크라이나어", + "tl-PH": "필리핀인" } } }, diff --git a/assets/jsons/translations/pt-br.json b/assets/jsons/translations/pt-br.json index 4d71b78f..16d8eb5a 100644 --- a/assets/jsons/translations/pt-br.json +++ b/assets/jsons/translations/pt-br.json @@ -247,6 +247,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "Inglês, Reino Unido", "en-US": "Inglês, Estados Unidos", @@ -260,7 +261,8 @@ "zh-TW": "Chinês (Tradicional)", "ja-JP": "Japonês", "ko-KR": "Coreano", - "uk-UA": "Ucraniano" + "uk-UA": "Ucraniano", + "tl-PH": "Filipino" } } }, diff --git a/assets/jsons/translations/ru.json b/assets/jsons/translations/ru.json index 2123fe93..5a10299b 100644 --- a/assets/jsons/translations/ru.json +++ b/assets/jsons/translations/ru.json @@ -247,6 +247,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "Английский, Великобритания", "en-US": "Английский, США", @@ -260,7 +261,8 @@ "zh-TW": "Китайский (традиционный)", "ja-JP": "Японский", "ko-KR": "Корейский", - "uk-UA": "Украинский" + "uk-UA": "Украинский", + "tl-PH": "Филиппинец" } } }, diff --git a/assets/jsons/translations/tl.json b/assets/jsons/translations/tl.json new file mode 100644 index 00000000..eb916211 --- /dev/null +++ b/assets/jsons/translations/tl.json @@ -0,0 +1,1330 @@ +{ + "misc": { + "download": "I-download", + "add": "Magdagdag", + "verify": "I-verify", + "launch": "I-launch", + "mods": "Mods", + "maps": "Maps", + "playlists": "Playlists", + "models": "Models", + "avatars": "Avatars", + "sabers": "Sabers", + "platforms": "Platforms", + "blocks": "Blocks", + "cancel": "Kanselahin", + "delete": "Tanggalin", + "accept": "Tanggapin", + "refuse": "Tanggihan", + "apply": "I-apply", + "copy": "Kopyahin", + "copied": "Nakopya na!", + "confirm": "Kumpirmahin", + "choose-folder": "Pumili ng folder", + "unknown": "May hindi alam na error na nangyari ¯\\_(ツ)_/¯", + "warning": "Babala", + "continue": "Magpatuloy", + "shared": "Ibinahagi", + "pin": "I-pin", + "unpin": "I-unpin" + }, + "generic": { + "env": { + "parse": "Hindi maayos na na-parse ang string ng env var." + } + }, + "title-bar": { + "outdated": "lipas na" + }, + "nav-bar": { + "add-version": "Magdagdag ng bersyon", + "settings": "Settings", + "shared": { + "text": "Shared", + "tooltip": "Shared contents" + } + }, + "pages": { + "version-viewer": { + "launch-mods": { + "oculus": "Oculus Mode", + "oculus-description": "Kung ginagamit mo ang Beat Saber via Steam, pinapayagan mo itong gamitin ang VR composer ng Oculus upang iwasan ang pagbukas ng SteamVR, para sa posibleng pagbuti ng performance. Hindi ito kinakailangan upang gamitin ang Oculus headsets.", + "desktop": "FPFC Mode", + "desktop-description": "Ang First Person Flying Controller mode ay pwede mong gamitin ang WASD at mouse upang mag-navigate sa menu ng laro. Pinapadali nito ang pagsusuri, dahil hindi mo na kailangang isuot ang headset!", + "debug": "Debug Mode", + "debug-description": "I-enable ang output log window para sa IPA. Ipapakita nito ang debug console na ginagamit ng mga mod.", + "outdated-tippy": "Ang bersyon na ito ay lipas na, at maaaring hindi na gumana ang ilang mods o features tulad ng inaasahan. Mas mainam na gumamit ng inirerekomendang bersyon ({recommendedVersion}) ng Beat Saber upang magamit ang mga pinakabagong features at pag-aayos ng bug.", + "advanced-launch": { + "button": "Launch options", + "placeholder": "Launch options hal: KEY=VALUE %command% fpfc" + }, + "skipsteam": "I-skip ang Steam", + "skipsteam-description": "Pinipigilan mo ang Steam na awtomatikong magbukas kasama ng Beat Saber, i-enable ito kung gumagamit ka ng ibang VR runtime tulad ng WiVRn o Monado na maaaring magdulot ng problema sa SteamVR.", + "map-editor": "Map Editor", + "map-editor-description": "Simulan ang opisyal na Beat Saber map editor imbis na ang laro.", + "proton-logs": "Proton Logs", + "proton-logs-description": "I-enable ang pag-record ng proton logs para sa Beat Saber install na ito sa \"{versionPath}\"." + }, + "maps": { + "search-bar": { + "search-placeholder": "Maghanap ng mapa", + "filters-btn": "Filters", + "dropdown": { + "export-maps": "I-export ang mga maps", + "delete-maps": "Tanggalin ang mga mapa", + "delete-duplicate-maps": "Tanggalin ang mga na-double" + } + }, + "tabs": { + "maps": { + "actions": { + "drop-down": { + "browse-maps": "Mag-browse ng mga mapa", + "import-maps": "Mag-import ng mga map" + }, + "link-maps": { + "tooltips": { + "link": "I-link ang mga mapa", + "unlink": "I-unlink ang mga mapa" + } + } + }, + "empty-maps": { + "text": "Walang mapa", + "button": "I-download ang mga mapa" + }, + "drop-zone": { + "text": "I-import ang iyong mga mapa", + "subtext": "I-drop ang iyong mga zip file dito upang i-import ang iyong mga mapa" + }, + "sort": { + "name": "Pangalan", + "song-author": "Awtor ng Kanta", + "map-author": "Awtor ng Mapa", + "bpm": "BPM", + "duration": "Haba", + "likes": "Likes", + "date-uploaded": "Petsa ng Pagka-upload" + } + }, + "playlists": { + "drop-down": { + "browse-playlists": "Mag-browse ng mga playlist", + "create-a-playlist": "Gumawa ng playlist", + "import-playlists": "Mag-import ng mga playlist" + }, + "drop-zone": { + "text": "I-import ang iyong mga playlist", + "subtext": "I-drop ang iyong mga \".bplist\" o \".json\" na mga file dito upang i-import ang mga ito" + }, + "sort": { + "title": "Pamagat", + "author": "Awtor", + "number-of-maps": "Bilang ng mga Mapa", + "duration": "Haba", + "notes-per-second": "NPS" + } + } + } + }, + "mods": { + "loading-mods": "Naglo-load ng mga mod...", + "no-internet": "Walang internet", + "mods-not-available": "Walang mod na available pa para sa bersyon na ito ng Beat Saber", + "buttons": { + "more-infos": "Higit pang impormasyon", + "install-or-update": "I-install o i-update", + "reinstall-all": "I-reinstall ang lahat" + }, + "mods-grid": { + "header-bar": { + "name": "Pangalan", + "installed": "Naka-install", + "latest": "Pinakabago", + "description": "Deskripsyon", + "dropdown": { + "import-mods": "I-import ang mga mod", + "uninstall-all": "I-uninstall ang lahat", + "unselect-all": "I-unselect and lahat" + } + } + }, + "notifications": { + "all-mods-already-installed": { + "title": "Naka-install na ang mga mod", + "description": "Ang lahat ng napiling mod ay naka-install na" + }, + "outdated-mods": { + "title": "Lipas na Mod", + "title-plural": "Lipas ng mga Mod", + "description": "Ang {name} mod ay lipas na. Gusto mo bang i-update ito?", + "description-plural": "Ang bersyon na ito ay may {nb} lipas na mga mod. Gusto mo bang i-update ang mga ito?", + "dont-remind-me": "Huwag akong paalalahanan", + "update": "I-update" + } + }, + "drop-zone": { + "text": "I-import ang iyong mga mod", + "subtext": "I-drop ang iyong mga \"zip\" or \"dll\" na mga file dito upang i-import ang mga ito" + } + }, + "dropdown": { + "open-folder": "Buksan ang folder", + "verify-files": "I-verify ang mga file", + "clone": "I-clone", + "edit": "I-edit", + "uninstall": "I-uninstall", + "create-shortcut": "Gumawa ng shortcut", + "shared-folders": "Shared Folders" + } + }, + "available-versions": { + "title": "Mag-download ng bersyon", + "steam-release": "Release page", + "dropdown": { + "refresh": "I-refresh ang mga bersyon", + "import-version": "Mag-import ng bersyon" + }, + "recommended": "inirerekomenda", + "recommended-tooltip": "Pinakamaayos na bersyon para i-mod" + }, + "settings": { + "steam-and-oculus": { + "title": "Steam & Oculus", + "description": "Ang pag-log out ay magpapahintulot sa iyong magpalit ng account sa susunod na pag-download ng Beat Saber.", + "logout": "Mag-log out", + "logout-success": "Nakapag-logout na sa app", + "download-platform": { + "title": "Default na Platform", + "desc": "Pumili ng default na platform na gagamitin upang mag-download ng mga bersyon ng Beat Saber.", + "always-ask": "Laging magtanong" + } + }, + "appearance": { + "title": "Itsura", + "description": "Pumili ng dalawang pangunahing kulay ng BSManager.", + "reset": "I-reset", + "sub-title": "Tema", + "themes": { + "dark": "Dark", + "light": "Light", + "os": "I-sync sa computer" + } + }, + "installation-folder": { + "title": "Installation folder", + "description": "Palitan ang folder na maglalaman ng lahat ng nilalamang ida-download ng BSManager." + }, + "proton-folder": { + "title": "Proton folder", + "description": "Palitan ang folder sa Proton path. (hal. Proton - Experimental)", + "errors": { + "title": "Hindi na-set ang proton folder ng maayos", + "invalid-folder": "Mali ang value ng Proton folder path" + } + }, + "additional-content": { + "title": "Additional content", + "description": "Additional content na nagpapahintulot sa iyong i-customize ang Beat Saber!", + "deep-links": { + "sub-title": "OneClick installations" + } + }, + "language": { + "title": "Lengguwahe", + "description": "Pumili ng lengguwahe.", + "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": "한국어", + "uk-UA": "Українська", + "tl-PH": "Filipino", + "translated": { + "en-EN": "Ingles, Inglatera", + "en-US": "Ingles, USA", + "fr-FR": "Pranses", + "es-ES": "Espanyol", + "it-IT": "Italyano", + "de-DE": "Aleman", + "pt-BR": "Portuges (Brazil)", + "ru-RU": "Ruso", + "zh-CN": "Intsik (Simple)", + "zh-TW": "Intsik (Trandisyunal)", + "ja-JP": "Hapon", + "ko-KR": "Koreano", + "uk-UA": "Ukranyano", + "tl-PH": "Filipino" + } + } + }, + "patreon": { + "title": "Supportahan ang BSManager 💖", + "description": "Suportahan ang proyekto at tulungan kami na magbigay ng patuloy na mga pagdagdag ng feature sa BSManager.", + "buttons": { + "support": "Supportahan ang BSManager 🥰", + "supporters": "Mga Supporters 👀" + }, + "view": { + "no-supporters": "Walang pang supporter", + "sponsors": "Mga Sponsors", + "supporters": "Mga Supporters" + } + }, + "discord": { + "description": "Sumali sa komunidad ng BSManager sa pamamagitan ng pagsunod sa amin sa aming mga social media!" + }, + "contribution": { + "description": "Magmungkahi ng mga bagong feature o mag-ulat ng bug upang matulungan ang pagpapabuti ng BSManager!", + "buttons": { + "request-features": "Mag-request ng feature", + "report-bug": "Mag-ulat ng bug", + "open-logs": "Buksan ang mga logs" + } + }, + "advanced": { + "title": "Advanced", + "description": "Mga advanced na setting para sa BSManager.", + "hardware-acceleration": { + "title": "Hardware Acceleration", + "description": "I-enable ang Hardware Acceleration upang gamitin ang iyong GPU at mapabuti ang performance ng BSManager. I-off ito kung nagiging mabagal ang app.", + "modal": { + "title": "Kailangang i-restart", + "body": "Ang pagbabago ng setting ng hardware acceleration ay isasara at ire-relaunch ang BSManager. Sigurado ka bang gusto mong gawin ito?", + "confirm-btn": "Oo, sigurado ako" + }, + "error-notification": { + "message": "Nagkaroon ng error, hindi ma-disable ang hardware acceleration." + } + }, + "use-symlinks": { + "title": "Gumamit ng Symlinks", + "description": "Gumamit ng Symlinks sa halip na Junctions upang mag-link ng mga folder. I-on lamang ito kung talagang kailangan mo ito.", + "modal": { + "title": "Symlink Permissions", + "body": "Kapag gumagawa ng symlinks, kakailanganin ng BSManager ng mga pribilehiyo ng administrator o naka-enable na developer mode sa iyong sistema. Sigurado ka bang gusto mong magpatuloy?", + "confirm-btn": "Oo, sigurado ako" + }, + "error-notification": { + "message": "Nagkaroon ng error, hindi ma-bago ang setting ng symlink." + } + }, + "use-system-proxy": { + "title": "Gumamit ng system proxy", + "description": "Gagawin ng BSManager ang mga network request sa pamamagitan ng iyong system proxy.", + "error-notification": { + "message": "Nagkaroon ng error, hindi ma-bago ang setting ng system proxy." + } + } + } + } + }, + "notifications": { + "types": { + "error": "🚨 Error", + "warning": "⚠️ Babala", + "success": "🎉 Success" + }, + "common": { + "msg": { + "error-occurred": "Nagkaroon ng error" + } + }, + "shared": { + "errors": { + "titles": { + "operation-running": "Tumatakbo ang operasyon", + "no-internet": "Walang internet", + "file-not-supported": "Hindi suportado ang file" + }, + "msg": { + "operation-running": "Maghintay na matapos ang kasalukuyang operasyon, pagkatapos ay subukan muli.", + "no-internet": "I-check ang iyong koneksyon at subukan muli..", + "file-not-supported": "Tanging {types} na mga file lamang ang suportado." + } + } + }, + "bs-download": { + "success": { + "titles": { + "download-success": "Kumpleto and pag-download", + "verification-finished": "Kumpleto and beripikasyon" + } + }, + "steam-download": { + "warnings": { + "msg": { + "ManifestChecksum": "Ang naunang na-download na manifest ay hindi tumutugma sa bago 🤔", + "ConnectionTimeout": "Mukhang mabagal ang iyong koneksyon sa internet 🥶", + "ConnectionLost": "Nawala ang koneksyon, subukan muli...", + "ConnectionError": "Hindi makakonekta sa Steam, subukan muli...", + "Unknown": "May nangyaring kakaiba 🤔 Mukhang mabagal ang iyong koneksyon." + } + }, + "errors": { + "msg": { + "401": "Mukhang hindi tayo pinapayagan ng Steam na mag-download ng Beat Saber 😢", + "404": "Hindi makakonek sa mga server ng Steam.", + "ExeNotFoundWindows": "Nawawala ang \"DepotDownloader.exe\". Pakisuri kung ang executable na ito ay naka-quarantine ng iyong anti-virus.", + "ExeNotFoundLinux": "\"Nawawala ang \"DepotDownloader\" na executable.", + "Password": "Maling password.", + "InvalidCredentials": "Maling login credentials, hindi aprubadong koneksyon, o sobrang daming pag-subok mag-login.", + "NoManifest": "Walang manifest na natagpuan", + "DirectoryCreate": "Hindi magawang mag-install ng mga kinakailangang folder.", + "NotAvailableApp": "Sinusubukan mo bang mag-download ng Beat Saber kahit wala ka nito? 🤣", + "DepotNotFound": "Hindi magawang i-download ang Beat Saber 😥 subukan muli maya-maya 😕", + "NotCompleted": "Hindi nakumpleto ang pag-download ¯\\_(ツ)_/¯", + "InvalidManifest": "Hindi magawang i-download ang Beat Saber 😥 subukan muli maya-maya 😕", + "NoValidKey": "Hindi magawang i-download ang Beat Saber 😥 subukan muli maya-maya 😕", + "NoManifestCode": "Hindi magawang i-download ang Beat Saber 😥 subukan muli maya-maya 😕", + "Unknown": "May error na nangyari ¯\\_(ツ)_/¯", + "NoServer": "Hindi makakonek sa mga server ng Steam.", + "NotAllowed": "Mukhang hindi ka pinapayagang i-download ang Beat Saber 🥱", + "ConnectionTimeout": "Hindi makakonekta sa Steam 😕", + "SteamLib": "Kung nakakaranas ka ng error na ito, i-report ang bug sa GitHub kasama ang mga logs, pls.", + "ConnectionError": "Hindi makakonekta sa Steam matapos ang 10 tries 🤯", + "LicenceError": "Hindi makuha ang listahan ng mga lisensya.", + "RateLimitExceeded": "Masyado ka nang maraming beses kumonek, maghintay ng kaunti at subukan muli mamaya.", + "TokenRejected": "Ang iyong login token ay tinanggihan 😕 Paki subukan muli.", + "AccessDenied": "Ang pag-access sa Steam ay tinanggihan." + } + } + }, + "oculus-download": { + "errors": { + "msg": { + "DOWNLOAD_MANIFEST_FAILED": "Hindi magawang i-download ang manifest para sa bersyong ito; maaaring hindi wasto ang iyong login token.", + "MANIFEST_FILE_NOT_FOUND": "Hindi mahanap ang manifest para sa bersyong ito.", + "PARSE_MANIFEST_FILE_FAILED": "Nagkaroon ng error habang binabasa ang manifest.", + "ALREADY_DOWNLOADING": "May kasalukuyang dina-download na bersyon.", + "UNABLE_TO_GET_MANIFEST": "Hindi magawang makuha ang manifest na kailangan para sa pag-download.", + "VERIFY_INTEGRITY_FAILED": "Nagkaroon ng error habang nirere-verify ang file.", + "SOME_FILES_FAILED_TO_DOWNLOAD": "May mga file na hindi nagawang i-download.", + "META_LOGIN_TIMED_OUT": "Matagal ang pagkuha ng login token.", + "META_LOGIN_WINDOW_CLOSED_BY_USER": "Isinara ng user ang Meta login window.", + "NO_META_AUTH_TOKEN": "Hindi magawang kunin ang Meta login token na kailangan para sa pag-download.", + "UNKNOWN_ERROR": "May error na nangyari." + } + } + } + }, + "bs-import-version": { + "success": { + "start-import": { + "title": "Nagsimula ang import 👌", + "desc": "Maaaring tumagal ng ilang minuto ang import depende sa iyong configuration." + }, + "imported": { + "title": "Na-import ang bersyon 🎉" + } + }, + "errors": { + "import-error": { + "desc": "Suriin kung ang napiling folder ay installation ng Beat Saber." + } + } + }, + "settings": { + "move-folder": { + "success": { + "titles": { + "transfer-started": "Nagsimula ang transfer", + "transfer-finished": "Kumpleto ang transfer" + }, + "descs": { + "transfer-started": "Nagsimula na ang transfer at maaaring tumagal ng ilang minuto depende sa iyong configuration." + } + }, + "errors": { + "titles": { + "transfer-failed": "Hindi natapos ang transfer 😕" + }, + "descs": { + "COPY_TO_SUBPATH": "Ang destination folder ay hindi maaaring maging subfolder ng source folder.", + "restore-linked-folders": "Nagkaroon ng error habang nire-restore ang mga shared folders. Maaari mo pa ring mano-manong i-restore ang mga ito sa pamamagitan ng 'Shared Folders' na menu sa versions page." + } + } + }, + "steam": { + "success": { + "titles": { + "logout": "Naka-disconnect mula sa Steam." + } + } + }, + "additional-content": { + "deep-link": { + "select-all": "Piliin lahat", + "activation": { + "success": { + "title": "Na-activate ang OneClick!", + "description": "Na-activate na ang OneClick na installation." + }, + "error": { + "description": "Hindi magawang i-activate ang OneClick na installation." + } + }, + "deactivation": { + "success": { + "title": "Na-deactivate ang OneClick!", + "description": "Na-deactivate na ang OneClick na installation." + }, + "error": { + "description": "May error na nangyari." + } + }, + "check-all-enabled": { + "title": "I-disable ang OneClick", + "description": "Isa o higit pang mga OneClick na installation ang naka-disable. Pumunta sa settings upang i-enable ito.", + "actions": { + "settings": "Settings", + "not-remind": "Huwag akong paalalahanan" + } + } + } + } + }, + "bs-launch": { + "success": { + "titles": { + "BS_LAUNCHING": "Nila-launch...🚀", + "STEAM_LAUNCHING": "Nila-launch ang Steam!", + "SKIPPING_STEAM_LAUNCH": "Iniwasang i-launch ang Steam" + }, + "msg": { + "BS_LAUNCHING": "Huwag kalimutan mag-warm up 😉", + "STEAM_LAUNCHING": "Awtomatikong ni-launch ang Beat Saber pagkatapos ng Steam.", + "SKIPPING_STEAM_LAUNCH": "Sana alam mo ang ginagawa mo :)" + } + }, + "errors": { + "titles": { + "UNKNOWN_ERROR": "Hindi magawang i-launch", + "STEAM_NOT_RUNNING": "Hindi tumatakbo ang Steam", + "OCULUS_NOT_RUNNING": "Hindi tumatakbo ang Oculus", + "BS_ALREADY_RUNNING": "Ang Beat Saber ay tumatakbo na", + "EXE_NOT_FINDED": "Nawawalang mga file", + "PROTON_NOT_SET": "Walang naka-set na Proton folder", + "PROTON_NOT_FOUND": "Hindi nahanap ang Proton binary", + "EXIT": "Biglaang paghinto", + "OCULUS_LIB_NOT_FOUND": "Hindi nahanap ang Oculus library", + "ORIGINAL_OCULUS_NOT_INSTALLED": "Hindi nahanap ang orihinal na bersyon ng Oculus" + }, + "msg": { + "UNKNOWN_ERROR": "May error na nangyari.", + "STEAM_NOT_RUNNING": "Dapat tumakbo ang Steam upang i-launch ng BeatSaber.", + "OCULUS_NOT_RUNNING": "Dapat tumakbo ang Oculus upang i-launch ng BeatSaber.", + "BS_ALREADY_RUNNING": "Isara ang BeatSaber bago ito muling i-launch.", + "EXE_NOT_FINDED": "Mukhang nawawala ang ilang mga file, subukang i-verify ang mga file.", + "EXIT": "Biglaang huminto ang BeatSaber, subukang i-check ang mga file.", + "OCULUS_LIB_NOT_FOUND": "Suriin kung ang Oculus application ay tamang naka-install, at na ang mga libraries ay tamang naka-define sa Oculus.", + "PROTON_NOT_SET": "I-set ang Proton path sa settings.", + "PROTON_NOT_FOUND": "I-set ang Proton path sa settings.", + "ORIGINAL_OCULUS_NOT_INSTALLED": "Dapat naka-install ang Beat Saber mula sa Oculus app bago ito buksan." + }, + "actions": { + "STEAM_NOT_RUNNING": "I-launch ang Steam" + } + } + }, + "steam": { + "steam-launching": { + "title": "Nila-launch ang Steam!", + "description": "Awtomatikong i-launch ang Beat Saber pagkatapos ng Steam." + } + }, + "custom-version": { + "errors": { + "titles": { + "CantEditSteam": "Hindi magawang i-edit", + "CantRename": "Imposible ang pagpapalit ng pangalan", + "VersionAlreadExist": "Nakuha na ang pangalan na ito ng ibang bersyon", + "CantClone": "Imposible ang pag-clone", + "UnknownError": "May error na nangyari" + }, + "msg": { + "CantEditSteam": "Hindi mo maaaring i-edit ang Steam version. Maaari mo itong i-clone." + } + }, + "success": { + "titles": { + "CloningFinished": "Tapos na ang pag-clone 🎉" + } + } + }, + "mods": { + "install-mods": { + "titles": { + "success": "Na-install ang mga Mod 🎉", + "warning": "Na-install ang mga Mod 🤔" + }, + "msg": { + "success": "Lahat ng mod ay na-install na.", + "warning": "Isa o higit pang mga mod ang hindi na-install.", + "errors": { + "no-mods": "Walang mod na i-install.", + "cannot-install-bsipa": "Hindi na-install ang BSIPA 😨" + } + } + }, + "uninstall-mod": { + "titles": { + "success": "Na-uninstall ang mod 🎉" + }, + "msg": { + "errors": { + "no-mods": "Walang mod na naka-install 😑" + } + } + }, + "uninstall-all-mods": { + "titles": { + "success": "Na-uninstall ang mga mod 🎉" + }, + "msg": { + "success": "Lahat ng mod ay na-uninstall na.", + "errors": { + "no-mods": "Walang mod na naka-install sa bersyong ito 😑" + } + } + }, + "import-mod": { + "titles": { + "success": "Natapos ang pag-import ng mga mod", + "error": "Nagkaroon ng error habang ini-import ang mga mod" + }, + "msgs": { + "success": "Matagumpay na na-import ang mga mod.", + "some-success": "Ang ilang mod ay na-import ng maayos.", + "no-dlls": "Ang mga file ay walang \"dll\" na mga file." + } + } + }, + "maps": { + "one-click-install": { + "success": "Tapos na ang pag-install ng mapa", + "error": "Nagkaroon ng error habang ini-install ang mapa" + }, + "no-duplicates-maps": { + "title": "Walang Na-dobleng Mapa", + "msg": "Walang mapang tinanggal" + }, + "duplicates-maps-deleted": { + "title": "Tinanggal ang mga na-dobleng Mapa", + "msg": "Tinanggal ang mga na-dobleng mapa" + }, + "import-map": { + "titles": { + "success": "Natapos ang pag-import ng mga mapa", + "error": "Nagkaroon ng error habang ini-import ang mga mapa" + }, + "msgs": { + "success": "Na-import ng maayos ang mga mapa.", + "some-success": "Ang ilang mapa ay na-import ng maayos.", + "only-accept-zip": "zip files lang ang sinusuportahan.", + "invalid-zip": "Ang zip file(s) ay walang laman na mga mapa.", + "unknown": "May error na nangyari." + } + } + }, + "playlists": { + "one-click-install": { + "success": "Tapos na ang pag-install ng playlist", + "error": "Nagkaroon ng error habang ini-install ang playlist" + } + }, + "models": { + "one-click-install": { + "success": "Tapos na ang pag-install ng model", + "error": "Nagkaroon ng error habang ini-install ang model" + } + }, + "shared-folder": { + "info": { + "userdata-backup-created": { + "title": "Nagawa ang backup", + "msg": "Ang pag-share ng 'UserData' folder ay maaaring magdulot ng mga error, kung magkaroon ng problema, alisin ang pagkakabit ng folder upang maibalik ang backup." + } + }, + "linking-error": { + "title": "Nag-error habang nili-link ang folder", + "msg": { + "EPERM": "Walang permiso ang BSManager upang i-link ang folder.", + "EACCES": "Walang permiso ang BSManager upang i-link ang folder.", + "ENOSPC": "Puno na ang disk, magtanggal ng ilang files at subukang muli.", + "LinkingNotSupported": "Hindi sinusuportahan ang folder linking sa file system na ito.", + "UNKNOWN_ERROR": "May error na nangyari habang nili-link ang folder." + } + }, + "adding-error": { + "title": "Hindi idagdag ang shared folder", + "msg": "Hindi mo maaaring idagdag ang \"{folder}\" sa shared folders." + } + }, + "create-launch-shortcut": { + "success": { + "title": "Nagawa ang Shortcut", + "msg": "Ang shortcut ay nagawa na sa desktop.", + "msg-steam": "Ang shortcut ay nagawa na sa Steam library." + }, + "error": { + "msg": "Nagkaroon ng error habang ginagawa ang shortcut." + } + }, + "bs-version-oudated": { + "title": "Bersyon Lipas na", + "msg": "Ang bersyon ng Beat Saber na ito ay lipas na, gamitin ang inirerekomendang bersyon upang tamasahin ang mga pinakabagong features at bug fixes.", + "actions": { + "do-not-remind": "Huwag akong paalalahanan", + "ok": "Ok" + } + } + }, + "modals": { + "misc": { + "remember-my-choice": "Tandaan ang aking pinili" + }, + "choose-store": { + "title": "Anong platform?", + "body": "Piliin ang platform na nais mong pagkunan ng Beat Saber.", + "set-in-settings": "I-set ang default platform sa settings" + }, + "guard": { + "title": "Steam Guard", + "inputs": { + "guard-code": { + "label": "Guard Code", + "placeholder": "Ilagay ang iyong Guard code" + } + }, + "buttons": { + "submit": "Mag-login" + } + }, + "steam-login": { + "title": "Steam Login", + "inputs": { + "username": { + "label": "Mag-sign in gamit ang account name", + "placeholder": "Ilagay ang iyong account name" + }, + "password": { + "label": "Password", + "placeholder": "Ilagay ang iyong password", + "max-length-warning": "Ang password ay lumampas sa 64 na karakter! Kung ang password ay hindi wasto, subukang ilagay lamang ang unang 64 na karakter nito." + }, + "qr": { + "label": "O gamit ang QR code", + "note": { + "use-the": "Gamitin ang ", + "steam-mobile-app": "Steam Mobile App", + "to-connect-with-qr": "para mag-sign in gamit ang QR code." + } + }, + "stay": "Tandaan ako" + }, + "why-credentials": "Bakit kinakailangan ang aking mga kredensyal?", + "need-help-to-connect": "Kailangan ko ng tulong para ma-access ang aking account!", + "buttons": { + "submit": "Mag-sign in" + } + }, + "steam-auth-approve": { + "title": "Naghihintay ng kumpirmasyon", + "protected-by-mobile-auth": "Ang account ay protektado ng mobile authenticator.", + "use-steam-app-to-approve": "Gamitin ang Steam mobile app upang kumpirmahin ang koneksyon...", + "not-access-to-steam-app": "Wala akong access sa Steam mobile app" + }, + "steam-credentials": { + "title": "Steam Credentials", + "p-1": "Ang iyong Steam credentials ay kinakailangan lamang upang i-download ang mga bersyon ng Beat Saber, ginagamit namin ang DepotDownloader para gawin ito na nangangailangan ng iyong Steam credentials upang tiyakin na ikaw ay may-ari ng laro sa iyong library bago ka payagang kunin ang mga game files, ang iyong credentials ay hindi iniimbak o sine-save at ipinapasa nang direkta sa DepotDownloader. Gayunpaman, kung ayaw mong gawin ito, maaari mong sundan ang tutorial na ito: ", + "p-2": "Pagkatapos, maaari mong i-click ang gear icon sa kanang itaas na sulok at piliin ang \"Import a version\", saka mo maaaring piliin ang folder kung saan na-download ang Beat Saber. (Kung sinundan mo ang tutorial, mayroon kang tamang lokasyon)" + }, + "bs-import-version": { + "title": "Mag-import ng bersyon", + "description": "Mag-i-import ng bersyon ng Beat Saber para gamitin sa BSManager. Kokopyahin nito ang napiling Beat Saber installation folder sa BSManager versions folder.", + "oculus-version": "Oculus Version", + "oculus-version-tooltip": "Tiyakin kung ito ay isang Oculus version", + "buttons": { + "submit": "Mag-import ng bersyon" + } + }, + "bs-uninstall": { + "title": "I-uninstall", + "description": "Sigurado ka bang nais mong i-uninstall ang Beat Saber {version}? Kailangan mo itong i-download muli upang laruin ito.", + "buttons": { + "submit": "I-uninstall" + } + }, + "install-folder": { + "title": "Installation folder", + "description": "Ang pagpapalit ng default na installation folder ay magreresulta sa paglilipat ng lahat ng naka-install na data sa bagong folder.", + "buttons": { + "submit": "Piliin ang folder" + } + }, + "edit-version": { + "title": "I-edit ang bersyon", + "buttons": { + "submit": "I-edit" + } + }, + "clone-version": { + "title": "I-clone ang bersyon", + "description": "Ang pag-clone ng bersyon ay nagpapahintulot sa iyo na paghiwalayin ang mga karagdagang nilalaman ng Beat Saber sa pagitan ng dalawang bersyon.", + "inputs": { + "name": { + "label": "Pangalan", + "placeholder": "Pangalan ng bersyon" + }, + "color": { + "label": "Kulay" + } + }, + "buttons": { + "submit": "I-clone" + } + }, + "uninstall-mod": { + "title": "I-uninstall", + "description": "Sigurado ka bang nais mong i-uninstall ang {mod}? Maaaring magdulot ito ng mga problema sa iba pang naka-install na mods.", + "description-bsipa": "Sigurado ka bang nais mong i-uninstall ang BSIPA? Pagkatapos nito, hindi na gagana ang lahat ng naka-install na mods." + }, + "uninstall-all-mods": { + "title": "I-uninstall ang mga mods", + "description": "Sigurado ka bang nais mong i-uninstall ang lahat ng mods mula sa bersyon {version}? Hindi na ito maaaring ibalik." + }, + "maps-actions": { + "delete-maps": { + "title": { + "single": "Tanggalin ang map na ito?", + "multiple": "Tanggalin ang mga map?" + }, + "desc": { + "single": "Sigurado ka bang nais mong tanggalin ang map na {name}?", + "multiple": "Sigurado ka bang nais mong tanggalin ang lahat ng {nb} na map?" + }, + "info": { + "desc": { + "single": "Ang map na ito ay bahagi ng mga shared maps", + "multiple": "Ang mga map na ito ay bahagi ng mga shared maps" + }, + "title": { + "single": "Ang map na ito ay tatanggalin din mula sa mga bersyon na gumagamit ng shared maps", + "multiple": "Ang mga map na ito ay tatanggalin din mula sa mga bersyon na gumagamit ng shared maps" + } + } + }, + "delete-duplicate-maps": { + "title": "Tanggalin ang mga map?", + "desc": "Ang map na \"{map}\" lamang ang duplicate. Sigurado ka bang nais mong tanggalin ito?", + "desc-plural": "{nb} duplicate na map ang natagpuan. Sigurado ka bang nais mong tanggalin ang mga ito?" + } + }, + "link-contents": { + "title": "I-link ang {contentType}", + "p-1": "Ang pag-link ng {contentType} ay nagpapahintulot sa pagbabahagi ng {contentType} sa lahat ng bersyon na may naka-enable na feature na ito. Kapag naka-link, ang bersyon na ito ay makikinabang mula sa shared na {contentType}.", + "p-2": "Upang magamit ang linking feature, ang lahat ng iyong {itemsHtml} ay ililipat sa {sharedHtml} na folder. Pagkatapos nito, ang isang symbolic link na tumuturo sa shared na {contentType} folder ay papalit sa iyong orihinal na {contentType} folder.", + "warning": "Pakitandaan na anumang pagbabago na makakaapekto sa {contentType} ay makakaapekto rin sa lahat ng bersyon na may naka-enable na feature na ito.", + "what-is-a-symbolic-link": "Ano ang symbolic link?", + "i-need-help": "Kailangan ko ng tulong", + "valid-btn": "I-link ang {contentType}" + }, + "unlink-contents": { + "title": "I-unlink ang {contentType}", + "p-1": "Mag-ingat, ang pag-unlink ng {contentType} ay magdi-disable ng paggamit ng shared {contentType} para sa bersyon na ito, hanggang ito ay muling ma-enable.", + "p-2": "Upang i-unlink ang iyong mga maps, aalisin ang symbolic link na tumuturo sa {sharedHtml}. Pagkatapos nito, ang lahat ng maps sa shared folder ay kokopyahin sa {itemsHtml} folder ng iyong Beat Saber version.", + "do-not-copy-contents": "Huwag i-copy ang {contentType}", + "do-not-copy-contents-tip": "Kung naka-enable, ang {contentType} sa shared folder ay hindi kokopyahin sa iyong Beat Saber version. Bilang resulta, walang {contentType} ang matitira sa iyong Beat Saber version pagkatapos ng unlink.", + "valid-btn": "I-unlink ang {contentType}" + }, + "download-maps": { + "search-btn": "Maghanap", + "loading-maps": "Naglo-load ng mga map...", + "no-maps-found": "Walang nahanap na map", + "no-internet": "Walang internet" + }, + "mods-disclaimer": { + "title": "Paunawa", + "p-1": "Sa pagpili na gumamit ng mods, nauunawaan mo na:", + "li-1": "Maaaring makaranas ka ng mga problema na hindi umiiral sa vanilla na laro. 99.9% ng mga bug, crash, at lag ay dulot ng mga mods.", + "li-2": "Ang mga mods ay maaaring masira ng mga update at ito ay normal - maging matiisin at magalang kapag ito ay nangyari, dahil ang mga modder ay mga boluntaryo na may totoong buhay.", + "li-3": "Hindi layunin ng Beat Games na sirain ang mga mods. Nais nilang magtrabaho sa codebase at minsan ito ay nakakabasag ng mga mods, ngunit hindi nila layunin na puksain ang mga mods.", + "p-2": "Huwag atakihin ang mga developer ng laro para sa mga isyu na may kinalaman sa mods, at ganoon din ang mga modder at developer ng laro ay dalawang magkahiwalay na grupo. Huwag maging bastos, ok?" + }, + "shared-folders": { + "title": "Mga Shared Folder", + "description": "I-link ang mga Beat Saber folder upang i-synchronize ang kanilang nilalaman sa mga shared folder sa iba pang bersyon. Tandaan na ang pagtanggal ng nilalaman ay ibabahagi rin.", + "buttons": { + "add-folder": "Magdagdag ng Folder", + "link-folder": "I-link ang Folder", + "unlink-folder": "I-unlink ang Folder", + "link-all": "I-link lahat", + "remove-from-the-list": "Alisin mula sa listahan" + } + }, + "adding-shared-folder": { + "title": "Pagdaragdag ng Shared Folder", + "description": "Maaaring makaranas ka ng mga isyu kapag nililink ang \"{folder}\" na folder. Sigurado ka bang nais mong idagdag ito?" + }, + "create-launch-shortcut": { + "title": "Gumawa ng Shortcut", + "desc": "Ang paggawa ng shortcut ay magpapahintulot sa iyo na simulan ang Beat Saber gamit ang mga napiling opsyon nang hindi dumadaan sa BSManager.", + "launch-options": "Mga Opsyon sa Pag-launch", + "advanced-launch": "Advanced na Pag-launch", + "valid-btn": "Gumawa ng shortcut", + "create-steam-shortcut": "Gumawa ng Steam shortcut", + "steam-shortcut-tippy": "Kung naka-enable, sa halip na gumawa ng shortcut sa desktop, ito ay gagawin sa Steam." + }, + "connect-to-meta": { + "title": "Mag-connect sa Meta", + "body": { + "token-needed": "Kinakailangan ang iyong Meta connection token upang ma-download ang Beat Saber.", + "need-cookie-enabled": "Sa pag-login sa Meta, isang login window ang magbubukas at maaari mong simulan ang proseso ng pag-login. Siguraduhin na tanggapin ang cookies, kung hindi, maaaring hindi namin makuha ang iyong token upang simulan ang pag-download.", + "enter-token-manually": "I-enter ang aking login token manu-mano", + "enter-token-manually-tooltip": "Papayagan ka nitong i-enter ang iyong login token nang hindi dumadaan sa Meta login." + }, + "stay": "Tandaan ako", + "connect-to-meta": "Mag-connect sa Meta" + }, + "enable-oculus-sideloaded-apps": { + "title": "I-enable ang Sideloading", + "info-1": "Upang ilunsad ang Beat Saber, ang kakayahang magpatakbo ng sideloaded apps ay kailangang ma-enable. Hihilingin ng BSManager ang administrator rights upang awtomatikong i-enable ang feature na ito.", + "info-2": "Ang sideloaded apps feature ay nagpapahintulot sa paglulunsad ng mga laro na nasa labas ng iyong Oculus library folder.", + "info-3": "Matapos i-activate ang sideloading, mananatili ang feature na ito at hindi ka na hihilingin na i-enable ito muli.", + "i-want-to-do-it-myself": "Nais kong gawin ito mag-isa", + "understood": "Naiintindihan" + }, + "enter-meta-token": { + "title": "Oculus Token", + "body": { + "info-enter-token": "Upang ma-download ang Beat Saber, kinakailangan ang iyong Oculus login token.", + "how-obtain-token": "Paano ko makukuha ang aking Oculus Token?", + "oculus-token": "Oculus Token", + "token-is-invalid": "Ang Token ay hindi wasto.", + "save-my-token": "I-save ang aking token", + "have-token-saved": "Mayroon na akong na-save na token", + "save-token-info": "Ise-save nito ang iyong token para sa mas madaliang paggamit muli. Kakailanganin mong gumawa ng password upang i-encrypt ang iyong token para sa storage purposes. Kung makalimutan mo ang iyong password, kailangan mo lang ibigay muli ang iyong token.", + "password": "Password", + "password-too-short": "Masyadong maikli ang password", + "info-enter-password": "Upang ma-download ang Beat Saber, kinakailangan ang iyong Oculus login token. I-enter ang password na ginamit upang i-save ang iyong Oculus token.", + "info-disabled-btn-password": "Ang token na de-crypt gamit ang ibinigay na password ay hindi wasto. Siguraduhin na ang password ay pareho ng ginamit upang i-save ang token.", + "enter-oculus-token": "I-enter ang Oculus token" + }, + "valid-btn": "I-validate" + }, + "launch-as-admin": { + "title": "Mga Pahintulot ng Administrator", + "body": { + "info": "Nadetect na ang Steam ay tumatakbo gamit ang administrator permissions. Upang makipag-ugnayan sa Steam, kailangang ilunsad ang Beat Saber bilang administrator. Kung hindi, maaaring makaranas ng mga problema ang Beat Saber at magsara pagkatapos ilunsad.", + "info-2": "Ang paglulunsad ng Beat Saber sa administrator mode ay magbibigay din ng administrator rights sa mga naka-install na mods. Kaya't inirerekomenda na i-restart ang Steam nang walang administrator permissions.", + "info-3": "Tandaan na hindi inirerekomenda na bigyan ng administrator rights ang Steam, dahil nakakaapekto ito sa mga naka-install na laro at mods, na nagdudulot ng panganib sa seguridad." + }, + "launch-as-admin": "I-launch bilang Administrator", + "not-remind-me": "Huwag na akong paalalahanan" + }, + "ask-install-path": { + "title": "Installation Folder", + "choose-folder-description": "Piliin ang folder na maglalaman ng lahat ng content na ida-download ng BSManager. (mga bersyon, mods, maps, playlists, atbp.)", + "default": "Default", + "default-tooltip": "Naka-default sa iyong home folder" + }, + "choose-proton-folder": { + "title": "Proton Folder", + "proton-folder-description": "Sa Linux, kailangan ng BSManager ang Proton upang gumana. Piliin ang folder ng Proton installation upang magpatuloy.", + "proton-folder-placeholder": "Proton installation folder", + "where-is-proton-installed": "Saan naka-install ang Proton?" + }, + "bs-version-outdated": { + "body": "Ang bersyon na {outdatedVersion} ay lipas na, at ang ilang mods o features ay maaaring hindi na gumana ng tama. Mangyaring i-download ang pinakabagong inirerekomendang bersyon ({recommendedVersion}) ng Beat Saber upang tamasahin ang mga pinakabagong tampok at mga pag-aayos ng bug." + } + }, + "maps": { + "map-filter-panel": { + "duration": "Haba", + "nps": "Notes Per Second", + "njs": "Note Jump Speed", + "tags": "tags", + "specificities": "general", + "requirements": "requirements", + "exclude": "exclude", + "leaderboard": "leaderboard" + }, + "map-types": { + "accuracy": "accuracy", + "balanced": "balanced", + "challenge": "challenge", + "dance-style": "dance", + "fitness": "fitness", + "speed": "speed", + "tech": "tech" + }, + "map-styles": { + "dance": "dance", + "swing": "swing", + "nightcore": "nightcore", + "folk-acoustic": "folk & acoustic", + "kids-family": "kids & family", + "ambient": "ambient", + "funk-disco": "funk & disco", + "jazz": "jazz", + "soul": "soul", + "speedcore": "speedcore", + "punk": "punk", + "rb": "r&b", + "holiday": "holiday", + "vocaloid": "vocaloid", + "j-rock": "j-rock", + "trance": "trance", + "drum-and-bass": "drum & bass", + "comedy-meme": "comedy & meme", + "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": "alternative", + "dubstep": "dubstep", + "metal": "metal", + "anime": "anime", + "hip-hop-rap": "hip hop & rap", + "j-pop": "j-pop", + "rock": "rock", + "pop": "pop", + "electronic": "electronic", + "classical-orchestral": "Classical & Orchestral" + }, + "map-specificities": { + "automapper": "AI", + "curated": "curated", + "verified": "verified", + "fullSpread": "full spread" + }, + "map-leaderboard": { + "All": "All", + "Ranked": "Ranked", + "BeatLeader": "BeatLeader", + "ScoreSaber": "ScoreSaber" + }, + "map-excludes": { + "installed": "installed" + }, + "difficulties": { + "Easy": "easy", + "Normal": "normal", + "Hard": "hard", + "Expert": "expert", + "ExpertPlus": "expert+" + }, + "map-item": { + "by": "Ni {songAutor}", + "mapped-by": "minap ni", + "delete": "Tanggalin", + "preview": "I-preview ang mapa", + "bsr-code": "BSR code", + "download": "I-download ang mapa", + "downloading": "I-download ang mapa", + "cancel-download": "Kanselahin ang pag-download", + "hightlight-difficulty": "I-highlight ang hirap" + } + }, + "models": { + "types": { + "singular": { + "avatar": "avatar", + "saber": "saber", + "platform": "platform", + "bloq": "block" + }, + "plural": { + "avatar": "avatars", + "saber": "sabers", + "platform": "platforms", + "bloq": "blocks" + } + }, + "sorts": { + "name": "Pangalan", + "date": "Petsa", + "author": "Awtor" + }, + "panel": { + "actions": { + "search": "Maghanap ng modelo", + "drop-down": { + "delete": "Tanggalin ang mga modelo", + "export": "I-export ang mga modelo" + }, + "link-models": "I-link ang mga modelo", + "unlink-models": "I-unlink ang mga modelo" + }, + "grid": { + "loading": "Naglo-load ng mga modelo...", + "no-models": "Walang mga modelo", + "download-models": "I-download ang mga modelo" + } + }, + "modals": { + "delete-model": { + "title": "Tanggalin ang modelo", + "desc": "Sigurado ka bang nais mong tanggalin ang modelo na {modelName}?", + "linked-annotation": "Ang modelong ito ay aalisin mula sa lahat ng naka-link na bersyon." + }, + "delete-models": { + "title": "Tanggalin ang mga modelo", + "desc": "Sigurado ka bang nais mong tanggalin ang {nb} mga modelo?", + "linked-annotation": "Ang mga modelong ito ay aalisin mula sa lahat ng naka-link na bersyon." + }, + "download-models": { + "search-btn": "Maghanap", + "search-placeholder": "Maghanap ng modelo", + "search-tips": { + "header": { + "tag": "Tag", + "desc": "Deskripsyon" + }, + "author-desc": "Ipakita lamang ang mga modelo mula sa tinukoy na may-akda.", + "hash-desc": "Ipakita lamang ang mga modelo na may tinukoy na hash.", + "tag-desc": "Ipakita lamang ang mga modelo na may tinukoy na tag.", + "name-desc": "Ipakita lamang ang mga modelo na may tinukoy na pangalan.", + "discordid-desc": "Ipakita lamang ang mga modelo mula sa tinukoy na Discord na user.", + "status-desc": "Ipakita lamang ang mga modelo na may tinukoy na status. (profile lamang, at para lamang sa may-akda)" + }, + "no-models": "Walang mga modelo na natagpuan.", + "no-internet": "Walang koneksyon sa internet.", + "error-occurred": "Nagkaroon ng error, subukang muli mamaya." + } + }, + "notifications": { + "prevent-for-mods": { + "title": "Kinakailangang mga mod", + "desc": "Siguraduhin na na-install mo ang kinakailangang mga mod upang magamit ang mga modelo sa Beat Saber", + "go-to-mods": "Pumunta sa mga mod", + "not-remind": "Huwag ako paalalahanan" + }, + "export-success": { + "title": "Matagumpay na pag-export 🎉" + } + } + }, + "beat-saver": { + "maps-sorts": { + "Latest": "Latest", + "Relevance": "Relevance", + "Rating": "Rating", + "Curated": "Curated" + } + }, + "auto-update": { + "checking": "Nagre-refresh ng mga update", + "downloading": "Nagi-download ng mga update" + }, + "bs-shortcut-launch": { + "beat-saber-launching": "Ipinapalabas ang Beat Saber", + "launching": "Pinapalabas", + "open-bsmanager": "Buksan ang BSManager", + "status-text": { + "init": "Ini-initialize...", + "success": { + "BS_LAUNCHING": "Ipinapalabas ang Beat Saber...", + "STEAM_LAUNCHING": "Ipinapalabas ang Steam...", + "STEAM_LAUNCHED": "Matagumpay na na-launch ang Steam!", + "UNABLE_TO_LAUNCH_STEAM": "Hindi ma-launch ang Steam, pinipilit na mag-launch ng Beat Saber..." + } + } + }, + "drop-zone": { + "or-browse-files": "O mag-browse ng mga file" + }, + "playlist": { + "error-playlist-creation-title": "Error sa paggawa ng Playlist", + "error-playlist-creation-desc": "Nagkaroon ng error habang ginagawa ang playlist.", + "playlist-created-title": "Nagawa ang playlist", + "playlist-created-desc": "Nagawa ang playlist. Maaari mo nang isynchronize ang mga mapa nito!", + "download-playlist": "I-download ang Playlist", + "synchronize-playlist": "I-synchronize ang Playlist", + "synchronize-maps": "I-synchronize ang mga Mapa", + "error-playlists-synchronization-title": "Error sa Pag-synchronize ng Playlist", + "error-playlists-synchronization-desc": "Nagkaroon ng error habang nagsasynchronize ng mga playlist.", + "playlists-synchronized-title": "Matagumpay na na-synchronize ang Playlist!", + "playlists-synchronized-desc": "Ang mga playlist at kanilang mga mapa ay na-download.", + "playlists-export-error-title": "Error sa Pag-export ng Playlist", + "playlists-export-error-desc": "Nagkaroon ng error habang ine-export ang mga playlist.", + "playlists-exported-title": "Matagumpay na na-export ang Playlist!", + "playlists-exported-desc": "Ang mga playlist ay matagumpay na na-export.", + "playlists-with-maps-exported-desc": "Ang mga playlist at kanilang mga mapa ay matagumpay na na-export.", + "playlist-delete-error-title": "Error sa Pag-delete ng Playlist", + "playlist-delete-error-desc": "Nagkaroon ng error habang dinidelete ang playlist.", + "playlists-deleted-title": "Matagumpay na na-delete ang Playlist!", + "playlists-deleted-desc": "Ang mga playlist ay matagumpay na na-delete.", + "edit-playlist": "I-edit ang Playlist", + "playlist-edit-error-title": "Error sa Pag-edit ng Playlist", + "playlist-edit-error-desc": "Nagkaroon ng error habang ine-edit ang playlist.", + "playlist-edited-title": "Matagumpay na na-edit ang Playlist!", + "playlist-edited-desc": "Ang playlist ay matagumpay na na-edit. Maaari mo nang isynchronize ang mga mapa nito!", + "playlists-loading": "Naglo-load ng mga Playlist...", + "no-playlists": "Walang Playlist", + "download-playlists": "I-download ang mga Playlist", + "created-by": "Nilika ni", + "stop-download": "Itigil ang Pag-download", + "cancel-download": "I-cancel ang Pag-download", + "open-file": "Buksan ang File", + "delete-playlist-ask": "I-delete ang Playlist?", + "delete-playlists-ask": "I-delete ang mga Playlist?", + "delete-playlist-desc": "Sigurado ka bang gusto mong i-delete ang playlist na \"{playlistTitle}\"?", + "delete-playlists-desc": "Sigurado ka bang gusto mong i-delete ang {nb} mga playlist?", + "delete-maps": "I-delete ang mga Mapa", + "delete-playlist-maps-tip": "Kung pinili, ang lahat ng mapa sa playlist ay madi-delete", + "delete-playlists-maps-tip": "Kung pinili, ang lahat ng mapa sa mga playlist ay madi-delete", + "export-playlist-ask": "I-export ang Playlist?", + "export-playlists-ask": "I-export ang mga Playlist?", + "export-playlist-desc": "Sigurado ka bang gusto mong i-export ang playlist na \"{playlistTitle}\"?", + "export-playlists-desc": "Sigurado ka bang gusto mong i-export ang {nb} mga playlist?", + "export-maps": "I-export ang mga Mapa", + "export-playlist-maps-tip": "Kung pinili, ang lahat ng mapa sa playlist ay ie-export din", + "export-playlists-maps-tip": "Kung pinili, ang lahat ng mapa sa mga playlist ay ie-export din", + "export": "I-export", + "need-clone-title": "Babala", + "need-clone-desc-1": "Ang playlist na ito ay na-download mula sa isang panlabas na site at naglalaman ng isang synchronization link.", + "need-clone-desc-2": "Upang maiwasan ang pagkawala ng mga pagbabago mo sa synchronization, ang playlist ay ika-duplicate at aalisin ang synchronization link.", + "need-clone-desc-3": "Maaari mong, kung nais mo, i-delete ang orihinal na playlist.", + "understood": "Naiintindihan ko", + "synchronize-playlist-ask": "I-synchronize ang Playlist?", + "synchronize-playlists-ask": "I-synchronize ang mga Playlist?", + "synchronize-playlist-desc": "Sigurado ka bang gusto mong i-synchronize ang playlist na \"{playlistTitle}\"?", + "synchronize-playlists-desc": "Sigurado ka bang gusto mong i-synchronize ang {nb} mga playlist?", + "synchronize-playlist-tip": "Ang aksyon na ito ay nag-a-update ng mga playlist at nagda-download ng nawawalang mga mapa; maaaring tumagal ng ilang minuto.", + "synchronize": "I-synchronize", + "curated": "Inirerekomenda", + "verified-mapper": "Verified na Mapa", + "empty-playlists": "Walang laman na mga Playlist", + "search-playlist": "Maghanap ng Playlist", + "no-playlists-found": "Walang nahanap na Playlist", + "error-occur-while-loading-playlists": "Nagkaroon ng error habang naglo-load ng mga Playlist", + "error-occur-while-loading-playlist": "Nagkaroon ng error habang naglo-load ng Playlist", + "loading-maps": "Naglo-load ng mga Mapa...", + "no-maps-found-for-playlist": "Walang nahanap na mapa para sa playlist na ito", + "playlist-contain-no-maps": "Walang laman ang playlist ng mapa", + "no-map-installed-for-playlist": "Walang naka-install na mapa para sa playlist na ito", + "playlist-is-waiting-to-download": "Ang playlist ay naghihintay upang i-download", + "download-maps": "I-download ang mga Mapa", + "download-missing-maps": "I-download ang nawawalang mga Mapa", + "playlist-is-downloading": "Ang playlist ay ine-download", + "some-playlist-maps-are-missing": "May ilang mapa sa playlist na nawawala", + "create-a-playlist": "Lumikha ng Playlist", + "synchronize-playlists": "I-synchronize ang mga Playlist", + "export-playlists": "I-export ang mga Playlist", + "delete-playlists": "I-delete ang mga Playlist", + "choose-image": "Pumili ng Imahe", + "title": "Pamagat", + "playlist-title": "Pamagat ng Playlist", + "description": "Paglalarawan", + "playlist-description": "Paglalarawan ng Playlist", + "author": "May-akda", + "playlist-author": "May-akda ng Playlist", + "save": "I-save", + "loading": "Naglo-load...", + "installed": "Naka-install", + "no-map-found": "Walang nahanap na mapa", + "edit-playlist-shortcuts": "Hold Shift o Ctrl upang pumili ng maraming mapa", + "add-to-playlist": "Idagdag sa Playlist", + "remove-from-playlist": "Alisin mula sa Playlist", + "playlist-is-empty": "Ang playlist ay walang laman", + "continue": "Magpatuloy", + "nb-maps": "Bilang ng mga mapa", + "nb-mappers": "Bilang ng mga mappers", + "duration": "Tagal", + "nps": "Mga Tala bawat Segundo", + "date-picker": { + "start-date-end-date": "Petsa ng Simula — Petsa ng Pagtatapos", + "all": "Lahat", + "last-24h": "Huling 24 Oras", + "last-week": "Huling Linggo", + "last-month": "Huling Buwan", + "3-last-month": "Huling 3 Buwan" + }, + "playlists-imported": "Matagumpay na na-import ang mga Playlist", + "all-playlists-have-been-successfully-imported": "Lahat ng playlist ay matagumpay na na-import", + "no-playlist-found": "Walang nahanap na Playlist", + "no-playlist-found-in-selected-files": "Walang nahanap na Playlist sa mga napiling file", + "some-playlists-not-imported": "May ilang playlist na hindi na-import", + "some-playlists-have-been-imported": { + "INVALID_SOURCE": "May ilang playlist na hindi natagpuan", + "INVALID_PLAYLIST_FILE": "May ilang playlist na hindi wasto", + "CANNOT_PARSE_PLAYLIST": "May ilang playlist na hindi mabasa", + "unknown": "May ilang playlist na hindi na-import" + }, + "no-playlists-imported": "Walang na-import na Playlist", + "no-playlists-imported-errors": { + "INVALID_SOURCE": "Hindi natagpuan ang mga Playlist", + "INVALID_PLAYLIST_FILE": "Hindi wasto ang mga Playlist", + "CANNOT_PARSE_PLAYLIST": "Hindi mabasa ang mga Playlist", + "unknown": "Walang na-import na Playlist" + } + }, + "dateformat": { + "dayNames": [ + "Lin", + "Lun", + "Mar", + "Miy", + "Huw", + "Biy", + "Sab", + "Linggo", + "Lunes", + "Martes", + "Miyerkules", + "Huwebes", + "Biyernes", + "Sabado" + ], + "monthNames": [ + "Ene", + "Peb", + "Mar", + "Abr", + "May", + "Hun", + "Hul", + "Ago", + "Set", + "Okt", + "Nob", + "Dis", + "Enero", + "Pebrero", + "Marso", + "Abril", + "Mayo", + "Hunyo", + "Hulyo", + "Agosto", + "Setyembre", + "Oktubre", + "Nobyembre", + "Disyembre" + ], + "timeNames": [ + "a", + "p", + "am", + "pm", + "A", + "P", + "AM", + "PM" + ] + } +} diff --git a/assets/jsons/translations/uk.json b/assets/jsons/translations/uk.json index f40a46a9..b9b3a383 100644 --- a/assets/jsons/translations/uk.json +++ b/assets/jsons/translations/uk.json @@ -247,6 +247,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "Англійська, Велика Британія", "en-US": "Англійська, США", @@ -260,7 +261,8 @@ "zh-TW": "Китайська (традиційна)", "ja-JP": "Японська", "ko-KR": "Корейська", - "uk-UA": "Українська" + "uk-UA": "Українська", + "tl-PH": "філіппінська" } } }, diff --git a/assets/jsons/translations/zh-tw.json b/assets/jsons/translations/zh-tw.json index 42a50870..650fa7b4 100644 --- a/assets/jsons/translations/zh-tw.json +++ b/assets/jsons/translations/zh-tw.json @@ -247,6 +247,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "英式英語", "en-US": "美式英語", @@ -260,7 +261,8 @@ "zh-TW": "正體中文", "ja-JP": "日語", "ko-KR": "韓語", - "uk-UA": "烏克蘭" + "uk-UA": "烏克蘭", + "tl-PH": "菲律賓人" } } }, diff --git a/assets/jsons/translations/zh.json b/assets/jsons/translations/zh.json index eabad9a9..1fba88ca 100644 --- a/assets/jsons/translations/zh.json +++ b/assets/jsons/translations/zh.json @@ -246,6 +246,7 @@ "ja-JP": "日本語", "ko-KR": "한국어", "uk-UA": "Українська", + "tl-PH": "Filipino", "translated": { "en-EN": "英式英语", "en-US": "美式英语", @@ -259,7 +260,8 @@ "zh-TW": "正体中文", "ja-JP": "日语", "ko-KR": "韩语", - "uk-UA": "烏克蘭" + "uk-UA": "烏克蘭", + "tl-PH": "菲律宾人" } } }, diff --git a/src/renderer/components/svgs/bsm-icon.component.tsx b/src/renderer/components/svgs/bsm-icon.component.tsx index f4f95305..98f8904f 100644 --- a/src/renderer/components/svgs/bsm-icon.component.tsx +++ b/src/renderer/components/svgs/bsm-icon.component.tsx @@ -71,10 +71,11 @@ import { CancelIcon } from "./icons/cancel-icon.component"; import { WarningIcon } from "./icons/warning-icon.component"; import { ArrowUpwardIcon } from "./icons/arrow-upward-icon.component"; import { UkIcon } from "./flags/uk-icon.component"; +import { PhilippineIcon } from "./flags/philippine-icon.component"; +export type BsmIconType = SongDetailDiffCharactertistic | ("settings" | "trash" | "favorite" | "folder" | "bsNote" | "check" | "three-dots" | "twitch" | "eye" | "play" | "checkCircleIcon" | "discord" | "info" | "eye-cross" | "terminal" | "desktop" | "oculus" | "add" | "cross" | "task" | "github" | "close" | "thumbUpFill" | "timerFill" | "pause" | "twitter" | "sync" | "chevron-top" | "copy" | "steam" | "edit" | "export" | "patreon" | "search" | "bsMapDifficulty" | "link" | "unlink" | "download" | "filter" | "mee6" | "volume-up" | "volume-off" | "volume-down" | "shortcut" | "backup-restore" | "web-site" | "clean" | "browse" | "add-file" | "arrow-upward" | "cancel" | "warning" | "fr-FR-flag" | "es-ES-flag" | "it-IT-flag" | "en-US-flag" | "en-EN-flag" | "de-DE-flag" | "ru-RU-flag" | "zh-CN-flag" | "zh-TW-flag" | "ja-JP-flag" | "ko-KR-flag" | "pt-BR-flag" | "uk-UA-flag" | "tl-PH-flag" | "null" ); -export type BsmIconType = SongDetailDiffCharactertistic | ("settings" | "trash" | "favorite" | "folder" | "bsNote" | "check" | "three-dots" | "twitch" | "eye" | "play" | "checkCircleIcon" | "discord" | "info" | "eye-cross" | "terminal" | "desktop" | "oculus" | "add" | "cross" | "task" | "github" | "close" | "thumbUpFill" | "timerFill" | "pause" | "twitter" | "sync" | "chevron-top" | "copy" | "steam" | "edit" | "export" | "patreon" | "search" | "bsMapDifficulty" | "link" | "unlink" | "download" | "filter" | "mee6" | "volume-up" | "volume-off" | "volume-down" | "shortcut" | "backup-restore" | "web-site" | "clean" | "browse" | "add-file" | "arrow-upward" | "cancel" | "warning" | "fr-FR-flag" | "es-ES-flag" | "it-IT-flag" | "en-US-flag" | "en-EN-flag" | "de-DE-flag" | "ru-RU-flag" | "zh-CN-flag" | "zh-TW-flag" | "ja-JP-flag" | "ko-KR-flag" | "pt-BR-flag" | "uk-UA-flag"| "null" ); export const BsmIcon = memo(({ className, icon, style }: { className?: string; icon: BsmIconType; style?: CSSProperties }) => { // TODO : Very ugly very messy, need to find a better way to do this @@ -150,6 +151,9 @@ export const BsmIcon = memo(({ className, icon, style }: { className?: string; i if (icon === "uk-UA-flag"){ return ; } + if (icon === "tl-PH-flag") { + return ; + } if (icon === "task") { return ; diff --git a/src/renderer/components/svgs/flags/philippine-icon.component.tsx b/src/renderer/components/svgs/flags/philippine-icon.component.tsx new file mode 100644 index 00000000..15f169d0 --- /dev/null +++ b/src/renderer/components/svgs/flags/philippine-icon.component.tsx @@ -0,0 +1,13 @@ +import { createSvgIcon } from "../svg-icon.type"; + +export const PhilippineIcon = createSvgIcon((props, ref) => { + return ( + + + + + + + + ); +}); diff --git a/src/renderer/config/default-configuration.config.ts b/src/renderer/config/default-configuration.config.ts index 645b116a..012b3adb 100644 --- a/src/renderer/config/default-configuration.config.ts +++ b/src/renderer/config/default-configuration.config.ts @@ -25,7 +25,7 @@ export const defaultConfiguration: { "second-color": "#ff4444", theme: "os", language: window.navigator.language.length <= 2 ? `${window.navigator.language}-${window.navigator.language.toLocaleUpperCase()}` : window.navigator.language, - supported_languages: ["en-US", "en-EN", "fr-FR", "es-ES", "it-IT", "de-DE", "ru-RU", "zh-CN", "zh-TW", "ja-JP", "ko-KR", "pt-BR", "uk-UA"], + supported_languages: ["en-US", "en-EN", "fr-FR", "es-ES", "it-IT", "de-DE", "ru-RU", "zh-CN", "zh-TW", "ja-JP", "ko-KR", "pt-BR", "uk-UA", "tl-PH"], default_mods: ["SongCore", "WhyIsThereNoLeaderboard", "BeatSaverDownloader", "BeatSaverVoting", "PlaylistManager"], "default-shared-folders": [ window.electron.path.join("Beat Saber_Data", "CustomLevels"), From 0130334a749ba06ba4fedcec4995e3d78aa6dab1 Mon Sep 17 00:00:00 2001 From: Zagrios <40181755+Zagrios@users.noreply.github.com> Date: Sat, 8 Feb 2025 16:56:57 +0100 Subject: [PATCH 15/21] Update PhilippineIcon --- .../svgs/flags/philippine-icon.component.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/renderer/components/svgs/flags/philippine-icon.component.tsx b/src/renderer/components/svgs/flags/philippine-icon.component.tsx index 15f169d0..e8c02b66 100644 --- a/src/renderer/components/svgs/flags/philippine-icon.component.tsx +++ b/src/renderer/components/svgs/flags/philippine-icon.component.tsx @@ -2,12 +2,13 @@ import { createSvgIcon } from "../svg-icon.type"; export const PhilippineIcon = createSvgIcon((props, ref) => { return ( - - - - - - + + + + + + + ); }); From 6be5c776fa51c6f917df6131d6f6f9b1c19f8198 Mon Sep 17 00:00:00 2001 From: Shidorien Date: Sat, 8 Feb 2025 18:23:46 +0100 Subject: [PATCH 16/21] move GitHub button in settings page --- src/renderer/pages/settings-page.component.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index 1501162d..0dcced08 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -506,6 +506,7 @@ export function SettingsPage() {
+
@@ -518,7 +519,6 @@ export function SettingsPage() {
-
From 3e61a14ca364ee1af1ff4610757ce4b869b2482b Mon Sep 17 00:00:00 2001 From: Shidorien Date: Sat, 8 Feb 2025 18:32:17 +0100 Subject: [PATCH 17/21] reorder GitHub button position and update its color in settings page --- src/renderer/pages/settings-page.component.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/pages/settings-page.component.tsx b/src/renderer/pages/settings-page.component.tsx index 0dcced08..ea81c25a 100644 --- a/src/renderer/pages/settings-page.component.tsx +++ b/src/renderer/pages/settings-page.component.tsx @@ -506,9 +506,9 @@ export function SettingsPage() {
- - + +
From b831560b5238ec81526668b6e563d17d7ef34eaa Mon Sep 17 00:00:00 2001 From: Shidorien Date: Sat, 8 Feb 2025 19:34:34 +0100 Subject: [PATCH 18/21] add missing translation in chinese (simplified) --- assets/jsons/translations/zh.json | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/jsons/translations/zh.json b/assets/jsons/translations/zh.json index eabad9a9..bed2a5ca 100644 --- a/assets/jsons/translations/zh.json +++ b/assets/jsons/translations/zh.json @@ -240,6 +240,7 @@ "es-ES": "Español", "it-IT": "Italiano", "de-DE": "Deutsch", + "pt-BR": "Português (Brasil)", "ru-RU": "Русский", "zh-CN": "简体中文", "zh-TW": "正體中文", From 41628d4e6e4206892ede4ce9685e001a3a60cfd9 Mon Sep 17 00:00:00 2001 From: Zagrios <40181755+Zagrios@users.noreply.github.com> Date: Mon, 10 Feb 2025 22:37:32 +0100 Subject: [PATCH 19/21] Backend should be as frontend-agnostic as possible --- src/main/ipcs/bs-mods-ipcs.ts | 7 +---- src/main/ipcs/linux.ipcs.ts | 5 ++++ .../services/mods/bs-mods-manager.service.ts | 13 ---------- .../slides/mods/mods-slide.component.tsx | 22 +++++++--------- .../services/bs-mods-manager.service.ts | 18 +++++++++---- src/renderer/services/linux.service.ts | 26 +++++++++++++++++++ src/shared/models/ipc/ipc-routes.ts | 3 +-- 7 files changed, 55 insertions(+), 39 deletions(-) create mode 100644 src/renderer/services/linux.service.ts diff --git a/src/main/ipcs/bs-mods-ipcs.ts b/src/main/ipcs/bs-mods-ipcs.ts index 627d541d..fd0cc1d9 100644 --- a/src/main/ipcs/bs-mods-ipcs.ts +++ b/src/main/ipcs/bs-mods-ipcs.ts @@ -1,6 +1,6 @@ import { BsModsManagerService } from "../services/mods/bs-mods-manager.service"; import { IpcService } from "../services/ipc.service"; -import { from, of } from "rxjs"; +import { from } from "rxjs"; const ipc = IpcService.getInstance(); @@ -34,8 +34,3 @@ ipc.on("bs-mods.uninstall-all-mods", (args, reply) => { reply(modsManager.uninstallAllMods(args)); }); -ipc.on("bs-mods.get-mods-grid-status", (_, reply) => { - const modsManager = BsModsManagerService.getInstance(); - reply(of(modsManager.getModsGridStatus())); -}) - diff --git a/src/main/ipcs/linux.ipcs.ts b/src/main/ipcs/linux.ipcs.ts index d40ad9fa..c1ac2387 100644 --- a/src/main/ipcs/linux.ipcs.ts +++ b/src/main/ipcs/linux.ipcs.ts @@ -9,3 +9,8 @@ ipc.on("linux.verify-proton-folder", (_, reply) => { reply(of(linuxService.verifyProtonPath())); }); +ipc.on("linux.get-wine-prefix-path", (_, reply) => { + const linuxService = LinuxService.getInstance(); + reply(of(linuxService.getWinePrefixPath())); +}); + diff --git a/src/main/services/mods/bs-mods-manager.service.ts b/src/main/services/mods/bs-mods-manager.service.ts index 95d66a0d..f127ecaf 100644 --- a/src/main/services/mods/bs-mods-manager.service.ts +++ b/src/main/services/mods/bs-mods-manager.service.ts @@ -19,7 +19,6 @@ import crypto from "crypto"; import { BsmZipExtractor } from "main/models/bsm-zip-extractor.class"; import { BsmShellLog, bsmSpawn } from "main/helpers/os.helpers"; import { BbmFullMod, BbmModVersion, ExternalMod } from "../../../shared/models/mods/mod.interface"; -import { ModsGridStatus } from "shared/models/mods/mod-ipc.model"; export class BsModsManagerService { private static instance: BsModsManagerService; @@ -565,18 +564,6 @@ export class BsModsManagerService { .finally(() => obs.complete()); }); } - - public getModsGridStatus(): ModsGridStatus { - if (process.platform === "linux") { - const wineprefix = this.linuxService.getWinePrefixPath(); - if (!wineprefix) { - log.error("Could not find BSManager WINEPREFIX path"); - return ModsGridStatus.NO_WINEPREFIX; - } - } - - return ModsGridStatus.OK; - } } const enum ModsInstallFolder { diff --git a/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx b/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx index 71a6d5fb..7068633a 100644 --- a/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx +++ b/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx @@ -226,20 +226,16 @@ export const ModsSlide = forwardRef(({ version, isActive, o return noop(); } - getAcceptDisclaimerKey() - .then(async (canLoad) => { - if (!canLoad) { - return onDisclamerDecline?.(); - } + getAcceptDisclaimerKey().then(async canLoad => { + if (!canLoad) { + return onDisclamerDecline?.(); + } - let status = ModsGridStatus.OK; - if (window.electron.platform === "linux") { - status = await modsManager.getModsGridStatus(); - } - setGridStatus(status); + const status = await modsManager.getModsGridStatus(); + setGridStatus(() => status); - loadMods(); - }); + loadMods(); + }); return () => { setMoreInfoMod(null); @@ -352,7 +348,7 @@ function ModStatus({ text, image, spin = false, children }: { text: string; imag return (
 - {t(text)} + {t(text)} {children}
); diff --git a/src/renderer/services/bs-mods-manager.service.ts b/src/renderer/services/bs-mods-manager.service.ts index 19ee418d..dd712cf9 100644 --- a/src/renderer/services/bs-mods-manager.service.ts +++ b/src/renderer/services/bs-mods-manager.service.ts @@ -9,6 +9,7 @@ import { ProgressionInterface } from "shared/models/progress-bar"; import { BbmFullMod, BbmModVersion } from "shared/models/mods/mod.interface"; import { logRenderError } from "renderer"; import { ModsGridStatus } from "shared/models/mods/mod-ipc.model"; +import { LinuxService } from "./linux.service"; export class BsModsManagerService { private static instance: BsModsManagerService; @@ -18,6 +19,7 @@ export class BsModsManagerService { private readonly ipcService: IpcService; private readonly progressBar: ProgressBarService; private readonly notifications: NotificationService; + private readonly linux: LinuxService public readonly isUninstalling$: BehaviorSubject = new BehaviorSubject(false); @@ -32,6 +34,7 @@ export class BsModsManagerService { this.ipcService = IpcService.getInstance(); this.progressBar = ProgressBarService.getInstance(); this.notifications = NotificationService.getInstance(); + this.linux = LinuxService.getInstance(); } public getAvailableMods(version: BSVersion): Observable { @@ -206,11 +209,16 @@ export class BsModsManagerService { } public async getModsGridStatus(): Promise { - return lastValueFrom(this.ipcService.sendV2("bs-mods.get-mods-grid-status")) - .catch(error => { - logRenderError(error); - return ModsGridStatus.UNKNOWN; - }); + + if(window.electron.platform === "linux"){ + const winePrefix = await lastValueFrom(this.linux.getWinePrefixPath()); + if(!winePrefix){ + logRenderError("Could not find BSManager WINEPREFIX path"); + return ModsGridStatus.NO_WINEPREFIX; + } + } + + return ModsGridStatus.OK; } } diff --git a/src/renderer/services/linux.service.ts b/src/renderer/services/linux.service.ts new file mode 100644 index 00000000..f08829a4 --- /dev/null +++ b/src/renderer/services/linux.service.ts @@ -0,0 +1,26 @@ +import { Observable } from "rxjs"; +import { IpcService } from "./ipc.service"; + +export class LinuxService { + + private static instance: LinuxService; + + public static getInstance(): LinuxService { + if (!LinuxService.instance) { + LinuxService.instance = new LinuxService(); + } + return LinuxService.instance; + } + + private readonly ipc: IpcService; + + private constructor() { + this.ipc = IpcService.getInstance(); + } + + public getWinePrefixPath(): Observable { + return this.ipc.sendV2("linux.get-wine-prefix-path"); + } + + +} diff --git a/src/shared/models/ipc/ipc-routes.ts b/src/shared/models/ipc/ipc-routes.ts index 70f2a6ba..db3748df 100644 --- a/src/shared/models/ipc/ipc-routes.ts +++ b/src/shared/models/ipc/ipc-routes.ts @@ -21,7 +21,6 @@ import { LocalBPList, LocalBPListsDetails } from "../playlists/local-playlist.mo import { StaticConfigGetIpcRequestResponse, StaticConfigKeys, StaticConfigSetIpcRequest } from "main/services/static-configuration.service"; import { BbmFullMod, BbmModVersion, ExternalMod } from "../mods/mod.interface"; import { OculusDownloadInfo } from "main/services/bs-version-download/bs-oculus-downloader.service"; -import { ModsGridStatus } from "../mods/mod-ipc.model"; export type IpcReplier = (data: Observable) => void; @@ -89,7 +88,6 @@ export interface IpcChannelMapping { "bs-mods.install-mods": { request: { mods: BbmFullMod[]; version: BSVersion }, response: Progression }; "bs-mods.uninstall-mods": { request: { mods: BbmFullMod[]; version: BSVersion }, response: Progression }; "bs-mods.uninstall-all-mods": { request: BSVersion, response: Progression }; - "bs-mods.get-mods-grid-status": { request: BSVersion, response: ModsGridStatus }; /* ** bs-playlist-ipcs ** */ "one-click-install-playlist": { request: string, response: Progression }; @@ -161,6 +159,7 @@ export interface IpcChannelMapping { /* ** linux.ipcs ** */ "linux.verify-proton-folder": { request: void, response: boolean }; + "linux.get-wine-prefix-path": { request: void, response: string }; /* ** oculus.ipcs ** */ "is-oculus-sideloaded-apps-enabled": { request: void, response: boolean }; From c3c3be08235ad8e87fb37683390d399ea958bf9f Mon Sep 17 00:00:00 2001 From: Zagrios <40181755+Zagrios@users.noreply.github.com> Date: Mon, 10 Feb 2025 22:53:06 +0100 Subject: [PATCH 20/21] Add Philipino and Ukrainian translations --- assets/jsons/translations/tl.json | 7 ++++++- assets/jsons/translations/uk.json | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/assets/jsons/translations/tl.json b/assets/jsons/translations/tl.json index eb916211..4a99478f 100644 --- a/assets/jsons/translations/tl.json +++ b/assets/jsons/translations/tl.json @@ -131,6 +131,10 @@ "loading-mods": "Naglo-load ng mga mod...", "no-internet": "Walang internet", "mods-not-available": "Walang mod na available pa para sa bersyon na ito ng Beat Saber", + "status": { + "no-wineprefix": "Hindi mahanap ang WINEPREFIX path ng BSManager. Pakilunsad muna ang Beat Saber sa BSManager.", + "unknown": "May naganap na hindi kilalang error ¯\\_(ツ)_/¯" + }, "buttons": { "more-infos": "Higit pang impormasyon", "install-or-update": "I-install o i-update", @@ -592,7 +596,8 @@ "msg": { "success": "Lahat ng mod ay na-uninstall na.", "errors": { - "no-mods": "Walang mod na naka-install sa bersyong ito 😑" + "no-mods": "Walang mod na naka-install sa bersyong ito 😑", + "no-wineprefix": "Hindi mahanap ang WINEPREFIX path ng BSManager. Pakilunsad muna ang Beat Saber sa BSManager." } } }, diff --git a/assets/jsons/translations/uk.json b/assets/jsons/translations/uk.json index b9b3a383..1c69a75e 100644 --- a/assets/jsons/translations/uk.json +++ b/assets/jsons/translations/uk.json @@ -131,6 +131,10 @@ "loading-mods": "Завантаження модів...", "no-internet": "Немає інтернету", "mods-not-available": "Для цієї версії Beat Saber поки що немає модів", + "status": { + "no-wineprefix": "Не вдалося знайти шлях до WINEPREFIX BSManager. Будь ласка, спочатку запустіть Beat Saber у BSManager.", + "unknown": "Сталася невідома помилка ¯\\_(ツ)_/¯" + }, "buttons": { "more-infos": "Більше інформації", "install-or-update": "Встановити або оновити", @@ -592,7 +596,8 @@ "msg": { "success": "Усі моди були видалені.", "errors": { - "no-mods": "У цій версії не встановлено жодних модів 😑" + "no-mods": "У цій версії не встановлено жодних модів 😑", + "no-wineprefix": "Не вдалося знайти шлях до WINEPREFIX BSManager. Будь ласка, спочатку запустіть Beat Saber у BSManager." } } }, From 7b0bcf50414afb76bb33a7b53d2fb295217b54f5 Mon Sep 17 00:00:00 2001 From: Zagrios <40181755+Zagrios@users.noreply.github.com> Date: Mon, 10 Feb 2025 23:00:46 +0100 Subject: [PATCH 21/21] Rename getAcceptDisclaimerKey to ensureDisclaimerAccepted for clarity --- .../version-viewer/slides/mods/mods-slide.component.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx b/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx index 7068633a..e2c423bd 100644 --- a/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx +++ b/src/renderer/components/version-viewer/slides/mods/mods-slide.component.tsx @@ -187,7 +187,7 @@ export const ModsSlide = forwardRef(({ version, isActive, o setModsSelected(() => []); } - const getAcceptDisclaimerKey = async () => { + const ensureDisclaimerAccepted = async (): Promise => { if (configService.get(ACCEPTED_DISCLAIMER_KEY)) { return true; } @@ -226,7 +226,7 @@ export const ModsSlide = forwardRef(({ version, isActive, o return noop(); } - getAcceptDisclaimerKey().then(async canLoad => { + ensureDisclaimerAccepted().then(async canLoad => { if (!canLoad) { return onDisclamerDecline?.(); }