feat(i18n): add Italian, Russian, and Polish

Add key-complete catalogs and wire them through settings, Toolbox,
and notifications. Follow PS5 system languages 5, 8, and 16 when
toolbox.language is system. Existing locale ids stay unchanged.
This commit is contained in:
Hexwell committed 2026-08-17 13:18:07 +08:00
1 parent cd0c0450f0
commit c19d560d5e
29 files changed
+1166 -21

No files matched your search

+1 -1
View File
@@ -215,7 +215,7 @@ annotated default based on [`config.ini.example`](config.ini.example).
| Key | Default | Values |
| --- | --- | --- |
| `meta.schema_version` | `1` | `1` |
| `toolbox.language` | `system` | `system`, `zh-Hans`, `zh-Hant`, `en`, `ja`, `ko`, `fr`, `de`, `es`, `pt-BR`, `ar` |
| `toolbox.language` | `system` | `system`, `zh-Hans`, `zh-Hant`, `en`, `ja`, `ko`, `fr`, `de`, `it`, `es`, `pt-BR`, `pl`, `ru`, `ar` |
| `startup.open_after_load` | `none` | `none`, `home_menu` |
| `home_screen.show_title_ids` | `false` | `true`, `false` |
| `game_menu.show_onionhen_options` | `true` | `true`, `false` |
+1 -1
View File
@@ -210,7 +210,7 @@ OnionHEN 通过以下两个运行时视图创建并共享同一套配置 schema
| 配置项 | 默认值 | 可用值 |
| --- | --- | --- |
| `meta.schema_version` | `1` | `1` |
| `toolbox.language` | `system` | `system`, `zh-Hans`, `zh-Hant`, `en`, `ja`, `ko`, `fr`, `de`, `es`, `pt-BR`, `ar` |
| `toolbox.language` | `system` | `system`, `zh-Hans`, `zh-Hant`, `en`, `ja`, `ko`, `fr`, `de`, `it`, `es`, `pt-BR`, `pl`, `ru`, `ar` |
| `startup.open_after_load` | `none` | `none`, `home_menu` |
| `home_screen.show_title_ids` | `false` | `true`, `false` |
| `game_menu.show_onionhen_options` | `true` | `true`, `false` |
+1 -1
View File
@@ -11,7 +11,7 @@ schema_version=1
[toolbox]
# language controls the Toolbox UI and notification language.
# Available values: system, zh-Hans, zh-Hant, en, ja, ko, fr, de, es, pt-BR, ar
# Available values: system, zh-Hans, zh-Hant, en, ja, ko, fr, de, it, es, pt-BR, pl, ru, ar
# system follows the PS5 system language when it can be detected.
language=system
+9 -7
View File
@@ -5,8 +5,10 @@ ELF. The console does not load locale files at runtime.
Current locales: `zh-CN.json` (简体中文), `zh-TW.json` (繁體中文),
`en-US.json` (English), `ja-JP.json` (日本語), `ko-KR.json` (한국어),
`fr-FR.json` (Français), `de-DE.json` (Deutsch), `es-ES.json` (Español),
`pt-BR.json` (Português do Brasil), and `ar-SA.json` (العربية, trial).
`fr-FR.json` (Français), `de-DE.json` (Deutsch), `it-IT.json` (Italiano),
`es-ES.json` (Español), `pt-BR.json` (Português do Brasil),
`pl-PL.json` (Polski), `ru-RU.json` (Русский), and `ar-SA.json`
(العربية, trial).
The generator scans every `*.json` in this directory. Each locale is
selectable in Toolbox and via `toolbox.language`. The Settings XML is
still LTR, so Arabic glyphs render but the page layout is not mirrored.
@@ -96,9 +98,9 @@ the runtime mapping:
`meta.id` in `notify_i18n.c` / `toolbox_i18n.cpp`.
5. If the PS5 system language should pick it when Toolbox language is
`system`, add that id in `onion_notify_resolve_language`
(`0` → `ja`, `2`/`22` → `fr`, `3`/`20` → `es`, `4` → `de`,
`7`/`17` → `pt-BR`, `9` → `ko`, `10` → `zh-Hant`, `11` → `zh-Hans`,
`21` → `ar`; everything else is `en`).
(`0` → `ja`, `2`/`22` → `fr`, `3`/`20` → `es`, `4` → `de`, `5` → `it`,
`7`/`17` → `pt-BR`, `8` → `ru`, `9` → `ko`, `10` → `zh-Hant`,
`11` → `zh-Hans`, `16` → `pl`, `21` → `ar`; everything else is `en`).
## Intentional exclusions
@@ -122,8 +124,8 @@ Checked against call sites (not just the JSON files):
- Toolbox menus, game-options cheat entry, PKG `GetString` hooks, and
About donor/WeChat labels go through `toolbox_i18n::tr()`.
- Daemon / util / shellui / bootstrapper toasts go through `notify.*`
keys. Host tests cover zh-Hans, zh-Hant, en, ja, ko, fr, de, es,
pt-BR, and ar lookup.
keys. Host tests cover zh-Hans, zh-Hant, en, ja, ko, fr, de, it, es,
pt-BR, pl, ru, and ar lookup.
- Four toolbox keys are unused leftovers from an older menu grouping:
`group.lang`, `group.lang.sub`, `group.shortcuts`, `group.shortcuts.sub`.
They are translated but not shown.
+3
View File
@@ -138,7 +138,10 @@
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.es": "Español",
"lang.it": "Italiano",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "الإصدار: %s",
"about.donate": "ادعم هذا المشروع",
+3
View File
@@ -138,7 +138,10 @@
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.es": "Español",
"lang.it": "Italiano",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "Build: %s",
"about.donate": "Dieses Projekt unterstützen",
+3
View File
@@ -138,7 +138,10 @@
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.es": "Español",
"lang.it": "Italiano",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "Build: %s",
"about.donate": "Support this project",
+3
View File
@@ -138,7 +138,10 @@
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.es": "Español",
"lang.it": "Italiano",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "Compilación: %s",
"about.donate": "Apoyar este proyecto",
+3
View File
@@ -138,7 +138,10 @@
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.es": "Español",
"lang.it": "Italiano",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "Compilation : %s",
"about.donate": "Soutenir ce projet",
+3
View File
@@ -31,8 +31,11 @@ FILENAME_IDS = {
"ko-KR.json": ("ko", False),
"fr-FR.json": ("fr", False),
"de-DE.json": ("de", False),
"it-IT.json": ("it", False),
"es-ES.json": ("es", False),
"pt-BR.json": ("pt-BR", False),
"pl-PL.json": ("pl", False),
"ru-RU.json": ("ru", False),
"ar-SA.json": ("ar", False),
}
+316
View File
@@ -0,0 +1,316 @@
{
"meta": {
"id": "it",
"bcp47": "it-IT",
"fallback": false
},
"toolbox": {
"root.title": "★Cassetta degli attrezzi OnionHEN",
"group.pkg": "Installazione e gestione dei contenuti",
"group.pkg.sub": "Installare PKG e gestire i contenuti aggiuntivi",
"group.payloads": "Payload e kernel",
"group.payloads.sub": "ELF di payload e Kstuff",
"group.game": "Strumenti di gioco",
"group.game.sub": "Trucchi del gioco in esecuzione",
"group.display": "Monitoraggio e visualizzazione",
"group.display.sub": "Overlay in partita, indicatori sulla schermata iniziale e voce nelle opzioni di gioco",
"group.connection": "Account, connessione e Remote Play",
"group.connection.sub": "Associazione Remote Play e dettagli di connessione",
"group.system": "Sistema e hardware",
"group.system.sub": "Ventola, modalità riposo, archiviazione e attivazione licenza",
"group.shortcuts": "Scorciatoie del controller",
"group.shortcuts.sub": "Le scorciatoie restano attive dopo il riavvio finché la cassetta è attiva; le combinazioni funzionano anche fuori dal gioco",
"group.preferences": "Preferenze",
"group.preferences.sub": "Avvio, lingua della cassetta e scorciatoie del controller",
"group.debug": "Debug avanzato",
"group.debug.sub": "Registri, controllo del jailbreak delle app e ambiente NP",
"group.about": "Informazioni",
"group.about.sub": "Riconoscimenti, donazioni e info sul progetto",
"group.lang": "Lingua dell’interfaccia",
"group.lang.sub": "Uscire e riaprire la cassetta dopo il cambio",
"pkg.installer": "Programma di installazione pacchetti",
"pkg.installer.sub": "Aprire l’installer di sistema per installare giochi o app PKG",
"pkg.add_content": "Gestione contenuti aggiuntivi",
"pkg.add_content.sub": "Gestire extra, patch e DLC dei giochi installati",
"pkg.msg.options": "Opzioni installer PKG",
"pkg.msg.installing": "OnionHEN sta installando il PKG selezionato",
"pkg.msg.yes": "Sì",
"pkg.msg.no": "No",
"pkg.msg.sort": "Ordinamento PKG OnionHEN",
"pkg.msg.sort_az": "Nome (A-Z)",
"pkg.msg.sort_za": "Nome (Z-A)",
"pkg.msg.updated": "Aggiornato",
"pkg.msg.wait": "Attendere...",
"pkg.msg.ok": "OK",
"pkg.msg.cancel": "Annulla",
"pkg.msg.select_all": "Seleziona tutto",
"payloads.link": "Payload",
"payloads.link.sub": "Sfogliare e avviare i file ELF nelle cartelle payloads",
"kstuff.group": "Kstuff",
"kstuff.group.sub": "Gestire il caricamento e la sostituzione della patch del kernel",
"kstuff.autoload": "Caricare Kstuff automaticamente all’avvio di OnionHEN",
"kstuff.autoload.sub": "Se attivo, la patch del kernel si carica a ogni avvio di OnionHEN",
"kstuff.delete": "Rimuovere il Kstuff esterno (/data/OnionHEN/kstuff.elf)",
"kstuff.delete.desc": "Dopo la rimozione, OnionHEN torna al Kstuff integrato",
"cheats.link": "Trucchi",
"cheats.link.sub": "Attivare o disattivare i trucchi del gioco in esecuzione",
"remote_play.link": "Remote Play",
"remote_play.link.sub": "Mostrare PIN e dati account per il Remote Play da telefono o PC",
"game_opts.toggle": "Opzioni di gioco OnionHEN",
"game_opts.toggle.sub": "Mostrare le voci OnionHEN (come i trucchi) nel menu delle opzioni di gioco",
"overlay.group": "Overlay di gioco",
"overlay.group.sub": "Barra a tutta larghezza + sfondo nero semitrasparente opzionale",
"overlay.enabled": "Barra di monitoraggio",
"overlay.enabled.desc": "Mostrare la barra di monitoraggio completa in partita",
"overlay.background": "Sfondo della barra di monitoraggio",
"overlay.background.desc": "Mostrare lo sfondo semitrasparente dietro la barra",
"overlay.pos": "Posizione della barra di monitoraggio",
"overlay.pos.sub": "Tutta la larghezza sul bordo dello schermo; valori al centro: CPU · GPU · RAM · IP",
"overlay.pos.top": "Bordo superiore",
"overlay.pos.bottom": "Bordo inferiore",
"overlay.gpu": "GPU",
"overlay.gpu.desc": "Mostrare temperatura GPU e uso della VRAM",
"overlay.cpu": "CPU",
"overlay.cpu.desc": "Mostrare temperatura CPU e uso medio",
"overlay.cpu_all": "Mostrare l’uso di tutti i core CPU",
"overlay.cpu_all.desc": "Mostrare i 8 core uno per uno (allarga la barra)",
"overlay.ram": "Memoria",
"overlay.ram.desc": "Mostrare l’uso della memoria di sistema",
"overlay.ip": "Indirizzo IP",
"overlay.ip.desc": "Mostrare l’IP LAN della console",
"disp_tids": "Mostrare il Title ID nella schermata iniziale",
"disp_tids.sub": "Mostrare il Title ID di ogni gioco nella schermata iniziale; solo a cassetta attiva",
"fan.group": "Controllo ventola",
"fan.group.sub": "Regolare la velocità della ventola in base a una soglia di temperatura",
"fan.enable": "Attivare la soglia manuale della ventola",
"fan.enable.sub": "Se disattivato, il sistema usa la politica ventola predefinita",
"fan.threshold": "Regolare la soglia della ventola",
"fan.threshold.sub": "Inserire i gradi Celsius; raggiunta questa temperatura la ventola accelera",
"rest.group": "Modalità riposo",
"rest.group.sub": "Ridurre blocchi e anomalie all’ingresso in modalità riposo",
"rest.delay": "Ritardare l’attivazione della cassetta (secondi)",
"rest.delay.sub": "Attendere qualche secondo in più dopo il risveglio dalla modalità riposo prima di applicare le patch",
"hdd.external": "HDD esterno",
"hdd.external.sub": "Aprire la pagina di sistema per formattare e gestire l’HDD esterno",
"license.bd": "Attivazione Blu-ray (licenza)",
"license.bd.sub": "Aprire la pagina di attivazione licenza dei dischi Blu-ray",
"startup.open_after_load": "Aprire automaticamente dopo il caricamento di OnionHEN",
"startup.open_after_load.sub": "Scegliere se OnionHEN resta sulla schermata attuale o torna alla schermata iniziale",
"startup.open_after_load.confirm": "Le modifiche si applicheranno al prossimo caricamento di OnionHEN.",
"startup.open_after_load.confirm_phrase": "OK,Annulla",
"startup.none": "Nessuno",
"startup.home_menu": "Schermata iniziale",
"sc.cheats": "Aprire il menu dei trucchi",
"sc.cheats.sub": "Aprire i trucchi da qualsiasi schermata, anche in partita, con una combinazione del controller",
"sc.toolbox": "Aprire la cassetta degli attrezzi OnionHEN",
"sc.toolbox.sub": "Aprire la cassetta da qualsiasi schermata, anche in partita, con una combinazione del controller",
"sc.off": "Disattivato (nessuna scorciatoia)",
"sc.r3_l3": "Tenere premuti R3 + L3",
"sc.l2_tri": "Tenere premuti L2 + △",
"sc.long_options": "Pressione prolungata di Options",
"sc.long_share": "Pressione prolungata di Share",
"sc.share": "Premere Share",
"sc.l2_r3": "Tenere premuti L2 + R3",
"log.level": "Livello dei registri",
"log.level.sub": "Quanto dettaglio registrare; i livelli più alti danno più diagnostica",
"log.off": "Disattivato",
"log.error": "Solo errori",
"log.warn": "Avvisi ed errori",
"log.info": "Informazioni (consigliato)",
"log.debug": "Debug",
"log.trace": "Traccia",
"app_jailbreak.enabled": "Attivare il jailbreak delle app",
"app_jailbreak.enabled.sub": "Ascoltare le richieste di jailbreak dalle app autorizzate",
"debug.jb": "Notifiche di jailbreak delle app",
"debug.jb.sub": "Mostrare una notifica dopo un jailbreak riuscito",
"debug.np_env": "Ambiente NP",
"debug.np_env.sub": "Modificare la stringa di ambiente PlayStation Network; la console si riavvia dopo il salvataggio",
"debug.np_env.confirm": "Il sistema si riavvierà per applicare questa impostazione.",
"debug.np_env.confirm_phrase": "OK,Annulla",
"lang.list": "Lingua della cassetta",
"lang.list.sub": "Uscire e riaprire la cassetta dopo il cambio perché l’interfaccia si aggiorni per intero",
"lang.system": "Lingua del sistema",
"lang.zh": "简体中文",
"lang.zh_hant": "繁體中文",
"lang.en": "English",
"lang.ja": "日本語",
"lang.ko": "한국어",
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.it": "Italiano",
"lang.es": "Español",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "Build: %s",
"about.donate": "Sostenere questo progetto",
"about.donate.sub": "Il progetto vi piace? Potete sostenerlo su Ko-fi",
"about.donate.methods": "★ Modi per donare",
"about.wechat": "- WeChat | polichan01",
"about.donors": "★ Donatori ★",
"about.credits": "Riconoscimenti OnionHEN",
"about.credits.sub": "Linea, tester e ringraziamenti",
"about.lineage": "★ Linea ★",
"about.lineage.etahen": "- etaHEN (LightningMods) — base di codice di OnionHEN",
"about.lineage.goldhen": "- GoldHEN (SiSTR0) — predecessore spirituale dell’HEN tutto-in-uno su PS4",
"about.testers": "★ Grazie ai tester ★",
"about.testers.intro": "Grazie a ogni tester che ha aiutato questo progetto a crescere. La vostra partecipazione e il vostro sostegno lo fanno andare avanti.",
"about.more": "Per altre info e aggiornamenti, seguite i canali di pubblicazione del progetto",
"about.projects": "Progetti inclusi in OnionHEN",
"about.projects.sub": "Componenti realmente usati o integrati in questo albero",
"about.projects.info": "★ Dipendenze e componenti integrati in questo albero",
"payload.title": "Payload",
"payload.auto_title": "★ Avvio automatico dei payload",
"payload.auto.link": "★ Avvio automatico dei payload",
"payload.auto.sub": "Scegliere i file .elf in payloads/ da avviare con OnionHEN",
"payload.start_stop_fmt": "Avvia/ferma %s (percorso: %s) (%s)",
"payload.autostart_fmt": "Attiva/disattiva l’avvio automatico di %s (%s)",
"cheats.none": "Trucchi OnionHEN - nessun gioco aperto",
"cheats.none.hint": "Avviare prima un gioco, poi aprire il menu dei trucchi",
"cheats.missing": "Nessun trucco per questo gioco/versione (mettere i file in /data/OnionHEN/cheats/)",
"cheats.game_menu": "★ Trucchi OnionHEN",
"cheats.title_fmt": "Trucchi OnionHEN - %s - %s",
"cheats.ver_unknown": "Impossibile rilevare la versione della patch",
"cheats.not_running_fmt": "%s non è in esecuzione; aprire il gioco per attivare i trucchi",
"cheats.authors_fmt": "Autori dei trucchi: %s",
"cheats.on_off": "On/Off",
"cheats.enable_fmt": "Per %s, attiva/disattiva %s",
"rp.title": "Dettagli di connessione Remote Play",
"rp.need_reboot": "L’account è stato attivato da OnionHEN; riavviare la console prima di usare Remote Play.",
"rp.account_id_fmt": "ID account: %s",
"rp.account_id_decoded_fmt": "ID account decodificato: %s",
"rp.pin_fmt": "Codice PIN: %04u %04u ",
"rp.init_error": "Inizializzazione di Remote Play non riuscita; uscire da questa pagina e riprovare",
"rp.account_error": "Impossibile leggere l’ID account dell’utente attuale",
"rp.pin_error": "Impossibile ottenere un PIN Remote Play",
"rp.notify.countdown": "Associazione Remote Play: %u secondi rimanenti",
"rp.notify.paired": "Remote Play associato, pronto per la connessione",
"rp.notify.timeout": "Tempo di associazione Remote Play scaduto",
"rp.save_usb": "Salvare i dati Remote Play su USB",
"rp.save_usb.sub": "Scrivere PIN e dati account attuali su una chiavetta USB inserita, per vederli sul PC",
"plapps.title": "Homebrew payload OnionHEN - Applicazioni",
"plapps.version_fmt": "%s | versione: %s"
},
"notifications": {
"notify.boot.starting": "OnionHEN è in avvio...",
"notify.boot.welcome": "Benvenuti in OnionHEN",
"notify.boot.goto_toolbox": "Vai alla cassetta degli attrezzi OnionHEN",
"notify.boot.made_by": " · di ",
"notify.boot.cleaned_up": "OnionHEN è stato ripulito.",
"notify.kstuff.no_elf_header": "Kstuff «%s» non ha un’intestazione ELF valida.",
"notify.kstuff.loading": "Caricamento di Kstuff da: %s",
"notify.net.socket_create": "Creazione del socket non riuscita: %s",
"notify.net.socket_options": "Impostazione delle opzioni del socket non riuscita: %s",
"notify.net.socket_bind": "Bind del socket non riuscito: %s",
"notify.net.socket_listen": "Ascolto sul socket non riuscito: %s",
"notify.net.socket_accept": "Accettazione della connessione non riuscita: %s",
"notify.elfldr.need_9021": "Avviare prima elfldr sulla porta 9021, poi rieseguire OnionHEN.",
"notify.elfldr.launch_util": "avvio di util tramite elfldr non riuscito",
"notify.kstuff.load_failed": "Caricamento di Kstuff non riuscito, si continua senza",
"notify.kstuff.load_elfldr_failed": "Caricamento di Kstuff tramite elfldr non riuscito, si continua",
"notify.elfldr.launch_daemon": "avvio del daemon tramite elfldr non riuscito",
"notify.priv.unable": "Impossibile elevare i privilegi",
"notify.mount.system_ex": "montaggio di /system_ex non riuscito\nse vedi questo messaggio, riavvia la console",
"notify.mount.system": "montaggio di /system non riuscito\nse vedi questo messaggio, riavvia la console",
"notify.crash.resolved": "L’errore fatale è stato risolto\n\nnon c’è nulla di cui preoccuparsi",
"notify.crash.main": "OnionHEN si è interrotto…\n\nInviare /data/OnionHEN/OnionHEN_crash.log al Discord PKG-Zone: https://discord.gg/BduZHudWGj",
"notify.stack.shutdown": "Stack OnionHEN arrestato (util + ShellUI + daemon; Kstuff resta attivo)",
"notify.fan.open_failed": "Impossibile aprire le impostazioni della ventola.",
"notify.fan.set_failed": "Impossibile impostare la velocità della ventola.",
"notify.toolbox.no_shellui_pid": "Impossibile ottenere il PID di ShellUI",
"notify.toolbox.inject_failed": "Iniezione della cassetta non riuscita",
"notify.toolbox.load_failed": "Caricamento della cassetta OnionHEN non riuscito",
"notify.toolbox.load_timeout": "Caricamento della cassetta OnionHEN non riuscito (tempo scaduto, ShellUI resta in esecuzione)",
"notify.toolbox.shellui_restarted": "SceShellUI si è riavviato durante il caricamento della cassetta OnionHEN",
"notify.util.restarting": "OnionHEN Utility non è in esecuzione, riavvio...",
"notify.util.restarted": "Servizi OnionHEN Utility riavviati correttamente",
"notify.util.restart_failed": "Riavvio dei servizi OnionHEN Utility non riuscito — elfldr privato :9020 non disponibile",
"notify.loader.recovering": "Il loader di runtime OnionHEN :9020 non è disponibile; recupero tramite :9021...",
"notify.loader.recovered": "Loader di runtime OnionHEN ripristinato su :9020",
"notify.loader.recover_failed": "Ripristino del loader :9020 non riuscito; serve un elfldr esterno :9021",
"notify.payload.autostart_skipped": "Avvio automatico dei payload utente saltato: elfldr privato :9020 non disponibile",
"notify.rest.reactivating": "Uscita dalla modalità riposo — riattivazione della cassetta OnionHEN...",
"notify.jailbreak.granted": "All’app (PID %i) è stato concesso un jailbreak",
"notify.settings.created": "Configurazione OnionHEN creata: /data/OnionHEN/config.ini",
"notify.settings.read_failed": "Lettura del file delle impostazioni non riuscita",
"notify.fs.size_failed": "calcolo della dimensione totale di %s non riuscito",
"notify.fs.copy_file": "copia del file non riuscita: %s",
"notify.fs.copy_recursive": "copia ricorsiva non riuscita: %s",
"notify.ipc.json_parse": "Errore nell’analisi JSON",
"notify.ipc.invalid_path": "Lunghezza percorso non valida: %d",
"notify.fs.unmount": "Smontaggio non riuscito | errore: %s",
"notify.fs.remount": "errore di rimontaggio: %s\nPercorso: %s",
"notify.ipc.unused": "Questo comando non è più usato",
"notify.fan.invalid_speed": "Velocità ventola non valida: %d. Deve essere tra 0 e 100.",
"notify.fan.disabled": "La regolazione della velocità della ventola è disattivata.",
"notify.fan.adjusted": "Soglia della ventola impostata a %i °C.",
"notify.fan.adjust_failed": "Regolazione della velocità della ventola non riuscita.",
"notify.settings.reloaded": "Impostazioni ricaricate",
"notify.ipc.unknown_command": "Comando sconosciuto 0x%X",
"notify.app.not_found": "app %s non trovata",
"notify.net.ip_changed": "Indirizzo IP cambiato in %s",
"notify.util.crashed": "Il demone delle utility OnionHEN si è interrotto…\n\nAlcune funzioni non saranno disponibili fino al riavvio",
"notify.util.crash_recovering": "Il demone delle utility OnionHEN si è interrotto…\n\nTentativo di recupero...",
"notify.game.tid_failed": "Impossibile ottenere il Title ID",
"notify.game.version_failed": "Impossibile ottenere la versione del gioco",
"notify.game.sfo_failed": "Lettura del file SFO non riuscita",
"notify.payload.load_failed": "Caricamento del payload non riuscito\nPercorso: %s\nIdentificatore: %s",
"notify.payload.load_failed_path": "Caricamento del payload non riuscito.\nPercorso: %s",
"notify.payload.launched": "Payload avviato\nPercorso: %s\nIdentificatore: %s",
"notify.cheats.none": "Nessun trucco per %s versione %s.",
"notify.payload.elf_only": "Sono supportati solo payload .elf:\n%s",
"notify.payload.invalid_elf": "File ELF non valido: %s",
"notify.payload.invalid_name": "Nome ELF non valido: %s",
"notify.payload.loading": "Caricamento del payload %s...",
"notify.payload.launch_failed": "Avvio del payload %s non riuscito (%s)",
"notify.app.launch_failed": "Avvio dell’app non riuscito, codice di errore: %d",
"notify.app.launching": "Avvio dell’app %s e controllo delle patch...",
"notify.app.launch_returned": "LaunchApp ha restituito: %d",
"notify.cheats.game_not_running": "Il gioco non è in esecuzione; avvialo prima di attivare i trucchi",
"notify.cheats.no_pid": "[ERRORE] Impossibile attivare %s\nPID del gioco non trovato",
"notify.cheats.toggle_banner": "★ %s [%s] ★",
"notify.common.on": "ON",
"notify.common.off": "OFF",
"notify.cheats.activate_failed": "[ERRORE] Impossibile attivare %s",
"notify.kstuff.next_boot_on": "Kstuff verrà caricato al prossimo avvio",
"notify.kstuff.next_boot_off": "Kstuff NON verrà caricato al prossimo avvio",
"notify.kstuff.deleted": "Il Kstuff esterno è stato eliminato",
"notify.rp.usb_missing": "Salvataggio dei dati Remote Play non riuscito, USB non trovata",
"notify.rp.save_open_failed": "Impossibile aprire il file dei dati Remote Play",
"notify.rp.saved": "Dati Remote Play salvati in /mnt%s",
"notify.overlay.disable_cpu_first": "Per disattivare il monitoraggio CPU, disattivare prima «uso di tutti i core CPU»",
"notify.overlay.enable_cpu_first": "Per cambiare la modalità di monitoraggio CPU, attivare prima il monitoraggio CPU",
"notify.process.killed": "%s terminato",
"notify.payload.autostart_file": "Creazione del file di avvio automatico non riuscita",
"notify.fan.not_enabled": "La soglia manuale della temperatura della ventola non è attiva",
"notify.shortcut.toolbox_cheats": "Le scorciatoie della cassetta e dei trucchi non possono coincidere; la selezione attuale NON verrà salvata",
"notify.shortcut.toolbox_cheats_long": "Le scorciatoie lunghe della cassetta e dei trucchi non possono coincidere; la selezione attuale NON verrà salvata",
"notify.shortcut.cheats_toolbox": "Le scorciatoie dei trucchi e della cassetta non possono coincidere; la selezione attuale NON verrà salvata",
"notify.shortcut.cheats_toolbox_long": "Le scorciatoie lunghe dei trucchi e della cassetta non possono coincidere; la selezione attuale NON verrà salvata",
"notify.lang.saved": "Lingua salvata. Uscire e riaprire la cassetta per applicarla.",
"notify.hook.load_assembly": "Caricamento dell’assembly non riuscito",
"notify.hook.target": "Destinazione dell’hook non trovata",
"notify.hook.install": "Installazione dell’hook non riuscita",
"notify.hook.lnc_image": "Impossibile ottenere l’immagine LncUtilWrapper",
"notify.hook.layer_manager": "Impossibile ottenere la classe LayerManager",
"notify.hook.find_scene": "Impossibile ottenere il metodo FindContainerSceneByPath",
"notify.hook.find_scene_exc": "Eccezione durante la chiamata a FindContainerSceneByPath",
"notify.hook.game_scene": "Impossibile ottenere il ContainerScene del gioco",
"notify.hook.regmgr": "sceRegMgrGetInt non trovato",
"notify.hook.kill_app": "Detour di KillAppWithReason non riuscito",
"notify.hook.rnps_find": "ioctl di decifratura RNPS non trovato",
"notify.hook.rnps_detour": "Detour dell’ioctl di decifratura RNPS non riuscito",
"notify.hook.boot": "detour di BootHelper.Boot non riuscito",
"notify.hook.capture": "Detour di CaptureScreen non riuscito",
"notify.hook.master": "Impossibile ottenere l’indirizzo master",
"notify.app.reload_scenes": "Ricaricamento delle scene %s",
"notify.pkg.installing": "Installazione del pacchetto da:\n%s",
"notify.pkg.finished": "Installazione terminata, codice: %d",
"notify.rp.reg_get": "SCE_REGMGR: impossibile leggere REMOTEPLAY_rp_enable (0x%x)",
"notify.rp.reg_set": "SCE_REGMGR: impossibile impostare REMOTEPLAY_rp_enable (0x%x)",
"notify.rp.reg_verify": "SCE_REGMGR: impossibile verificare REMOTEPLAY_rp_enable (0x%x)",
"notify.rp.confirm": "sceRemoteplayConfirmDeviceRegist 0x%X stato associazione: %d errore associazione: %d",
"notify.brand": "OnionHEN"
}
}
+3
View File
@@ -138,7 +138,10 @@
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.es": "Español",
"lang.it": "Italiano",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "ビルド:%s",
"about.donate": "このプロジェクトを支援する",
+3
View File
@@ -138,7 +138,10 @@
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.es": "Español",
"lang.it": "Italiano",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "빌드: %s",
"about.donate": "이 프로젝트 후원하기",
+316
View File
@@ -0,0 +1,316 @@
{
"meta": {
"id": "pl",
"bcp47": "pl-PL",
"fallback": false
},
"toolbox": {
"root.title": "★Narzędzia OnionHEN",
"group.pkg": "Instalacja i zarządzanie zawartością",
"group.pkg.sub": "Instalacja PKG i zarządzanie zawartością dodatkową",
"group.payloads": "Payloady i jądro",
"group.payloads.sub": "Pliki ELF payloadów i Kstuff",
"group.game": "Narzędzia gry",
"group.game.sub": "Cheaty bieżącej gry",
"group.display": "Monitorowanie i wyświetlanie",
"group.display.sub": "Nakładka w grze, wskaźniki na ekranie głównym i pozycja w opcjach gry",
"group.connection": "Konto, połączenie i Remote Play",
"group.connection.sub": "Parowanie Remote Play i dane połączenia",
"group.system": "System i sprzęt",
"group.system.sub": "Wentylator, tryb spoczynku, pamięć i aktywacja licencji",
"group.shortcuts": "Skróty kontrolera",
"group.shortcuts.sub": "Skróty zostają po restarcie, dopóki narzędzia są włączone; kombinacje działają także poza grą",
"group.preferences": "Preferencje",
"group.preferences.sub": "Zachowanie przy starcie, język narzędzi i skróty kontrolera",
"group.debug": "Zaawansowana diagnostyka",
"group.debug.sub": "Dzienniki, sterowanie jailbreakiem aplikacji i środowisko NP",
"group.about": "Informacje",
"group.about.sub": "Podziękowania, wsparcie i informacje o projekcie",
"group.lang": "Język interfejsu",
"group.lang.sub": "Po zmianie zamknij narzędzia i otwórz je ponownie",
"pkg.installer": "Instalator pakietów",
"pkg.installer.sub": "Otwórz instalator systemowy, aby zainstalować gry lub aplikacje PKG",
"pkg.add_content": "Menedżer zawartości dodatkowej",
"pkg.add_content.sub": "Zarządzaj dodatkami, łatami i DLC zainstalowanych gier",
"pkg.msg.options": "Opcje instalatora PKG",
"pkg.msg.installing": "OnionHEN instaluje wybrany PKG",
"pkg.msg.yes": "Tak",
"pkg.msg.no": "Nie",
"pkg.msg.sort": "Sortowanie PKG OnionHEN",
"pkg.msg.sort_az": "Nazwa (A-Z)",
"pkg.msg.sort_za": "Nazwa (Z-A)",
"pkg.msg.updated": "Zaktualizowano",
"pkg.msg.wait": "Czekaj...",
"pkg.msg.ok": "OK",
"pkg.msg.cancel": "Anuluj",
"pkg.msg.select_all": "Zaznacz wszystko",
"payloads.link": "Payload",
"payloads.link.sub": "Przeglądaj i uruchamiaj pliki ELF z folderów payloads",
"kstuff.group": "Kstuff",
"kstuff.group.sub": "Ładowanie i podmiana łatki jądra",
"kstuff.autoload": "Automatycznie ładuj Kstuff przy starcie OnionHEN",
"kstuff.autoload.sub": "Po włączeniu łatka jądra ładuje się przy każdym starcie OnionHEN",
"kstuff.delete": "Usuń zewnętrzny Kstuff (/data/OnionHEN/kstuff.elf)",
"kstuff.delete.desc": "Po usunięciu OnionHEN wraca do wbudowanego Kstuff",
"cheats.link": "Cheaty",
"cheats.link.sub": "Włączaj i wyłączaj cheaty bieżącej gry",
"remote_play.link": "Remote Play",
"remote_play.link.sub": "PIN i dane konta do Remote Play z telefonu lub komputera",
"game_opts.toggle": "Opcje gry OnionHEN",
"game_opts.toggle.sub": "Pokazuj pozycje OnionHEN (np. cheaty) w menu opcji gry",
"overlay.group": "Nakładka gry",
"overlay.group.sub": "Pasek na całą szerokość + opcjonalne półprzezroczyste czarne tło",
"overlay.enabled": "Pasek monitorowania",
"overlay.enabled.desc": "Pokazuj pełny pasek monitorowania w grze",
"overlay.background": "Tło paska monitorowania",
"overlay.background.desc": "Pokazuj półprzezroczyste tło za paskiem",
"overlay.pos": "Położenie paska monitorowania",
"overlay.pos.sub": "Pełna szerokość przy krawędzi ekranu; wartości na środku: CPU · GPU · RAM · IP",
"overlay.pos.top": "Górna krawędź",
"overlay.pos.bottom": "Dolna krawędź",
"overlay.gpu": "GPU",
"overlay.gpu.desc": "Temperatura GPU i użycie VRAM",
"overlay.cpu": "CPU",
"overlay.cpu.desc": "Temperatura CPU i średnie użycie",
"overlay.cpu_all": "Użycie wszystkich rdzeni CPU",
"overlay.cpu_all.desc": "Pokazuj wszystkie 8 rdzeni osobno (pasek się poszerza)",
"overlay.ram": "Pamięć",
"overlay.ram.desc": "Użycie pamięci systemowej",
"overlay.ip": "Adres IP",
"overlay.ip.desc": "IP LAN konsoli",
"disp_tids": "Pokazuj Title ID na ekranie głównym",
"disp_tids.sub": "Title ID każdej gry na ekranie głównym; tylko gdy narzędzia są włączone",
"fan.group": "Sterowanie wentylatorem",
"fan.group.sub": "Prędkość wentylatora według progu temperatury",
"fan.enable": "Włącz ręczny próg wentylatora",
"fan.enable.sub": "Gdy wyłączone, system używa domyślnej polityki wentylatora",
"fan.threshold": "Próg wentylatora",
"fan.threshold.sub": "Podaj stopnie Celsjusza; po osiągnięciu tej temperatury wentylator przyspiesza",
"rest.group": "Tryb spoczynku",
"rest.group.sub": "Mniej zacięć i usterek przy wchodzeniu w tryb spoczynku",
"rest.delay": "Opóźnij aktywację narzędzi (sekundy)",
"rest.delay.sub": "Poczekaj kilka sekund po wybudzeniu z trybu spoczynku, zanim zostaną nałożone łatki",
"hdd.external": "Zewnętrzny HDD",
"hdd.external.sub": "Otwórz stronę systemową formatowania i zarządzania dyskiem zewnętrznym",
"license.bd": "Aktywacja Blu-ray (licencja)",
"license.bd.sub": "Otwórz stronę aktywacji licencji płyt Blu-ray",
"startup.open_after_load": "Otwórz automatycznie po załadowaniu OnionHEN",
"startup.open_after_load.sub": "Zostać na bieżącym ekranie czy wrócić do ekranu głównego",
"startup.open_after_load.confirm": "Zmiany zadziałają przy następnym ładowaniu OnionHEN.",
"startup.open_after_load.confirm_phrase": "OK,Anuluj",
"startup.none": "Brak",
"startup.home_menu": "Ekran główny",
"sc.cheats": "Otwórz menu cheatów",
"sc.cheats.sub": "Otwieraj cheaty z dowolnego ekranu, także w grze, kombinacją przycisków",
"sc.toolbox": "Otwórz narzędzia OnionHEN",
"sc.toolbox.sub": "Otwieraj narzędzia z dowolnego ekranu, także w grze, kombinacją przycisków",
"sc.off": "Wyłączone (bez skrótu)",
"sc.r3_l3": "Przytrzymaj R3 + L3",
"sc.l2_tri": "Przytrzymaj L2 + △",
"sc.long_options": "Długie naciśnięcie Options",
"sc.long_share": "Długie naciśnięcie Share",
"sc.share": "Naciśnij Share",
"sc.l2_r3": "Przytrzymaj L2 + R3",
"log.level": "Poziom dziennika",
"log.level.sub": "Szczegółowość dzienników OnionHEN; wyższy poziom to więcej diagnostyki",
"log.off": "Wyłączone",
"log.error": "Tylko błędy",
"log.warn": "Ostrzeżenia i błędy",
"log.info": "Informacje (zalecane)",
"log.debug": "Debug",
"log.trace": "Śledzenie",
"app_jailbreak.enabled": "Włącz jailbreak aplikacji",
"app_jailbreak.enabled.sub": "Nasłuchuj żądań jailbreaku od dozwolonych aplikacji",
"debug.jb": "Powiadomienia o jailbreaku aplikacji",
"debug.jb.sub": "Pokaż powiadomienie po udanym jailbreaku aplikacji",
"debug.np_env": "Środowisko NP",
"debug.np_env.sub": "Zmień ciąg środowiska PlayStation Network; po zapisaniu konsola się uruchomi ponownie",
"debug.np_env.confirm": "System uruchomi się ponownie, aby zastosować to ustawienie.",
"debug.np_env.confirm_phrase": "OK,Anuluj",
"lang.list": "Język narzędzi",
"lang.list.sub": "Po zmianie zamknij narzędzia i otwórz je ponownie, aby interfejs odświeżył się w całości",
"lang.system": "Język systemu",
"lang.zh": "简体中文",
"lang.zh_hant": "繁體中文",
"lang.en": "English",
"lang.ja": "日本語",
"lang.ko": "한국어",
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.it": "Italiano",
"lang.es": "Español",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "Kompilacja: %s",
"about.donate": "Wesprzyj ten projekt",
"about.donate.sub": "Podoba Ci się projekt? Możesz go wesprzeć na Ko-fi",
"about.donate.methods": "★ Sposoby wsparcia",
"about.wechat": "- WeChat | polichan01",
"about.donors": "★ Darczyńcy ★",
"about.credits": "Podziękowania OnionHEN",
"about.credits.sub": "Rodowód, testerzy i napisy",
"about.lineage": "★ Rodowód ★",
"about.lineage.etahen": "- etaHEN (LightningMods) — baza kodu OnionHEN",
"about.lineage.goldhen": "- GoldHEN (SiSTR0) — duchowy poprzednik all-in-one HEN na PS4",
"about.testers": "★ Dzięki testerom ★",
"about.testers.intro": "Dziękujemy każdemu testerowi, który pomógł temu projektowi urosnąć. Wasz udział i wsparcie pchają go dalej.",
"about.more": "Więcej informacji i aktualizacji znajdziesz w kanałach publikacji projektu",
"about.projects": "Projekty zawarte w OnionHEN",
"about.projects.sub": "Komponenty faktycznie używane lub wbudowane w tym drzewie",
"about.projects.info": "★ Zależności i wbudowane komponenty tego drzewa",
"payload.title": "Payload",
"payload.auto_title": "★ Autostart payloadów",
"payload.auto.link": "★ Autostart payloadów",
"payload.auto.sub": "Wybierz pliki .elf z payloads/, które startują z OnionHEN",
"payload.start_stop_fmt": "Uruchom/zatrzymaj %s (ścieżka: %s) (%s)",
"payload.autostart_fmt": "Włącz/wyłącz autostart %s (%s)",
"cheats.none": "Cheaty OnionHEN - brak otwartej gry",
"cheats.none.hint": "Najpierw uruchom grę, potem otwórz menu cheatów",
"cheats.missing": "Brak cheatów dla tej gry/wersji (umieść pliki w /data/OnionHEN/cheats/)",
"cheats.game_menu": "★ Cheaty OnionHEN",
"cheats.title_fmt": "Cheaty OnionHEN - %s - %s",
"cheats.ver_unknown": "Nie udało się wykryć wersji łatki",
"cheats.not_running_fmt": "%s nie jest uruchomiona; otwórz grę, aby włączyć cheaty",
"cheats.authors_fmt": "Autorzy cheatów: %s",
"cheats.on_off": "Wł./Wył.",
"cheats.enable_fmt": "Dla %s: włącz/wyłącz %s",
"rp.title": "Dane połączenia Remote Play",
"rp.need_reboot": "Konto zostało aktywowane przez OnionHEN; uruchom konsolę ponownie przed Remote Play.",
"rp.account_id_fmt": "ID konta: %s",
"rp.account_id_decoded_fmt": "Zdekodowane ID konta: %s",
"rp.pin_fmt": "Kod PIN: %04u %04u ",
"rp.init_error": "Nie udało się zainicjować Remote Play; opuść tę stronę i spróbuj ponownie",
"rp.account_error": "Nie udało się odczytać ID konta bieżącego użytkownika",
"rp.pin_error": "Nie udało się uzyskać PIN-u Remote Play",
"rp.notify.countdown": "Parowanie Remote Play: pozostało %u s",
"rp.notify.paired": "Remote Play sparowany, można się łączyć",
"rp.notify.timeout": "Czas parowania Remote Play minął",
"rp.save_usb": "Zapisz dane Remote Play na USB",
"rp.save_usb.sub": "Zapisz bieżący PIN i dane konta na włożonym pendrive, aby obejrzeć je na PC",
"plapps.title": "Homebrew payloadów OnionHEN - Aplikacje",
"plapps.version_fmt": "%s | wersja: %s"
},
"notifications": {
"notify.boot.starting": "OnionHEN się uruchamia...",
"notify.boot.welcome": "Witamy w OnionHEN",
"notify.boot.goto_toolbox": "Przejdź do narzędzi OnionHEN",
"notify.boot.made_by": " · autor: ",
"notify.boot.cleaned_up": "OnionHEN został posprzątany.",
"notify.kstuff.no_elf_header": "Kstuff „%s” nie ma poprawnego nagłówka ELF.",
"notify.kstuff.loading": "Ładowanie Kstuff z: %s",
"notify.net.socket_create": "Nie udało się utworzyć gniazda: %s",
"notify.net.socket_options": "Nie udało się ustawić opcji gniazda: %s",
"notify.net.socket_bind": "Nie udało się powiązać gniazda: %s",
"notify.net.socket_listen": "Nie udało się nasłuchiwać na gnieździe: %s",
"notify.net.socket_accept": "Nie udało się przyjąć połączenia: %s",
"notify.elfldr.need_9021": "Najpierw uruchom elfldr na porcie 9021, potem ponownie OnionHEN.",
"notify.elfldr.launch_util": "nie udało się uruchomić util przez elfldr",
"notify.kstuff.load_failed": "Nie udało się załadować Kstuff, kontynuacja bez niego",
"notify.kstuff.load_elfldr_failed": "Nie udało się załadować Kstuff przez elfldr, kontynuacja",
"notify.elfldr.launch_daemon": "nie udało się uruchomić daemona przez elfldr",
"notify.priv.unable": "Nie udało się podnieść uprawnień",
"notify.mount.system_ex": "nie udało się zamontować /system_ex\njeśli to widzisz, uruchom konsolę ponownie",
"notify.mount.system": "nie udało się zamontować /system\njeśli to widzisz, uruchom konsolę ponownie",
"notify.crash.resolved": "Błąd krytyczny został naprawiony\n\nnie ma powodu do niepokoju",
"notify.crash.main": "OnionHEN uległ awarii…\n\nWyślij /data/OnionHEN/OnionHEN_crash.log na Discord PKG-Zone: https://discord.gg/BduZHudWGj",
"notify.stack.shutdown": "Stos OnionHEN zatrzymany (util + ShellUI + daemon; Kstuff działa dalej)",
"notify.fan.open_failed": "Nie udało się otworzyć ustawień wentylatora.",
"notify.fan.set_failed": "Nie udało się ustawić prędkości wentylatora.",
"notify.toolbox.no_shellui_pid": "Nie udało się pobrać PID ShellUI",
"notify.toolbox.inject_failed": "Nie udało się wstrzyknąć narzędzi",
"notify.toolbox.load_failed": "Nie udało się załadować narzędzi OnionHEN",
"notify.toolbox.load_timeout": "Nie udało się załadować narzędzi OnionHEN (przekroczono czas, ShellUI działa dalej)",
"notify.toolbox.shellui_restarted": "SceShellUI uruchomił się ponownie podczas ładowania narzędzi OnionHEN",
"notify.util.restarting": "OnionHEN Utility nie działa, ponowne uruchamianie...",
"notify.util.restarted": "Usługi OnionHEN Utility uruchomiono ponownie",
"notify.util.restart_failed": "Nie udało się ponownie uruchomić usług OnionHEN Utility — prywatny elfldr :9020 niedostępny",
"notify.loader.recovering": "Loader środowiska OnionHEN :9020 jest niedostępny; odzyskiwanie przez :9021...",
"notify.loader.recovered": "Loader środowiska OnionHEN odzyskany na :9020",
"notify.loader.recover_failed": "Nie udało się odzyskać loadera :9020; potrzebny zewnętrzny elfldr :9021",
"notify.payload.autostart_skipped": "Pominięto autostart payloadów użytkownika: prywatny elfldr :9020 niedostępny",
"notify.rest.reactivating": "Wyjście z trybu spoczynku — ponowna aktywacja narzędzi OnionHEN...",
"notify.jailbreak.granted": "Aplikacja (PID %i) otrzymała jailbreak",
"notify.settings.created": "Utworzono konfigurację OnionHEN: /data/OnionHEN/config.ini",
"notify.settings.read_failed": "Nie udało się odczytać pliku ustawień",
"notify.fs.size_failed": "nie udało się obliczyć całkowitego rozmiaru %s",
"notify.fs.copy_file": "nie udało się skopiować pliku: %s",
"notify.fs.copy_recursive": "kopiowanie rekurencyjne nie powiodło się: %s",
"notify.ipc.json_parse": "Błąd analizy JSON",
"notify.ipc.invalid_path": "Nieprawidłowa długość ścieżki: %d",
"notify.fs.unmount": "Odmontowanie nie powiodło się | błąd: %s",
"notify.fs.remount": "błąd ponownego montowania: %s\nŚcieżka: %s",
"notify.ipc.unused": "To polecenie nie jest już używane",
"notify.fan.invalid_speed": "Nieprawidłowa prędkość wentylatora: %d. Musi być między 0 a 100.",
"notify.fan.disabled": "Regulacja prędkości wentylatora jest wyłączona.",
"notify.fan.adjusted": "Próg wentylatora ustawiono na %i °C.",
"notify.fan.adjust_failed": "Nie udało się zmienić prędkości wentylatora.",
"notify.settings.reloaded": "Ustawienia wczytano ponownie",
"notify.ipc.unknown_command": "Nieznane polecenie 0x%X",
"notify.app.not_found": "nie znaleziono aplikacji %s",
"notify.net.ip_changed": "Adres IP zmieniono na %s",
"notify.util.crashed": "Demon narzędzi OnionHEN uległ awarii…\n\nCzęść funkcji będzie niedostępna do ponownego uruchomienia",
"notify.util.crash_recovering": "Demon narzędzi OnionHEN uległ awarii…\n\nPróba odzyskania...",
"notify.game.tid_failed": "Nie udało się pobrać Title ID",
"notify.game.version_failed": "Nie udało się pobrać wersji gry",
"notify.game.sfo_failed": "Nie udało się odczytać pliku SFO",
"notify.payload.load_failed": "Nie udało się załadować payloadu\nŚcieżka: %s\nIdentyfikator: %s",
"notify.payload.load_failed_path": "Nie udało się załadować payloadu.\nŚcieżka: %s",
"notify.payload.launched": "Payload uruchomiony\nŚcieżka: %s\nIdentyfikator: %s",
"notify.cheats.none": "Brak cheatów dla %s w wersji %s.",
"notify.payload.elf_only": "Obsługiwane są tylko payloady .elf:\n%s",
"notify.payload.invalid_elf": "Nieprawidłowy plik ELF: %s",
"notify.payload.invalid_name": "Nieprawidłowa nazwa ELF: %s",
"notify.payload.loading": "Ładowanie payloadu %s...",
"notify.payload.launch_failed": "Nie udało się uruchomić payloadu %s (%s)",
"notify.app.launch_failed": "Nie udało się uruchomić aplikacji, kod błędu: %d",
"notify.app.launching": "Uruchamianie aplikacji %s i sprawdzanie łatek...",
"notify.app.launch_returned": "LaunchApp zwrócił: %d",
"notify.cheats.game_not_running": "Gra nie jest uruchomiona; uruchom ją, zanim włączysz cheaty",
"notify.cheats.no_pid": "[BŁĄD] Nie udało się włączyć %s\nnie znaleziono PID gry",
"notify.cheats.toggle_banner": "★ %s [%s] ★",
"notify.common.on": "WŁ.",
"notify.common.off": "WYŁ.",
"notify.cheats.activate_failed": "[BŁĄD] Nie udało się włączyć %s",
"notify.kstuff.next_boot_on": "Kstuff zostanie załadowany przy następnym starcie",
"notify.kstuff.next_boot_off": "Kstuff NIE zostanie załadowany przy następnym starcie",
"notify.kstuff.deleted": "Zewnętrzny Kstuff został usunięty",
"notify.rp.usb_missing": "Nie udało się zapisać danych Remote Play, nie znaleziono USB",
"notify.rp.save_open_failed": "Nie udało się otworzyć pliku danych Remote Play",
"notify.rp.saved": "Dane Remote Play zapisano w /mnt%s",
"notify.overlay.disable_cpu_first": "Aby wyłączyć monitor CPU, najpierw wyłącz „użycie wszystkich rdzeni CPU”",
"notify.overlay.enable_cpu_first": "Aby zmienić tryb monitora CPU, najpierw włącz monitor CPU",
"notify.process.killed": "%s zakończony",
"notify.payload.autostart_file": "Nie udało się utworzyć pliku autostartu",
"notify.fan.not_enabled": "Ręczny próg temperatury wentylatora nie jest włączony",
"notify.shortcut.toolbox_cheats": "Skróty narzędzi i cheatów nie mogą być takie same; bieżący wybór NIE zostanie zapisany",
"notify.shortcut.toolbox_cheats_long": "Długie skróty narzędzi i cheatów nie mogą być takie same; bieżący wybór NIE zostanie zapisany",
"notify.shortcut.cheats_toolbox": "Skróty cheatów i narzędzi nie mogą być takie same; bieżący wybór NIE zostanie zapisany",
"notify.shortcut.cheats_toolbox_long": "Długie skróty cheatów i narzędzi nie mogą być takie same; bieżący wybór NIE zostanie zapisany",
"notify.lang.saved": "Język zapisany. Zamknij narzędzia i otwórz je ponownie, aby zastosować.",
"notify.hook.load_assembly": "Nie udało się załadować zestawu",
"notify.hook.target": "Nie znaleziono celu haka",
"notify.hook.install": "Nie udało się zainstalować haka",
"notify.hook.lnc_image": "Nie udało się pobrać obrazu LncUtilWrapper",
"notify.hook.layer_manager": "Nie udało się pobrać klasy LayerManager",
"notify.hook.find_scene": "Nie udało się pobrać metody FindContainerSceneByPath",
"notify.hook.find_scene_exc": "Wyjątek podczas wywołania FindContainerSceneByPath",
"notify.hook.game_scene": "Nie udało się pobrać ContainerScene gry",
"notify.hook.regmgr": "Nie znaleziono sceRegMgrGetInt",
"notify.hook.kill_app": "Nie udało się wykonać detour KillAppWithReason",
"notify.hook.rnps_find": "Nie znaleziono ioctl deszyfrowania RNPS",
"notify.hook.rnps_detour": "Nie udało się wykonać detour ioctl deszyfrowania RNPS",
"notify.hook.boot": "nie udało się wykonać detour BootHelper.Boot",
"notify.hook.capture": "Nie udało się wykonać detour CaptureScreen",
"notify.hook.master": "Nie udało się pobrać adresu głównego",
"notify.app.reload_scenes": "Ponowne ładowanie scen %s",
"notify.pkg.installing": "Instalowanie pakietu z:\n%s",
"notify.pkg.finished": "Instalacja zakończona, kod: %d",
"notify.rp.reg_get": "SCE_REGMGR: nie udało się odczytać REMOTEPLAY_rp_enable (0x%x)",
"notify.rp.reg_set": "SCE_REGMGR: nie udało się ustawić REMOTEPLAY_rp_enable (0x%x)",
"notify.rp.reg_verify": "SCE_REGMGR: nie udało się zweryfikować REMOTEPLAY_rp_enable (0x%x)",
"notify.rp.confirm": "sceRemoteplayConfirmDeviceRegist 0x%X stan parowania: %d błąd parowania: %d",
"notify.brand": "OnionHEN"
}
}
+3
View File
@@ -138,7 +138,10 @@
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.es": "Español",
"lang.it": "Italiano",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "Build: %s",
"about.donate": "Apoiar este projeto",
+316
View File
@@ -0,0 +1,316 @@
{
"meta": {
"id": "ru",
"bcp47": "ru-RU",
"fallback": false
},
"toolbox": {
"root.title": "★Инструменты OnionHEN",
"group.pkg": "Установка и управление контентом",
"group.pkg.sub": "Установка PKG и управление дополнительным контентом",
"group.payloads": "Полезные нагрузки и ядро",
"group.payloads.sub": "ELF полезных нагрузок и Kstuff",
"group.game": "Игровые средства",
"group.game.sub": "Читы текущей игры",
"group.display": "Мониторинг и отображение",
"group.display.sub": "Оверлей в игре, индикаторы на начальном экране и пункт в параметрах игры",
"group.connection": "Учётная запись, связь и Remote Play",
"group.connection.sub": "Сопряжение Remote Play и сведения о подключении",
"group.system": "Система и оборудование",
"group.system.sub": "Вентилятор, режим покоя, накопители и активация лицензии",
"group.shortcuts": "Сочетания кнопок контроллера",
"group.shortcuts.sub": "Пока инструменты активны, сочетания сохраняются после перезагрузки; комбинации работают и вне игры",
"group.preferences": "Настройки",
"group.preferences.sub": "Поведение при запуске, язык инструментов и сочетания кнопок",
"group.debug": "Расширенная отладка",
"group.debug.sub": "Журналы, управление джейлбрейком приложений и среда NP",
"group.about": "О программе",
"group.about.sub": "Благодарности, поддержка и сведения о проекте",
"group.lang": "Язык интерфейса",
"group.lang.sub": "После смены закройте инструменты и откройте снова",
"pkg.installer": "Установщик пакетов",
"pkg.installer.sub": "Открыть системный установщик, чтобы поставить игры или приложения PKG",
"pkg.add_content": "Диспетчер дополнительного контента",
"pkg.add_content.sub": "Дополнения, обновления и DLC установленных игр",
"pkg.msg.options": "Параметры установщика PKG",
"pkg.msg.installing": "OnionHEN устанавливает выбранный PKG",
"pkg.msg.yes": "Да",
"pkg.msg.no": "Нет",
"pkg.msg.sort": "Сортировка PKG OnionHEN",
"pkg.msg.sort_az": "Имя (A–Я)",
"pkg.msg.sort_za": "Имя (Я–A)",
"pkg.msg.updated": "Обновлено",
"pkg.msg.wait": "Подождите...",
"pkg.msg.ok": "ОК",
"pkg.msg.cancel": "Отмена",
"pkg.msg.select_all": "Выбрать все",
"payloads.link": "Payload",
"payloads.link.sub": "Просмотр и запуск ELF из папок payloads",
"kstuff.group": "Kstuff",
"kstuff.group.sub": "Загрузка и замена патча ядра",
"kstuff.autoload": "Автозагрузка Kstuff при старте OnionHEN",
"kstuff.autoload.sub": "Если включено, патч ядра подгружается при каждом запуске OnionHEN",
"kstuff.delete": "Удалить внешний Kstuff (/data/OnionHEN/kstuff.elf)",
"kstuff.delete.desc": "После удаления OnionHEN вернётся к встроенному Kstuff",
"cheats.link": "Читы",
"cheats.link.sub": "Включать и выключать читы текущей игры",
"remote_play.link": "Remote Play",
"remote_play.link.sub": "PIN и данные учётной записи для Remote Play с телефона или ПК",
"game_opts.toggle": "Параметры игры OnionHEN",
"game_opts.toggle.sub": "Показывать пункты OnionHEN (например, читы) в меню параметров игры",
"overlay.group": "Игровой оверлей",
"overlay.group.sub": "Полоса во всю ширину + полупрозрачный чёрный фон по желанию",
"overlay.enabled": "Полоса мониторинга",
"overlay.enabled.desc": "Показывать полную полосу мониторинга в игре",
"overlay.background": "Фон полосы мониторинга",
"overlay.background.desc": "Показывать полупрозрачный фон за полосой",
"overlay.pos": "Положение полосы мониторинга",
"overlay.pos.sub": "На всю ширину у края экрана; показатели по центру: CPU · GPU · RAM · IP",
"overlay.pos.top": "Верхний край",
"overlay.pos.bottom": "Нижний край",
"overlay.gpu": "GPU",
"overlay.gpu.desc": "Температура GPU и занятость видеопамяти",
"overlay.cpu": "CPU",
"overlay.cpu.desc": "Температура CPU и средняя загрузка",
"overlay.cpu_all": "Загрузка всех ядер CPU",
"overlay.cpu_all.desc": "Показывать все 8 ядер по отдельности (полоса станет шире)",
"overlay.ram": "Память",
"overlay.ram.desc": "Занятость системной памяти",
"overlay.ip": "IP-адрес",
"overlay.ip.desc": "LAN IP консоли",
"disp_tids": "Показывать Title ID на начальном экране",
"disp_tids.sub": "Title ID каждой игры на начальном экране; только пока инструменты активны",
"fan.group": "Управление вентилятором",
"fan.group.sub": "Скорость вентилятора по порогу температуры",
"fan.enable": "Включить ручной порог вентилятора",
"fan.enable.sub": "Если выключено, действует штатная политика вентилятора",
"fan.threshold": "Порог вентилятора",
"fan.threshold.sub": "Градусы Цельсия; по достижении этой температуры вентилятор ускоряется",
"rest.group": "Режим покоя",
"rest.group.sub": "Меньше зависаний и сбоев при входе в режим покоя",
"rest.delay": "Отложить активацию инструментов (сек.)",
"rest.delay.sub": "Подождать ещё несколько секунд после выхода из режима покоя, прежде чем накладывать патчи",
"hdd.external": "Внешний HDD",
"hdd.external.sub": "Системная страница форматирования и управления внешним диском",
"license.bd": "Активация Blu-ray (лицензия)",
"license.bd.sub": "Системная страница активации лицензии дисков Blu-ray",
"startup.open_after_load": "Открывать автоматически после загрузки OnionHEN",
"startup.open_after_load.sub": "Остаться на текущем экране или вернуться на начальный",
"startup.open_after_load.confirm": "Изменения вступят в силу при следующей загрузке OnionHEN.",
"startup.open_after_load.confirm_phrase": "ОК,Отмена",
"startup.none": "Нет",
"startup.home_menu": "Начальный экран",
"sc.cheats": "Открыть меню читов",
"sc.cheats.sub": "Открывать читы с любого экрана, в том числе в игре, комбинацией кнопок",
"sc.toolbox": "Открыть инструменты OnionHEN",
"sc.toolbox.sub": "Открывать инструменты с любого экрана, в том числе в игре, комбинацией кнопок",
"sc.off": "Выкл. (без сочетания)",
"sc.r3_l3": "Удерживать R3 + L3",
"sc.l2_tri": "Удерживать L2 + △",
"sc.long_options": "Долгое нажатие Options",
"sc.long_share": "Долгое нажатие Share",
"sc.share": "Нажать Share",
"sc.l2_r3": "Удерживать L2 + R3",
"log.level": "Уровень журнала",
"log.level.sub": "Подробность журналов OnionHEN; чем выше уровень, тем больше диагностики",
"log.off": "Выкл.",
"log.error": "Только ошибки",
"log.warn": "Предупреждения и ошибки",
"log.info": "Сведения (рекомендуется)",
"log.debug": "Отладка",
"log.trace": "Трассировка",
"app_jailbreak.enabled": "Джейлбрейк приложений",
"app_jailbreak.enabled.sub": "Принимать запросы джейлбрейка от разрешённых приложений",
"debug.jb": "Уведомления о джейлбрейке приложений",
"debug.jb.sub": "Показывать уведомление после успешного джейлбрейка",
"debug.np_env": "Среда NP",
"debug.np_env.sub": "Изменить строку среды PlayStation Network; после сохранения консоль перезагрузится",
"debug.np_env.confirm": "Система перезагрузится, чтобы применить этот параметр.",
"debug.np_env.confirm_phrase": "ОК,Отмена",
"lang.list": "Язык инструментов",
"lang.list.sub": "После смены закройте инструменты и откройте снова, чтобы интерфейс полностью обновился",
"lang.system": "Язык системы",
"lang.zh": "简体中文",
"lang.zh_hant": "繁體中文",
"lang.en": "English",
"lang.ja": "日本語",
"lang.ko": "한국어",
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.it": "Italiano",
"lang.es": "Español",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "Сборка: %s",
"about.donate": "Поддержать проект",
"about.donate.sub": "Нравится проект? Можно поддержать его на Ko-fi",
"about.donate.methods": "★ Способы поддержки",
"about.wechat": "- WeChat | polichan01",
"about.donors": "★ Жертвователи ★",
"about.credits": "Благодарности OnionHEN",
"about.credits.sub": "Родословная, тестировщики и титры",
"about.lineage": "★ Родословная ★",
"about.lineage.etahen": "- etaHEN (LightningMods) — исходная база OnionHEN",
"about.lineage.goldhen": "- GoldHEN (SiSTR0) — духовный предшественник все-в-одном HEN для PS4",
"about.testers": "★ Спасибо тестировщикам ★",
"about.testers.intro": "Спасибо каждому, кто помог проекту вырасти. Ваше участие и поддержка двигают его дальше.",
"about.more": "Новости и обновления — в каналах публикации проекта",
"about.projects": "Проекты в составе OnionHEN",
"about.projects.sub": "Компоненты, которые реально используются или встроены в это дерево",
"about.projects.info": "★ Зависимости и встроенные компоненты этого дерева",
"payload.title": "Payload",
"payload.auto_title": "★ Автозапуск полезных нагрузок",
"payload.auto.link": "★ Автозапуск полезных нагрузок",
"payload.auto.sub": "Выбрать .elf в payloads/, которые стартуют вместе с OnionHEN",
"payload.start_stop_fmt": "Запустить/остановить %s (путь: %s) (%s)",
"payload.autostart_fmt": "Вкл./выкл. автозапуск %s (%s)",
"cheats.none": "Читы OnionHEN — игра не открыта",
"cheats.none.hint": "Сначала запустите игру, затем откройте меню читов",
"cheats.missing": "Нет читов для этой игры/версии (положите файлы в /data/OnionHEN/cheats/)",
"cheats.game_menu": "★ Читы OnionHEN",
"cheats.title_fmt": "Читы OnionHEN - %s - %s",
"cheats.ver_unknown": "Не удалось определить версию патча",
"cheats.not_running_fmt": "%s не запущена; откройте игру, чтобы включить читы",
"cheats.authors_fmt": "Авторы читов: %s",
"cheats.on_off": "Вкл./выкл.",
"cheats.enable_fmt": "Для %s: вкл./выкл. %s",
"rp.title": "Сведения о подключении Remote Play",
"rp.need_reboot": "Учётная запись активирована OnionHEN; перезагрузите консоль перед Remote Play.",
"rp.account_id_fmt": "ID учётной записи: %s",
"rp.account_id_decoded_fmt": "Декодированный ID учётной записи: %s",
"rp.pin_fmt": "PIN-код: %04u %04u ",
"rp.init_error": "Не удалось инициализировать Remote Play; выйдите со страницы и повторите",
"rp.account_error": "Не удалось прочитать ID учётной записи текущего пользователя",
"rp.pin_error": "Не удалось получить PIN Remote Play",
"rp.notify.countdown": "Сопряжение Remote Play: осталось %u с",
"rp.notify.paired": "Remote Play сопряжён, можно подключаться",
"rp.notify.timeout": "Время сопряжения Remote Play истекло",
"rp.save_usb": "Сохранить данные Remote Play на USB",
"rp.save_usb.sub": "Записать текущие PIN и данные учётной записи на вставленный USB-накопитель, чтобы смотреть на ПК",
"plapps.title": "Homebrew-нагрузки OnionHEN — приложения",
"plapps.version_fmt": "%s | версия: %s"
},
"notifications": {
"notify.boot.starting": "OnionHEN запускается...",
"notify.boot.welcome": "Добро пожаловать в OnionHEN",
"notify.boot.goto_toolbox": "Перейти к инструментам OnionHEN",
"notify.boot.made_by": " · автор: ",
"notify.boot.cleaned_up": "OnionHEN очищен.",
"notify.kstuff.no_elf_header": "У Kstuff «%s» нет допустимого заголовка ELF.",
"notify.kstuff.loading": "Загрузка Kstuff из: %s",
"notify.net.socket_create": "Не удалось создать сокет: %s",
"notify.net.socket_options": "Не удалось задать параметры сокета: %s",
"notify.net.socket_bind": "Не удалось привязать сокет: %s",
"notify.net.socket_listen": "Не удалось начать прослушивание сокета: %s",
"notify.net.socket_accept": "Не удалось принять соединение: %s",
"notify.elfldr.need_9021": "Сначала запустите elfldr на порту 9021, затем снова OnionHEN.",
"notify.elfldr.launch_util": "не удалось запустить util через elfldr",
"notify.kstuff.load_failed": "Не удалось загрузить Kstuff, продолжаем без него",
"notify.kstuff.load_elfldr_failed": "Не удалось загрузить Kstuff через elfldr, продолжаем",
"notify.elfldr.launch_daemon": "не удалось запустить daemon через elfldr",
"notify.priv.unable": "Не удалось повысить привилегии",
"notify.mount.system_ex": "не удалось смонтировать /system_ex\nесли видите это — перезагрузите консоль",
"notify.mount.system": "не удалось смонтировать /system\nесли видите это — перезагрузите консоль",
"notify.crash.resolved": "Фатальная ошибка устранена\n\nбеспокоиться не о чем",
"notify.crash.main": "OnionHEN аварийно завершился…\n\nОтправьте /data/OnionHEN/OnionHEN_crash.log в Discord PKG-Zone: https://discord.gg/BduZHudWGj",
"notify.stack.shutdown": "Стек OnionHEN остановлен (util + ShellUI + daemon; Kstuff продолжает работать)",
"notify.fan.open_failed": "Не удалось открыть настройки вентилятора.",
"notify.fan.set_failed": "Не удалось задать скорость вентилятора.",
"notify.toolbox.no_shellui_pid": "Не удалось получить PID ShellUI",
"notify.toolbox.inject_failed": "Не удалось внедрить инструменты",
"notify.toolbox.load_failed": "Не удалось загрузить инструменты OnionHEN",
"notify.toolbox.load_timeout": "Не удалось загрузить инструменты OnionHEN (тайм-аут, ShellUI продолжает работать)",
"notify.toolbox.shellui_restarted": "SceShellUI перезапустился при загрузке инструментов OnionHEN",
"notify.util.restarting": "OnionHEN Utility не запущен, перезапуск...",
"notify.util.restarted": "Службы OnionHEN Utility успешно перезапущены",
"notify.util.restart_failed": "Не удалось перезапустить службы OnionHEN Utility — частный elfldr :9020 недоступен",
"notify.loader.recovering": "Загрузчик среды OnionHEN :9020 недоступен; восстановление через :9021...",
"notify.loader.recovered": "Загрузчик среды OnionHEN восстановлен на :9020",
"notify.loader.recover_failed": "Не удалось восстановить загрузчик :9020; нужен внешний elfldr :9021",
"notify.payload.autostart_skipped": "Автозапуск пользовательских нагрузок пропущен: частный elfldr :9020 недоступен",
"notify.rest.reactivating": "Выход из режима покоя — повторная активация инструментов OnionHEN...",
"notify.jailbreak.granted": "Приложению (PID %i) предоставлен джейлбрейк",
"notify.settings.created": "Конфигурация OnionHEN создана: /data/OnionHEN/config.ini",
"notify.settings.read_failed": "Не удалось прочитать файл настроек",
"notify.fs.size_failed": "не удалось вычислить общий размер %s",
"notify.fs.copy_file": "не удалось скопировать файл: %s",
"notify.fs.copy_recursive": "рекурсивное копирование не удалось: %s",
"notify.ipc.json_parse": "Ошибка разбора JSON",
"notify.ipc.invalid_path": "Недопустимая длина пути: %d",
"notify.fs.unmount": "Не удалось размонтировать | ошибка: %s",
"notify.fs.remount": "ошибка повторного монтирования: %s\nПуть: %s",
"notify.ipc.unused": "Эта команда больше не используется",
"notify.fan.invalid_speed": "Недопустимая скорость вентилятора: %d. Нужно значение от 0 до 100.",
"notify.fan.disabled": "Регулировка скорости вентилятора выключена.",
"notify.fan.adjusted": "Порог вентилятора установлен на %i °C.",
"notify.fan.adjust_failed": "Не удалось изменить скорость вентилятора.",
"notify.settings.reloaded": "Настройки перечитаны",
"notify.ipc.unknown_command": "Неизвестная команда 0x%X",
"notify.app.not_found": "приложение %s не найдено",
"notify.net.ip_changed": "IP-адрес изменён на %s",
"notify.util.crashed": "Демон утилит OnionHEN аварийно завершился…\n\nЧасть функций будет недоступна до перезагрузки",
"notify.util.crash_recovering": "Демон утилит OnionHEN аварийно завершился…\n\nПытаемся восстановить...",
"notify.game.tid_failed": "Не удалось получить Title ID",
"notify.game.version_failed": "Не удалось получить версию игры",
"notify.game.sfo_failed": "Не удалось прочитать файл SFO",
"notify.payload.load_failed": "Не удалось загрузить полезную нагрузку\nПуть: %s\nИдентификатор: %s",
"notify.payload.load_failed_path": "Не удалось загрузить полезную нагрузку.\nПуть: %s",
"notify.payload.launched": "Полезная нагрузка запущена\nПуть: %s\nИдентификатор: %s",
"notify.cheats.none": "Нет читов для %s версии %s.",
"notify.payload.elf_only": "Поддерживаются только нагрузки .elf:\n%s",
"notify.payload.invalid_elf": "Недопустимый файл ELF: %s",
"notify.payload.invalid_name": "Недопустимое имя ELF: %s",
"notify.payload.loading": "Загрузка полезной нагрузки %s...",
"notify.payload.launch_failed": "Не удалось запустить полезную нагрузку %s (%s)",
"notify.app.launch_failed": "Не удалось запустить приложение, код ошибки: %d",
"notify.app.launching": "Запуск приложения %s, проверка патчей...",
"notify.app.launch_returned": "LaunchApp вернул: %d",
"notify.cheats.game_not_running": "Игра не запущена; сначала запустите её, затем включайте читы",
"notify.cheats.no_pid": "[ОШИБКА] Не удалось включить %s\nPID игры не найден",
"notify.cheats.toggle_banner": "★ %s [%s] ★",
"notify.common.on": "ВКЛ",
"notify.common.off": "ВЫКЛ",
"notify.cheats.activate_failed": "[ОШИБКА] Не удалось включить %s",
"notify.kstuff.next_boot_on": "Kstuff будет загружен при следующем запуске",
"notify.kstuff.next_boot_off": "Kstuff НЕ будет загружен при следующем запуске",
"notify.kstuff.deleted": "Внешний Kstuff удалён",
"notify.rp.usb_missing": "Не удалось сохранить данные Remote Play, USB не найден",
"notify.rp.save_open_failed": "Не удалось открыть файл данных Remote Play",
"notify.rp.saved": "Данные Remote Play сохранены в /mnt%s",
"notify.overlay.disable_cpu_first": "Чтобы выключить мониторинг CPU, сначала отключите «загрузку всех ядер CPU»",
"notify.overlay.enable_cpu_first": "Чтобы сменить режим мониторинга CPU, сначала включите мониторинг CPU",
"notify.process.killed": "%s завершён",
"notify.payload.autostart_file": "Не удалось создать файл автозапуска",
"notify.fan.not_enabled": "Ручной порог температуры вентилятора не включён",
"notify.shortcut.toolbox_cheats": "Сочетания инструментов и читов не могут совпадать; текущий выбор НЕ будет сохранён",
"notify.shortcut.toolbox_cheats_long": "Длинные сочетания инструментов и читов не могут совпадать; текущий выбор НЕ будет сохранён",
"notify.shortcut.cheats_toolbox": "Сочетания читов и инструментов не могут совпадать; текущий выбор НЕ будет сохранён",
"notify.shortcut.cheats_toolbox_long": "Длинные сочетания читов и инструментов не могут совпадать; текущий выбор НЕ будет сохранён",
"notify.lang.saved": "Язык сохранён. Закройте инструменты и откройте снова, чтобы применить.",
"notify.hook.load_assembly": "Не удалось загрузить сборку",
"notify.hook.target": "Цель перехвата не найдена",
"notify.hook.install": "Не удалось установить перехват",
"notify.hook.lnc_image": "Не удалось получить образ LncUtilWrapper",
"notify.hook.layer_manager": "Не удалось получить класс LayerManager",
"notify.hook.find_scene": "Не удалось получить метод FindContainerSceneByPath",
"notify.hook.find_scene_exc": "Исключение при вызове FindContainerSceneByPath",
"notify.hook.game_scene": "Не удалось получить ContainerScene игры",
"notify.hook.regmgr": "sceRegMgrGetInt не найден",
"notify.hook.kill_app": "Сбой обхода KillAppWithReason",
"notify.hook.rnps_find": "ioctl расшифровки RNPS не найден",
"notify.hook.rnps_detour": "Сбой обхода ioctl расшифровки RNPS",
"notify.hook.boot": "сбой обхода BootHelper.Boot",
"notify.hook.capture": "Сбой обхода CaptureScreen",
"notify.hook.master": "Не удалось получить главный адрес",
"notify.app.reload_scenes": "Перезагрузка сцен %s",
"notify.pkg.installing": "Установка пакета из:\n%s",
"notify.pkg.finished": "Установка завершена, код: %d",
"notify.rp.reg_get": "SCE_REGMGR: не удалось прочитать REMOTEPLAY_rp_enable (0x%x)",
"notify.rp.reg_set": "SCE_REGMGR: не удалось задать REMOTEPLAY_rp_enable (0x%x)",
"notify.rp.reg_verify": "SCE_REGMGR: не удалось проверить REMOTEPLAY_rp_enable (0x%x)",
"notify.rp.confirm": "sceRemoteplayConfirmDeviceRegist 0x%X состояние сопряжения: %d ошибка сопряжения: %d",
"notify.brand": "OnionHEN"
}
}
+3
View File
@@ -138,7 +138,10 @@
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.es": "Español",
"lang.it": "Italiano",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "构建版本:%s",
"about.donate": "支持本项目",
+3
View File
@@ -138,7 +138,10 @@
"lang.fr": "Français",
"lang.de": "Deutsch",
"lang.es": "Español",
"lang.it": "Italiano",
"lang.pt_br": "Português (Brasil)",
"lang.pl": "Polski",
"lang.ru": "Русский",
"lang.ar": "العربية",
"about.build": "組建版本:%s",
"about.donate": "支持本專案",
@@ -19,6 +19,9 @@ typedef enum onion_notify_language {
ONION_NOTIFY_LANG_KO = 7,
ONION_NOTIFY_LANG_ES = 8,
ONION_NOTIFY_LANG_PT_BR = 9,
ONION_NOTIFY_LANG_IT = 10,
ONION_NOTIFY_LANG_RU = 11,
ONION_NOTIFY_LANG_PL = 12,
} onion_notify_language_t;
/** Select the resolved language used by plain and rich notifications. */
@@ -30,10 +33,11 @@ onion_notify_language_t onion_notify_get_language(void);
/**
* Resolve the shared toolbox language setting.
* ui_language: 0=system, 1=zh-Hans, 2=en, 3=ar, 4=zh-Hant, 5=ja, 6=fr,
* 7=de, 8=ko, 9=es, 10=pt-BR.
* 7=de, 8=ko, 9=es, 10=pt-BR, 11=it, 12=ru, 13=pl.
* system_language is the value returned for SCE_SYSTEM_SERVICE_PARAM_ID_LANG
* (0=Japanese, 2/22=French, 3/20=Spanish, 4=German, 7/17=Portuguese,
* 9=Korean, 10=zh-Hant, 11=zh-Hans, 21=Arabic; anything else follows English).
* (0=Japanese, 2/22=French, 3/20=Spanish, 4=German, 5=Italian,
* 7/17=Portuguese, 8=Russian, 9=Korean, 10=zh-Hant, 11=zh-Hans,
* 16=Polish, 21=Arabic; anything else follows English).
*/
onion_notify_language_t onion_notify_resolve_language(int ui_language,
int system_language);
+19 -1
View File
@@ -13,7 +13,7 @@ static atomic_int gLanguage = ATOMIC_VAR_INIT(ONION_NOTIFY_LANG_EN);
static int language_is_known(onion_notify_language_t language) {
return language >= ONION_NOTIFY_LANG_ZH_HANS &&
language <= ONION_NOTIFY_LANG_PT_BR;
language <= ONION_NOTIFY_LANG_PL;
}
static const char *locale_id_for_language(onion_notify_language_t language) {
@@ -36,6 +36,12 @@ static const char *locale_id_for_language(onion_notify_language_t language) {
return "es";
case ONION_NOTIFY_LANG_PT_BR:
return "pt-BR";
case ONION_NOTIFY_LANG_IT:
return "it";
case ONION_NOTIFY_LANG_RU:
return "ru";
case ONION_NOTIFY_LANG_PL:
return "pl";
case ONION_NOTIFY_LANG_EN:
default:
return "en";
@@ -87,6 +93,12 @@ onion_notify_language_t onion_notify_resolve_language(int ui_language,
return ONION_NOTIFY_LANG_ES;
case 10:
return ONION_NOTIFY_LANG_PT_BR;
case 11:
return ONION_NOTIFY_LANG_IT;
case 12:
return ONION_NOTIFY_LANG_RU;
case 13:
return ONION_NOTIFY_LANG_PL;
default:
break;
}
@@ -103,15 +115,21 @@ onion_notify_language_t onion_notify_resolve_language(int ui_language,
return ONION_NOTIFY_LANG_ES;
case 4: /* German */
return ONION_NOTIFY_LANG_DE;
case 5: /* Italian */
return ONION_NOTIFY_LANG_IT;
case 7: /* Portuguese (Portugal) */
case 17: /* Portuguese (Brazil) */
return ONION_NOTIFY_LANG_PT_BR;
case 8: /* Russian */
return ONION_NOTIFY_LANG_RU;
case 9: /* Korean */
return ONION_NOTIFY_LANG_KO;
case 10: /* Traditional Chinese */
return ONION_NOTIFY_LANG_ZH_HANT;
case 11: /* Simplified Chinese */
return ONION_NOTIFY_LANG_ZH_HANS;
case 16: /* Polish */
return ONION_NOTIFY_LANG_PL;
case 21: /* Arabic */
return ONION_NOTIFY_LANG_AR;
default:
@@ -62,6 +62,9 @@ inline constexpr int kUiLanguageDe = 7;
inline constexpr int kUiLanguageKo = 8;
inline constexpr int kUiLanguageEs = 9;
inline constexpr int kUiLanguagePtBr = 10;
inline constexpr int kUiLanguageIt = 11;
inline constexpr int kUiLanguageRu = 12;
inline constexpr int kUiLanguagePl = 13;
inline constexpr int kStartupOpenNone = 0;
inline constexpr int kStartupOpenHomeMenu = 1;
@@ -147,7 +150,8 @@ struct Settings {
// [toolbox]
// 0 = system (default), 1 = zh-Hans, 2 = en, 3 = ar, 4 = zh-Hant,
// 5 = ja, 6 = fr, 7 = de, 8 = ko, 9 = es, 10 = pt-BR
// 5 = ja, 6 = fr, 7 = de, 8 = ko, 9 = es, 10 = pt-BR, 11 = it,
// 12 = ru, 13 = pl
int ui_lang = kUiLanguageSystem;
// [logging]
+21 -1
View File
@@ -148,6 +148,20 @@ int parse_language(const char *s, int def) {
streq_ci(s, "pt_pt")) {
return kUiLanguagePtBr;
}
if (streq_ci(s, "it") || streq_ci(s, "italian") ||
streq_ci(s, "it-IT") || streq_ci(s, "it_it") ||
streq_ci(s, "italiano")) {
return kUiLanguageIt;
}
if (streq_ci(s, "ru") || streq_ci(s, "russian") ||
streq_ci(s, "ru-RU") || streq_ci(s, "ru_ru")) {
return kUiLanguageRu;
}
if (streq_ci(s, "pl") || streq_ci(s, "polish") ||
streq_ci(s, "pl-PL") || streq_ci(s, "pl_pl") ||
streq_ci(s, "polski")) {
return kUiLanguagePl;
}
return def;
}
@@ -175,6 +189,12 @@ const char *language_name(int v) {
return "es";
case kUiLanguagePtBr:
return "pt-BR";
case kUiLanguageIt:
return "it";
case kUiLanguageRu:
return "ru";
case kUiLanguagePl:
return "pl";
case kUiLanguageSystem:
default:
return "system";
@@ -600,7 +620,7 @@ std::string settings_serialize(const Settings &in) {
b += "\n";
b += "[toolbox]\n";
b += "# language controls the Toolbox UI and notification language.\n";
b += "# Available values: system, zh-Hans, zh-Hant, en, ja, ko, fr, de, es, pt-BR, ar\n";
b += "# Available values: system, zh-Hans, zh-Hant, en, ja, ko, fr, de, it, es, pt-BR, pl, ru, ar\n";
b += "# system follows the PS5 system language when it can be detected.\n";
b += "language=" + std::string(language_name(in.ui_lang)) + "\n";
b += "\n";
+7 -3
View File
@@ -22,6 +22,9 @@ enum class Lang : int {
Ko = 7,
Es = 8,
PtBr = 9,
It = 10,
Ru = 11,
Pl = 12,
};
/** Active language for tr() (from settings or explicit set). */
@@ -33,15 +36,16 @@ int active_ui_lang_value();
/**
* Apply an explicit UI language setting value.
* 1=zh-Hans, 2=en, 3=ar, 4=zh-Hant, 5=ja, 6=fr, 7=de, 8=ko, 9=es,
* 10=pt-BR. Invalid values fall back to zh-Hans.
* 10=pt-BR, 11=it, 12=ru, 13=pl. Invalid values fall back to zh-Hans.
*/
void apply_ui_lang(int ui_lang);
/**
* Apply the stored UI language setting.
* 0=system, 1=zh-Hans, 2=en, 3=ar, 4=zh-Hant, 5=ja, 6=fr, 7=de, 8=ko,
* 9=es, 10=pt-BR. This is a configuration boundary: system is queried
* here once, then XML and notifications reuse the resolved language.
* 9=es, 10=pt-BR, 11=it, 12=ru, 13=pl. This is a configuration
* boundary: system is queried here once, then XML and notifications
* reuse the resolved language.
*/
void apply_system_or_ui_lang(int ui_lang);
+1 -1
View File
@@ -88,7 +88,7 @@ static OnPressResult id_custom_game_opts(OnPressContext &ctx) {
static OnPressResult id_ui_lang(OnPressContext &ctx) {
int v = atoi(ctx.value.c_str());
if (v < onion::kUiLanguageSystem || v > onion::kUiLanguagePtBr)
if (v < onion::kUiLanguageSystem || v > onion::kUiLanguagePl)
v = onion::kUiLanguageSystem;
if (v == g_settings.ui_lang)
return OnPressResult::EarlyReturn;
+31 -1
View File
@@ -45,6 +45,12 @@ Lang lang_from_notify(onion_notify_language_t language) {
return Lang::Es;
case ONION_NOTIFY_LANG_PT_BR:
return Lang::PtBr;
case ONION_NOTIFY_LANG_IT:
return Lang::It;
case ONION_NOTIFY_LANG_RU:
return Lang::Ru;
case ONION_NOTIFY_LANG_PL:
return Lang::Pl;
case ONION_NOTIFY_LANG_EN:
default:
return Lang::En;
@@ -71,6 +77,12 @@ onion_notify_language_t notify_from_lang(Lang lang) {
return ONION_NOTIFY_LANG_ES;
case Lang::PtBr:
return ONION_NOTIFY_LANG_PT_BR;
case Lang::It:
return ONION_NOTIFY_LANG_IT;
case Lang::Ru:
return ONION_NOTIFY_LANG_RU;
case Lang::Pl:
return ONION_NOTIFY_LANG_PL;
case Lang::En:
default:
return ONION_NOTIFY_LANG_EN;
@@ -97,6 +109,12 @@ Lang lang_from_ui_value(int ui_lang) {
return Lang::Es;
case 10:
return Lang::PtBr;
case 11:
return Lang::It;
case 12:
return Lang::Ru;
case 13:
return Lang::Pl;
case 1:
default:
return Lang::ZhHans;
@@ -123,6 +141,12 @@ const char *locale_id_for_lang(Lang lang) {
return "es";
case Lang::PtBr:
return "pt-BR";
case Lang::It:
return "it";
case Lang::Ru:
return "ru";
case Lang::Pl:
return "pl";
case Lang::En:
default:
return "en";
@@ -162,6 +186,12 @@ int active_ui_lang_value() {
return 9;
case Lang::PtBr:
return 10;
case Lang::It:
return 11;
case Lang::Ru:
return 12;
case Lang::Pl:
return 13;
case Lang::ZhHans:
default:
return 1;
@@ -170,7 +200,7 @@ int active_ui_lang_value() {
void set_lang(Lang lang) {
if (static_cast<int>(lang) < static_cast<int>(Lang::ZhHans) ||
lang > Lang::PtBr)
lang > Lang::Pl)
lang = Lang::ZhHans;
onion_notify_set_language(notify_from_lang(lang));
}
+3
View File
@@ -632,8 +632,11 @@ void append_toolbox_preferences_group(ps5ui::Group& g) {
.item("id_ui_lang_ko", toolbox_i18n::tr("lang.ko"), "8")
.item("id_ui_lang_fr", toolbox_i18n::tr("lang.fr"), "6")
.item("id_ui_lang_de", toolbox_i18n::tr("lang.de"), "7")
.item("id_ui_lang_it", toolbox_i18n::tr("lang.it"), "11")
.item("id_ui_lang_es", toolbox_i18n::tr("lang.es"), "9")
.item("id_ui_lang_pt_br", toolbox_i18n::tr("lang.pt_br"), "10")
.item("id_ui_lang_pl", toolbox_i18n::tr("lang.pl"), "13")
.item("id_ui_lang_ru", toolbox_i18n::tr("lang.ru"), "12")
.item("id_ui_lang_ar", toolbox_i18n::tr("lang.ar"), "3");
},
toolbox_i18n::tr("lang.list.sub"), toolbox_val("id_ui_lang", "0"))
+21
View File
@@ -68,6 +68,12 @@ static int test_notify_language_resolution(void) {
onion_notify_resolve_language(9, 1));
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_PT_BR,
onion_notify_resolve_language(10, 1));
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_IT,
onion_notify_resolve_language(11, 1));
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_RU,
onion_notify_resolve_language(12, 1));
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_PL,
onion_notify_resolve_language(13, 1));
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_AR,
onion_notify_resolve_language(0, 21));
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_JA,
@@ -94,6 +100,12 @@ static int test_notify_language_resolution(void) {
onion_notify_resolve_language(0, 17));
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_PT_BR,
onion_notify_resolve_language(0, 7));
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_IT,
onion_notify_resolve_language(0, 5));
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_RU,
onion_notify_resolve_language(0, 8));
TEST_ASSERT_EQ_INT(ONION_NOTIFY_LANG_PL,
onion_notify_resolve_language(0, 16));
return 0;
}
@@ -130,6 +142,15 @@ static int test_notify_format_localized(void) {
onion_notify_set_language(ONION_NOTIFY_LANG_PT_BR);
format_msg(out, sizeof(out), 1, "notify.priv.unable");
TEST_ASSERT_STREQ("[OnionHEN] Não foi possível elevar os privilégios", out);
onion_notify_set_language(ONION_NOTIFY_LANG_IT);
format_msg(out, sizeof(out), 1, "notify.priv.unable");
TEST_ASSERT_STREQ("[OnionHEN] Impossibile elevare i privilegi", out);
onion_notify_set_language(ONION_NOTIFY_LANG_RU);
format_msg(out, sizeof(out), 1, "notify.priv.unable");
TEST_ASSERT_STREQ("[OnionHEN] Не удалось повысить привилегии", out);
onion_notify_set_language(ONION_NOTIFY_LANG_PL);
format_msg(out, sizeof(out), 1, "notify.priv.unable");
TEST_ASSERT_STREQ("[OnionHEN] Nie udało się podnieść uprawnień", out);
return 0;
}
+3
View File
@@ -430,6 +430,9 @@ static int test_language_new_locales_roundtrip(void) {
{onion::kUiLanguageKo, "ko", "ko-KR"},
{onion::kUiLanguageEs, "es", "es-MX"},
{onion::kUiLanguagePtBr, "pt-BR", "portuguese"},
{onion::kUiLanguageIt, "it", "italiano"},
{onion::kUiLanguageRu, "ru", "ru-RU"},
{onion::kUiLanguagePl, "pl", "polski"},
};
for (const auto &c : cases) {
+55
View File
@@ -190,6 +190,40 @@ static int test_pt_br(void) {
return 0;
}
static int test_it(void) {
set_lang(Lang::It);
TEST_ASSERT_TRUE(
std::strcmp(tr("root.title"), "★Cassetta degli attrezzi OnionHEN") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("cheats.link"), "Trucchi") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("rest.group"), "Modalità riposo") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("lang.it"), "Italiano") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("cheats.enable_fmt"),
"Per %s, attiva/disattiva %s") == 0);
return 0;
}
static int test_ru(void) {
set_lang(Lang::Ru);
TEST_ASSERT_TRUE(std::strcmp(tr("root.title"), "★Инструменты OnionHEN") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("cheats.link"), "Читы") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("rest.group"), "Режим покоя") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("lang.ru"), "Русский") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("cheats.enable_fmt"),
"Для %s: вкл./выкл. %s") == 0);
return 0;
}
static int test_pl(void) {
set_lang(Lang::Pl);
TEST_ASSERT_TRUE(std::strcmp(tr("root.title"), "★Narzędzia OnionHEN") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("cheats.link"), "Cheaty") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("rest.group"), "Tryb spoczynku") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("lang.pl"), "Polski") == 0);
TEST_ASSERT_TRUE(std::strcmp(tr("cheats.enable_fmt"),
"Dla %s: włącz/wyłącz %s") == 0);
return 0;
}
static int test_apply_ui_lang(void) {
apply_ui_lang(2);
TEST_ASSERT_TRUE(active_lang() == Lang::En);
@@ -221,6 +255,15 @@ static int test_apply_ui_lang(void) {
apply_ui_lang(10);
TEST_ASSERT_TRUE(active_lang() == Lang::PtBr);
TEST_ASSERT_EQ_INT(10, active_ui_lang_value());
apply_ui_lang(11);
TEST_ASSERT_TRUE(active_lang() == Lang::It);
TEST_ASSERT_EQ_INT(11, active_ui_lang_value());
apply_ui_lang(12);
TEST_ASSERT_TRUE(active_lang() == Lang::Ru);
TEST_ASSERT_EQ_INT(12, active_ui_lang_value());
apply_ui_lang(13);
TEST_ASSERT_TRUE(active_lang() == Lang::Pl);
TEST_ASSERT_EQ_INT(13, active_ui_lang_value());
apply_ui_lang(99); /* invalid → zh */
TEST_ASSERT_TRUE(active_lang() == Lang::ZhHans);
return 0;
@@ -272,6 +315,15 @@ static int test_format(void) {
set_lang(Lang::PtBr);
TEST_ASSERT_TRUE(format("cheats.enable_fmt", "Game", "God") ==
"Para Game, ativar/desativar God");
set_lang(Lang::It);
TEST_ASSERT_TRUE(format("cheats.enable_fmt", "Game", "God") ==
"Per Game, attiva/disattiva God");
set_lang(Lang::Ru);
TEST_ASSERT_TRUE(format("cheats.enable_fmt", "Game", "God") ==
"Для Game: вкл./выкл. God");
set_lang(Lang::Pl);
TEST_ASSERT_TRUE(format("cheats.enable_fmt", "Game", "God") ==
"Dla Game: włącz/wyłącz God");
return 0;
}
@@ -287,6 +339,9 @@ extern "C" int test_toolbox_i18n_suite(void) {
fails += onion_test_run("i18n.ko", test_ko);
fails += onion_test_run("i18n.es", test_es);
fails += onion_test_run("i18n.pt_br", test_pt_br);
fails += onion_test_run("i18n.it", test_it);
fails += onion_test_run("i18n.ru", test_ru);
fails += onion_test_run("i18n.pl", test_pl);
fails += onion_test_run("i18n.apply_ui_lang", test_apply_ui_lang);
fails += onion_test_run("i18n.system_lang_host_fallback",
test_system_lang_host_fallback);