mirror of
https://github.com/SteamDeckHomebrew/decky-loader.git
synced 2026-06-20 10:11:22 +00:00
Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 22d579512d | |||
| caf4d75a06 | |||
| a43e4328df | |||
| 0ede024771 | |||
| 193f97d9fe | |||
| 38c96ea96a | |||
| dd130dbbd7 | |||
| 9233495cac | |||
| e4001966e8 | |||
| c52f1cd038 | |||
| 2ba9bce3de | |||
| d4a76da78c | |||
| c7e4eb1b3f | |||
| 5460f95eac | |||
| 3ae4ceb431 | |||
| 7a725935fc | |||
| 9437d7ed99 | |||
| 34cf24f7c0 | |||
| 5a9959f70f | |||
| 96069d3299 | |||
| b4c90683aa | |||
| 6993516ccb | |||
| 37c1a0e964 | |||
| 6d086fb5d5 | |||
| 7c805e9b80 | |||
| 6b3f9e4a9e | |||
| dea08868d3 |
@@ -12,7 +12,7 @@ body:
|
||||
- label: I have searched existing issues
|
||||
- label: This issue is not a duplicate of an existing one
|
||||
- label: I have checked the [common issues section in the readme file](https://github.com/SteamDeckHomebrew/decky-loader#-common-issues)
|
||||
- label: I have attached logs to this bug report (failure to include logs will mean your issue will not be responded too).
|
||||
- label: I have attached logs to this bug report (failure to include logs will mean your issue may not be responded to).
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Steam Deck Homebrew Discord Server
|
||||
url: https://discord.gg/ZU74G2NJzk
|
||||
url: https://decky.xyz/discord
|
||||
about: Please ask and answer questions here.
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
name: Builder Win
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build-win:
|
||||
name: Build PluginLoader for Win
|
||||
runs-on: windows-2022
|
||||
|
||||
steps:
|
||||
- name: Checkout 🧰
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up NodeJS 18 💎
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
|
||||
- name: Set up Python 3.11.4 🐍
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "3.11.4"
|
||||
|
||||
- name: Install Python dependencies ⬇️
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install pyinstaller==5.13.0
|
||||
pip install -r requirements.txt
|
||||
|
||||
- name: Install JS dependencies ⬇️
|
||||
working-directory: ./frontend
|
||||
run: |
|
||||
npm i -g pnpm
|
||||
pnpm i --frozen-lockfile
|
||||
|
||||
- name: Build JS Frontend 🛠️
|
||||
working-directory: ./frontend
|
||||
run: pnpm run build
|
||||
|
||||
- name: Build Python Backend 🛠️
|
||||
run: pyinstaller --noconfirm --onefile --name "PluginLoader" --add-data "./backend/static;/static" --add-data "./backend/locales;/locales" --add-data "./backend/legacy;/legacy" --add-data "./plugin;/plugin" --hidden-import=sqlite3 ./backend/main.py
|
||||
|
||||
- name: Build Python Backend (noconsole) 🛠️
|
||||
run: pyinstaller --noconfirm --noconsole --onefile --name "PluginLoader_noconsole" --add-data "./backend/static;/static" --add-data "./backend/locales;/locales" --add-data "./backend/legacy;/legacy" --add-data "./plugin;/plugin" --hidden-import=sqlite3 ./backend/main.py
|
||||
|
||||
- name: Upload package artifact ⬆️
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: PluginLoader Win
|
||||
path: |
|
||||
./dist/PluginLoader.exe
|
||||
./dist/PluginLoader_noconsole.exe
|
||||
|
||||
+23
-49
@@ -31,7 +31,7 @@ permissions:
|
||||
jobs:
|
||||
build:
|
||||
name: Build PluginLoader
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: Print input
|
||||
@@ -47,15 +47,32 @@ jobs:
|
||||
with:
|
||||
node-version: 18
|
||||
|
||||
- name: Set up Python 3.10.2 🐍
|
||||
- name: Set up Python 3.10.6 🐍
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "3.10.2"
|
||||
|
||||
python-version: "3.10.6"
|
||||
|
||||
- name: Upgrade SQLite 3 binary version to 3.42.0 🧑💻
|
||||
run: >
|
||||
cd /tmp &&
|
||||
wget "https://www.sqlite.org/2023/sqlite-autoconf-3420000.tar.gz" &&
|
||||
tar -xvzf sqlite-autoconf-3420000.tar.gz &&
|
||||
cd /tmp/sqlite-autoconf-3420000 &&
|
||||
./configure --prefix=/usr --disable-static CFLAGS="-g" CPPFLAGS="$CPPFLAGS -DSQLITE_ENABLE_COLUMN_METADATA=1 \
|
||||
-DSQLITE_ENABLE_UNLOCK_NOTIFY -DSQLITE_ENABLE_DBSTAT_VTAB=1 -DSQLITE_ENABLE_FTS3_TOKENIZER=1 \
|
||||
-DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_SECURE_DELETE -DSQLITE_ENABLE_STMTVTAB -DSQLITE_MAX_VARIABLE_NUMBER=250000 \
|
||||
-DSQLITE_MAX_EXPR_DEPTH=10000 -DSQLITE_ENABLE_MATH_FUNCTIONS" &&
|
||||
make &&
|
||||
sudo make install &&
|
||||
sudo cp /usr/lib/libsqlite3.so /usr/lib/x86_64-linux-gnu/ &&
|
||||
sudo cp /usr/lib/libsqlite3.so.0 /usr/lib/x86_64-linux-gnu/ &&
|
||||
sudo cp /usr/lib/libsqlite3.so.0.8.6 /usr/lib/x86_64-linux-gnu/ &&
|
||||
rm -r /tmp/sqlite-autoconf-3420000
|
||||
|
||||
- name: Install Python dependencies ⬇️
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install pyinstaller==5.5
|
||||
pip install pyinstaller==5.13.0
|
||||
[ -f requirements.txt ] && pip install -r requirements.txt
|
||||
|
||||
- name: Install JS dependencies ⬇️
|
||||
@@ -69,7 +86,7 @@ jobs:
|
||||
run: pnpm run build
|
||||
|
||||
- name: Build Python Backend 🛠️
|
||||
run: pyinstaller --noconfirm --onefile --name "PluginLoader" --add-data ./backend/static:/static --add-data ./backend/locales:/locales --add-data ./backend/legacy:/legacy --add-data ./plugin:/plugin ./backend/*.py
|
||||
run: pyinstaller --noconfirm --onefile --name "PluginLoader" --add-data ./backend/static:/static --add-data ./backend/locales:/locales --add-data ./backend/legacy:/legacy --add-data ./plugin:/plugin --hidden-import=sqlite3 ./backend/*.py
|
||||
|
||||
- name: Upload package artifact ⬆️
|
||||
if: ${{ !env.ACT }}
|
||||
@@ -84,49 +101,6 @@ jobs:
|
||||
with:
|
||||
path: ./dist/PluginLoader
|
||||
|
||||
build-win:
|
||||
name: Build PluginLoader for Win
|
||||
runs-on: windows-2022
|
||||
|
||||
steps:
|
||||
- name: Checkout 🧰
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up NodeJS 18 💎
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
|
||||
- name: Set up Python 3.10.2 🐍
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "3.10.2"
|
||||
|
||||
- name: Install Python dependencies ⬇️
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install pyinstaller==5.5
|
||||
pip install -r requirements.txt
|
||||
|
||||
- name: Install JS dependencies ⬇️
|
||||
working-directory: ./frontend
|
||||
run: |
|
||||
npm i -g pnpm
|
||||
pnpm i --frozen-lockfile
|
||||
|
||||
- name: Build JS Frontend 🛠️
|
||||
working-directory: ./frontend
|
||||
run: pnpm run build
|
||||
|
||||
- name: Build Python Backend 🛠️
|
||||
run: pyinstaller --noconfirm --onefile --name "PluginLoader" --add-data "./backend/static;/static" --add-data "./backend/locales;/locales" --add-data "./backend/legacy;/legacy" --add-data "./plugin;/plugin" ./backend/main.py
|
||||
|
||||
- name: Upload package artifact ⬆️
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: PluginLoader Win
|
||||
path: ./dist/PluginLoader.exe
|
||||
|
||||
release:
|
||||
name: Release stable version of the package
|
||||
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release == 'release' }}
|
||||
|
||||
@@ -35,6 +35,7 @@ For more information about Decky Loader as well as documentation and development
|
||||
### 🤔 Common Issues
|
||||
|
||||
- Syncthing may use port 8080 on Steam Deck, which Decky Loader needs to function. If you are using Syncthing as a service, please change its port to something else.
|
||||
- 8384 is the recommended port for Syncthing.
|
||||
- If you are using any software that uses port 1337 or 8080, please change its port to something else or uninstall it.
|
||||
- Sometimes Decky will disappear on SteamOS updates. This can easily be fixed by just re-running the installer and installing the stable branch again. If this doesn't work, try installing the prerelease instead. If that doesn't work, then [check the existing issues](https://github.com/SteamDeckHomebrew/decky-loader/issues) and if there isn't one then you can [file a new issue](https://github.com/SteamDeckHomebrew/decky-loader/issues/new?assignees=&labels=bug&template=bug_report.yml&title=%5BBUG%5D+%3Ctitle%3E).
|
||||
|
||||
|
||||
+6
-4
@@ -139,6 +139,8 @@ class PluginBrowser:
|
||||
|
||||
# Check if plugin is installed
|
||||
isInstalled = False
|
||||
# Preserve plugin order before removing plugin (uninstall alters the order and removes the plugin from the list)
|
||||
current_plugin_order = self.settings.getSetting("pluginOrder")[:]
|
||||
if self.loader.watcher:
|
||||
self.loader.watcher.disabled = True
|
||||
try:
|
||||
@@ -191,16 +193,16 @@ class PluginBrowser:
|
||||
self.loader.plugins[name].stop()
|
||||
self.loader.plugins.pop(name, None)
|
||||
await sleep(1)
|
||||
|
||||
current_plugin_order = self.settings.getSetting("pluginOrder")
|
||||
current_plugin_order.append(name)
|
||||
if not isInstalled:
|
||||
current_plugin_order = self.settings.getSetting("pluginOrder")
|
||||
current_plugin_order.append(name)
|
||||
self.settings.setSetting("pluginOrder", current_plugin_order)
|
||||
logger.debug("Plugin %s was added to the pluginOrder setting", name)
|
||||
self.loader.import_plugin(path.join(plugin_dir, "main.py"), plugin_folder)
|
||||
else:
|
||||
logger.fatal(f"Failed Downloading Remote Binaries")
|
||||
else:
|
||||
self.log.fatal(f"SHA-256 Mismatch!!!! {name} (Version: {version})")
|
||||
logger.fatal(f"SHA-256 Mismatch!!!! {name} (Version: {version})")
|
||||
if self.loader.watcher:
|
||||
self.loader.watcher.disabled = False
|
||||
|
||||
|
||||
@@ -14,7 +14,27 @@
|
||||
},
|
||||
"FilePickerIndex": {
|
||||
"folder": {
|
||||
"select": "Použít tuto složku"
|
||||
"select": "Použít tuto složku",
|
||||
"label": "Složka",
|
||||
"show_more": "Zobrazit více souborů"
|
||||
},
|
||||
"filter": {
|
||||
"created_asce": "Vytvořeno (Nejstarší)",
|
||||
"created_desc": "Vytvořeno (Nejnovější)",
|
||||
"modified_asce": "Upraveno (Nejstarší)",
|
||||
"modified_desc": "Upraveno (Nejnovější)",
|
||||
"name_asce": "Z-A",
|
||||
"name_desc": "A-Z",
|
||||
"size_asce": "Velikost (Nejmenší)",
|
||||
"size_desc": "Velikost (Největší)"
|
||||
},
|
||||
"files": {
|
||||
"show_hidden": "Zobrazit skryté soubory",
|
||||
"all_files": "Všechny soubory",
|
||||
"file_type": "Typ souboru"
|
||||
},
|
||||
"file": {
|
||||
"select": "Vybrat tento soubor"
|
||||
}
|
||||
},
|
||||
"PluginView": {
|
||||
@@ -54,7 +74,7 @@
|
||||
},
|
||||
"MultiplePluginsInstallModal": {
|
||||
"title": {
|
||||
"mixed_one": "Upravit 1 plugin",
|
||||
"mixed_one": "Upravit {{count}} plugin",
|
||||
"mixed_few": "Upravit {{count}} pluginů",
|
||||
"mixed_other": "Upravit {{count}} pluginů",
|
||||
"reinstall_one": "Přeinstalovat 1 plugin",
|
||||
@@ -129,9 +149,6 @@
|
||||
"label_url": "Instalovat plugin z URL",
|
||||
"label_zip": "Instalovat plugin ze ZIP souboru"
|
||||
},
|
||||
"toast_zip": {
|
||||
"title": "Decky"
|
||||
},
|
||||
"valve_internal": {
|
||||
"desc1": "Zapíná interní vývojářské menu Valve.",
|
||||
"desc2": "Nedotýkejte se ničeho v této nabídce, pokud nevíte, co děláte.",
|
||||
@@ -160,6 +177,11 @@
|
||||
},
|
||||
"updates": {
|
||||
"header": "Aktualizace"
|
||||
},
|
||||
"notifications": {
|
||||
"decky_updates_label": "Dostupná aktualizace Decky",
|
||||
"header": "Notifikace",
|
||||
"plugin_updates_label": "Dostupná aktualizace pluginu"
|
||||
}
|
||||
},
|
||||
"SettingsIndex": {
|
||||
@@ -193,7 +215,11 @@
|
||||
"alph_desc": "Abecedně (A do Z)",
|
||||
"title": "Procházet"
|
||||
},
|
||||
"store_testing_cta": "Zvažte prosím testování nových pluginů, pomůžete tím týmu Decky Loader!"
|
||||
"store_testing_cta": "Zvažte prosím testování nových pluginů, pomůžete tím týmu Decky Loader!",
|
||||
"store_testing_warning": {
|
||||
"desc": "Tento kanál obchodu můžete použít k testování nejnovějších verzí pluginů. Nezapomeňte zanechat zpětnou vazbu na GitHubu, aby bylo možné plugin aktualizovat pro všechny uživatele.",
|
||||
"label": "Vítejte na testovacím kanálu obchodu"
|
||||
}
|
||||
},
|
||||
"StoreSelect": {
|
||||
"custom_store": {
|
||||
@@ -221,5 +247,21 @@
|
||||
"decky_updates": "Aktualizace Decky",
|
||||
"patch_notes_desc": "Poznámky k verzi",
|
||||
"no_patch_notes_desc": "žádné poznámky pro tuto verzi"
|
||||
},
|
||||
"DropdownMultiselect": {
|
||||
"button": {
|
||||
"back": "Zpět"
|
||||
}
|
||||
},
|
||||
"FilePickerError": {
|
||||
"errors": {
|
||||
"file_not_found": "Zadaná cesta není platná. Zkontrolujte ji a zadejte znovu správně.",
|
||||
"unknown": "Nastala neznámá chyba. Nezpracovaná chyba je: {{raw_error}}",
|
||||
"perm_denied": "Nemáte přístup k zadanému adresáři. Zkontrolujte, zda jako uživatel (deck na Steam Decku) máte odpovídající oprávnění pro přístup k dané složce/souboru."
|
||||
}
|
||||
},
|
||||
"TitleView": {
|
||||
"settings_desc": "Otevřít nastavení Decky",
|
||||
"decky_store_desc": "Otevřít obchod Decky"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,9 +92,6 @@
|
||||
"button_install": "Installieren",
|
||||
"label_url": "Installiere Erweiterung via URL"
|
||||
},
|
||||
"toast_zip": {
|
||||
"title": "Decky"
|
||||
},
|
||||
"valve_internal": {
|
||||
"desc2": "Fasse in diesem Menü nichts an, es sei denn, du weißt was du tust.",
|
||||
"label": "Aktiviere Valve-internes Menü",
|
||||
|
||||
+87
-24
@@ -13,14 +13,17 @@
|
||||
"label_url": "Εγκατάσταση επέκτασης απο URL",
|
||||
"label_zip": "Εγκατάσταση επέκτασης από αρχείο ZIP"
|
||||
},
|
||||
"toast_zip": {
|
||||
"body": "Η εγκατάσταση απέτυχε. Μόνο αρχεία ZIP επιτρέπονται."
|
||||
},
|
||||
"valve_internal": {
|
||||
"desc1": "Ενεργοποιεί το μενού προγραμματιστή της Valve.",
|
||||
"desc2": "Μην αγγίξετε τίποτα σε αυτό το μενού εκτός και αν ξέρετε τι κάνει.",
|
||||
"label": "Ενεργοποιήση εσωτερικού μενού Valve"
|
||||
}
|
||||
},
|
||||
"cef_console": {
|
||||
"button": "Άνοιγμα Κονσόλας",
|
||||
"desc": "Ανοίγει την Κονσόλα CEF. Χρήσιμο μόνο για εντοπισμό σφαλμάτων. Τα πράγματα εδώ είναι δυνητικά επικίνδυνα και θα πρέπει να χρησιμοποιηθεί μόνο εάν είστε προγραμματιστής επεκτάσεων, ή κατευθυνθήκατε εδώ από έναν προγραμματιστή.",
|
||||
"label": "Κονσόλα CEF"
|
||||
},
|
||||
"header": "Άλλα"
|
||||
},
|
||||
"BranchSelect": {
|
||||
"update_channel": {
|
||||
@@ -32,8 +35,8 @@
|
||||
},
|
||||
"Developer": {
|
||||
"5secreload": "Γίνεται επαναφόρτωση σε 5 δευτερόλεπτα",
|
||||
"disabling": "Γίνεται απενεργοποίηση",
|
||||
"enabling": "Γίνεται ενεργοποίηση"
|
||||
"disabling": "Γίνεται απενεργοποίηση των React DevTools",
|
||||
"enabling": "Γίνεται ενεργοποίηση των React DevTools"
|
||||
},
|
||||
"PluginCard": {
|
||||
"plugin_no_desc": "Δεν υπάρχει περιγραφή.",
|
||||
@@ -69,14 +72,16 @@
|
||||
"reload": "Επαναφόρτωση",
|
||||
"uninstall": "Απεγκατάσταση",
|
||||
"update_to": "Ενημέρωση σε {{name}}",
|
||||
"update_all_one": "",
|
||||
"update_all_other": ""
|
||||
"update_all_one": "Ενημέρωση 1 επέκτασης",
|
||||
"update_all_other": "Ενημέρωση {{count}} επεκτάσεων",
|
||||
"show": "Γρήγορη πρόσβαση: Εμφάνιση",
|
||||
"hide": "Γρήγορη πρόσβαση: Απόκρυψη"
|
||||
},
|
||||
"PluginLoader": {
|
||||
"decky_title": "Decky",
|
||||
"decky_update_available": "Ενημέρωση σε {{tag_name}} διαθέσιμη!",
|
||||
"error": "Σφάλμα",
|
||||
"plugin_error_uninstall": "Πηγαίντε στο <0></0> στο μενού του Decky για να απεγκαταστήσετε αυτή την επέκταση.",
|
||||
"plugin_error_uninstall": "Η φόρτωση του {{name}} προκάλεσε το παραπάνω σφάλμα. Αυτό συνήθως σημαίνει ότι η επέκταση απαιτεί ενημέρωση για τη νέα έκδοση του SteamUI. Ελέγξτε εάν υπάρχει ενημέρωση ή αξιολογήστε την απεγκαταστήσετε της επέκτασης στις ρυθμίσεις του Decky, στην ενότητα Επεκτάσεις.",
|
||||
"plugin_load_error": {
|
||||
"message": "Σφάλμα στη φόρτωση της επέκτασης {{name}}",
|
||||
"toast": "Σφάλμα φόρτωσης {{name}}"
|
||||
@@ -86,8 +91,8 @@
|
||||
"desc": "Σίγουρα θέλετε να απεγκαταστήσετε το {{name}};",
|
||||
"title": "Απεγκατάσταση {{name}}"
|
||||
},
|
||||
"plugin_update_one": "",
|
||||
"plugin_update_other": ""
|
||||
"plugin_update_one": "Διαθέσιμη ενημέρωση για 1 επέκταση!",
|
||||
"plugin_update_other": "Διαθέσιμες ενημερώσεις για {{count}} επεκτάσεις!"
|
||||
},
|
||||
"RemoteDebugging": {
|
||||
"remote_cef": {
|
||||
@@ -111,6 +116,11 @@
|
||||
},
|
||||
"beta": {
|
||||
"header": "Συμμετοχή στη Beta"
|
||||
},
|
||||
"notifications": {
|
||||
"decky_updates_label": "Διαθέσιμη ενημέρωση του Decky",
|
||||
"header": "Ειδοποιήσεις",
|
||||
"plugin_updates_label": "Διαθέσιμες ενημερώσεις επεκτάσεων"
|
||||
}
|
||||
},
|
||||
"SettingsIndex": {
|
||||
@@ -121,7 +131,7 @@
|
||||
"Store": {
|
||||
"store_contrib": {
|
||||
"label": "Συνεισφέροντας",
|
||||
"desc": "Αν θέλετε να συνεισφέρετε στο κατάστημα επεκτάσεων του Decky, τσεκάρετε το SteamDeckHomebrew/decky-plugin-template repository στο GitHub. Πληροφοριές σχετικά με τη δημιουργία και τη διανομή επεκτάσεων είναι διαθέσιμες στο README."
|
||||
"desc": "Αν θέλετε να συνεισφέρετε στο κατάστημα επεκτάσεων του Decky, τσεκάρετε το SteamDeckHomebrew/decky-plugin-template repository στο GitHub. Πληροφορίες σχετικά με τη δημιουργία και τη διανομή επεκτάσεων είναι διαθέσιμες στο README."
|
||||
},
|
||||
"store_filter": {
|
||||
"label": "Φίλτρο",
|
||||
@@ -144,7 +154,11 @@
|
||||
"alph_desc": "Αλφαβητικά (Α σε Ζ)",
|
||||
"title": "Περιήγηση"
|
||||
},
|
||||
"store_testing_cta": "Παρακαλώ σκεφτείτε να τεστάρετε νέες επεκτάσεις για να βοηθήσετε την ομάδα του Decky Loader!"
|
||||
"store_testing_cta": "Παρακαλώ σκεφτείτε να τεστάρετε νέες επεκτάσεις για να βοηθήσετε την ομάδα του Decky Loader!",
|
||||
"store_testing_warning": {
|
||||
"desc": "Μπορείτε να χρησιμοποιήσετε αυτό το κανάλι του καταστήματος για να δοκιμάσετε τις νεότερες εκδόσεις των επεκτάσεων. Φροντίστε να αφήσετε σχόλια στο GitHub, ώστε να βοηθήσετε στην ενημέρωση της εκάστοτε επέκταση για όλους τους χρήστες.",
|
||||
"label": "Καλώς ήρθατε στο Δοκιμαστικό Κανάλι τους Καταστήματος"
|
||||
}
|
||||
},
|
||||
"StoreSelect": {
|
||||
"custom_store": {
|
||||
@@ -175,23 +189,72 @@
|
||||
},
|
||||
"FilePickerIndex": {
|
||||
"folder": {
|
||||
"select": "Χρησιμοποιήστε αυτό το φάκελο"
|
||||
"select": "Χρησιμοποιήστε αυτό το φάκελο",
|
||||
"label": "Φάκελος",
|
||||
"show_more": "Εμφάνιση περισσότερων αρχείων"
|
||||
},
|
||||
"filter": {
|
||||
"modified_asce": "Τροποποιήθηκε (Παλαιότερο)",
|
||||
"modified_desc": "Τροποποιήθηκε (Νεότερο)",
|
||||
"created_desc": "Δημιουργήθηκε (Νεότερο)",
|
||||
"name_asce": "Z-A",
|
||||
"name_desc": "A-Z",
|
||||
"created_asce": "Δημιουργήθηκε (Παλαιότερο)",
|
||||
"size_asce": "Μέγεθος (Μικρότερο)",
|
||||
"size_desc": "Μέγεθος (Μεγαλύτερο)"
|
||||
},
|
||||
"file": {
|
||||
"select": "Επιλογή αυτού του αρχείου"
|
||||
},
|
||||
"files": {
|
||||
"show_hidden": "Εμφάνιση Κρυφών Αρχείων",
|
||||
"all_files": "Όλα Τα Αρχεία",
|
||||
"file_type": "Τύπος Αρχείου"
|
||||
}
|
||||
},
|
||||
"PluginView": {
|
||||
"hidden_one": "",
|
||||
"hidden_other": ""
|
||||
"hidden_one": "1 επέκταση είναι κρυμμένη σε αυτήν τη λίστα",
|
||||
"hidden_other": "{{count}} επεκτάσεις είναι κρυμμένες σε αυτήν τη λίστα"
|
||||
},
|
||||
"MultiplePluginsInstallModal": {
|
||||
"title": {
|
||||
"mixed_one": "",
|
||||
"mixed_other": "",
|
||||
"update_one": "",
|
||||
"update_other": "",
|
||||
"reinstall_one": "",
|
||||
"reinstall_other": "",
|
||||
"install_one": "",
|
||||
"install_other": ""
|
||||
"mixed_one": "Τροποποίηση 1 επέκτασης",
|
||||
"mixed_other": "Τροποποίηση {{count}} επεκτάσεων",
|
||||
"update_one": "Ενημέρωση 1 επέκτασης",
|
||||
"update_other": "Ενημέρωση {{count}} επεκτάσεων",
|
||||
"reinstall_one": "Επανεγκατάσταση 1 επέκτασης",
|
||||
"reinstall_other": "Επανεγκατάσταση {{count}} επεκτάσεων",
|
||||
"install_one": "Εγκατάσταση 1 επέκτασης",
|
||||
"install_other": "Εγκατάσταση {{count}} επεκτάσεων"
|
||||
},
|
||||
"confirm": "Είστε βέβαιοι ότι θέλετε να κάνετε τις ακόλουθες τροποποιήσεις;",
|
||||
"description": {
|
||||
"reinstall": "Επανεγκατάσταση {{name}} {{version}}",
|
||||
"update": "Ενημέρωση {{name}} to {{version}}",
|
||||
"install": "Εγκατάσταση {{name}} {{version}}"
|
||||
},
|
||||
"ok_button": {
|
||||
"idle": "Επιβεβαίωση",
|
||||
"loading": "Φόρτωση"
|
||||
}
|
||||
},
|
||||
"PluginListLabel": {
|
||||
"hidden": "Κρυφό στο μενού γρήγορης πρόσβασης"
|
||||
},
|
||||
"TitleView": {
|
||||
"settings_desc": "Άνοιγμα Ρυθμίσεων Decky",
|
||||
"decky_store_desc": "Άνοιγμα Καταστήματος Decky"
|
||||
},
|
||||
"DropdownMultiselect": {
|
||||
"button": {
|
||||
"back": "Πίσω"
|
||||
}
|
||||
},
|
||||
"FilePickerError": {
|
||||
"errors": {
|
||||
"file_not_found": "Η καθορισμένη διαδρομή δεν είναι έγκυρη. Παρακαλούμε ελέγξτε τη και εισάγετέ τη ξανά σωστά.",
|
||||
"perm_denied": "Δεν έχετε πρόσβαση στην καθορισμένη διαδρομή. Ελέγξτε εάν ο χρήστης σας (deck στο Steam Deck) έχει τα αντίστοιχα δικαιώματα πρόσβασης στον καθορισμένο φάκελο/αρχείο.",
|
||||
"unknown": "Παρουσιάστηκε άγνωστο σφάλμα. Το σφάλμα είναι: {{raw_error}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,7 +220,11 @@
|
||||
"alph_desc": "Alphabetical (A to Z)",
|
||||
"title": "Browse"
|
||||
},
|
||||
"store_testing_cta": "Please consider testing new plugins to help the Decky Loader team!"
|
||||
"store_testing_cta": "Please consider testing new plugins to help the Decky Loader team!",
|
||||
"store_testing_warning": {
|
||||
"desc": "You can use this store channel to test bleeding-edge plugin versions. Be sure to leave feedback on GitHub so the plugin can be updated for all users.",
|
||||
"label": "Welcome to the Testing Store Channel"
|
||||
}
|
||||
},
|
||||
"StoreSelect": {
|
||||
"custom_store": {
|
||||
@@ -234,6 +238,10 @@
|
||||
"testing": "Testing"
|
||||
}
|
||||
},
|
||||
"TitleView": {
|
||||
"decky_store_desc": "Open Decky Store",
|
||||
"settings_desc": "Open Decky Settings"
|
||||
},
|
||||
"Updater": {
|
||||
"decky_updates": "Decky Updates",
|
||||
"no_patch_notes_desc": "no patch notes for this version",
|
||||
|
||||
@@ -13,9 +13,6 @@
|
||||
"label": "Activar menú interno de Valve",
|
||||
"desc1": "Activa el menú interno de desarrollo de Valve."
|
||||
},
|
||||
"toast_zip": {
|
||||
"body": "¡Ha fallado la instalación! Solo se permiten archivos ZIP."
|
||||
},
|
||||
"cef_console": {
|
||||
"button": "Abrir consola",
|
||||
"label": "Consola CEF",
|
||||
|
||||
@@ -0,0 +1,260 @@
|
||||
{
|
||||
"BranchSelect": {
|
||||
"update_channel": {
|
||||
"prerelease": "Esijulkaisu",
|
||||
"testing": "Testiversio",
|
||||
"stable": "Vakaa versio",
|
||||
"label": "Päivityskanava"
|
||||
}
|
||||
},
|
||||
"Developer": {
|
||||
"5secreload": "Uudelleenladataan 5 sekunin kuluttua",
|
||||
"disabling": "Poistetaan React DevTools käytöstä",
|
||||
"enabling": "Otetaan React DevTools käyttöön"
|
||||
},
|
||||
"FilePickerError": {
|
||||
"errors": {
|
||||
"perm_denied": "Sinulla ei ole käyttöoikeutta määritettyyn hakemistoon. Tarkista, onko käyttäjälläsi (käyttäjä 'deck' Steam Deckillä) vastaavat oikeudet käyttää määritettyä kansiota/tiedostoa.",
|
||||
"unknown": "Tapahtui tuntematon virhe. Raaka virhe on: {{raw_error}}",
|
||||
"file_not_found": "Määritetty polku ei kelpaa. Tarkista se ja kirjoita se uudelleen oikein."
|
||||
}
|
||||
},
|
||||
"FilePickerIndex": {
|
||||
"file": {
|
||||
"select": "Valitse tämä tiedosto"
|
||||
},
|
||||
"files": {
|
||||
"all_files": "Kaikki tiedostot",
|
||||
"file_type": "Tiedostotyyppi",
|
||||
"show_hidden": "Näytä piilotetut tiedostot"
|
||||
},
|
||||
"filter": {
|
||||
"created_desc": "Luotu (uusin ensin)",
|
||||
"modified_asce": "Muokattu (vanhin)",
|
||||
"modified_desc": "Muokattu (uusin)",
|
||||
"name_asce": "Z-A",
|
||||
"name_desc": "A-Z",
|
||||
"size_asce": "Koko (pienin ensin)",
|
||||
"size_desc": "Koko (suurin ensin)",
|
||||
"created_asce": "Luotu (vanhin ensin)"
|
||||
},
|
||||
"folder": {
|
||||
"label": "Kansio",
|
||||
"select": "Käytä tätä kansiota",
|
||||
"show_more": "Näytä lisää tiedostoja"
|
||||
}
|
||||
},
|
||||
"MultiplePluginsInstallModal": {
|
||||
"confirm": "Haluatko varmasti tehdä seuraavat muutokset?",
|
||||
"description": {
|
||||
"reinstall": "Uudelleenasenna {{name}} {{version}}",
|
||||
"update": "Päivitä {{name}} versioon {{version}}",
|
||||
"install": "Asenna {{name}} {{version}}"
|
||||
},
|
||||
"ok_button": {
|
||||
"idle": "Vahvista",
|
||||
"loading": "Ladataan"
|
||||
},
|
||||
"title": {
|
||||
"install_one": "Asenna yksi laajennus",
|
||||
"install_other": "Asenna {{count}} laajennusta",
|
||||
"update_one": "Päivitä yksi laajennus",
|
||||
"update_other": "Päivitä {{count}} laajennusta",
|
||||
"mixed_one": "Muuta yhtä laajennusta",
|
||||
"mixed_other": "Muuta {{count}} laajennusta",
|
||||
"reinstall_one": "Uudelleenasenna yksi laajennus",
|
||||
"reinstall_other": "Uudelleenasenna {{count}} laajennusta"
|
||||
}
|
||||
},
|
||||
"PluginCard": {
|
||||
"plugin_install": "Asenna",
|
||||
"plugin_no_desc": "Ei kuvausta.",
|
||||
"plugin_version_label": "Laajennuksen versio",
|
||||
"plugin_full_access": "Tällä laajennuksella on täysi pääsy Steam Deckkiisi."
|
||||
},
|
||||
"PluginInstallModal": {
|
||||
"install": {
|
||||
"button_idle": "Asenna",
|
||||
"button_processing": "Asennetaan",
|
||||
"desc": "Haluatko varmasti asentaa {{artifact}} {{version}}?",
|
||||
"title": "Asenna {{artifact}}"
|
||||
},
|
||||
"no_hash": "Tällä laajennuksella ei ole hashia, asennat sen omalla vastuullasi.",
|
||||
"reinstall": {
|
||||
"button_idle": "Uudelleenasenna",
|
||||
"button_processing": "Uudelleenasennetaan",
|
||||
"desc": "Haluatko varmasti uudelleenasentaa {{artifact}} {{version}}?",
|
||||
"title": "Uudelleenasenna {{artifact}}"
|
||||
},
|
||||
"update": {
|
||||
"button_idle": "Päivitä",
|
||||
"button_processing": "Päivitetään",
|
||||
"desc": "Haluatko varmasti päivittää {{artifact}} {{version}}?",
|
||||
"title": "Päivitä {{artifact}}"
|
||||
}
|
||||
},
|
||||
"DropdownMultiselect": {
|
||||
"button": {
|
||||
"back": "Takaisin"
|
||||
}
|
||||
},
|
||||
"PluginListIndex": {
|
||||
"no_plugin": "Ei asennettuja laajennuksia!",
|
||||
"plugin_actions": "Laajennustoiminnot",
|
||||
"reinstall": "Uudelleenasenna",
|
||||
"reload": "Lataa uudelleen",
|
||||
"uninstall": "Poista asennus",
|
||||
"update_all_one": "Päivitä yksi laajennus",
|
||||
"update_all_other": "Päivitä {{count}} laajennusta",
|
||||
"update_to": "Päivitä versioon {{name}}",
|
||||
"hide": "Pikavalikko: Piilota",
|
||||
"show": "Pikavalikko: Näytä"
|
||||
},
|
||||
"PluginListLabel": {
|
||||
"hidden": "Piilotettu pikavalikosta"
|
||||
},
|
||||
"PluginLoader": {
|
||||
"decky_title": "Decky",
|
||||
"decky_update_available": "Päivitys versioon {{tag_name}} on saatavilla!",
|
||||
"error": "Virhe",
|
||||
"plugin_load_error": {
|
||||
"message": "Virhe ladattaessa {{name}}-laajennusta",
|
||||
"toast": "Virhe ladattaessa {{name}}"
|
||||
},
|
||||
"plugin_uninstall": {
|
||||
"button": "Poista asennus",
|
||||
"desc": "Haluatko varmasti poistaa {{name}} asennuksen?",
|
||||
"title": "Poista {{name}}"
|
||||
},
|
||||
"plugin_update_one": "Päivityksiä saatavilla yhdelle laajennukselle!",
|
||||
"plugin_update_other": "Päivityksiä saatavilla {{count}} laajennukselle!",
|
||||
"plugin_error_uninstall": "{{name}} lataaminen aiheutti yllä olevan poikkeuksen. Tämä tarkoittaa yleensä sitä, että laajennus vaatii päivityksen uudelle SteamUI-versiolle. Tarkista, onko päivitystä saatavilla, tai harkitse laajennuksen poistoa Decky-asetuksista, laajennukset-osiosta."
|
||||
},
|
||||
"RemoteDebugging": {
|
||||
"remote_cef": {
|
||||
"desc": "Salli todentamaton pääsy CEF-debuggeriin kenelle tahansa verkossasi",
|
||||
"label": "Salli CEF-etädebugaus"
|
||||
}
|
||||
},
|
||||
"SettingsDeveloperIndex": {
|
||||
"cef_console": {
|
||||
"button": "Avaa konsoli",
|
||||
"desc": "Avaa CEF-konsolin. Hyödyllinen vain debugaustarkoituksiin. Täällä olevat jutut ovat mahdollisesti vaarallisia, ja niitä tulisi käyttää vain, jos olet laajennuksen kehittäjä tai jos kehittäjä on ohjannut sinut tänne.",
|
||||
"label": "CEF-konsoli"
|
||||
},
|
||||
"header": "Muu",
|
||||
"react_devtools": {
|
||||
"desc": "Mahdollistaa yhteyden tietokoneeseen, jossa on käytössä React DevTools. Tämän asetuksen muuttaminen lataa Steamin uudelleen. Aseta IP-osoite ennen käyttöönottoa.",
|
||||
"ip_label": "IP-osoite",
|
||||
"label": "Ota React DevTools käyttöön"
|
||||
},
|
||||
"third_party_plugins": {
|
||||
"button_install": "Asenna",
|
||||
"button_zip": "Selaa",
|
||||
"header": "Kolmannen osapuolen laajennukset",
|
||||
"label_desc": "URL-osoite",
|
||||
"label_zip": "Asenna laajennus ZIP-tiedostosta",
|
||||
"label_url": "Asenna laajennus URL-osoitteesta"
|
||||
},
|
||||
"valve_internal": {
|
||||
"desc2": "Älä koske mihinkään tässä valikossa, ellet tiedä mitä se tekee.",
|
||||
"label": "Ota Valve Internal käyttöön",
|
||||
"desc1": "Ottaa käyttöön Valven sisäisen kehittäjävalikon."
|
||||
}
|
||||
},
|
||||
"SettingsGeneralIndex": {
|
||||
"about": {
|
||||
"decky_version": "Decky-versio",
|
||||
"header": "Tietoja"
|
||||
},
|
||||
"beta": {
|
||||
"header": "Beta-osallistuminen"
|
||||
},
|
||||
"developer_mode": {
|
||||
"label": "Kehittäjätila"
|
||||
},
|
||||
"notifications": {
|
||||
"decky_updates_label": "Decky-päivitys saatavilla",
|
||||
"header": "Ilmoitukset",
|
||||
"plugin_updates_label": "Laajennuspäivityksiä saatavilla"
|
||||
},
|
||||
"other": {
|
||||
"header": "Muu"
|
||||
},
|
||||
"updates": {
|
||||
"header": "Päivitykset"
|
||||
}
|
||||
},
|
||||
"SettingsIndex": {
|
||||
"developer_title": "Kehittäjä",
|
||||
"general_title": "Yleinen",
|
||||
"plugins_title": "Laajennukset"
|
||||
},
|
||||
"Store": {
|
||||
"store_contrib": {
|
||||
"label": "Osallistuminen",
|
||||
"desc": "Mikäli haluat julkaista Decky Plugin Storeen, tarkista GitHubin SteamDeckHomebrew/decky-plugin-template -esimerkkitietovarasto. Tietoa kehityksestä ja jakelusta löytyy README:stä."
|
||||
},
|
||||
"store_filter": {
|
||||
"label": "Suodin",
|
||||
"label_def": "Kaikki"
|
||||
},
|
||||
"store_search": {
|
||||
"label": "Hae"
|
||||
},
|
||||
"store_sort": {
|
||||
"label": "Järjestä",
|
||||
"label_def": "Viimeksi päivitetty (uusin ensin)"
|
||||
},
|
||||
"store_source": {
|
||||
"desc": "Kaikken laajennusten lähdekoodit ovat saatavilla SteamDeckHomebrew/decky-plugin-database -arkistosta GitHubissa.",
|
||||
"label": "Lähdekoodi"
|
||||
},
|
||||
"store_tabs": {
|
||||
"about": "Tietoja",
|
||||
"alph_asce": "Aakkosjärjestyksessä (Z–A)",
|
||||
"alph_desc": "Aakkosjärjestyksessä (A–Z)",
|
||||
"title": "Selaa"
|
||||
},
|
||||
"store_testing_cta": "Harkitse uusien lisäosien testaamista auttaaksesi Decky Loader -tiimiä!",
|
||||
"store_testing_warning": {
|
||||
"label": "Tervetuloa testausmyymälä-kanavalle",
|
||||
"desc": "Voit käyttää tätä myymäläkanavaa testataksesi uusimpia laajennusversioita. Muista jättää palautetta GitHubissa, jotta laajennus voidaan päivittää kaikille käyttäjille."
|
||||
}
|
||||
},
|
||||
"StoreSelect": {
|
||||
"custom_store": {
|
||||
"label": "Mukautettu myymälä",
|
||||
"url_label": "URL-osoite"
|
||||
},
|
||||
"store_channel": {
|
||||
"custom": "Mukautettu",
|
||||
"default": "Oletus",
|
||||
"label": "Myymäläkanava",
|
||||
"testing": "Testaus"
|
||||
}
|
||||
},
|
||||
"TitleView": {
|
||||
"decky_store_desc": "Avaa Decky-myymälä",
|
||||
"settings_desc": "Avaa Decky-asetukset"
|
||||
},
|
||||
"Updater": {
|
||||
"decky_updates": "Decky-päivitykset",
|
||||
"no_patch_notes_desc": "tälle versiolle ei ole korjausmerkintöjä",
|
||||
"patch_notes_desc": "Korjausmerkinnät",
|
||||
"updates": {
|
||||
"check_button": "Tarkista päivitykset",
|
||||
"checking": "Tarkistetaan",
|
||||
"cur_version": "Nykyinen versio: {{ver}}",
|
||||
"install_button": "Asenna päivitys",
|
||||
"label": "Päivitykset",
|
||||
"lat_version": "Ajan tasalla: versio {{ver}}",
|
||||
"reloading": "Uudelleenladataan",
|
||||
"updating": "Päivitetään"
|
||||
}
|
||||
},
|
||||
"PluginView": {
|
||||
"hidden_one": "Yksi laajennus on piilotettu tästä luettelosta",
|
||||
"hidden_other": "{{count}} laajennusta on piilotettu tästä luettelosta"
|
||||
}
|
||||
}
|
||||
@@ -13,9 +13,6 @@
|
||||
"label_url": "Installer le plugin à partir d'un URL",
|
||||
"label_zip": "Installer le plugin à partir d'un fichier ZIP"
|
||||
},
|
||||
"toast_zip": {
|
||||
"title": "Decky"
|
||||
},
|
||||
"valve_internal": {
|
||||
"desc1": "Active le menu développeur interne de Valve.",
|
||||
"desc2": "Ne touchez à rien dans ce menu à moins que vous ne sachiez ce qu'il fait.",
|
||||
|
||||
@@ -141,9 +141,6 @@
|
||||
"hidden_many": "Sono nascosti {{count}} plugin dalla lista",
|
||||
"hidden_other": "Sono nascosti {{count}} plugin dalla lista"
|
||||
},
|
||||
"notifications": {
|
||||
"plugin_updates_label": "Aggiornamenti dei plugins"
|
||||
},
|
||||
"RemoteDebugging": {
|
||||
"remote_cef": {
|
||||
"desc": "Permetti l'accesso non autenticato al debugger di CEF da tutti gli indirizzi sulla tua rete locale",
|
||||
@@ -230,7 +227,11 @@
|
||||
"alph_desc": "Alfabetico (A a Z)",
|
||||
"title": "Sfoglia"
|
||||
},
|
||||
"store_testing_cta": "Valuta la possibilità di testare nuovi plugin per aiutare il team di Decky Loader!"
|
||||
"store_testing_cta": "Valuta la possibilità di testare nuovi plugin per aiutare il team di Decky Loader!",
|
||||
"store_testing_warning": {
|
||||
"label": "Benvenuto nel Negozio di Test dei Plugins",
|
||||
"desc": "Puoi usare questo canale del negozio per testare versioni di plugin sperimentali. Assicurati di lasciare un feedback su Github dopo averlo testato in modo che il plugin possa essere promosso a stabile per tutti gli altri utenti o per permettere allo sviluppatore di plugin di correggere eventuali errori."
|
||||
}
|
||||
},
|
||||
"StoreSelect": {
|
||||
"custom_store": {
|
||||
@@ -258,5 +259,9 @@
|
||||
"reloading": "Ricaricando",
|
||||
"updating": "Aggiornando"
|
||||
}
|
||||
},
|
||||
"TitleView": {
|
||||
"settings_desc": "Apri le impostazioni di Decky",
|
||||
"decky_store_desc": "Apri lo store di Decky"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
"BranchSelect": {
|
||||
"update_channel": {
|
||||
"label": "업데이트 배포 채널",
|
||||
"stable": "안정판",
|
||||
"testing": "시험판",
|
||||
"prerelease": "사전 출시판"
|
||||
"stable": "안정",
|
||||
"testing": "테스트",
|
||||
"prerelease": "사전 출시"
|
||||
}
|
||||
},
|
||||
"Developer": {
|
||||
@@ -201,7 +201,11 @@
|
||||
"alph_desc": "알파벳순 (A-Z)",
|
||||
"title": "검색"
|
||||
},
|
||||
"store_testing_cta": "새로운 플러그인을 테스트하여 Decky Loader 팀을 도와주세요!"
|
||||
"store_testing_cta": "새로운 플러그인을 테스트하여 Decky Loader 팀을 도와주세요!",
|
||||
"store_testing_warning": {
|
||||
"desc": "이 스토어 채널을 사용하여 가장 최신 버전의 플러그인을 테스트할 수 있습니다. GitHub에 피드백을 남겨서 모든 사용자가 업데이트 할 수 있게 해주세요.",
|
||||
"label": "테스트 스토어 채널에 오신 것을 환영합니다"
|
||||
}
|
||||
},
|
||||
"StoreSelect": {
|
||||
"custom_store": {
|
||||
@@ -212,7 +216,7 @@
|
||||
"custom": "사용자 지정",
|
||||
"label": "스토어 배포 채널",
|
||||
"default": "기본",
|
||||
"testing": "시험"
|
||||
"testing": "테스트"
|
||||
}
|
||||
},
|
||||
"Updater": {
|
||||
@@ -241,5 +245,9 @@
|
||||
"button": {
|
||||
"back": "뒤로"
|
||||
}
|
||||
},
|
||||
"TitleView": {
|
||||
"settings_desc": "Decky 설정 열기",
|
||||
"decky_store_desc": "Decky 스토어 열기"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,9 +156,6 @@
|
||||
"button_install": "Installeren",
|
||||
"button_zip": "Bladeren"
|
||||
},
|
||||
"toast_zip": {
|
||||
"body": "Installatie mislukt! Alleen ZIP-bestanden worden ondersteund."
|
||||
},
|
||||
"valve_internal": {
|
||||
"desc1": "Schakelt het interne ontwikkelaarsmenu van Valve in.",
|
||||
"desc2": "Raak niets in dit menu aan tenzij u weet wat het doet.",
|
||||
|
||||
@@ -0,0 +1,267 @@
|
||||
{
|
||||
"BranchSelect": {
|
||||
"update_channel": {
|
||||
"testing": "Testowy",
|
||||
"label": "Kanał aktualizacji",
|
||||
"stable": "Stabilny",
|
||||
"prerelease": "Przedpremierowy"
|
||||
}
|
||||
},
|
||||
"Developer": {
|
||||
"enabling": "Włączanie React DevTools",
|
||||
"5secreload": "Ponowne załadowanie za 5 sekund",
|
||||
"disabling": "Wyłączanie React DevTools"
|
||||
},
|
||||
"DropdownMultiselect": {
|
||||
"button": {
|
||||
"back": "Powrót"
|
||||
}
|
||||
},
|
||||
"FilePickerError": {
|
||||
"errors": {
|
||||
"perm_denied": "Nie masz dostępu do podanego katalogu. Sprawdź, czy twój użytkownik (deck na Steam Deck) ma odpowiednie uprawnienia dostępu do określonego katalogu/pliku.",
|
||||
"unknown": "Wystąpił nieznany błąd. Surowy błąd to {{raw_error}}",
|
||||
"file_not_found": "Podana ścieżka jest nieprawidłowa. Sprawdź ją i wprowadź ponownie poprawnie."
|
||||
}
|
||||
},
|
||||
"FilePickerIndex": {
|
||||
"file": {
|
||||
"select": "Wybierz ten plik"
|
||||
},
|
||||
"files": {
|
||||
"all_files": "Wszystkie pliki",
|
||||
"file_type": "Typ pliku",
|
||||
"show_hidden": "Pokaż ukryte pliki"
|
||||
},
|
||||
"filter": {
|
||||
"created_asce": "Utworzono (najstarszy)",
|
||||
"created_desc": "Utworzono (najnowszy)",
|
||||
"modified_asce": "Zmodyfikowany (najstarszy)",
|
||||
"modified_desc": "Zmodyfikowany (najnowszy)",
|
||||
"name_asce": "Z-A",
|
||||
"name_desc": "A-Z",
|
||||
"size_asce": "Rozmiar (najmniejszy)",
|
||||
"size_desc": "Rozmiar (największy)"
|
||||
},
|
||||
"folder": {
|
||||
"label": "Katalog",
|
||||
"select": "Użyj tego katalogu",
|
||||
"show_more": "Pokaż więcej plików"
|
||||
}
|
||||
},
|
||||
"MultiplePluginsInstallModal": {
|
||||
"title": {
|
||||
"mixed_one": "Zmodyfikuj {{count}} plugin",
|
||||
"mixed_few": "Zmodyfikuj {{count}} pluginy",
|
||||
"mixed_many": "Zmodyfikuj {{count}} pluginów",
|
||||
"reinstall_one": "Reinstaluj 1 plugin",
|
||||
"reinstall_few": "Reinstaluj {{count}} pluginy",
|
||||
"reinstall_many": "Reinstaluj {{count}} pluginów",
|
||||
"install_one": "Zainstaluj 1 plugin",
|
||||
"install_few": "Zainstaluj {{count}} pluginy",
|
||||
"install_many": "Zainstaluj {{count}} pluginów",
|
||||
"update_one": "Zaktualizuj 1 plugin",
|
||||
"update_few": "Zaktualizuj {{count}} pluginy",
|
||||
"update_many": "Zaktualizuj {{count}} pluginów"
|
||||
},
|
||||
"confirm": "Czy na pewno chcesz wprowadzić następujące modyfikacje?",
|
||||
"description": {
|
||||
"install": "Zainstaluj {{name}} {{version}}",
|
||||
"reinstall": "Reinstaluj {{name}} {{version}}",
|
||||
"update": "Zaktualizuj {{name}} do {{version}}"
|
||||
},
|
||||
"ok_button": {
|
||||
"idle": "Potwierdź",
|
||||
"loading": "W toku"
|
||||
}
|
||||
},
|
||||
"PluginCard": {
|
||||
"plugin_install": "Zainstaluj",
|
||||
"plugin_no_desc": "Brak opisu.",
|
||||
"plugin_version_label": "Wersja pluginu",
|
||||
"plugin_full_access": "Ten plugin ma pełny dostęp do twojego Steam Decka."
|
||||
},
|
||||
"PluginInstallModal": {
|
||||
"install": {
|
||||
"button_idle": "Zainstaluj",
|
||||
"button_processing": "Instalowanie",
|
||||
"desc": "Czy na pewno chcesz zainstalować {{artifact}} {{version}}?",
|
||||
"title": "Zainstaluj {{artifact}}"
|
||||
},
|
||||
"reinstall": {
|
||||
"button_idle": "Reinstaluj",
|
||||
"button_processing": "Reinstalowanie",
|
||||
"desc": "Czy na pewno chcesz ponownie zainstalować {{artifact}} {{version}}?",
|
||||
"title": "Reinstaluj {{artifact}}"
|
||||
},
|
||||
"update": {
|
||||
"button_idle": "Aktualizacja",
|
||||
"button_processing": "Aktualizowanie",
|
||||
"desc": "Czy na pewno chcesz zaktualizować {{artifact}} {{version}}?",
|
||||
"title": "Zaktualizuj {{artifact}}"
|
||||
},
|
||||
"no_hash": "Ten plugin nie ma hasha, instalujesz go na własne ryzyko."
|
||||
},
|
||||
"PluginListIndex": {
|
||||
"hide": "Szybki dostęp: Ukryj",
|
||||
"no_plugin": "Brak zainstalowanych pluginów!",
|
||||
"reload": "Załaduj ponownie",
|
||||
"update_all_one": "Zaktualizuj 1 plugin",
|
||||
"update_all_few": "Zaktualizuj {{count}} pluginy",
|
||||
"update_all_many": "Zaktualizuj {{count}} pluginów",
|
||||
"plugin_actions": "Akcje pluginów",
|
||||
"reinstall": "Reinstalacja",
|
||||
"show": "Szybki dostęp: Pokaż",
|
||||
"uninstall": "Odinstaluj",
|
||||
"update_to": "Zaktualizuj do {{name}}"
|
||||
},
|
||||
"PluginLoader": {
|
||||
"decky_title": "Decky",
|
||||
"decky_update_available": "Dostępna aktualizacja do {{tag_name}}!",
|
||||
"error": "Błąd",
|
||||
"plugin_error_uninstall": "Ładowanie {{name}} spowodowało wyjątek, jak pokazano powyżej. Zwykle oznacza to, że plugin wymaga aktualizacji do nowej wersji SteamUI. Sprawdź, czy aktualizacja jest obecna lub rozważ usunięcie go w ustawieniach Decky, w sekcji Pluginy.",
|
||||
"plugin_load_error": {
|
||||
"message": "Błąd ładowania plugin {{name}}",
|
||||
"toast": "Błąd ładowania {{name}}"
|
||||
},
|
||||
"plugin_uninstall": {
|
||||
"button": "Odinstaluj",
|
||||
"title": "Odinstaluj {{name}}",
|
||||
"desc": "Czy na pewno chcesz odinstalować {{name}}?"
|
||||
},
|
||||
"plugin_update_one": "Aktualizacje dostępne dla 1 pluginu!",
|
||||
"plugin_update_few": "Aktualizacje dostępne dla {{count}} pluginów!",
|
||||
"plugin_update_many": "Aktualizacje dostępne dla {{count}} pluginów!"
|
||||
},
|
||||
"PluginListLabel": {
|
||||
"hidden": "Ukryty w menu szybkiego dostępu"
|
||||
},
|
||||
"PluginView": {
|
||||
"hidden_one": "1 plugin jest ukryty na tej liście",
|
||||
"hidden_few": "{{count}} pluginy jest ukryty na tej liście",
|
||||
"hidden_many": "{{count}} pluginów jest ukryty na tej liście"
|
||||
},
|
||||
"RemoteDebugging": {
|
||||
"remote_cef": {
|
||||
"desc": "Zezwalaj na nieuwierzytelniony dostęp do debugera CEF wszystkim osobom w Twojej sieci",
|
||||
"label": "Zezwól na zdalne debugowanie CEF"
|
||||
}
|
||||
},
|
||||
"SettingsDeveloperIndex": {
|
||||
"cef_console": {
|
||||
"button": "Otwórz konsolę",
|
||||
"desc": "Otwiera konsolę CEF. Przydatne tylko do celów debugowania. Rzeczy tutaj są potencjalnie niebezpieczne i powinny być używane tylko wtedy, gdy jesteś twórcą wtyczek lub zostałeś tu przez kogoś skierowany.",
|
||||
"label": "Konsola CEF"
|
||||
},
|
||||
"header": "Inne",
|
||||
"react_devtools": {
|
||||
"desc": "Umożliwia połączenie z komputerem z uruchomionym React DevTools. Zmiana tego ustawienia spowoduje ponowne załadowanie Steam. Ustaw adres IP przed włączeniem.",
|
||||
"ip_label": "IP",
|
||||
"label": "Włącz React DevTools"
|
||||
},
|
||||
"third_party_plugins": {
|
||||
"button_install": "Zainstaluj",
|
||||
"button_zip": "Przeglądaj",
|
||||
"header": "Pluginy zewnętrzne",
|
||||
"label_desc": "URL",
|
||||
"label_url": "Zainstaluj plugin z adresu URL",
|
||||
"label_zip": "Zainstaluj plugin z pliku ZIP"
|
||||
},
|
||||
"valve_internal": {
|
||||
"desc1": "Włącza wewnętrzne menu programisty Valve.",
|
||||
"desc2": "Nie dotykaj niczego w tym menu, chyba że wiesz, co robi.",
|
||||
"label": "Włącz Valve Internal"
|
||||
}
|
||||
},
|
||||
"SettingsGeneralIndex": {
|
||||
"notifications": {
|
||||
"decky_updates_label": "Dostępna aktualizacja Decky",
|
||||
"header": "Powiadomienia",
|
||||
"plugin_updates_label": "Dostępne aktualizacje pluginów"
|
||||
},
|
||||
"other": {
|
||||
"header": "Inne"
|
||||
},
|
||||
"updates": {
|
||||
"header": "Aktualizacje"
|
||||
},
|
||||
"about": {
|
||||
"header": "Informacje",
|
||||
"decky_version": "Wersja Decky"
|
||||
},
|
||||
"beta": {
|
||||
"header": "Udział w becie"
|
||||
},
|
||||
"developer_mode": {
|
||||
"label": "Tryb dewelopera"
|
||||
}
|
||||
},
|
||||
"SettingsIndex": {
|
||||
"developer_title": "Deweloper",
|
||||
"general_title": "Ogólne",
|
||||
"plugins_title": "Pluginy"
|
||||
},
|
||||
"Store": {
|
||||
"store_contrib": {
|
||||
"desc": "Jeśli chcesz przyczynić się do rozwoju Decky Plugin Store, sprawdź repozytorium SteamDeckHomebrew/decky-plugin-template na GitHub. Informacje na temat rozwoju i dystrybucji są dostępne w pliku README.",
|
||||
"label": "Współtworzenie"
|
||||
},
|
||||
"store_filter": {
|
||||
"label": "Filtr",
|
||||
"label_def": "Wszystko"
|
||||
},
|
||||
"store_search": {
|
||||
"label": "Szukaj"
|
||||
},
|
||||
"store_sort": {
|
||||
"label": "Sortowanie",
|
||||
"label_def": "Ostatnia aktualizacja (najnowsza)"
|
||||
},
|
||||
"store_source": {
|
||||
"desc": "Cały kod źródłowy pluginów jest dostępny w repozytorium SteamDeckHomebrew/decky-plugin-database na GitHub.",
|
||||
"label": "Kod źródłowy"
|
||||
},
|
||||
"store_tabs": {
|
||||
"alph_asce": "Alfabetycznie (od Z do A)",
|
||||
"alph_desc": "Alfabetycznie (od A do Z)",
|
||||
"title": "Przeglądaj",
|
||||
"about": "Informacje"
|
||||
},
|
||||
"store_testing_cta": "Rozważ przetestowanie nowych pluginów, aby pomóc zespołowi Decky Loader!",
|
||||
"store_testing_warning": {
|
||||
"label": "Witamy w Testowym Kanale Sklepu",
|
||||
"desc": "Możesz użyć tego kanału sklepu do testowania najnowszych wersji pluginów. Pamiętaj, aby zostawić opinię na GitHub, aby plugin mogła zostać zaktualizowana dla wszystkich użytkowników."
|
||||
}
|
||||
},
|
||||
"StoreSelect": {
|
||||
"custom_store": {
|
||||
"label": "Niestandardowy sklep",
|
||||
"url_label": "URL"
|
||||
},
|
||||
"store_channel": {
|
||||
"custom": "Niestandardowy",
|
||||
"default": "Domyślny",
|
||||
"label": "Kanał sklepu",
|
||||
"testing": "Testowy"
|
||||
}
|
||||
},
|
||||
"Updater": {
|
||||
"decky_updates": "Aktualizacje Decky",
|
||||
"no_patch_notes_desc": "Brak informacji o poprawkach dla tej wersji",
|
||||
"patch_notes_desc": "Opis zmian",
|
||||
"updates": {
|
||||
"check_button": "Sprawdź aktualizacje",
|
||||
"checking": "Sprawdzanie",
|
||||
"cur_version": "Aktualna wersja: {{ver}}",
|
||||
"install_button": "Zainstaluj aktualizację",
|
||||
"label": "Aktualizacje",
|
||||
"lat_version": "Aktualizacje zainstalowane. Aktualna wersja: {{ver}}",
|
||||
"reloading": "Ponowne ładowanie",
|
||||
"updating": "Aktualizowanie"
|
||||
}
|
||||
},
|
||||
"TitleView": {
|
||||
"settings_desc": "Otwórz ustawienia Decky",
|
||||
"decky_store_desc": "Otwórz sklep Decky"
|
||||
}
|
||||
}
|
||||
@@ -120,7 +120,7 @@
|
||||
},
|
||||
"decky_update_available": "Atualização para {{tag_name}} disponível!",
|
||||
"plugin_error_uninstall": "Um erro aconteceu ao carregar {{name}}, como mostrado acima. Isso normalmente significa que o plugin precisa de uma atualização para a nova versão do SteamUI. Confira se existe uma atualização ou avalie a remoção do plugin nas configurações do Decky, na sessão de plugins.",
|
||||
"plugin_update_one": "Atualizações disponível para 1 plugin!",
|
||||
"plugin_update_one": "Atualização disponível para 1 plugin!",
|
||||
"plugin_update_many": "Atualizações disponíveis para {{count}} plugins!",
|
||||
"plugin_update_other": "Atualizações disponíveis para {{count}} plugins!"
|
||||
},
|
||||
@@ -150,9 +150,6 @@
|
||||
"label_zip": "Instalar Plugin a partir de um arquivo ZIP",
|
||||
"label_desc": "URL"
|
||||
},
|
||||
"toast_zip": {
|
||||
"body": "Falha na instalação! Somente arquivos ZIP são suportados."
|
||||
},
|
||||
"valve_internal": {
|
||||
"desc1": "Habilita o menu interno de desenvolvedor da Valve.",
|
||||
"desc2": "Não toque em nada neste menu, a não ser que você saiba o que está fazendo.",
|
||||
@@ -175,6 +172,11 @@
|
||||
},
|
||||
"beta": {
|
||||
"header": "Participação no Beta"
|
||||
},
|
||||
"notifications": {
|
||||
"decky_updates_label": "Atualização do Decky disponível",
|
||||
"header": "Noificações",
|
||||
"plugin_updates_label": "Atualizações de Plugin disponíveis"
|
||||
}
|
||||
},
|
||||
"SettingsIndex": {
|
||||
@@ -250,7 +252,8 @@
|
||||
"FilePickerError": {
|
||||
"errors": {
|
||||
"file_not_found": "O caminho especificado não é válido. Por favor, confira e reinsira corretamente.",
|
||||
"unknown": "Ocorreu um erro desconhecido. O erro completo é: {{raw_error}}"
|
||||
"unknown": "Ocorreu um erro desconhecido. O erro completo é: {{raw_error}}",
|
||||
"perm_denied": "Você não tem acesso à este diretório. Por favor, verifiquei se seu usuário (deck no Steam Deck) tem as permissões necessárias para acessar este arquivo/pasta."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,9 +129,6 @@
|
||||
"label_url": "Instalar plugin a partir dum URL",
|
||||
"label_zip": "Instalar plugin a partir dum ficheiro ZIP"
|
||||
},
|
||||
"toast_zip": {
|
||||
"body": "A instalação falhou! Só ficheiros ZIP são suportados."
|
||||
},
|
||||
"valve_internal": {
|
||||
"label": "Activar menu interno da Valve",
|
||||
"desc1": "Activa o menu interno de programador da Valve.",
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
},
|
||||
"plugin_uninstall": {
|
||||
"button": "Удалить",
|
||||
"desc": "Вы уверенны, что хотите удалить {{name}}?",
|
||||
"desc": "Вы уверены, что хотите удалить {{name}}?",
|
||||
"title": "Удалить {{name}}"
|
||||
},
|
||||
"decky_title": "Decky",
|
||||
@@ -97,19 +97,19 @@
|
||||
"button_processing": "Установка",
|
||||
"title": "Установить {{artifact}}",
|
||||
"button_idle": "Установить",
|
||||
"desc": "Вы уверенны, что хотите установить {{artifact}} {{version}}?"
|
||||
"desc": "Вы уверены, что хотите установить {{artifact}} {{version}}?"
|
||||
},
|
||||
"no_hash": "У данного плагина отсутствует хэш, устанавливайте на свой страх и риск.",
|
||||
"reinstall": {
|
||||
"title": "Переустановить {{artifact}}",
|
||||
"desc": "Вы уверенны, что хотите переустановить {{artifact}} {{version}}?",
|
||||
"desc": "Вы уверены, что хотите переустановить {{artifact}} {{version}}?",
|
||||
"button_idle": "Переустановить",
|
||||
"button_processing": "Переустановка"
|
||||
},
|
||||
"update": {
|
||||
"button_idle": "Обновить",
|
||||
"button_processing": "Обновление",
|
||||
"desc": "Вы уверенны, что хотите обновить {{artifact}} {{version}}?",
|
||||
"desc": "Вы уверены, что хотите обновить {{artifact}} {{version}}?",
|
||||
"title": "Обновить {{artifact}}"
|
||||
}
|
||||
},
|
||||
@@ -197,6 +197,10 @@
|
||||
},
|
||||
"store_search": {
|
||||
"label": "Поиск"
|
||||
},
|
||||
"store_testing_warning": {
|
||||
"label": "Добро пожаловать в тестовый канал магазина",
|
||||
"desc": "Вы можете использовать этот канал магазина для тестирования новейших версий плагинов. Не забудьте оставить отзыв на GitHub, чтобы плагин можно было обновить для всех пользователей."
|
||||
}
|
||||
},
|
||||
"StoreSelect": {
|
||||
@@ -208,7 +212,7 @@
|
||||
"custom": "Сторонний",
|
||||
"default": "По-умолчанию",
|
||||
"label": "Канал магазина",
|
||||
"testing": "Тестирование"
|
||||
"testing": "Тестовый"
|
||||
}
|
||||
},
|
||||
"Updater": {
|
||||
@@ -255,5 +259,9 @@
|
||||
"developer_title": "Разработчик",
|
||||
"general_title": "Общее",
|
||||
"plugins_title": "Плагины"
|
||||
},
|
||||
"TitleView": {
|
||||
"decky_store_desc": "Открыть магазин Decky",
|
||||
"settings_desc": "Открыть настройки Decky"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,9 +124,6 @@
|
||||
"label_zip": "Встановити плагін з ZIP-файлу",
|
||||
"button_zip": "Огляд"
|
||||
},
|
||||
"toast_zip": {
|
||||
"body": "Помилка встановлення! Підтримуються лише ZIP-файли."
|
||||
},
|
||||
"valve_internal": {
|
||||
"desc1": "Вмикає внутрішнє розробницьке меню Valve.",
|
||||
"label": "Увімкнути Valve Internal",
|
||||
|
||||
@@ -177,7 +177,11 @@
|
||||
"alph_desc": "字母排序 (A 到 Z)",
|
||||
"title": "浏览"
|
||||
},
|
||||
"store_testing_cta": "请考虑测试新插件以帮助 Decky Loader 团队!"
|
||||
"store_testing_cta": "请考虑测试新插件以帮助 Decky Loader 团队!",
|
||||
"store_testing_warning": {
|
||||
"desc": "你可以使用该商店频道以体验最新版本的插件。 请在插件 Github 页面留言以使插件可以正式面向所有用户。",
|
||||
"label": "欢迎来到商店测试频道"
|
||||
}
|
||||
},
|
||||
"StoreSelect": {
|
||||
"store_channel": {
|
||||
@@ -238,8 +242,12 @@
|
||||
"FilePickerError": {
|
||||
"errors": {
|
||||
"file_not_found": "指定路径无效。请检查并输入正确的路径。",
|
||||
"unknown": "发生了一个为止错误。原始错误为:{{raw_error}}",
|
||||
"unknown": "发生了一个未知错误。原始错误为:{{raw_error}}",
|
||||
"perm_denied": "你没有访问特定目录的权限。请检查你的用户(Steam Deck 中的 deck 账户)有着相对应的权限以访问特定的文件夹或文件。"
|
||||
}
|
||||
},
|
||||
"TitleView": {
|
||||
"decky_store_desc": "打开 Decky 商店",
|
||||
"settings_desc": "打开 Decky 设置"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,27 @@
|
||||
},
|
||||
"FilePickerIndex": {
|
||||
"folder": {
|
||||
"select": "使用此資料夾"
|
||||
"select": "使用此資料夾",
|
||||
"show_more": "顯示更多檔案",
|
||||
"label": "資料夾"
|
||||
},
|
||||
"filter": {
|
||||
"modified_asce": "修改日期(舊到新)",
|
||||
"created_desc": "建立日期(新到舊)",
|
||||
"modified_desc": "修改日期(新到舊)",
|
||||
"name_desc": "子母排序(A到Z)",
|
||||
"name_asce": "子母排序(Z到A)",
|
||||
"size_asce": "檔案大小(小到大)",
|
||||
"size_desc": "檔案大小(大到小)",
|
||||
"created_asce": "建立日期(舊到新)"
|
||||
},
|
||||
"file": {
|
||||
"select": "選擇此檔案"
|
||||
},
|
||||
"files": {
|
||||
"all_files": "所有檔案",
|
||||
"file_type": "檔案類型",
|
||||
"show_hidden": "顯示隱藏檔"
|
||||
}
|
||||
},
|
||||
"PluginCard": {
|
||||
@@ -86,9 +106,6 @@
|
||||
"button_install": "安裝",
|
||||
"header": "第三方外掛程式"
|
||||
},
|
||||
"toast_zip": {
|
||||
"title": "Decky"
|
||||
},
|
||||
"valve_internal": {
|
||||
"desc2": "除非您知道它的作用,否則不要碰這個選單中的任何東西。",
|
||||
"desc1": "啟用 Valve 內建開發人員選單。",
|
||||
@@ -103,7 +120,7 @@
|
||||
"cef_console": {
|
||||
"button": "開啟控制台",
|
||||
"label": "CEF 控制台",
|
||||
"desc": "開啟 CEF 控制台。僅用於偵錯。這裡的東西有潛在的風險,只有當你是一個外掛程式開發者或者被外掛程式開發者引導到這裡時,才應該使用。"
|
||||
"desc": "開啟 CEF 控制台。僅用於偵錯。這裡的東西有潛在的風險,只有當您是一個外掛程式開發者或者被外掛程式開發者引導到這裡時,才應該使用。"
|
||||
}
|
||||
},
|
||||
"SettingsGeneralIndex": {
|
||||
@@ -122,6 +139,11 @@
|
||||
},
|
||||
"updates": {
|
||||
"header": "更新"
|
||||
},
|
||||
"notifications": {
|
||||
"decky_updates_label": "Decky 可更新",
|
||||
"header": "通知",
|
||||
"plugin_updates_label": "外掛程式有更新"
|
||||
}
|
||||
},
|
||||
"SettingsIndex": {
|
||||
@@ -207,5 +229,17 @@
|
||||
"update": "更新 {{name}} 到 {{version}}",
|
||||
"reinstall": "重新安裝 {{name}} {{version}}"
|
||||
}
|
||||
},
|
||||
"FilePickerError": {
|
||||
"errors": {
|
||||
"perm_denied": "您沒有瀏覽此目錄的權限。請檢查您的使用者(Steam Deck 中的 deck 帳號)有權限瀏覽特定的資料夾或檔案。",
|
||||
"unknown": "發生未知錯誤。錯誤詳細資料:{{raw_error}}",
|
||||
"file_not_found": "指定路徑無效。請檢查並輸入正確路徑。"
|
||||
}
|
||||
},
|
||||
"DropdownMultiselect": {
|
||||
"button": {
|
||||
"back": "返回"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,4 +40,13 @@ def get_keep_systemd_service() -> bool:
|
||||
def get_log_level() -> int:
|
||||
return {"CRITICAL": 50, "ERROR": 40, "WARNING": 30, "INFO": 20, "DEBUG": 10}[
|
||||
os.getenv("LOG_LEVEL", "INFO")
|
||||
]
|
||||
]
|
||||
|
||||
def get_selinux() -> bool:
|
||||
if ON_LINUX:
|
||||
from subprocess import check_output
|
||||
try:
|
||||
if (check_output("getenforce").decode("ascii").strip("\n") == "Enforcing"): return True
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
return False
|
||||
|
||||
@@ -60,6 +60,8 @@ def chown(path : str, user : UserType = UserType.HOST_USER, recursive : bool =
|
||||
return result == 0
|
||||
|
||||
def chmod(path : str, permissions : int, recursive : bool = True) -> bool:
|
||||
if _get_effective_user_id() != 0:
|
||||
return True
|
||||
result = call(["chmod", "-R", str(permissions), path] if recursive else ["chmod", str(permissions), path])
|
||||
return result == 0
|
||||
|
||||
@@ -191,4 +193,4 @@ def get_unprivileged_user() -> str:
|
||||
logger.warn("Unprivileged user is not properly configured. Defaulting to 'deck'")
|
||||
user = 'deck'
|
||||
|
||||
return user
|
||||
return user
|
||||
|
||||
+4
-1
@@ -24,7 +24,7 @@ from aiohttp_jinja2 import setup as jinja_setup
|
||||
# local modules
|
||||
from browser import PluginBrowser
|
||||
from helpers import (REMOTE_DEBUGGER_UNIT, csrf_middleware, get_csrf_token,
|
||||
mkdir_as_user, get_system_pythonpaths)
|
||||
mkdir_as_user, get_system_pythonpaths, get_effective_user_id)
|
||||
|
||||
from injector import get_gamepadui_tab, Tab, get_tabs, close_old_tabs
|
||||
from loader import Loader
|
||||
@@ -178,6 +178,9 @@ if __name__ == "__main__":
|
||||
|
||||
# Required for multiprocessing support in frozen files
|
||||
multiprocessing.freeze_support()
|
||||
else:
|
||||
if get_effective_user_id() != 0:
|
||||
logger.warning(f"decky is running as an unprivileged user, this is not officially supported and may cause issues")
|
||||
|
||||
# Append the loader's plugin path to the recognized python paths
|
||||
sys.path.append(path.join(path.dirname(__file__), "plugin"))
|
||||
|
||||
+5
-1
@@ -6,7 +6,7 @@ from ensurepip import version
|
||||
from json.decoder import JSONDecodeError
|
||||
from logging import getLogger
|
||||
from os import getcwd, path, remove
|
||||
from localplatform import chmod, service_restart, ON_LINUX, get_keep_systemd_service
|
||||
from localplatform import chmod, service_restart, ON_LINUX, get_keep_systemd_service, get_selinux
|
||||
|
||||
from aiohttp import ClientSession, web
|
||||
|
||||
@@ -208,6 +208,10 @@ class Updater:
|
||||
remove(path.join(getcwd(), download_filename))
|
||||
shutil.move(path.join(getcwd(), download_temp_filename), path.join(getcwd(), download_filename))
|
||||
chmod(path.join(getcwd(), download_filename), 777, False)
|
||||
if get_selinux():
|
||||
from asyncio.subprocess import create_subprocess_exec
|
||||
process = await create_subprocess_exec("chcon", "-t", "bin_t", path.join(getcwd(), download_filename))
|
||||
logger.info(f"Setting the executable flag with chcon returned {await process.wait()}")
|
||||
|
||||
logger.info("Updated loader installation.")
|
||||
await tab.evaluate_js("window.DeckyUpdater.finish()", False, False)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { DialogButton, Focusable, Router, staticClasses } from 'decky-frontend-lib';
|
||||
import { CSSProperties, VFC } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { BsGearFill } from 'react-icons/bs';
|
||||
import { FaArrowLeft, FaStore } from 'react-icons/fa';
|
||||
|
||||
@@ -13,6 +14,7 @@ const titleStyles: CSSProperties = {
|
||||
|
||||
const TitleView: VFC = () => {
|
||||
const { activePlugin, closeActivePlugin } = useDeckyState();
|
||||
const { t } = useTranslation();
|
||||
|
||||
const onSettingsClick = () => {
|
||||
Router.CloseSideMenus();
|
||||
@@ -31,12 +33,14 @@ const TitleView: VFC = () => {
|
||||
<DialogButton
|
||||
style={{ height: '28px', width: '40px', minWidth: 0, padding: '10px 12px' }}
|
||||
onClick={onStoreClick}
|
||||
onOKActionDescription={t('TitleView.decky_store_desc')}
|
||||
>
|
||||
<FaStore style={{ marginTop: '-4px', display: 'block' }} />
|
||||
</DialogButton>
|
||||
<DialogButton
|
||||
style={{ height: '28px', width: '40px', minWidth: 0, padding: '10px 12px' }}
|
||||
onClick={onSettingsClick}
|
||||
onOKActionDescription={t('TitleView.settings_desc')}
|
||||
>
|
||||
<BsGearFill style={{ marginTop: '-4px', display: 'block' }} />
|
||||
</DialogButton>
|
||||
@@ -45,15 +49,15 @@ const TitleView: VFC = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={staticClasses.Title} style={titleStyles}>
|
||||
<Focusable className={staticClasses.Title} style={titleStyles}>
|
||||
<DialogButton
|
||||
style={{ height: '28px', width: '40px', minWidth: 0, padding: '10px 12px' }}
|
||||
onClick={closeActivePlugin}
|
||||
>
|
||||
<FaArrowLeft style={{ marginTop: '-4px', display: 'block' }} />
|
||||
</DialogButton>
|
||||
<div style={{ flex: 0.9 }}>{activePlugin.name}</div>
|
||||
</div>
|
||||
{activePlugin?.titleView || <div style={{ flex: 0.9 }}>{activePlugin.name}</div>}
|
||||
</Focusable>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import { useTranslation } from 'react-i18next';
|
||||
|
||||
import logo from '../../../assets/plugin_store.png';
|
||||
import Logger from '../../logger';
|
||||
import { StorePlugin, getPluginList } from '../../store';
|
||||
import { Store, StorePlugin, getPluginList, getStore } from '../../store';
|
||||
import PluginCard from './PluginCard';
|
||||
|
||||
const logger = new Logger('Store');
|
||||
@@ -21,6 +21,7 @@ const logger = new Logger('Store');
|
||||
const StorePage: FC<{}> = () => {
|
||||
const [currentTabRoute, setCurrentTabRoute] = useState<string>('browse');
|
||||
const [data, setData] = useState<StorePlugin[] | null>(null);
|
||||
const [isTesting, setIsTesting] = useState<boolean>(false);
|
||||
const { TabCount } = findModule((m) => {
|
||||
if (m?.TabCount && m?.TabTitle) return true;
|
||||
return false;
|
||||
@@ -33,6 +34,9 @@ const StorePage: FC<{}> = () => {
|
||||
const res = await getPluginList();
|
||||
logger.log('got data!', res);
|
||||
setData(res);
|
||||
const storeRes = await getStore();
|
||||
logger.log(`store is ${storeRes}, isTesting is ${storeRes === Store.Testing}`);
|
||||
setIsTesting(storeRes === Store.Testing);
|
||||
})();
|
||||
}, []);
|
||||
|
||||
@@ -58,7 +62,7 @@ const StorePage: FC<{}> = () => {
|
||||
tabs={[
|
||||
{
|
||||
title: t('Store.store_tabs.title'),
|
||||
content: <BrowseTab children={{ data: data }} />,
|
||||
content: <BrowseTab children={{ data: data, isTesting: isTesting }} />,
|
||||
id: 'browse',
|
||||
renderTabAddon: () => <span className={TabCount}>{data.length}</span>,
|
||||
},
|
||||
@@ -75,7 +79,7 @@ const StorePage: FC<{}> = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const BrowseTab: FC<{ children: { data: StorePlugin[] } }> = (data) => {
|
||||
const BrowseTab: FC<{ children: { data: StorePlugin[]; isTesting: boolean } }> = (data) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const sortOptions = useMemo(
|
||||
@@ -178,6 +182,36 @@ const BrowseTab: FC<{ children: { data: StorePlugin[] } }> = (data) => {
|
||||
</div>
|
||||
</Focusable>
|
||||
</div>
|
||||
{data.children.isTesting && (
|
||||
<div
|
||||
style={{
|
||||
alignItems: 'center',
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
marginLeft: '20px',
|
||||
marginRight: '20px',
|
||||
marginBottom: '20px',
|
||||
padding: '8px 36px',
|
||||
background: 'rgba(255, 255, 0, 0.067)',
|
||||
textAlign: 'center',
|
||||
border: '2px solid rgba(255, 255, 0, 0.467)',
|
||||
}}
|
||||
>
|
||||
<h2 style={{ margin: 0 }}>{t('Store.store_testing_warning.label')}</h2>
|
||||
<span>
|
||||
{`${t('Store.store_testing_warning.desc')} `}
|
||||
<a
|
||||
href="https://decky.xyz/testing"
|
||||
target="_blank"
|
||||
style={{
|
||||
textDecoration: 'none',
|
||||
}}
|
||||
>
|
||||
decky.xyz/testing
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
<div>
|
||||
{data.children.data
|
||||
.filter((plugin: StorePlugin) => {
|
||||
@@ -229,13 +263,13 @@ const AboutTab: FC<{}> = () => {
|
||||
<span>
|
||||
{t('Store.store_testing_cta')}{' '}
|
||||
<a
|
||||
href="https://deckbrew.xyz/testing"
|
||||
href="https://decky.xyz/testing"
|
||||
target="_blank"
|
||||
style={{
|
||||
textDecoration: 'none',
|
||||
}}
|
||||
>
|
||||
deckbrew.xyz/testing
|
||||
decky.xyz/testing
|
||||
</a>
|
||||
</span>
|
||||
<span className="deckyStoreAboutHeader">{t('Store.store_contrib.label')}</span>
|
||||
|
||||
@@ -5,6 +5,7 @@ export interface Plugin {
|
||||
content?: JSX.Element;
|
||||
onDismount?(): void;
|
||||
alwaysRender?: boolean;
|
||||
titleView?: JSX.Element;
|
||||
}
|
||||
|
||||
export enum InstallType {
|
||||
|
||||
@@ -22,6 +22,8 @@ declare global {
|
||||
}
|
||||
}
|
||||
|
||||
const isPatched = Symbol('is patched');
|
||||
|
||||
class RouterHook extends Logger {
|
||||
private router: any;
|
||||
private memoizedRouter: any;
|
||||
@@ -90,9 +92,10 @@ class RouterHook extends Logger {
|
||||
...routeList[index].props,
|
||||
children: {
|
||||
...cloneElement(routeList[index].props.children),
|
||||
type: (props) => createElement(oType, props),
|
||||
type: routeList[index].props.children[isPatched] ? oType : (props) => createElement(oType, props),
|
||||
},
|
||||
}).children;
|
||||
routeList[index].props.children[isPatched] = true;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -32,6 +32,10 @@ export interface PluginInstallRequest {
|
||||
// name: version
|
||||
export type PluginUpdateMapping = Map<string, StorePluginVersion>;
|
||||
|
||||
export async function getStore(): Promise<Store> {
|
||||
return await getSetting<Store>('store', Store.Default);
|
||||
}
|
||||
|
||||
export async function getPluginList(): Promise<StorePlugin[]> {
|
||||
let version = await window.DeckyPluginLoader.updateVersion();
|
||||
let store = await getSetting<Store>('store', Store.Default);
|
||||
|
||||
@@ -17,6 +17,7 @@ __version__ = '0.1.0'
|
||||
import os
|
||||
import subprocess
|
||||
import logging
|
||||
import time
|
||||
|
||||
"""
|
||||
Constants
|
||||
@@ -117,7 +118,8 @@ Environment variable: `DECKY_PLUGIN_AUTHOR`.
|
||||
e.g.: `John Doe`
|
||||
"""
|
||||
|
||||
DECKY_PLUGIN_LOG: str = os.path.join(DECKY_PLUGIN_LOG_DIR, "plugin.log")
|
||||
__cur_time = time.strftime("%Y-%m-%d %H.%M.%S")
|
||||
DECKY_PLUGIN_LOG: str = os.path.join(DECKY_PLUGIN_LOG_DIR, f"{__cur_time}.log")
|
||||
"""
|
||||
The path to the plugin's main logfile.
|
||||
Environment variable: `DECKY_PLUGIN_LOG`.
|
||||
@@ -192,6 +194,12 @@ def migrate_logs(*files_or_directories: str) -> dict[str, str]:
|
||||
Logging
|
||||
"""
|
||||
|
||||
try:
|
||||
for x in [entry.name for entry in sorted(os.scandir(DECKY_PLUGIN_LOG_DIR),key=lambda x: x.stat().st_mtime, reverse=True) if entry.name.endswith(".log")][4:]:
|
||||
os.unlink(os.path.join(DECKY_PLUGIN_LOG_DIR, x))
|
||||
except Exception as e:
|
||||
print(f"Failed to delete old logs: {str(e)}")
|
||||
|
||||
logging.basicConfig(filename=DECKY_PLUGIN_LOG,
|
||||
format='[%(asctime)s][%(levelname)s]: %(message)s',
|
||||
force=True)
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
aiohttp==3.8.1
|
||||
aiohttp-jinja2==1.5.0
|
||||
aiohttp==3.8.4
|
||||
aiohttp-jinja2==1.5.1
|
||||
aiohttp_cors==0.7.0
|
||||
watchdog==2.1.7
|
||||
certifi==2022.12.7
|
||||
certifi==2023.7.22
|
||||
|
||||
Reference in New Issue
Block a user