From 1297c1869254d69501899c31849adbc4694b24f3 Mon Sep 17 00:00:00 2001 From: GattoDev Date: Sat, 3 Jan 2026 09:34:37 +0330 Subject: [PATCH] Changed language loading (Check ! sample.js) now its not hardcoded!! yippeeeeee --- PSFree.manifest | 287 +++++++++++++++--------------- includes/js/index.js | 25 ++- includes/js/langhandler.js | 133 ++++++++++++++ includes/js/languages/! sample.js | 97 ++++++++++ includes/js/languages/ar.js | 2 + includes/js/languages/en.js | 2 + includes/js/languages/fa.js | 52 ++++++ includes/js/languages/ru.js | 2 + index.html | 23 +-- 9 files changed, 458 insertions(+), 165 deletions(-) create mode 100644 includes/js/langhandler.js create mode 100644 includes/js/languages/! sample.js create mode 100644 includes/js/languages/fa.js diff --git a/PSFree.manifest b/PSFree.manifest index a5bd063..a383926 100644 --- a/PSFree.manifest +++ b/PSFree.manifest @@ -1,13 +1,16 @@ CACHE MANIFEST # v1 -# Generated on 2025-12-31 22:23:38.452404 +# Generated on 2026-01-03 09:31:56.578742 CACHE: index.html includes/index.css includes/js/index.js +includes/js/langhandler.js +includes/js/languages/! sample.js includes/js/languages/ar.js includes/js/languages/en.js +includes/js/languages/fa.js includes/js/languages/ru.js includes/payloads/Jailbreak.js includes/payloads/payloads.js @@ -29,12 +32,8 @@ includes/payloads/Bins/RDR2/OystersMenu-1.13-FREE.bin includes/payloads/Bins/RDR2/OystersMenu-1.19-FREE.bin includes/payloads/Bins/RDR2/OystersMenu-1.24-FREE.bin includes/payloads/Bins/RDR2/OystersMenu-1.29-FREE.bin -includes/payloads/Bins/Tools/Orbis-Toolbox-900.bin -includes/payloads/Bins/Tools/ToCex.bin -includes/payloads/Bins/Tools/ToDev.bin -includes/payloads/Bins/Tools/ToKratos.bin -includes/payloads/Bins/Tools/WebRTE.bin includes/payloads/Bins/Tools/appcache-install.bin +includes/payloads/Bins/Tools/Orbis-Toolbox-900.bin includes/payloads/Bins/Tools/ps4-app2usb.bin includes/payloads/Bins/Tools/ps4-backup.bin includes/payloads/Bins/Tools/ps4-disable-aslr.bin @@ -50,6 +49,10 @@ includes/payloads/Bins/Tools/ps4-rif-renamer.bin includes/payloads/Bins/Tools/ps4-todex.bin includes/payloads/Bins/Tools/ps4debug.bin includes/payloads/Bins/Tools/pup-decrypt.bin +includes/payloads/Bins/Tools/ToCex.bin +includes/payloads/Bins/Tools/ToDev.bin +includes/payloads/Bins/Tools/ToKratos.bin +includes/payloads/Bins/Tools/WebRTE.bin includes/payloads/Bins/Tools/fan-thresholds/ps4-fan-threshold60.bin includes/payloads/Bins/Tools/fan-thresholds/ps4-fan-threshold70.bin includes/payloads/Bins/Tools/fan-thresholds/ps4-fan-threshold80.bin @@ -63,214 +66,214 @@ includes/payloads/GoldHEN/goldhen_v2.4b18.6.bin includes/payloads/GoldHEN/goldhen_v2.4b18.7.bin includes/payloads/GoldHEN/goldhen_v2.4b18.bin includes/payloads/HEN/HEN.bin -includes/payloads/Linux/fw700/payload-700-1gb.elf -includes/payloads/Linux/fw700/payload-700-1gb-pro.elf -includes/payloads/Linux/fw700/payload-700-1gb-baikal.elf -includes/payloads/Linux/fw700/payload-700-1gb-pro-baikal.elf -includes/payloads/Linux/fw700/payload-700-2gb.elf -includes/payloads/Linux/fw700/payload-700-2gb-pro.elf -includes/payloads/Linux/fw700/payload-700-2gb-baikal.elf -includes/payloads/Linux/fw700/payload-700-2gb-pro-baikal.elf -includes/payloads/Linux/fw700/payload-700-3gb.elf -includes/payloads/Linux/fw700/payload-700-3gb-pro.elf -includes/payloads/Linux/fw700/payload-700-3gb-baikal.elf -includes/payloads/Linux/fw700/payload-700-3gb-pro-baikal.elf -includes/payloads/Linux/fw700/payload-700-4gb.elf -includes/payloads/Linux/fw700/payload-700-4gb-pro.elf -includes/payloads/Linux/fw700/payload-700-4gb-baikal.elf -includes/payloads/Linux/fw700/payload-700-4gb-pro-baikal.elf -includes/payloads/Linux/fw900/payload-900-1gb-pro.elf -includes/payloads/Linux/fw900/payload-900-1gb-baikal.elf -includes/payloads/Linux/fw900/payload-900-1gb-pro-baikal.elf -includes/payloads/Linux/fw900/payload-900-2gb.elf -includes/payloads/Linux/fw900/payload-900-2gb-pro.elf -includes/payloads/Linux/fw900/payload-900-2gb-baikal.elf -includes/payloads/Linux/fw900/payload-900-2gb-pro-baikal.elf -includes/payloads/Linux/fw900/payload-900-3gb.elf -includes/payloads/Linux/fw900/payload-900-3gb-pro.elf -includes/payloads/Linux/fw900/payload-900-3gb-baikal.elf -includes/payloads/Linux/fw900/payload-900-3gb-pro-baikal.elf -includes/payloads/Linux/fw900/payload-900-4gb.elf -includes/payloads/Linux/fw900/payload-900-4gb-pro.elf -includes/payloads/Linux/fw900/payload-900-4gb-baikal.elf -includes/payloads/Linux/fw900/payload-900-4gb-pro-baikal.elf -includes/payloads/Linux/fw900/payload-900-1gb.elf -includes/payloads/Linux/fw903/payload-903-1gb.elf -includes/payloads/Linux/fw903/payload-903-1gb-pro.elf -includes/payloads/Linux/fw903/payload-903-1gb-baikal.elf -includes/payloads/Linux/fw903/payload-903-1gb-pro-baikal.elf -includes/payloads/Linux/fw903/payload-903-2gb.elf -includes/payloads/Linux/fw903/payload-903-2gb-pro.elf -includes/payloads/Linux/fw903/payload-903-2gb-baikal.elf -includes/payloads/Linux/fw903/payload-903-2gb-pro-baikal.elf -includes/payloads/Linux/fw903/payload-903-3gb.elf -includes/payloads/Linux/fw903/payload-903-3gb-pro.elf -includes/payloads/Linux/fw903/payload-903-3gb-baikal.elf -includes/payloads/Linux/fw903/payload-903-3gb-pro-baikal.elf -includes/payloads/Linux/fw903/payload-903-4gb.elf -includes/payloads/Linux/fw903/payload-903-4gb-pro.elf -includes/payloads/Linux/fw903/payload-903-4gb-baikal.elf -includes/payloads/Linux/fw903/payload-903-4gb-pro-baikal.elf -includes/payloads/Linux/fw960/payload-960-1gb.elf -includes/payloads/Linux/fw960/payload-960-1gb-pro.elf -includes/payloads/Linux/fw960/payload-960-1gb-baikal.elf -includes/payloads/Linux/fw960/payload-960-1gb-pro-baikal.elf -includes/payloads/Linux/fw960/payload-960-2gb.elf -includes/payloads/Linux/fw960/payload-960-2gb-pro.elf -includes/payloads/Linux/fw960/payload-960-2gb-baikal.elf -includes/payloads/Linux/fw960/payload-960-2gb-pro-baikal.elf -includes/payloads/Linux/fw960/payload-960-3gb.elf -includes/payloads/Linux/fw960/payload-960-3gb-pro.elf -includes/payloads/Linux/fw960/payload-960-3gb-baikal.elf -includes/payloads/Linux/fw960/payload-960-3gb-pro-baikal.elf -includes/payloads/Linux/fw960/payload-960-4gb.elf -includes/payloads/Linux/fw960/payload-960-4gb-pro.elf -includes/payloads/Linux/fw960/payload-960-4gb-baikal.elf -includes/payloads/Linux/fw960/payload-960-4gb-pro-baikal.elf -includes/payloads/Linux/fw1000/payload-1000-1gb.elf -includes/payloads/Linux/fw1000/payload-1000-1gb-pro.elf includes/payloads/Linux/fw1000/payload-1000-1gb-baikal.elf includes/payloads/Linux/fw1000/payload-1000-1gb-pro-baikal.elf -includes/payloads/Linux/fw1000/payload-1000-2gb.elf -includes/payloads/Linux/fw1000/payload-1000-2gb-pro.elf +includes/payloads/Linux/fw1000/payload-1000-1gb-pro.elf +includes/payloads/Linux/fw1000/payload-1000-1gb.elf includes/payloads/Linux/fw1000/payload-1000-2gb-baikal.elf includes/payloads/Linux/fw1000/payload-1000-2gb-pro-baikal.elf -includes/payloads/Linux/fw1000/payload-1000-3gb.elf -includes/payloads/Linux/fw1000/payload-1000-3gb-pro.elf +includes/payloads/Linux/fw1000/payload-1000-2gb-pro.elf +includes/payloads/Linux/fw1000/payload-1000-2gb.elf includes/payloads/Linux/fw1000/payload-1000-3gb-baikal.elf includes/payloads/Linux/fw1000/payload-1000-3gb-pro-baikal.elf -includes/payloads/Linux/fw1000/payload-1000-4gb.elf -includes/payloads/Linux/fw1000/payload-1000-4gb-pro.elf +includes/payloads/Linux/fw1000/payload-1000-3gb-pro.elf +includes/payloads/Linux/fw1000/payload-1000-3gb.elf includes/payloads/Linux/fw1000/payload-1000-4gb-baikal.elf includes/payloads/Linux/fw1000/payload-1000-4gb-pro-baikal.elf -includes/payloads/Linux/fw1050/payload-1050-1gb.elf -includes/payloads/Linux/fw1050/payload-1050-1gb-pro.elf +includes/payloads/Linux/fw1000/payload-1000-4gb-pro.elf +includes/payloads/Linux/fw1000/payload-1000-4gb.elf includes/payloads/Linux/fw1050/payload-1050-1gb-baikal.elf includes/payloads/Linux/fw1050/payload-1050-1gb-pro-baikal.elf -includes/payloads/Linux/fw1050/payload-1050-2gb.elf -includes/payloads/Linux/fw1050/payload-1050-2gb-pro.elf +includes/payloads/Linux/fw1050/payload-1050-1gb-pro.elf +includes/payloads/Linux/fw1050/payload-1050-1gb.elf includes/payloads/Linux/fw1050/payload-1050-2gb-baikal.elf includes/payloads/Linux/fw1050/payload-1050-2gb-pro-baikal.elf -includes/payloads/Linux/fw1050/payload-1050-3gb.elf -includes/payloads/Linux/fw1050/payload-1050-3gb-pro.elf +includes/payloads/Linux/fw1050/payload-1050-2gb-pro.elf +includes/payloads/Linux/fw1050/payload-1050-2gb.elf includes/payloads/Linux/fw1050/payload-1050-3gb-baikal.elf includes/payloads/Linux/fw1050/payload-1050-3gb-pro-baikal.elf -includes/payloads/Linux/fw1050/payload-1050-4gb.elf -includes/payloads/Linux/fw1050/payload-1050-4gb-pro.elf +includes/payloads/Linux/fw1050/payload-1050-3gb-pro.elf +includes/payloads/Linux/fw1050/payload-1050-3gb.elf includes/payloads/Linux/fw1050/payload-1050-4gb-baikal.elf includes/payloads/Linux/fw1050/payload-1050-4gb-pro-baikal.elf -includes/payloads/Linux/fw1100/payload-1100-1gb.elf -includes/payloads/Linux/fw1100/payload-1100-1gb-pro.elf +includes/payloads/Linux/fw1050/payload-1050-4gb-pro.elf +includes/payloads/Linux/fw1050/payload-1050-4gb.elf includes/payloads/Linux/fw1100/payload-1100-1gb-baikal.elf includes/payloads/Linux/fw1100/payload-1100-1gb-pro-baikal.elf -includes/payloads/Linux/fw1100/payload-1100-2gb.elf -includes/payloads/Linux/fw1100/payload-1100-2gb-pro.elf +includes/payloads/Linux/fw1100/payload-1100-1gb-pro.elf +includes/payloads/Linux/fw1100/payload-1100-1gb.elf includes/payloads/Linux/fw1100/payload-1100-2gb-baikal.elf includes/payloads/Linux/fw1100/payload-1100-2gb-pro-baikal.elf -includes/payloads/Linux/fw1100/payload-1100-3gb.elf -includes/payloads/Linux/fw1100/payload-1100-3gb-pro.elf +includes/payloads/Linux/fw1100/payload-1100-2gb-pro.elf +includes/payloads/Linux/fw1100/payload-1100-2gb.elf includes/payloads/Linux/fw1100/payload-1100-3gb-baikal.elf includes/payloads/Linux/fw1100/payload-1100-3gb-pro-baikal.elf -includes/payloads/Linux/fw1100/payload-1100-4gb.elf -includes/payloads/Linux/fw1100/payload-1100-4gb-pro.elf +includes/payloads/Linux/fw1100/payload-1100-3gb-pro.elf +includes/payloads/Linux/fw1100/payload-1100-3gb.elf includes/payloads/Linux/fw1100/payload-1100-4gb-baikal.elf includes/payloads/Linux/fw1100/payload-1100-4gb-pro-baikal.elf -includes/payloads/Linux/fw1102/payload-1102-1gb.elf -includes/payloads/Linux/fw1102/payload-1102-1gb-pro.elf +includes/payloads/Linux/fw1100/payload-1100-4gb-pro.elf +includes/payloads/Linux/fw1100/payload-1100-4gb.elf includes/payloads/Linux/fw1102/payload-1102-1gb-baikal.elf includes/payloads/Linux/fw1102/payload-1102-1gb-pro-baikal.elf -includes/payloads/Linux/fw1102/payload-1102-2gb.elf -includes/payloads/Linux/fw1102/payload-1102-2gb-pro.elf +includes/payloads/Linux/fw1102/payload-1102-1gb-pro.elf +includes/payloads/Linux/fw1102/payload-1102-1gb.elf includes/payloads/Linux/fw1102/payload-1102-2gb-baikal.elf includes/payloads/Linux/fw1102/payload-1102-2gb-pro-baikal.elf -includes/payloads/Linux/fw1102/payload-1102-3gb.elf -includes/payloads/Linux/fw1102/payload-1102-3gb-pro.elf +includes/payloads/Linux/fw1102/payload-1102-2gb-pro.elf +includes/payloads/Linux/fw1102/payload-1102-2gb.elf includes/payloads/Linux/fw1102/payload-1102-3gb-baikal.elf includes/payloads/Linux/fw1102/payload-1102-3gb-pro-baikal.elf -includes/payloads/Linux/fw1102/payload-1102-4gb.elf -includes/payloads/Linux/fw1102/payload-1102-4gb-pro.elf +includes/payloads/Linux/fw1102/payload-1102-3gb-pro.elf +includes/payloads/Linux/fw1102/payload-1102-3gb.elf includes/payloads/Linux/fw1102/payload-1102-4gb-baikal.elf includes/payloads/Linux/fw1102/payload-1102-4gb-pro-baikal.elf -includes/payloads/Linux/fw1150/payload-1150-1gb.elf -includes/payloads/Linux/fw1150/payload-1150-1gb-pro.elf +includes/payloads/Linux/fw1102/payload-1102-4gb-pro.elf +includes/payloads/Linux/fw1102/payload-1102-4gb.elf includes/payloads/Linux/fw1150/payload-1150-1gb-baikal.elf includes/payloads/Linux/fw1150/payload-1150-1gb-pro-baikal.elf -includes/payloads/Linux/fw1150/payload-1150-2gb.elf -includes/payloads/Linux/fw1150/payload-1150-2gb-pro.elf +includes/payloads/Linux/fw1150/payload-1150-1gb-pro.elf +includes/payloads/Linux/fw1150/payload-1150-1gb.elf includes/payloads/Linux/fw1150/payload-1150-2gb-baikal.elf includes/payloads/Linux/fw1150/payload-1150-2gb-pro-baikal.elf -includes/payloads/Linux/fw1150/payload-1150-3gb.elf -includes/payloads/Linux/fw1150/payload-1150-3gb-pro.elf +includes/payloads/Linux/fw1150/payload-1150-2gb-pro.elf +includes/payloads/Linux/fw1150/payload-1150-2gb.elf includes/payloads/Linux/fw1150/payload-1150-3gb-baikal.elf includes/payloads/Linux/fw1150/payload-1150-3gb-pro-baikal.elf -includes/payloads/Linux/fw1150/payload-1150-4gb.elf -includes/payloads/Linux/fw1150/payload-1150-4gb-pro.elf +includes/payloads/Linux/fw1150/payload-1150-3gb-pro.elf +includes/payloads/Linux/fw1150/payload-1150-3gb.elf includes/payloads/Linux/fw1150/payload-1150-4gb-baikal.elf includes/payloads/Linux/fw1150/payload-1150-4gb-pro-baikal.elf -includes/payloads/Linux/fw1200/payload-1200-1gb.elf -includes/payloads/Linux/fw1200/payload-1200-1gb-pro.elf +includes/payloads/Linux/fw1150/payload-1150-4gb-pro.elf +includes/payloads/Linux/fw1150/payload-1150-4gb.elf includes/payloads/Linux/fw1200/payload-1200-1gb-baikal.elf includes/payloads/Linux/fw1200/payload-1200-1gb-pro-baikal.elf -includes/payloads/Linux/fw1200/payload-1200-2gb.elf -includes/payloads/Linux/fw1200/payload-1200-2gb-pro.elf +includes/payloads/Linux/fw1200/payload-1200-1gb-pro.elf +includes/payloads/Linux/fw1200/payload-1200-1gb.elf includes/payloads/Linux/fw1200/payload-1200-2gb-baikal.elf includes/payloads/Linux/fw1200/payload-1200-2gb-pro-baikal.elf -includes/payloads/Linux/fw1200/payload-1200-3gb.elf -includes/payloads/Linux/fw1200/payload-1200-3gb-pro.elf +includes/payloads/Linux/fw1200/payload-1200-2gb-pro.elf +includes/payloads/Linux/fw1200/payload-1200-2gb.elf includes/payloads/Linux/fw1200/payload-1200-3gb-baikal.elf includes/payloads/Linux/fw1200/payload-1200-3gb-pro-baikal.elf -includes/payloads/Linux/fw1200/payload-1200-4gb.elf -includes/payloads/Linux/fw1200/payload-1200-4gb-pro.elf +includes/payloads/Linux/fw1200/payload-1200-3gb-pro.elf +includes/payloads/Linux/fw1200/payload-1200-3gb.elf includes/payloads/Linux/fw1200/payload-1200-4gb-baikal.elf includes/payloads/Linux/fw1200/payload-1200-4gb-pro-baikal.elf -includes/payloads/Linux/fw1250/payload-1250-1gb.elf +includes/payloads/Linux/fw1200/payload-1200-4gb-pro.elf +includes/payloads/Linux/fw1200/payload-1200-4gb.elf includes/payloads/Linux/fw1250/payload-1250-1gb-baikal.elf -includes/payloads/Linux/fw1250/payload-1250-1gb-pro.elf includes/payloads/Linux/fw1250/payload-1250-1gb-pro-baikal.elf -includes/payloads/Linux/fw1250/payload-1250-2gb.elf +includes/payloads/Linux/fw1250/payload-1250-1gb-pro.elf +includes/payloads/Linux/fw1250/payload-1250-1gb.elf includes/payloads/Linux/fw1250/payload-1250-2gb-baikal.elf -includes/payloads/Linux/fw1250/payload-1250-2gb-pro.elf includes/payloads/Linux/fw1250/payload-1250-2gb-pro-baikal.elf -includes/payloads/Linux/fw1250/payload-1250-3gb.elf +includes/payloads/Linux/fw1250/payload-1250-2gb-pro.elf +includes/payloads/Linux/fw1250/payload-1250-2gb.elf includes/payloads/Linux/fw1250/payload-1250-3gb-baikal.elf -includes/payloads/Linux/fw1250/payload-1250-3gb-pro.elf includes/payloads/Linux/fw1250/payload-1250-3gb-pro-baikal.elf -includes/payloads/Linux/fw1250/payload-1250-4gb.elf +includes/payloads/Linux/fw1250/payload-1250-3gb-pro.elf +includes/payloads/Linux/fw1250/payload-1250-3gb.elf includes/payloads/Linux/fw1250/payload-1250-4gb-baikal.elf -includes/payloads/Linux/fw1250/payload-1250-4gb-pro.elf includes/payloads/Linux/fw1250/payload-1250-4gb-pro-baikal.elf -includes/payloads/Linux/fw1300/payload-1300-1gb.elf -includes/payloads/Linux/fw1300/payload-1300-1gb-pro.elf +includes/payloads/Linux/fw1250/payload-1250-4gb-pro.elf +includes/payloads/Linux/fw1250/payload-1250-4gb.elf includes/payloads/Linux/fw1300/payload-1300-1gb-baikal.elf includes/payloads/Linux/fw1300/payload-1300-1gb-pro-baikal.elf -includes/payloads/Linux/fw1300/payload-1300-2gb.elf -includes/payloads/Linux/fw1300/payload-1300-2gb-pro.elf +includes/payloads/Linux/fw1300/payload-1300-1gb-pro.elf +includes/payloads/Linux/fw1300/payload-1300-1gb.elf includes/payloads/Linux/fw1300/payload-1300-2gb-baikal.elf includes/payloads/Linux/fw1300/payload-1300-2gb-pro-baikal.elf -includes/payloads/Linux/fw1300/payload-1300-3gb.elf -includes/payloads/Linux/fw1300/payload-1300-3gb-pro.elf +includes/payloads/Linux/fw1300/payload-1300-2gb-pro.elf +includes/payloads/Linux/fw1300/payload-1300-2gb.elf includes/payloads/Linux/fw1300/payload-1300-3gb-baikal.elf includes/payloads/Linux/fw1300/payload-1300-3gb-pro-baikal.elf -includes/payloads/Linux/fw1300/payload-1300-4gb.elf -includes/payloads/Linux/fw1300/payload-1300-4gb-pro.elf +includes/payloads/Linux/fw1300/payload-1300-3gb-pro.elf +includes/payloads/Linux/fw1300/payload-1300-3gb.elf includes/payloads/Linux/fw1300/payload-1300-4gb-baikal.elf includes/payloads/Linux/fw1300/payload-1300-4gb-pro-baikal.elf -includes/payloads/Linux/fw1302/payload-1302-1gb.elf -includes/payloads/Linux/fw1302/payload-1302-1gb-pro.elf +includes/payloads/Linux/fw1300/payload-1300-4gb-pro.elf +includes/payloads/Linux/fw1300/payload-1300-4gb.elf includes/payloads/Linux/fw1302/payload-1302-1gb-baikal.elf includes/payloads/Linux/fw1302/payload-1302-1gb-pro-baikal.elf -includes/payloads/Linux/fw1302/payload-1302-2gb.elf -includes/payloads/Linux/fw1302/payload-1302-2gb-pro.elf +includes/payloads/Linux/fw1302/payload-1302-1gb-pro.elf +includes/payloads/Linux/fw1302/payload-1302-1gb.elf includes/payloads/Linux/fw1302/payload-1302-2gb-baikal.elf includes/payloads/Linux/fw1302/payload-1302-2gb-pro-baikal.elf -includes/payloads/Linux/fw1302/payload-1302-3gb.elf -includes/payloads/Linux/fw1302/payload-1302-3gb-pro.elf +includes/payloads/Linux/fw1302/payload-1302-2gb-pro.elf +includes/payloads/Linux/fw1302/payload-1302-2gb.elf includes/payloads/Linux/fw1302/payload-1302-3gb-baikal.elf includes/payloads/Linux/fw1302/payload-1302-3gb-pro-baikal.elf -includes/payloads/Linux/fw1302/payload-1302-4gb.elf -includes/payloads/Linux/fw1302/payload-1302-4gb-pro.elf +includes/payloads/Linux/fw1302/payload-1302-3gb-pro.elf +includes/payloads/Linux/fw1302/payload-1302-3gb.elf includes/payloads/Linux/fw1302/payload-1302-4gb-baikal.elf includes/payloads/Linux/fw1302/payload-1302-4gb-pro-baikal.elf +includes/payloads/Linux/fw1302/payload-1302-4gb-pro.elf +includes/payloads/Linux/fw1302/payload-1302-4gb.elf +includes/payloads/Linux/fw700/payload-700-1gb-baikal.elf +includes/payloads/Linux/fw700/payload-700-1gb-pro-baikal.elf +includes/payloads/Linux/fw700/payload-700-1gb-pro.elf +includes/payloads/Linux/fw700/payload-700-1gb.elf +includes/payloads/Linux/fw700/payload-700-2gb-baikal.elf +includes/payloads/Linux/fw700/payload-700-2gb-pro-baikal.elf +includes/payloads/Linux/fw700/payload-700-2gb-pro.elf +includes/payloads/Linux/fw700/payload-700-2gb.elf +includes/payloads/Linux/fw700/payload-700-3gb-baikal.elf +includes/payloads/Linux/fw700/payload-700-3gb-pro-baikal.elf +includes/payloads/Linux/fw700/payload-700-3gb-pro.elf +includes/payloads/Linux/fw700/payload-700-3gb.elf +includes/payloads/Linux/fw700/payload-700-4gb-baikal.elf +includes/payloads/Linux/fw700/payload-700-4gb-pro-baikal.elf +includes/payloads/Linux/fw700/payload-700-4gb-pro.elf +includes/payloads/Linux/fw700/payload-700-4gb.elf +includes/payloads/Linux/fw900/payload-900-1gb-baikal.elf +includes/payloads/Linux/fw900/payload-900-1gb-pro-baikal.elf +includes/payloads/Linux/fw900/payload-900-1gb-pro.elf +includes/payloads/Linux/fw900/payload-900-1gb.elf +includes/payloads/Linux/fw900/payload-900-2gb-baikal.elf +includes/payloads/Linux/fw900/payload-900-2gb-pro-baikal.elf +includes/payloads/Linux/fw900/payload-900-2gb-pro.elf +includes/payloads/Linux/fw900/payload-900-2gb.elf +includes/payloads/Linux/fw900/payload-900-3gb-baikal.elf +includes/payloads/Linux/fw900/payload-900-3gb-pro-baikal.elf +includes/payloads/Linux/fw900/payload-900-3gb-pro.elf +includes/payloads/Linux/fw900/payload-900-3gb.elf +includes/payloads/Linux/fw900/payload-900-4gb-baikal.elf +includes/payloads/Linux/fw900/payload-900-4gb-pro-baikal.elf +includes/payloads/Linux/fw900/payload-900-4gb-pro.elf +includes/payloads/Linux/fw900/payload-900-4gb.elf +includes/payloads/Linux/fw903/payload-903-1gb-baikal.elf +includes/payloads/Linux/fw903/payload-903-1gb-pro-baikal.elf +includes/payloads/Linux/fw903/payload-903-1gb-pro.elf +includes/payloads/Linux/fw903/payload-903-1gb.elf +includes/payloads/Linux/fw903/payload-903-2gb-baikal.elf +includes/payloads/Linux/fw903/payload-903-2gb-pro-baikal.elf +includes/payloads/Linux/fw903/payload-903-2gb-pro.elf +includes/payloads/Linux/fw903/payload-903-2gb.elf +includes/payloads/Linux/fw903/payload-903-3gb-baikal.elf +includes/payloads/Linux/fw903/payload-903-3gb-pro-baikal.elf +includes/payloads/Linux/fw903/payload-903-3gb-pro.elf +includes/payloads/Linux/fw903/payload-903-3gb.elf +includes/payloads/Linux/fw903/payload-903-4gb-baikal.elf +includes/payloads/Linux/fw903/payload-903-4gb-pro-baikal.elf +includes/payloads/Linux/fw903/payload-903-4gb-pro.elf +includes/payloads/Linux/fw903/payload-903-4gb.elf +includes/payloads/Linux/fw960/payload-960-1gb-baikal.elf +includes/payloads/Linux/fw960/payload-960-1gb-pro-baikal.elf +includes/payloads/Linux/fw960/payload-960-1gb-pro.elf +includes/payloads/Linux/fw960/payload-960-1gb.elf +includes/payloads/Linux/fw960/payload-960-2gb-baikal.elf +includes/payloads/Linux/fw960/payload-960-2gb-pro-baikal.elf +includes/payloads/Linux/fw960/payload-960-2gb-pro.elf +includes/payloads/Linux/fw960/payload-960-2gb.elf +includes/payloads/Linux/fw960/payload-960-3gb-baikal.elf +includes/payloads/Linux/fw960/payload-960-3gb-pro-baikal.elf +includes/payloads/Linux/fw960/payload-960-3gb-pro.elf +includes/payloads/Linux/fw960/payload-960-3gb.elf +includes/payloads/Linux/fw960/payload-960-4gb-baikal.elf +includes/payloads/Linux/fw960/payload-960-4gb-pro-baikal.elf +includes/payloads/Linux/fw960/payload-960-4gb-pro.elf +includes/payloads/Linux/fw960/payload-960-4gb.elf src/alert.mjs src/config.mjs src/lapse.mjs diff --git a/includes/js/index.js b/includes/js/index.js index ceb7a10..4470ae5 100644 --- a/includes/js/index.js +++ b/includes/js/index.js @@ -608,19 +608,32 @@ function loadGoldHENVer(){ function loadLanguage() { - document.querySelector(`input[name="language"][value="${user.currentLanguage}"]`).checked = true; + const radio = document.querySelector( + `input[name="language"][value="${user.currentLanguage}"]` + ); + + // prevent crash if radios aren't created yet + if (radio) { + radio.checked = true; + } + const langScript = document.getElementById("langScript"); - if(langScript) langScript.remove(); + if (langScript) langScript.remove(); + // load language file return new Promise((resolve, reject) => { - const script = document.createElement('script'); + const script = document.createElement("script"); script.src = `./includes/js/languages/${user.currentLanguage}.js`; - script.onload = () => resolve(window.lang); script.id = "langScript"; - script.onerror = () => reject(new Error(`Failed to load ${user.currentLanguage}`)); + + script.onload = () => resolve(window.lang); + script.onerror = () => + reject(new Error(`Failed to load ${user.currentLanguage}`)); + document.head.appendChild(script); }); } + // Apply lanuage after loading the language file async function initLanguage() { try { @@ -668,7 +681,7 @@ function applyLanguage(lang) { // Document Properties document.title = strings.title || "PSFree Enhanced"; - document.dir = (user.currentLanguage === 'ar') ? 'rtl' : 'ltr'; + document.dir = window.lang?.type === "rtl" ? "rtl" : "ltr"; document.lang = user.currentLanguage; diff --git a/includes/js/langhandler.js b/includes/js/langhandler.js new file mode 100644 index 0000000..7dfd9df --- /dev/null +++ b/includes/js/langhandler.js @@ -0,0 +1,133 @@ +// Define the available language files +const languageFiles = ["en", "fa", "ar", "ru"]; + +var user = user || {}; +user.currentLanguage = sessionStorage.getItem("language") || "en"; + +async function initLanguageUI() { + const list = document.getElementById("language-list"); + if (!list) return; + + list.innerHTML = ""; // clear + + for (const code of languageFiles) { + try { + const lang = await loadLanguageFile(code); + + // create radio + const label = document.createElement("label"); + label.className = "flex items-center text-white/80"; + + const input = document.createElement("input"); + input.type = "radio"; + input.name = "language"; + input.value = code; + input.className = "ml-2"; + input.checked = (code === user.currentLanguage); + + input.onchange = () => setLanguage(code); + + const p = document.createElement("p"); + p.textContent = lang.langname; + + label.appendChild(input); + label.appendChild(p); + + list.appendChild(label); + } catch (e) { + console.warn("Failed to load language", code, e); + } + } + + // Add reload notice button + let reloadBtn = document.getElementById("reload-language-btn"); + if (!reloadBtn) { + reloadBtn = document.createElement("button"); + reloadBtn.id = "reload-language-btn"; + reloadBtn.className = "mt-4 flex items-center justify-center w-10 h-10 bg-blue-600 rounded hover:bg-blue-700"; + reloadBtn.title = "Changing languages requires a reload"; + + reloadBtn.innerHTML = ` + + + + + + + `; + + reloadBtn.onclick = () => location.reload(); + list.parentNode.appendChild(reloadBtn); + } +} + +// Load a language JS file dynamically +function loadLanguageFile(code) { + return new Promise((resolve, reject) => { + const existing = document.getElementById("langScript_" + code); + if (existing) { + resolve(window.lang); + return; + } + + const script = document.createElement("script"); + script.src = `./includes/js/languages/${code}.js`; + script.id = "langScript_" + code; + + script.onload = () => resolve(window.lang); + script.onerror = () => reject(new Error("Failed to load " + code)); + + document.head.appendChild(script); + }); +} + +function setLanguage(code) { + user.currentLanguage = code; + sessionStorage.setItem("language", code); + + // remove old lang script + document.querySelectorAll('script[id^="langScript_"]').forEach(s => s.remove()); + + // load new language + loadLanguageFile(code).then(lang => { + window.lang = lang; + updateTextWithLang(); + + // start pulsing reload button + const reloadBtn = document.getElementById("reload-language-btn"); + if (reloadBtn) reloadBtn.classList.add("pulse-lang-infinite"); + }); +} + +// Optional: update UI texts after switching language +function updateTextWithLang() { + if (!window.lang) return; + const clickText = document.getElementById("click-to-start-text"); + if (clickText) clickText.textContent = window.lang.clickToStart || clickText.textContent; + + const payloadsTitle = document.getElementById("payloads-section-title"); + if (payloadsTitle) payloadsTitle.textContent = window.lang.payloadsHeader || payloadsTitle.textContent; + + const ghVerTitle = document.getElementById("ghVer"); + if (ghVerTitle) ghVerTitle.textContent = window.lang.ghVer || ghVerTitle.textContent; + + const languageHeader = document.querySelector("#chooselang h3"); + if (languageHeader) languageHeader.textContent = window.lang.languageHeader || languageHeader.textContent; +} + +// Init after DOM ready +document.addEventListener("DOMContentLoaded", initLanguageUI); + +// Add CSS for pulsing animation +const style = document.createElement("style"); +style.textContent = ` + @keyframes pulseLangInfinite { + 0% { background-color: #facc15; } /* yellow */ + 50% { background-color: #3b82f6; } /* blue */ + 100% { background-color: #facc15; } + } + .pulse-lang-infinite { + animation: pulseLangInfinite 1.5s ease-in-out infinite; + } +`; +document.head.appendChild(style); diff --git a/includes/js/languages/! sample.js b/includes/js/languages/! sample.js new file mode 100644 index 0000000..df54cf4 --- /dev/null +++ b/includes/js/languages/! sample.js @@ -0,0 +1,97 @@ +// Template language file for PSFree Enhanced +// Copy this file, rename it (e.g., fr.js), and fill in translations +// DO NOT remove or rename keys, only replace empty strings +// (Check en.js for Examples.) +window.lang = { + // Language display name (shows in the language selector) + "langname": "", + "type": "", // Specify RTL if its read from RIGHT TO LEFT or LTR if its read from LEFT TO RIGHT + // Main UI title + "title": "", + + // PS4 firmware compatibility messages + "ps4FwCompatible": "", // Message for compatible firmware, {ps4fw} is replaced dynamically + "ps4FwIncompatible": "", // Message for incompatible firmware, {ps4fw} is replaced dynamically + "notPs4": "", // Message when the page is loaded on a non-PS4 device + "clickToStart": "", // Text for the main "Click to start" button + "chooseHEN": "", // Header for HEN selection section + "exploitStatusHeader": "", // Header for the exploit console panel + "payloadsHeader": "", // Header for the payloads panel + "settingsBtnTitle": "", // Tooltip for settings button + "aboutMenu": "", // Text for the About button + "payloadsToolsHeader": "", // Tab title: Tools + "payloadsGameHeader": "", // Tab title: Games + "payloadsLinuxHeader": "", // Tab title: Linux + + // About popup + "aboutPsfreeHeader": "", // About popup header + "aboutVersion": "", // Version text in About popup + "aboutDescription": "", // Description text in About popup + "closeButton": "", // "Close" button text + + // Settings popup + "settingsPsfreeHeader": "", // Settings popup header + "ps4FirmwareSupportedHeader": "", // "Supported PS4 firmware" text + "languageHeader": "", // Language section header + + // Warning messages (nested object) + "warnings": { + "note1": "", // "Make sure to delete cache data before running exploit..." + "note2": "", // "Allow caching process to complete..." + "note3": "" // "It might take multiple tries to achieve the jailbreak" + }, + + "secondHostBtn": "", // External payload link button text + "alert": "", // Heading for important notice box + "waitingUserInput": "", // Text when waiting for user input + "cache": "", // Cache installation progress text + "httpsHost": "", // Message for HTTPS fallback host scenario + "ghVer": "", // GoldHEN Versions header in settings + "otherVer": "", // Text for "Other versions" dropdown + "latestVer": "", // Text for "Latest" label + + // Fan section + "fanTitle": "", // "Fan Threshold" title + "fanDescription": "", // Description under fan threshold + "selectTemp": "", // Header for temperature selection + "default": "", // Text label for default fan temperature + + // GoldHEN support message + "goldhenFirmwareSemiSupported": "", + + // Southbridge & Model section + "southbridgeHeader": "", // Header for Southbridge & Model section + "southbridgeHelp": "", // "Need help?" text + "southbridgeHelp1": "", // Instruction: How to find Southbridge on PS4 + "southbridgeHelp2": "", // Warning about wrong selection causing kernel panic + "selectSouthbridge": "", // Text for button: "Select your Southbridge and PS4 Model" + + // Payloads-specific messages + "linuxOnlyWithGoldHEN": "", // Warning that Linux payloads require GoldHEN + "busyBinLoader": "", // Error: BinLoader server is busy + "binLoaderNotDetected": "", // Error: BinLoader not running or detected + "disabledBinloader": "", // Message suggesting fallback if BinLoader is off + "unsupportedFirmware": "" // Error when firmware is unsupported +}; + +/* +GUIDE FOR CREATING A LANGUAGE FILE: + +1. Copy this file into /includes/js/languages/ + e.g., fr.js, de.js, tr.js + +2. Set "langname" to the native name of the language + e.g., "Français", "Deutsch", "Türkçe" + +3. Fill in translations for each key. + - Do NOT remove or rename keys. + - Leave nested objects intact (like "warnings"). + +4. Preserve placeholders: + - {ps4fw}, {user}, etc., must remain exactly as-is. + +5. Add the filename to the languages array in langhandler.js: + const languageFiles = ["en", "ar", "ru", "fr"]; + +6. Reload the page and select the language to test. +*/ diff --git a/includes/js/languages/ar.js b/includes/js/languages/ar.js index 8bd3c43..da39dbe 100644 --- a/includes/js/languages/ar.js +++ b/includes/js/languages/ar.js @@ -1,4 +1,6 @@ window.lang = { + "langname": "العربية", + "type": "rtl", "title": "PSFree محسن", "ps4FwCompatible": `بلايستايشن 4 إصدار {ps4fw} | مدعوم`, "ps4FwIncompatible": `بلايستايشن 4 إصدار {ps4fw} | غير مدعوم`, diff --git a/includes/js/languages/en.js b/includes/js/languages/en.js index 3b066ca..c120186 100644 --- a/includes/js/languages/en.js +++ b/includes/js/languages/en.js @@ -1,4 +1,6 @@ window.lang = { + "langname": "English", + "type": "ltr", "title": "PSFree Enhanced", "ps4FwCompatible": `PS4 FW: {ps4fw} | Compatible`, "ps4FwIncompatible": `PS4 FW: {ps4fw} | Incompatible`, diff --git a/includes/js/languages/fa.js b/includes/js/languages/fa.js new file mode 100644 index 0000000..68a5518 --- /dev/null +++ b/includes/js/languages/fa.js @@ -0,0 +1,52 @@ +window.lang = { + "langname": "فارسی", + "type": "rtl", + "title": "PSFree پیشرفته", + "ps4FwCompatible": `PS4 FW: {ps4fw} | سازگار`, + "ps4FwIncompatible": `PS4 FW: {ps4fw} | ناسازگار`, + "notPs4": "شما روی PS4 نیستید، پلتفرم: ", + "clickToStart": "برای شروع کلیک کنید", + "chooseHEN": "نسخه HEN خود را انتخاب کنید", + "exploitStatusHeader": "وضعیت اکسپلویت", + "payloadsHeader": "Payloadها", + "settingsBtnTitle": "تنظیمات", + "aboutMenu": "درباره", + "payloadsToolsHeader": "ابزارها", + "payloadsGameHeader": "بازی", + "payloadsLinuxHeader": "لینوکس", + "aboutPsfreeHeader": "درباره PSFree پیشرفته", + "aboutVersion": "نسخه: 1.5.1", + "aboutDescription": "یک رابط وب برای جلبریک PS4 با استفاده از PSFree همراه با اکسپلویت کرنل Lapse.", + "closeButton": "بستن", + "settingsPsfreeHeader": "تنظیمات", + "ps4FirmwareSupportedHeader": "فریمورهای پشتیبانی شده PS4", + "languageHeader": "زبان", + "warnings": { + "note1": "قبل از اجرای اکسپلویت برای اولین بار، حتماً داده‌های کش را پاک کنید", + "note2": "برای پایداری بهتر اجازه دهید فرآیند کش کامل شود", + "note3": "ممکن است چندین بار تلاش کنید تا جلبریک موفق شود" + }, + "secondHostBtn": "بارگذاری Payloadها با استفاده از BinLoader GoldHEN - لینک خارجی", + "alert": "اطلاعیه مهم", + "waitingUserInput": "در انتظار اقدام کاربر", + "cache": "در حال نصب کش: ", + "httpsHost": "بارگذاری Payloadها از طریق BinLoader GoldHEN در حال حاضر امکان‌پذیر نیست، روی دکمه آبی زیر کلیک کنید تا از هاست پشتیبانی شده استفاده شود.", + "ghVer": "نسخه‌های GoldHEN", + "otherVer": "نسخه‌های دیگر", + "latestVer": "جدیدترین", + "fanTitle": "آستانه فن", + "fanDescription": "تنظیم دمایی که فن در حالت توربو فعال شود", + "selectTemp": "انتخاب دما", + "default": "پیش‌فرض", + "goldhenFirmwareSemiSupported": "* بارگذاری Payloadها از طریق BinLoader GoldHEN روی تمام فریمورها پشتیبانی می‌شود.", + "southbridgeHeader": "Southbridge و مدل", + "southbridgeHelp": "نیاز به راهنما؟", + "southbridgeHelp1": "GoldHEN را بارگذاری کنید و به تنظیمات -> سیستم -> اطلاعات سیستم بروید و Southbridge را بررسی کنید.", + "southbridgeHelp2": "انتخاب گزینه اشتباه ممکن است باعث کرنل پنیک شود!", + "selectSouthbridge": "Southbridge و مدل PS4 خود را انتخاب کنید", + "linuxOnlyWithGoldHEN": "Payloadهای لینوکس فقط باید از طریق BinLoader GoldHEN بارگذاری شوند!", + "busyBinLoader": "بارگذاری Payload امکان‌پذیر نیست، زیرا سرور BinLoader شلوغ است", + "binLoaderNotDetected": "BinLoader GoldHEN شناسایی نشد، آیا فعال است؟!", + "disabledBinloader": "BinLoader GoldHEN در حال اجرا نیست، آیا می‌خواهید Payload را با استفاده از اکسپلویت بارگذاری کنید؟", + "unsupportedFirmware": "فریمور پشتیبانی نشده " +}; diff --git a/includes/js/languages/ru.js b/includes/js/languages/ru.js index 217b97e..7276243 100644 --- a/includes/js/languages/ru.js +++ b/includes/js/languages/ru.js @@ -1,4 +1,6 @@ window.lang = { + "langname": "Русский", + "type": "ltr", "title": "PSFree Enhanced", "ps4FwCompatible": `Версия ПО: {ps4fw} | Совместима`, "ps4FwIncompatible": `ерсия ПО: {ps4fw} | Несовместима`, diff --git a/index.html b/index.html index 108f584..db4db7e 100644 --- a/index.html +++ b/index.html @@ -233,23 +233,10 @@

Supported PS4 firmware

PSFree settings

-

Language

-
- - - - -
-
+

Language

+
+ +

GoldHEN versions

@@ -378,6 +365,8 @@

Select a temperature

+ +