summaryrefslogtreecommitdiff
path: root/raveos-center
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-center')
-rw-r--r--raveos-center/PKGBUILD3
-rw-r--r--raveos-center/adat/katalogus/app-list.json230
-rw-r--r--raveos-center/adat/mentes/backup-paths.json135
-rw-r--r--raveos-center/helper/hu.rp1.raveos-center.policy2
-rwxr-xr-xraveos-center/helper/raveos-center-helper5
-rw-r--r--raveos-center/raveos-center.desktop2
-rw-r--r--raveos-center/raveos_center/alkalmazas.py6
-rw-r--r--raveos-center/raveos_center/diagnosztika.py17
-rw-r--r--raveos-center/raveos_center/driverek.py30
-rw-r--r--raveos-center/raveos_center/elemek.py6
-rw-r--r--raveos-center/raveos_center/folyamat.py13
-rw-r--r--raveos-center/raveos_center/forditas.py30
-rw-r--r--raveos-center/raveos_center/forditasok.json1998
-rw-r--r--raveos-center/raveos_center/gaming.py31
-rw-r--r--raveos-center/raveos_center/jegyek_api.py16
-rw-r--r--raveos-center/raveos_center/karbantartas.py31
-rw-r--r--raveos-center/raveos_center/katalogus.py47
-rw-r--r--raveos-center/raveos_center/mentesek.py19
-rw-r--r--raveos-center/raveos_center/muveletek.py8
-rw-r--r--raveos-center/raveos_center/oldalak/alkalmazasok.py84
-rw-r--r--raveos-center/raveos_center/oldalak/attekintes.py77
-rw-r--r--raveos-center/raveos_center/oldalak/frissitesek.py97
-rw-r--r--raveos-center/raveos_center/oldalak/rendszer/__init__.py5
-rw-r--r--raveos-center/raveos_center/oldalak/rendszer/driverek.py43
-rw-r--r--raveos-center/raveos_center/oldalak/rendszer/gaming.py76
-rw-r--r--raveos-center/raveos_center/oldalak/rendszer/karbantartas.py63
-rw-r--r--raveos-center/raveos_center/oldalak/rendszer/mentes.py69
-rw-r--r--raveos-center/raveos_center/oldalak/rendszer/secureboot.py93
-rw-r--r--raveos-center/raveos_center/oldalak/rendszer/snapshotok.py120
-rw-r--r--raveos-center/raveos_center/oldalak/visszajelzes.py257
-rw-r--r--raveos-center/raveos_center/proton.py15
-rw-r--r--raveos-center/raveos_center/rendszerinfo.py22
-rw-r--r--raveos-center/raveos_center/snapshotok.py9
33 files changed, 2922 insertions, 737 deletions
diff --git a/raveos-center/PKGBUILD b/raveos-center/PKGBUILD
index 839e513..c23cb02 100644
--- a/raveos-center/PKGBUILD
+++ b/raveos-center/PKGBUILD
@@ -2,7 +2,7 @@
pkgname=raveos-center
pkgver=1.0.0
-pkgrel=3
+pkgrel=4
pkgdesc="RaveOS Center: apps, updates, drivers, gaming, snapshots and feedback in one place"
arch=('any')
url="https://git.rp1.hu/RaveOS/RaveOS-PKGBUILD"
@@ -21,6 +21,7 @@ optdepends=(
'sbsigntools: Secure Boot aláírás'
'efitools: Secure Boot kulcs telepítés'
'zstd: Secure Boot modul-aláírás'
+ 'qt6-translations: magyar és német Qt párbeszédgombok'
)
provides=('raveos-app-installer')
conflicts=('raveos-app-installer' 'raveos-updater')
diff --git a/raveos-center/adat/katalogus/app-list.json b/raveos-center/adat/katalogus/app-list.json
index 36f52d4..74e01b1 100644
--- a/raveos-center/adat/katalogus/app-list.json
+++ b/raveos-center/adat/katalogus/app-list.json
@@ -1,58 +1,18 @@
{
- "list_version": 49,
+ "list_version": 50,
"apps": [
{
"id": "artcraft",
- "name": "ArtCraft",
+ "name": "ArtCraft Launcher",
"category": "Media",
"desc": {
- "hu": "ArtCraft kreatív csomag - Adobe alkalmazások nyílt forrású alternatívái (válassz a legördülő menüből)",
- "en": "ArtCraft creative suite - open source alternatives to Adobe apps (choose from the dropdown)"
+ "hu": "ArtCraft kreatív appok egy helyen: PhotoCraft, VectorCraft, FilmCraft, LightCraft, PdfCraft és a többi telepítése és frissítése",
+ "en": "ArtCraft creative apps in one place: install and update PhotoCraft, VectorCraft, FilmCraft, LightCraft, PdfCraft and more",
+ "de": "ArtCraft-Kreativ-Apps an einem Ort: PhotoCraft, VectorCraft, FilmCraft, LightCraft, PdfCraft und mehr installieren und aktualisieren"
},
- "type": "choice",
- "options": [
- {
- "id": "photocraft",
- "name": "PhotoCraft",
- "packages": ["photocraft"],
- "desc": {"hu": "Fotószerkesztő (Photoshop-szerű)", "en": "Photo editor (Photoshop-like)"}
- },
- {
- "id": "vectorcraft",
- "name": "VectorCraft",
- "packages": ["vectorcraft"],
- "desc": {"hu": "Vektorgrafika (Illustrator-szerű)", "en": "Vector graphics (Illustrator-like)"}
- },
- {
- "id": "filmcraft",
- "name": "FilmCraft",
- "packages": ["filmcraft"],
- "desc": {"hu": "Videószerkesztő (Premiere-szerű)", "en": "Video editor (Premiere-like)"}
- },
- {
- "id": "lightcraft",
- "name": "LightCraft",
- "packages": ["lightcraft"],
- "desc": {"hu": "Fotó munkafolyamat (Lightroom-szerű)", "en": "Photo workflow (Lightroom-like)"}
- },
- {
- "id": "pdfcraft",
- "name": "PdfCraft",
- "packages": ["pdfcraft"],
- "desc": {"hu": "PDF szerkesztő (Acrobat-szerű)", "en": "PDF editor (Acrobat-like)"}
- },
- {
- "id": "effectcraft",
- "name": "EffectCraft",
- "packages": ["effectcraft"],
- "desc": {"hu": "Vizuális effektek (After Effects-szerű)", "en": "Visual effects (After Effects-like)"}
- },
- {
- "id": "designcraft",
- "name": "DesignCraft",
- "packages": ["designcraft"],
- "desc": {"hu": "Kiadványszerkesztő (InDesign-szerű)", "en": "Layout design (InDesign-like)"}
- }
+ "type": "pacman",
+ "packages": [
+ "artcraft-launcher"
]
},
{
@@ -61,7 +21,8 @@
"category": "Media",
"desc": {
"hu": "Audacious - helyi zenelejátszó (Flatpak, 432Hz konfiggal)",
- "en": "Audacious - Local Music Player (Flatpak, 432Hz config)"
+ "en": "Audacious - Local Music Player (Flatpak, 432Hz config)",
+ "de": "Audacious - lokaler Musikplayer (Flatpak, 432-Hz-Konfiguration)"
},
"type": "flatpak-user",
"flatpak_id": "org.atheme.audacious",
@@ -74,7 +35,8 @@
"category": "Media",
"desc": {
"hu": "Hangszerkesztő és -felvevő",
- "en": "Audio editor and recorder"
+ "en": "Audio editor and recorder",
+ "de": "Audio-Editor und Recorder"
},
"type": "pacman",
"packages": [
@@ -89,7 +51,8 @@
"category": "Security",
"desc": {
"hu": "Bitwarden jelszókezelő",
- "en": "Bitwarden password manager"
+ "en": "Bitwarden password manager",
+ "de": "Bitwarden-Passwortmanager"
},
"type": "pacman",
"packages": [
@@ -102,7 +65,8 @@
"category": "Games",
"desc": {
"hu": "Wine prefix kezelő",
- "en": "Wine prefix manager"
+ "en": "Wine prefix manager",
+ "de": "Wine-Prefix-Verwaltung"
},
"type": "flatpak-user",
"flatpak_id": "com.usebottles.bottles"
@@ -113,7 +77,8 @@
"category": "Internet",
"desc": {
"hu": "Brave Origin - a Brave letisztított, reklám/rewards/kripto-mentes változata",
- "en": "Brave Origin - a decluttered version of Brave without ads, rewards, or crypto features"
+ "en": "Brave Origin - a decluttered version of Brave without ads, rewards, or crypto features",
+ "de": "Brave Origin - eine entschlackte Brave-Version ohne Werbung, Rewards und Krypto-Funktionen"
},
"type": "pacman",
"config_dir": "com.brave.Browser/config/BraveSoftware/Brave-Browser",
@@ -125,7 +90,8 @@
"category": "Office",
"desc": {
"hu": "E-book kezelő",
- "en": "E-book manager"
+ "en": "E-book manager",
+ "de": "E-Book-Verwaltung"
},
"type": "pacman",
"packages": [
@@ -138,7 +104,8 @@
"category": "System",
"desc": {
"hu": "AMD GPU vezérlő alkalmazás",
- "en": "AMD GPU control application"
+ "en": "AMD GPU control application",
+ "de": "Steuerungsprogramm für AMD-GPUs"
},
"type": "script",
"script": "corectrl.sh",
@@ -153,7 +120,8 @@
"category": "Media",
"desc": {
"hu": "Fotó munkafolyamat alkalmazás (mint a Lightroom)",
- "en": "Photo workflow application (like Lightroom)"
+ "en": "Photo workflow application (like Lightroom)",
+ "de": "Foto-Workflow-Anwendung (wie Lightroom)"
},
"type": "flatpak-user",
"flatpak_id": "org.darktable.Darktable"
@@ -164,7 +132,8 @@
"category": "Internet",
"desc": {
"hu": "Discord kliens Vencord móddal",
- "en": "Discord client with Vencord mod"
+ "en": "Discord client with Vencord mod",
+ "de": "Discord-Client mit Vencord-Mod"
},
"type": "script",
"script": "discord.sh",
@@ -178,7 +147,8 @@
"category": "Dev",
"desc": {
"hu": "Docker konténer motor",
- "en": "Docker container engine"
+ "en": "Docker container engine",
+ "de": "Docker-Container-Engine"
},
"type": "pacman",
"packages": [
@@ -194,7 +164,8 @@
"category": "Games",
"desc": {
"hu": "DOS emulátor régi játékokhoz",
- "en": "DOS emulator for old games"
+ "en": "DOS emulator for old games",
+ "de": "DOS-Emulator für alte Spiele"
},
"type": "flatpak-user",
"flatpak_id": "com.dosbox_x.DOSBox-X"
@@ -205,7 +176,8 @@
"category": "System",
"desc": {
"hu": "Kétpaneles fájlkezelő (mint a Total Commander)",
- "en": "Two-panel file manager (like Total Commander)"
+ "en": "Two-panel file manager (like Total Commander)",
+ "de": "Zwei-Fenster-Dateimanager (wie Total Commander)"
},
"type": "pacman",
"packages": [
@@ -218,7 +190,8 @@
"category": "Media",
"desc": {
"hu": "Hangeffektek PipeWire-hoz",
- "en": "Audio effects for PipeWire"
+ "en": "Audio effects for PipeWire",
+ "de": "Audioeffekte für PipeWire"
},
"type": "flatpak-user",
"flatpak_id": "com.github.wwmm.easyeffects"
@@ -229,7 +202,8 @@
"category": "System",
"desc": {
"hu": "Rendszerinformáció megjelenítése a terminálban",
- "en": "System info display in terminal"
+ "en": "System info display in terminal",
+ "de": "Systeminfo-Anzeige im Terminal"
},
"type": "pacman",
"packages": [
@@ -242,7 +216,8 @@
"category": "Security",
"desc": {
"hu": "Homokozó (sandbox) alkalmazásokhoz",
- "en": "Sandbox for applications"
+ "en": "Sandbox for applications",
+ "de": "Sandbox für Anwendungen"
},
"type": "pacman",
"packages": [
@@ -255,7 +230,8 @@
"category": "Media",
"desc": {
"hu": "Adatvédelem-barát YouTube kliens",
- "en": "Privacy-friendly YouTube client"
+ "en": "Privacy-friendly YouTube client",
+ "de": "Datenschutzfreundlicher YouTube-Client"
},
"type": "pacman",
"packages": [
@@ -271,7 +247,8 @@
"category": "Games",
"desc": {
"hu": "GameMode + Gamescope játékoptimalizáláshoz",
- "en": "GameMode + Gamescope for gaming optimization"
+ "en": "GameMode + Gamescope for gaming optimization",
+ "de": "GameMode + Gamescope zur Spieleoptimierung"
},
"type": "pacman",
"packages": [
@@ -286,7 +263,8 @@
"category": "System",
"desc": {
"hu": "Ébresztő, világóra, stopper, időzítő",
- "en": "Alarm, world clock, stopwatch, timer"
+ "en": "Alarm, world clock, stopwatch, timer",
+ "de": "Wecker, Weltuhr, Stoppuhr, Timer"
},
"type": "script",
"script": "gnome-clocks.sh",
@@ -300,7 +278,8 @@
"category": "System",
"desc": {
"hu": "CPU monitorozás és stressz teszt",
- "en": "CPU monitoring and stress testing"
+ "en": "CPU monitoring and stress testing",
+ "de": "CPU-Überwachung und Stresstest"
},
"type": "flatpak-user",
"flatpak_id": "com.leinardi.gst"
@@ -311,7 +290,8 @@
"category": "Media",
"desc": {
"hu": "Patchbay PipeWire-hoz",
- "en": "Patchbay for PipeWire"
+ "en": "Patchbay for PipeWire",
+ "de": "Patchbay für PipeWire"
},
"type": "pacman",
"packages": [
@@ -324,7 +304,8 @@
"category": "Games",
"desc": {
"hu": "Epic Games launcher + MangoHud",
- "en": "Epic Games launcher + MangoHud"
+ "en": "Epic Games launcher + MangoHud",
+ "de": "Epic-Games-Launcher + MangoHud"
},
"type": "flatpak-user",
"flatpak_id": "com.heroicgameslauncher.hgl",
@@ -339,7 +320,8 @@
"category": "System",
"desc": {
"hu": "Egér/billentyűzet gombkiosztás átalakító, makró eszköz",
- "en": "Mouse/keyboard button remapper, macro tool"
+ "en": "Mouse/keyboard button remapper, macro tool",
+ "de": "Tastenbelegung für Maus und Tastatur, Makro-Werkzeug"
},
"type": "pacman",
"packages": [
@@ -352,7 +334,8 @@
"category": "Media",
"desc": {
"hu": "Jellyfin kliens médiastreameléshez",
- "en": "Jellyfin client for media streaming"
+ "en": "Jellyfin client for media streaming",
+ "de": "Jellyfin-Client für Medienstreaming"
},
"type": "flatpak-user",
"flatpak_id": "org.jellyfin.JellyfinDesktop"
@@ -363,7 +346,8 @@
"category": "System",
"desc": {
"hu": "Telefon és PC összekapcsolása",
- "en": "Connect phone and PC"
+ "en": "Connect phone and PC",
+ "de": "Handy und PC verbinden"
},
"type": "pacman",
"packages": [
@@ -376,7 +360,8 @@
"category": "Media",
"desc": {
"hu": "Videószerkesztő Linuxra",
- "en": "Video editor for Linux"
+ "en": "Video editor for Linux",
+ "de": "Videoeditor für Linux"
},
"type": "flatpak-user",
"flatpak_id": "org.kde.kdenlive"
@@ -387,7 +372,8 @@
"category": "Security",
"desc": {
"hu": "Jelszókezelő titkosított helyi adatbázissal",
- "en": "Password manager with encrypted local database"
+ "en": "Password manager with encrypted local database",
+ "de": "Passwortmanager mit verschlüsselter lokaler Datenbank"
},
"type": "pacman",
"packages": [
@@ -400,7 +386,8 @@
"category": "System",
"desc": {
"hu": "Kétpaneles fájlkezelő",
- "en": "Two-panel file manager"
+ "en": "Two-panel file manager",
+ "de": "Zwei-Fenster-Dateimanager"
},
"type": "pacman",
"packages": [
@@ -413,7 +400,8 @@
"category": "System",
"desc": {
"hu": "Virtualizáció KVM + QEMU-val",
- "en": "Virtualization with KVM + QEMU"
+ "en": "Virtualization with KVM + QEMU",
+ "de": "Virtualisierung mit KVM + QEMU"
},
"type": "script",
"script": "kvm.sh",
@@ -427,7 +415,8 @@
"category": "Office",
"desc": {
"hu": "LibreOffice Fresh magyar nyelvvel",
- "en": "LibreOffice Fresh with Hungarian language"
+ "en": "LibreOffice Fresh with Hungarian language",
+ "de": "LibreOffice Fresh mit ungarischer Sprache"
},
"type": "pacman",
"packages": [
@@ -441,7 +430,8 @@
"category": "Internet",
"desc": {
"hu": "Firefox ESR alapú adatvédelmi böngésző",
- "en": "Firefox ESR based privacy browser"
+ "en": "Firefox ESR based privacy browser",
+ "de": "Datenschutzbrowser auf Basis von Firefox ESR"
},
"type": "flatpak-user",
"flatpak_id": "io.gitlab.librewolf-community"
@@ -452,7 +442,8 @@
"category": "Games",
"desc": {
"hu": "Játék launcher Wine támogatással",
- "en": "Game launcher with Wine support"
+ "en": "Game launcher with Wine support",
+ "de": "Spiele-Launcher mit Wine-Unterstützung"
},
"type": "script",
"script": "lutris.sh",
@@ -466,7 +457,8 @@
"category": "Games",
"desc": {
"hu": "FPS overlay és beállítások (mint az MSI Afterburner)",
- "en": "FPS overlay and settings (like MSI Afterburner)"
+ "en": "FPS overlay and settings (like MSI Afterburner)",
+ "de": "FPS-Overlay und Einstellungen (wie MSI Afterburner)"
},
"type": "pacman",
"config_dir": ".config/MangoHud",
@@ -483,7 +475,8 @@
"category": "System",
"desc": {
"hu": "Kétpaneles terminálos fájlkezelő",
- "en": "Two-panel terminal file manager"
+ "en": "Two-panel terminal file manager",
+ "de": "Zwei-Fenster-Dateimanager im Terminal"
},
"type": "pacman",
"packages": [
@@ -499,7 +492,8 @@
"category": "Internet",
"desc": {
"hu": "Hangchat alkalmazás",
- "en": "Voice chat application"
+ "en": "Voice chat application",
+ "de": "Sprachchat-Anwendung"
},
"type": "pacman",
"packages": [
@@ -512,7 +506,8 @@
"category": "Media",
"desc": {
"hu": "Streamelő és felvevő szoftver",
- "en": "Streaming and recording software"
+ "en": "Streaming and recording software",
+ "de": "Streaming- und Aufnahmesoftware"
},
"type": "flatpak-user",
"flatpak_id": "com.obsproject.Studio"
@@ -523,7 +518,8 @@
"category": "Office",
"desc": {
"hu": "MS Office kompatibilis irodai csomag",
- "en": "MS Office compatible suite"
+ "en": "MS Office compatible suite",
+ "de": "MS-Office-kompatible Suite"
},
"type": "flatpak-user",
"flatpak_id": "org.onlyoffice.desktopeditors"
@@ -534,7 +530,8 @@
"category": "System",
"desc": {
"hu": "7-Zip tömörítő kezelő",
- "en": "7-Zip archive manager"
+ "en": "7-Zip archive manager",
+ "de": "7-Zip-Archivverwaltung"
},
"type": "pacman",
"packages": [
@@ -547,7 +544,8 @@
"category": "System",
"desc": {
"hu": "Peazip grafikus tömörítő kezelő",
- "en": "Peazip GUI archive manager"
+ "en": "Peazip GUI archive manager",
+ "de": "PeaZip-Archivverwaltung mit Oberfläche"
},
"type": "pacman",
"packages": [
@@ -560,7 +558,8 @@
"category": "System",
"desc": {
"hu": "Rendszerstabilitás teszter",
- "en": "System Stability Tester"
+ "en": "System Stability Tester",
+ "de": "Systemstabilitätstest"
},
"type": "pacman",
"packages": [
@@ -573,7 +572,8 @@
"category": "System",
"desc": {
"hu": "Grafikus csomagkezelő",
- "en": "Graphical package manager"
+ "en": "Graphical package manager",
+ "de": "Grafischer Paketmanager"
},
"type": "pacman",
"packages": [
@@ -586,7 +586,8 @@
"category": "Media",
"desc": {
"hu": "Alkalmazásonkénti hangerőszabályzás",
- "en": "Per-application volume control"
+ "en": "Per-application volume control",
+ "de": "Lautstärkeregelung pro Anwendung"
},
"type": "pacman",
"packages": [
@@ -599,7 +600,8 @@
"category": "Media",
"desc": {
"hu": "GIMP Photoshop-szerű felülettel",
- "en": "GIMP with Photoshop-like interface"
+ "en": "GIMP with Photoshop-like interface",
+ "de": "GIMP mit Photoshop-ähnlicher Oberfläche"
},
"type": "flatpak-user",
"flatpak_id": "org.gimp.GIMP",
@@ -625,7 +627,8 @@
"category": "System",
"desc": {
"hu": "Nyomtató driverek és CUPS",
- "en": "Printer drivers and CUPS"
+ "en": "Printer drivers and CUPS",
+ "de": "Druckertreiber und CUPS"
},
"type": "script",
"script": "printer.sh",
@@ -640,7 +643,8 @@
"category": "Internet",
"desc": {
"hu": "Torrent kliens",
- "en": "Torrent client"
+ "en": "Torrent client",
+ "de": "Torrent-Client"
},
"type": "pacman",
"config_dir": "qBittorrent",
@@ -655,7 +659,8 @@
"category": "Internet",
"desc": {
"hu": "Titkosított üzenetküldő",
- "en": "Encrypted messenger"
+ "en": "Encrypted messenger",
+ "de": "Verschlüsselter Messenger"
},
"type": "pacman",
"packages": [
@@ -668,7 +673,8 @@
"category": "Media",
"desc": {
"hu": "Zenestreamelő szolgáltatás",
- "en": "Music streaming service"
+ "en": "Music streaming service",
+ "de": "Musik-Streamingdienst"
},
"type": "flatpak-user",
"flatpak_id": "com.spotify.Client"
@@ -679,7 +685,8 @@
"category": "Media",
"desc": {
"hu": "Ingyenes Spotify kliens premium nélkül",
- "en": "Free Spotify client without premium"
+ "en": "Free Spotify client without premium",
+ "de": "Kostenloser Spotify-Client ohne Premium"
},
"type": "flatpak-user",
"flatpak_id": "com.github.KRTirtho.Spotube"
@@ -690,7 +697,8 @@
"category": "Games",
"desc": {
"hu": "Steam + ProtonGE (összetett telepítés)",
- "en": "Steam + ProtonGE (complex installation)"
+ "en": "Steam + ProtonGE (complex installation)",
+ "de": "Steam + ProtonGE (umfangreiche Installation)"
},
"type": "script",
"script": "steam.sh",
@@ -704,7 +712,8 @@
"category": "Internet",
"desc": {
"hu": "TeamSpeak VOIP kliens",
- "en": "TeamSpeak VOIP client"
+ "en": "TeamSpeak VOIP client",
+ "de": "TeamSpeak-VoIP-Client"
},
"type": "pacman",
"packages": [
@@ -717,7 +726,8 @@
"category": "Internet",
"desc": {
"hu": "Titkosított üzenetküldő",
- "en": "Encrypted messenger"
+ "en": "Encrypted messenger",
+ "de": "Verschlüsselter Messenger"
},
"type": "pacman",
"packages": [
@@ -730,7 +740,8 @@
"category": "System",
"desc": {
"hu": "Szín-telítettség beállító eszköz",
- "en": "Color saturation adjustment tool"
+ "en": "Color saturation adjustment tool",
+ "de": "Werkzeug zur Anpassung der Farbsättigung"
},
"type": "flatpak-user",
"flatpak_id": "io.github.libvibrant.vibrantLinux"
@@ -741,7 +752,8 @@
"category": "Internet",
"desc": {
"hu": "Vivaldi webböngésző",
- "en": "Vivaldi web browser"
+ "en": "Vivaldi web browser",
+ "de": "Vivaldi-Webbrowser"
},
"type": "pacman",
"packages": [
@@ -762,7 +774,8 @@
"category": "Media",
"desc": {
"hu": "VLC médialejátszó (Flatpak)",
- "en": "VLC Media Player (Flatpak)"
+ "en": "VLC Media Player (Flatpak)",
+ "de": "VLC Media Player (Flatpak)"
},
"type": "flatpak-user",
"flatpak_id": "org.videolan.VLC",
@@ -775,7 +788,8 @@
"category": "Games",
"desc": {
"hu": "AMD Vulkan driverek gaminghez",
- "en": "AMD Vulkan drivers for gaming"
+ "en": "AMD Vulkan drivers for gaming",
+ "de": "AMD-Vulkan-Treiber zum Spielen"
},
"type": "pacman",
"packages": [
@@ -790,7 +804,8 @@
"category": "Games",
"desc": {
"hu": "Xbox kontroller támogatás (Bluetooth)",
- "en": "Xbox Controller support (Bluetooth)"
+ "en": "Xbox Controller support (Bluetooth)",
+ "de": "Xbox-Controller-Unterstützung (Bluetooth)"
},
"type": "pacman",
"packages": [
@@ -803,10 +818,15 @@
"category": "System",
"desc": {
"hu": "Windows 11 telepítő - csak haladóknak!",
- "en": "Windows 11 Installer - Experts Only!"
+ "en": "Windows 11 Installer - Experts Only!",
+ "de": "Windows-11-Installer - nur für Experten!"
},
"type": "message",
- "message": "!! MAJOM VAGY !!\n\nWindows 11? Komolyan? Linux-on vagy, elvezd!\n\nHa tenyleg kell Windows, hasznalj KVM/QEMU-t a listabol."
+ "message": {
+ "hu": "!! MAJOM VAGY !!\n\nWindows 11? Komolyan? Linux-on vagy, elvezd!\n\nHa tenyleg kell Windows, hasznalj KVM/QEMU-t a listabol.",
+ "en": "!! ARE YOU A MONKEY !!\n\nWindows 11? Seriously? You are on Linux, enjoy it!\n\nIf you really need Windows, use KVM/QEMU from the list.",
+ "de": "!! BIST DU EIN AFFE !!\n\nWindows 11? Im Ernst? Du bist auf Linux, genieß es!\n\nWenn du wirklich Windows brauchst, nutze KVM/QEMU aus der Liste."
+ }
}
]
}
diff --git a/raveos-center/adat/mentes/backup-paths.json b/raveos-center/adat/mentes/backup-paths.json
index abfe315..9cd4ced 100644
--- a/raveos-center/adat/mentes/backup-paths.json
+++ b/raveos-center/adat/mentes/backup-paths.json
@@ -5,11 +5,13 @@
"id": "apps",
"label": {
"hu": "Alkalmazásprofilok",
- "en": "Application profiles"
+ "en": "Application profiles",
+ "de": "Anwendungsprofile"
},
"description": {
"hu": "Böngészők, kommunikációs appok és fontos desktop alkalmazások profiljai.",
- "en": "Profiles of browsers, communication apps, and important desktop applications."
+ "en": "Profiles of browsers, communication apps, and important desktop applications.",
+ "de": "Profile von Browsern, Kommunikations-Apps und wichtigen Desktop-Anwendungen."
},
"default_expanded": true,
"items": [
@@ -17,7 +19,8 @@
"id": "librewolf_profile",
"label": {
"hu": "LibreWolf profil",
- "en": "LibreWolf profile"
+ "en": "LibreWolf profile",
+ "de": "LibreWolf-Profil"
},
"path": ".var/app/io.gitlab.librewolf-community/.librewolf",
"scope": "home",
@@ -28,7 +31,8 @@
"id": "vivaldi_profile",
"label": {
"hu": "Vivaldi profil",
- "en": "Vivaldi profile"
+ "en": "Vivaldi profile",
+ "de": "Vivaldi-Profil"
},
"path": ".config/vivaldi",
"scope": "home",
@@ -39,7 +43,8 @@
"id": "brave_profile",
"label": {
"hu": "Brave Origin profil",
- "en": "Brave Origin profile"
+ "en": "Brave Origin profile",
+ "de": "Brave-Origin-Profil"
},
"path": ".config/BraveSoftware/Brave-Origin",
"scope": "home",
@@ -50,7 +55,8 @@
"id": "bitwarden_config",
"label": {
"hu": "Bitwarden beállítások",
- "en": "Bitwarden settings"
+ "en": "Bitwarden settings",
+ "de": "Bitwarden-Einstellungen"
},
"path": ".config/Bitwarden",
"scope": "home",
@@ -61,7 +67,8 @@
"id": "heroic_config",
"label": {
"hu": "Heroic Games Launcher beállítások",
- "en": "Heroic Games Launcher settings"
+ "en": "Heroic Games Launcher settings",
+ "de": "Heroic-Games-Launcher-Einstellungen"
},
"path": ".var/app/com.heroicgameslauncher.hgl/config/heroic",
"scope": "home",
@@ -72,7 +79,8 @@
"id": "qbittorrent_config",
"label": {
"hu": "qBittorrent beállítások",
- "en": "qBittorrent settings"
+ "en": "qBittorrent settings",
+ "de": "qBittorrent-Einstellungen"
},
"path": ".config/qBittorrent",
"scope": "home",
@@ -83,7 +91,8 @@
"id": "signal_config",
"label": {
"hu": "Signal profil",
- "en": "Signal profile"
+ "en": "Signal profile",
+ "de": "Signal-Profil"
},
"path": ".config/Signal",
"scope": "home",
@@ -94,7 +103,8 @@
"id": "telegram_data",
"label": {
"hu": "Telegram Desktop adatok",
- "en": "Telegram Desktop data"
+ "en": "Telegram Desktop data",
+ "de": "Telegram-Desktop-Daten"
},
"path": ".local/share/TelegramDesktop",
"scope": "home",
@@ -105,7 +115,8 @@
"id": "discord_config",
"label": {
"hu": "Discord beállítások",
- "en": "Discord settings"
+ "en": "Discord settings",
+ "de": "Discord-Einstellungen"
},
"path": ".config/discord",
"scope": "home",
@@ -116,7 +127,8 @@
"id": "vencord_config",
"label": {
"hu": "Vencord beállítások",
- "en": "Vencord settings"
+ "en": "Vencord settings",
+ "de": "Vencord-Einstellungen"
},
"path": ".config/Vencord",
"scope": "home",
@@ -127,7 +139,8 @@
"id": "steam_userdata",
"label": {
"hu": "Steam felhasználói adatok",
- "en": "Steam user data"
+ "en": "Steam user data",
+ "de": "Steam-Benutzerdaten"
},
"path": ".local/share/Steam",
"scope": "home",
@@ -135,14 +148,16 @@
"size_hint": "large",
"note": {
"hu": "Nagy lehet, játékadatokat és cache-t is tartalmazhat.",
- "en": "Can be large, may include game data and cache."
+ "en": "Can be large, may include game data and cache.",
+ "de": "Kann groß sein, kann Spieldaten und Cache enthalten."
}
},
{
"id": "lutris_data",
"label": {
"hu": "Lutris adatok",
- "en": "Lutris data"
+ "en": "Lutris data",
+ "de": "Lutris-Daten"
},
"path": ".local/share/lutris",
"scope": "home",
@@ -155,11 +170,13 @@
"id": "desktop",
"label": {
"hu": "Desktop és felület",
- "en": "Desktop and interface"
+ "en": "Desktop and interface",
+ "de": "Desktop und Oberfläche"
},
"description": {
"hu": "Témák, GNOME shell kiegészítők és HUD/overlay beállítások.",
- "en": "Themes, GNOME Shell extensions, and HUD/overlay settings."
+ "en": "Themes, GNOME Shell extensions, and HUD/overlay settings.",
+ "de": "Designs, GNOME-Shell-Erweiterungen und HUD/Overlay-Einstellungen."
},
"default_expanded": true,
"items": [
@@ -167,7 +184,8 @@
"id": "icons_dir",
"label": {
"hu": "Ikonok",
- "en": "Icons"
+ "en": "Icons",
+ "de": "Symbole"
},
"path": ".icons",
"scope": "home",
@@ -178,7 +196,8 @@
"id": "themes_dir",
"label": {
"hu": "Témák",
- "en": "Themes"
+ "en": "Themes",
+ "de": "Designs"
},
"path": ".themes",
"scope": "home",
@@ -189,7 +208,8 @@
"id": "gnome_shell_data",
"label": {
"hu": "GNOME Shell kiegészítők",
- "en": "GNOME Shell extensions"
+ "en": "GNOME Shell extensions",
+ "de": "GNOME-Shell-Erweiterungen"
},
"path": ".local/share/gnome-shell",
"scope": "home",
@@ -200,7 +220,8 @@
"id": "flatpak_overrides",
"label": {
"hu": "Flatpak override-ok",
- "en": "Flatpak overrides"
+ "en": "Flatpak overrides",
+ "de": "Flatpak-Overrides"
},
"path": ".local/share/flatpak/overrides",
"scope": "home",
@@ -211,7 +232,8 @@
"id": "mangohud_config",
"label": {
"hu": "MangoHud beállítások",
- "en": "MangoHud settings"
+ "en": "MangoHud settings",
+ "de": "MangoHud-Einstellungen"
},
"path": ".config/MangoHud",
"scope": "home",
@@ -222,7 +244,8 @@
"id": "goverlay_config",
"label": {
"hu": "GOverlay beállítások",
- "en": "GOverlay settings"
+ "en": "GOverlay settings",
+ "de": "GOverlay-Einstellungen"
},
"path": ".config/goverlay",
"scope": "home",
@@ -235,11 +258,13 @@
"id": "work",
"label": {
"hu": "Munka és produktivitás",
- "en": "Work and productivity"
+ "en": "Work and productivity",
+ "de": "Arbeit und Produktivität"
},
"description": {
"hu": "Irodai, média- és alkotó appok fontos user-adatkönyvtárai.",
- "en": "Important user data directories of office, media, and creative apps."
+ "en": "Important user data directories of office, media, and creative apps.",
+ "de": "Wichtige Benutzerdatenordner von Büro-, Medien- und Kreativ-Apps."
},
"default_expanded": false,
"items": [
@@ -247,7 +272,8 @@
"id": "libreoffice_config",
"label": {
"hu": "LibreOffice beállítások",
- "en": "LibreOffice settings"
+ "en": "LibreOffice settings",
+ "de": "LibreOffice-Einstellungen"
},
"path": ".config/libreoffice",
"scope": "home",
@@ -258,7 +284,8 @@
"id": "onlyoffice_data",
"label": {
"hu": "OnlyOffice adatok",
- "en": "OnlyOffice data"
+ "en": "OnlyOffice data",
+ "de": "OnlyOffice-Daten"
},
"path": ".local/share/onlyoffice",
"scope": "home",
@@ -269,7 +296,8 @@
"id": "calibre_config",
"label": {
"hu": "Calibre beállítások",
- "en": "Calibre settings"
+ "en": "Calibre settings",
+ "de": "Calibre-Einstellungen"
},
"path": ".config/calibre",
"scope": "home",
@@ -280,7 +308,8 @@
"id": "kdenlive_data",
"label": {
"hu": "Kdenlive adatok",
- "en": "Kdenlive data"
+ "en": "Kdenlive data",
+ "de": "Kdenlive-Daten"
},
"path": ".local/share/kdenlive",
"scope": "home",
@@ -291,7 +320,8 @@
"id": "freetube_config",
"label": {
"hu": "FreeTube profil",
- "en": "FreeTube profile"
+ "en": "FreeTube profile",
+ "de": "FreeTube-Profil"
},
"path": ".config/FreeTube",
"scope": "home",
@@ -304,11 +334,13 @@
"id": "content",
"label": {
"hu": "Nagy felhasználói tartalmak",
- "en": "Large user content"
+ "en": "Large user content",
+ "de": "Große Benutzerinhalte"
},
"description": {
"hu": "Nem alapból kijelölt könyvtárak, mert nagyok lehetnek.",
- "en": "Directories not selected by default because they can be large."
+ "en": "Directories not selected by default because they can be large.",
+ "de": "Ordner, die standardmäßig nicht ausgewählt sind, weil sie groß sein können."
},
"default_expanded": false,
"items": [
@@ -316,7 +348,8 @@
"id": "games_dir",
"label": {
"hu": "Games könyvtár",
- "en": "Games directory"
+ "en": "Games directory",
+ "de": "Spieleordner"
},
"path": "Games",
"scope": "home",
@@ -324,14 +357,16 @@
"size_hint": "xlarge",
"note": {
"hu": "Játékadatok miatt nagyon nagy lehet.",
- "en": "Can be very large due to game data."
+ "en": "Can be very large due to game data.",
+ "de": "Kann wegen der Spieldaten sehr groß sein."
}
},
{
"id": "calibre_library",
"label": {
"hu": "Calibre Library",
- "en": "Calibre Library"
+ "en": "Calibre Library",
+ "de": "Calibre-Bibliothek"
},
"path": "Calibre Library",
"scope": "home",
@@ -342,7 +377,8 @@
"id": "desktop_dir",
"label": {
"hu": "Asztal / Desktop",
- "en": "Desktop"
+ "en": "Desktop",
+ "de": "Schreibtisch"
},
"path": "Desktop",
"scope": "home",
@@ -353,7 +389,8 @@
"id": "documents_dir",
"label": {
"hu": "Dokumentumok / Documents",
- "en": "Documents"
+ "en": "Documents",
+ "de": "Dokumente"
},
"path": "Documents",
"scope": "home",
@@ -364,7 +401,8 @@
"id": "downloads_dir",
"label": {
"hu": "Letöltések / Downloads",
- "en": "Downloads"
+ "en": "Downloads",
+ "de": "Downloads"
},
"path": "Downloads",
"scope": "home",
@@ -375,7 +413,8 @@
"id": "pictures_dir",
"label": {
"hu": "Képek / Pictures",
- "en": "Pictures"
+ "en": "Pictures",
+ "de": "Bilder"
},
"path": "Pictures",
"scope": "home",
@@ -386,7 +425,8 @@
"id": "videos_dir",
"label": {
"hu": "Videók / Videos",
- "en": "Videos"
+ "en": "Videos",
+ "de": "Videos"
},
"path": "Videos",
"scope": "home",
@@ -397,7 +437,8 @@
"id": "music_dir",
"label": {
"hu": "Zenék / Music",
- "en": "Music"
+ "en": "Music",
+ "de": "Musik"
},
"path": "Music",
"scope": "home",
@@ -410,11 +451,13 @@
"id": "system",
"label": {
"hu": "Rendszerközeli mentés",
- "en": "System-level backup"
+ "en": "System-level backup",
+ "de": "Sicherung auf Systemebene"
},
"description": {
"hu": "Csak haladó felhasználóknak, külön megerősítéssel.",
- "en": "For advanced users only, requires extra confirmation."
+ "en": "For advanced users only, requires extra confirmation.",
+ "de": "Nur für fortgeschrittene Benutzer, erfordert eine zusätzliche Bestätigung."
},
"default_expanded": false,
"items": [
@@ -422,7 +465,8 @@
"id": "libvirt_system",
"label": {
"hu": "libvirt rendszerbeállítások",
- "en": "libvirt system configuration"
+ "en": "libvirt system configuration",
+ "de": "libvirt-Systemkonfiguration"
},
"path": "/etc/libvirt",
"scope": "system",
@@ -434,7 +478,8 @@
"id": "jellyfin_web_config",
"label": {
"hu": "Jellyfin web config",
- "en": "Jellyfin web config"
+ "en": "Jellyfin web config",
+ "de": "Jellyfin-Webkonfiguration"
},
"path": "/usr/share/jellyfin/web/config.json",
"scope": "system",
diff --git a/raveos-center/helper/hu.rp1.raveos-center.policy b/raveos-center/helper/hu.rp1.raveos-center.policy
index 216bcae..cfb6b37 100644
--- a/raveos-center/helper/hu.rp1.raveos-center.policy
+++ b/raveos-center/helper/hu.rp1.raveos-center.policy
@@ -7,8 +7,10 @@
<action id="hu.rp1.raveos-center.helper">
<description>Run RaveOS Center system maintenance</description>
<description xml:lang="hu">RaveOS Center rendszerművelet futtatása</description>
+ <description xml:lang="de">RaveOS Center Systemvorgang ausführen</description>
<message>Authentication is required to update or maintain the system</message>
<message xml:lang="hu">A rendszer frissítéséhez vagy karbantartásához hitelesítés szükséges</message>
+ <message xml:lang="de">Zum Aktualisieren oder Warten des Systems ist eine Authentifizierung erforderlich</message>
<icon_name>system-software-update</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
diff --git a/raveos-center/helper/raveos-center-helper b/raveos-center/helper/raveos-center-helper
index b8ebb9c..11955f5 100755
--- a/raveos-center/helper/raveos-center-helper
+++ b/raveos-center/helper/raveos-center-helper
@@ -298,8 +298,9 @@ case "${1:-}" in
command -v reflector >/dev/null || pacman -S --needed --noconfirm --color never reflector
uj=$(mktemp /etc/pacman.d/mirrorlist.XXXXXX)
trap 'rm -f "$uj"' EXIT
- reflector -c HU,AT,DE,PL,CZ --protocol https --sort rate --latest 20 \
- --download-timeout 10 --threads 5 --save "$uj"
+ reflector -c HU,AT,DE,PL,CZ,SK --protocol https --completion-percent 100 --delay 3 \
+ --latest 20 --sort rate --number 10 --download-timeout 10 --connection-timeout 5 \
+ --threads 5 --save "$uj"
db=$(grep -c '^Server' "$uj" || true)
[ "$db" -ge 3 ] || { echo "túl kevés működő tükör ($db), a régi lista marad" >&2; exit 1; }
if [ -f /etc/pacman.d/mirrorlist ]; then cp -f /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak; fi
diff --git a/raveos-center/raveos-center.desktop b/raveos-center/raveos-center.desktop
index b7d7486..0475e14 100644
--- a/raveos-center/raveos-center.desktop
+++ b/raveos-center/raveos-center.desktop
@@ -2,8 +2,10 @@
Name=RaveOS Center
GenericName=System Center
GenericName[hu]=Rendszerközpont
+GenericName[de]=Systemzentrale
Comment=Install apps, update and maintain RaveOS
Comment[hu]=Alkalmazások, frissítések és rendszerbeállítások egy helyen
+Comment[de]=Apps, Aktualisierungen und Systemeinstellungen an einem Ort
Exec=raveos-center
Icon=raveos-center
Terminal=false
diff --git a/raveos-center/raveos_center/alkalmazas.py b/raveos-center/raveos_center/alkalmazas.py
index 2c68777..53991f3 100644
--- a/raveos-center/raveos_center/alkalmazas.py
+++ b/raveos-center/raveos_center/alkalmazas.py
@@ -1,7 +1,7 @@
import importlib
from pathlib import Path
-from PyQt6.QtCore import QSize, Qt
+from PyQt6.QtCore import QLibraryInfo, QLocale, QSize, Qt, QTranslator
from PyQt6.QtGui import QColor, QIcon, QPalette, QPixmap
from PyQt6.QtWidgets import (
QApplication,
@@ -17,6 +17,7 @@ from PyQt6.QtWidgets import (
from raveos_center import VERZIO, hatter, oldalak, rendszerinfo, stilus
from raveos_center.elemek import cimke, frissit_stilus
+from raveos_center.forditas import NYELV
from raveos_center.ikonok import ikon
ADAT = Path(__file__).parent / "adat"
@@ -183,6 +184,9 @@ def futtat(argv):
app = QApplication(argv)
app.setApplicationName("RaveOS Center")
app.setDesktopFileName("raveos-center")
+ qt_forditas = QTranslator(app)
+ if qt_forditas.load(QLocale(NYELV), "qtbase", "_", QLibraryInfo.path(QLibraryInfo.LibraryPath.TranslationsPath)):
+ app.installTranslator(qt_forditas)
app.setStyle("Fusion")
app.setPalette(paletta())
app.setStyleSheet(stilus.QSS)
diff --git a/raveos-center/raveos_center/diagnosztika.py b/raveos-center/raveos_center/diagnosztika.py
index 445c4d4..75ff585 100644
--- a/raveos-center/raveos_center/diagnosztika.py
+++ b/raveos-center/raveos_center/diagnosztika.py
@@ -6,17 +6,18 @@ import subprocess
from datetime import datetime
from raveos_center import rendszerinfo
+from raveos_center.forditas import tr
TARTALOM = [
- "rendszer: RaveOS verzió, kernel, asztali környezet",
- "hardver: processzor, memória, videokártya, hálózati és hangeszközök, lemezek",
- "illesztőprogramok: betöltött GPU modulok",
- "csomagok: RaveOS csomagok és a telepített csomagok száma",
- "hibák: hibás szolgáltatások és a rendszernapló hibái az utolsó indítás óta",
- "lemezhasználat és fájlrendszer",
+ tr("rendszer: RaveOS verzió, kernel, asztali környezet"),
+ tr("hardver: processzor, memória, videokártya, hálózati és hangeszközök, lemezek"),
+ tr("illesztőprogramok: betöltött GPU modulok"),
+ tr("csomagok: RaveOS csomagok és a telepített csomagok száma"),
+ tr("hibák: hibás szolgáltatások és a rendszernapló hibái az utolsó indítás óta"),
+ tr("lemezhasználat és fájlrendszer"),
]
-KITAKARAS = "IP- és MAC-címek, lemez UUID-k, egyedi azonosítók, a gép neve és a felhasználóneved"
+KITAKARAS = tr("IP- és MAC-címek, lemez UUID-k, egyedi azonosítók, a gép neve és a felhasználóneved")
def _ki(parancs, ido=30):
@@ -81,5 +82,5 @@ def rendszer_osszegzes():
"RaveOS": rendszerinfo.raveos_verzio(),
"Kernel": platform.release(),
"Asztal": rendszerinfo.asztal(),
- "GPU": ", ".join(rendszerinfo.gpuk()) or "ismeretlen",
+ "GPU": ", ".join(rendszerinfo.gpuk()) or tr("ismeretlen"),
}
diff --git a/raveos-center/raveos_center/driverek.py b/raveos-center/raveos_center/driverek.py
index 6ef7842..ad087b0 100644
--- a/raveos-center/raveos_center/driverek.py
+++ b/raveos-center/raveos_center/driverek.py
@@ -2,17 +2,19 @@ import re
import subprocess
from pathlib import Path
+from raveos_center.forditas import tr
+
SZKRIPT_HELYEK = [
Path("/usr/lib/raveos-center/raveos-gpu-drivers"),
Path(__file__).resolve().parent.parent / "driverek" / "raveos-gpu-drivers",
]
KATEGORIAK = [
- ("gpu", "Videokártya"),
+ ("gpu", tr("Videokártya")),
("wifi", "Wi-Fi"),
- ("halozat", "Vezetékes hálózat"),
- ("hang", "Hang"),
- ("bemenet", "Kontrollerek"),
+ ("halozat", tr("Vezetékes hálózat")),
+ ("hang", tr("Hang")),
+ ("bemenet", tr("Kontrollerek")),
]
OSZTALYOK = {
@@ -136,31 +138,31 @@ def allapot():
elem["gpu"] = True
elem["ajanlott"] = kozos + gyartoi.get(e["gyarto_id"], [])
if terv.get("virtualis") == "1" and e["gyarto_id"] in ("1af4", "1234", "15ad", "1b36", "80ee"):
- elem["megjegyzes"] = "Virtuális gépben fut, a 3D gyorsítást a gazdagép adja."
+ elem["megjegyzes"] = tr("Virtuális gépben fut, a 3D gyorsítást a gazdagép adja.")
elif e["gyarto_id"] == "10de":
csalad = terv.get("nvidia_csalad", "")
elem["megjegyzes"] = {
- "open": "NVIDIA, Turing vagy újabb: nyílt forrású NVIDIA kernelmodul.",
- "580xx": "NVIDIA, Maxwell, Pascal vagy Volta: 580-as hosszú támogatású driver.",
- "470xx": "NVIDIA, Kepler: 470-es örökölt driver, már nem kap frissítést.",
- "nem_tamogatott": "Ehhez a régi NVIDIA kártyához nincs zárt driver, a nyílt nouveau marad.",
+ "open": tr("NVIDIA, Turing vagy újabb: nyílt forrású NVIDIA kernelmodul."),
+ "580xx": tr("NVIDIA, Maxwell, Pascal vagy Volta: 580-as hosszú támogatású driver."),
+ "470xx": tr("NVIDIA, Kepler: 470-es örökölt driver, már nem kap frissítést."),
+ "nem_tamogatott": tr("Ehhez a régi NVIDIA kártyához nincs zárt driver, a nyílt nouveau marad."),
}.get(csalad, "")
elif e["kategoria"] == "wifi" and e["gyarto_id"] == "14e4" and not e["jelenlegi"]:
elem["ajanlott"] = ["broadcom-wl-dkms"] + (terv.get("fejlecek", "").split() or ["linux-cachyos-headers"])
- elem["megjegyzes"] = "Broadcom Wi-Fi: a zárt wl driver szükséges hozzá."
+ elem["megjegyzes"] = tr("Broadcom Wi-Fi: a zárt wl driver szükséges hozzá.")
elif e["kategoria"] == "hang" and "sof" in e["jelenlegi"]:
elem["ajanlott"] = ["sof-firmware"]
- elem["megjegyzes"] = "Intel Sound Open Firmware hangkártya."
+ elem["megjegyzes"] = tr("Intel Sound Open Firmware hangkártya.")
elif not e["jelenlegi"]:
elem["ajanlott"] = ["linux-firmware"]
- elem["megjegyzes"] = "Nincs betöltött driver, a firmware-csomag hiányozhat."
+ elem["megjegyzes"] = tr("Nincs betöltött driver, a firmware-csomag hiányozhat.")
elem["hianyzik"] = [p for p in elem["ajanlott"] if p not in telepitett]
lista.append(elem)
for k in _usb_kontrollerek():
elem = {
"kategoria": "bemenet",
"nev": k["nev"],
- "jelenlegi": "kernel (beépített)",
+ "jelenlegi": tr("kernel (beépített)"),
"ajanlott": [],
"megjegyzes": "",
"gpu": False,
@@ -168,7 +170,7 @@ def allapot():
if k["gyarto"] == "045e" and k["termek"] in XBOX_ADAPTEREK:
elem["ajanlott"] = ["xone-dkms"] + (terv.get("fejlecek", "").split() or ["linux-cachyos-headers"])
elem["jelenlegi"] = ""
- elem["megjegyzes"] = "Xbox vezeték nélküli adapter: az xone driver kell hozzá."
+ elem["megjegyzes"] = tr("Xbox vezeték nélküli adapter: az xone driver kell hozzá.")
elem["hianyzik"] = [p for p in elem["ajanlott"] if p not in telepitett]
lista.append(elem)
return lista
diff --git a/raveos-center/raveos_center/elemek.py b/raveos-center/raveos_center/elemek.py
index 72f68ea..7b0a193 100644
--- a/raveos-center/raveos_center/elemek.py
+++ b/raveos-center/raveos_center/elemek.py
@@ -15,6 +15,8 @@ from PyQt6.QtWidgets import (
QWidget,
)
+from raveos_center.forditas import tr
+
def cimke(szoveg, nev=None, tordel=False):
c = QLabel(szoveg)
@@ -252,7 +254,7 @@ class Kapcsolo(QAbstractButton):
self.setCheckable(True)
self.setCursor(Qt.CursorShape.PointingHandCursor)
self.setFixedSize(QSize(44, 24))
- self.setAccessibleName("kapcsoló")
+ self.setAccessibleName(tr("kapcsoló"))
def sizeHint(self):
return QSize(44, 24)
@@ -293,7 +295,7 @@ class Csillagok(QWidget):
self.mutatott = 0
self.valaszthato = valaszthato
self.setFixedSize(self.sizeHint())
- self.setAccessibleName("csillagos értékelés")
+ self.setAccessibleName(tr("csillagos értékelés"))
if valaszthato:
self.setMouseTracking(True)
self.setCursor(Qt.CursorShape.PointingHandCursor)
diff --git a/raveos-center/raveos_center/folyamat.py b/raveos-center/raveos_center/folyamat.py
index 586491f..ae01b19 100644
--- a/raveos-center/raveos_center/folyamat.py
+++ b/raveos-center/raveos_center/folyamat.py
@@ -3,10 +3,11 @@ from PyQt6.QtWidgets import QDialog, QHBoxLayout, QPlainTextEdit, QVBoxLayout
from raveos_center import hatter, muveletek
from raveos_center.elemek import cimke, gomb
+from raveos_center.forditas import tr
class FolyamatAblak(QDialog):
- def __init__(self, szulo, cim, lepesek, siker_szoveg="Kész.", hiba_szoveg="A művelet nem sikerült."):
+ def __init__(self, szulo, cim, lepesek, siker_szoveg=tr("Kész."), hiba_szoveg=tr("A művelet nem sikerült.")):
super().__init__(szulo)
self.setWindowTitle(cim)
self.resize(760, 520)
@@ -16,11 +17,11 @@ class FolyamatAblak(QDialog):
doboz = QVBoxLayout(self)
doboz.setContentsMargins(28, 24, 28, 20)
doboz.setSpacing(12)
- self.felirat = cimke("FOLYAMATBAN", "eyebrow")
+ self.felirat = cimke(tr("FOLYAMATBAN"), "eyebrow")
doboz.addWidget(self.felirat)
self.cim = cimke(cim.upper(), "h2", True)
doboz.addWidget(self.cim)
- self.allapot = cimke("Indul...", "masodlagos", True)
+ self.allapot = cimke(tr("Indul..."), "masodlagos", True)
doboz.addWidget(self.allapot)
self.naplo = QPlainTextEdit()
self.naplo.setObjectName("naplo")
@@ -29,7 +30,7 @@ class FolyamatAblak(QDialog):
doboz.addWidget(self.naplo, 1)
sor = QHBoxLayout()
sor.addStretch(1)
- self.bezar = gomb("Bezárás", fo=True)
+ self.bezar = gomb(tr("Bezárás"), fo=True)
self.bezar.setEnabled(False)
self.bezar.clicked.connect(self.accept)
sor.addWidget(self.bezar)
@@ -47,11 +48,11 @@ class FolyamatAblak(QDialog):
def _kesz(self, rendben, hibasak):
hatter.ervenytelenit()
self.rendben = rendben
- self.felirat.setText("KÉSZ" if rendben else "HIBA")
+ self.felirat.setText(tr("KÉSZ") if rendben else tr("HIBA"))
if rendben:
self.allapot.setText(self.siker_szoveg)
else:
- self.allapot.setText(f"{self.hiba_szoveg} Sikertelen lépés: {', '.join(hibasak)}")
+ self.allapot.setText(tr("{0} Sikertelen lépés: {1}", self.hiba_szoveg, ', '.join(hibasak)))
self.allapot.setObjectName("figyelem")
self.allapot.style().unpolish(self.allapot)
self.allapot.style().polish(self.allapot)
diff --git a/raveos-center/raveos_center/forditas.py b/raveos-center/raveos_center/forditas.py
new file mode 100644
index 0000000..b521a02
--- /dev/null
+++ b/raveos-center/raveos_center/forditas.py
@@ -0,0 +1,30 @@
+import json
+import os
+from pathlib import Path
+
+NYELVEK = ("hu", "en", "de")
+
+
+def _nyelv():
+ for valtozo in ("RAVEOS_CENTER_LANG", "LANGUAGE", "LC_ALL", "LC_MESSAGES", "LANG"):
+ ertek = os.environ.get(valtozo, "")
+ if not ertek or ertek in ("C", "POSIX") or ertek.startswith("C."):
+ continue
+ kod = ertek.split(":")[0][:2].lower()
+ return kod if kod in NYELVEK else "en"
+ return "hu"
+
+
+NYELV = _nyelv()
+_tabla = {}
+if NYELV != "hu":
+ try:
+ _tabla = json.loads((Path(__file__).parent / "forditasok.json").read_text(encoding="utf-8"))
+ except (OSError, ValueError):
+ _tabla = {}
+
+
+def tr(szoveg, *ertekek):
+ sor = _tabla.get(szoveg, {})
+ forditott = sor.get(NYELV) or sor.get("en") or szoveg
+ return forditott.format(*ertekek) if ertekek else forditott
diff --git a/raveos-center/raveos_center/forditasok.json b/raveos-center/raveos_center/forditasok.json
new file mode 100644
index 0000000..df1a3d6
--- /dev/null
+++ b/raveos-center/raveos_center/forditasok.json
@@ -0,0 +1,1998 @@
+{
+ "IP- és MAC-címek, lemez UUID-k, egyedi azonosítók, a gép neve és a felhasználóneved": {
+ "en": "IP and MAC addresses, disk UUIDs, unique identifiers, the computer name and your user name",
+ "de": "IP- und MAC-Adressen, Datenträger-UUIDs, eindeutige Kennungen, der Computername und dein Benutzername"
+ },
+ "rendszer: RaveOS verzió, kernel, asztali környezet": {
+ "en": "system: RaveOS version, kernel, desktop environment",
+ "de": "System: RaveOS-Version, Kernel, Desktopumgebung"
+ },
+ "hardver: processzor, memória, videokártya, hálózati és hangeszközök, lemezek": {
+ "en": "hardware: processor, memory, graphics card, network and audio devices, disks",
+ "de": "Hardware: Prozessor, Arbeitsspeicher, Grafikkarte, Netzwerk- und Audiogeräte, Datenträger"
+ },
+ "illesztőprogramok: betöltött GPU modulok": {
+ "en": "drivers: loaded GPU modules",
+ "de": "Treiber: geladene GPU-Module"
+ },
+ "csomagok: RaveOS csomagok és a telepített csomagok száma": {
+ "en": "packages: RaveOS packages and the number of installed packages",
+ "de": "Pakete: RaveOS-Pakete und die Anzahl der installierten Pakete"
+ },
+ "hibák: hibás szolgáltatások és a rendszernapló hibái az utolsó indítás óta": {
+ "en": "errors: failed services and system log errors since the last boot",
+ "de": "Fehler: fehlgeschlagene Dienste und Systemprotokollfehler seit dem letzten Start"
+ },
+ "lemezhasználat és fájlrendszer": {
+ "en": "disk usage and file system",
+ "de": "Speicherbelegung und Dateisystem"
+ },
+ "ismeretlen": {
+ "en": "unknown",
+ "de": "unbekannt"
+ },
+ "Videokártya": {
+ "en": "Graphics card",
+ "de": "Grafikkarte"
+ },
+ "Vezetékes hálózat": {
+ "en": "Wired network",
+ "de": "Kabelnetzwerk"
+ },
+ "Hang": {
+ "en": "Audio",
+ "de": "Audio"
+ },
+ "Kontrollerek": {
+ "en": "Controllers",
+ "de": "Controller"
+ },
+ "kernel (beépített)": {
+ "en": "kernel (built-in)",
+ "de": "Kernel (eingebaut)"
+ },
+ "Xbox vezeték nélküli adapter: az xone driver kell hozzá.": {
+ "en": "Xbox wireless adapter: requires the xone driver.",
+ "de": "Xbox-Wireless-Adapter: benötigt den xone-Treiber."
+ },
+ "Virtuális gépben fut, a 3D gyorsítást a gazdagép adja.": {
+ "en": "Running in a virtual machine, 3D acceleration is provided by the host.",
+ "de": "Läuft in einer virtuellen Maschine, die 3D-Beschleunigung kommt vom Host."
+ },
+ "Broadcom Wi-Fi: a zárt wl driver szükséges hozzá.": {
+ "en": "Broadcom Wi-Fi: requires the proprietary wl driver.",
+ "de": "Broadcom-WLAN: benötigt den proprietären wl-Treiber."
+ },
+ "Intel Sound Open Firmware hangkártya.": {
+ "en": "Intel Sound Open Firmware sound card.",
+ "de": "Intel-Sound-Open-Firmware-Soundkarte."
+ },
+ "Nincs betöltött driver, a firmware-csomag hiányozhat.": {
+ "en": "No driver loaded, the firmware package may be missing.",
+ "de": "Kein Treiber geladen, möglicherweise fehlt das Firmware-Paket."
+ },
+ "NVIDIA, Turing vagy újabb: nyílt forrású NVIDIA kernelmodul.": {
+ "en": "NVIDIA, Turing or newer: open source NVIDIA kernel module.",
+ "de": "NVIDIA, Turing oder neuer: quelloffenes NVIDIA-Kernelmodul."
+ },
+ "NVIDIA, Maxwell, Pascal vagy Volta: 580-as hosszú támogatású driver.": {
+ "en": "NVIDIA, Maxwell, Pascal or Volta: 580 long-term support driver.",
+ "de": "NVIDIA, Maxwell, Pascal oder Volta: 580er Treiber mit Langzeitsupport."
+ },
+ "NVIDIA, Kepler: 470-es örökölt driver, már nem kap frissítést.": {
+ "en": "NVIDIA, Kepler: 470 legacy driver, no longer receives updates.",
+ "de": "NVIDIA, Kepler: 470er Legacy-Treiber, erhält keine Updates mehr."
+ },
+ "Ehhez a régi NVIDIA kártyához nincs zárt driver, a nyílt nouveau marad.": {
+ "en": "There is no proprietary driver for this old NVIDIA card, the open nouveau driver stays.",
+ "de": "Für diese alte NVIDIA-Karte gibt es keinen proprietären Treiber, der offene nouveau-Treiber bleibt."
+ },
+ "kapcsoló": {
+ "en": "switch",
+ "de": "Schalter"
+ },
+ "csillagos értékelés": {
+ "en": "star rating",
+ "de": "Sternebewertung"
+ },
+ "Kész.": {
+ "en": "Done.",
+ "de": "Fertig."
+ },
+ "A művelet nem sikerült.": {
+ "en": "The operation failed.",
+ "de": "Der Vorgang ist fehlgeschlagen."
+ },
+ "FOLYAMATBAN": {
+ "en": "IN PROGRESS",
+ "de": "LÄUFT"
+ },
+ "Indul...": {
+ "en": "Starting...",
+ "de": "Startet..."
+ },
+ "Bezárás": {
+ "en": "Close",
+ "de": "Schließen"
+ },
+ "KÉSZ": {
+ "en": "DONE",
+ "de": "FERTIG"
+ },
+ "HIBA": {
+ "en": "ERROR",
+ "de": "FEHLER"
+ },
+ "{0} Sikertelen lépés: {1}": {
+ "en": "{0} Failed step: {1}",
+ "de": "{0} Fehlgeschlagener Schritt: {1}"
+ },
+ "A rendszer alapból is performance módban fut.": {
+ "en": "The system already runs in performance mode by default.",
+ "de": "Das System läuft bereits standardmäßig im Performance-Modus."
+ },
+ "Alapértelmezett": {
+ "en": "Default",
+ "de": "Standard"
+ },
+ "Csak FPS": {
+ "en": "FPS only",
+ "de": "Nur FPS"
+ },
+ "Vízszintes sáv": {
+ "en": "Horizontal bar",
+ "de": "Horizontale Leiste"
+ },
+ "Bővített": {
+ "en": "Extended",
+ "de": "Erweitert"
+ },
+ "Részletes": {
+ "en": "Detailed",
+ "de": "Ausführlich"
+ },
+ "A futó kernel nem támogatja (sched_ext nélkül fordították).": {
+ "en": "The running kernel does not support it (built without sched_ext).",
+ "de": "Der laufende Kernel unterstützt es nicht (ohne sched_ext gebaut)."
+ },
+ "Most fut: {0}": {
+ "en": "Running now: {0}",
+ "de": "Läuft gerade: {0}"
+ },
+ "Ehhez előbb a GameMode-ot kapcsold be.": {
+ "en": "Turn on GameMode first.",
+ "de": "Schalte zuerst GameMode ein."
+ },
+ "Ezen a gépen nincs órajel-szabályozás (pl. virtuális gép).": {
+ "en": "This computer has no CPU frequency scaling (e.g. a virtual machine).",
+ "de": "Dieser Computer hat keine Taktsteuerung (z. B. virtuelle Maschine)."
+ },
+ "Kijelentkezés és újra bejelentkezés után lép életbe.": {
+ "en": "Takes effect after logging out and back in.",
+ "de": "Wird nach Ab- und erneutem Anmelden wirksam."
+ },
+ "A Steam munkamenethez a Steam is szükséges.": {
+ "en": "The Steam session also requires Steam.",
+ "de": "Die Steam-Sitzung benötigt auch Steam."
+ },
+ "A RaveOS kernelébe be van építve, mindig aktív.": {
+ "en": "Built into the RaveOS kernel, always active.",
+ "de": "Im RaveOS-Kernel eingebaut, immer aktiv."
+ },
+ "MangoHud telepítése": {
+ "en": "Installing MangoHud",
+ "de": "MangoHud installieren"
+ },
+ "Játékra hangolt ütemező": {
+ "en": "Gaming-tuned scheduler",
+ "de": "Für Spiele optimierter Scheduler"
+ },
+ "Nem sikerült elérni a szervert. Ellenőrizd az internetkapcsolatot.": {
+ "en": "Could not reach the server. Check your internet connection.",
+ "de": "Der Server ist nicht erreichbar. Prüfe deine Internetverbindung."
+ },
+ "Túl sok kérés rövid idő alatt. Próbáld újra kicsit később.": {
+ "en": "Too many requests in a short time. Try again a little later.",
+ "de": "Zu viele Anfragen in kurzer Zeit. Versuche es etwas später erneut."
+ },
+ "Ez a jegy le van zárva, már nem lehet rá válaszolni.": {
+ "en": "This ticket is closed, you can no longer reply to it.",
+ "de": "Dieses Ticket ist geschlossen, du kannst nicht mehr darauf antworten."
+ },
+ "Ez a jegy már nem létezik.": {
+ "en": "This ticket no longer exists.",
+ "de": "Dieses Ticket existiert nicht mehr."
+ },
+ "A megadott naplóazonosító nem létezik.": {
+ "en": "The given log ID does not exist.",
+ "de": "Die angegebene Protokoll-ID existiert nicht."
+ },
+ "Ez a gép ki van tiltva a Visszajelzés használatából.": {
+ "en": "This computer is banned from using Feedback.",
+ "de": "Dieser Computer ist von der Nutzung des Feedbacks ausgeschlossen."
+ },
+ "A szerver hibát jelzett ({0}).": {
+ "en": "The server reported an error ({0}).",
+ "de": "Der Server hat einen Fehler gemeldet ({0})."
+ },
+ "{0} aktív tükör": {
+ "en": "Active mirrors: {0}",
+ "de": "Aktive Spiegelserver: {0}"
+ },
+ "A paccache nincs telepítve (pacman-contrib).": {
+ "en": "paccache is not installed (pacman-contrib).",
+ "de": "paccache ist nicht installiert (pacman-contrib)."
+ },
+ "{0} csomagfájl, {1}": {
+ "en": "Package files: {0}, {1}",
+ "de": "Paketdateien: {0}, {1}"
+ },
+ "Nincs törölhető csomagfájl.": {
+ "en": "No package files to delete.",
+ "de": "Keine löschbaren Paketdateien."
+ },
+ "{0} árva csomag": {
+ "en": "Orphan packages: {0}",
+ "de": "Verwaiste Pakete: {0}"
+ },
+ "Nincs árva csomag.": {
+ "en": "No orphan packages.",
+ "de": "Keine verwaisten Pakete."
+ },
+ "Jelenleg {0} {1}B": {
+ "en": "Currently {0} {1}B",
+ "de": "Aktuell {0} {1}B"
+ },
+ "A napló mérete nem olvasható.": {
+ "en": "The log size cannot be read.",
+ "de": "Die Protokollgröße kann nicht gelesen werden."
+ },
+ "A Flatpak nincs telepítve.": {
+ "en": "Flatpak is not installed.",
+ "de": "Flatpak ist nicht installiert."
+ },
+ "{0} nem használt runtime": {
+ "en": "Unused runtimes: {0}",
+ "de": "Unbenutzte Runtimes: {0}"
+ },
+ "Nincs nem használt runtime.": {
+ "en": "No unused runtimes.",
+ "de": "Keine unbenutzten Runtimes."
+ },
+ "Nincs kulcscsomag.": {
+ "en": "No keyring package.",
+ "de": "Kein Schlüsselbundpaket."
+ },
+ "Csomag cache ürítése": {
+ "en": "Clear package cache",
+ "de": "Paketcache leeren"
+ },
+ "Naplók takarítása": {
+ "en": "Clean up logs",
+ "de": "Protokolle bereinigen"
+ },
+ "Tükrök frissítése": {
+ "en": "Update mirrors",
+ "de": "Spiegelserver aktualisieren"
+ },
+ "Kulcsok frissítése": {
+ "en": "Refresh keys",
+ "de": "Schlüssel aktualisieren"
+ },
+ "Árva csomagok eltávolítása": {
+ "en": "Remove orphan packages",
+ "de": "Verwaiste Pakete entfernen"
+ },
+ "Flatpak (felhasználói)": {
+ "en": "Flatpak (user)",
+ "de": "Flatpak (Benutzer)"
+ },
+ "Flatpak (rendszer)": {
+ "en": "Flatpak (system)",
+ "de": "Flatpak (System)"
+ },
+ "Mind": {
+ "en": "All",
+ "de": "Alle"
+ },
+ "Média": {
+ "en": "Media",
+ "de": "Medien"
+ },
+ "Iroda": {
+ "en": "Office",
+ "de": "Büro"
+ },
+ "Fejlesztés": {
+ "en": "Development",
+ "de": "Entwicklung"
+ },
+ "Rendszer": {
+ "en": "System",
+ "de": "System"
+ },
+ "Biztonság": {
+ "en": "Security",
+ "de": "Sicherheit"
+ },
+ "Nem található az alkalmazáskatalógus (app-list.json).": {
+ "en": "The app catalog (app-list.json) was not found.",
+ "de": "Der App-Katalog (app-list.json) wurde nicht gefunden."
+ },
+ "Telepítés: {0}": {
+ "en": "Install: {0}",
+ "de": "Installation: {0}"
+ },
+ "Eltávolítás: {0}": {
+ "en": "Remove: {0}",
+ "de": "Entfernen: {0}"
+ },
+ "Beállítások: {0}": {
+ "en": "Settings: {0}",
+ "de": "Einstellungen: {0}"
+ },
+ "Flathub tároló": {
+ "en": "Flathub repository",
+ "de": "Flathub-Repository"
+ },
+ "Szolgáltatás bekapcsolása: {0}": {
+ "en": "Enable service: {0}",
+ "de": "Dienst aktivieren: {0}"
+ },
+ "Utólagos lépés: {0}": {
+ "en": "Post-install step: {0}",
+ "de": "Nachträglicher Schritt: {0}"
+ },
+ "a hitelesítés elmaradt, a további rendszerelemek kimaradnak": {
+ "en": "authentication was skipped, the remaining system items are skipped",
+ "de": "die Authentifizierung wurde abgebrochen, die übrigen Systemelemente werden übersprungen"
+ },
+ "a rendszerelem mentése nem sikerült": {
+ "en": "backing up the system item failed",
+ "de": "die Sicherung des Systemelements ist fehlgeschlagen"
+ },
+ " MEGSZAKÍTVA: {0}": {
+ "en": " CANCELLED: {0}",
+ "de": " ABGEBROCHEN: {0}"
+ },
+ " kihagyva, mert a hitelesítés elmaradt": {
+ "en": " skipped because authentication was cancelled",
+ "de": " übersprungen, weil die Authentifizierung abgebrochen wurde"
+ },
+ " nincs ilyen mappa ezen a gépen, kihagyva": {
+ "en": " no such folder on this computer, skipped",
+ "de": " dieser Ordner existiert auf diesem Computer nicht, übersprungen"
+ },
+ "régi formátumú mentésből a rendszerelemek nem állíthatók vissza": {
+ "en": "system items cannot be restored from an old format backup",
+ "de": "Systemelemente können aus einer Sicherung im alten Format nicht wiederhergestellt werden"
+ },
+ "sikertelen": {
+ "en": "failed",
+ "de": "fehlgeschlagen"
+ },
+ "[HIBA] nem indítható: {0}": {
+ "en": "[ERROR] cannot start: {0}",
+ "de": "[FEHLER] kann nicht gestartet werden: {0}"
+ },
+ "[MEGSZAKÍTVA] a hitelesítés elmaradt": {
+ "en": "[CANCELLED] authentication was cancelled",
+ "de": "[ABGEBROCHEN] die Authentifizierung wurde abgebrochen"
+ },
+ "Alkalmazások": {
+ "en": "Apps",
+ "de": "Apps"
+ },
+ "TELEPÍTVE": {
+ "en": "INSTALLED",
+ "de": "INSTALLIERT"
+ },
+ "Mind kijelölése": {
+ "en": "Select all",
+ "de": "Alle auswählen"
+ },
+ "Keresés, pl. Steam, OBS, Discord": {
+ "en": "Search, e.g. Steam, OBS, Discord",
+ "de": "Suchen, z. B. Steam, OBS, Discord"
+ },
+ "Csomag telepítése": {
+ "en": "Install bundle",
+ "de": "Paket installieren"
+ },
+ "Nincs találat.": {
+ "en": "No results.",
+ "de": "Keine Treffer."
+ },
+ "Kijelölés törlése": {
+ "en": "Clear selection",
+ "de": "Auswahl aufheben"
+ },
+ "Kijelöltek eltávolítása": {
+ "en": "Remove selected",
+ "de": "Ausgewählte entfernen"
+ },
+ "Kijelöltek telepítése": {
+ "en": "Install selected",
+ "de": "Ausgewählte installieren"
+ },
+ "{0} KIJELÖLVE": {
+ "en": "{0} SELECTED",
+ "de": "{0} AUSGEWÄHLT"
+ },
+ "Kijelöltek telepítése ({0})": {
+ "en": "Install selected ({0})",
+ "de": "Ausgewählte installieren ({0})"
+ },
+ "Kijelöltek eltávolítása ({0})": {
+ "en": "Remove selected ({0})",
+ "de": "Ausgewählte entfernen ({0})"
+ },
+ "Telepítés: {0} alkalmazás": {
+ "en": "Install: {0} apps",
+ "de": "Installation: {0} Apps"
+ },
+ "Eltávolítás: {0} alkalmazás": {
+ "en": "Remove: {0} apps",
+ "de": "Entfernen: {0} Apps"
+ },
+ "{0} telepítve.": {
+ "en": "{0} installed.",
+ "de": "{0} installiert."
+ },
+ "{0} eltávolítva.": {
+ "en": "{0} removed.",
+ "de": "{0} entfernt."
+ },
+ "Eltávolítás": {
+ "en": "Remove",
+ "de": "Entfernen"
+ },
+ "VÁLASSZ, AKÁR TÖBBET IS": {
+ "en": "CHOOSE ONE OR MORE",
+ "de": "WÄHLE EINE ODER MEHRERE"
+ },
+ "Telepítés ({0})": {
+ "en": "Install ({0})",
+ "de": "Installieren ({0})"
+ },
+ "Telepítés": {
+ "en": "Install",
+ "de": "Installieren"
+ },
+ "Eltávolítás ({0})": {
+ "en": "Remove ({0})",
+ "de": "Entfernen ({0})"
+ },
+ "{0} / {1} TELEPÍTVE": {
+ "en": "{0} / {1} INSTALLED",
+ "de": "{0} / {1} INSTALLIERT"
+ },
+ "Tudnivalók": {
+ "en": "Details",
+ "de": "Hinweise"
+ },
+ "CSOMAG · GAMING ALAPOK": {
+ "en": "BUNDLE · GAMING ESSENTIALS",
+ "de": "PAKET · GAMING-GRUNDLAGEN"
+ },
+ "EGY KATTINTÁS, MINDEN AMI JÁTÉKHOZ KELL": {
+ "en": "ONE CLICK, EVERYTHING YOU NEED FOR GAMING",
+ "de": "EIN KLICK, ALLES WAS DU ZUM SPIELEN BRAUCHST"
+ },
+ "Steam (Proton-GE-vel), Lutris, Heroic, GameMode és MangoHud egyben, előre beállítva.": {
+ "en": "Steam (with Proton-GE), Lutris, Heroic, GameMode and MangoHud together, preconfigured.",
+ "de": "Steam (mit Proton-GE), Lutris, Heroic, GameMode und MangoHud zusammen, vorkonfiguriert."
+ },
+ "Minden telepítve": {
+ "en": "All installed",
+ "de": "Alles installiert"
+ },
+ "Még nincs telepítve egyetlen alkalmazás sem a listából.": {
+ "en": "None of the apps in the list are installed yet.",
+ "de": "Noch keine App aus der Liste ist installiert."
+ },
+ "Biztosan eltávolítod: {0}?": {
+ "en": "Are you sure you want to remove: {0}?",
+ "de": "Wirklich entfernen: {0}?"
+ },
+ "Csak telepítettek": {
+ "en": "Installed only",
+ "de": "Nur installierte"
+ },
+ "Biztosan eltávolítod ezeket?\n\n": {
+ "en": "Are you sure you want to remove these?\n\n",
+ "de": "Diese wirklich entfernen?\n\n"
+ },
+ "Minden lépés sikeresen lefutott.": {
+ "en": "All steps completed successfully.",
+ "de": "Alle Schritte wurden erfolgreich ausgeführt."
+ },
+ "Nem minden lépés sikerült.": {
+ "en": "Not all steps succeeded.",
+ "de": "Nicht alle Schritte waren erfolgreich."
+ },
+ "Az alkalmazáskatalógus nem tölthető be: {0}": {
+ "en": "The app catalog cannot be loaded: {0}",
+ "de": "Der App-Katalog kann nicht geladen werden: {0}"
+ },
+ "Gaming alapok telepítése": {
+ "en": "Installing gaming essentials",
+ "de": "Gaming-Grundlagen installieren"
+ },
+ "A Gaming alapok telepítve.": {
+ "en": "Gaming essentials installed.",
+ "de": "Gaming-Grundlagen installiert."
+ },
+ "Áttekintés": {
+ "en": "Overview",
+ "de": "Übersicht"
+ },
+ "Alkalmazás telepítése": {
+ "en": "Install apps",
+ "de": "Apps installieren"
+ },
+ "Böngészés kategóriák szerint": {
+ "en": "Browse by category",
+ "de": "Nach Kategorien stöbern"
+ },
+ "Rendszerfrissítés": {
+ "en": "System update",
+ "de": "System-Update"
+ },
+ "Driverek": {
+ "en": "Drivers",
+ "de": "Treiber"
+ },
+ "GPU, Wi-Fi, kontrollerek": {
+ "en": "GPU, Wi-Fi, controllers",
+ "de": "GPU, WLAN, Controller"
+ },
+ "Takarítás": {
+ "en": "Cleanup",
+ "de": "Aufräumen"
+ },
+ "Cache, árva csomagok": {
+ "en": "Cache, orphan packages",
+ "de": "Cache, verwaiste Pakete"
+ },
+ "Gaming tweakek": {
+ "en": "Gaming tweaks",
+ "de": "Gaming-Tweaks"
+ },
+ "Visszaállítás": {
+ "en": "Restore",
+ "de": "Wiederherstellen"
+ },
+ "Snapshot betöltése": {
+ "en": "Load a snapshot",
+ "de": "Snapshot laden"
+ },
+ "ÜDV ÚJRA": {
+ "en": "WELCOME BACK",
+ "de": "WILLKOMMEN ZURÜCK"
+ },
+ "Frissítések": {
+ "en": "Updates",
+ "de": "Aktualisierungen"
+ },
+ "ellenőrzés...": {
+ "en": "checking...",
+ "de": "wird geprüft..."
+ },
+ "Utolsó snapshot": {
+ "en": "Last snapshot",
+ "de": "Letzter Snapshot"
+ },
+ "Lemez": {
+ "en": "Disk",
+ "de": "Datenträger"
+ },
+ "Gaming mód": {
+ "en": "Gaming mode",
+ "de": "Gaming-Modus"
+ },
+ "Közösség": {
+ "en": "Community",
+ "de": "Community"
+ },
+ "{0} ELÉRHETŐ": {
+ "en": "{0} AVAILABLE",
+ "de": "{0} VERFÜGBAR"
+ },
+ "az ellenőrzés nem sikerült": {
+ "en": "the check failed",
+ "de": "die Prüfung ist fehlgeschlagen"
+ },
+ "Frissítés most": {
+ "en": "Update now",
+ "de": "Jetzt aktualisieren"
+ },
+ "Snapshot készítése": {
+ "en": "Take snapshot",
+ "de": "Snapshot erstellen"
+ },
+ "GYORS MŰVELETEK": {
+ "en": "QUICK ACTIONS",
+ "de": "SCHNELLAKTIONEN"
+ },
+ "RENDSZER": {
+ "en": "SYSTEM",
+ "de": "SYSTEM"
+ },
+ "Kérdésed van, vagy hibát találtál? Gyere a közösségbe, vagy írj nekünk hibajegyet.": {
+ "en": "Have a question or found a bug? Join the community or send us a ticket.",
+ "de": "Hast du eine Frage oder einen Fehler gefunden? Komm in die Community oder schreib uns ein Ticket."
+ },
+ "BEKAPCSOLVA": {
+ "en": "ON",
+ "de": "AN"
+ },
+ "KIKAPCSOLVA": {
+ "en": "OFF",
+ "de": "AUS"
+ },
+ "Kikapcsolás": {
+ "en": "Turn off",
+ "de": "Ausschalten"
+ },
+ "Bekapcsolás": {
+ "en": "Turn on",
+ "de": "Einschalten"
+ },
+ "Ezen a gépen a Gaming mód elemei nem kapcsolhatók ki, a GameMode a Rendszer > Gaming fülön távolítható el.": {
+ "en": "On this computer the Gaming mode items cannot be turned off, GameMode can be removed on the System > Gaming tab.",
+ "de": "Auf diesem Computer lassen sich die Gaming-Modus-Elemente nicht ausschalten, GameMode kann unter System > Gaming entfernt werden."
+ },
+ "NAPRAKÉSZ": {
+ "en": "UP TO DATE",
+ "de": "AKTUELL"
+ },
+ "nincs elérhető frissítés": {
+ "en": "no updates available",
+ "de": "keine Aktualisierungen verfügbar"
+ },
+ "{0} újraindítást igényel": {
+ "en": "{0} need a restart",
+ "de": "{0} erfordern einen Neustart"
+ },
+ "csak hivatalos csomagok": {
+ "en": "official packages only",
+ "de": "nur offizielle Pakete"
+ },
+ "a snapper nem érhető el": {
+ "en": "snapper is not available",
+ "de": "snapper ist nicht verfügbar"
+ },
+ "NINCS": {
+ "en": "NONE",
+ "de": "KEINER"
+ },
+ "még nem készült snapshot": {
+ "en": "no snapshot yet",
+ "de": "noch kein Snapshot"
+ },
+ "Hibajegy": {
+ "en": "Ticket",
+ "de": "Ticket"
+ },
+ "Hamarosan": {
+ "en": "Coming soon",
+ "de": "Demnächst"
+ },
+ "MA": {
+ "en": "TODAY",
+ "de": "HEUTE"
+ },
+ "{0} NAPJA": {
+ "en": "{0} DAYS AGO",
+ "de": "VOR {0} TAGEN"
+ },
+ "UTOLSÓ ELLENŐRZÉS: -": {
+ "en": "LAST CHECK: -",
+ "de": "LETZTE PRÜFUNG: -"
+ },
+ "Kijelölve": {
+ "en": "Selected",
+ "de": "Ausgewählt"
+ },
+ "0 / 0 CSOMAG": {
+ "en": "0 / 0 PACKAGES",
+ "de": "0 / 0 PAKETE"
+ },
+ "Letöltés": {
+ "en": "Download",
+ "de": "Download"
+ },
+ "Snapshot készítése frissítés előtt": {
+ "en": "Take a snapshot before updating",
+ "de": "Vor der Aktualisierung einen Snapshot erstellen"
+ },
+ "Újraindítás most": {
+ "en": "Restart now",
+ "de": "Jetzt neu starten"
+ },
+ "Ellenőrzés...": {
+ "en": "Checking...",
+ "de": "Wird geprüft..."
+ },
+ ":: Frissítések ellenőrzése (pacman, AUR, Flatpak)...": {
+ "en": ":: Checking for updates (pacman, AUR, Flatpak)...",
+ "de": ":: Suche nach Aktualisierungen (pacman, AUR, Flatpak)..."
+ },
+ "Ellenőrzés": {
+ "en": "Check",
+ "de": "Prüfen"
+ },
+ ":: {0} frissítés: {1} pacman, {2} AUR, {3} Flatpak": {
+ "en": ":: {0} updates: {1} pacman, {2} AUR, {3} Flatpak",
+ "de": ":: {0} Aktualisierungen: {1} pacman, {2} AUR, {3} Flatpak"
+ },
+ "[HIBA] {0}": {
+ "en": "[ERROR] {0}",
+ "de": "[FEHLER] {0}"
+ },
+ "Az ellenőrzés nem sikerült: {0}": {
+ "en": "The check failed: {0}",
+ "de": "Die Prüfung ist fehlgeschlagen: {0}"
+ },
+ "A rendszer naprakész, nincs elérhető frissítés.": {
+ "en": "The system is up to date, no updates available.",
+ "de": "Das System ist aktuell, keine Aktualisierungen verfügbar."
+ },
+ "{0} / {1} CSOMAG": {
+ "en": "{0} / {1} PACKAGES",
+ "de": "{0} / {1} PAKETE"
+ },
+ ":: Frissítés indul, {0} csomag": {
+ "en": ":: Update starting, {0} packages",
+ "de": ":: Aktualisierung startet, {0} Pakete"
+ },
+ "Nincs kijelölve": {
+ "en": "Nothing selected",
+ "de": "Nichts ausgewählt"
+ },
+ "A frissítés után újraindítás szükséges, hogy az új kernel vagy driver betöltődjön.": {
+ "en": "A restart is required after the update so the new kernel or driver gets loaded.",
+ "de": "Nach der Aktualisierung ist ein Neustart nötig, damit der neue Kernel oder Treiber geladen wird."
+ },
+ "CSOMAGOK": {
+ "en": "PACKAGES",
+ "de": "PAKETE"
+ },
+ "A hivatalos csomagok (pacman) csak együtt frissíthetők: Arch-alapú rendszeren a részleges frissítés elronthatja a rendszert. Az AUR és a Flatpak csomagok egyenként is kijelölhetők.": {
+ "en": "Official packages (pacman) can only be updated together: on an Arch-based system a partial update can break the system. AUR and Flatpak packages can be selected one by one.",
+ "de": "Offizielle Pakete (pacman) können nur zusammen aktualisiert werden: auf einem Arch-basierten System kann eine Teilaktualisierung das System beschädigen. AUR- und Flatpak-Pakete lassen sich einzeln auswählen."
+ },
+ "Csomag": {
+ "en": "Package",
+ "de": "Paket"
+ },
+ "Forrás": {
+ "en": "Source",
+ "de": "Quelle"
+ },
+ "Jelenlegi": {
+ "en": "Current",
+ "de": "Aktuell"
+ },
+ "Új": {
+ "en": "New",
+ "de": "Neu"
+ },
+ "Méret": {
+ "en": "Size",
+ "de": "Größe"
+ },
+ "NAPLÓ": {
+ "en": "LOG",
+ "de": "PROTOKOLL"
+ },
+ "Minden csomagművelet előtt automatikusan snapshot készül, ha gond van, a Rendszer > Snapshotok fülön vissza tudsz állni.": {
+ "en": "A snapshot is taken automatically before every package operation, if something goes wrong you can roll back on the System > Snapshots tab.",
+ "de": "Vor jedem Paketvorgang wird automatisch ein Snapshot erstellt, bei Problemen kannst du unter System > Snapshots zurückkehren."
+ },
+ "A RaveOS Center rendszerhelpere nincs telepítve, ezért a rendszercsomagok frissítése nem indítható.": {
+ "en": "The RaveOS Center system helper is not installed, so system package updates cannot be started.",
+ "de": "Der Systemhelfer von RaveOS Center ist nicht installiert, daher kann die Aktualisierung der Systempakete nicht gestartet werden."
+ },
+ "UTOLSÓ ELLENŐRZÉS: {0:%H:%M}": {
+ "en": "LAST CHECK: {0:%H:%M}",
+ "de": "LETZTE PRÜFUNG: {0:%H:%M}"
+ },
+ "Frissítés indítása ({0})": {
+ "en": "Start update ({0})",
+ "de": "Aktualisierung starten ({0})"
+ },
+ "Frissítés folyamatban...": {
+ "en": "Update in progress...",
+ "de": "Aktualisierung läuft..."
+ },
+ ":: A frissítés sikeresen befejeződött.": {
+ "en": ":: The update finished successfully.",
+ "de": ":: Die Aktualisierung wurde erfolgreich abgeschlossen."
+ },
+ ":: A frissítés hibával ért véget: {0}": {
+ "en": ":: The update ended with errors: {0}",
+ "de": ":: Die Aktualisierung endete mit Fehlern: {0}"
+ },
+ "A frissítés nem sikerült teljesen. A részleteket a lenti napló mutatja. Ha nem érted, mi történt, küldj hibajegyet a Visszajelzés oldalon.": {
+ "en": "The update did not fully succeed. The log below shows the details. If you are not sure what happened, send a ticket on the Feedback page.",
+ "de": "Die Aktualisierung war nicht vollständig erfolgreich. Das Protokoll unten zeigt die Details. Wenn du nicht verstehst, was passiert ist, schick ein Ticket über die Feedback-Seite."
+ },
+ "Snapshot csak btrfs fájlrendszeren, beállított snapperrel készíthető.": {
+ "en": "Snapshots are only available on btrfs with snapper configured.",
+ "de": "Snapshots sind nur auf btrfs mit eingerichtetem snapper möglich."
+ },
+ "Ha a frissítés után gond van, erre vissza tudsz állni.": {
+ "en": "If something goes wrong after the update, you can roll back to this.",
+ "de": "Wenn nach der Aktualisierung etwas nicht stimmt, kannst du hierhin zurückkehren."
+ },
+ "Rendszercsomagok frissítése (pacman)": {
+ "en": "Update system packages (pacman)",
+ "de": "Systempakete aktualisieren (pacman)"
+ },
+ "AUR csomagok frissítése": {
+ "en": "Update AUR packages",
+ "de": "AUR-Pakete aktualisieren"
+ },
+ "Flatpak alkalmazások frissítése": {
+ "en": "Update Flatpak apps",
+ "de": "Flatpak-Apps aktualisieren"
+ },
+ "Újraindítás": {
+ "en": "Restart",
+ "de": "Neustart"
+ },
+ "Frissítés előtt (RaveOS Center)": {
+ "en": "Before update (RaveOS Center)",
+ "de": "Vor Aktualisierung (RaveOS Center)"
+ },
+ "ÚJRAINDÍTÁS": {
+ "en": "RESTART",
+ "de": "NEUSTART"
+ },
+ "DRIVEREK · GAMING · KARBANTARTÁS · SNAPSHOTOK": {
+ "en": "DRIVERS · GAMING · MAINTENANCE · SNAPSHOTS",
+ "de": "TREIBER · GAMING · WARTUNG · SNAPSHOTS"
+ },
+ "Újraellenőrzés": {
+ "en": "Check again",
+ "de": "Erneut prüfen"
+ },
+ "Minden ajánlott telepítése": {
+ "en": "Install all recommended",
+ "de": "Alle empfohlenen installieren"
+ },
+ "A hardver felismerése nem sikerült: {0}": {
+ "en": "Hardware detection failed: {0}",
+ "de": "Die Hardwareerkennung ist fehlgeschlagen: {0}"
+ },
+ "Driverek telepítése": {
+ "en": "Installing drivers",
+ "de": "Treiber installieren"
+ },
+ "A driverek telepítve.": {
+ "en": "Drivers installed.",
+ "de": "Treiber installiert."
+ },
+ "Jelenlegi driver: {0}": {
+ "en": "Current driver: {0}",
+ "de": "Aktueller Treiber: {0}"
+ },
+ "Hiányzó csomagok: {0}": {
+ "en": "Missing packages: {0}",
+ "de": "Fehlende Pakete: {0}"
+ },
+ "Ajánlott telepítése": {
+ "en": "Install recommended",
+ "de": "Empfohlene installieren"
+ },
+ "RENDBEN": {
+ "en": "OK",
+ "de": "OK"
+ },
+ "A RaveOS felismeri a géped eszközeit, és megmutatja, melyikhez van ajánlott driver. A videokártya drivere a telepítéskor is ugyanígy kerül fel.": {
+ "en": "RaveOS detects your devices and shows which ones have a recommended driver. The graphics driver is installed the same way during installation.",
+ "de": "RaveOS erkennt die Geräte deines Computers und zeigt, für welche es einen empfohlenen Treiber gibt. Der Grafiktreiber wird bei der Installation genauso eingerichtet."
+ },
+ "A RaveOS Center rendszerhelpere nincs telepítve, ezért driver nem telepíthető.": {
+ "en": "The RaveOS Center system helper is not installed, so drivers cannot be installed.",
+ "de": "Der Systemhelfer von RaveOS Center ist nicht installiert, daher können keine Treiber installiert werden."
+ },
+ "A driverfelismerő szkript nincs telepítve.": {
+ "en": "The driver detection script is not installed.",
+ "de": "Das Treibererkennungsskript ist nicht installiert."
+ },
+ "Újraindítás szükséges": {
+ "en": "Restart required",
+ "de": "Neustart erforderlich"
+ },
+ "Az új videokártya-driver az újraindítás után töltődik be.": {
+ "en": "The new graphics driver is loaded after a restart.",
+ "de": "Der neue Grafiktreiber wird nach einem Neustart geladen."
+ },
+ "Később": {
+ "en": "Later",
+ "de": "Später"
+ },
+ "Nem található kezelhető eszköz.": {
+ "en": "No manageable device found.",
+ "de": "Kein verwaltbares Gerät gefunden."
+ },
+ "Videokártya driverek": {
+ "en": "Graphics drivers",
+ "de": "Grafiktreiber"
+ },
+ "További driverek": {
+ "en": "Other drivers",
+ "de": "Weitere Treiber"
+ },
+ "nincs betöltve": {
+ "en": "not loaded",
+ "de": "nicht geladen"
+ },
+ "CPU és I/O prioritás játék közben. A Lutris és a Heroic magától használja, Steamben a játék indítási opciójába írd: gamemoderun %command%": {
+ "en": "CPU and I/O priority while gaming. Lutris and Heroic use it automatically, in Steam add this to the game's launch options: gamemoderun %command%",
+ "de": "CPU- und I/O-Priorität beim Spielen. Lutris und Heroic nutzen es automatisch, in Steam trage in die Startoptionen des Spiels ein: gamemoderun %command%"
+ },
+ "MangoHud alapból": {
+ "en": "MangoHud by default",
+ "de": "MangoHud standardmäßig"
+ },
+ "FPS, hőmérséklet és terhelés kijelzése minden Vulkan és OpenGL játékban. Játék közben a jobb Shift + F12 elrejti, a jobb Shift + F10 vált a kijelző módok között.": {
+ "en": "Shows FPS, temperature and load in every Vulkan and OpenGL game. While playing, right Shift + F12 hides it and right Shift + F10 switches display modes.",
+ "de": "Zeigt FPS, Temperatur und Auslastung in jedem Vulkan- und OpenGL-Spiel. Beim Spielen blendet rechte Umschalt + F12 es aus, rechte Umschalt + F10 wechselt die Anzeigemodi."
+ },
+ "Az scx_lavd ütemező gaming módban: egyenletesebb képkockaidő, amikor a háttérben más is fut. Kikapcsolva a kernel saját BORE ütemezője dolgozik.": {
+ "en": "The scx_lavd scheduler in gaming mode: smoother frame times when other things run in the background. When off, the kernel's own BORE scheduler is used.",
+ "de": "Der scx_lavd-Scheduler im Gaming-Modus: gleichmäßigere Frametimes, wenn im Hintergrund anderes läuft. Ausgeschaltet arbeitet der kernel-eigene BORE-Scheduler."
+ },
+ "Külön, konzolszerű Steam játékmenet, a bejelentkező képernyőn választható.": {
+ "en": "A separate, console-like Steam session, selectable on the login screen.",
+ "de": "Eine separate, konsolenartige Steam-Sitzung, auf dem Anmeldebildschirm auswählbar."
+ },
+ "Játék közben teljes órajel, a játék bezárása után visszaáll.": {
+ "en": "Full clock speed while gaming, restored after the game closes.",
+ "de": "Voller Takt beim Spielen, wird nach dem Beenden des Spiels zurückgesetzt."
+ },
+ "Gyorsabb Windows-szinkronizáció Wine és Proton alatt.": {
+ "en": "Faster Windows synchronization under Wine and Proton.",
+ "de": "Schnellere Windows-Synchronisation unter Wine und Proton."
+ },
+ "Gaming beállítások": {
+ "en": "Gaming settings",
+ "de": "Gaming-Einstellungen"
+ },
+ "A beállítás elkészült.": {
+ "en": "The setting was applied.",
+ "de": "Die Einstellung wurde übernommen."
+ },
+ "A beállítás nem sikerült teljesen, a részleteket a napló mutatja.": {
+ "en": "The setting did not fully succeed, the log shows the details.",
+ "de": "Die Einstellung war nicht vollständig erfolgreich, das Protokoll zeigt die Details."
+ },
+ "A GloriousEggroll Proton-változata, több játékhoz tartalmaz javítást és videokodeket. A Steam újraindítása után a játék Tulajdonságok > Kompatibilitás menüjében választható.": {
+ "en": "GloriousEggroll's Proton variant, with fixes and video codecs for more games. After restarting Steam it can be selected in the game's Properties > Compatibility menu.",
+ "de": "Die Proton-Variante von GloriousEggroll mit Korrekturen und Videocodecs für mehr Spiele. Nach einem Neustart von Steam im Spiel unter Eigenschaften > Kompatibilität auswählbar."
+ },
+ "Legújabb telepítése": {
+ "en": "Install latest",
+ "de": "Neueste installieren"
+ },
+ "Régiek törlése": {
+ "en": "Delete old ones",
+ "de": "Alte löschen"
+ },
+ "Mind törlése": {
+ "en": "Delete all",
+ "de": "Alle löschen"
+ },
+ "Letöltés és ellenőrzés, ez néhány percig tarthat.": {
+ "en": "Downloading and verifying, this can take a few minutes.",
+ "de": "Herunterladen und Prüfen, das kann einige Minuten dauern."
+ },
+ "A telepítés nem sikerült: {0}": {
+ "en": "The installation failed: {0}",
+ "de": "Die Installation ist fehlgeschlagen: {0}"
+ },
+ "Törlöd a régebbi verziókat ({0})? Minden Steam-telepítésben a legújabb megmarad.": {
+ "en": "Delete the older versions ({0})? The newest one stays in every Steam installation.",
+ "de": "Die älteren Versionen löschen ({0})? Die neueste bleibt in jeder Steam-Installation erhalten."
+ },
+ "Törlöd az összes Proton-GE verziót? Az ezeket használó játékok a Steam alap Protonjára váltanak.": {
+ "en": "Delete all Proton-GE versions? Games using them switch to Steam's default Proton.",
+ "de": "Alle Proton-GE-Versionen löschen? Spiele, die sie nutzen, wechseln zum Standard-Proton von Steam."
+ },
+ "A CachyOS Proton-változata a rendszer csomagkezelőjéből, a rendszerfrissítéssel együtt frissül. Kb. 1,6 GB. A Steam újraindítása után választható.": {
+ "en": "CachyOS's Proton variant from the system package manager, updated together with the system. About 1.6 GB. Selectable after restarting Steam.",
+ "de": "Die Proton-Variante von CachyOS aus dem Paketmanager des Systems, wird mit dem System aktualisiert. Ca. 1,6 GB. Nach einem Neustart von Steam auswählbar."
+ },
+ "A beállítás nem sikerült: {0}": {
+ "en": "The setting failed: {0}",
+ "de": "Die Einstellung ist fehlgeschlagen: {0}"
+ },
+ "Telepítve: {0}": {
+ "en": "Installed: {0}",
+ "de": "Installiert: {0}"
+ },
+ "Nincs telepítve.": {
+ "en": "Not installed.",
+ "de": "Nicht installiert."
+ },
+ " Legújabb: {0}": {
+ "en": " Latest: {0}",
+ "de": " Neueste: {0}"
+ },
+ "Nem található Steam. Telepítsd, és indítsd el egyszer.": {
+ "en": "Steam not found. Install it and start it once.",
+ "de": "Steam wurde nicht gefunden. Installiere es und starte es einmal."
+ },
+ "Naprakész": {
+ "en": "Up to date",
+ "de": "Aktuell"
+ },
+ "Játékhoz hasznos beállítások. Mindegyik bármikor visszakapcsolható. Az Áttekintés Gaming mód kapcsolója a GameMode-ot, a performance governort, az NTSync-et és a játékra hangolt ütemezőt kapcsolja egyszerre.": {
+ "en": "Useful settings for gaming. Each one can be turned back at any time. The Gaming mode switch on the Overview turns GameMode, the performance governor, NTSync and the gaming-tuned scheduler on or off together.",
+ "de": "Nützliche Einstellungen zum Spielen. Jede lässt sich jederzeit zurückschalten. Der Gaming-Modus-Schalter in der Übersicht schaltet GameMode, den Performance-Governor, NTSync und den für Spiele optimierten Scheduler gemeinsam."
+ },
+ "Kijelző:": {
+ "en": "Display:",
+ "de": "Anzeige:"
+ },
+ "PROTON VERZIÓK": {
+ "en": "PROTON VERSIONS",
+ "de": "PROTON-VERSIONEN"
+ },
+ "Az állapot nem olvasható be, próbáld újra a fül újbóli megnyitásával.": {
+ "en": "The status cannot be read, try again by reopening the tab.",
+ "de": "Der Status kann nicht gelesen werden, öffne den Tab erneut."
+ },
+ "A törlés nem sikerült: {0}": {
+ "en": "Deleting failed: {0}",
+ "de": "Das Löschen ist fehlgeschlagen: {0}"
+ },
+ "A RaveOS Center rendszerhelpere nincs telepítve, a legtöbb beállítás nem módosítható.": {
+ "en": "The RaveOS Center system helper is not installed, most settings cannot be changed.",
+ "de": "Der Systemhelfer von RaveOS Center ist nicht installiert, die meisten Einstellungen lassen sich nicht ändern."
+ },
+ "Karbantartás": {
+ "en": "Maintenance",
+ "de": "Wartung"
+ },
+ "Minden csomagból csak az utolsó két verzió marad, az eltávolított csomagok fájljai törlődnek.": {
+ "en": "Only the last two versions of each package are kept, files of removed packages are deleted.",
+ "de": "Von jedem Paket bleiben nur die letzten zwei Versionen, Dateien entfernter Pakete werden gelöscht."
+ },
+ "Árva csomagok": {
+ "en": "Orphan packages",
+ "de": "Verwaiste Pakete"
+ },
+ "Már semmi által nem használt függőségek eltávolítása. Az előnézetben egyenként kiveheted, amit megtartanál.": {
+ "en": "Removes dependencies that nothing uses anymore. In the preview you can untick the ones you want to keep.",
+ "de": "Entfernt Abhängigkeiten, die nichts mehr nutzt. In der Vorschau kannst du einzeln abwählen, was du behalten möchtest."
+ },
+ "A két hétnél régebbi rendszernaplók törlése, legfeljebb 100 MB marad.": {
+ "en": "Deletes system logs older than two weeks, at most 100 MB is kept.",
+ "de": "Löscht Systemprotokolle, die älter als zwei Wochen sind, höchstens 100 MB bleiben."
+ },
+ "A leggyorsabb közeli letöltési szerverek kiválasztása. A régi lista biztonsági másolatként megmarad.": {
+ "en": "Selects the fastest nearby download servers. The old list is kept as a backup.",
+ "de": "Wählt die schnellsten Download-Server in der Nähe aus. Die alte Liste bleibt als Sicherung erhalten."
+ },
+ "A csomagaláíró kulcsok újratöltése. Segít, ha a frissítés aláírási hibával áll le.": {
+ "en": "Reloads the package signing keys. Helps if an update stops with a signature error.",
+ "de": "Lädt die Paketsignaturschlüssel neu. Hilft, wenn eine Aktualisierung mit einem Signaturfehler abbricht."
+ },
+ "Flatpak takarítás": {
+ "en": "Flatpak cleanup",
+ "de": "Flatpak aufräumen"
+ },
+ "A már egyik alkalmazás által sem használt runtime-ok eltávolítása.": {
+ "en": "Removes runtimes that no app uses anymore.",
+ "de": "Entfernt Runtimes, die keine App mehr nutzt."
+ },
+ "Mégse": {
+ "en": "Cancel",
+ "de": "Abbrechen"
+ },
+ "Futtatás": {
+ "en": "Run",
+ "de": "Ausführen"
+ },
+ "A RaveOS Center rendszerhelpere nincs telepítve, a műveletek nem futtathatók.": {
+ "en": "The RaveOS Center system helper is not installed, the operations cannot run.",
+ "de": "Der Systemhelfer von RaveOS Center ist nicht installiert, die Vorgänge können nicht ausgeführt werden."
+ },
+ "Ezek a csomagfájlok törlődnek a cache-ből ({0}). A telepített programokat nem érinti.": {
+ "en": "These package files will be deleted from the cache ({0}). Installed programs are not affected.",
+ "de": "Diese Paketdateien werden aus dem Cache gelöscht ({0}). Installierte Programme sind nicht betroffen."
+ },
+ "ELŐNÉZET": {
+ "en": "PREVIEW",
+ "de": "VORSCHAU"
+ },
+ "Rendszeres takarítás és javítás. A törléssel járó műveletek előtt megmutatjuk, mi kerülne törlésre, és csak a megerősítésed után futnak.": {
+ "en": "Regular cleanup and repair. Before operations that delete something we show what would be deleted, and they only run after you confirm.",
+ "de": "Regelmäßiges Aufräumen und Reparieren. Vor Vorgängen, die etwas löschen, zeigen wir, was gelöscht würde, und sie laufen erst nach deiner Bestätigung."
+ },
+ "Pontosan ezek a csomagok törlődnek, más nem. Vedd ki a pipát annál, amit megtartanál. Utána újabb árva függőségek jelenhetnek meg, ezeket a kártya újra megmutatja.": {
+ "en": "Exactly these packages will be removed, nothing else. Untick anything you want to keep. Afterwards new orphan dependencies may appear, the card will show them again.",
+ "de": "Genau diese Pakete werden entfernt, sonst nichts. Entferne den Haken bei allem, was du behalten möchtest. Danach können neue verwaiste Abhängigkeiten auftauchen, die Karte zeigt sie erneut an."
+ },
+ "Törlés": {
+ "en": "Delete",
+ "de": "Löschen"
+ },
+ "{0}. A két hétnél régebbi naplók törlődnek, és legfeljebb 100 MB marad.": {
+ "en": "{0}. Logs older than two weeks are deleted, and at most 100 MB is kept.",
+ "de": "{0}. Protokolle, die älter als zwei Wochen sind, werden gelöscht, höchstens 100 MB bleiben."
+ },
+ "A művelet elkészült.": {
+ "en": "The operation is complete.",
+ "de": "Der Vorgang ist abgeschlossen."
+ },
+ "Ezek a runtime-ok törlődnek. Az alkalmazásaid továbbra is működnek.": {
+ "en": "These runtimes will be deleted. Your apps keep working.",
+ "de": "Diese Runtimes werden gelöscht. Deine Apps funktionieren weiterhin."
+ },
+ "Mentés": {
+ "en": "Backup",
+ "de": "Sicherung"
+ },
+ "kicsi": {
+ "en": "small",
+ "de": "klein"
+ },
+ "közepes": {
+ "en": "medium",
+ "de": "mittel"
+ },
+ "nagy": {
+ "en": "large",
+ "de": "groß"
+ },
+ "nagyon nagy": {
+ "en": "very large",
+ "de": "sehr groß"
+ },
+ "Tallózás": {
+ "en": "Browse",
+ "de": "Durchsuchen"
+ },
+ "Mentés indítása": {
+ "en": "Start backup",
+ "de": "Sicherung starten"
+ },
+ "Válaszd ki a mentésfájlt (.tar.gz)": {
+ "en": "Choose the backup file (.tar.gz)",
+ "de": "Wähle die Sicherungsdatei (.tar.gz)"
+ },
+ "Mentés kiválasztása": {
+ "en": "Choose backup",
+ "de": "Sicherung auswählen"
+ },
+ "Mentés helye": {
+ "en": "Backup location",
+ "de": "Speicherort der Sicherung"
+ },
+ "Mentés (*.tar.gz)": {
+ "en": "Backup (*.tar.gz)",
+ "de": "Sicherung (*.tar.gz)"
+ },
+ "Mentés indul: {0}": {
+ "en": "Backup starting: {0}",
+ "de": "Sicherung startet: {0}"
+ },
+ "Visszaállítás indul: {0}": {
+ "en": "Restore starting: {0}",
+ "de": "Wiederherstellung startet: {0}"
+ },
+ "Mentsd el az alkalmazásaid beállításait és a fontos mappáidat egyetlen fájlba, és állítsd vissza őket egy másik gépen vagy újratelepítés után. A ROOT jelölésű elemekhez a rendszer jelszót kér.": {
+ "en": "Save your app settings and important folders into a single file, and restore them on another computer or after a reinstall. Items marked ROOT ask for the system password.",
+ "de": "Speichere die Einstellungen deiner Apps und deine wichtigen Ordner in einer einzigen Datei und stelle sie auf einem anderen Computer oder nach einer Neuinstallation wieder her. Für mit ROOT markierte Elemente fragt das System nach dem Passwort."
+ },
+ "A visszaállítás felülírja a meglévő fájlokat a kiválasztott helyeken.": {
+ "en": "Restoring overwrites existing files at the selected locations.",
+ "de": "Die Wiederherstellung überschreibt vorhandene Dateien an den ausgewählten Orten."
+ },
+ "A rendszerelemekhez a RaveOS Center rendszerhelpere szükséges, de nincs telepítve.": {
+ "en": "System items require the RaveOS Center system helper, but it is not installed.",
+ "de": "Für Systemelemente wird der Systemhelfer von RaveOS Center benötigt, er ist aber nicht installiert."
+ },
+ "{0} elem visszaállítása felülírja a meglévő fájlokat. Folytatod?": {
+ "en": "Restoring {0} items overwrites existing files. Continue?",
+ "de": "Die Wiederherstellung von {0} Elementen überschreibt vorhandene Dateien. Fortfahren?"
+ },
+ "Ebben a fájlban nincs visszaállítható elem.": {
+ "en": "This file has no restorable items.",
+ "de": "Diese Datei enthält keine wiederherstellbaren Elemente."
+ },
+ "Régi (App Installer) formátumú mentés: a rendszerelemek ebből nem állíthatók vissza.": {
+ "en": "Old (App Installer) format backup: system items cannot be restored from it.",
+ "de": "Sicherung im alten Format (App Installer): Systemelemente können daraus nicht wiederhergestellt werden."
+ },
+ "A fájl már létezik, felülírod?\n{0}": {
+ "en": "The file already exists, overwrite it?\n{0}",
+ "de": "Die Datei existiert bereits, überschreiben?\n{0}"
+ },
+ "A mentési lista nem tölthető be: {0}": {
+ "en": "The backup list cannot be loaded: {0}",
+ "de": "Die Sicherungsliste kann nicht geladen werden: {0}"
+ },
+ "A fájl nem olvasható: {0}": {
+ "en": "The file cannot be read: {0}",
+ "de": "Die Datei kann nicht gelesen werden: {0}"
+ },
+ "Mentés kész: {0} elem, {1}": {
+ "en": "Backup done: {0} items, {1}",
+ "de": "Sicherung fertig: {0} Elemente, {1}"
+ },
+ "A mentés nem sikerült: {0}": {
+ "en": "The backup failed: {0}",
+ "de": "Die Sicherung ist fehlgeschlagen: {0}"
+ },
+ "Visszaállítás kész: {0} elem.": {
+ "en": "Restore done: {0} items.",
+ "de": "Wiederherstellung fertig: {0} Elemente."
+ },
+ "A visszaállítás nem sikerült: {0}": {
+ "en": "The restore failed: {0}",
+ "de": "Die Wiederherstellung ist fehlgeschlagen: {0}"
+ },
+ "telepíti a szükséges eszközöket (sbsigntools, efitools),": {
+ "en": "installs the required tools (sbsigntools, efitools),",
+ "de": "installiert die nötigen Werkzeuge (sbsigntools, efitools),"
+ },
+ "létrehoz egy saját, csak ehhez a géphez tartozó aláíró kulcsot,": {
+ "en": "creates your own signing key that belongs only to this computer,",
+ "de": "erstellt einen eigenen Signaturschlüssel, der nur zu diesem Computer gehört,"
+ },
+ "aláírja a rendszerbetöltőt, a kernelt és a külső kernelmodulokat (pl. NVIDIA),": {
+ "en": "signs the boot loader, the kernel and external kernel modules (e.g. NVIDIA),",
+ "de": "signiert den Bootloader, den Kernel und externe Kernelmodule (z. B. NVIDIA),"
+ },
+ "beírja a firmware-be a RaveOS, a Microsoft és a saját géped kulcsát, így a Windows is tovább indul,": {
+ "en": "writes the RaveOS, Microsoft and your own computer's keys into the firmware, so Windows keeps booting too,",
+ "de": "schreibt die Schlüssel von RaveOS, Microsoft und deinem Computer in die Firmware, sodass auch Windows weiter startet,"
+ },
+ "beállít egy automatikus aláírást, ami minden kernelfrissítés után újra aláír.": {
+ "en": "sets up automatic signing that re-signs after every kernel update.",
+ "de": "richtet eine automatische Signierung ein, die nach jedem Kernel-Update neu signiert."
+ },
+ "A beállítás lépései": {
+ "en": "Setup steps",
+ "de": "Schritte der Einrichtung"
+ },
+ "Állapot frissítése": {
+ "en": "Refresh status",
+ "de": "Status aktualisieren"
+ },
+ "Újra aláírás": {
+ "en": "Re-sign",
+ "de": "Neu signieren"
+ },
+ "Ha a gépkulcs már megvan, csak újra aláírja a rendszerbetöltőt, a kernelt és a modulokat.": {
+ "en": "If the computer key already exists, it only re-signs the boot loader, the kernel and the modules.",
+ "de": "Wenn der Computerschlüssel schon vorhanden ist, werden nur Bootloader, Kernel und Module neu signiert."
+ },
+ "Beállítás": {
+ "en": "Set up",
+ "de": "Einrichten"
+ },
+ "Secure Boot beállítása": {
+ "en": "Set up Secure Boot",
+ "de": "Secure Boot einrichten"
+ },
+ "A beállítás kulcsokat ír a firmware-be, és aláírja a rendszerbetöltőt és a kernelt. Ha Windows is van a gépen BitLockerrel, előtte függeszd fel a BitLockert.\n\nFolytatod?": {
+ "en": "The setup writes keys into the firmware and signs the boot loader and the kernel. If Windows with BitLocker is also on this computer, suspend BitLocker first.\n\nContinue?",
+ "de": "Die Einrichtung schreibt Schlüssel in die Firmware und signiert Bootloader und Kernel. Wenn auf dem Computer auch Windows mit BitLocker ist, setze BitLocker vorher aus.\n\nFortfahren?"
+ },
+ "Újraindítás a BIOS-ba": {
+ "en": "Restart into BIOS",
+ "de": "Neustart ins BIOS"
+ },
+ "A Secure Boot csak aláírt rendszerbetöltőt és kernelt enged elindulni. Akkor hasznos, ha a gépen Windows is van, és ott olyan játék vagy program fut, ami bekapcsolt Secure Bootot kér (például egyes csalásvédelmek vagy a Windows 11). A beállítás után a RaveOS és a Windows is elindul.": {
+ "en": "Secure Boot only lets a signed boot loader and kernel start. It is useful if the computer also has Windows and a game or program there requires Secure Boot to be enabled (for example some anti-cheat systems or Windows 11). After the setup both RaveOS and Windows start.",
+ "de": "Secure Boot lässt nur einen signierten Bootloader und Kernel starten. Das ist nützlich, wenn auf dem Computer auch Windows ist und dort ein Spiel oder Programm aktiviertes Secure Boot verlangt (zum Beispiel manche Anti-Cheat-Systeme oder Windows 11). Nach der Einrichtung starten sowohl RaveOS als auch Windows."
+ },
+ "Gépkulcs": {
+ "en": "Computer key",
+ "de": "Computerschlüssel"
+ },
+ "Aláírások": {
+ "en": "Signatures",
+ "de": "Signaturen"
+ },
+ "FIGYELEM, BITLOCKER: ha a gépen Windows is van BitLockerrel, a beállítás előtt a Windowsban függeszd fel a BitLockert (manage-bde -protectors -disable C: -rebootcount 2), vagy legyen kéznél a 48 jegyű helyreállítási kulcs. Enélkül a Windows a következő indításkor ezt a kulcsot fogja kérni.": {
+ "en": "WARNING, BITLOCKER: if this computer also has Windows with BitLocker, suspend BitLocker in Windows before the setup (manage-bde -protectors -disable C: -rebootcount 2), or have the 48-digit recovery key at hand. Otherwise Windows will ask for this key on the next start.",
+ "de": "ACHTUNG, BITLOCKER: wenn auf dem Computer auch Windows mit BitLocker ist, setze BitLocker vor der Einrichtung in Windows aus (manage-bde -protectors -disable C: -rebootcount 2) oder halte den 48-stelligen Wiederherstellungsschlüssel bereit. Sonst fragt Windows beim nächsten Start nach diesem Schlüssel."
+ },
+ "A Beállítás gomb egymás után:": {
+ "en": "The Set up button, one after another:",
+ "de": "Die Schaltfläche Einrichten, nacheinander:"
+ },
+ "Ehhez a firmware-nek Setup Mode-ban kell lennie: a BIOS/UEFI beállításokban töröld a Secure Boot kulcsokat (Clear Secure Boot keys / Reset to Setup Mode). Ha nincs Setup Mode-ban, a Center szól, és újraindítás után a beállítás magától folytatódik.": {
+ "en": "For this the firmware must be in Setup Mode: in the BIOS/UEFI settings delete the Secure Boot keys (Clear Secure Boot keys / Reset to Setup Mode). If it is not in Setup Mode, the Center tells you, and after a restart the setup continues on its own.",
+ "de": "Dafür muss die Firmware im Setup Mode sein: lösche in den BIOS/UEFI-Einstellungen die Secure-Boot-Schlüssel (Clear Secure Boot keys / Reset to Setup Mode). Ist sie nicht im Setup Mode, meldet sich das Center, und nach einem Neustart läuft die Einrichtung von selbst weiter."
+ },
+ "A Secure Boot beállító (raveos-secureboot-setup) nincs telepítve.": {
+ "en": "The Secure Boot setup tool (raveos-secureboot-setup) is not installed.",
+ "de": "Das Secure-Boot-Einrichtungswerkzeug (raveos-secureboot-setup) ist nicht installiert."
+ },
+ "Ez a gép nem UEFI módban indult, ezért a Secure Boot nem érhető el.": {
+ "en": "This computer did not boot in UEFI mode, so Secure Boot is not available.",
+ "de": "Dieser Computer wurde nicht im UEFI-Modus gestartet, daher ist Secure Boot nicht verfügbar."
+ },
+ "BE": {
+ "en": "ON",
+ "de": "AN"
+ },
+ "KI": {
+ "en": "OFF",
+ "de": "AUS"
+ },
+ "IGEN": {
+ "en": "YES",
+ "de": "JA"
+ },
+ "NEM": {
+ "en": "NO",
+ "de": "NEIN"
+ },
+ "MEGVAN": {
+ "en": "PRESENT",
+ "de": "VORHANDEN"
+ },
+ "HIÁNYZIK": {
+ "en": "MISSING",
+ "de": "FEHLT"
+ },
+ "A beállítás félbemaradt, és a következő újraindításkor magától folytatódik.": {
+ "en": "The setup was interrupted and continues on its own at the next restart.",
+ "de": "Die Einrichtung wurde unterbrochen und läuft beim nächsten Neustart von selbst weiter."
+ },
+ "Az aláírások és a kulcsok készen vannak.\n\nA BIOS-ban állítsd a Secure Bootot Enabled-re, majd mentsd el a beállítást és indítsd újra a gépet.": {
+ "en": "The signatures and keys are ready.\n\nIn the BIOS set Secure Boot to Enabled, then save the setting and restart the computer.",
+ "de": "Die Signaturen und Schlüssel sind fertig.\n\nStelle im BIOS Secure Boot auf Enabled, speichere die Einstellung und starte den Computer neu."
+ },
+ "A firmware nincs Setup Mode-ban.\n\nA BIOS-ban a Secure Boot menüben töröld a kulcsokat (Key Management, Clear Secure Boot keys), így a gép Setup Mode-ba kerül. Mentés után indítsd újra a gépet: a beállítás indítás után magától befejeződik.": {
+ "en": "The firmware is not in Setup Mode.\n\nIn the BIOS Secure Boot menu delete the keys (Key Management, Clear Secure Boot keys), which puts the computer into Setup Mode. After saving, restart the computer: the setup finishes on its own after booting.",
+ "de": "Die Firmware ist nicht im Setup Mode.\n\nLösche im BIOS im Secure-Boot-Menü die Schlüssel (Key Management, Clear Secure Boot keys), dadurch wechselt der Computer in den Setup Mode. Nach dem Speichern starte den Computer neu: die Einrichtung wird nach dem Start von selbst abgeschlossen."
+ },
+ "A művelet nem sikerült. A részleteket a napló mutatja.": {
+ "en": "The operation failed. The log shows the details.",
+ "de": "Der Vorgang ist fehlgeschlagen. Das Protokoll zeigt die Details."
+ },
+ "Az állapot nem olvasható: {0}": {
+ "en": "The status cannot be read: {0}",
+ "de": "Der Status kann nicht gelesen werden: {0}"
+ },
+ "Újraindítás a firmware beállításaiba": {
+ "en": "Restart into firmware settings",
+ "de": "Neustart in die Firmware-Einstellungen"
+ },
+ "Snapshotok": {
+ "en": "Snapshots",
+ "de": "Snapshots"
+ },
+ "A btrfs snapshot a rendszer egy pillanatnyi állapota. Ha egy frissítés után gond van, egy korábbi állapotra vissza tudsz állni. A saját fájljaidat (/home) a visszaállítás nem érinti.": {
+ "en": "A btrfs snapshot is a point-in-time state of the system. If something goes wrong after an update, you can roll back to an earlier state. Restoring does not touch your own files (/home).",
+ "de": "Ein btrfs-Snapshot ist ein Momentzustand des Systems. Wenn nach einer Aktualisierung etwas nicht stimmt, kannst du zu einem früheren Zustand zurückkehren. Deine eigenen Dateien (/home) sind von der Wiederherstellung nicht betroffen."
+ },
+ "Új snapshot": {
+ "en": "New snapshot",
+ "de": "Neuer Snapshot"
+ },
+ "Snapper beállítása": {
+ "en": "Set up Snapper",
+ "de": "Snapper einrichten"
+ },
+ "A snapshotok nem olvashatók: {0}": {
+ "en": "The snapshots cannot be read: {0}",
+ "de": "Die Snapshots können nicht gelesen werden: {0}"
+ },
+ "Leírás (például: Driver csere előtt):": {
+ "en": "Description (for example: Before driver change):",
+ "de": "Beschreibung (zum Beispiel: Vor Treiberwechsel):"
+ },
+ "Kézi snapshot": {
+ "en": "Manual snapshot",
+ "de": "Manueller Snapshot"
+ },
+ "A snapshot elkészült.": {
+ "en": "The snapshot was created.",
+ "de": "Der Snapshot wurde erstellt."
+ },
+ "Snapshot törlése": {
+ "en": "Delete snapshot",
+ "de": "Snapshot löschen"
+ },
+ "A snapshot törölve.": {
+ "en": "The snapshot was deleted.",
+ "de": "Der Snapshot wurde gelöscht."
+ },
+ "A visszaállítás elkészült. Indítsd újra a gépet.": {
+ "en": "The restore is complete. Restart the computer.",
+ "de": "Die Wiederherstellung ist abgeschlossen. Starte den Computer neu."
+ },
+ "A visszaállítás újraindítás után lép életbe. Amit addig a gépen változtatsz (telepítés, beállítás, rendszerfájlok), az a tartalék rendszerbe kerül, és elvész. A /home-ban lévő fájljaid megmaradnak.\n\nJavasolt most újraindítani.": {
+ "en": "The restore takes effect after a restart. Anything you change on the computer until then (installs, settings, system files) goes into the spare system and will be lost. Your files in /home are kept.\n\nRestarting now is recommended.",
+ "de": "Die Wiederherstellung wird nach einem Neustart wirksam. Was du bis dahin am Computer änderst (Installationen, Einstellungen, Systemdateien), landet im Reservesystem und geht verloren. Deine Dateien in /home bleiben erhalten.\n\nEin Neustart jetzt wird empfohlen."
+ },
+ "A snapper beállítva, az első snapshot elkészült.": {
+ "en": "Snapper is set up, the first snapshot was created.",
+ "de": "Snapper ist eingerichtet, der erste Snapshot wurde erstellt."
+ },
+ "Betöltés...": {
+ "en": "Loading...",
+ "de": "Wird geladen..."
+ },
+ "Snapshothoz btrfs fájlrendszer kell. Ez a gép {0} fájlrendszert használ, ezért itt nem érhető el. A RaveOS telepítésekor a lemez partícionálásánál ext4 és btrfs közül lehet választani: ha snapshotot szeretnél, a btrfs-t válaszd.": {
+ "en": "Snapshots need the btrfs file system. This computer uses {0}, so they are not available here. When installing RaveOS you can choose between ext4 and btrfs during disk partitioning: if you want snapshots, choose btrfs.",
+ "de": "Snapshots benötigen das Dateisystem btrfs. Dieser Computer nutzt {0}, daher sind sie hier nicht verfügbar. Bei der Installation von RaveOS kannst du bei der Partitionierung zwischen ext4 und btrfs wählen: wenn du Snapshots möchtest, wähle btrfs."
+ },
+ "A rendszer most nem a fő alvolumenről (@) fut, ezért visszaállítás nem indítható.": {
+ "en": "The system is not running from the main subvolume (@), so a restore cannot be started.",
+ "de": "Das System läuft gerade nicht vom Hauptsubvolume (@), daher kann keine Wiederherstellung gestartet werden."
+ },
+ "{0} snapshot, a régiek automatikusan törlődnek.": {
+ "en": "{0} snapshots, old ones are deleted automatically.",
+ "de": "{0} Snapshots, alte werden automatisch gelöscht."
+ },
+ "Még nincs snapshot.": {
+ "en": "No snapshots yet.",
+ "de": "Noch keine Snapshots."
+ },
+ "A leírás 1-80 karakter lehet: betűk, számok, szóköz és . _ : , ( ) -": {
+ "en": "The description can be 1-80 characters: letters, numbers, space and . _ : , ( ) -",
+ "de": "Die Beschreibung darf 1-80 Zeichen haben: Buchstaben, Ziffern, Leerzeichen und . _ : , ( ) -"
+ },
+ "Törlöd a(z) #{0} snapshotot?\n{1} {2}": {
+ "en": "Delete snapshot #{0}?\n{1} {2}",
+ "de": "Snapshot #{0} löschen?\n{1} {2}"
+ },
+ "Ennek a snapshotnak a kernelcsomagja már nincs meg a csomag-cache-ben ({0}), ezért a visszaállított rendszer nem indulna el. Válassz újabb snapshotot.": {
+ "en": "The kernel package of this snapshot is no longer in the package cache ({0}), so the restored system would not boot. Choose a newer snapshot.",
+ "de": "Das Kernelpaket dieses Snapshots ist nicht mehr im Paketcache ({0}), daher würde das wiederhergestellte System nicht starten. Wähle einen neueren Snapshot."
+ },
+ "Snapshot visszaállítása": {
+ "en": "Restore snapshot",
+ "de": "Snapshot wiederherstellen"
+ },
+ "A gép btrfs-t használ, de a snapper még nincs beállítva. Egy kattintással beállítható: utána minden csomagművelet előtt automatikusan snapshot készül.": {
+ "en": "This computer uses btrfs, but snapper is not set up yet. It can be set up with one click: after that a snapshot is taken automatically before every package operation.",
+ "de": "Der Computer nutzt btrfs, aber snapper ist noch nicht eingerichtet. Das geht mit einem Klick: danach wird vor jedem Paketvorgang automatisch ein Snapshot erstellt."
+ },
+ "A gép btrfs-t használ, de az alvolumen-elrendezése eltér a RaveOS-étól (@ és @snapshots), ezért a snapper itt nem állítható be automatikusan.": {
+ "en": "This computer uses btrfs, but its subvolume layout differs from RaveOS (@ and @snapshots), so snapper cannot be set up automatically here.",
+ "de": "Der Computer nutzt btrfs, aber die Subvolume-Aufteilung weicht von der von RaveOS ab (@ und @snapshots), daher kann snapper hier nicht automatisch eingerichtet werden."
+ },
+ "Automatikus snapshot minden csomagművelet előtt és után (snap-pac). ": {
+ "en": "Automatic snapshot before and after every package operation (snap-pac). ",
+ "de": "Automatischer Snapshot vor und nach jedem Paketvorgang (snap-pac). "
+ },
+ "A rendszer visszaáll erre az állapotra:\n#{0} {1} {2}\n\nA saját fájljaid (/home) nem változnak. A mostani rendszer a következő visszaállításig megmarad tartalékként. A változás újraindítás után lép életbe.": {
+ "en": "The system will roll back to this state:\n#{0} {1} {2}\n\nYour own files (/home) do not change. The current system is kept as a spare until the next restore. The change takes effect after a restart.",
+ "de": "Das System wird auf diesen Zustand zurückgesetzt:\n#{0} {1} {2}\n\nDeine eigenen Dateien (/home) ändern sich nicht. Das aktuelle System bleibt bis zur nächsten Wiederherstellung als Reserve erhalten. Die Änderung wird nach einem Neustart wirksam."
+ },
+ "\n\nA snapshot kernelverziója innen nem olvasható, a visszaállítás előtt a rendszer ellenőrzi, és ha a kernelcsomag hiányzik, nem végzi el.": {
+ "en": "\n\nThe kernel version of the snapshot cannot be read from here, the system checks it before restoring and does not restore if the kernel package is missing.",
+ "de": "\n\nDie Kernelversion des Snapshots kann hier nicht gelesen werden, das System prüft sie vor der Wiederherstellung und führt sie nicht aus, wenn das Kernelpaket fehlt."
+ },
+ "A RaveOS Center rendszerhelpere nincs telepítve, ezért snapshot nem kezelhető.": {
+ "en": "The RaveOS Center system helper is not installed, so snapshots cannot be managed.",
+ "de": "Der Systemhelfer von RaveOS Center ist nicht installiert, daher können keine Snapshots verwaltet werden."
+ },
+ "\n\nA kernel is visszaáll:{0}": {
+ "en": "\n\nThe kernel is rolled back too:{0}",
+ "de": "\n\nAuch der Kernel wird zurückgesetzt:{0}"
+ },
+ "nincs": {
+ "en": "none",
+ "de": "keiner"
+ },
+ "Visszajelzés": {
+ "en": "Feedback",
+ "de": "Feedback"
+ },
+ "Az Elfogadom gombbal elfogadod a fenti szabályokat, és hozzájárulsz, hogy a beírt szöveget, a géped alapadatait (RaveOS-verzió, kernel, asztali környezet, videokártya) és, ha bejelölöd, a diagnosztikát elküldjük a RaveOS fejlesztőinek.": {
+ "en": "With the Accept button you accept the rules above and agree that the text you enter, your computer's basic details (RaveOS version, kernel, desktop environment, graphics card) and, if you tick it, the diagnostics are sent to the RaveOS developers.",
+ "de": "Mit der Schaltfläche Akzeptieren akzeptierst du die obigen Regeln und stimmst zu, dass der eingegebene Text, die Grunddaten deines Computers (RaveOS-Version, Kernel, Desktopumgebung, Grafikkarte) und, wenn du es ankreuzt, die Diagnose an die RaveOS-Entwickler gesendet werden."
+ },
+ "Beküldve": {
+ "en": "Submitted",
+ "de": "Eingereicht"
+ },
+ "Folyamatban": {
+ "en": "In progress",
+ "de": "In Bearbeitung"
+ },
+ "Tervezett": {
+ "en": "Planned",
+ "de": "Geplant"
+ },
+ "Megoldva": {
+ "en": "Solved",
+ "de": "Gelöst"
+ },
+ "Elkészült": {
+ "en": "Done",
+ "de": "Umgesetzt"
+ },
+ "Lezárva": {
+ "en": "Closed",
+ "de": "Geschlossen"
+ },
+ "Elutasítva": {
+ "en": "Rejected",
+ "de": "Abgelehnt"
+ },
+ "%Y.%m.%d %H:%M": {
+ "en": "%Y-%m-%d %H:%M",
+ "de": "%d.%m.%Y %H:%M"
+ },
+ "Nagyon rossz": {
+ "en": "Very bad",
+ "de": "Sehr schlecht"
+ },
+ "Rossz": {
+ "en": "Bad",
+ "de": "Schlecht"
+ },
+ "Elmegy": {
+ "en": "Okay",
+ "de": "Geht so"
+ },
+ "Jó": {
+ "en": "Good",
+ "de": "Gut"
+ },
+ "Kiváló": {
+ "en": "Excellent",
+ "de": "Ausgezeichnet"
+ },
+ "Mire jó?": {
+ "en": "What is it for?",
+ "de": "Wozu dient das?"
+ },
+ "Hogyan működik?": {
+ "en": "How does it work?",
+ "de": "Wie funktioniert es?"
+ },
+ "Miért így?": {
+ "en": "Why like this?",
+ "de": "Warum so?"
+ },
+ "Szabályok": {
+ "en": "Rules",
+ "de": "Regeln"
+ },
+ "ÖTLET": {
+ "en": "IDEA",
+ "de": "IDEE"
+ },
+ "RaveOS csapat": {
+ "en": "RaveOS team",
+ "de": "RaveOS-Team"
+ },
+ "Te": {
+ "en": "You",
+ "de": "Du"
+ },
+ "A csatolt diagnosztika tartalma": {
+ "en": "Contents of the attached diagnostics",
+ "de": "Inhalt der angehängten Diagnose"
+ },
+ "Diagnosztika csatolása (ajánlott, segít megtalálni a hibát)": {
+ "en": "Attach diagnostics (recommended, helps find the problem)",
+ "de": "Diagnose anhängen (empfohlen, hilft den Fehler zu finden)"
+ },
+ "Megnézem, mi kerül bele": {
+ "en": "Show me what goes into it",
+ "de": "Zeig mir, was enthalten ist"
+ },
+ "Beküldés": {
+ "en": "Submit",
+ "de": "Absenden"
+ },
+ "Összeállítás...": {
+ "en": "Collecting...",
+ "de": "Wird zusammengestellt..."
+ },
+ "Küldés...": {
+ "en": "Sending...",
+ "de": "Wird gesendet..."
+ },
+ "Válasz a RaveOS csapatnak": {
+ "en": "Reply to the RaveOS team",
+ "de": "Antwort an das RaveOS-Team"
+ },
+ "Válasz küldése": {
+ "en": "Send reply",
+ "de": "Antwort senden"
+ },
+ "A RaveOS értékelése": {
+ "en": "RaveOS rating",
+ "de": "Bewertung von RaveOS"
+ },
+ "A te értékelésed": {
+ "en": "Your rating",
+ "de": "Deine Bewertung"
+ },
+ "Kattints a csillagokra": {
+ "en": "Click the stars",
+ "de": "Klicke auf die Sterne"
+ },
+ "Röviden: mi tetszik, mi nem? (nem kötelező)": {
+ "en": "In short: what do you like, what not? (optional)",
+ "de": "Kurz: was gefällt dir, was nicht? (optional)"
+ },
+ "Értékelés küldése": {
+ "en": "Send rating",
+ "de": "Bewertung senden"
+ },
+ "Itt közvetlenül a RaveOS fejlesztőinek jelezhetsz hibát, és küldhetsz ötletet. Minden jegyet elolvasunk, és itt, a Centerben válaszolunk.": {
+ "en": "Here you can report bugs and send ideas directly to the RaveOS developers. We read every ticket and reply here, in the Center.",
+ "de": "Hier kannst du den RaveOS-Entwicklern direkt Fehler melden und Ideen schicken. Wir lesen jedes Ticket und antworten hier im Center."
+ },
+ "Hibajegy: írd le, mi történt. Ha bejelölöd, a géped diagnosztikáját is csatoljuk, ami sokat segít; előtte megnézheted, mi kerül bele.": {
+ "en": "Ticket: describe what happened. If you tick it, your computer's diagnostics are attached too, which helps a lot; you can check beforehand what goes into it.",
+ "de": "Ticket: beschreibe, was passiert ist. Wenn du es ankreuzt, hängen wir auch die Diagnose deines Computers an, das hilft sehr; vorher kannst du nachsehen, was enthalten ist."
+ },
+ "Válasz: ha válaszolunk, a Visszajelzés menüpont mellett szám jelenik meg, és a jegyben vissza is írhatsz.": {
+ "en": "Reply: when we reply, a number appears next to the Feedback menu item, and you can write back in the ticket.",
+ "de": "Antwort: wenn wir antworten, erscheint neben dem Menüpunkt Feedback eine Zahl, und du kannst im Ticket zurückschreiben."
+ },
+ "Ötlet: a jóváhagyott ötletek felkerülnek a közös listára, ahol mások is támogathatják. A legtöbbet támogatottakkal foglalkozunk először.": {
+ "en": "Idea: approved ideas go to the shared list, where others can support them too. We deal with the most supported ones first.",
+ "de": "Idee: freigegebene Ideen kommen auf die gemeinsame Liste, wo auch andere sie unterstützen können. Mit den meistunterstützten beschäftigen wir uns zuerst."
+ },
+ "Értékelés: 1-5 csillaggal értékelheted a RaveOS-t, és röviden leírhatod a véleményed. A szöveget csak a fejlesztők látják, a többiek csak a csillagok átlagát. Gépenként egy értékelés számít, bármikor módosíthatod.": {
+ "en": "Rating: you can rate RaveOS with 1-5 stars and briefly write your opinion. Only the developers see the text, others only see the average of the stars. One rating per computer counts, you can change it at any time.",
+ "de": "Bewertung: du kannst RaveOS mit 1-5 Sternen bewerten und kurz deine Meinung schreiben. Den Text sehen nur die Entwickler, die anderen nur den Durchschnitt der Sterne. Pro Computer zählt eine Bewertung, du kannst sie jederzeit ändern."
+ },
+ "Nem kell fiók: a géped egy névtelen azonosítót kap, ezzel látod a saját jegyeidet. Újratelepítés után a régi jegyeid nem látszanak.": {
+ "en": "No account needed: your computer gets an anonymous ID, with which you see your own tickets. After a reinstall your old tickets are not visible.",
+ "de": "Kein Konto nötig: dein Computer bekommt eine anonyme Kennung, mit der du deine eigenen Tickets siehst. Nach einer Neuinstallation sind deine alten Tickets nicht mehr sichtbar."
+ },
+ "Csak azt küldjük el, amit beírsz, vagy amihez hozzájárulsz. A diagnosztikából kitakarjuk a személyes adatokat, és 30 nap után törlődik.": {
+ "en": "We only send what you type in or agree to. Personal data is masked in the diagnostics, and it is deleted after 30 days.",
+ "de": "Wir senden nur, was du eingibst oder wozu du zustimmst. Persönliche Daten werden in der Diagnose unkenntlich gemacht, und sie wird nach 30 Tagen gelöscht."
+ },
+ "A lezárt jegyek 7 nap után maguktól törlődnek.": {
+ "en": "Closed tickets are deleted automatically after 7 days.",
+ "de": "Geschlossene Tickets werden nach 7 Tagen automatisch gelöscht."
+ },
+ "A Visszajelzés csak hibák jelzésére és ötletek beküldésére való.": {
+ "en": "Feedback is only for reporting bugs and submitting ideas.",
+ "de": "Das Feedback dient nur zum Melden von Fehlern und Einreichen von Ideen."
+ },
+ "Egy hibáról egy jegyet nyiss. Ha már van róla jegyed, abba írj, ne nyiss újat.": {
+ "en": "Open one ticket per bug. If you already have a ticket about it, write in that one instead of opening a new one.",
+ "de": "Öffne pro Fehler ein Ticket. Wenn du schon eines dazu hast, schreib dort und öffne kein neues."
+ },
+ "Ötlet beküldése előtt nézd meg az Ötletek listát. Ha van hasonló, támogasd azt, ne küldj újat.": {
+ "en": "Before submitting an idea, check the Ideas list. If there is a similar one, support that instead of sending a new one.",
+ "de": "Sieh dir vor dem Einreichen einer Idee die Ideenliste an. Wenn es eine ähnliche gibt, unterstütze diese, statt eine neue zu senden."
+ },
+ "Ne írj a jegybe vagy az értékelésbe személyes vagy titkos adatot: jelszót, e-mail-címet, telefonszámot vagy más emberek adatait. A diagnosztikát kitakarjuk, a beírt szöveget nem.": {
+ "en": "Do not put personal or secret data in a ticket or rating: passwords, email addresses, phone numbers or other people's data. We mask the diagnostics, but not the text you type.",
+ "de": "Schreib keine persönlichen oder geheimen Daten in ein Ticket oder eine Bewertung: Passwörter, E-Mail-Adressen, Telefonnummern oder Daten anderer Personen. Die Diagnose machen wir unkenntlich, den eingegebenen Text nicht."
+ },
+ "Kulturált hangnemet kérünk. Sértő, fenyegető vagy trágár üzenet tiltással jár.": {
+ "en": "Please keep a civil tone. Insulting, threatening or vulgar messages lead to a ban.",
+ "de": "Bitte bleib höflich. Beleidigende, drohende oder vulgäre Nachrichten führen zu einer Sperre."
+ },
+ "Reklámot és nem ide illő linkeket ne küldj.": {
+ "en": "Do not send advertising or unrelated links.",
+ "de": "Schick keine Werbung und keine unpassenden Links."
+ },
+ "A jegyekre nem azonnal válaszolunk, ezért kérünk, légy türelmes, és ne küldd el többször ugyanazt.": {
+ "en": "We do not reply to tickets immediately, so please be patient and do not send the same thing several times.",
+ "de": "Wir antworten nicht sofort auf Tickets, bitte sei geduldig und schick nicht mehrmals dasselbe."
+ },
+ "Visszaélés, spam, sértő vagy nem ide illő tartalom esetén a géped kitiltható a Visszajelzésből, ideiglenesen vagy véglegesen. A Center minden más része ettől ugyanúgy működik.": {
+ "en": "In case of abuse, spam, offensive or unrelated content your computer can be banned from Feedback, temporarily or permanently. Every other part of the Center keeps working.",
+ "de": "Bei Missbrauch, Spam, beleidigenden oder unpassenden Inhalten kann dein Computer vorübergehend oder dauerhaft vom Feedback ausgeschlossen werden. Alle anderen Teile des Centers funktionieren weiterhin."
+ },
+ "Két óránként legfeljebb 4 jegyet küldhetsz. Ennél több beküldés automatikusan 24 órás tiltással jár.": {
+ "en": "You can send at most 4 tickets every two hours. Sending more results in an automatic 24-hour ban.",
+ "de": "Du kannst höchstens 4 Tickets in zwei Stunden senden. Mehr Einsendungen führen automatisch zu einer 24-stündigen Sperre."
+ },
+ "HIBÁK ÉS ÖTLETEK": {
+ "en": "BUGS AND IDEAS",
+ "de": "FEHLER UND IDEEN"
+ },
+ "Szabályok elolvasása": {
+ "en": "Read the rules",
+ "de": "Regeln lesen"
+ },
+ "Pontosan ez kerül feltöltésre, ha bejelölöd a csatolást:": {
+ "en": "Exactly this is uploaded if you tick the attachment:",
+ "de": "Genau das wird hochgeladen, wenn du das Anhängen ankreuzt:"
+ },
+ "Cím": {
+ "en": "Title",
+ "de": "Titel"
+ },
+ "Leírás": {
+ "en": "Description",
+ "de": "Beschreibung"
+ },
+ "Ha bejelölöd, egy jelentést is csatolunk a gépedről:\n{0}\n\nFeltöltés előtt kitakarjuk: {1}. Jelszó nem kerül bele. Titkosított kapcsolaton megy el, csak a RaveOS fejlesztői látják, és 30 nap után törlődik.": {
+ "en": "If you tick it, we also attach a report about your computer:\n{0}\n\nBefore uploading we mask: {1}. No passwords are included. It is sent over an encrypted connection, only the RaveOS developers see it, and it is deleted after 30 days.",
+ "de": "Wenn du es ankreuzt, hängen wir auch einen Bericht über deinen Computer an:\n{0}\n\nVor dem Hochladen machen wir unkenntlich: {1}. Passwörter sind nicht enthalten. Er wird über eine verschlüsselte Verbindung gesendet, nur die RaveOS-Entwickler sehen ihn, und er wird nach 30 Tagen gelöscht."
+ },
+ "A jegyhez mindig csatoljuk a RaveOS-verziót, a kernelt, az asztali környezetet és a videokártya nevét.": {
+ "en": "We always attach the RaveOS version, the kernel, the desktop environment and the graphics card name to the ticket.",
+ "de": "An das Ticket hängen wir immer die RaveOS-Version, den Kernel, die Desktopumgebung und den Namen der Grafikkarte an."
+ },
+ "ÚJ HIBAJEGY": {
+ "en": "NEW TICKET",
+ "de": "NEUES TICKET"
+ },
+ "Írd le, mi történt, és mit csináltál előtte. Ha válaszolunk, itt fogod látni.": {
+ "en": "Describe what happened and what you did before. If we reply, you will see it here.",
+ "de": "Beschreibe, was passiert ist und was du davor gemacht hast. Wenn wir antworten, siehst du es hier."
+ },
+ "Például: Nem indul a Steam a frissítés után": {
+ "en": "For example: Steam does not start after the update",
+ "de": "Zum Beispiel: Steam startet nach der Aktualisierung nicht"
+ },
+ "Mi a hiba, mikor jelentkezik, mit próbáltál már?": {
+ "en": "What is the problem, when does it happen, what have you tried already?",
+ "de": "Was ist der Fehler, wann tritt er auf, was hast du schon versucht?"
+ },
+ "ÚJ ÖTLET": {
+ "en": "NEW IDEA",
+ "de": "NEUE IDEE"
+ },
+ "Mi hiányzik a RaveOS-ből? Az ötleted a jóváhagyásunk után jelenik meg a közös listában, ahol mások is támogathatják.": {
+ "en": "What is missing from RaveOS? Your idea appears in the shared list after our approval, where others can support it too.",
+ "de": "Was fehlt in RaveOS? Deine Idee erscheint nach unserer Freigabe in der gemeinsamen Liste, wo auch andere sie unterstützen können."
+ },
+ "Például: Sötét és világos téma váltó": {
+ "en": "For example: Dark and light theme switcher",
+ "de": "Zum Beispiel: Umschalter für helles und dunkles Design"
+ },
+ "Mit szeretnél, és miért lenne hasznos?": {
+ "en": "What would you like, and why would it be useful?",
+ "de": "Was möchtest du, und warum wäre es nützlich?"
+ },
+ "Adj meg egy legalább 3 karakteres címet és egy legalább 10 karakteres leírást.": {
+ "en": "Enter a title of at least 3 characters and a description of at least 10 characters.",
+ "de": "Gib einen Titel mit mindestens 3 Zeichen und eine Beschreibung mit mindestens 10 Zeichen ein."
+ },
+ "A beküldés nem sikerült: {0}": {
+ "en": "Submitting failed: {0}",
+ "de": "Das Absenden ist fehlgeschlagen: {0}"
+ },
+ "Ez a jegy le van zárva, és {0} után automatikusan törlődik. Ha a hiba újra jelentkezik, nyiss új jegyet.": {
+ "en": "This ticket is closed and will be deleted automatically after {0}. If the problem comes back, open a new ticket.",
+ "de": "Dieses Ticket ist geschlossen und wird nach {0} automatisch gelöscht. Wenn der Fehler wieder auftritt, öffne ein neues Ticket."
+ },
+ "A szöveges véleményt csak a RaveOS fejlesztői látják, nyilvánosan csak a csillagok átlaga jelenik meg. Gépenként egy értékelés számít, bármikor módosíthatod.": {
+ "en": "Only the RaveOS developers see the written review, publicly only the average of the stars is shown. One rating per computer counts, you can change it at any time.",
+ "de": "Die schriftliche Meinung sehen nur die RaveOS-Entwickler, öffentlich erscheint nur der Durchschnitt der Sterne. Pro Computer zählt eine Bewertung, du kannst sie jederzeit ändern."
+ },
+ "{0} értékelés alapján": {
+ "en": "Based on {0} ratings",
+ "de": "Basierend auf {0} Bewertungen"
+ },
+ "Még nincs értékelés. Legyél te az első!": {
+ "en": "No ratings yet. Be the first!",
+ "de": "Noch keine Bewertungen. Sei der Erste!"
+ },
+ "ELKÜLDVE: {0}": {
+ "en": "SENT: {0}",
+ "de": "GESENDET: {0}"
+ },
+ "Értékelés módosítása": {
+ "en": "Update rating",
+ "de": "Bewertung ändern"
+ },
+ "KÖSZÖNJÜK, ELMENTETTÜK": {
+ "en": "THANK YOU, SAVED",
+ "de": "DANKE, GESPEICHERT"
+ },
+ "ISMERTETŐ ÉS SZABÁLYOK": {
+ "en": "GUIDE AND RULES",
+ "de": "ANLEITUNG UND REGELN"
+ },
+ "HOGYAN MŰKÖDIK A VISSZAJELZÉS?": {
+ "en": "HOW DOES FEEDBACK WORK?",
+ "de": "WIE FUNKTIONIERT DAS FEEDBACK?"
+ },
+ "Most nem": {
+ "en": "Not now",
+ "de": "Nicht jetzt"
+ },
+ "Elfogadom": {
+ "en": "Accept",
+ "de": "Akzeptieren"
+ },
+ "{0} támogató": {
+ "en": "Supporters: {0}",
+ "de": "Unterstützer: {0}"
+ },
+ "Támogatva": {
+ "en": "Supported",
+ "de": "Unterstützt"
+ },
+ "Támogatom": {
+ "en": "Support",
+ "de": "Unterstützen"
+ },
+ "Új hibajegy": {
+ "en": "New ticket",
+ "de": "Neues Ticket"
+ },
+ "Új ötlet": {
+ "en": "New idea",
+ "de": "Neue Idee"
+ },
+ "A Visszajelzés használatához el kell fogadnod a szabályokat.": {
+ "en": "You must accept the rules to use Feedback.",
+ "de": "Um das Feedback zu nutzen, musst du die Regeln akzeptieren."
+ },
+ "Mások ötletei, amelyeket jóváhagytunk. Támogasd, amit te is szeretnél, így látjuk, mi a legfontosabb.": {
+ "en": "Ideas from others that we approved. Support the ones you want too, so we see what matters most.",
+ "de": "Ideen anderer, die wir freigegeben haben. Unterstütze, was du auch möchtest, so sehen wir, was am wichtigsten ist."
+ },
+ "eddig: {0}": {
+ "en": "until {0}",
+ "de": "bis {0}"
+ },
+ "véglegesen": {
+ "en": "permanently",
+ "de": "dauerhaft"
+ },
+ "Ez a gép {0} ki van tiltva a Visszajelzés használatából a szabályok megsértése miatt. Ok: {1}\n\nA RaveOS Center minden más része ugyanúgy működik.": {
+ "en": "This computer is banned from using Feedback {0} for breaking the rules. Reason: {1}\n\nEvery other part of RaveOS Center works the same.",
+ "de": "Dieser Computer ist {0} wegen Regelverstößen von der Nutzung des Feedbacks ausgeschlossen. Grund: {1}\n\nAlle anderen Teile von RaveOS Center funktionieren weiterhin."
+ },
+ "Hiba történt: {0}": {
+ "en": "An error occurred: {0}",
+ "de": "Ein Fehler ist aufgetreten: {0}"
+ },
+ "ÚJ VÁLASZ": {
+ "en": "NEW REPLY",
+ "de": "NEUE ANTWORT"
+ },
+ "HIBAJEGY": {
+ "en": "TICKET",
+ "de": "TICKET"
+ },
+ "A küldés nem sikerült: {0}": {
+ "en": "Sending failed: {0}",
+ "de": "Das Senden ist fehlgeschlagen: {0}"
+ },
+ "A szabályokat már elfogadtad.": {
+ "en": "You have already accepted the rules.",
+ "de": "Du hast die Regeln bereits akzeptiert."
+ },
+ "· a te ötleted": {
+ "en": "· your idea",
+ "de": "· deine Idee"
+ },
+ "Jegyeim": {
+ "en": "My tickets",
+ "de": "Meine Tickets"
+ },
+ "Ötletek": {
+ "en": "Ideas",
+ "de": "Ideen"
+ },
+ "Értékelés": {
+ "en": "Rating",
+ "de": "Bewertung"
+ },
+ "nyilvános": {
+ "en": "public",
+ "de": "öffentlich"
+ },
+ "jóváhagyásra vár": {
+ "en": "awaiting approval",
+ "de": "wartet auf Freigabe"
+ },
+ "Még nincs jegyed. Ha hibát találtál, vagy ötleted van, írj nekünk a fenti gombokkal.": {
+ "en": "You have no tickets yet. If you found a bug or have an idea, write to us with the buttons above.",
+ "de": "Du hast noch keine Tickets. Wenn du einen Fehler gefunden oder eine Idee hast, schreib uns mit den Schaltflächen oben."
+ },
+ "Válassz egy jegyet a listából.": {
+ "en": "Choose a ticket from the list.",
+ "de": "Wähle ein Ticket aus der Liste."
+ },
+ "Még nincs közzétett ötlet.": {
+ "en": "No published ideas yet.",
+ "de": "Noch keine veröffentlichten Ideen."
+ },
+ "a kiadásból hiányzik a csomag vagy az ellenőrzőösszeg": {
+ "en": "the release is missing the package or the checksum",
+ "de": "in der Veröffentlichung fehlt das Paket oder die Prüfsumme"
+ },
+ "ismeretlen kiadásnév": {
+ "en": "unknown release name",
+ "de": "unbekannter Versionsname"
+ },
+ "nem található Steam, előbb indítsd el egyszer a Steamet": {
+ "en": "Steam not found, start Steam once first",
+ "de": "Steam wurde nicht gefunden, starte Steam zuerst einmal"
+ },
+ "érvénytelen ellenőrzőösszeg": {
+ "en": "invalid checksum",
+ "de": "ungültige Prüfsumme"
+ },
+ "érvénytelen név": {
+ "en": "invalid name",
+ "de": "ungültiger Name"
+ },
+ "a letöltött fájl ellenőrzőösszege nem egyezik": {
+ "en": "the checksum of the downloaded file does not match",
+ "de": "die Prüfsumme der heruntergeladenen Datei stimmt nicht"
+ },
+ "váratlan tartalom a csomagban": {
+ "en": "unexpected content in the package",
+ "de": "unerwarteter Inhalt im Paket"
+ },
+ "{0} perc": {
+ "en": "{0} min",
+ "de": "{0} Min."
+ },
+ "{0} nap {1} óra": {
+ "en": "{0} d {1} h",
+ "de": "{0} T. {1} Std."
+ },
+ "{0} óra {1} perc": {
+ "en": "{0} h {1} min",
+ "de": "{0} Std. {1} Min."
+ },
+ "a checkupdates nem elérhető (pacman-contrib)": {
+ "en": "checkupdates is not available (pacman-contrib)",
+ "de": "checkupdates ist nicht verfügbar (pacman-contrib)"
+ },
+ "a pacman frissítések ellenőrzése nem sikerült": {
+ "en": "checking pacman updates failed",
+ "de": "die Prüfung der pacman-Aktualisierungen ist fehlgeschlagen"
+ },
+ "csomagművelet előtt": {
+ "en": "before package operation",
+ "de": "vor Paketvorgang"
+ },
+ "csomagművelet után": {
+ "en": "after package operation",
+ "de": "nach Paketvorgang"
+ },
+ "kézi": {
+ "en": "manual",
+ "de": "manuell"
+ },
+ "telepítés": {
+ "en": "installation",
+ "de": "Installation"
+ },
+ "A snapshotok listája nem olvasható.": {
+ "en": "The snapshot list cannot be read.",
+ "de": "Die Snapshot-Liste kann nicht gelesen werden."
+ },
+ "A snapper válasza nem értelmezhető.": {
+ "en": "The snapper response cannot be parsed.",
+ "de": "Die Antwort von snapper kann nicht ausgewertet werden."
+ },
+ "Asztal": {
+ "en": "Desktop",
+ "de": "Desktop"
+ },
+ "Memória": {
+ "en": "Memory",
+ "de": "Arbeitsspeicher"
+ },
+ "Fájlrendszer": {
+ "en": "File system",
+ "de": "Dateisystem"
+ },
+ "Uptime": {
+ "en": "Uptime",
+ "de": "Laufzeit"
+ }
+}
diff --git a/raveos-center/raveos_center/gaming.py b/raveos-center/raveos_center/gaming.py
index 9652958..e6c4542 100644
--- a/raveos-center/raveos_center/gaming.py
+++ b/raveos-center/raveos_center/gaming.py
@@ -3,6 +3,7 @@ import re
import subprocess
from pathlib import Path
+from raveos_center.forditas import tr
from raveos_center.muveletek import Lepes, root
KONFIG = Path(os.environ.get("XDG_CONFIG_HOME", Path.home() / ".config"))
@@ -11,16 +12,16 @@ GAMEMODE_INI = KONFIG / "gamemode.ini"
GAMESCOPE = ["gamescope", "gamescope-session-git", "gamescope-session-steam-git"]
MANGOHUD_CONF = KONFIG / "MangoHud" / "MangoHud.conf"
MANGOHUD_MODOK = [
- ("", "Alapértelmezett"),
- ("1", "Csak FPS"),
- ("2", "Vízszintes sáv"),
- ("3", "Bővített"),
- ("4", "Részletes"),
+ ("", tr("Alapértelmezett")),
+ ("1", tr("Csak FPS")),
+ ("2", tr("Vízszintes sáv")),
+ ("3", tr("Bővített")),
+ ("4", tr("Részletes")),
]
SCHED_EXT = Path("/sys/kernel/sched_ext")
PROTON_CACHYOS = "proton-cachyos-slr"
GAMING_MOD = ["gamemode", "governor", "ntsync", "utemezo"]
-GOV_ALAPBOL = "A rendszer alapból is performance módban fut."
+GOV_ALAPBOL = tr("A rendszer alapból is performance módban fut.")
def _telepitett():
@@ -112,14 +113,14 @@ def _utemezo_allapot():
return {
"aktiv": False,
"elerheto": False,
- "megjegyzes": "A futó kernel nem támogatja (sched_ext nélkül fordították).",
+ "megjegyzes": tr("A futó kernel nem támogatja (sched_ext nélkül fordították)."),
}
try:
fut = (SCHED_EXT / "state").read_text().strip() == "enabled"
nev = (SCHED_EXT / "root" / "ops").read_text().strip() if fut else ""
except OSError:
fut, nev = False, ""
- return {"aktiv": fut, "elerheto": True, "megjegyzes": f"Most fut: {nev}" if nev else ""}
+ return {"aktiv": fut, "elerheto": True, "megjegyzes": tr("Most fut: {0}", nev) if nev else ""}
def mangohud_mod():
@@ -163,9 +164,9 @@ def _governor_allapot(gamemode):
rendszer = _rendszer_gov()
kivant = _desiredgov() or "performance"
if not gamemode:
- return {"aktiv": False, "elerheto": False, "megjegyzes": "Ehhez előbb a GameMode-ot kapcsold be."}
+ return {"aktiv": False, "elerheto": False, "megjegyzes": tr("Ehhez előbb a GameMode-ot kapcsold be.")}
if not rendszer:
- return {"aktiv": False, "elerheto": False, "megjegyzes": "Ezen a gépen nincs órajel-szabályozás (pl. virtuális gép)."}
+ return {"aktiv": False, "elerheto": False, "megjegyzes": tr("Ezen a gépen nincs órajel-szabályozás (pl. virtuális gép).")}
if rendszer == "performance":
return {"aktiv": True, "elerheto": False, "megjegyzes": GOV_ALAPBOL}
return {"aktiv": kivant == "performance", "elerheto": True, "megjegyzes": ""}
@@ -181,13 +182,13 @@ def allapot():
"mangohud": {
"aktiv": _mangohud_sor() and mangohud,
"elerheto": True,
- "megjegyzes": "Kijelentkezés és újra bejelentkezés után lép életbe.",
+ "megjegyzes": tr("Kijelentkezés és újra bejelentkezés után lép életbe."),
"root": not mangohud,
},
"gamescope": {
"aktiv": set(GAMESCOPE) <= telepitett,
"elerheto": True,
- "megjegyzes": "" if "steam" in telepitett else "A Steam munkamenethez a Steam is szükséges.",
+ "megjegyzes": "" if "steam" in telepitett else tr("A Steam munkamenethez a Steam is szükséges."),
"root": True,
},
"governor": dict(_governor_allapot(gamemode), root=False, cpufreq=bool(_rendszer_gov())),
@@ -195,7 +196,7 @@ def allapot():
"aktiv": ntsync_beepitett
or (Path("/etc/modules-load.d/ntsync.conf").exists() and Path("/dev/ntsync").exists()),
"elerheto": not ntsync_beepitett,
- "megjegyzes": "A RaveOS kernelébe be van építve, mindig aktív." if ntsync_beepitett else "",
+ "megjegyzes": tr("A RaveOS kernelébe be van építve, mindig aktív.") if ntsync_beepitett else "",
"root": True,
},
"utemezo": dict(_utemezo_allapot(), root=True),
@@ -215,7 +216,7 @@ def lepesek(azon, be):
if azon == "mangohud":
lista = []
if be and "mangohud" not in _telepitett():
- lista.append(Lepes("MangoHud telepítése", root("telepit", "mangohud", "lib32-mangohud")))
+ lista.append(Lepes(tr("MangoHud telepítése"), root("telepit", "mangohud", "lib32-mangohud")))
return lista, lambda: _mangohud(be)
if azon == "gamescope":
return [Lepes("Gamescope session", root("telepit" if be else "eltavolit", *(GAMESCOPE if be else GAMESCOPE[1:])))], None
@@ -224,7 +225,7 @@ def lepesek(azon, be):
if azon == "ntsync":
return [Lepes("NTSync", root("ntsync", "be" if be else "ki"))], None
if azon == "utemezo":
- return [Lepes("Játékra hangolt ütemező", root("utemezo", "be" if be else "ki"))], None
+ return [Lepes(tr("Játékra hangolt ütemező"), root("utemezo", "be" if be else "ki"))], None
if azon == "proton_cachyos":
return [Lepes("Proton-CachyOS", root("telepit" if be else "eltavolit", PROTON_CACHYOS))], None
return [], None
diff --git a/raveos-center/raveos_center/jegyek_api.py b/raveos-center/raveos_center/jegyek_api.py
index c8c7268..db6cbc7 100644
--- a/raveos-center/raveos_center/jegyek_api.py
+++ b/raveos-center/raveos_center/jegyek_api.py
@@ -5,6 +5,8 @@ import urllib.error
import urllib.request
from pathlib import Path
+from raveos_center.forditas import tr
+
ALAP = os.environ.get("RAVEOS_JEGYEK_URL", "https://jegyek.rp1.hu/api/v1")
KONFIG = Path(os.environ.get("XDG_CONFIG_HOME", Path.home() / ".config")) / "raveos-center"
KULCSFAJL = KONFIG / "kliens.json"
@@ -120,16 +122,16 @@ def naplo_feltolt(szoveg):
HIBAUZENETEK = {
- "nincs_kapcsolat": "Nem sikerült elérni a szervert. Ellenőrizd az internetkapcsolatot.",
- "tul_sok_keres": "Túl sok kérés rövid idő alatt. Próbáld újra kicsit később.",
- "lezart_jegy": "Ez a jegy le van zárva, már nem lehet rá válaszolni.",
- "nincs_jegy": "Ez a jegy már nem létezik.",
- "nincs_ilyen_naplo": "A megadott naplóazonosító nem létezik.",
- "kitiltva": "Ez a gép ki van tiltva a Visszajelzés használatából.",
+ "nincs_kapcsolat": tr("Nem sikerült elérni a szervert. Ellenőrizd az internetkapcsolatot."),
+ "tul_sok_keres": tr("Túl sok kérés rövid idő alatt. Próbáld újra kicsit később."),
+ "lezart_jegy": tr("Ez a jegy le van zárva, már nem lehet rá válaszolni."),
+ "nincs_jegy": tr("Ez a jegy már nem létezik."),
+ "nincs_ilyen_naplo": tr("A megadott naplóazonosító nem létezik."),
+ "kitiltva": tr("Ez a gép ki van tiltva a Visszajelzés használatából."),
}
def emberi(hiba):
if isinstance(hiba, ApiHiba):
- return HIBAUZENETEK.get(str(hiba), f"A szerver hibát jelzett ({hiba}).")
+ return HIBAUZENETEK.get(str(hiba), tr("A szerver hibát jelzett ({0}).", hiba))
return str(hiba)
diff --git a/raveos-center/raveos_center/karbantartas.py b/raveos-center/raveos_center/karbantartas.py
index 2f929c0..ebbea5d 100644
--- a/raveos-center/raveos_center/karbantartas.py
+++ b/raveos-center/raveos_center/karbantartas.py
@@ -4,6 +4,7 @@ from pathlib import Path
import shutil
import subprocess
+from raveos_center.forditas import tr
from raveos_center.muveletek import Lepes, root
CACHE = Path("/var/cache/pacman/pkg")
@@ -34,7 +35,7 @@ def _meret(bajt):
def cache_elonezet():
if not shutil.which("paccache"):
- return {"elerheto": False, "osszegzes": "A paccache nincs telepítve (pacman-contrib).", "elemek": []}
+ return {"elerheto": False, "osszegzes": tr("A paccache nincs telepítve (pacman-contrib)."), "elemek": []}
elemek = sorted(_paccache("-k2") | _paccache("-uk0"))
osszes = 0
for nev in elemek:
@@ -45,7 +46,7 @@ def cache_elonezet():
pass
return {
"elerheto": True,
- "osszegzes": f"{len(elemek)} csomagfájl, {_meret(osszes)}" if elemek else "Nincs törölhető csomagfájl.",
+ "osszegzes": tr("{0} csomagfájl, {1}", len(elemek), _meret(osszes)) if elemek else tr("Nincs törölhető csomagfájl."),
"elemek": elemek,
}
@@ -55,7 +56,7 @@ def arva_elonezet():
elemek = [s.strip() for s in kimenet.splitlines() if re.fullmatch(r"[a-z0-9@_+][a-z0-9@._+-]*", s.strip())]
return {
"elerheto": True,
- "osszegzes": f"{len(elemek)} árva csomag" if elemek else "Nincs árva csomag.",
+ "osszegzes": tr("{0} árva csomag", len(elemek)) if elemek else tr("Nincs árva csomag."),
"elemek": elemek,
}
@@ -64,7 +65,7 @@ def naplo_elonezet():
meret = re.search(r"take up ([0-9.]+)\s*([KMGT]?)", _ki(["journalctl", "--disk-usage"]))
return {
"elerheto": True,
- "osszegzes": f"Jelenleg {meret.group(1)} {meret.group(2)}B" if meret else "A napló mérete nem olvasható.",
+ "osszegzes": tr("Jelenleg {0} {1}B", meret.group(1), meret.group(2)) if meret else tr("A napló mérete nem olvasható."),
"elemek": [],
}
@@ -76,7 +77,7 @@ def _flatpak_nem_hasznalt(telepites):
def flatpak_elonezet():
if not shutil.which("flatpak"):
- return {"elerheto": False, "osszegzes": "A Flatpak nincs telepítve.", "elemek": [], "telepitesek": []}
+ return {"elerheto": False, "osszegzes": tr("A Flatpak nincs telepítve."), "elemek": [], "telepitesek": []}
telepitesek = []
elemek = []
for telepites in ("user", "system"):
@@ -86,7 +87,7 @@ def flatpak_elonezet():
elemek += [f"{telepites}: {e}" for e in lista]
return {
"elerheto": True,
- "osszegzes": f"{len(elemek)} nem használt runtime" if elemek else "Nincs nem használt runtime.",
+ "osszegzes": tr("{0} nem használt runtime", len(elemek)) if elemek else tr("Nincs nem használt runtime."),
"elemek": elemek,
"telepitesek": telepitesek,
}
@@ -98,13 +99,13 @@ def tukor_allapot():
szerverek = sum(1 for s in f if s.startswith("Server"))
except OSError:
szerverek = 0
- return {"elerheto": True, "osszegzes": f"{szerverek} aktív tükör", "elemek": []}
+ return {"elerheto": True, "osszegzes": tr("{0} aktív tükör", szerverek), "elemek": []}
def kulcs_allapot():
gpg = [str(p) for p in Path("/usr/share/pacman/keyrings").glob("*.gpg")]
kulcsok = sorted(set(_ki(["pacman", "-Qqo", *gpg]).split())) if gpg else []
- return {"elerheto": True, "osszegzes": ", ".join(kulcsok) or "Nincs kulcscsomag.", "elemek": []}
+ return {"elerheto": True, "osszegzes": ", ".join(kulcsok) or tr("Nincs kulcscsomag."), "elemek": []}
ELONEZETEK = {
@@ -119,23 +120,23 @@ ELONEZETEK = {
def lepesek(azon, adat, kivalasztott=None):
if azon == "cache":
- return [Lepes("Csomag cache ürítése", root("karbantartas", "cache"))]
+ return [Lepes(tr("Csomag cache ürítése"), root("karbantartas", "cache"))]
if azon == "arva":
csomagok = kivalasztott if kivalasztott is not None else adat["elemek"]
- return [Lepes("Árva csomagok eltávolítása", root("arva", *csomagok))] if csomagok else []
+ return [Lepes(tr("Árva csomagok eltávolítása"), root("arva", *csomagok))] if csomagok else []
if azon == "naplo":
- return [Lepes("Naplók takarítása", root("karbantartas", "naplo"))]
+ return [Lepes(tr("Naplók takarítása"), root("karbantartas", "naplo"))]
if azon == "tukrok":
- return [Lepes("Tükrök frissítése", root("karbantartas", "tukrok"))]
+ return [Lepes(tr("Tükrök frissítése"), root("karbantartas", "tukrok"))]
if azon == "kulcsok":
- return [Lepes("Kulcsok frissítése", root("karbantartas", "kulcsok"))]
+ return [Lepes(tr("Kulcsok frissítése"), root("karbantartas", "kulcsok"))]
if azon == "flatpak":
lista = []
if "user" in adat.get("telepitesek", []):
lista.append(
- Lepes("Flatpak (felhasználói)", ["flatpak", "uninstall", "--user", "--unused", "-y", "--noninteractive"], False)
+ Lepes(tr("Flatpak (felhasználói)"), ["flatpak", "uninstall", "--user", "--unused", "-y", "--noninteractive"], False)
)
if "system" in adat.get("telepitesek", []):
- lista.append(Lepes("Flatpak (rendszer)", root("karbantartas", "flatpak"), False))
+ lista.append(Lepes(tr("Flatpak (rendszer)"), root("karbantartas", "flatpak"), False))
return lista
return []
diff --git a/raveos-center/raveos_center/katalogus.py b/raveos-center/raveos_center/katalogus.py
index 118d948..e9d0e15 100644
--- a/raveos-center/raveos_center/katalogus.py
+++ b/raveos-center/raveos_center/katalogus.py
@@ -1,23 +1,23 @@
import json
-import locale
import os
import shlex
import subprocess
from pathlib import Path
+from raveos_center.forditas import NYELV, tr
from raveos_center.muveletek import Lepes, root
ADAT_HELYEK = [Path("/usr/lib/raveos-center/adat"), Path(__file__).resolve().parent.parent / "adat"]
KATEGORIAK = [
- ("all", "Mind"),
+ ("all", tr("Mind")),
("Games", "Gaming"),
- ("Media", "Média"),
+ ("Media", tr("Média")),
("Internet", "Internet"),
- ("Office", "Iroda"),
- ("Dev", "Fejlesztés"),
- ("System", "Rendszer"),
- ("Security", "Biztonság"),
+ ("Office", tr("Iroda")),
+ ("Dev", tr("Fejlesztés")),
+ ("System", tr("Rendszer")),
+ ("Security", tr("Biztonság")),
]
GAMING_ALAPOK = ["steam", "lutris", "heroic", "gamemode", "mangohud"]
@@ -29,17 +29,12 @@ def adat_mappa():
for hely in ADAT_HELYEK:
if (hely / "katalogus" / "app-list.json").is_file():
return hely
- raise RuntimeError("Nem található az alkalmazáskatalógus (app-list.json).")
-
-
-def nyelv():
- kod = (locale.getlocale()[0] or os.environ.get("LANG", "hu"))[:2]
- return kod if kod in ("hu", "en", "de") else "hu"
+ raise RuntimeError(tr("Nem található az alkalmazáskatalógus (app-list.json)."))
def loc(ertek):
if isinstance(ertek, dict):
- return ertek.get(nyelv()) or ertek.get("hu") or ertek.get("en") or next(iter(ertek.values()), "")
+ return next((ertek[k] for k in (NYELV, "en", "hu") if ertek.get(k)), None) or next(iter(ertek.values()), "")
return ertek or ""
@@ -117,7 +112,7 @@ def _konfig_lepesek(app):
kapcsolo = "-rf" if app.get("config_overwrite") else "-rn"
lepesek.append(
Lepes(
- f"Beállítások: {app['name']}",
+ tr("Beállítások: {0}", app['name']),
[
"bash",
"-c",
@@ -130,6 +125,10 @@ def _konfig_lepesek(app):
return lepesek
+def _cim(telepites, nev):
+ return tr("Telepítés: {0}", nev) if telepites else tr("Eltávolítás: {0}", nev)
+
+
def lepesek(app, telepites, opciok=None):
tipus = app["type"]
nev = app["name"]
@@ -146,42 +145,42 @@ def lepesek(app, telepites, opciok=None):
parancs = ["yay", "-S" if telepites else "-Rns", "--noconfirm", "--color", "never", "--sudo", "pkexec"]
if telepites:
parancs += ["--needed", "--answerclean", "None", "--answerdiff", "None", "--answeredit", "None"]
- lista.append(Lepes(f"{'Telepítés' if telepites else 'Eltávolítás'}: {nev}", parancs + pkgs))
+ lista.append(Lepes(_cim(telepites, nev), parancs + pkgs))
else:
lista.append(
- Lepes(f"{'Telepítés' if telepites else 'Eltávolítás'}: {nev}", root("telepit" if telepites else "eltavolit", *pkgs))
+ Lepes(_cim(telepites, nev), root("telepit" if telepites else "eltavolit", *pkgs))
)
if telepites:
for parancs in app.get("post_install", []):
reszek = shlex.split(parancs)
if reszek[:2] == ["systemctl", "enable"] and len(reszek) == 3:
- lista.append(Lepes(f"Szolgáltatás bekapcsolása: {reszek[2]}", root("szolgaltatas", reszek[2]), kotelezo=False))
+ lista.append(Lepes(tr("Szolgáltatás bekapcsolása: {0}", reszek[2]), root("szolgaltatas", reszek[2]), kotelezo=False))
else:
- lista.append(Lepes(f"Utólagos lépés: {nev}", reszek, kotelezo=False))
+ lista.append(Lepes(tr("Utólagos lépés: {0}", nev), reszek, kotelezo=False))
elif tipus == "flatpak-user":
fid = app.get("flatpak_id")
if not fid:
return []
if telepites:
lista.append(
- Lepes("Flathub tároló", ["flatpak", "remote-add", "--if-not-exists", "--user", "flathub", FLATHUB])
+ Lepes(tr("Flathub tároló"), ["flatpak", "remote-add", "--if-not-exists", "--user", "flathub", FLATHUB])
)
lista.append(
Lepes(
- f"Telepítés: {nev}",
+ tr("Telepítés: {0}", nev),
["flatpak", "install", "--user", "--noninteractive", "--or-update", "flathub", fid],
)
)
for parancs in app.get("post_install", []):
- lista.append(Lepes(f"Utólagos lépés: {nev}", shlex.split(parancs), kotelezo=False))
+ lista.append(Lepes(tr("Utólagos lépés: {0}", nev), shlex.split(parancs), kotelezo=False))
else:
- lista.append(Lepes(f"Eltávolítás: {nev}", ["flatpak", "uninstall", "--user", "-y", fid]))
+ lista.append(Lepes(tr("Eltávolítás: {0}", nev), ["flatpak", "uninstall", "--user", "-y", fid]))
elif tipus == "script":
szkript = app.get("script", "")
if not szkript:
return []
lista.append(
- Lepes(f"{'Telepítés' if telepites else 'Eltávolítás'}: {nev}", root("akcio", szkript, "install" if telepites else "remove"))
+ Lepes(_cim(telepites, nev), root("akcio", szkript, "install" if telepites else "remove"))
)
if telepites and tipus != "script":
lista += _konfig_lepesek(app)
diff --git a/raveos-center/raveos_center/mentesek.py b/raveos-center/raveos_center/mentesek.py
index 7afae01..95eacb9 100644
--- a/raveos-center/raveos_center/mentesek.py
+++ b/raveos-center/raveos_center/mentesek.py
@@ -6,6 +6,7 @@ import time
from pathlib import Path
from raveos_center import katalogus
+from raveos_center.forditas import tr
from raveos_center.muveletek import HELPER
JEGYZEK = "raveos-mentes.json"
@@ -37,14 +38,14 @@ class Megszakitva(Exception):
def _pkexec_hiba(kimenet):
if kimenet.returncode in (126, 127):
- raise Megszakitva("a hitelesítés elmaradt, a további rendszerelemek kimaradnak")
+ raise Megszakitva(tr("a hitelesítés elmaradt, a további rendszerelemek kimaradnak"))
def _root_tar(elem_id):
kimenet = subprocess.run(["pkexec", HELPER, "mentes-root", elem_id], capture_output=True, timeout=600)
_pkexec_hiba(kimenet)
if kimenet.returncode != 0:
- raise RuntimeError(kimenet.stderr.decode(errors="replace").strip()[:200] or "a rendszerelem mentése nem sikerült")
+ raise RuntimeError(kimenet.stderr.decode(errors="replace").strip()[:200] or tr("a rendszerelem mentése nem sikerült"))
return kimenet.stdout
@@ -58,7 +59,7 @@ def mentes(cel, kivalasztott, naplo, haladas):
try:
if elem.get("scope") == "system":
if megszakitva:
- naplo(" kihagyva, mert a hitelesítés elmaradt")
+ naplo(tr(" kihagyva, mert a hitelesítés elmaradt"))
continue
adat = _root_tar(elem["id"])
info = tarfile.TarInfo(f"rendszer/{elem['id']}.tar")
@@ -68,13 +69,13 @@ def mentes(cel, kivalasztott, naplo, haladas):
elif ut.exists():
tar.add(ut.resolve() if ut.is_symlink() else ut, arcname=f"home/{elem['path']}")
else:
- naplo(" nincs ilyen mappa ezen a gépen, kihagyva")
+ naplo(tr(" nincs ilyen mappa ezen a gépen, kihagyva"))
continue
jegyzek["elemek"].append(
{"id": elem["id"], "label": elem.get("label"), "scope": elem.get("scope", "home"), "path": elem["path"]}
)
except Megszakitva as e:
- naplo(f" MEGSZAKÍTVA: {e}")
+ naplo(tr(" MEGSZAKÍTVA: {0}", e))
megszakitva = True
except Exception as e:
naplo(f" HIBA, kihagyva: {e}")
@@ -132,23 +133,23 @@ def visszaallitas(forras, kivalasztott, naplo, haladas):
try:
if elem.get("scope") == "system":
if elem.get("regi"):
- raise RuntimeError("régi formátumú mentésből a rendszerelemek nem állíthatók vissza")
+ raise RuntimeError(tr("régi formátumú mentésből a rendszerelemek nem állíthatók vissza"))
adat = tar.extractfile(tar.getmember(f"rendszer/{elem['id']}.tar")).read()
if megszakitva:
- naplo(" kihagyva, mert a hitelesítés elmaradt")
+ naplo(tr(" kihagyva, mert a hitelesítés elmaradt"))
continue
kimenet = subprocess.run(
["pkexec", HELPER, "visszaallit-root", elem["id"]], input=adat, capture_output=True, timeout=600
)
_pkexec_hiba(kimenet)
if kimenet.returncode != 0:
- raise RuntimeError(kimenet.stderr.decode(errors="replace").strip()[:200] or "sikertelen")
+ raise RuntimeError(kimenet.stderr.decode(errors="replace").strip()[:200] or tr("sikertelen"))
else:
for tag, cel_szulo in _home_tagok(tar, elem):
tar.extract(tag, path=cel_szulo, filter="data")
kesz += 1
except Megszakitva as e:
- naplo(f" MEGSZAKÍTVA: {e}")
+ naplo(tr(" MEGSZAKÍTVA: {0}", e))
megszakitva = True
except Exception as e:
naplo(f" HIBA, kihagyva: {e}")
diff --git a/raveos-center/raveos_center/muveletek.py b/raveos-center/raveos_center/muveletek.py
index 3243814..6707101 100644
--- a/raveos-center/raveos_center/muveletek.py
+++ b/raveos-center/raveos_center/muveletek.py
@@ -3,6 +3,8 @@ import shutil
from PyQt6.QtCore import QObject, QProcess, QProcessEnvironment, pyqtSignal
+from raveos_center.forditas import tr
+
HELPER = os.environ.get("RAVEOS_CENTER_HELPER", "/usr/lib/raveos-center/raveos-center-helper")
@@ -77,7 +79,7 @@ class Futtato(QObject):
def _inditasi_hiba(self, hiba):
if hiba == QProcess.ProcessError.FailedToStart:
- self.sor.emit(f"[HIBA] nem indítható: {self.aktualis.parancs[0]}")
+ self.sor.emit(tr("[HIBA] nem indítható: {0}", self.aktualis.parancs[0]))
self._lezar(False)
def _vege(self, kod, allapot):
@@ -87,7 +89,7 @@ class Futtato(QObject):
self._maradek = b""
rendben = allapot == QProcess.ExitStatus.NormalExit and kod == 0
if not rendben and kod in (126, 127) and self.aktualis.parancs[0] == "pkexec":
- self.sor.emit("[MEGSZAKÍTVA] a hitelesítés elmaradt")
+ self.sor.emit(tr("[MEGSZAKÍTVA] a hitelesítés elmaradt"))
self._lezar(rendben, kod)
def _lezar(self, rendben, kod=None):
@@ -99,7 +101,7 @@ class Futtato(QObject):
if rendben:
self.sor.emit(f"[OK] {self.aktualis.cimke}")
else:
- self.sor.emit(f"[HIBA{f' {kod}' if kod is not None else ''}] {self.aktualis.cimke}")
+ self.sor.emit(f"[{tr('HIBA')}{f' {kod}' if kod is not None else ''}] {self.aktualis.cimke}")
self.hibasak.append(self.aktualis.cimke)
if self.aktualis.kotelezo:
self.lepesek = []
diff --git a/raveos-center/raveos_center/oldalak/alkalmazasok.py b/raveos-center/raveos_center/oldalak/alkalmazasok.py
index 4ab95e6..0251906 100644
--- a/raveos-center/raveos_center/oldalak/alkalmazasok.py
+++ b/raveos-center/raveos_center/oldalak/alkalmazasok.py
@@ -13,10 +13,11 @@ from PyQt6.QtWidgets import (
from raveos_center import katalogus
from raveos_center.elemek import Kartya, Oldal, cimke, frissit_stilus, gomb
from raveos_center.folyamat import FolyamatAblak
+from raveos_center.forditas import tr
from raveos_center.hatter import gyorsitott
AZON = "alkalmazasok"
-MENU = "Alkalmazások"
+MENU = tr("Alkalmazások")
IKON = "alkalmazasok"
CSAK_TELEPITETT = "telepitett"
@@ -64,7 +65,7 @@ class AppSor(QWidget):
nev.setStyleSheet("font-size: 14px; font-weight: 600;")
nevsor.addWidget(nev)
nevsor.addWidget(cimke(katalogus.forras(app), "monohalvany"))
- self.allapot = cimke("TELEPÍTVE", "allapotcimke")
+ self.allapot = cimke(tr("TELEPÍTVE"), "allapotcimke")
self.allapot.setProperty("szin", "zold")
self.allapot.hide()
nevsor.addWidget(self.allapot)
@@ -79,7 +80,7 @@ class AppSor(QWidget):
self.eltavolit_gomb = None
if app["type"] == "choice":
- self.eltavolit_gomb = gomb("Eltávolítás", kicsi=True)
+ self.eltavolit_gomb = gomb(tr("Eltávolítás"), kicsi=True)
self.eltavolit_gomb.clicked.connect(lambda: self._opcio_muvelet(False))
felso.addWidget(self.eltavolit_gomb)
self.gomb = gomb("", kicsi=True)
@@ -116,9 +117,9 @@ class AppSor(QWidget):
lista.setContentsMargins(82, 4, 0, 0)
lista.setSpacing(6)
fej = QHBoxLayout()
- fej.addWidget(cimke("VÁLASSZ, AKÁR TÖBBET IS", "monohalvany"))
+ fej.addWidget(cimke(tr("VÁLASSZ, AKÁR TÖBBET IS"), "monohalvany"))
fej.addStretch(1)
- mind = gomb("Mind kijelölése", kicsi=True)
+ mind = gomb(tr("Mind kijelölése"), kicsi=True)
mind.clicked.connect(self._mind)
fej.addWidget(mind)
lista.addLayout(fej)
@@ -133,7 +134,7 @@ class AppSor(QWidget):
sor.addWidget(jelolo)
leiras = cimke(katalogus.loc(o.get("desc")), "halvany")
sor.addWidget(leiras, 1)
- allapot = cimke("TELEPÍTVE", "allapotcimke")
+ allapot = cimke(tr("TELEPÍTVE"), "allapotcimke")
allapot.setProperty("szin", "zold")
sor.addWidget(allapot)
lista.addWidget(kontener)
@@ -187,11 +188,11 @@ class AppSor(QWidget):
self.jelolo.setChecked(any(j.isChecked() for j, _, _ in self.opciok))
self.jelolo.blockSignals(False)
self.oldal.kijeles_valtozott()
- self.gomb.setText(f"Telepítés ({len(uj)})" if uj else "Telepítés")
+ self.gomb.setText(tr("Telepítés ({0})", len(uj)) if uj else tr("Telepítés"))
self.gomb.setEnabled(bool(uj))
self.gomb.setProperty("fo", True)
frissit_stilus(self.gomb)
- self.eltavolit_gomb.setText(f"Eltávolítás ({len(regi)})" if regi else "Eltávolítás")
+ self.eltavolit_gomb.setText(tr("Eltávolítás ({0})", len(regi)) if regi else tr("Eltávolítás"))
self.eltavolit_gomb.setEnabled(bool(regi))
def _opcio_muvelet(self, telepites):
@@ -207,22 +208,22 @@ class AppSor(QWidget):
allapot.setVisible(fent)
db += fent
self.telepitve = db > 0
- self.allapot.setText(f"{db} / {len(self.opciok)} TELEPÍTVE")
+ self.allapot.setText(tr("{0} / {1} TELEPÍTVE", db, len(self.opciok)))
self.allapot.setVisible(db > 0)
self._gombok_opcio()
return
if self.app["type"] == "message":
- self.gomb.setText("Tudnivalók")
+ self.gomb.setText(tr("Tudnivalók"))
self.gomb.setProperty("fo", False)
else:
self.telepitve = katalogus.telepitve(self.app, index)
self.allapot.setVisible(self.telepitve)
if self.telepitve:
- self.gomb.setText("Eltávolítás")
+ self.gomb.setText(tr("Eltávolítás"))
self.gomb.setEnabled(katalogus.eltavolithato(self.app))
self.gomb.setProperty("fo", False)
else:
- self.gomb.setText("Telepítés")
+ self.gomb.setText(tr("Telepítés"))
self.gomb.setEnabled(True)
self.gomb.setProperty("fo", True)
frissit_stilus(self.gomb)
@@ -275,7 +276,7 @@ class Csoport(QWidget):
class Alkalmazasok(Oldal):
def __init__(self, kozpont):
- super().__init__(kozpont, "PACMAN · AUR · FLATPAK", "Alkalmazások")
+ super().__init__(kozpont, "PACMAN · AUR · FLATPAK", tr("Alkalmazások"))
self.katalogus = []
self.index = {"pacman": set(), "flatpak": set()}
self.sorok = []
@@ -283,7 +284,7 @@ class Alkalmazasok(Oldal):
self.kategoria = "all"
self.kereso = QLineEdit()
- self.kereso.setPlaceholderText("Keresés, pl. Steam, OBS, Discord")
+ self.kereso.setPlaceholderText(tr("Keresés, pl. Steam, OBS, Discord"))
self.kereso.setClearButtonEnabled(True)
self.kereso.setMinimumWidth(220)
self.kereso.setMaximumWidth(340)
@@ -293,7 +294,7 @@ class Alkalmazasok(Oldal):
pillek = QHBoxLayout()
pillek.setSpacing(8)
self.pillek = {}
- for azon, nev in katalogus.KATEGORIAK + [(CSAK_TELEPITETT, "Csak telepítettek")]:
+ for azon, nev in katalogus.KATEGORIAK + [(CSAK_TELEPITETT, tr("Csak telepítettek"))]:
p = QPushButton(nev)
p.setObjectName("pill")
p.setCursor(Qt.CursorShape.PointingHandCursor)
@@ -310,13 +311,13 @@ class Alkalmazasok(Oldal):
ks.setSpacing(24)
kszoveg = QVBoxLayout()
kszoveg.setSpacing(6)
- kszoveg.addWidget(cimke("CSOMAG · GAMING ALAPOK", "eyebrow"))
- kszoveg.addWidget(cimke("EGY KATTINTÁS, MINDEN AMI JÁTÉKHOZ KELL", "h2", True))
+ kszoveg.addWidget(cimke(tr("CSOMAG · GAMING ALAPOK"), "eyebrow"))
+ kszoveg.addWidget(cimke(tr("EGY KATTINTÁS, MINDEN AMI JÁTÉKHOZ KELL"), "h2", True))
kszoveg.addWidget(
- cimke("Steam (Proton-GE-vel), Lutris, Heroic, GameMode és MangoHud egyben, előre beállítva.", "masodlagos", True)
+ cimke(tr("Steam (Proton-GE-vel), Lutris, Heroic, GameMode és MangoHud egyben, előre beállítva."), "masodlagos", True)
)
ks.addLayout(kszoveg, 1)
- self.kiemelt_gomb = gomb("Csomag telepítése", fo=True)
+ self.kiemelt_gomb = gomb(tr("Csomag telepítése"), fo=True)
self.kiemelt_gomb.clicked.connect(self._gaming_alapok)
ks.addWidget(self.kiemelt_gomb, 0, Qt.AlignmentFlag.AlignVCenter)
self.kiemelt.elrendezes.addLayout(ks)
@@ -329,7 +330,7 @@ class Alkalmazasok(Oldal):
self.lista = QVBoxLayout()
self.lista.setSpacing(28)
self.torzs.addLayout(self.lista)
- self.ures = cimke("Nincs találat.", "halvany")
+ self.ures = cimke(tr("Nincs találat."), "halvany")
self.ures.hide()
self.torzs.addWidget(self.ures)
self.torzs.addStretch(1)
@@ -345,13 +346,13 @@ class Alkalmazasok(Oldal):
self.sav_szoveg = cimke("", "mono")
s.addWidget(self.sav_szoveg)
s.addStretch(1)
- torles = gomb("Kijelölés törlése", kicsi=True)
+ torles = gomb(tr("Kijelölés törlése"), kicsi=True)
torles.clicked.connect(self._kijeles_torles)
s.addWidget(torles)
- self.sav_eltavolit = gomb("Kijelöltek eltávolítása")
+ self.sav_eltavolit = gomb(tr("Kijelöltek eltávolítása"))
self.sav_eltavolit.clicked.connect(lambda: self._tomeges(False))
s.addWidget(self.sav_eltavolit)
- self.sav_telepit = gomb("Kijelöltek telepítése", fo=True)
+ self.sav_telepit = gomb(tr("Kijelöltek telepítése"), fo=True)
self.sav_telepit.clicked.connect(lambda: self._tomeges(True))
s.addWidget(self.sav_telepit)
self.sav.hide()
@@ -370,10 +371,10 @@ class Alkalmazasok(Oldal):
latszik = kijelolt > 0
self.sav.setVisible(latszik)
self.setViewportMargins(0, 0, 0, self.sav.sizeHint().height() if latszik else 0)
- self.sav_szoveg.setText(f"{kijelolt} KIJELÖLVE")
- self.sav_telepit.setText(f"Kijelöltek telepítése ({len(uj)})")
+ self.sav_szoveg.setText(tr("{0} KIJELÖLVE", kijelolt))
+ self.sav_telepit.setText(tr("Kijelöltek telepítése ({0})", len(uj)))
self.sav_telepit.setEnabled(bool(uj))
- self.sav_eltavolit.setText(f"Kijelöltek eltávolítása ({len(regi)})")
+ self.sav_eltavolit.setText(tr("Kijelöltek eltávolítása ({0})", len(regi)))
self.sav_eltavolit.setEnabled(bool(regi))
if latszik:
self.sav.raise_()
@@ -397,8 +398,8 @@ class Alkalmazasok(Oldal):
if not telepites:
valasz = QMessageBox.question(
self,
- "Eltávolítás",
- "Biztosan eltávolítod ezeket?\n\n" + "\n".join(nevek),
+ tr("Eltávolítás"),
+ tr("Biztosan eltávolítod ezeket?\n\n") + "\n".join(nevek),
QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No,
QMessageBox.StandardButton.No,
)
@@ -411,8 +412,12 @@ class Alkalmazasok(Oldal):
lepesek.append(lepes)
if not lepesek:
return
- cim = f"{'Telepítés' if telepites else 'Eltávolítás'}: {len(tetelek)} alkalmazás"
- FolyamatAblak(self, cim, lepesek, "Minden lépés sikeresen lefutott.", "Nem minden lépés sikerült.").exec()
+ cim = (
+ tr("Telepítés: {0} alkalmazás", len(tetelek))
+ if telepites
+ else tr("Eltávolítás: {0} alkalmazás", len(tetelek))
+ )
+ FolyamatAblak(self, cim, lepesek, tr("Minden lépés sikeresen lefutott."), tr("Nem minden lépés sikerült.")).exec()
self._kijeles_torles()
self.megjelenik()
@@ -420,7 +425,7 @@ class Alkalmazasok(Oldal):
try:
self.katalogus = katalogus.betolt()
except (OSError, ValueError, RuntimeError) as e:
- self.hiba.setText(f"Az alkalmazáskatalógus nem tölthető be: {e}")
+ self.hiba.setText(tr("Az alkalmazáskatalógus nem tölthető be: {0}", e))
self.hiba.show()
return
for azon, nev in katalogus.KATEGORIAK[1:]:
@@ -445,7 +450,7 @@ class Alkalmazasok(Oldal):
alap = [a for a in self.katalogus if a["id"] in katalogus.GAMING_ALAPOK]
hianyzik = [a for a in alap if not katalogus.telepitve(a, index)]
self.kiemelt_gomb.setEnabled(bool(hianyzik))
- self.kiemelt_gomb.setText("Csomag telepítése" if hianyzik else "Minden telepítve")
+ self.kiemelt_gomb.setText(tr("Csomag telepítése") if hianyzik else tr("Minden telepítve"))
self._szur()
def _kategoria(self, azon):
@@ -468,9 +473,9 @@ class Alkalmazasok(Oldal):
lathatok.add(s)
osszes = sum(c.szur(lathatok) for c in self.csoportok.values())
self.ures.setText(
- "Még nincs telepítve egyetlen alkalmazás sem a listából."
+ tr("Még nincs telepítve egyetlen alkalmazás sem a listából.")
if self.kategoria == CSAK_TELEPITETT and not szoveg
- else "Nincs találat."
+ else tr("Nincs találat.")
)
self.ures.setVisible(osszes == 0)
self.kiemelt.setVisible(self.kategoria in ("all", "Games") and not szoveg)
@@ -480,8 +485,8 @@ class Alkalmazasok(Oldal):
nevek = ", ".join(o["name"] for o in app.get("options", []) if o["id"] in (opciok or [])) or app["name"]
valasz = QMessageBox.question(
self,
- "Eltávolítás",
- f"Biztosan eltávolítod: {nevek}?",
+ tr("Eltávolítás"),
+ tr("Biztosan eltávolítod: {0}?", nevek),
QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No,
QMessageBox.StandardButton.No,
)
@@ -490,8 +495,9 @@ class Alkalmazasok(Oldal):
lepesek = katalogus.lepesek(app, telepites, opciok)
if not lepesek:
return
- cim = f"{'Telepítés' if telepites else 'Eltávolítás'}: {app['name']}"
- FolyamatAblak(self, cim, lepesek, f"{app['name']} {'telepítve' if telepites else 'eltávolítva'}.").exec()
+ cim = tr("Telepítés: {0}", app["name"]) if telepites else tr("Eltávolítás: {0}", app["name"])
+ kesz = tr("{0} telepítve.", app["name"]) if telepites else tr("{0} eltávolítva.", app["name"])
+ FolyamatAblak(self, cim, lepesek, kesz).exec()
self.megjelenik()
def _gaming_alapok(self):
@@ -501,7 +507,7 @@ class Alkalmazasok(Oldal):
lepesek += katalogus.lepesek(app, True)
if not lepesek:
return
- FolyamatAblak(self, "Gaming alapok telepítése", lepesek, "A Gaming alapok telepítve.").exec()
+ FolyamatAblak(self, tr("Gaming alapok telepítése"), lepesek, tr("A Gaming alapok telepítve.")).exec()
self.megjelenik()
diff --git a/raveos-center/raveos_center/oldalak/attekintes.py b/raveos-center/raveos_center/oldalak/attekintes.py
index 9ebc848..7485e35 100644
--- a/raveos-center/raveos_center/oldalak/attekintes.py
+++ b/raveos-center/raveos_center/oldalak/attekintes.py
@@ -6,19 +6,20 @@ from PyQt6.QtWidgets import QHBoxLayout, QMessageBox, QProgressBar, QPushButton,
from raveos_center import gaming, muveletek, rendszerinfo
from raveos_center.elemek import Kartya, Oldal, Racs, cimke, frissit_stilus, gomb
+from raveos_center.forditas import tr
from raveos_center.hatter import ervenytelenit, gyorsitott, tarolt
AZON = "attekintes"
-MENU = "Áttekintés"
+MENU = tr("Áttekintés")
IKON = "attekintes"
GYORS = [
- ("01", "Alkalmazás telepítése", "Böngészés kategóriák szerint", "alkalmazasok", ()),
- ("02", "Rendszerfrissítés", "pacman + AUR + Flatpak", "frissitesek", ()),
- ("03", "Driverek", "GPU, Wi-Fi, kontrollerek", "rendszer", ("driverek",)),
- ("04", "Takarítás", "Cache, árva csomagok", "rendszer", ("karbantartas",)),
- ("05", "Gaming tweakek", "GameMode, Proton, MangoHud", "rendszer", ("gaming",)),
- ("06", "Visszaállítás", "Snapshot betöltése", "rendszer", ("snapshotok",)),
+ ("01", tr("Alkalmazás telepítése"), tr("Böngészés kategóriák szerint"), "alkalmazasok", ()),
+ ("02", tr("Rendszerfrissítés"), "pacman + AUR + Flatpak", "frissitesek", ()),
+ ("03", tr("Driverek"), tr("GPU, Wi-Fi, kontrollerek"), "rendszer", ("driverek",)),
+ ("04", tr("Takarítás"), tr("Cache, árva csomagok"), "rendszer", ("karbantartas",)),
+ ("05", tr("Gaming tweakek"), "GameMode, Proton, MangoHud", "rendszer", ("gaming",)),
+ ("06", tr("Visszaállítás"), tr("Snapshot betöltése"), "rendszer", ("snapshotok",)),
]
KOZOSSEG = [
@@ -57,25 +58,25 @@ def allapotkartya(cim):
class Attekintes(Oldal):
def __init__(self, kozpont):
- super().__init__(kozpont, "ÜDV ÚJRA", "Áttekintés")
- self.frissites_gomb = self.fejlec_gomb(gomb("Frissítés most", fo=True))
+ super().__init__(kozpont, tr("ÜDV ÚJRA"), tr("Áttekintés"))
+ self.frissites_gomb = self.fejlec_gomb(gomb(tr("Frissítés most"), fo=True))
self.frissites_gomb.clicked.connect(lambda: self.kozpont.mutat("frissitesek"))
- self.snapshot_gomb = self.fejlec_gomb(gomb("Snapshot készítése"))
+ self.snapshot_gomb = self.fejlec_gomb(gomb(tr("Snapshot készítése")))
self.snapshot_gomb.clicked.connect(lambda: self.kozpont.mutat("rendszer", "snapshotok", "uj"))
allapot = Racs(220)
- k, self.frissites_szam = allapotkartya("Frissítések")
+ k, self.frissites_szam = allapotkartya(tr("Frissítések"))
self.frissites_szam.setProperty("zold", True)
- self.frissites_reszlet = cimke("ellenőrzés...", "masodlagos")
+ self.frissites_reszlet = cimke(tr("ellenőrzés..."), "masodlagos")
k.elrendezes.addWidget(self.frissites_reszlet)
allapot.hozzaad(k)
- k, self.snapshot_ertek = allapotkartya("Utolsó snapshot")
+ k, self.snapshot_ertek = allapotkartya(tr("Utolsó snapshot"))
self.snapshot_reszlet = cimke("", "masodlagos")
k.elrendezes.addWidget(self.snapshot_reszlet)
allapot.hozzaad(k)
- k, self.lemez_ertek = allapotkartya("Lemez")
+ k, self.lemez_ertek = allapotkartya(tr("Lemez"))
self.lemez_sav = QProgressBar()
self.lemez_sav.setObjectName("sav")
self.lemez_sav.setTextVisible(False)
@@ -83,7 +84,7 @@ class Attekintes(Oldal):
k.elrendezes.addWidget(self.lemez_sav)
allapot.hozzaad(k)
- k, self.gaming_ertek = allapotkartya("Gaming mód")
+ k, self.gaming_ertek = allapotkartya(tr("Gaming mód"))
self.gaming_adat = None
self.gaming_gomb = gomb("...", kicsi=True)
self.gaming_gomb.clicked.connect(self._gaming_valt)
@@ -95,7 +96,7 @@ class Attekintes(Oldal):
also.setSpacing(24)
bal = QVBoxLayout()
bal.setSpacing(16)
- bal.addWidget(cimke("GYORS MŰVELETEK", "h2"))
+ bal.addWidget(cimke(tr("GYORS MŰVELETEK"), "h2"))
self.gyors = Racs(180, 12)
self.csempek = []
for kod, cim, alcim, cel, al in GYORS:
@@ -109,7 +110,7 @@ class Attekintes(Oldal):
jobb = QVBoxLayout()
jobb.setSpacing(16)
- jobb.addWidget(cimke("RENDSZER", "h2"))
+ jobb.addWidget(cimke(tr("RENDSZER"), "h2"))
self.info = Kartya(terkoz=0, margo=20)
self.info.elrendezes.setContentsMargins(20, 8, 20, 8)
self.info_sorok = {}
@@ -117,7 +118,7 @@ class Attekintes(Oldal):
sor = QWidget()
sl = QHBoxLayout(sor)
sl.setContentsMargins(0, 12, 0, 12)
- sl.addWidget(cimke(kulcs, "monohalvany"))
+ sl.addWidget(cimke(tr(kulcs), "monohalvany"))
sl.addStretch(1)
ertek = cimke("...", "mono")
ertek.setAlignment(Qt.AlignmentFlag.AlignRight)
@@ -127,12 +128,12 @@ class Attekintes(Oldal):
self.info.elrendezes.addWidget(sor)
jobb.addWidget(self.info)
- kozosseg = Kartya("Közösség", terkoz=12)
+ kozosseg = Kartya(tr("Közösség"), terkoz=12)
nev = cimke("RaveCore")
nev.setStyleSheet("font-size: 15px; font-weight: 600;")
kozosseg.elrendezes.addWidget(nev)
kozosseg.elrendezes.addWidget(
- cimke("Kérdésed van, vagy hibát találtál? Gyere a közösségbe, vagy írj nekünk hibajegyet.", "masodlagos", True)
+ cimke(tr("Kérdésed van, vagy hibát találtál? Gyere a közösségbe, vagy írj nekünk hibajegyet."), "masodlagos", True)
)
linkek = QHBoxLayout()
linkek.setSpacing(16)
@@ -140,7 +141,9 @@ class Attekintes(Oldal):
link = cimke(f'<a href="{cim}" style="color:#62a052; text-decoration:none">{szoveg}</a>', "link")
link.setOpenExternalLinks(True)
linkek.addWidget(link)
- self.hibajegy_link = cimke('<a href="#" style="color:#62a052; text-decoration:none">Hibajegy</a>', "link")
+ self.hibajegy_link = cimke(
+ f'<a href="#" style="color:#62a052; text-decoration:none">{tr("Hibajegy")}</a>', "link"
+ )
self.hibajegy_link.linkActivated.connect(lambda _: self.kozpont.mutat("visszajelzes"))
linkek.addWidget(self.hibajegy_link)
linkek.addStretch(1)
@@ -160,7 +163,7 @@ class Attekintes(Oldal):
for csempe, cel, al in self.csempek:
elerheto = self.kozpont.van(cel, *al)
csempe.setEnabled(elerheto)
- csempe.setToolTip("" if elerheto else "Hamarosan")
+ csempe.setToolTip("" if elerheto else tr("Hamarosan"))
self._lemez()
gyorsitott("info", self._info_gyujt, kesz=self._info_kesz, kor=300)
gyorsitott("frissitesek", rendszerinfo.frissitesek, kesz=self._frissites_kesz, hiba=self._frissites_hiba, kor=60)
@@ -169,16 +172,16 @@ class Attekintes(Oldal):
def _gaming_kesz(self, adat):
self.gaming_adat = adat
aktiv = gaming.gaming_mod_aktiv(adat)
- self.gaming_ertek.setText("BEKAPCSOLVA" if aktiv else "KIKAPCSOLVA")
+ self.gaming_ertek.setText(tr("BEKAPCSOLVA") if aktiv else tr("KIKAPCSOLVA"))
self.gaming_ertek.setProperty("zold", aktiv)
frissit_stilus(self.gaming_ertek)
- self.gaming_gomb.setText("Kikapcsolás" if aktiv else "Bekapcsolás")
+ self.gaming_gomb.setText(tr("Kikapcsolás") if aktiv else tr("Bekapcsolás"))
self.gaming_gomb.setProperty("fo", not aktiv)
frissit_stilus(self.gaming_gomb)
valtozas = gaming.gaming_mod_valtozasok(adat, not aktiv)
self.gaming_gomb.setEnabled(bool(valtozas) and muveletek.helper_elerheto())
self.gaming_gomb.setToolTip(
- "" if valtozas else "Ezen a gépen a Gaming mód elemei nem kapcsolhatók ki, a GameMode a Rendszer > Gaming fülön távolítható el."
+ "" if valtozas else tr("Ezen a gépen a Gaming mód elemei nem kapcsolhatók ki, a GameMode a Rendszer > Gaming fülön távolítható el.")
)
def _gaming_valt(self):
@@ -190,7 +193,7 @@ class Attekintes(Oldal):
aktiv = gaming.gaming_mod_aktiv(self.gaming_adat)
hiba = alkalmaz(self, gaming.gaming_mod_valtozasok(self.gaming_adat, not aktiv))
if hiba:
- QMessageBox.warning(self, "Gaming mód", hiba)
+ QMessageBox.warning(self, tr("Gaming mód"), hiba)
ervenytelenit("gaming")
gyorsitott("gaming", gaming.allapot, kesz=self._gaming_kesz)
@@ -201,7 +204,7 @@ class Attekintes(Oldal):
@staticmethod
def _info_gyujt():
- gpu = ", ".join(rendszerinfo.gpuk()) or "ismeretlen"
+ gpu = ", ".join(rendszerinfo.gpuk()) or tr("ismeretlen")
driver = ", ".join(rendszerinfo.gpu_driverek())
return {
"Kernel": rendszerinfo.kernel(),
@@ -221,39 +224,39 @@ class Attekintes(Oldal):
szam = len(csomagok)
self.kozpont.jelveny("frissitesek", szam)
if not szam:
- self.frissites_szam.setText("NAPRAKÉSZ")
- self.frissites_reszlet.setText("nincs elérhető frissítés")
+ self.frissites_szam.setText(tr("NAPRAKÉSZ"))
+ self.frissites_reszlet.setText(tr("nincs elérhető frissítés"))
return
- self.frissites_szam.setText(f"{szam} ELÉRHETŐ")
+ self.frissites_szam.setText(tr("{0} ELÉRHETŐ", szam))
reszek = []
ujrainditos = sum(1 for c in csomagok if c["ujrainditas"])
aur = sum(1 for c in csomagok if c["forras"] == "aur")
flatpak = sum(1 for c in csomagok if c["forras"] == "flatpak")
if ujrainditos:
- reszek.append(f"{ujrainditos} újraindítást igényel")
+ reszek.append(tr("{0} újraindítást igényel", ujrainditos))
if aur:
reszek.append(f"{aur} AUR")
if flatpak:
reszek.append(f"{flatpak} Flatpak")
- self.frissites_reszlet.setText(" · ".join(reszek) or "csak hivatalos csomagok")
+ self.frissites_reszlet.setText(" · ".join(reszek) or tr("csak hivatalos csomagok"))
def _frissites_hiba(self, _):
self.frissites_szam.setText("-")
- self.frissites_reszlet.setText("az ellenőrzés nem sikerült")
+ self.frissites_reszlet.setText(tr("az ellenőrzés nem sikerült"))
def _snapshot_kesz(self, snapshot):
if snapshot is None:
self.snapshot_ertek.setText("-")
- self.snapshot_reszlet.setText("a snapper nem érhető el")
+ self.snapshot_reszlet.setText(tr("a snapper nem érhető el"))
return
if not snapshot:
- self.snapshot_ertek.setText("NINCS")
- self.snapshot_reszlet.setText("még nem készült snapshot")
+ self.snapshot_ertek.setText(tr("NINCS"))
+ self.snapshot_reszlet.setText(tr("még nem készült snapshot"))
return
try:
ido = datetime.fromisoformat(snapshot.get("date", ""))
nap = (datetime.now() - ido).days
- self.snapshot_ertek.setText("MA" if nap == 0 else f"{nap} NAPJA")
+ self.snapshot_ertek.setText(tr("MA") if nap == 0 else tr("{0} NAPJA", nap))
except (TypeError, ValueError):
self.snapshot_ertek.setText("?")
self.snapshot_reszlet.setText(f"btrfs · {snapshot.get('description') or snapshot.get('type', '')}")
diff --git a/raveos-center/raveos_center/oldalak/frissitesek.py b/raveos-center/raveos_center/oldalak/frissitesek.py
index baa1ccc..f1ffad2 100644
--- a/raveos-center/raveos_center/oldalak/frissitesek.py
+++ b/raveos-center/raveos_center/oldalak/frissitesek.py
@@ -15,10 +15,11 @@ from PyQt6.QtWidgets import (
from raveos_center import muveletek, rendszerinfo, snapshotok
from raveos_center.elemek import Kartya, Oldal, Racs, cimke, gomb
+from raveos_center.forditas import tr
from raveos_center.hatter import ervenytelenit, hatterben
AZON = "frissitesek"
-MENU = "Frissítések"
+MENU = tr("Frissítések")
IKON = "frissitesek"
FORRAS = {"pacman": "pacman", "aur": "AUR", "flatpak": "Flatpak"}
@@ -32,7 +33,7 @@ def mb(meret):
class Frissitesek(Oldal):
def __init__(self, kozpont):
- super().__init__(kozpont, "UTOLSÓ ELLENŐRZÉS: -", "Frissítések", kitolt=True)
+ super().__init__(kozpont, tr("UTOLSÓ ELLENŐRZÉS: -"), tr("Frissítések"), kitolt=True)
self.csomagok = []
self.ujrainditas_kell = False
self.futtato = muveletek.Futtato(self)
@@ -40,22 +41,22 @@ class Frissitesek(Oldal):
self.futtato.kesz.connect(self._futas_kesz)
self.torzs.setSpacing(20)
- self.ellenorzes = self.fejlec_gomb(gomb("Ellenőrzés"))
+ self.ellenorzes = self.fejlec_gomb(gomb(tr("Ellenőrzés")))
self.ellenorzes.clicked.connect(lambda: self._ellenoriz(True))
- self.inditas = self.fejlec_gomb(gomb("Nincs kijelölve", fo=True))
+ self.inditas = self.fejlec_gomb(gomb(tr("Nincs kijelölve"), fo=True))
self.inditas.clicked.connect(self._indit)
osszegzes = Racs(220)
- k = Kartya("Kijelölve")
- self.kijelolt = cimke("0 / 0 CSOMAG", "nagyszam")
+ k = Kartya(tr("Kijelölve"))
+ self.kijelolt = cimke(tr("0 / 0 CSOMAG"), "nagyszam")
k.elrendezes.addWidget(self.kijelolt)
osszegzes.hozzaad(k)
- k = Kartya("Letöltés")
+ k = Kartya(tr("Letöltés"))
self.letoltes = cimke("0 MB", "nagyszam")
k.elrendezes.addWidget(self.letoltes)
osszegzes.hozzaad(k)
- k = Kartya("Biztonság")
- self.snapshot = QCheckBox("Snapshot készítése frissítés előtt")
+ k = Kartya(tr("Biztonság"))
+ self.snapshot = QCheckBox(tr("Snapshot készítése frissítés előtt"))
self.snapshot.setChecked(True)
k.elrendezes.addWidget(self.snapshot)
self.snapshot_megj = cimke("", "halvany", True)
@@ -71,10 +72,10 @@ class Frissitesek(Oldal):
us.setContentsMargins(0, 0, 0, 0)
us.setSpacing(12)
us.addWidget(
- cimke("A frissítés után újraindítás szükséges, hogy az új kernel vagy driver betöltődjön.", "figyelem", True),
+ cimke(tr("A frissítés után újraindítás szükséges, hogy az új kernel vagy driver betöltődjön."), "figyelem", True),
1,
)
- ujraindit = gomb("Újraindítás most", fo=True)
+ ujraindit = gomb(tr("Újraindítás most"), fo=True)
ujraindit.clicked.connect(self._ujraindit)
us.addWidget(ujraindit)
self.ujraindito_sav.hide()
@@ -83,22 +84,22 @@ class Frissitesek(Oldal):
csomag_resz = QVBoxLayout()
csomag_resz.setSpacing(12)
fej = QHBoxLayout()
- fej.addWidget(cimke("CSOMAGOK", "h2"))
+ fej.addWidget(cimke(tr("CSOMAGOK"), "h2"))
fej.addStretch(1)
- self.mind = gomb("Mind kijelölése", kicsi=True)
+ self.mind = gomb(tr("Mind kijelölése"), kicsi=True)
self.mind.clicked.connect(self._mind)
fej.addWidget(self.mind)
csomag_resz.addLayout(fej)
csomag_resz.addWidget(
cimke(
- "A hivatalos csomagok (pacman) csak együtt frissíthetők: Arch-alapú rendszeren a részleges frissítés "
- "elronthatja a rendszert. Az AUR és a Flatpak csomagok egyenként is kijelölhetők.",
+ tr("A hivatalos csomagok (pacman) csak együtt frissíthetők: Arch-alapú rendszeren a részleges frissítés "
+ "elronthatja a rendszert. Az AUR és a Flatpak csomagok egyenként is kijelölhetők."),
"halvany",
True,
)
)
self.tabla = QTableWidget(0, 6)
- self.tabla.setHorizontalHeaderLabels(["", "Csomag", "Forrás", "Jelenlegi", "Új", "Méret"])
+ self.tabla.setHorizontalHeaderLabels(["", tr("Csomag"), tr("Forrás"), tr("Jelenlegi"), tr("Új"), tr("Méret")])
self.tabla.verticalHeader().hide()
self.tabla.setShowGrid(False)
self.tabla.setSelectionMode(QAbstractItemView.SelectionMode.NoSelection)
@@ -118,7 +119,7 @@ class Frissitesek(Oldal):
naplo_resz = QVBoxLayout()
naplo_resz.setSpacing(12)
- naplo_resz.addWidget(cimke("NAPLÓ", "h2"))
+ naplo_resz.addWidget(cimke(tr("NAPLÓ"), "h2"))
self.naplo = QPlainTextEdit()
self.naplo.setObjectName("naplo")
self.naplo.setReadOnly(True)
@@ -138,17 +139,17 @@ class Frissitesek(Oldal):
if automatikus:
self.snapshot.setChecked(False)
self.snapshot_megj.setText(
- "Minden csomagművelet előtt automatikusan snapshot készül, ha gond van, a Rendszer > Snapshotok "
- "fülön vissza tudsz állni."
+ tr("Minden csomagművelet előtt automatikusan snapshot készül, ha gond van, a Rendszer > Snapshotok "
+ "fülön vissza tudsz állni.")
)
elif not snapper:
self.snapshot.setChecked(False)
- self.snapshot_megj.setText("Snapshot csak btrfs fájlrendszeren, beállított snapperrel készíthető.")
+ self.snapshot_megj.setText(tr("Snapshot csak btrfs fájlrendszeren, beállított snapperrel készíthető."))
else:
- self.snapshot_megj.setText("Ha a frissítés után gond van, erre vissza tudsz állni.")
+ self.snapshot_megj.setText(tr("Ha a frissítés után gond van, erre vissza tudsz állni."))
if not muveletek.helper_elerheto():
self.figyelem.setText(
- "A RaveOS Center rendszerhelpere nincs telepítve, ezért a rendszercsomagok frissítése nem indítható."
+ tr("A RaveOS Center rendszerhelpere nincs telepítve, ezért a rendszercsomagok frissítése nem indítható.")
)
self.figyelem.show()
if not self.futtato.fut() and not self.csomagok:
@@ -161,16 +162,16 @@ class Frissitesek(Oldal):
if self.futtato.fut():
return
self.ellenorzes.setEnabled(False)
- self.ellenorzes.setText("Ellenőrzés...")
- self._naplo(":: Frissítések ellenőrzése (pacman, AUR, Flatpak)...")
+ self.ellenorzes.setText(tr("Ellenőrzés..."))
+ self._naplo(tr(":: Frissítések ellenőrzése (pacman, AUR, Flatpak)..."))
hatterben(rendszerinfo.frissitesek, friss, kesz=self._ellenorzes_kesz, hiba=self._ellenorzes_hiba)
def _ellenorzes_vege(self):
self.ellenorzes.setEnabled(True)
- self.ellenorzes.setText("Ellenőrzés")
+ self.ellenorzes.setText(tr("Ellenőrzés"))
mikor = rendszerinfo.frissites_ellenorizve()
if mikor:
- self.eyebrow.setText(f"UTOLSÓ ELLENŐRZÉS: {datetime.fromtimestamp(mikor):%H:%M}")
+ self.eyebrow.setText(tr("UTOLSÓ ELLENŐRZÉS: {0:%H:%M}", datetime.fromtimestamp(mikor)))
def _ellenorzes_kesz(self, csomagok):
ervenytelenit("frissitesek")
@@ -178,15 +179,21 @@ class Frissitesek(Oldal):
self.csomagok = csomagok
szamok = {f: sum(1 for c in csomagok if c["forras"] == f) for f in FORRAS}
self._naplo(
- f":: {len(csomagok)} frissítés: {szamok['pacman']} pacman, {szamok['aur']} AUR, {szamok['flatpak']} Flatpak"
+ tr(
+ ":: {0} frissítés: {1} pacman, {2} AUR, {3} Flatpak",
+ len(csomagok),
+ szamok['pacman'],
+ szamok['aur'],
+ szamok['flatpak'],
+ )
)
self.kozpont.jelveny(AZON, len(csomagok))
self._tablat_tolt()
def _ellenorzes_hiba(self, uzenet):
self._ellenorzes_vege()
- self._naplo(f"[HIBA] {uzenet}")
- self.figyelem.setText(f"Az ellenőrzés nem sikerült: {uzenet}")
+ self._naplo(tr("[HIBA] {0}", uzenet))
+ self.figyelem.setText(tr("Az ellenőrzés nem sikerült: {0}", uzenet))
self.figyelem.show()
def _tablat_tolt(self):
@@ -202,7 +209,7 @@ class Frissitesek(Oldal):
nev = cimke(
c["nev"]
+ (
- ' <span style="color:#d9a441; font-family:\'Noto Sans Mono\'; font-size:11px">ÚJRAINDÍTÁS</span>'
+ f' <span style="color:#d9a441; font-family:\'Noto Sans Mono\'; font-size:11px">{tr("ÚJRAINDÍTÁS")}</span>'
if c["ujrainditas"]
else ""
)
@@ -217,7 +224,7 @@ class Frissitesek(Oldal):
ures = not self.csomagok
self.tabla.setVisible(not ures)
self.ures.setVisible(ures)
- self.ures.setText("A rendszer naprakész, nincs elérhető frissítés.")
+ self.ures.setText(tr("A rendszer naprakész, nincs elérhető frissítés."))
self._osszegez()
def _kijelolt(self):
@@ -240,15 +247,15 @@ class Frissitesek(Oldal):
def _osszegez(self):
kijelolt = self._kijelolt()
- self.kijelolt.setText(f"{len(kijelolt)} / {len(self.csomagok)} CSOMAG")
+ self.kijelolt.setText(tr("{0} / {1} CSOMAG", len(kijelolt), len(self.csomagok)))
meret = sum(c["meret"] or 0 for c in kijelolt)
self.letoltes.setText(f"{meret / 1e6:.0f} MB")
mind = bool(self.csomagok) and len(kijelolt) == len(self.csomagok)
- self.mind.setText("Kijelölés törlése" if mind else "Mind kijelölése")
+ self.mind.setText(tr("Kijelölés törlése") if mind else tr("Mind kijelölése"))
self.mind.setEnabled(bool(self.csomagok) and not self.futtato.fut())
tiltott = any(c["forras"] == "pacman" for c in kijelolt) and not muveletek.helper_elerheto()
self.inditas.setEnabled(bool(kijelolt) and not self.futtato.fut() and not tiltott)
- self.inditas.setText(f"Frissítés indítása ({len(kijelolt)})" if kijelolt else "Nincs kijelölve")
+ self.inditas.setText(tr("Frissítés indítása ({0})", len(kijelolt)) if kijelolt else tr("Nincs kijelölve"))
def _mind(self):
mind = len(self._kijelolt()) == len(self.csomagok)
@@ -269,14 +276,14 @@ class Frissitesek(Oldal):
flatpak = [c["nev"] for c in kijelolt if c["forras"] == "flatpak"]
if self.snapshot.isChecked() and self.snapshot.isEnabled():
lepesek.append(
- muveletek.Lepes("Snapshot készítése", muveletek.root("snapshot", "Frissítés előtt (RaveOS Center)"))
+ muveletek.Lepes(tr("Snapshot készítése"), muveletek.root("snapshot", tr("Frissítés előtt (RaveOS Center)")))
)
if pacman:
- lepesek.append(muveletek.Lepes("Rendszercsomagok frissítése (pacman)", muveletek.root("frissites")))
+ lepesek.append(muveletek.Lepes(tr("Rendszercsomagok frissítése (pacman)"), muveletek.root("frissites")))
if aur:
lepesek.append(
muveletek.Lepes(
- "AUR csomagok frissítése",
+ tr("AUR csomagok frissítése"),
[
"yay", "-S", "--noconfirm", "--color", "never", "--sudo", "pkexec",
"--answerclean", "None", "--answerdiff", "None", "--answeredit", "None",
@@ -288,7 +295,7 @@ class Frissitesek(Oldal):
if flatpak:
lepesek.append(
muveletek.Lepes(
- "Flatpak alkalmazások frissítése",
+ tr("Flatpak alkalmazások frissítése"),
["flatpak", "update", "-y", "--noninteractive", *flatpak],
kotelezo=False,
)
@@ -298,7 +305,7 @@ class Frissitesek(Oldal):
self.ujraindito_sav.hide()
self._zarol(True)
self._naplo("")
- self._naplo(f":: Frissítés indul, {len(kijelolt)} csomag")
+ self._naplo(tr(":: Frissítés indul, {0} csomag", len(kijelolt)))
self.futtato.indit(lepesek)
def _zarol(self, fut):
@@ -306,26 +313,26 @@ class Frissitesek(Oldal):
w.setEnabled(not fut)
self.snapshot.setEnabled(not fut and rendszerinfo.snapper_elerheto() and not snapshotok.snap_pac())
if fut:
- self.inditas.setText("Frissítés folyamatban...")
+ self.inditas.setText(tr("Frissítés folyamatban..."))
def _futas_kesz(self, rendben, hibasak):
ervenytelenit()
self._zarol(False)
if rendben:
- self._naplo(":: A frissítés sikeresen befejeződött.")
+ self._naplo(tr(":: A frissítés sikeresen befejeződött."))
if self.ujrainditas_kell:
self.ujraindito_sav.show()
else:
- self._naplo(f":: A frissítés hibával ért véget: {', '.join(hibasak)}")
+ self._naplo(tr(":: A frissítés hibával ért véget: {0}", ', '.join(hibasak)))
self.figyelem.setText(
- "A frissítés nem sikerült teljesen. A részleteket a lenti napló mutatja. "
- "Ha nem érted, mi történt, küldj hibajegyet a Visszajelzés oldalon."
+ tr("A frissítés nem sikerült teljesen. A részleteket a lenti napló mutatja. "
+ "Ha nem érted, mi történt, küldj hibajegyet a Visszajelzés oldalon.")
)
self.figyelem.show()
self._ellenoriz(True)
def _ujraindit(self):
- muveletek.Futtato(self).indit([muveletek.Lepes("Újraindítás", ["systemctl", "reboot"])])
+ muveletek.Futtato(self).indit([muveletek.Lepes(tr("Újraindítás"), ["systemctl", "reboot"])])
OLDAL = Frissitesek
diff --git a/raveos-center/raveos_center/oldalak/rendszer/__init__.py b/raveos-center/raveos_center/oldalak/rendszer/__init__.py
index 60b5768..a1660be 100644
--- a/raveos-center/raveos_center/oldalak/rendszer/__init__.py
+++ b/raveos-center/raveos_center/oldalak/rendszer/__init__.py
@@ -1,9 +1,10 @@
import importlib
from raveos_center.elemek import Fulsor, Oldal, Verem
+from raveos_center.forditas import tr
AZON = "rendszer"
-MENU = "Rendszer"
+MENU = tr("Rendszer")
IKON = "rendszer"
FULEK = ["driverek", "gaming", "karbantartas", "snapshotok", "secureboot", "mentes"]
@@ -11,7 +12,7 @@ FULEK = ["driverek", "gaming", "karbantartas", "snapshotok", "secureboot", "ment
class Rendszer(Oldal):
def __init__(self, kozpont):
- super().__init__(kozpont, "DRIVEREK · GAMING · KARBANTARTÁS · SNAPSHOTOK", "Rendszer", kitolt=True)
+ super().__init__(kozpont, tr("DRIVEREK · GAMING · KARBANTARTÁS · SNAPSHOTOK"), tr("Rendszer"), kitolt=True)
self.fulek = {}
modulok = [importlib.import_module(f"{__name__}.{nev}") for nev in FULEK]
self.fulsor = Fulsor([(m.AZON, m.CIM) for m in modulok], self.valt)
diff --git a/raveos-center/raveos_center/oldalak/rendszer/driverek.py b/raveos-center/raveos_center/oldalak/rendszer/driverek.py
index 499e87a..84ecbb0 100644
--- a/raveos-center/raveos_center/oldalak/rendszer/driverek.py
+++ b/raveos-center/raveos_center/oldalak/rendszer/driverek.py
@@ -4,10 +4,11 @@ from PyQt6.QtWidgets import QHBoxLayout, QMessageBox, QVBoxLayout, QWidget
from raveos_center import driverek, muveletek
from raveos_center.elemek import Kartya, cimke, gomb
from raveos_center.folyamat import FolyamatAblak
+from raveos_center.forditas import tr
from raveos_center.hatter import ervenytelenit, gyorsitott
AZON = "driverek"
-CIM = "Driverek"
+CIM = tr("Driverek")
class EszkozSor(QWidget):
@@ -23,21 +24,21 @@ class EszkozSor(QWidget):
nev = cimke(elem["nev"], tordel=True)
nev.setStyleSheet("font-size: 14px; font-weight: 600;")
szovegek.addWidget(nev)
- szovegek.addWidget(cimke(f"Jelenlegi driver: {elem['jelenlegi'] or 'nincs betöltve'}", "monohalvany"))
+ szovegek.addWidget(cimke(tr("Jelenlegi driver: {0}", elem["jelenlegi"] or tr("nincs betöltve")), "monohalvany"))
if elem["hianyzik"]:
- hiany = cimke(f"Hiányzó csomagok: {' '.join(elem['hianyzik'])}", "monohalvany", True)
+ hiany = cimke(tr("Hiányzó csomagok: {0}", ' '.join(elem['hianyzik'])), "monohalvany", True)
hiany.setStyleSheet("color: #d9a441;")
szovegek.addWidget(hiany)
if elem["megjegyzes"]:
szovegek.addWidget(cimke(elem["megjegyzes"], "halvany", True))
sor.addLayout(szovegek, 1)
if elem["hianyzik"]:
- g = gomb("Ajánlott telepítése", fo=True, kicsi=True)
+ g = gomb(tr("Ajánlott telepítése"), fo=True, kicsi=True)
g.setEnabled(muveletek.helper_elerheto())
g.clicked.connect(lambda: telepit([elem]))
sor.addWidget(g, 0, Qt.AlignmentFlag.AlignVCenter)
else:
- rendben = cimke("RENDBEN", "allapotcimke")
+ rendben = cimke(tr("RENDBEN"), "allapotcimke")
rendben.setProperty("szin", "zold")
sor.addWidget(rendben, 0, Qt.AlignmentFlag.AlignVCenter)
@@ -54,17 +55,17 @@ class Driverek(QWidget):
fej = QHBoxLayout()
fej.addWidget(
cimke(
- "A RaveOS felismeri a géped eszközeit, és megmutatja, melyikhez van ajánlott driver. "
- "A videokártya drivere a telepítéskor is ugyanígy kerül fel.",
+ tr("A RaveOS felismeri a géped eszközeit, és megmutatja, melyikhez van ajánlott driver. "
+ "A videokártya drivere a telepítéskor is ugyanígy kerül fel."),
"masodlagos",
True,
),
1,
)
- self.ujra = gomb("Újraellenőrzés", kicsi=True)
+ self.ujra = gomb(tr("Újraellenőrzés"), kicsi=True)
self.ujra.clicked.connect(self.frissit)
fej.addWidget(self.ujra, 0, Qt.AlignmentFlag.AlignTop)
- self.mind = gomb("Minden ajánlott telepítése", fo=True, kicsi=True)
+ self.mind = gomb(tr("Minden ajánlott telepítése"), fo=True, kicsi=True)
self.mind.clicked.connect(lambda: self._telepit([e for e in self.elemek if e["hianyzik"]]))
self.mind.hide()
fej.addWidget(self.mind, 0, Qt.AlignmentFlag.AlignTop)
@@ -87,7 +88,7 @@ class Driverek(QWidget):
def _hiba(self, uzenet):
self.ujra.setEnabled(True)
- self.figyelem.setText(f"A hardver felismerése nem sikerült: {uzenet}")
+ self.figyelem.setText(tr("A hardver felismerése nem sikerült: {0}", uzenet))
self.figyelem.show()
def _kesz(self, elemek):
@@ -101,12 +102,12 @@ class Driverek(QWidget):
if w:
w.deleteLater()
if not muveletek.helper_elerheto():
- self.figyelem.setText("A RaveOS Center rendszerhelpere nincs telepítve, ezért driver nem telepíthető.")
+ self.figyelem.setText(tr("A RaveOS Center rendszerhelpere nincs telepítve, ezért driver nem telepíthető."))
self.figyelem.show()
else:
self.figyelem.hide()
if driverek.szkript() is None:
- self.figyelem.setText("A driverfelismerő szkript nincs telepítve.")
+ self.figyelem.setText(tr("A driverfelismerő szkript nincs telepítve."))
self.figyelem.show()
for azon, nev in driverek.KATEGORIAK:
sajat = [e for e in elemek if e["kategoria"] == azon]
@@ -125,7 +126,7 @@ class Driverek(QWidget):
cs.addWidget(kartya)
self.lista.addWidget(csoport)
if not elemek:
- self.lista.addWidget(cimke("Nem található kezelhető eszköz.", "halvany"))
+ self.lista.addWidget(cimke(tr("Nem található kezelhető eszköz."), "halvany"))
hianyzo = [e for e in elemek if e["hianyzik"]]
self.mind.setVisible(len(hianyzo) > 1)
self.mind.setEnabled(muveletek.helper_elerheto())
@@ -136,23 +137,23 @@ class Driverek(QWidget):
lepesek = []
egyeb = []
if any(e["gpu"] for e in elemek):
- lepesek.append(muveletek.Lepes("Videokártya driverek", muveletek.root("driverek")))
+ lepesek.append(muveletek.Lepes(tr("Videokártya driverek"), muveletek.root("driverek")))
for e in elemek:
if not e["gpu"]:
egyeb += [p for p in e["hianyzik"] if p not in egyeb]
if egyeb:
- lepesek.append(muveletek.Lepes("További driverek", muveletek.root("telepit", *egyeb)))
- ablak = FolyamatAblak(self, "Driverek telepítése", lepesek, "A driverek telepítve.")
+ lepesek.append(muveletek.Lepes(tr("További driverek"), muveletek.root("telepit", *egyeb)))
+ ablak = FolyamatAblak(self, tr("Driverek telepítése"), lepesek, tr("A driverek telepítve."))
ablak.exec()
if ablak.rendben and any(driverek.ujrainditas_kell(e) for e in elemek):
doboz = QMessageBox(self)
- doboz.setWindowTitle("Újraindítás szükséges")
- doboz.setText("Az új videokártya-driver az újraindítás után töltődik be.")
- most = doboz.addButton("Újraindítás most", QMessageBox.ButtonRole.AcceptRole)
- doboz.addButton("Később", QMessageBox.ButtonRole.RejectRole)
+ doboz.setWindowTitle(tr("Újraindítás szükséges"))
+ doboz.setText(tr("Az új videokártya-driver az újraindítás után töltődik be."))
+ most = doboz.addButton(tr("Újraindítás most"), QMessageBox.ButtonRole.AcceptRole)
+ doboz.addButton(tr("Később"), QMessageBox.ButtonRole.RejectRole)
doboz.exec()
if doboz.clickedButton() is most:
- muveletek.Futtato(self).indit([muveletek.Lepes("Újraindítás", ["systemctl", "reboot"])])
+ muveletek.Futtato(self).indit([muveletek.Lepes(tr("Újraindítás"), ["systemctl", "reboot"])])
self.frissit()
diff --git a/raveos-center/raveos_center/oldalak/rendszer/gaming.py b/raveos-center/raveos_center/oldalak/rendszer/gaming.py
index 5d410e9..dfd91aa 100644
--- a/raveos-center/raveos_center/oldalak/rendszer/gaming.py
+++ b/raveos-center/raveos_center/oldalak/rendszer/gaming.py
@@ -4,21 +4,22 @@ from PyQt6.QtWidgets import QComboBox, QHBoxLayout, QMessageBox, QProgressBar, Q
from raveos_center import gaming, muveletek, proton
from raveos_center.elemek import Kapcsolo, Kartya, cimke, gomb
from raveos_center.folyamat import FolyamatAblak
+from raveos_center.forditas import tr
from raveos_center.hatter import ervenytelenit, gyorsitott, hatterben, tarolt
AZON = "gaming"
CIM = "Gaming"
BEALLITASOK = [
- ("gamemode", "GameMode", "CPU és I/O prioritás játék közben. A Lutris és a Heroic magától használja, Steamben a "
- "játék indítási opciójába írd: gamemoderun %command%"),
- ("mangohud", "MangoHud alapból", "FPS, hőmérséklet és terhelés kijelzése minden Vulkan és OpenGL játékban. "
- "Játék közben a jobb Shift + F12 elrejti, a jobb Shift + F10 vált a kijelző módok között."),
- ("utemezo", "Játékra hangolt ütemező", "Az scx_lavd ütemező gaming módban: egyenletesebb képkockaidő, amikor a "
- "háttérben más is fut. Kikapcsolva a kernel saját BORE ütemezője dolgozik."),
- ("gamescope", "Gamescope session", "Külön, konzolszerű Steam játékmenet, a bejelentkező képernyőn választható."),
- ("governor", "Performance CPU governor", "Játék közben teljes órajel, a játék bezárása után visszaáll."),
- ("ntsync", "NTSync", "Gyorsabb Windows-szinkronizáció Wine és Proton alatt."),
+ ("gamemode", "GameMode", tr("CPU és I/O prioritás játék közben. A Lutris és a Heroic magától használja, Steamben a "
+ "játék indítási opciójába írd: gamemoderun %command%")),
+ ("mangohud", tr("MangoHud alapból"), tr("FPS, hőmérséklet és terhelés kijelzése minden Vulkan és OpenGL játékban. "
+ "Játék közben a jobb Shift + F12 elrejti, a jobb Shift + F10 vált a kijelző módok között.")),
+ ("utemezo", tr("Játékra hangolt ütemező"), tr("Az scx_lavd ütemező gaming módban: egyenletesebb képkockaidő, amikor a "
+ "háttérben más is fut. Kikapcsolva a kernel saját BORE ütemezője dolgozik.")),
+ ("gamescope", "Gamescope session", tr("Külön, konzolszerű Steam játékmenet, a bejelentkező képernyőn választható.")),
+ ("governor", "Performance CPU governor", tr("Játék közben teljes órajel, a játék bezárása után visszaáll.")),
+ ("ntsync", "NTSync", tr("Gyorsabb Windows-szinkronizáció Wine és Proton alatt.")),
]
@@ -35,15 +36,15 @@ def alkalmaz(szulo, valtozasok):
if h:
helyi.append(h)
if lepesek:
- ablak = FolyamatAblak(szulo, "Gaming beállítások", lepesek, "A beállítás elkészült.")
+ ablak = FolyamatAblak(szulo, tr("Gaming beállítások"), lepesek, tr("A beállítás elkészült."))
ablak.exec()
if not ablak.rendben:
- return "A beállítás nem sikerült teljesen, a részleteket a napló mutatja."
+ return tr("A beállítás nem sikerült teljesen, a részleteket a napló mutatja.")
for h in helyi:
try:
h()
except OSError as e:
- return f"A beállítás nem sikerült: {e}"
+ return tr("A beállítás nem sikerült: {0}", e)
return None
@@ -95,8 +96,8 @@ class ProtonGeSor(Sor):
def __init__(self, szulo):
super().__init__(
"Proton-GE",
- "A GloriousEggroll Proton-változata, több játékhoz tartalmaz javítást és videokodeket. A Steam "
- "újraindítása után a játék Tulajdonságok > Kompatibilitás menüjében választható.",
+ tr("A GloriousEggroll Proton-változata, több játékhoz tartalmaz javítást és videokodeket. A Steam "
+ "újraindítása után a játék Tulajdonságok > Kompatibilitás menüjében választható."),
)
self.szulo = szulo
self.kiadas = None
@@ -111,11 +112,11 @@ class ProtonGeSor(Sor):
self.szovegek.addWidget(self.sav)
gombok = QVBoxLayout()
gombok.setSpacing(6)
- self.telepit_gomb = gomb("Legújabb telepítése", fo=True, kicsi=True)
+ self.telepit_gomb = gomb(tr("Legújabb telepítése"), fo=True, kicsi=True)
self.telepit_gomb.clicked.connect(self._telepit)
- self.regiek_gomb = gomb("Régiek törlése", kicsi=True)
+ self.regiek_gomb = gomb(tr("Régiek törlése"), kicsi=True)
self.regiek_gomb.clicked.connect(self._regiek)
- self.torol_gomb = gomb("Mind törlése", kicsi=True)
+ self.torol_gomb = gomb(tr("Mind törlése"), kicsi=True)
self.torol_gomb.clicked.connect(self._mind)
for g in (self.telepit_gomb, self.regiek_gomb, self.torol_gomb):
gombok.addWidget(g)
@@ -138,13 +139,13 @@ class ProtonGeSor(Sor):
van_steam = bool(proton.celmappak())
naprakesz = bool(self.kiadas and lista and lista[0] == self.kiadas["nev"])
if szoveg is None:
- szoveg = f"Telepítve: {', '.join(lista)}" if lista else "Nincs telepítve."
+ szoveg = tr("Telepítve: {0}", ', '.join(lista)) if lista else tr("Nincs telepítve.")
if self.kiadas and not naprakesz:
- szoveg += f" Legújabb: {self.kiadas['nev']}"
+ szoveg += tr(" Legújabb: {0}", self.kiadas['nev'])
if not van_steam:
- szoveg = "Nem található Steam. Telepítsd, és indítsd el egyszer."
+ szoveg = tr("Nem található Steam. Telepítsd, és indítsd el egyszer.")
self.jegyzet(szoveg)
- self.telepit_gomb.setText("Naprakész" if naprakesz else "Legújabb telepítése")
+ self.telepit_gomb.setText(tr("Naprakész") if naprakesz else tr("Legújabb telepítése"))
self.telepit_gomb.setEnabled(not self.fut and not naprakesz and van_steam)
self.regiek_gomb.setVisible(bool(proton.regiek()))
self.regiek_gomb.setEnabled(not self.fut)
@@ -155,7 +156,7 @@ class ProtonGeSor(Sor):
self.fut = True
self.sav.setValue(0)
self.sav.show()
- self._mutat("Letöltés és ellenőrzés, ez néhány percig tarthat.")
+ self._mutat(tr("Letöltés és ellenőrzés, ez néhány percig tarthat."))
hatterben(self._letolt, kesz=self._kesz, hiba=self._hiba)
def _letolt(self):
@@ -173,7 +174,7 @@ class ProtonGeSor(Sor):
self.fut = False
self.sav.hide()
self._mutat()
- QMessageBox.warning(self.szulo, "Proton-GE", f"A telepítés nem sikerült: {uzenet}")
+ QMessageBox.warning(self.szulo, "Proton-GE", tr("A telepítés nem sikerült: {0}", uzenet))
def _torles(self, parok, kerdes):
if not parok or QMessageBox.question(self.szulo, "Proton-GE", kerdes) != QMessageBox.StandardButton.Yes:
@@ -182,18 +183,21 @@ class ProtonGeSor(Sor):
for mappa, nev in parok:
proton.torol(nev, [mappa] if mappa else None)
except OSError as e:
- QMessageBox.warning(self.szulo, "Proton-GE", f"A törlés nem sikerült: {e}")
+ QMessageBox.warning(self.szulo, "Proton-GE", tr("A törlés nem sikerült: {0}", e))
self._mutat()
def _regiek(self):
parok = proton.regiek()
nevek = ", ".join(sorted({n for _, n in parok}))
- self._torles(parok, f"Törlöd a régebbi verziókat ({nevek})? Minden Steam-telepítésben a legújabb megmarad.")
+ self._torles(parok, tr(
+ "Törlöd a régebbi verziókat ({0})? Minden Steam-telepítésben a legújabb megmarad.",
+ nevek,
+ ))
def _mind(self):
self._torles(
[(None, n) for n in proton.telepitett()],
- "Törlöd az összes Proton-GE verziót? Az ezeket használó játékok a Steam alap Protonjára váltanak.",
+ tr("Törlöd az összes Proton-GE verziót? Az ezeket használó játékok a Steam alap Protonjára váltanak."),
)
@@ -209,9 +213,9 @@ class Gaming(QWidget):
doboz.setSpacing(16)
doboz.addWidget(
cimke(
- "Játékhoz hasznos beállítások. Mindegyik bármikor visszakapcsolható. Az Áttekintés Gaming mód "
- "kapcsolója a GameMode-ot, a performance governort, az NTSync-et és a játékra hangolt ütemezőt "
- "kapcsolja egyszerre.",
+ tr("Játékhoz hasznos beállítások. Mindegyik bármikor visszakapcsolható. Az Áttekintés Gaming mód "
+ "kapcsolója a GameMode-ot, a performance governort, az NTSync-et és a játékra hangolt ütemezőt "
+ "kapcsolja egyszerre."),
"masodlagos",
True,
)
@@ -232,7 +236,7 @@ class Gaming(QWidget):
self.hud_mod.activated.connect(self._hud_mod)
hud_sor = QHBoxLayout()
hud_sor.setSpacing(8)
- hud_sor.addWidget(cimke("Kijelző:", "halvany"))
+ hud_sor.addWidget(cimke(tr("Kijelző:"), "halvany"))
hud_sor.addWidget(self.hud_mod)
hud_sor.addStretch(1)
self.sorok["mangohud"].szovegek.addSpacing(6)
@@ -240,15 +244,15 @@ class Gaming(QWidget):
doboz.addWidget(kartya)
doboz.addSpacing(8)
- doboz.addWidget(cimke("PROTON VERZIÓK", "h2"))
+ doboz.addWidget(cimke(tr("PROTON VERZIÓK"), "h2"))
proton_kartya = Kartya(terkoz=0, margo=0)
self.proton_ge = ProtonGeSor(self)
proton_kartya.elrendezes.addWidget(self.proton_ge)
self.sorok["proton_cachyos"] = BeallitasSor(
"proton_cachyos",
"Proton-CachyOS",
- "A CachyOS Proton-változata a rendszer csomagkezelőjéből, a rendszerfrissítéssel együtt frissül. "
- "Kb. 1,6 GB. A Steam újraindítása után választható.",
+ tr("A CachyOS Proton-változata a rendszer csomagkezelőjéből, a rendszerfrissítéssel együtt frissül. "
+ "Kb. 1,6 GB. A Steam újraindítása után választható."),
self.valt,
True,
)
@@ -272,7 +276,7 @@ class Gaming(QWidget):
index = self.hud_mod.findData(gaming.mangohud_mod())
self.hud_mod.setCurrentIndex(max(0, index))
if adat is None:
- self._figyelmeztet("Az állapot nem olvasható be, próbáld újra a fül újbóli megnyitásával.")
+ self._figyelmeztet(tr("Az állapot nem olvasható be, próbáld újra a fül újbóli megnyitásával."))
return
self.adat = adat
for azon, sor in self.sorok.items():
@@ -280,7 +284,7 @@ class Gaming(QWidget):
if self.hibauzenet:
self._figyelmeztet(self.hibauzenet)
elif not muveletek.helper_elerheto():
- self._figyelmeztet("A RaveOS Center rendszerhelpere nincs telepítve, a legtöbb beállítás nem módosítható.")
+ self._figyelmeztet(tr("A RaveOS Center rendszerhelpere nincs telepítve, a legtöbb beállítás nem módosítható."))
else:
self.figyelem.hide()
@@ -292,7 +296,7 @@ class Gaming(QWidget):
try:
gaming.mangohud_mod_beallit(self.hud_mod.currentData())
except OSError as e:
- QMessageBox.warning(self, "MangoHud", f"A beállítás nem sikerült: {e}")
+ QMessageBox.warning(self, "MangoHud", tr("A beállítás nem sikerült: {0}", e))
def valt(self, azon, be):
self.alkalmaz([(azon, be)])
diff --git a/raveos-center/raveos_center/oldalak/rendszer/karbantartas.py b/raveos-center/raveos_center/oldalak/rendszer/karbantartas.py
index 91b7113..011e2de 100644
--- a/raveos-center/raveos_center/oldalak/rendszer/karbantartas.py
+++ b/raveos-center/raveos_center/oldalak/rendszer/karbantartas.py
@@ -4,24 +4,25 @@ from PyQt6.QtWidgets import QDialog, QHBoxLayout, QListWidget, QListWidgetItem,
from raveos_center import karbantartas, muveletek
from raveos_center.elemek import Kartya, Racs, cimke, gomb
from raveos_center.folyamat import FolyamatAblak
+from raveos_center.forditas import tr
from raveos_center.hatter import gyorsitott, tarolt
AZON = "karbantartas"
-CIM = "Karbantartás"
+CIM = tr("Karbantartás")
MUVELETEK = [
- ("cache", "paccache -rk2", "Csomag cache ürítése",
- "Minden csomagból csak az utolsó két verzió marad, az eltávolított csomagok fájljai törlődnek.", True),
- ("arva", "pacman -Qdtq", "Árva csomagok",
- "Már semmi által nem használt függőségek eltávolítása. Az előnézetben egyenként kiveheted, amit megtartanál.", True),
- ("naplo", "journalctl --vacuum", "Naplók takarítása",
- "A két hétnél régebbi rendszernaplók törlése, legfeljebb 100 MB marad.", True),
- ("tukrok", "reflector", "Tükrök frissítése",
- "A leggyorsabb közeli letöltési szerverek kiválasztása. A régi lista biztonsági másolatként megmarad.", False),
- ("kulcsok", "pacman-key --populate", "Kulcsok frissítése",
- "A csomagaláíró kulcsok újratöltése. Segít, ha a frissítés aláírási hibával áll le.", False),
- ("flatpak", "flatpak uninstall --unused", "Flatpak takarítás",
- "A már egyik alkalmazás által sem használt runtime-ok eltávolítása.", True),
+ ("cache", "paccache -rk2", tr("Csomag cache ürítése"),
+ tr("Minden csomagból csak az utolsó két verzió marad, az eltávolított csomagok fájljai törlődnek."), True),
+ ("arva", "pacman -Qdtq", tr("Árva csomagok"),
+ tr("Már semmi által nem használt függőségek eltávolítása. Az előnézetben egyenként kiveheted, amit megtartanál."), True),
+ ("naplo", "journalctl --vacuum", tr("Naplók takarítása"),
+ tr("A két hétnél régebbi rendszernaplók törlése, legfeljebb 100 MB marad."), True),
+ ("tukrok", "reflector", tr("Tükrök frissítése"),
+ tr("A leggyorsabb közeli letöltési szerverek kiválasztása. A régi lista biztonsági másolatként megmarad."), False),
+ ("kulcsok", "pacman-key --populate", tr("Kulcsok frissítése"),
+ tr("A csomagaláíró kulcsok újratöltése. Segít, ha a frissítés aláírási hibával áll le."), False),
+ ("flatpak", "flatpak uninstall --unused", tr("Flatpak takarítás"),
+ tr("A már egyik alkalmazás által sem használt runtime-ok eltávolítása."), True),
]
@@ -33,7 +34,7 @@ class ElonezetAblak(QDialog):
doboz = QVBoxLayout(self)
doboz.setContentsMargins(28, 24, 28, 20)
doboz.setSpacing(12)
- doboz.addWidget(cimke("ELŐNÉZET", "eyebrow"))
+ doboz.addWidget(cimke(tr("ELŐNÉZET"), "eyebrow"))
doboz.addWidget(cimke(cim.upper(), "h2", True))
doboz.addWidget(cimke(szoveg, "masodlagos", True))
self.lista = QListWidget()
@@ -49,7 +50,7 @@ class ElonezetAblak(QDialog):
doboz.addStretch(1)
gombok = QHBoxLayout()
gombok.addStretch(1)
- megse = gomb("Mégse")
+ megse = gomb(tr("Mégse"))
megse.clicked.connect(self.reject)
gombok.addWidget(megse)
self.mehet = gomb(gomb_szoveg, fo=True)
@@ -76,10 +77,10 @@ class MuveletKartya(Kartya):
self.elrendezes.addWidget(cim)
self.elrendezes.addWidget(cimke(leiras, "halvany", True))
self.elrendezes.addStretch(1)
- self.osszegzes = cimke("Ellenőrzés...", "monozold", True)
+ self.osszegzes = cimke(tr("Ellenőrzés..."), "monozold", True)
self.elrendezes.addWidget(self.osszegzes)
sor = QHBoxLayout()
- self.gomb = gomb("Futtatás", kicsi=True)
+ self.gomb = gomb(tr("Futtatás"), kicsi=True)
self.gomb.clicked.connect(futtat)
sor.addWidget(self.gomb)
sor.addStretch(1)
@@ -96,8 +97,8 @@ class Karbantartas(QWidget):
doboz.setSpacing(16)
doboz.addWidget(
cimke(
- "Rendszeres takarítás és javítás. A törléssel járó műveletek előtt megmutatjuk, mi kerülne törlésre, "
- "és csak a megerősítésed után futnak.",
+ tr("Rendszeres takarítás és javítás. A törléssel járó műveletek előtt megmutatjuk, mi kerülne törlésre, "
+ "és csak a megerősítésed után futnak."),
"masodlagos",
True,
)
@@ -116,7 +117,7 @@ class Karbantartas(QWidget):
def megjelenik(self, *_):
helper = muveletek.helper_elerheto()
- self.figyelem.setText("A RaveOS Center rendszerhelpere nincs telepítve, a műveletek nem futtathatók.")
+ self.figyelem.setText(tr("A RaveOS Center rendszerhelpere nincs telepítve, a műveletek nem futtathatók."))
self.figyelem.setVisible(not helper)
for azon in self.kartyak:
self._ellenoriz(azon)
@@ -125,7 +126,7 @@ class Karbantartas(QWidget):
kartya = self.kartyak[azon]
if tarolt(f"karbantartas_{azon}") is None:
kartya.gomb.setEnabled(False)
- kartya.osszegzes.setText("Ellenőrzés...")
+ kartya.osszegzes.setText(tr("Ellenőrzés..."))
gyorsitott(
f"karbantartas_{azon}",
karbantartas.ELONEZETEK[azon],
@@ -149,20 +150,26 @@ class Karbantartas(QWidget):
nev = next(m[2] for m in MUVELETEK if m[0] == azon)
kivalasztott = None
if azon == "cache":
- szoveg = f"Ezek a csomagfájlok törlődnek a cache-ből ({adat['osszegzes']}). A telepített programokat nem érinti."
+ szoveg = tr(
+ "Ezek a csomagfájlok törlődnek a cache-ből ({0}). A telepített programokat nem érinti.",
+ adat['osszegzes'],
+ )
elif azon == "arva":
szoveg = (
- "Pontosan ezek a csomagok törlődnek, más nem. Vedd ki a pipát annál, amit megtartanál. "
- "Utána újabb árva függőségek jelenhetnek meg, ezeket a kártya újra megmutatja."
+ tr("Pontosan ezek a csomagok törlődnek, más nem. Vedd ki a pipát annál, amit megtartanál. "
+ "Utána újabb árva függőségek jelenhetnek meg, ezeket a kártya újra megmutatja.")
)
elif azon == "naplo":
- szoveg = f"{adat['osszegzes']}. A két hétnél régebbi naplók törlődnek, és legfeljebb 100 MB marad."
+ szoveg = tr(
+ "{0}. A két hétnél régebbi naplók törlődnek, és legfeljebb 100 MB marad.",
+ adat['osszegzes'],
+ )
elif azon == "flatpak":
- szoveg = "Ezek a runtime-ok törlődnek. Az alkalmazásaid továbbra is működnek."
+ szoveg = tr("Ezek a runtime-ok törlődnek. Az alkalmazásaid továbbra is működnek.")
else:
szoveg = ""
if szoveg:
- ablak = ElonezetAblak(self, nev, szoveg, adat["elemek"], azon == "arva", "Törlés")
+ ablak = ElonezetAblak(self, nev, szoveg, adat["elemek"], azon == "arva", tr("Törlés"))
if ablak.exec() != QDialog.DialogCode.Accepted:
return
if azon == "arva":
@@ -170,7 +177,7 @@ class Karbantartas(QWidget):
lepesek = karbantartas.lepesek(azon, adat, kivalasztott)
if not lepesek:
return
- FolyamatAblak(self, nev, lepesek, "A művelet elkészült.").exec()
+ FolyamatAblak(self, nev, lepesek, tr("A művelet elkészült.")).exec()
self._ellenoriz(azon)
diff --git a/raveos-center/raveos_center/oldalak/rendszer/mentes.py b/raveos-center/raveos_center/oldalak/rendszer/mentes.py
index 6ad5967..a51becf 100644
--- a/raveos-center/raveos_center/oldalak/rendszer/mentes.py
+++ b/raveos-center/raveos_center/oldalak/rendszer/mentes.py
@@ -20,12 +20,13 @@ from PyQt6.QtWidgets import (
from raveos_center import katalogus, mentesek, muveletek
from raveos_center.elemek import Kartya, cimke, gomb
+from raveos_center.forditas import tr
from raveos_center.hatter import hatterben
AZON = "mentes"
-CIM = "Mentés"
+CIM = tr("Mentés")
-MERET = {"small": "kicsi", "medium": "közepes", "large": "nagy", "xlarge": "nagyon nagy"}
+MERET = {"small": tr("kicsi"), "medium": tr("közepes"), "large": tr("nagy"), "xlarge": tr("nagyon nagy")}
class RovidUt(QLabel):
@@ -85,8 +86,8 @@ class Mentes(QWidget):
doboz.setSpacing(20)
doboz.addWidget(
cimke(
- "Mentsd el az alkalmazásaid beállításait és a fontos mappáidat egyetlen fájlba, és állítsd vissza "
- "őket egy másik gépen vagy újratelepítés után. A ROOT jelölésű elemekhez a rendszer jelszót kér.",
+ tr("Mentsd el az alkalmazásaid beállításait és a fontos mappáidat egyetlen fájlba, és állítsd vissza "
+ "őket egy másik gépen vagy újratelepítés után. A ROOT jelölésű elemekhez a rendszer jelszót kér."),
"masodlagos",
True,
)
@@ -102,7 +103,7 @@ class Mentes(QWidget):
oszlopok.addLayout(bal, 3)
oszlopok.addLayout(jobb, 2)
- mentes = Kartya("Mentés", terkoz=10, margo=20)
+ mentes = Kartya(tr("Mentés"), terkoz=10, margo=20)
gorgeto = QScrollArea()
gorgeto.setWidgetResizable(True)
gorgeto.setFrameShape(QFrame.Shape.NoFrame)
@@ -118,28 +119,28 @@ class Mentes(QWidget):
cel_sor.setSpacing(8)
self.cel = QLineEdit(str(Path.home() / f"raveos-mentes-{datetime.now():%Y%m%d}.tar.gz"))
cel_sor.addWidget(self.cel, 1)
- tallozas = gomb("Tallózás", kicsi=True)
+ tallozas = gomb(tr("Tallózás"), kicsi=True)
tallozas.clicked.connect(self._cel_valaszt)
cel_sor.addWidget(tallozas)
mentes.elrendezes.addSpacing(8)
- mentes.elrendezes.addWidget(cimke("Mentés helye", "kartyacim"))
+ mentes.elrendezes.addWidget(cimke(tr("Mentés helye"), "kartyacim"))
mentes.elrendezes.addLayout(cel_sor)
gs = QHBoxLayout()
gs.addStretch(1)
- self.mentes_gomb = gomb("Mentés indítása", fo=True)
+ self.mentes_gomb = gomb(tr("Mentés indítása"), fo=True)
self.mentes_gomb.clicked.connect(self._mentes)
gs.addWidget(self.mentes_gomb)
mentes.elrendezes.addLayout(gs)
bal.addWidget(mentes, 1)
- vissza = Kartya("Visszaállítás", terkoz=10, margo=20)
+ vissza = Kartya(tr("Visszaállítás"), terkoz=10, margo=20)
fs = QHBoxLayout()
fs.setSpacing(8)
self.forras = QLineEdit()
- self.forras.setPlaceholderText("Válaszd ki a mentésfájlt (.tar.gz)")
+ self.forras.setPlaceholderText(tr("Válaszd ki a mentésfájlt (.tar.gz)"))
self.forras.setReadOnly(True)
fs.addWidget(self.forras, 1)
- valaszt = gomb("Mentés kiválasztása", kicsi=True)
+ valaszt = gomb(tr("Mentés kiválasztása"), kicsi=True)
valaszt.clicked.connect(self._forras_valaszt)
fs.addWidget(valaszt)
vissza.elrendezes.addLayout(fs)
@@ -147,11 +148,11 @@ class Mentes(QWidget):
self.vissza_lista.setSpacing(2)
vissza.elrendezes.addLayout(self.vissza_lista)
vissza.elrendezes.addWidget(
- cimke("A visszaállítás felülírja a meglévő fájlokat a kiválasztott helyeken.", "halvany", True)
+ cimke(tr("A visszaállítás felülírja a meglévő fájlokat a kiválasztott helyeken."), "halvany", True)
)
vs = QHBoxLayout()
vs.addStretch(1)
- self.vissza_gomb = gomb("Visszaállítás", fo=True)
+ self.vissza_gomb = gomb(tr("Visszaállítás"), fo=True)
self.vissza_gomb.setEnabled(False)
self.vissza_gomb.clicked.connect(self._visszaallitas)
vs.addWidget(self.vissza_gomb)
@@ -163,7 +164,7 @@ class Mentes(QWidget):
self.sav.setTextVisible(False)
self.sav.setFixedHeight(6)
jobb.addWidget(self.sav)
- jobb.addWidget(cimke("NAPLÓ", "h2"))
+ jobb.addWidget(cimke(tr("NAPLÓ"), "h2"))
self.naplo = QPlainTextEdit()
self.naplo.setObjectName("naplo")
self.naplo.setReadOnly(True)
@@ -177,7 +178,7 @@ class Mentes(QWidget):
try:
csoportok = mentesek.csoportok()
except (OSError, ValueError, RuntimeError) as e:
- self.mentes_lista.addWidget(cimke(f"A mentési lista nem tölthető be: {e}", "figyelem", True))
+ self.mentes_lista.addWidget(cimke(tr("A mentési lista nem tölthető be: {0}", e), "figyelem", True))
return
self.mentes_lista.addStretch(0)
for csoport in csoportok:
@@ -199,17 +200,20 @@ class Mentes(QWidget):
self.vissza_gomb.setEnabled(not self.fut and bool(self.visszaallitas_jelolok))
def _cel_valaszt(self):
- ut, _ = QFileDialog.getSaveFileName(self, "Mentés helye", self.cel.text(), "Mentés (*.tar.gz)")
+ ut, _ = QFileDialog.getSaveFileName(self, tr("Mentés helye"), self.cel.text(), tr("Mentés (*.tar.gz)"))
if ut:
self.cel.setText(ut if ut.endswith(".tar.gz") else ut + ".tar.gz")
def _forras_valaszt(self):
- ut, _ = QFileDialog.getOpenFileName(self, "Mentés kiválasztása", str(Path.home()), "Mentés (*.tar.gz)")
+ ut, _ = QFileDialog.getOpenFileName(self, tr("Mentés kiválasztása"), str(Path.home()), tr("Mentés (*.tar.gz)"))
if not ut:
return
self.forras.setText(ut)
self._tartalom([])
- hatterben(mentesek.tartalom, ut, kesz=self._tartalom, hiba=lambda u: self._hiba(f"A fájl nem olvasható: {u}"))
+ hatterben(mentesek.tartalom, ut, kesz=self._tartalom, hiba=lambda u: self._hiba(tr(
+ "A fájl nem olvasható: {0}",
+ u,
+ )))
def _tartalom(self, lista):
while self.vissza_lista.count():
@@ -218,23 +222,23 @@ class Mentes(QWidget):
w.deleteLater()
self.visszaallitas_jelolok = []
if not lista:
- self.vissza_lista.addWidget(cimke("Ebben a fájlban nincs visszaállítható elem.", "halvany"))
+ self.vissza_lista.addWidget(cimke(tr("Ebben a fájlban nincs visszaállítható elem."), "halvany"))
for elem in lista:
sor, jelolo = elem_sor(elem, True)
self.vissza_lista.addWidget(sor)
self.visszaallitas_jelolok.append((jelolo, elem))
if any(e.get("regi") for e in lista):
self.vissza_lista.addWidget(
- cimke("Régi (App Installer) formátumú mentés: a rendszerelemek ebből nem állíthatók vissza.", "halvany", True)
+ cimke(tr("Régi (App Installer) formátumú mentés: a rendszerelemek ebből nem állíthatók vissza."), "halvany", True)
)
self._gombok()
def _hiba(self, szoveg):
- self.naplo.appendPlainText(f"[HIBA] {szoveg}")
+ self.naplo.appendPlainText(tr("[HIBA] {0}", szoveg))
def _rootot_kell(self, elemek):
if any(e.get("scope") == "system" for e in elemek) and not muveletek.helper_elerheto():
- QMessageBox.warning(self, "Mentés", "A rendszerelemekhez a RaveOS Center rendszerhelpere szükséges, de nincs telepítve.")
+ QMessageBox.warning(self, tr("Mentés"), tr("A rendszerelemekhez a RaveOS Center rendszerhelpere szükséges, de nincs telepítve."))
return False
return True
@@ -244,13 +248,13 @@ class Mentes(QWidget):
if not elemek or not cel or not self._rootot_kell(elemek):
return
if Path(cel).exists():
- if QMessageBox.question(self, "Mentés", f"A fájl már létezik, felülírod?\n{cel}") != QMessageBox.StandardButton.Yes:
+ if QMessageBox.question(self, tr("Mentés"), tr("A fájl már létezik, felülírod?\n{0}", cel)) != QMessageBox.StandardButton.Yes:
return
- self._indul(f"Mentés indul: {cel}")
+ self._indul(tr("Mentés indul: {0}", cel))
hatterben(
mentesek.mentes, cel, elemek, self.jelzo.naplo.emit, self.jelzo.haladas.emit,
- kesz=lambda n: self._vege(f"Mentés kész: {n} elem, {cel}"),
- hiba=lambda u: self._vege(f"A mentés nem sikerült: {u}", False),
+ kesz=lambda n: self._vege(tr("Mentés kész: {0} elem, {1}", n, cel)),
+ hiba=lambda u: self._vege(tr("A mentés nem sikerült: {0}", u), False),
)
def _visszaallitas(self):
@@ -258,14 +262,17 @@ class Mentes(QWidget):
if not elemek or not self._rootot_kell(elemek):
return
if QMessageBox.question(
- self, "Visszaállítás", f"{len(elemek)} elem visszaállítása felülírja a meglévő fájlokat. Folytatod?"
+ self, tr("Visszaállítás"), tr(
+ "{0} elem visszaállítása felülírja a meglévő fájlokat. Folytatod?",
+ len(elemek),
+ )
) != QMessageBox.StandardButton.Yes:
return
- self._indul(f"Visszaállítás indul: {self.forras.text()}")
+ self._indul(tr("Visszaállítás indul: {0}", self.forras.text()))
hatterben(
mentesek.visszaallitas, self.forras.text(), elemek, self.jelzo.naplo.emit, self.jelzo.haladas.emit,
- kesz=lambda n: self._vege(f"Visszaállítás kész: {n} elem."),
- hiba=lambda u: self._vege(f"A visszaállítás nem sikerült: {u}", False),
+ kesz=lambda n: self._vege(tr("Visszaállítás kész: {0} elem.", n)),
+ hiba=lambda u: self._vege(tr("A visszaállítás nem sikerült: {0}", u), False),
)
def _indul(self, szoveg):
@@ -277,7 +284,7 @@ class Mentes(QWidget):
def _vege(self, szoveg, rendben=True):
self.fut = False
self._gombok()
- self.naplo.appendPlainText(szoveg if rendben else f"[HIBA] {szoveg}")
+ self.naplo.appendPlainText(szoveg if rendben else tr("[HIBA] {0}", szoveg))
FUL = Mentes
diff --git a/raveos-center/raveos_center/oldalak/rendszer/secureboot.py b/raveos-center/raveos_center/oldalak/rendszer/secureboot.py
index 00ca444..179177f 100644
--- a/raveos-center/raveos_center/oldalak/rendszer/secureboot.py
+++ b/raveos-center/raveos_center/oldalak/rendszer/secureboot.py
@@ -5,6 +5,7 @@ from PyQt6.QtWidgets import QHBoxLayout, QMessageBox, QPlainTextEdit, QVBoxLayou
from raveos_center import muveletek
from raveos_center.elemek import Kartya, Racs, cimke, gomb
+from raveos_center.forditas import tr
from raveos_center.hatter import ervenytelenit, gyorsitott, tarolt
AZON = "secureboot"
@@ -14,11 +15,11 @@ SZKRIPT = "raveos-secureboot-setup"
UJRAINDITAS_KELL = 10
LEPESEK_SZOVEG = [
- "telepíti a szükséges eszközöket (sbsigntools, efitools),",
- "létrehoz egy saját, csak ehhez a géphez tartozó aláíró kulcsot,",
- "aláírja a rendszerbetöltőt, a kernelt és a külső kernelmodulokat (pl. NVIDIA),",
- "beírja a firmware-be a RaveOS, a Microsoft és a saját géped kulcsát, így a Windows is tovább indul,",
- "beállít egy automatikus aláírást, ami minden kernelfrissítés után újra aláír.",
+ tr("telepíti a szükséges eszközöket (sbsigntools, efitools),"),
+ tr("létrehoz egy saját, csak ehhez a géphez tartozó aláíró kulcsot,"),
+ tr("aláírja a rendszerbetöltőt, a kernelt és a külső kernelmodulokat (pl. NVIDIA),"),
+ tr("beírja a firmware-be a RaveOS, a Microsoft és a saját géped kulcsát, így a Windows is tovább indul,"),
+ tr("beállít egy automatikus aláírást, ami minden kernelfrissítés után újra aláír."),
]
@@ -45,9 +46,9 @@ class SecureBoot(QWidget):
doboz.setSpacing(16)
doboz.addWidget(
cimke(
- "A Secure Boot csak aláírt rendszerbetöltőt és kernelt enged elindulni. Akkor hasznos, ha a gépen "
- "Windows is van, és ott olyan játék vagy program fut, ami bekapcsolt Secure Bootot kér (például egyes "
- "csalásvédelmek vagy a Windows 11). A beállítás után a RaveOS és a Windows is elindul.",
+ tr("A Secure Boot csak aláírt rendszerbetöltőt és kernelt enged elindulni. Akkor hasznos, ha a gépen "
+ "Windows is van, és ott olyan játék vagy program fut, ami bekapcsolt Secure Bootot kér (például egyes "
+ "csalásvédelmek vagy a Windows 11). A beállítás után a RaveOS és a Windows is elindul."),
"masodlagos",
True,
)
@@ -63,8 +64,8 @@ class SecureBoot(QWidget):
for kulcs, nev in (
("secureboot", "Secure Boot"),
("setupmode", "Setup Mode"),
- ("keys", "Gépkulcs"),
- ("signed", "Aláírások"),
+ ("keys", tr("Gépkulcs")),
+ ("signed", tr("Aláírások")),
):
k = Kartya(nev, terkoz=6, margo=14)
ertek = cimke("...", "nagyszam")
@@ -77,16 +78,16 @@ class SecureBoot(QWidget):
bal.addWidget(self.figyelem)
bal.addWidget(
cimke(
- "FIGYELEM, BITLOCKER: ha a gépen Windows is van BitLockerrel, a beállítás előtt a Windowsban függeszd "
- "fel a BitLockert (manage-bde -protectors -disable C: -rebootcount 2), vagy legyen kéznél a 48 jegyű "
- "helyreállítási kulcs. Enélkül a Windows a következő indításkor ezt a kulcsot fogja kérni.",
+ tr("FIGYELEM, BITLOCKER: ha a gépen Windows is van BitLockerrel, a beállítás előtt a Windowsban függeszd "
+ "fel a BitLockert (manage-bde -protectors -disable C: -rebootcount 2), vagy legyen kéznél a 48 jegyű "
+ "helyreállítási kulcs. Enélkül a Windows a következő indításkor ezt a kulcsot fogja kérni."),
"figyelem",
True,
)
)
- leiras = Kartya("A beállítás lépései", terkoz=6)
- leiras.elrendezes.addWidget(cimke("A Beállítás gomb egymás után:", "masodlagos"))
+ leiras = Kartya(tr("A beállítás lépései"), terkoz=6)
+ leiras.elrendezes.addWidget(cimke(tr("A Beállítás gomb egymás után:"), "masodlagos"))
for i, szoveg in enumerate(LEPESEK_SZOVEG, 1):
sor = QHBoxLayout()
sor.setSpacing(10)
@@ -98,9 +99,9 @@ class SecureBoot(QWidget):
leiras.elrendezes.addSpacing(6)
leiras.elrendezes.addWidget(
cimke(
- "Ehhez a firmware-nek Setup Mode-ban kell lennie: a BIOS/UEFI beállításokban töröld a Secure Boot "
- "kulcsokat (Clear Secure Boot keys / Reset to Setup Mode). Ha nincs Setup Mode-ban, a Center szól, "
- "és újraindítás után a beállítás magától folytatódik.",
+ tr("Ehhez a firmware-nek Setup Mode-ban kell lennie: a BIOS/UEFI beállításokban töröld a Secure Boot "
+ "kulcsokat (Clear Secure Boot keys / Reset to Setup Mode). Ha nincs Setup Mode-ban, a Center szól, "
+ "és újraindítás után a beállítás magától folytatódik."),
"halvany",
True,
)
@@ -115,12 +116,12 @@ class SecureBoot(QWidget):
gombok = QHBoxLayout()
gombok.setSpacing(8)
- self.frissit_gomb = gomb("Állapot frissítése")
+ self.frissit_gomb = gomb(tr("Állapot frissítése"))
self.frissit_gomb.clicked.connect(self.frissit)
- self.ujra_gomb = gomb("Újra aláírás")
- self.ujra_gomb.setToolTip("Ha a gépkulcs már megvan, csak újra aláírja a rendszerbetöltőt, a kernelt és a modulokat.")
- self.ujra_gomb.clicked.connect(lambda: self._futtat("resign", "Újra aláírás"))
- self.beallit_gomb = gomb("Beállítás", fo=True)
+ self.ujra_gomb = gomb(tr("Újra aláírás"))
+ self.ujra_gomb.setToolTip(tr("Ha a gépkulcs már megvan, csak újra aláírja a rendszerbetöltőt, a kernelt és a modulokat."))
+ self.ujra_gomb.clicked.connect(lambda: self._futtat("resign", tr("Újra aláírás")))
+ self.beallit_gomb = gomb(tr("Beállítás"), fo=True)
self.beallit_gomb.clicked.connect(self._beallit)
gombok.addWidget(self.frissit_gomb)
gombok.addStretch(1)
@@ -128,7 +129,7 @@ class SecureBoot(QWidget):
gombok.addWidget(self.beallit_gomb)
bal.addLayout(gombok)
- bal.addWidget(cimke("NAPLÓ", "h2"))
+ bal.addWidget(cimke(tr("NAPLÓ"), "h2"))
self.naplo = QPlainTextEdit()
self.naplo.setObjectName("naplo")
self.naplo.setReadOnly(True)
@@ -153,7 +154,7 @@ class SecureBoot(QWidget):
e.setText("...")
gyorsitott(
"secureboot", allapot_lekerdez, kesz=self._allapot,
- hiba=lambda u: self._hiba(f"Az állapot nem olvasható: {u}"), kor=60,
+ hiba=lambda u: self._hiba(tr("Az állapot nem olvasható: {0}", u)), kor=60,
)
def _hiba(self, szoveg):
@@ -166,23 +167,23 @@ class SecureBoot(QWidget):
if adat is None:
for e in self.ertekek.values():
e.setText("-")
- self._hiba("A Secure Boot beállító (raveos-secureboot-setup) nincs telepítve.")
+ self._hiba(tr("A Secure Boot beállító (raveos-secureboot-setup) nincs telepítve."))
self._gombok(False)
return
if adat.get("uefi") == "0":
for e in self.ertekek.values():
e.setText("-")
- self._hiba("Ez a gép nem UEFI módban indult, ezért a Secure Boot nem érhető el.")
+ self._hiba(tr("Ez a gép nem UEFI módban indult, ezért a Secure Boot nem érhető el."))
self._gombok(False)
return
def ki(ertek, igen, nem):
return igen if ertek == "1" else nem if ertek == "0" else "?"
- self._beir("secureboot", ki(adat.get("secureboot"), "BE", "KI"), adat.get("secureboot") == "1")
- self._beir("setupmode", ki(adat.get("setupmode"), "IGEN", "NEM"), adat.get("setupmode") == "1")
- self._beir("keys", ki(adat.get("keys"), "MEGVAN", "NINCS"), adat.get("keys") == "1")
- self._beir("signed", ki(adat.get("signed"), "RENDBEN", "HIÁNYZIK"), adat.get("signed") == "1")
+ self._beir("secureboot", ki(adat.get("secureboot"), tr("BE"), tr("KI")), adat.get("secureboot") == "1")
+ self._beir("setupmode", ki(adat.get("setupmode"), tr("IGEN"), tr("NEM")), adat.get("setupmode") == "1")
+ self._beir("keys", ki(adat.get("keys"), tr("MEGVAN"), tr("NINCS")), adat.get("keys") == "1")
+ self._beir("signed", ki(adat.get("signed"), tr("RENDBEN"), tr("HIÁNYZIK")), adat.get("signed") == "1")
if adat.get("pending") == "1":
- self._hiba("A beállítás félbemaradt, és a következő újraindításkor magától folytatódik.")
+ self._hiba(tr("A beállítás félbemaradt, és a következő újraindításkor magától folytatódik."))
self._gombok(True)
def _beir(self, kulcs, szoveg, zold):
@@ -202,14 +203,14 @@ class SecureBoot(QWidget):
def _beallit(self):
valasz = QMessageBox.question(
self,
- "Secure Boot beállítása",
- "A beállítás kulcsokat ír a firmware-be, és aláírja a rendszerbetöltőt és a kernelt. "
- "Ha Windows is van a gépen BitLockerrel, előtte függeszd fel a BitLockert.\n\nFolytatod?",
+ tr("Secure Boot beállítása"),
+ tr("A beállítás kulcsokat ír a firmware-be, és aláírja a rendszerbetöltőt és a kernelt. "
+ "Ha Windows is van a gépen BitLockerrel, előtte függeszd fel a BitLockert.\n\nFolytatod?"),
QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No,
QMessageBox.StandardButton.No,
)
if valasz == QMessageBox.StandardButton.Yes:
- self._futtat("setup", "Secure Boot beállítása")
+ self._futtat("setup", tr("Secure Boot beállítása"))
def _futtat(self, mod, cimke_szoveg):
self.naplo.clear()
@@ -220,14 +221,14 @@ class SecureBoot(QWidget):
doboz = QMessageBox(self)
doboz.setWindowTitle(cim)
doboz.setText(szoveg)
- most = doboz.addButton("Újraindítás a BIOS-ba", QMessageBox.ButtonRole.AcceptRole)
- doboz.addButton("Később", QMessageBox.ButtonRole.RejectRole)
+ most = doboz.addButton(tr("Újraindítás a BIOS-ba"), QMessageBox.ButtonRole.AcceptRole)
+ doboz.addButton(tr("Később"), QMessageBox.ButtonRole.RejectRole)
doboz.exec()
if doboz.clickedButton() is most:
muveletek.Futtato(self).indit(
[
muveletek.Lepes(
- "Újraindítás a firmware beállításaiba",
+ tr("Újraindítás a firmware beállításaiba"),
["bash", "-c", "systemctl reboot --firmware-setup || systemctl reboot"],
)
]
@@ -238,18 +239,18 @@ class SecureBoot(QWidget):
if rendben:
self._bios_ujrainditas(
"Secure Boot",
- "Az aláírások és a kulcsok készen vannak.\n\nA BIOS-ban állítsd a Secure Bootot Enabled-re, "
- "majd mentsd el a beállítást és indítsd újra a gépet.",
+ tr("Az aláírások és a kulcsok készen vannak.\n\nA BIOS-ban állítsd a Secure Bootot Enabled-re, "
+ "majd mentsd el a beállítást és indítsd újra a gépet."),
)
elif kod == UJRAINDITAS_KELL:
self._bios_ujrainditas(
- "Újraindítás szükséges",
- "A firmware nincs Setup Mode-ban.\n\nA BIOS-ban a Secure Boot menüben töröld a kulcsokat "
- "(Key Management, Clear Secure Boot keys), így a gép Setup Mode-ba kerül. Mentés után indítsd újra "
- "a gépet: a beállítás indítás után magától befejeződik.",
+ tr("Újraindítás szükséges"),
+ tr("A firmware nincs Setup Mode-ban.\n\nA BIOS-ban a Secure Boot menüben töröld a kulcsokat "
+ "(Key Management, Clear Secure Boot keys), így a gép Setup Mode-ba kerül. Mentés után indítsd újra "
+ "a gépet: a beállítás indítás után magától befejeződik."),
)
else:
- QMessageBox.warning(self, "Secure Boot", "A művelet nem sikerült. A részleteket a napló mutatja.")
+ QMessageBox.warning(self, "Secure Boot", tr("A művelet nem sikerült. A részleteket a napló mutatja."))
self.frissit()
diff --git a/raveos-center/raveos_center/oldalak/rendszer/snapshotok.py b/raveos-center/raveos_center/oldalak/rendszer/snapshotok.py
index 8d9b08c..8a17ea0 100644
--- a/raveos-center/raveos_center/oldalak/rendszer/snapshotok.py
+++ b/raveos-center/raveos_center/oldalak/rendszer/snapshotok.py
@@ -4,10 +4,11 @@ from PyQt6.QtWidgets import QHBoxLayout, QInputDialog, QLineEdit, QMessageBox, Q
from raveos_center import muveletek, snapshotok
from raveos_center.elemek import Kartya, cimke, gomb
from raveos_center.folyamat import FolyamatAblak
+from raveos_center.forditas import tr
from raveos_center.hatter import ervenytelenit, gyorsitott, tarolt
AZON = "snapshotok"
-CIM = "Snapshotok"
+CIM = tr("Snapshotok")
class SnapshotSor(QWidget):
@@ -28,11 +29,11 @@ class SnapshotSor(QWidget):
szovegek.addWidget(cimke(f"#{elem['szam']} {elem['tipus_nev']}", "monohalvany"))
sor.addLayout(szovegek, 1)
helper = muveletek.helper_elerheto()
- vissza = gomb("Visszaállítás", kicsi=True)
+ vissza = gomb(tr("Visszaállítás"), kicsi=True)
vissza.setEnabled(helper)
vissza.clicked.connect(lambda: visszaallit(elem))
sor.addWidget(vissza, 0, Qt.AlignmentFlag.AlignVCenter)
- torles = gomb("Törlés", kicsi=True)
+ torles = gomb(tr("Törlés"), kicsi=True)
torles.setEnabled(helper)
torles.clicked.connect(lambda: torol(elem))
sor.addWidget(torles, 0, Qt.AlignmentFlag.AlignVCenter)
@@ -49,13 +50,13 @@ class Snapshotok(QWidget):
fej = QHBoxLayout()
fej.setSpacing(16)
self.leiras = cimke(
- "A btrfs snapshot a rendszer egy pillanatnyi állapota. Ha egy frissítés után gond van, egy korábbi "
- "állapotra vissza tudsz állni. A saját fájljaidat (/home) a visszaállítás nem érinti.",
+ tr("A btrfs snapshot a rendszer egy pillanatnyi állapota. Ha egy frissítés után gond van, egy korábbi "
+ "állapotra vissza tudsz állni. A saját fájljaidat (/home) a visszaállítás nem érinti."),
"masodlagos",
True,
)
fej.addWidget(self.leiras, 1)
- self.uj_gomb = gomb("Új snapshot", fo=True)
+ self.uj_gomb = gomb(tr("Új snapshot"), fo=True)
self.uj_gomb.clicked.connect(self.uj)
fej.addWidget(self.uj_gomb, 0, Qt.AlignmentFlag.AlignTop)
doboz.addLayout(fej)
@@ -65,7 +66,7 @@ class Snapshotok(QWidget):
self.figyelem = cimke("", "figyelem", True)
self.figyelem.hide()
doboz.addWidget(self.figyelem)
- self.beallitas_gomb = gomb("Snapper beállítása", fo=True)
+ self.beallitas_gomb = gomb(tr("Snapper beállítása"), fo=True)
self.beallitas_gomb.clicked.connect(self._beallitas)
self.beallitas_gomb.hide()
gs = QHBoxLayout()
@@ -79,7 +80,7 @@ class Snapshotok(QWidget):
def megjelenik(self, *args):
if tarolt("snapshotok") is None:
self.uj_gomb.setEnabled(False)
- self._info("Betöltés...")
+ self._info(tr("Betöltés..."))
gyorsitott("snapshotok", snapshotok.allapot, kesz=self._kesz, hiba=self._hiba, kor=30)
if args and args[0] == "uj":
self.uj()
@@ -89,7 +90,7 @@ class Snapshotok(QWidget):
gyorsitott("snapshotok", snapshotok.allapot, kesz=self._kesz, hiba=self._hiba)
def _hiba(self, uzenet):
- self._figyelmeztet(f"A snapshotok nem olvashatók: {uzenet}")
+ self._figyelmeztet(tr("A snapshotok nem olvashatók: {0}", uzenet))
def _info(self, szoveg):
self.info.setText(szoveg)
@@ -111,35 +112,38 @@ class Snapshotok(QWidget):
if adat["fajlrendszer"] != "btrfs":
self._info("")
self._figyelmeztet(
- f"Snapshothoz btrfs fájlrendszer kell. Ez a gép {adat['fajlrendszer'] or 'ismeretlen'} fájlrendszert "
- "használ, ezért itt nem érhető el. A RaveOS telepítésekor a lemez partícionálásánál ext4 és btrfs "
- "közül lehet választani: ha snapshotot szeretnél, a btrfs-t válaszd."
+ tr(
+ "Snapshothoz btrfs fájlrendszer kell. Ez a gép {0} fájlrendszert használ, ezért itt nem érhető "
+ "el. A RaveOS telepítésekor a lemez partícionálásánál ext4 és btrfs közül lehet választani: ha "
+ "snapshotot szeretnél, a btrfs-t válaszd.",
+ adat['fajlrendszer'] or tr('ismeretlen'),
+ )
)
return
if not adat["snapper"]:
self._info("")
if snapshotok.snapper_telepitheto(adat):
self._figyelmeztet(
- "A gép btrfs-t használ, de a snapper még nincs beállítva. Egy kattintással beállítható: "
- "utána minden csomagművelet előtt automatikusan snapshot készül."
+ tr("A gép btrfs-t használ, de a snapper még nincs beállítva. Egy kattintással beállítható: "
+ "utána minden csomagművelet előtt automatikusan snapshot készül.")
)
else:
self._figyelmeztet(
- "A gép btrfs-t használ, de az alvolumen-elrendezése eltér a RaveOS-étól (@ és @snapshots), "
- "ezért a snapper itt nem állítható be automatikusan."
+ tr("A gép btrfs-t használ, de az alvolumen-elrendezése eltér a RaveOS-étól (@ és @snapshots), "
+ "ezért a snapper itt nem állítható be automatikusan.")
)
return
if adat["alvolumen"] != "/@":
- self._figyelmeztet("A rendszer most nem a fő alvolumenről (@) fut, ezért visszaállítás nem indítható.")
+ self._figyelmeztet(tr("A rendszer most nem a fő alvolumenről (@) fut, ezért visszaállítás nem indítható."))
elif adat["hiba"]:
self._figyelmeztet(adat["hiba"])
elif not helper:
- self._figyelmeztet("A RaveOS Center rendszerhelpere nincs telepítve, ezért snapshot nem kezelhető.")
+ self._figyelmeztet(tr("A RaveOS Center rendszerhelpere nincs telepítve, ezért snapshot nem kezelhető."))
else:
self._figyelmeztet("")
self._info(
- ("Automatikus snapshot minden csomagművelet előtt és után (snap-pac). " if adat["snap_pac"] else "")
- + f"{len(adat['lista'])} snapshot, a régiek automatikusan törlődnek."
+ (tr("Automatikus snapshot minden csomagművelet előtt és után (snap-pac). ") if adat["snap_pac"] else "")
+ + tr("{0} snapshot, a régiek automatikusan törlődnek.", len(adat['lista']))
)
self._lista(adat)
@@ -150,7 +154,7 @@ class Snapshotok(QWidget):
if w:
w.deleteLater()
if not adat["lista"]:
- ures = cimke("Még nincs snapshot.", "halvany")
+ ures = cimke(tr("Még nincs snapshot."), "halvany")
ures.setContentsMargins(16, 16, 16, 16)
elrendezes.addWidget(ures)
return
@@ -167,25 +171,30 @@ class Snapshotok(QWidget):
if not self.adat or not self.uj_gomb.isEnabled():
return
leiras, ok = QInputDialog.getText(
- self, "Új snapshot", "Leírás (például: Driver csere előtt):", QLineEdit.EchoMode.Normal, "Kézi snapshot"
+ self, tr("Új snapshot"), tr("Leírás (például: Driver csere előtt):"), QLineEdit.EchoMode.Normal, tr("Kézi snapshot")
)
leiras = leiras.strip()
if not ok:
return
if not snapshotok.ervenyes_leiras(leiras):
- QMessageBox.warning(self, "Új snapshot", "A leírás 1-80 karakter lehet: betűk, számok, szóköz és . _ : , ( ) -")
+ QMessageBox.warning(self, tr("Új snapshot"), tr("A leírás 1-80 karakter lehet: betűk, számok, szóköz és . _ : , ( ) -"))
return
- self._futtat("Új snapshot", muveletek.Lepes("Snapshot készítése", muveletek.root("snapshot", leiras)), "A snapshot elkészült.")
+ self._futtat(tr("Új snapshot"), muveletek.Lepes(tr("Snapshot készítése"), muveletek.root("snapshot", leiras)), tr("A snapshot elkészült."))
def torol(self, elem):
if QMessageBox.question(
- self, "Snapshot törlése", f"Törlöd a(z) #{elem['szam']} snapshotot?\n{elem['datum']} {elem['leiras']}"
+ self, tr("Snapshot törlése"), tr(
+ "Törlöd a(z) #{0} snapshotot?\n{1} {2}",
+ elem['szam'],
+ elem['datum'],
+ elem['leiras'],
+ )
) != QMessageBox.StandardButton.Yes:
return
self._futtat(
- "Snapshot törlése",
- muveletek.Lepes("Snapshot törlése", muveletek.root("snapshot-torles", str(elem["szam"]))),
- "A snapshot törölve.",
+ tr("Snapshot törlése"),
+ muveletek.Lepes(tr("Snapshot törlése"), muveletek.root("snapshot-torles", str(elem["szam"]))),
+ tr("A snapshot törölve."),
)
def visszaallit(self, elem):
@@ -196,41 +205,48 @@ class Snapshotok(QWidget):
if hianyzo:
QMessageBox.warning(
self,
- "Visszaállítás",
- "Ennek a snapshotnak a kernelcsomagja már nincs meg a csomag-cache-ben "
- f"({', '.join(k['nev'] + ' ' + k['regi'] for k in hianyzo)}), ezért a visszaállított rendszer nem "
- "indulna el. Válassz újabb snapshotot.",
+ tr("Visszaállítás"),
+ tr(
+ "Ennek a snapshotnak a kernelcsomagja már nincs meg a csomag-cache-ben ({0}), ezért a "
+ "visszaállított rendszer nem indulna el. Válassz újabb snapshotot.",
+ ', '.join(k['nev'] + ' ' + k['regi'] for k in hianyzo),
+ ),
)
return
- kernel_szoveg = "".join(f"\n- {k['nev']}: {k['most'] or 'nincs'} -> {k['regi']}" for k in kernelek)
+ kernel_szoveg = "".join(f"\n- {k['nev']}: {k['most'] or tr('nincs')} -> {k['regi']}" for k in kernelek)
szoveg = (
- f"A rendszer visszaáll erre az állapotra:\n#{elem['szam']} {elem['datum']} {elem['leiras']}\n\n"
- "A saját fájljaid (/home) nem változnak. A mostani rendszer a következő visszaállításig megmarad "
- "tartalékként. A változás újraindítás után lép életbe."
- + (f"\n\nA kernel is visszaáll:{kernel_szoveg}" if kernelek else "")
- + ("" if ellenorizheto else "\n\nA snapshot kernelverziója innen nem olvasható, a visszaállítás előtt a rendszer "
- "ellenőrzi, és ha a kernelcsomag hiányzik, nem végzi el.")
+ tr(
+ "A rendszer visszaáll erre az állapotra:\n#{0} {1} {2}\n\nA saját fájljaid (/home) nem "
+ "változnak. A mostani rendszer a következő visszaállításig megmarad tartalékként. A változás "
+ "újraindítás után lép életbe.",
+ elem['szam'],
+ elem['datum'],
+ elem['leiras'],
+ )
+ + (tr("\n\nA kernel is visszaáll:{0}", kernel_szoveg) if kernelek else "")
+ + ("" if ellenorizheto else tr("\n\nA snapshot kernelverziója innen nem olvasható, a visszaállítás előtt a rendszer "
+ "ellenőrzi, és ha a kernelcsomag hiányzik, nem végzi el."))
+ "\n\nFolytatod?"
)
- if QMessageBox.question(self, "Visszaállítás", szoveg) != QMessageBox.StandardButton.Yes:
+ if QMessageBox.question(self, tr("Visszaállítás"), szoveg) != QMessageBox.StandardButton.Yes:
return
rendben = self._futtat(
- "Visszaállítás",
- muveletek.Lepes("Snapshot visszaállítása", muveletek.root("snapshot-visszaallit", str(elem["szam"]))),
- "A visszaállítás elkészült. Indítsd újra a gépet.",
+ tr("Visszaállítás"),
+ muveletek.Lepes(tr("Snapshot visszaállítása"), muveletek.root("snapshot-visszaallit", str(elem["szam"]))),
+ tr("A visszaállítás elkészült. Indítsd újra a gépet."),
)
if not rendben:
return
doboz = QMessageBox(self)
- doboz.setWindowTitle("Visszaállítás")
+ doboz.setWindowTitle(tr("Visszaállítás"))
doboz.setIcon(QMessageBox.Icon.Warning)
doboz.setText(
- "A visszaállítás újraindítás után lép életbe. Amit addig a gépen változtatsz (telepítés, beállítás, "
- "rendszerfájlok), az a tartalék rendszerbe kerül, és elvész. A /home-ban lévő fájljaid megmaradnak.\n\n"
- "Javasolt most újraindítani."
+ tr("A visszaállítás újraindítás után lép életbe. Amit addig a gépen változtatsz (telepítés, beállítás, "
+ "rendszerfájlok), az a tartalék rendszerbe kerül, és elvész. A /home-ban lévő fájljaid megmaradnak.\n\n"
+ "Javasolt most újraindítani.")
)
- most = doboz.addButton("Újraindítás most", QMessageBox.ButtonRole.AcceptRole)
- doboz.addButton("Később", QMessageBox.ButtonRole.RejectRole)
+ most = doboz.addButton(tr("Újraindítás most"), QMessageBox.ButtonRole.AcceptRole)
+ doboz.addButton(tr("Később"), QMessageBox.ButtonRole.RejectRole)
doboz.setDefaultButton(most)
doboz.exec()
if doboz.clickedButton() is most:
@@ -238,9 +254,9 @@ class Snapshotok(QWidget):
def _beallitas(self):
self._futtat(
- "Snapper beállítása",
- muveletek.Lepes("Snapper beállítása", muveletek.root("snapper-beallitas")),
- "A snapper beállítva, az első snapshot elkészült.",
+ tr("Snapper beállítása"),
+ muveletek.Lepes(tr("Snapper beállítása"), muveletek.root("snapper-beallitas")),
+ tr("A snapper beállítva, az első snapshot elkészült."),
)
diff --git a/raveos-center/raveos_center/oldalak/visszajelzes.py b/raveos-center/raveos_center/oldalak/visszajelzes.py
index 56664ab..fcfcbdd 100644
--- a/raveos-center/raveos_center/oldalak/visszajelzes.py
+++ b/raveos-center/raveos_center/oldalak/visszajelzes.py
@@ -18,25 +18,26 @@ from PyQt6.QtWidgets import (
from raveos_center import beallitasok, diagnosztika, jegyek_api
from raveos_center.elemek import Csillagok, Fulsor, Kartya, Oldal, Verem, cimke, gomb
+from raveos_center.forditas import NYELV, tr
from raveos_center.hatter import gyorsitott, hatterben
AZON = "visszajelzes"
-MENU = "Visszajelzés"
+MENU = tr("Visszajelzés")
IKON = "visszajelzes"
ALLAPOT = {
- "uj": ("Beküldve", ""),
- "folyamatban": ("Folyamatban", "sarga"),
- "tervezett": ("Tervezett", "sarga"),
- "megoldva": ("Megoldva", "zold"),
- "kesz": ("Elkészült", "zold"),
- "lezarva": ("Lezárva", ""),
- "elutasitva": ("Elutasítva", ""),
+ "uj": (tr("Beküldve"), ""),
+ "folyamatban": (tr("Folyamatban"), "sarga"),
+ "tervezett": (tr("Tervezett"), "sarga"),
+ "megoldva": (tr("Megoldva"), "zold"),
+ "kesz": (tr("Elkészült"), "zold"),
+ "lezarva": (tr("Lezárva"), ""),
+ "elutasitva": (tr("Elutasítva"), ""),
}
def ido(t):
- return datetime.fromtimestamp(t).strftime("%Y.%m.%d %H:%M")
+ return datetime.fromtimestamp(t).strftime(tr("%Y.%m.%d %H:%M"))
def allapotcimke(allapot):
@@ -61,11 +62,11 @@ class JegySor(QWidget):
doboz.setSpacing(6)
felso = QHBoxLayout()
felso.setSpacing(8)
- tipus = "HIBA" if jegy["tipus"] == "hiba" else "ÖTLET"
+ tipus = tr("HIBA") if jegy["tipus"] == "hiba" else tr("ÖTLET")
felso.addWidget(cimke(tipus, "monozold"))
felso.addStretch(1)
if jegy["uj_valasz"]:
- felso.addWidget(cimke("ÚJ VÁLASZ", "jelveny"))
+ felso.addWidget(cimke(tr("ÚJ VÁLASZ"), "jelveny"))
felso.addWidget(allapotcimke(jegy["allapot"]))
doboz.addLayout(felso)
cim = cimke(jegy["cim"])
@@ -88,7 +89,7 @@ class Uzenet(QWidget):
doboz = QVBoxLayout(self)
doboz.setContentsMargins(14, 12, 14, 12)
doboz.setSpacing(6)
- ki = "RaveOS csapat" if csapat else "Te"
+ ki = tr("RaveOS csapat") if csapat else tr("Te")
doboz.addWidget(cimke(f"{ki} · {ido(uzenet['ido'])}", "halvany"))
szoveg = cimke(uzenet["szoveg"], tordel=True)
szoveg.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse)
@@ -98,17 +99,17 @@ class Uzenet(QWidget):
class JelentesAblak(QDialog):
def __init__(self, szulo, szoveg):
super().__init__(szulo)
- self.setWindowTitle("A csatolt diagnosztika tartalma")
+ self.setWindowTitle(tr("A csatolt diagnosztika tartalma"))
self.resize(820, 600)
doboz = QVBoxLayout(self)
doboz.setContentsMargins(20, 20, 20, 20)
doboz.setSpacing(12)
- doboz.addWidget(cimke("Pontosan ez kerül feltöltésre, ha bejelölöd a csatolást:", "masodlagos"))
+ doboz.addWidget(cimke(tr("Pontosan ez kerül feltöltésre, ha bejelölöd a csatolást:"), "masodlagos"))
mezo = QPlainTextEdit(szoveg)
mezo.setReadOnly(True)
mezo.setObjectName("mono")
doboz.addWidget(mezo, 1)
- bezar = gomb("Bezárás", fo=True)
+ bezar = gomb(tr("Bezárás"), fo=True)
bezar.clicked.connect(self.accept)
doboz.addWidget(bezar, 0, Qt.AlignmentFlag.AlignRight)
@@ -125,36 +126,40 @@ class Urlap(QWidget):
doboz.addWidget(self.cim)
self.leiras = cimke("", "masodlagos", True)
doboz.addWidget(self.leiras)
- doboz.addWidget(cimke("Cím", "kartyacim"))
+ doboz.addWidget(cimke(tr("Cím"), "kartyacim"))
self.cim_mezo = QLineEdit()
self.cim_mezo.setMaxLength(120)
doboz.addWidget(self.cim_mezo)
- doboz.addWidget(cimke("Leírás", "kartyacim"))
+ doboz.addWidget(cimke(tr("Leírás"), "kartyacim"))
self.szoveg_mezo = QPlainTextEdit()
self.szoveg_mezo.setMinimumHeight(160)
doboz.addWidget(self.szoveg_mezo)
self.diag = Kartya(terkoz=8, margo=16)
- self.diag_jelolo = QCheckBox("Diagnosztika csatolása (ajánlott, segít megtalálni a hibát)")
+ self.diag_jelolo = QCheckBox(tr("Diagnosztika csatolása (ajánlott, segít megtalálni a hibát)"))
self.diag.elrendezes.addWidget(self.diag_jelolo)
lista = "\n".join(f" - {t}" for t in diagnosztika.TARTALOM)
self.diag.elrendezes.addWidget(
cimke(
- f"Ha bejelölöd, egy jelentést is csatolunk a gépedről:\n{lista}\n\n"
- f"Feltöltés előtt kitakarjuk: {diagnosztika.KITAKARAS}. Jelszó nem kerül bele. "
- "Titkosított kapcsolaton megy el, csak a RaveOS fejlesztői látják, és 30 nap után törlődik.",
+ tr(
+ "Ha bejelölöd, egy jelentést is csatolunk a gépedről:\n{0}\n\nFeltöltés előtt kitakarjuk: {1}. "
+ "Jelszó nem kerül bele. Titkosított kapcsolaton megy el, csak a RaveOS fejlesztői látják, és "
+ "30 nap után törlődik.",
+ lista,
+ diagnosztika.KITAKARAS,
+ ),
"halvany",
True,
)
)
- self.megnez = gomb("Megnézem, mi kerül bele", kicsi=True)
+ self.megnez = gomb(tr("Megnézem, mi kerül bele"), kicsi=True)
self.megnez.clicked.connect(self._megnez)
self.diag.elrendezes.addWidget(self.megnez, 0, Qt.AlignmentFlag.AlignLeft)
doboz.addWidget(self.diag)
doboz.addWidget(
cimke(
- "A jegyhez mindig csatoljuk a RaveOS-verziót, a kernelt, az asztali környezetet és a videokártya nevét.",
+ tr("A jegyhez mindig csatoljuk a RaveOS-verziót, a kernelt, az asztali környezetet és a videokártya nevét."),
"halvany",
True,
)
@@ -163,9 +168,9 @@ class Urlap(QWidget):
doboz.addWidget(self.hiba)
gombok = QHBoxLayout()
gombok.addStretch(1)
- self.megse = gomb("Mégse")
+ self.megse = gomb(tr("Mégse"))
self.megse.clicked.connect(self.oldal.urlap_bezar)
- self.kuld = gomb("Beküldés", fo=True)
+ self.kuld = gomb(tr("Beküldés"), fo=True)
self.kuld.clicked.connect(self._kuld)
gombok.addWidget(self.megse)
gombok.addWidget(self.kuld)
@@ -180,29 +185,29 @@ class Urlap(QWidget):
self.hiba.hide()
self.kuld.setEnabled(True)
if tipus == "hiba":
- self.cim.setText("ÚJ HIBAJEGY")
- self.leiras.setText("Írd le, mi történt, és mit csináltál előtte. Ha válaszolunk, itt fogod látni.")
- self.cim_mezo.setPlaceholderText("Például: Nem indul a Steam a frissítés után")
- self.szoveg_mezo.setPlaceholderText("Mi a hiba, mikor jelentkezik, mit próbáltál már?")
+ self.cim.setText(tr("ÚJ HIBAJEGY"))
+ self.leiras.setText(tr("Írd le, mi történt, és mit csináltál előtte. Ha válaszolunk, itt fogod látni."))
+ self.cim_mezo.setPlaceholderText(tr("Például: Nem indul a Steam a frissítés után"))
+ self.szoveg_mezo.setPlaceholderText(tr("Mi a hiba, mikor jelentkezik, mit próbáltál már?"))
self.diag.show()
else:
- self.cim.setText("ÚJ ÖTLET")
+ self.cim.setText(tr("ÚJ ÖTLET"))
self.leiras.setText(
- "Mi hiányzik a RaveOS-ből? Az ötleted a jóváhagyásunk után jelenik meg a közös listában, "
- "ahol mások is támogathatják."
+ tr("Mi hiányzik a RaveOS-ből? Az ötleted a jóváhagyásunk után jelenik meg a közös listában, "
+ "ahol mások is támogathatják.")
)
- self.cim_mezo.setPlaceholderText("Például: Sötét és világos téma váltó")
- self.szoveg_mezo.setPlaceholderText("Mit szeretnél, és miért lenne hasznos?")
+ self.cim_mezo.setPlaceholderText(tr("Például: Sötét és világos téma váltó"))
+ self.szoveg_mezo.setPlaceholderText(tr("Mit szeretnél, és miért lenne hasznos?"))
self.diag.hide()
self.cim_mezo.setFocus()
def _megnez(self):
self.megnez.setEnabled(False)
- self.megnez.setText("Összeállítás...")
+ self.megnez.setText(tr("Összeállítás..."))
def kesz(szoveg):
self.megnez.setEnabled(True)
- self.megnez.setText("Megnézem, mi kerül bele")
+ self.megnez.setText(tr("Megnézem, mi kerül bele"))
JelentesAblak(self, szoveg).exec()
hatterben(diagnosztika.jelentes, kesz=kesz)
@@ -211,12 +216,12 @@ class Urlap(QWidget):
cim = self.cim_mezo.text().strip()
szoveg = self.szoveg_mezo.toPlainText().strip()
if len(cim) < 3 or len(szoveg) < 10:
- self.hiba.setText("Adj meg egy legalább 3 karakteres címet és egy legalább 10 karakteres leírást.")
+ self.hiba.setText(tr("Adj meg egy legalább 3 karakteres címet és egy legalább 10 karakteres leírást."))
self.hiba.show()
return
self.hiba.hide()
self.kuld.setEnabled(False)
- self.kuld.setText("Küldés...")
+ self.kuld.setText(tr("Küldés..."))
csatol = self.tipus == "hiba" and self.diag_jelolo.isChecked()
tipus = self.tipus
@@ -227,13 +232,13 @@ class Urlap(QWidget):
hatterben(munka, kesz=self._kuldve, hiba=self._kuldes_hiba)
def _kuldve(self, jegy):
- self.kuld.setText("Beküldés")
+ self.kuld.setText(tr("Beküldés"))
self.oldal.bekuldve(jegy)
def _kuldes_hiba(self, uzenet):
self.kuld.setEnabled(True)
- self.kuld.setText("Beküldés")
- self.hiba.setText(jegyek_api.HIBAUZENETEK.get(uzenet, f"A beküldés nem sikerült: {uzenet}"))
+ self.kuld.setText(tr("Beküldés"))
+ self.hiba.setText(jegyek_api.HIBAUZENETEK.get(uzenet, tr("A beküldés nem sikerült: {0}", uzenet)))
self.hiba.show()
@@ -266,14 +271,14 @@ class Reszletek(QWidget):
vd.setContentsMargins(0, 0, 0, 0)
vd.setSpacing(8)
self.valasz_mezo = QPlainTextEdit()
- self.valasz_mezo.setPlaceholderText("Válasz a RaveOS csapatnak")
+ self.valasz_mezo.setPlaceholderText(tr("Válasz a RaveOS csapatnak"))
self.valasz_mezo.setFixedHeight(96)
vd.addWidget(self.valasz_mezo)
self.hiba = uzenetsav("")
vd.addWidget(self.hiba)
sor = QHBoxLayout()
sor.addStretch(1)
- self.kuld = gomb("Válasz küldése", fo=True)
+ self.kuld = gomb(tr("Válasz küldése"), fo=True)
self.kuld.clicked.connect(self._kuld)
sor.addWidget(self.kuld)
vd.addLayout(sor)
@@ -286,16 +291,19 @@ class Reszletek(QWidget):
w = self.meta.takeAt(0).widget()
if w:
w.deleteLater()
- self.meta.addWidget(cimke("HIBAJEGY" if jegy["tipus"] == "hiba" else "ÖTLET", "monozold"))
+ self.meta.addWidget(cimke(tr("HIBAJEGY") if jegy["tipus"] == "hiba" else tr("ÖTLET"), "monozold"))
self.meta.addWidget(allapotcimke(jegy["allapot"]))
self.meta.addWidget(cimke(f"#{jegy['id']} · {ido(jegy['letrehozva'])}", "halvany"))
if jegy["tipus"] == "otlet":
- self.meta.addWidget(cimke("nyilvános" if jegy["nyilvanos"] else "jóváhagyásra vár", "halvany"))
+ self.meta.addWidget(cimke(tr("nyilvános") if jegy["nyilvanos"] else tr("jóváhagyásra vár"), "halvany"))
self.meta.addStretch(1)
if jegy.get("torles"):
self.lezart.setText(
- f"Ez a jegy le van zárva, és {ido(jegy['torles'])} után automatikusan törlődik. "
- "Ha a hiba újra jelentkezik, nyiss új jegyet."
+ tr(
+ "Ez a jegy le van zárva, és {0} után automatikusan törlődik. Ha a hiba újra jelentkezik, nyiss "
+ "új jegyet.",
+ ido(jegy['torles']),
+ )
)
self.lezart.show()
self.valasz_doboz.hide()
@@ -333,14 +341,14 @@ class Reszletek(QWidget):
if uzenet == "nincs_jegy":
self.oldal.jegy_eltunt()
return
- self.hiba.setText(jegyek_api.HIBAUZENETEK.get(uzenet, f"A küldés nem sikerült: {uzenet}"))
+ self.hiba.setText(jegyek_api.HIBAUZENETEK.get(uzenet, tr("A küldés nem sikerült: {0}", uzenet)))
self.hiba.show()
hatterben(munka, kesz=kesz, hiba=hiba)
class ErtekelesLap(QWidget):
- SZINTEK = {1: "Nagyon rossz", 2: "Rossz", 3: "Elmegy", 4: "Jó", 5: "Kiváló"}
+ SZINTEK = {1: tr("Nagyon rossz"), 2: tr("Rossz"), 3: tr("Elmegy"), 4: tr("Jó"), 5: tr("Kiváló")}
MAX = 500
def __init__(self, oldal):
@@ -353,7 +361,7 @@ class ErtekelesLap(QWidget):
doboz.setContentsMargins(0, 0, 12, 0)
doboz.setSpacing(16)
- osszesito = Kartya("A RaveOS értékelése", terkoz=8, margo=20)
+ osszesito = Kartya(tr("A RaveOS értékelése"), terkoz=8, margo=20)
sor = QHBoxLayout()
sor.setSpacing(16)
self.atlag = cimke("-", "nagyszam")
@@ -369,18 +377,18 @@ class ErtekelesLap(QWidget):
osszesito.elrendezes.addLayout(sor)
doboz.addWidget(osszesito)
- sajat = Kartya("A te értékelésed", terkoz=10, margo=20)
+ sajat = Kartya(tr("A te értékelésed"), terkoz=10, margo=20)
valaszto = QHBoxLayout()
valaszto.setSpacing(14)
self.csillagok = Csillagok(34, valaszthato=True)
self.csillagok.valasztva.connect(self._valasztva)
valaszto.addWidget(self.csillagok)
- self.szint = cimke("Kattints a csillagokra", "masodlagos")
+ self.szint = cimke(tr("Kattints a csillagokra"), "masodlagos")
valaszto.addWidget(self.szint)
valaszto.addStretch(1)
sajat.elrendezes.addLayout(valaszto)
self.szoveg = QPlainTextEdit()
- self.szoveg.setPlaceholderText("Röviden: mi tetszik, mi nem? (nem kötelező)")
+ self.szoveg.setPlaceholderText(tr("Röviden: mi tetszik, mi nem? (nem kötelező)"))
self.szoveg.setFixedHeight(96)
self.szoveg.textChanged.connect(self._szoveg_valtozott)
sajat.elrendezes.addWidget(self.szoveg)
@@ -388,8 +396,8 @@ class ErtekelesLap(QWidget):
sajat.elrendezes.addWidget(self.szamlalo, 0, Qt.AlignmentFlag.AlignRight)
sajat.elrendezes.addWidget(
cimke(
- "A szöveges véleményt csak a RaveOS fejlesztői látják, nyilvánosan csak a csillagok átlaga jelenik meg. "
- "Gépenként egy értékelés számít, bármikor módosíthatod.",
+ tr("A szöveges véleményt csak a RaveOS fejlesztői látják, nyilvánosan csak a csillagok átlaga jelenik meg. "
+ "Gépenként egy értékelés számít, bármikor módosíthatod."),
"halvany",
True,
)
@@ -400,7 +408,7 @@ class ErtekelesLap(QWidget):
self.allapot = cimke("", "monozold")
gombok.addWidget(self.allapot)
gombok.addStretch(1)
- self.kuld = gomb("Értékelés küldése", fo=True)
+ self.kuld = gomb(tr("Értékelés küldése"), fo=True)
self.kuld.setEnabled(False)
self.kuld.clicked.connect(self._kuld)
gombok.addWidget(self.kuld)
@@ -409,19 +417,20 @@ class ErtekelesLap(QWidget):
doboz.addStretch(1)
def betolt(self, adat):
- self.atlag.setText(f"{adat['atlag']:.1f}".replace(".", ",") if adat["darab"] else "-")
+ atlag = f"{adat['atlag']:.1f}"
+ self.atlag.setText((atlag if NYELV == "en" else atlag.replace(".", ",")) if adat["darab"] else "-")
self.atlag_csillag.beallit(adat["atlag"])
self.darab.setText(
- f"{adat['darab']} értékelés alapján" if adat["darab"] else "Még nincs értékelés. Legyél te az első!"
+ tr("{0} értékelés alapján", adat['darab']) if adat["darab"] else tr("Még nincs értékelés. Legyél te az első!")
)
sajat = adat.get("sajat")
if sajat == self.mentett:
return
self.mentett = sajat
- self.allapot.setText(f"ELKÜLDVE: {ido(sajat['ido'])}" if sajat else "")
+ self.allapot.setText(tr("ELKÜLDVE: {0}", ido(sajat['ido'])) if sajat else "")
if not self.szerkesztve:
self.csillagok.beallit(sajat["csillag"] if sajat else 0)
- self.szint.setText(self.SZINTEK[sajat["csillag"]] if sajat else "Kattints a csillagokra")
+ self.szint.setText(self.SZINTEK[sajat["csillag"]] if sajat else tr("Kattints a csillagokra"))
self.szoveg.blockSignals(True)
self.szoveg.setPlainText(sajat["szoveg"] if sajat else "")
self.szoveg.blockSignals(False)
@@ -453,7 +462,7 @@ class ErtekelesLap(QWidget):
)
def _gomb_frissit(self):
- self.kuld.setText("Értékelés módosítása" if self.mentett else "Értékelés küldése")
+ self.kuld.setText(tr("Értékelés módosítása") if self.mentett else tr("Értékelés küldése"))
szabad = self.oldal.szabad() and not self.kuldes
self.csillagok.setEnabled(szabad)
self.szoveg.setEnabled(szabad)
@@ -465,18 +474,18 @@ class ErtekelesLap(QWidget):
self.hiba.hide()
self.kuldes = True
self._gomb_frissit()
- self.kuld.setText("Küldés...")
+ self.kuld.setText(tr("Küldés..."))
def kesz(adat):
self.kuldes = False
self.szerkesztve = False
self.mentett = None
self.betolt(adat)
- self.allapot.setText("KÖSZÖNJÜK, ELMENTETTÜK")
+ self.allapot.setText(tr("KÖSZÖNJÜK, ELMENTETTÜK"))
def hiba(uzenet):
self.kuldes = False
- self.hiba.setText(jegyek_api.HIBAUZENETEK.get(uzenet, f"A küldés nem sikerült: {uzenet}"))
+ self.hiba.setText(jegyek_api.HIBAUZENETEK.get(uzenet, tr("A küldés nem sikerült: {0}", uzenet)))
self.hiba.show()
self._gomb_frissit()
@@ -486,53 +495,53 @@ class ErtekelesLap(QWidget):
ELFOGADAS_VERZIO = 3
ISMERTETO = [
- ("Mire jó?", "", [
- "Itt közvetlenül a RaveOS fejlesztőinek jelezhetsz hibát, és küldhetsz ötletet. "
- "Minden jegyet elolvasunk, és itt, a Centerben válaszolunk.",
+ (tr("Mire jó?"), "", [
+ tr("Itt közvetlenül a RaveOS fejlesztőinek jelezhetsz hibát, és küldhetsz ötletet. "
+ "Minden jegyet elolvasunk, és itt, a Centerben válaszolunk."),
]),
- ("Hogyan működik?", "szam", [
- "Hibajegy: írd le, mi történt. Ha bejelölöd, a géped diagnosztikáját is csatoljuk, ami sokat segít; "
- "előtte megnézheted, mi kerül bele.",
- "Válasz: ha válaszolunk, a Visszajelzés menüpont mellett szám jelenik meg, és a jegyben vissza is írhatsz.",
- "Ötlet: a jóváhagyott ötletek felkerülnek a közös listára, ahol mások is támogathatják. "
- "A legtöbbet támogatottakkal foglalkozunk először.",
- "Értékelés: 1-5 csillaggal értékelheted a RaveOS-t, és röviden leírhatod a véleményed. A szöveget csak "
- "a fejlesztők látják, a többiek csak a csillagok átlagát. Gépenként egy értékelés számít, bármikor "
- "módosíthatod.",
+ (tr("Hogyan működik?"), "szam", [
+ tr("Hibajegy: írd le, mi történt. Ha bejelölöd, a géped diagnosztikáját is csatoljuk, ami sokat segít; "
+ "előtte megnézheted, mi kerül bele."),
+ tr("Válasz: ha válaszolunk, a Visszajelzés menüpont mellett szám jelenik meg, és a jegyben vissza is írhatsz."),
+ tr("Ötlet: a jóváhagyott ötletek felkerülnek a közös listára, ahol mások is támogathatják. "
+ "A legtöbbet támogatottakkal foglalkozunk először."),
+ tr("Értékelés: 1-5 csillaggal értékelheted a RaveOS-t, és röviden leírhatod a véleményed. A szöveget csak "
+ "a fejlesztők látják, a többiek csak a csillagok átlagát. Gépenként egy értékelés számít, bármikor "
+ "módosíthatod."),
]),
- ("Miért így?", "szam", [
- "Nem kell fiók: a géped egy névtelen azonosítót kap, ezzel látod a saját jegyeidet. "
- "Újratelepítés után a régi jegyeid nem látszanak.",
- "Csak azt küldjük el, amit beírsz, vagy amihez hozzájárulsz. A diagnosztikából kitakarjuk a személyes "
- "adatokat, és 30 nap után törlődik.",
- "A lezárt jegyek 7 nap után maguktól törlődnek.",
+ (tr("Miért így?"), "szam", [
+ tr("Nem kell fiók: a géped egy névtelen azonosítót kap, ezzel látod a saját jegyeidet. "
+ "Újratelepítés után a régi jegyeid nem látszanak."),
+ tr("Csak azt küldjük el, amit beírsz, vagy amihez hozzájárulsz. A diagnosztikából kitakarjuk a személyes "
+ "adatokat, és 30 nap után törlődik."),
+ tr("A lezárt jegyek 7 nap után maguktól törlődnek."),
]),
- ("Szabályok", "szam", [
- "A Visszajelzés csak hibák jelzésére és ötletek beküldésére való.",
- "Egy hibáról egy jegyet nyiss. Ha már van róla jegyed, abba írj, ne nyiss újat.",
- "Ötlet beküldése előtt nézd meg az Ötletek listát. Ha van hasonló, támogasd azt, ne küldj újat.",
- "Ne írj a jegybe vagy az értékelésbe személyes vagy titkos adatot: jelszót, e-mail-címet, telefonszámot vagy más emberek "
- "adatait. A diagnosztikát kitakarjuk, a beírt szöveget nem.",
- "Kulturált hangnemet kérünk. Sértő, fenyegető vagy trágár üzenet tiltással jár.",
- "Reklámot és nem ide illő linkeket ne küldj.",
- "A jegyekre nem azonnal válaszolunk, ezért kérünk, légy türelmes, és ne küldd el többször ugyanazt.",
- "Visszaélés, spam, sértő vagy nem ide illő tartalom esetén a géped kitiltható a Visszajelzésből, "
- "ideiglenesen vagy véglegesen. A Center minden más része ettől ugyanúgy működik.",
- "Két óránként legfeljebb 4 jegyet küldhetsz. Ennél több beküldés automatikusan 24 órás tiltással jár.",
+ (tr("Szabályok"), "szam", [
+ tr("A Visszajelzés csak hibák jelzésére és ötletek beküldésére való."),
+ tr("Egy hibáról egy jegyet nyiss. Ha már van róla jegyed, abba írj, ne nyiss újat."),
+ tr("Ötlet beküldése előtt nézd meg az Ötletek listát. Ha van hasonló, támogasd azt, ne küldj újat."),
+ tr("Ne írj a jegybe vagy az értékelésbe személyes vagy titkos adatot: jelszót, e-mail-címet, telefonszámot vagy más emberek "
+ "adatait. A diagnosztikát kitakarjuk, a beírt szöveget nem."),
+ tr("Kulturált hangnemet kérünk. Sértő, fenyegető vagy trágár üzenet tiltással jár."),
+ tr("Reklámot és nem ide illő linkeket ne küldj."),
+ tr("A jegyekre nem azonnal válaszolunk, ezért kérünk, légy türelmes, és ne küldd el többször ugyanazt."),
+ tr("Visszaélés, spam, sértő vagy nem ide illő tartalom esetén a géped kitiltható a Visszajelzésből, "
+ "ideiglenesen vagy véglegesen. A Center minden más része ettől ugyanúgy működik."),
+ tr("Két óránként legfeljebb 4 jegyet küldhetsz. Ennél több beküldés automatikusan 24 órás tiltással jár."),
]),
]
HOZZAJARULAS = (
- "Az Elfogadom gombbal elfogadod a fenti szabályokat, és hozzájárulsz, hogy a beírt szöveget, a géped "
- "alapadatait (RaveOS-verzió, kernel, asztali környezet, videokártya) és, ha bejelölöd, a diagnosztikát "
- "elküldjük a RaveOS fejlesztőinek."
+ tr("Az Elfogadom gombbal elfogadod a fenti szabályokat, és hozzájárulsz, hogy a beírt szöveget, a géped "
+ "alapadatait (RaveOS-verzió, kernel, asztali környezet, videokártya) és, ha bejelölöd, a diagnosztikát "
+ "elküldjük a RaveOS fejlesztőinek.")
)
class IsmertetoAblak(QDialog):
def __init__(self, szulo, elfogadva):
super().__init__(szulo)
- self.setWindowTitle("Visszajelzés")
+ self.setWindowTitle(tr("Visszajelzés"))
kepernyo = szulo.screen().availableGeometry() if szulo and szulo.screen() else None
magassag = min(860, kepernyo.height() - 80) if kepernyo else 760
self.resize(700, magassag)
@@ -547,8 +556,8 @@ class IsmertetoAblak(QDialog):
doboz = QVBoxLayout(tartalom)
doboz.setContentsMargins(32, 28, 32, 8)
doboz.setSpacing(12)
- doboz.addWidget(cimke("ISMERTETŐ ÉS SZABÁLYOK", "eyebrow"))
- doboz.addWidget(cimke("HOGYAN MŰKÖDIK A VISSZAJELZÉS?", "h2", True))
+ doboz.addWidget(cimke(tr("ISMERTETŐ ÉS SZABÁLYOK"), "eyebrow"))
+ doboz.addWidget(cimke(tr("HOGYAN MŰKÖDIK A VISSZAJELZÉS?"), "h2", True))
sorszam = 0
for cim, jeloles, pontok in ISMERTETO:
doboz.addSpacing(4)
@@ -575,15 +584,15 @@ class IsmertetoAblak(QDialog):
gombok = QHBoxLayout()
gombok.addStretch(1)
if elfogadva:
- also.addWidget(cimke("A szabályokat már elfogadtad.", "halvany"))
- ok = gomb("Bezárás", fo=True)
+ also.addWidget(cimke(tr("A szabályokat már elfogadtad."), "halvany"))
+ ok = gomb(tr("Bezárás"), fo=True)
ok.clicked.connect(self.accept)
gombok.addWidget(ok)
else:
also.addWidget(cimke(HOZZAJARULAS, "figyelem", True))
- nem = gomb("Most nem")
+ nem = gomb(tr("Most nem"))
nem.clicked.connect(self.reject)
- igen = gomb("Elfogadom", fo=True)
+ igen = gomb(tr("Elfogadom"), fo=True)
igen.clicked.connect(self.accept)
gombok.addWidget(nem)
gombok.addWidget(igen)
@@ -601,12 +610,12 @@ class OtletKartya(Kartya):
self.elrendezes.addLayout(felso)
self.elrendezes.addWidget(cimke(otlet.get("leiras") or "", "masodlagos", True))
also = QHBoxLayout()
- also.addWidget(cimke(f"{otlet['szavazat']} támogató", "monohalvany"))
+ also.addWidget(cimke(tr("{0} támogató", otlet['szavazat']), "monohalvany"))
if otlet.get("sajat"):
- also.addWidget(cimke("· a te ötleted", "monohalvany"))
+ also.addWidget(cimke(tr("· a te ötleted"), "monohalvany"))
also.addStretch(1)
tamogatva = otlet["sajat_szavazat"]
- g = gomb("Támogatva" if tamogatva else "Támogatom", fo=not tamogatva, kicsi=True)
+ g = gomb(tr("Támogatva") if tamogatva else tr("Támogatom"), fo=not tamogatva, kicsi=True)
g.clicked.connect(lambda: szavaz(otlet["id"], not tamogatva, g))
also.addWidget(g)
self.elrendezes.addLayout(also)
@@ -614,20 +623,20 @@ class OtletKartya(Kartya):
class Visszajelzes(Oldal):
def __init__(self, kozpont):
- super().__init__(kozpont, "HIBÁK ÉS ÖTLETEK", "Visszajelzés", kitolt=True)
- self.uj_hiba = self.fejlec_gomb(gomb("Új hibajegy", fo=True))
+ super().__init__(kozpont, tr("HIBÁK ÉS ÖTLETEK"), tr("Visszajelzés"), kitolt=True)
+ self.uj_hiba = self.fejlec_gomb(gomb(tr("Új hibajegy"), fo=True))
self.uj_hiba.clicked.connect(lambda: self.urlap_nyit("hiba"))
- self.uj_otlet = self.fejlec_gomb(gomb("Új ötlet"))
+ self.uj_otlet = self.fejlec_gomb(gomb(tr("Új ötlet")))
self.uj_otlet.clicked.connect(lambda: self.urlap_nyit("otlet"))
- sugo = self.fejlec_gomb(gomb("Hogyan működik?"))
+ sugo = self.fejlec_gomb(gomb(tr("Hogyan működik?")))
sugo.clicked.connect(self.ismerteto)
self.elfogadas_sav = QWidget()
es = QHBoxLayout(self.elfogadas_sav)
es.setContentsMargins(0, 0, 0, 0)
es.setSpacing(12)
- es.addWidget(cimke("A Visszajelzés használatához el kell fogadnod a szabályokat.", "figyelem", True), 1)
- elolvas = gomb("Szabályok elolvasása", fo=True)
+ es.addWidget(cimke(tr("A Visszajelzés használatához el kell fogadnod a szabályokat."), "figyelem", True), 1)
+ elolvas = gomb(tr("Szabályok elolvasása"), fo=True)
elolvas.clicked.connect(self.ismerteto)
es.addWidget(elolvas)
self.elfogadas_sav.hide()
@@ -636,7 +645,7 @@ class Visszajelzes(Oldal):
self.tiltas_sav.hide()
self.torzs.addWidget(self.tiltas_sav)
self.kitiltva = False
- self.fulsor = Fulsor([("jegyeim", "Jegyeim"), ("otletek", "Ötletek"), ("ertekeles", "Értékelés")], self.ful)
+ self.fulsor = Fulsor([("jegyeim", tr("Jegyeim")), ("otletek", tr("Ötletek")), ("ertekeles", tr("Értékelés"))], self.ful)
self.torzs.addWidget(self.fulsor)
self.hiba = uzenetsav("")
self.torzs.addWidget(self.hiba)
@@ -686,7 +695,7 @@ class Visszajelzes(Oldal):
od.setSpacing(12)
od.addWidget(
cimke(
- "Mások ötletei, amelyeket jóváhagytunk. Támogasd, amit te is szeretnél, így látjuk, mi a legfontosabb.",
+ tr("Mások ötletei, amelyeket jóváhagytunk. Támogasd, amit te is szeretnél, így látjuk, mi a legfontosabb."),
"masodlagos",
True,
)
@@ -735,10 +744,14 @@ class Visszajelzes(Oldal):
def _tiltas_kesz(self, adat):
self.kitiltva = bool(adat.get("kitiltva"))
if self.kitiltva:
- meddig = f"eddig: {ido(adat['lejar'])}" if adat.get("lejar") else "véglegesen"
+ meddig = tr("eddig: {0}", ido(adat['lejar'])) if adat.get("lejar") else tr("véglegesen")
self.tiltas_sav.setText(
- f"Ez a gép {meddig} ki van tiltva a Visszajelzés használatából a szabályok megsértése miatt. "
- f"Ok: {adat.get('ok') or '-'}\n\nA RaveOS Center minden más része ugyanúgy működik."
+ tr(
+ "Ez a gép {0} ki van tiltva a Visszajelzés használatából a szabályok megsértése miatt. Ok: "
+ "{1}\n\nA RaveOS Center minden más része ugyanúgy működik.",
+ meddig,
+ adat.get('ok') or '-',
+ )
)
self._allapot_frissit()
if not self.kitiltva:
@@ -782,7 +795,7 @@ class Visszajelzes(Oldal):
self._hibat_mutat(uzenet)
def _hibat_mutat(self, uzenet):
- self.hiba.setText(jegyek_api.HIBAUZENETEK.get(uzenet, f"Hiba történt: {uzenet}"))
+ self.hiba.setText(jegyek_api.HIBAUZENETEK.get(uzenet, tr("Hiba történt: {0}", uzenet)))
self.hiba.show()
def _jelveny_frissit(self, jegyek):
@@ -811,9 +824,9 @@ class Visszajelzes(Oldal):
self.lista.blockSignals(False)
if self.jobb.currentWidget() is not self.urlap_gorgeto and not self.lista.currentItem():
self.ures_szoveg.setText(
- "Még nincs jegyed. Ha hibát találtál, vagy ötleted van, írj nekünk a fenti gombokkal."
+ tr("Még nincs jegyed. Ha hibát találtál, vagy ötleted van, írj nekünk a fenti gombokkal.")
if not jegyek
- else "Válassz egy jegyet a listából."
+ else tr("Válassz egy jegyet a listából.")
)
self.jobb.setCurrentWidget(self.ures)
@@ -870,7 +883,7 @@ class Visszajelzes(Oldal):
if w:
w.deleteLater()
if not otletek:
- self.otlet_doboz.addWidget(cimke("Még nincs közzétett ötlet.", "halvany"))
+ self.otlet_doboz.addWidget(cimke(tr("Még nincs közzétett ötlet."), "halvany"))
for o in otletek:
kartya = OtletKartya(o, self._szavaz)
for g in kartya.findChildren(QPushButton):
diff --git a/raveos-center/raveos_center/proton.py b/raveos-center/raveos_center/proton.py
index bff9649..99663fb 100644
--- a/raveos-center/raveos_center/proton.py
+++ b/raveos-center/raveos_center/proton.py
@@ -8,6 +8,7 @@ import urllib.request
from pathlib import Path
from raveos_center import VERZIO
+from raveos_center.forditas import tr
KIADAS = "https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest"
STEAM_HELYEK = [
@@ -63,7 +64,7 @@ def legujabb():
adat = json.load(valasz)
nev = adat.get("tag_name", "")
if not NEV_MINTA.match(nev):
- raise RuntimeError("ismeretlen kiadásnév")
+ raise RuntimeError(tr("ismeretlen kiadásnév"))
eszkozok = {e["name"]: e for e in adat.get("assets", [])}
for mappa in (f"{nev}-x86_64", nev):
tar = eszkozok.get(f"{mappa}.tar.gz")
@@ -75,17 +76,17 @@ def legujabb():
"meret": tar.get("size", 0),
"osszeg_url": osszeg["browser_download_url"],
}
- raise RuntimeError("a kiadásból hiányzik a csomag vagy az ellenőrzőösszeg")
+ raise RuntimeError(tr("a kiadásból hiányzik a csomag vagy az ellenőrzőösszeg"))
def telepit(kiadas, haladas):
mappak = celmappak()
if not mappak:
- raise RuntimeError("nem található Steam, előbb indítsd el egyszer a Steamet")
+ raise RuntimeError(tr("nem található Steam, előbb indítsd el egyszer a Steamet"))
with _lekeres(kiadas["osszeg_url"]) as valasz:
vart = valasz.read().decode().split()[0].lower()
if not re.fullmatch(r"[0-9a-f]{128}", vart):
- raise RuntimeError("érvénytelen ellenőrzőösszeg")
+ raise RuntimeError(tr("érvénytelen ellenőrzőösszeg"))
mappak[0].mkdir(parents=True, exist_ok=True)
with tempfile.NamedTemporaryFile(dir=mappak[0], suffix=".tar.gz") as ideiglenes:
hasito = hashlib.sha512()
@@ -99,7 +100,7 @@ def telepit(kiadas, haladas):
haladas(min(90, int(letoltve * 90 / kiadas["meret"])))
ideiglenes.flush()
if hasito.hexdigest() != vart:
- raise RuntimeError("a letöltött fájl ellenőrzőösszege nem egyezik")
+ raise RuntimeError(tr("a letöltött fájl ellenőrzőösszege nem egyezik"))
for mappa in mappak:
mappa.mkdir(parents=True, exist_ok=True)
cel = mappa / kiadas["nev"]
@@ -110,7 +111,7 @@ def telepit(kiadas, haladas):
with tarfile.open(ideiglenes.name, "r:gz") as tar:
tagok = tar.getmembers()
if any(t.name != kiadas["nev"] and not t.name.startswith(kiadas["nev"] + "/") for t in tagok):
- raise RuntimeError("váratlan tartalom a csomagban")
+ raise RuntimeError(tr("váratlan tartalom a csomagban"))
tar.extractall(mappa, members=tagok, filter="data")
haladas(100)
return kiadas["nev"]
@@ -118,7 +119,7 @@ def telepit(kiadas, haladas):
def torol(nev, mappak=None):
if not NEV_MINTA.match(nev):
- raise ValueError("érvénytelen név")
+ raise ValueError(tr("érvénytelen név"))
for mappa in mappak or celmappak():
cel = mappa / nev
if cel.is_dir() and not cel.is_symlink():
diff --git a/raveos-center/raveos_center/rendszerinfo.py b/raveos-center/raveos_center/rendszerinfo.py
index b526670..2d67251 100644
--- a/raveos-center/raveos_center/rendszerinfo.py
+++ b/raveos-center/raveos_center/rendszerinfo.py
@@ -8,6 +8,8 @@ import threading
import time
from pathlib import Path
+from raveos_center.forditas import tr
+
def _futtat(parancs, ido=60):
try:
@@ -41,7 +43,7 @@ def kernel():
def asztal():
- nev = os.environ.get("XDG_CURRENT_DESKTOP") or os.environ.get("DESKTOP_SESSION") or "ismeretlen"
+ nev = os.environ.get("XDG_CURRENT_DESKTOP") or os.environ.get("DESKTOP_SESSION") or tr("ismeretlen")
nev = nev.split(":")[-1]
tipus = os.environ.get("XDG_SESSION_TYPE", "")
return f"{nev} ({tipus.capitalize()})" if tipus else nev
@@ -55,7 +57,7 @@ def cpu():
return re.sub(r"\s+", " ", re.sub(r"\((R|TM)\)|CPU|Processor", "", nev)).strip()
except OSError:
pass
- return platform.processor() or "ismeretlen"
+ return platform.processor() or tr("ismeretlen")
def gpuk():
@@ -94,7 +96,7 @@ def memoria():
return f"{kb / 1024 / 1024:.1f} GB"
except (OSError, ValueError):
pass
- return "ismeretlen"
+ return tr("ismeretlen")
def fajlrendszer(hely="/"):
@@ -108,22 +110,22 @@ def fajlrendszer(hely="/"):
return mezok[2]
except OSError:
pass
- return "ismeretlen"
+ return tr("ismeretlen")
def uzemido():
try:
mp = int(float(Path("/proc/uptime").read_text().split()[0]))
except (OSError, ValueError):
- return "ismeretlen"
+ return tr("ismeretlen")
nap, mp = divmod(mp, 86400)
ora, mp = divmod(mp, 3600)
perc = mp // 60
if nap:
- return f"{nap} nap {ora} óra"
+ return tr("{0} nap {1} óra", nap, ora)
if ora:
- return f"{ora} óra {perc} perc"
- return f"{perc} perc"
+ return tr("{0} óra {1} perc", ora, perc)
+ return tr("{0} perc", perc)
def lemez(hely="/"):
@@ -165,10 +167,10 @@ def _meret_szoveg(szoveg):
def _frissitesek_lekerdez():
csomagok = []
if not shutil.which("checkupdates"):
- raise RuntimeError("a checkupdates nem elérhető (pacman-contrib)")
+ raise RuntimeError(tr("a checkupdates nem elérhető (pacman-contrib)"))
pac = _futtat(["checkupdates", "--nocolor"], ido=180)
if not pac or pac.returncode not in (0, 2):
- raise RuntimeError("a pacman frissítések ellenőrzése nem sikerült")
+ raise RuntimeError(tr("a pacman frissítések ellenőrzése nem sikerült"))
if pac.returncode == 0:
for sor in pac.stdout.splitlines():
r = sor.split()
diff --git a/raveos-center/raveos_center/snapshotok.py b/raveos-center/raveos_center/snapshotok.py
index f4bd097..451f479 100644
--- a/raveos-center/raveos_center/snapshotok.py
+++ b/raveos-center/raveos_center/snapshotok.py
@@ -4,9 +4,10 @@ import subprocess
from pathlib import Path
from raveos_center import rendszerinfo
+from raveos_center.forditas import tr
SNAP_PAC = Path("/usr/share/libalpm/hooks/05-snap-pac-pre.hook")
-TIPUSOK = {"pre": "csomagművelet előtt", "post": "csomagművelet után", "single": "kézi"}
+TIPUSOK = {"pre": tr("csomagművelet előtt"), "post": tr("csomagművelet után"), "single": tr("kézi")}
def _futtat(parancs, ido=30):
@@ -47,7 +48,7 @@ def _elem(nyers):
"szam": nyers.get("number", 0),
"datum": (nyers.get("date") or "")[:16],
"tipus": tipus,
- "tipus_nev": "telepítés" if adat.get("important") == "yes" and tipus == "single" else TIPUSOK.get(tipus, tipus),
+ "tipus_nev": tr("telepítés") if adat.get("important") == "yes" and tipus == "single" else TIPUSOK.get(tipus, tipus),
"leiras": nyers.get("description") or "",
"pre_szam": nyers.get("pre-number"),
"aktiv": bool(nyers.get("active")),
@@ -69,12 +70,12 @@ def allapot():
return adat
kimenet = _futtat(["snapper", "--jsonout", "-c", "root", "list"])
if not kimenet or kimenet.returncode != 0:
- adat["hiba"] = (kimenet.stderr.strip() if kimenet else "") or "A snapshotok listája nem olvasható."
+ adat["hiba"] = (kimenet.stderr.strip() if kimenet else "") or tr("A snapshotok listája nem olvasható.")
return adat
try:
nyers = json.loads(kimenet.stdout).get("root", [])
except ValueError:
- adat["hiba"] = "A snapper válasza nem értelmezhető."
+ adat["hiba"] = tr("A snapper válasza nem értelmezhető.")
return adat
adat["lista"] = [_elem(n) for n in reversed(nyers) if n.get("number", 0) != 0]
return adat