Compare commits
60 commits
3ad5257adc
...
ed4eb7efca
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed4eb7efca | ||
|
|
11e06790c2 | ||
|
|
bb1ebf441a | ||
|
|
43b4cee39a | ||
|
|
7b1b07b483 | ||
|
|
be5326e8e9 | ||
|
|
62e188b560 | ||
|
|
79fe560777 | ||
|
|
003051a28e | ||
|
|
a692971b01 | ||
|
|
7ec8c89e4e | ||
|
|
f4302dbb96 | ||
|
|
b672ab2709 | ||
|
|
557dd92938 | ||
|
|
22b936de44 | ||
|
|
084201b1a1 | ||
|
|
99b2403292 | ||
|
|
ae78f4b381 | ||
|
|
f7745a8e2d | ||
|
|
685d9d0bf9 | ||
|
|
5653d99dc7 | ||
|
|
b2b997b4ce | ||
|
|
0c74a495f5 | ||
|
|
c6afeb2bf8 | ||
|
|
d9067d85af | ||
|
|
2aa2ac7d9a | ||
|
|
90164197dc | ||
|
|
573e06131d | ||
|
|
06c8926a2e | ||
|
|
eabd1017cc | ||
|
|
b870bd255c | ||
|
|
37b5cf6003 | ||
|
|
d761ecba8c | ||
|
|
83683440b2 | ||
|
|
9b18d0b111 | ||
|
|
46cfd9b6f3 | ||
|
|
889545e1ee | ||
|
|
24dc3834b6 | ||
|
|
2a66b40267 | ||
|
|
feb8c5f88e | ||
|
|
300a646a34 | ||
|
|
e875a3196b | ||
|
|
4eb082485d | ||
|
|
7455854528 | ||
|
|
5ab0227624 | ||
|
|
ad2e1cc554 | ||
|
|
02521882e7 | ||
|
|
9a7ca3aca4 | ||
|
|
ca6bb3ae1d | ||
|
|
50df88106e | ||
|
|
945ea630b4 | ||
|
|
5aba461cb3 | ||
|
|
8330940eca | ||
|
|
4d49341918 | ||
|
|
2f0f8a979c | ||
|
|
413c7543ba | ||
|
|
975aa4e2f2 | ||
|
|
a1f9e68f46 | ||
|
|
02dee4a20b | ||
|
|
bc9b9480fb |
|
|
@ -7,7 +7,7 @@
|
|||
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh tools/windows/vcvarsall.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder externals/cmake-modules"
|
||||
|
||||
# license header constants, please change when needed :))))
|
||||
YEAR=2026
|
||||
YEAR=$(date "+%Y")
|
||||
HOLDER="Eden Emulator Project"
|
||||
LICENSE="GPL-3.0-or-later"
|
||||
|
||||
|
|
@ -112,10 +112,10 @@ for file in $FILES; do
|
|||
[ "$excluded" = "true" ] && continue
|
||||
|
||||
case "$file" in
|
||||
*.cmake|*.sh|*CMakeLists.txt)
|
||||
*.cmake|*.sh|*.ps1|*.py|*.rb|*.perl|*.pl|*.nix|*CMakeLists.txt)
|
||||
begin="#"
|
||||
;;
|
||||
*.kt*|*.cpp|*.h|*.qml)
|
||||
*.kt|*.kts|*.cpp|*.h|*.qml|*.c|*.hpp|*.hxx|*.cxx|*.h.in|*.inc)
|
||||
begin="//"
|
||||
;;
|
||||
*)
|
||||
|
|
@ -185,11 +185,12 @@ if [ "$UPDATE" = "true" ]; then
|
|||
|
||||
for file in $SRC_FILES $OTHER_FILES; do
|
||||
case $(basename -- "$file") in
|
||||
*.cmake|*CMakeLists.txt)
|
||||
# Windows Powershell wont use shebangs
|
||||
*.cmake|*.ps1|*CMakeLists.txt)
|
||||
begin="#"
|
||||
shell="false"
|
||||
;;
|
||||
*.sh)
|
||||
*.sh|*.py|*.rb|*.perl|*.pl|*.nix)
|
||||
begin="#"
|
||||
shell=true
|
||||
;;
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
#!/bin/bash -ex
|
||||
|
||||
# git-archive-all
|
||||
export PATH="$PATH:/home/$USER/.local/bin"
|
||||
|
||||
GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`"
|
||||
GITREV="`git show -s --format='%h'`"
|
||||
REV_NAME="eden-unified-source-${GITDATE}-${GITREV}"
|
||||
|
||||
COMPAT_LIST='dist/compatibility_list/compatibility_list.json'
|
||||
|
||||
mkdir artifacts
|
||||
|
||||
touch "${COMPAT_LIST}"
|
||||
git describe --abbrev=0 --always HEAD > GIT-COMMIT
|
||||
git describe --tags HEAD > GIT-TAG || echo 'unknown' > GIT-TAG
|
||||
git-archive-all --include "${COMPAT_LIST}" --include GIT-COMMIT --include GIT-TAG --force-submodules artifacts/"${REV_NAME}.tar"
|
||||
|
||||
cd artifacts/
|
||||
xz -T0 -9 "${REV_NAME}.tar"
|
||||
sha256sum "${REV_NAME}.tar.xz" > "${REV_NAME}.tar.xz.sha256sum"
|
||||
cd ..
|
||||
|
|
@ -75,6 +75,8 @@ cmake_dependent_option(YUZU_USE_QT_WEB_ENGINE "Use QtWebEngine for web applet im
|
|||
set(YUZU_QT_MIRROR "" CACHE STRING "What mirror to use for downloading the bundled Qt libraries")
|
||||
cmake_dependent_option(YUZU_USE_BUNDLED_QT "Download bundled Qt binaries" "${MSVC}" "ENABLE_QT" OFF)
|
||||
|
||||
option(ENABLE_DEBUG_TOOLS "Enable debugging tools (maxwell disassembler, SPIRV translator, etc)" OFF)
|
||||
|
||||
# non-linux bundled qt are static
|
||||
if (YUZU_USE_BUNDLED_QT AND (APPLE OR NOT UNIX))
|
||||
set(YUZU_STATIC_BUILD ON)
|
||||
|
|
@ -119,13 +121,13 @@ if (YUZU_STATIC_BUILD)
|
|||
set(QuaZip-Qt6_FORCE_BUNDLED ON)
|
||||
|
||||
set(YUZU_USE_BUNDLED_FFMPEG ON)
|
||||
set(YUZU_USE_BUNDLED_SDL2 ON)
|
||||
set(YUZU_USE_BUNDLED_SDL3 ON)
|
||||
set(YUZU_USE_BUNDLED_OPENSSL ON)
|
||||
|
||||
set(HTTPLIB_USE_BROTLI_IF_AVAILABLE OFF)
|
||||
elseif(APPLE)
|
||||
set(YUZU_USE_BUNDLED_FFMPEG ON)
|
||||
set(YUZU_USE_BUNDLED_SDL2 ON)
|
||||
set(YUZU_USE_BUNDLED_SDL3 ON)
|
||||
set(YUZU_USE_BUNDLED_OPENSSL ON)
|
||||
|
||||
# these libs do not properly provide static libs/let you do it with cmake
|
||||
|
|
@ -190,13 +192,11 @@ if(MSVC)
|
|||
$<$<COMPILE_LANGUAGE:C,CXX>:$<$<CONFIG:Debug>:/${libflag}d>>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:$<$<CONFIG:Release>:/${libflag}>>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:$<$<CONFIG:RelWithDebInfo>:/${libflag}>>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:$<$<CONFIG:MinSizeRel>:/${libflag}>>
|
||||
)
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:$<$<CONFIG:MinSizeRel>:/${libflag}>>)
|
||||
endif()
|
||||
|
||||
# TODO(crueter): Cleanup, each dep that has a bundled option should allow to choose between bundled, external, system
|
||||
cmake_dependent_option(YUZU_USE_EXTERNAL_SDL2 "Build SDL2 from external source" OFF "NOT MSVC;NOT ANDROID" OFF)
|
||||
cmake_dependent_option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}" "NOT ANDROID" OFF)
|
||||
cmake_dependent_option(YUZU_USE_BUNDLED_SDL3 "Download bundled SDL3 build" "${MSVC}" "NOT ANDROID" OFF)
|
||||
|
||||
option(ENABLE_CUBEB "Enables the cubeb audio backend" ON)
|
||||
|
||||
|
|
@ -230,6 +230,10 @@ cmake_dependent_option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF
|
|||
|
||||
option(YUZU_TESTS "Compile tests" "${BUILD_TESTING}")
|
||||
|
||||
# Install udev rules on Linux (mainly for gyros)
|
||||
# Only acts on joysticks and nothing else.
|
||||
cmake_dependent_option(YUZU_INSTALL_UDEV_RULES "Install udev rules for gyro access" OFF "PLATFORM_LINUX" OFF)
|
||||
|
||||
option(YUZU_DOWNLOAD_ANDROID_VVL "Download validation layer binary for android" ON)
|
||||
|
||||
option(YUZU_LEGACY "Apply patches that improve compatibility with older GPUs (e.g. Snapdragon 865) at the cost of performance" OFF)
|
||||
|
|
@ -358,10 +362,6 @@ if (CXX_GCC OR CXX_CLANG)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
# Other presets, e.g. steamdeck
|
||||
# TODO(crueter): Just have every Linux/Windows use old sdl2
|
||||
set(YUZU_SYSTEM_PROFILE "generic" CACHE STRING "CMake and Externals profile to use. One of: generic, steamdeck")
|
||||
|
||||
# Configure C++ standard
|
||||
# ===========================
|
||||
|
||||
|
|
@ -559,7 +559,7 @@ if (NOT YUZU_STATIC_ROOM)
|
|||
endif()
|
||||
|
||||
if (NOT ANDROID)
|
||||
find_package(SDL2)
|
||||
find_package(SDL3)
|
||||
endif()
|
||||
|
||||
if (USE_DISCORD_PRESENCE)
|
||||
|
|
@ -584,8 +584,6 @@ if (ENABLE_QT)
|
|||
else()
|
||||
AddQt(6.9.3)
|
||||
endif()
|
||||
|
||||
set(YUZU_STATIC_BUILD ON)
|
||||
else()
|
||||
message(STATUS "Using system Qt")
|
||||
if (NOT Qt6_DIR)
|
||||
|
|
@ -594,23 +592,7 @@ if (ENABLE_QT)
|
|||
list(APPEND CMAKE_PREFIX_PATH "${Qt6_DIR}")
|
||||
endif()
|
||||
|
||||
find_package(Qt6 CONFIG REQUIRED COMPONENTS Widgets Charts Concurrent)
|
||||
|
||||
if (YUZU_USE_QT_MULTIMEDIA)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Multimedia)
|
||||
endif()
|
||||
|
||||
if (PLATFORM_LINUX OR PLATFORM_FREEBSD)
|
||||
# yes Qt, we get it
|
||||
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
||||
find_package(Qt6 REQUIRED COMPONENTS DBus OPTIONAL_COMPONENTS GuiPrivate)
|
||||
elseif (UNIX AND NOT APPLE)
|
||||
find_package(Qt6 REQUIRED COMPONENTS DBus Gui)
|
||||
endif()
|
||||
|
||||
if (ENABLE_QT_TRANSLATION)
|
||||
find_package(Qt6 REQUIRED COMPONENTS LinguistTools)
|
||||
endif()
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core)
|
||||
|
||||
if (NOT DEFINED QT_TARGET_PATH)
|
||||
get_target_property(qtcore_path Qt6::Core LOCATION_Release)
|
||||
|
|
@ -633,21 +615,27 @@ if (ENABLE_QT)
|
|||
## Components ##
|
||||
|
||||
# Best practice is to ask for all components at once, so they are from the same version
|
||||
set(YUZU_QT_COMPONENTS Core Widgets Charts Concurrent)
|
||||
if (PLATFORM_LINUX)
|
||||
set(YUZU_QT_COMPONENTS Core Widgets Charts Concurrent Gui)
|
||||
if (PLATFORM_LINUX OR PLATFORM_FREEBSD)
|
||||
list(APPEND YUZU_QT_COMPONENTS DBus)
|
||||
# yes Qt, we get it
|
||||
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
||||
list(APPEND YUZU_QT_OPTIONAL GuiPrivate)
|
||||
endif()
|
||||
|
||||
if (YUZU_USE_QT_MULTIMEDIA)
|
||||
list(APPEND YUZU_QT_COMPONENTS Multimedia)
|
||||
endif()
|
||||
|
||||
if (YUZU_USE_QT_WEB_ENGINE)
|
||||
list(APPEND YUZU_QT_COMPONENTS WebEngineCore WebEngineWidgets)
|
||||
endif()
|
||||
|
||||
if (ENABLE_QT_TRANSLATION)
|
||||
list(APPEND YUZU_QT_COMPONENTS LinguistTools)
|
||||
endif()
|
||||
|
||||
find_package(Qt6 REQUIRED COMPONENTS ${YUZU_QT_COMPONENTS})
|
||||
find_package(Qt6 REQUIRED COMPONENTS ${YUZU_QT_COMPONENTS} OPTIONAL_COMPONENTS ${YUZU_QT_OPTIONAL})
|
||||
set(QT_MAJOR_VERSION 6)
|
||||
# Qt6 sets cxx_std_17 and we need to undo that
|
||||
set_target_properties(Qt6::Platform PROPERTIES INTERFACE_COMPILE_FEATURES "")
|
||||
|
|
@ -715,6 +703,12 @@ endif()
|
|||
|
||||
add_subdirectory(src)
|
||||
|
||||
if (ENABLE_DEBUG_TOOLS)
|
||||
add_subdirectory(tools/maxwell-disas)
|
||||
add_subdirectory(tools/maxwell-spirv)
|
||||
add_subdirectory(tools/maxwell-ir)
|
||||
endif()
|
||||
|
||||
# Set yuzu project or yuzu-cmd project as default StartUp Project in Visual Studio depending on whether QT is enabled or not
|
||||
if(ENABLE_QT)
|
||||
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT yuzu)
|
||||
|
|
@ -730,6 +724,8 @@ endif()
|
|||
# https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
|
||||
# https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html
|
||||
# https://www.freedesktop.org/software/appstream/docs/
|
||||
|
||||
# TODO: Icon/install handling n such should be put into dist/CMakeLists.txt
|
||||
if(ENABLE_QT AND UNIX AND NOT APPLE)
|
||||
install(FILES "dist/dev.eden_emu.eden.desktop"
|
||||
DESTINATION "share/applications")
|
||||
|
|
@ -742,3 +738,10 @@ if(ENABLE_QT AND UNIX AND NOT APPLE)
|
|||
install(FILES "dist/dev.eden_emu.eden.metainfo.xml"
|
||||
DESTINATION "share/metainfo")
|
||||
endif()
|
||||
|
||||
if (YUZU_INSTALL_UDEV_RULES)
|
||||
include(GNUInstallDirs)
|
||||
|
||||
install(FILES "dist/72-eden-input.rules"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/udev/rules.d")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -715,8 +715,8 @@ function(AddCIPackage)
|
|||
"${${ARTIFACT_PACKAGE}_SOURCE_DIR}" PARENT_SCOPE)
|
||||
|
||||
if (PKG_ARGS_MODULE)
|
||||
list(APPEND CMAKE_PREFIX_PATH "${${ARTIFACT_PACKAGE}_SOURCE_DIR}")
|
||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
||||
list(PREPEND CMAKE_PREFIX_PATH "${${ARTIFACT_PACKAGE}_SOURCE_DIR}")
|
||||
Propagate(CMAKE_PREFIX_PATH)
|
||||
endif()
|
||||
else()
|
||||
find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED)
|
||||
|
|
@ -730,7 +730,7 @@ function(AddQt version)
|
|||
endif()
|
||||
|
||||
AddCIPackage(
|
||||
NAME Qt
|
||||
NAME qt
|
||||
PACKAGE Qt6
|
||||
VERSION ${version}
|
||||
MIN_VERSION 6
|
||||
|
|
@ -740,5 +740,8 @@ function(AddQt version)
|
|||
freebsd-amd64 solaris-amd64 openbsd-amd64
|
||||
MODULE)
|
||||
|
||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
|
||||
find_package(Qt6 REQUIRED PATHS ${Qt6_SOURCE_DIR} NO_DEFAULT_PATH)
|
||||
|
||||
Propagate(CMAKE_PREFIX_PATH)
|
||||
Propagate(Qt6_SOURCE_DIR)
|
||||
endfunction()
|
||||
|
|
|
|||
|
|
@ -112,7 +112,8 @@
|
|||
"options": [
|
||||
"QUAZIP_QT_MAJOR_VERSION 6",
|
||||
"QUAZIP_INSTALL OFF",
|
||||
"QUAZIP_ENABLE_QTEXTCODEC OFF"
|
||||
"QUAZIP_ENABLE_QTEXTCODEC OFF",
|
||||
"QUAZIP_BZIP2 OFF"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
8
dist/72-eden-input.rules
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# Allow systemd-logind to manage user access to hidraw with this file
|
||||
# On most systems, this file should be installed to /etc/udev/rules.d/72-eden-input.rules
|
||||
# Consult your distro if this is not the case
|
||||
|
||||
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ENV{ID_INPUT_JOYSTICK}=="1", MODE="0660", TAG+="uaccess"
|
||||
19
dist/72-yuzu-input.rules
vendored
|
|
@ -1,19 +0,0 @@
|
|||
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# Allow systemd-logind to manage user access to hidraw with this file
|
||||
# On most systems, this file should be installed to /etc/udev/rules.d/72-yuzu-input.rules
|
||||
# Consult your distro if this is not the case
|
||||
|
||||
# Switch Pro Controller (USB/Bluetooth)
|
||||
KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="2009", MODE="0660", TAG+="uaccess"
|
||||
KERNEL=="hidraw*", KERNELS=="*057e:2009*", MODE="0660", TAG+="uaccess"
|
||||
|
||||
# Joy-Con L (Bluetooth)
|
||||
KERNEL=="hidraw*", KERNELS=="*057e:2006*", MODE="0660", TAG+="uaccess"
|
||||
|
||||
# Joy-Con R (Bluetooth)
|
||||
KERNEL=="hidraw*", KERNELS=="*057e:2007*", MODE="0660", TAG+="uaccess"
|
||||
|
||||
# Joy-Con Charging Grip (USB)
|
||||
KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="200e", MODE="0660", TAG+="uaccess"
|
||||
207
dist/dev.eden_emu.eden.svg
vendored
|
|
@ -6,8 +6,8 @@
|
|||
viewBox="0 0 512 512"
|
||||
version="1.1"
|
||||
id="svg7"
|
||||
sodipodi:docname="1stanni.svg"
|
||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
||||
sodipodi:docname="base.svg.2026_01_12_14_43_47.0.svg"
|
||||
inkscape:version="1.4.2 (ebf0e94, 2025-05-08)"
|
||||
inkscape:export-filename="base.svg.2026_01_12_14_43_47.0.svg"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
|
|
@ -19,34 +19,36 @@
|
|||
<defs
|
||||
id="defs7">
|
||||
<linearGradient
|
||||
id="linearGradient34"
|
||||
id="linearGradient1"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
style="stop-color:#ffd700;stop-opacity:1;"
|
||||
style="stop-color:#ff2e88;stop-opacity:0.5;"
|
||||
offset="0"
|
||||
id="stop34" />
|
||||
id="stop3" />
|
||||
<stop
|
||||
style="stop-color:#ffd700;stop-opacity:0.48031053;"
|
||||
offset="1"
|
||||
id="stop35" />
|
||||
style="stop-color:#bf42f6;stop-opacity:0.5;"
|
||||
offset="0.44631511"
|
||||
id="stop4" />
|
||||
<stop
|
||||
style="stop-color:#5da5ed;stop-opacity:0.5;"
|
||||
offset="0.90088946"
|
||||
id="stop2" />
|
||||
</linearGradient>
|
||||
<rect
|
||||
x="20.999999"
|
||||
y="287.30493"
|
||||
width="487.07235"
|
||||
height="134.69506"
|
||||
id="rect22" />
|
||||
<linearGradient
|
||||
id="linearGradient21"
|
||||
id="linearGradient138"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
style="stop-color:#3a0057;stop-opacity:1;"
|
||||
style="stop-color:#ff2e88;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop21" />
|
||||
id="stop152" />
|
||||
<stop
|
||||
style="stop-color:#830091;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop22" />
|
||||
style="stop-color:#bf42f6;stop-opacity:1;"
|
||||
offset="0.44971901"
|
||||
id="stop137" />
|
||||
<stop
|
||||
style="stop-color:#5da5ed;stop-opacity:1;"
|
||||
offset="0.89793283"
|
||||
id="stop138" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="swatch37"
|
||||
|
|
@ -114,6 +116,33 @@
|
|||
width="521.34025"
|
||||
height="248.94868"
|
||||
id="rect24" />
|
||||
<linearGradient
|
||||
id="linearGradient11"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
style="stop-color:#ff2e88;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop11" />
|
||||
<stop
|
||||
style="stop-color:#bf42f6;stop-opacity:1;"
|
||||
offset="0.44971901"
|
||||
id="stop154" />
|
||||
<stop
|
||||
style="stop-color:#5da5ed;stop-opacity:1;"
|
||||
offset="0.89793283"
|
||||
id="stop12" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient138"
|
||||
id="linearGradient6"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.118028,0,0,1.116699,-46.314723,-42.388667)"
|
||||
x1="270.39996"
|
||||
y1="40.000019"
|
||||
x2="270.39996"
|
||||
y2="494.39996"
|
||||
spreadMethod="pad" />
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath18">
|
||||
|
|
@ -136,6 +165,16 @@
|
|||
inkscape:label="Circle"
|
||||
r="191.89999" />
|
||||
</clipPath>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient11"
|
||||
id="linearGradient27"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-6.9401139e-5,-2.8678628)"
|
||||
x1="256.00012"
|
||||
y1="102.94693"
|
||||
x2="256.00012"
|
||||
y2="409.05307" />
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath128">
|
||||
|
|
@ -148,106 +187,14 @@
|
|||
</clipPath>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient21"
|
||||
id="linearGradient22"
|
||||
xlink:href="#linearGradient1"
|
||||
id="linearGradient2"
|
||||
x1="256"
|
||||
y1="0"
|
||||
y1="64"
|
||||
x2="256"
|
||||
y2="512"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient34"
|
||||
id="linearGradient35"
|
||||
x1="256"
|
||||
y1="-0.048701428"
|
||||
x2="256"
|
||||
y2="512.04932"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
inkscape:label="Glowing Bubble"
|
||||
inkscape:menu="Ridges"
|
||||
inkscape:menu-tooltip="Bubble effect with refraction and glow"
|
||||
x="-0.19420711"
|
||||
y="-0.11239541"
|
||||
width="1.3884142"
|
||||
height="1.2247908"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
id="filter61">
|
||||
<feGaussianBlur
|
||||
stdDeviation="1"
|
||||
result="result1"
|
||||
id="feGaussianBlur56" />
|
||||
<feGaussianBlur
|
||||
stdDeviation="10"
|
||||
result="result6"
|
||||
in="result1"
|
||||
id="feGaussianBlur57" />
|
||||
<feComposite
|
||||
operator="atop"
|
||||
in="result6"
|
||||
in2="result1"
|
||||
result="result8"
|
||||
id="feComposite57" />
|
||||
<feComposite
|
||||
operator="xor"
|
||||
result="fbSourceGraphic"
|
||||
in="result6"
|
||||
in2="result8"
|
||||
id="feComposite58" />
|
||||
<feColorMatrix
|
||||
result="fbSourceGraphicAlpha"
|
||||
in="fbSourceGraphic"
|
||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 2 0 "
|
||||
id="feColorMatrix58" />
|
||||
<feGaussianBlur
|
||||
result="result0"
|
||||
in="fbSourceGraphicAlpha"
|
||||
stdDeviation="1"
|
||||
id="feGaussianBlur58" />
|
||||
<feSpecularLighting
|
||||
specularExponent="35"
|
||||
specularConstant="1.5"
|
||||
surfaceScale="-2"
|
||||
lighting-color="rgb(255,255,255)"
|
||||
result="result1"
|
||||
in="result0"
|
||||
id="feSpecularLighting58">
|
||||
<feDistantLight
|
||||
azimuth="230"
|
||||
elevation="60"
|
||||
id="feDistantLight58" />
|
||||
</feSpecularLighting>
|
||||
<feComposite
|
||||
operator="in"
|
||||
result="result2"
|
||||
in="result1"
|
||||
in2="fbSourceGraphicAlpha"
|
||||
id="feComposite59" />
|
||||
<feComposite
|
||||
k3="1.2"
|
||||
k2="1.1"
|
||||
operator="arithmetic"
|
||||
result="result4"
|
||||
in="fbSourceGraphic"
|
||||
in2="result2"
|
||||
id="feComposite60" />
|
||||
<feGaussianBlur
|
||||
result="result80"
|
||||
in="result4"
|
||||
stdDeviation="0.5"
|
||||
id="feGaussianBlur60" />
|
||||
<feComposite
|
||||
operator="atop"
|
||||
in="result9"
|
||||
in2="result80"
|
||||
result="result91"
|
||||
id="feComposite61" />
|
||||
<feBlend
|
||||
mode="multiply"
|
||||
in2="result91"
|
||||
id="feBlend61" />
|
||||
</filter>
|
||||
y2="448"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.3229974,0,0,1.3214002,-82.687336,-82.290326)" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
|
|
@ -258,29 +205,23 @@
|
|||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="213.49999"
|
||||
inkscape:cy="248.99999"
|
||||
inkscape:window-width="1600"
|
||||
inkscape:window-height="849"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:zoom="1.4142136"
|
||||
inkscape:cx="261.62951"
|
||||
inkscape:cy="230.87036"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1008"
|
||||
inkscape:window-x="1080"
|
||||
inkscape:window-y="351"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg7" />
|
||||
<circle
|
||||
style="fill:url(#linearGradient22);fill-opacity:1;stroke:none;stroke-width:8"
|
||||
id="path21"
|
||||
cx="256"
|
||||
cy="256"
|
||||
r="256" />
|
||||
<path
|
||||
id="path8-7"
|
||||
style="display:inline;mix-blend-mode:normal;fill:url(#linearGradient35);fill-opacity:1;fill-rule:nonzero;stroke:#320081;stroke-width:4.067;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
style="display:inline;mix-blend-mode:multiply;fill:url(#linearGradient6);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2);stroke-width:3.9666;stroke-dasharray:none;stroke-opacity:0.566238;paint-order:stroke fill markers"
|
||||
inkscape:label="Circle"
|
||||
d="M 256,2.2792898 A 254.0155,253.71401 0 0 0 150.68475,25.115202 c 19.54414,1.070775 38.74692,5.250294 51.56848,11.647658 14.14361,7.056691 28.63804,19.185961 39.4212,29.347551 h 40.60981 c 1.03847,-0.68139 2.10297,-1.36938 3.1938,-2.05957 5.45602,-15.78533 14.79164,-43.183497 19.49612,-57.0097682 A 254.0155,253.71401 0 0 0 256,2.2792898 Z m 61.57106,7.567234 -18.26098,46.1544672 c 7.79702,-4.13918 16.35655,-7.87447 25.20671,-10.87081 23.1229,-7.828433 43.96931,-10.170904 54.94058,-10.868226 A 254.0155,253.71401 0 0 0 317.57106,9.8465238 Z m 65.39277,26.4001532 c -9.68256,4.806644 -33.05532,16.642034 -55.68217,29.863734 H 424.4677 A 254.0155,253.71401 0 0 0 382.96383,36.246677 Z M 113.90698,45.690231 A 254.0155,253.71401 0 0 0 87.532302,66.110411 H 194.2739 c -1.47402,-0.80231 -2.35141,-1.25949 -2.35141,-1.25949 l 10.4496,-11.83348 -38.40568,7.01234 c 0,1e-5 -12.21537,-4.60266 -40.17313,-12.27223 -3.45336,-0.94731 -6.75329,-1.61824 -9.8863,-2.06732 z m -36.803618,30.18635 a 254.0155,253.71401 0 0 0 -34.88372,43.090929 h 59.976738 c 18.11461,-12.04145 40.14252,-22.882149 62.31266,-24.534159 52.93006,-3.9444 70.16538,1.86342 70.16538,1.86342 0,0 -4.612,-4.8206 -14.51938,-13.36656 -2.72366,-2.34942 -6.0844,-4.77373 -9.52455,-7.05363 z m 174.472868,0 c 4.57322,4.7186 7.29716,7.83565 7.29716,7.83565 0,0 3.53501,-3.18484 9.62532,-7.83565 z m 60.27649,0 c -21.56573,15.45339 -25.4703,27.979669 -25.4703,27.979669 0,0 54.83326,-19.215729 100.70543,-0.31228 11.63986,4.79661 21.58481,10.13159 29.94832,15.42354 h 52.74419 A 254.0155,253.71401 0 0 0 434.89664,75.876581 Z M 36.250648,128.73367 A 254.0155,253.71401 0 0 0 16.372095,171.82459 H 147.45478 c 1.45695,-2.5815 3.06539,-5.08648 4.83979,-7.48982 14.23694,-19.28301 27.92088,-30.0088 36.86047,-35.6011 h -30.25323 c -5.87346,0.93472 -12.04945,1.99094 -18.28166,3.16937 -30.12936,5.69727 -81.157618,22.78945 -81.157618,22.78945 0,0 11.47125,-12.39249 29.11369,-25.95882 z m 265.630492,0 c 33.48676,11.2434 52.42799,26.78443 62.7752,43.09092 h 130.97157 a 254.0155,253.71401 0 0 0 -19.87856,-43.09092 h -44.81136 c 14.85233,11.5863 21.59948,20.9854 21.59948,20.9854 0,0 -33.5226,-12.37087 -66.0646,-20.9854 z m -45.96641,16.27007 c -1.00419,0.0106 -10.12705,0.72026 -44.98966,20.64729 -3.12132,1.78406 -6.25434,3.86182 -9.37468,6.17356 h 41.81911 c 7.17181,-17.34774 12.64083,-26.82085 12.64083,-26.82085 0,0 -0.0287,-7.1e-4 -0.0957,0 z m 14.18088,0.0465 c 0,0 -3.31228,9.32762 -7.30492,26.77438 h 51.78554 C 287.6577,146.14158 270.09561,145.0502 270.09561,145.0502 Z M 13.152456,181.59075 A 254.0155,253.71401 0 0 0 3.927651,224.68167 H 134.1447 c 0.56161,-12.72411 2.67825,-28.50188 8.61499,-43.09092 z m 176.661504,0 c -14.27121,13.10564 -27.60733,29.58761 -37.56073,43.09092 h 73.3721 c 4.47018,-16.79061 9.35068,-31.26371 13.86562,-43.09092 z m 70.85787,0 c -2.41384,11.76417 -4.9032,26.20707 -6.94831,43.09092 H 360.4832 c -8.32133,-10.88917 -20.66988,-26.17008 -36.35141,-43.09092 z m 109.17313,0 c 6.63611,15.24089 6.92441,30.5373 5.57882,43.09092 h 132.64857 a 254.0155,253.71401 0 0 0 -9.22481,-43.09092 z M 2.90181,234.44783 A 254.0155,253.71401 0 0 0 1.984498,255.9933 254.0155,253.71401 0 0 0 2.90181,277.53876 h 211.89923 c 2.25762,-15.52555 5.14325,-29.93448 8.3385,-43.09093 h -77.8863 c -6.46396,9.27617 -10.33076,15.56549 -10.33076,15.56549 0,0 -0.82623,-6.14945 -0.9354,-15.56549 z m 249.72093,0 c -1.3692,13.09684 -2.4456,27.49209 -3.02068,43.09093 h 259.49613 a 254.0155,253.71401 0 0 0 0.91731,-21.54546 254.0155,253.71401 0 0 0 -0.91731,-21.54547 H 374.02584 c -0.445,2.5469 -0.90878,4.89768 -1.32817,7.01751 0,0 -1.69726,-2.53821 -4.94056,-7.01751 z M 3.927651,287.30493 a 254.0155,253.71401 0 0 0 9.224805,43.09091 H 214.04393 c -1.29238,-15.40742 -1.57503,-30.04388 -0.41861,-43.09091 z m 245.385009,0 c -0.30355,13.54349 -0.22032,27.92598 0.36951,43.09091 h 249.16537 a 254.0155,253.71401 0 0 0 9.22481,-43.09091 z M 16.369511,340.16201 a 254.0155,253.71401 0 0 0 19.878554,43.09091 H 221.4677 c -2.69781,-14.4523 -4.96108,-29.01285 -6.4832,-43.09091 z m 233.842379,0 c 1.15864,15.47765 3.81286,29.83979 7.51679,43.09091 h 218.02325 a 254.0155,253.71401 0 0 0 19.87856,-43.09091 z M 42.217052,393.01909 a 254.0155,253.71401 0 0 0 34.88372,43.09093 H 233.09561 c -3.40902,-13.67281 -6.76794,-28.2531 -9.73902,-43.09093 z m 218.490958,0 c 5.34985,16.15926 12.22007,30.51982 19.68733,43.09093 h 154.50389 a 254.0155,253.71401 0 0 0 34.88371,-43.09093 z M 87.529722,445.87618 a 254.0155,253.71401 0 0 0 166.229968,63.8208 c -3.67805,-12.0825 -10.85464,-35.49828 -18.18088,-63.8208 z m 199.010328,0 c 17.5887,26.43772 36.99259,43.60598 47.33592,51.61309 a 254.0155,253.71401 0 0 0 90.59431,-51.61309 z" />
|
||||
<path
|
||||
id="path27"
|
||||
style="display:inline;mix-blend-mode:multiply;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
style="display:inline;mix-blend-mode:multiply;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient27);stroke-width:3;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
d="m 318.98012,441.7375 c -9.87518,-6.73978 -64.39137,-49.0272 -67.68975,-127.81978 -3.69298,-88.21893 15.36468,-141.91029 15.36468,-141.91029 0,0 16.00378,0.99513 39.80316,26.53195 23.79939,25.53753 37.74965,46.43102 37.74965,46.43102 3.91262,-19.79992 12.84563,-66.32402 -60.72865,-87.55523 0,0 12.82326,-5.38883 39.3925,-3.81382 26.56907,1.57572 81.6822,21.93799 81.6822,21.93799 0,0 -14.79766,-20.63773 -49.47063,-34.94295 -34.67291,-14.30533 -76.1182,0.23644 -76.1182,0.23644 0,0 3.86959,-12.43127 27.22669,-26.38478 23.35718,-13.9537 49.27409,-26.501533 49.27409,-26.501533 0,0 -21.97854,-0.26548 -47.67725,8.44535 -6.68948,2.267506 -13.15863,5.094213 -19.05208,8.226563 l 16.05803,-40.634103 -4.4617,-1.89059 -5.1305,-0.95965 c 0,0 -11.24072,33.12428 -16.92051,49.576513 -12.13137,7.68489 -20.11005,14.87735 -20.11005,14.87735 0,0 -21.90573,-25.09227 -42.79668,-35.527803 -26.03412,-13.00525 -86.88249,-13.90359 -94.0044,10.401173 0,0 13.56804,-7.884703 34.70032,-2.080917 21.13214,5.803997 30.3644,9.287307 30.3644,9.287307 l 29.02989,-5.30681 -7.89811,8.95527 c 0,0 13.8496,7.21324 21.33822,13.68063 7.48859,6.46722 10.9757,10.11472 10.9757,10.11472 0,0 -13.02739,-4.39388 -53.03507,-1.40893 -40.00771,2.98473 -79.40016,45.60209 -79.40016,45.60209 0,0 38.57037,-12.93531 61.34393,-17.24677 22.77354,-4.31126 44.52166,-6.46757 44.52166,-6.46757 0,0 -17.23298,5.97003 -35.69792,31.00932 -18.46522,25.03987 -13.13146,64.83866 -13.13146,64.83866 0,0 29.33874,-47.7577 57.44675,-63.84249 28.10798,-16.08527 34.0799,-15.6238 34.0799,-15.6238 0,0 -22.56785,39.13486 -31.39017,101.98268 -8.03005,57.2039 26.77689,163.75449 31.1572,178.89699"
|
||||
sodipodi:nodetypes="cscsccscscscsccccccscscccscscscscscsc"
|
||||
inkscape:label="MainOutline"
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 13 KiB |
BIN
dist/eden.bmp
vendored
|
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 256 KiB |
BIN
dist/eden.ico
vendored
|
Before Width: | Height: | Size: 556 KiB After Width: | Height: | Size: 335 KiB |
106
dist/languages/ar.ts
vendored
|
|
@ -9310,10 +9310,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation>إلغاء</translation>
|
||||
</message>
|
||||
|
|
@ -9334,7 +9334,7 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
|
|
@ -9343,204 +9343,204 @@ p, li { white-space: pre-wrap; }
|
|||
%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation>جارٍ التحقق من السلامة...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation>تم التحقق من السلامة بنجاح!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation>اكتملت العملية بنجاح.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation>فشل التحقق من السلامة!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation>قد تكون محتويات الملف تالفة أو مفقودة.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation>تعذر إجراء التحقق من السلامة</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation>تم إلغاء تثبيت الفيرموير، قد يكون الفيرموير في حالة سيئة أو تآلف. تعذر التحقق من صحة محتويات الملف.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation>حدد موقع المفاتيح المفرغة</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation>تم تثبيت مفاتيح فك التشفير بنجاح</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation>فشل تثبيت مفاتيح فك التشفير</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation>تم الكشف عن ملفات تعريف مهملة!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation>قد تحدث أمور سيئة غير متوقعة إذا لم تقرأ هذا<br>!لقد اكتشف إيدن مجلدات الحفظ التالية بدون ملف تعريف مرفق:<br>%1<br><br>ملفات التعريف التالية صالحة:<br>%2<br><br>انقر على ”موافق“ لفتح مجلد الحفظ وإصلاح ملفات التعريف الخاصة بك.<br>تلميح: انسخ محتويات المجلد الأكبر أو آخر مجلد تم تعديله إلى مكان آخر، واحذف جميع ملفات التعريف اليتيمة، وانقل المحتويات المنسوخة إلى ملف التعريف الصحيح.<br><br>هل ما زلت تشعر بالارتباك؟ انظر إلى <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>صفحة المساعدة</a>.<br></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation>مسح البيانات بالفعل؟</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation>قد يتم فقدان بيانات مهمة!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation>هل أنت متأكد حقًا؟</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation>بمجرد حذفها، لن تتمكن من استعادة بياناتك!
|
||||
قم بذلك فقط إذا كنت متأكدًا بنسبة 100٪ أنك تريد حذف هذه البيانات.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation>إزالة...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation>حدد موقع التصدير</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation>%1.zip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation>Zipped Archives (*.zip)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation>تصدير البيانات. قد يستغرق هذا بعض الوقت...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation>التصدير</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation>تم التصدير بنجاح</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation>تم تصدير البيانات بنجاح.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation>تم إلغاء التصدير</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation>تم إلغاء التصدير من قبل المستخدم.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation>فشل التصدير</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation>تأكد من أن لديك أذونات الكتابة على المجلد المحدد وحاول مرة أخرى.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation>حدد موقع الاستيراد</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation>تحذير الاستيراد</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation>سيتم حذف جميع البيانات السابقة في هذا المجلد. هل أنت متأكد من رغبتك في المتابعة؟</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation>استيراد البيانات. قد يستغرق هذا بعض الوقت...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation>استيراد</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation>تم الاستيراد بنجاح</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation>تم استيراد البيانات بنجاح.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation>تم إلغاء الاستيراد</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation>تم إلغاء الاستيراد من قبل المستخدم.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation>فشل الاستيراد</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation>تأكد من أن لديك أذونات قراءة على المجلد المحدد وحاول مرة أخرى.</translation>
|
||||
</message>
|
||||
|
|
@ -9902,18 +9902,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
عادةً ما تكون تعديلات (.pchtxt) ولكن التصحيحات .RomFS معظم التعديلات هي ExeFS.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation>فشل استخراج التعديل</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation>%1 فشل إنشاء مجلد المؤقت</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation>الملف المضغوط 1% فارغ</translation>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/ca.ts
vendored
|
|
@ -9202,10 +9202,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Cancel·lar</translation>
|
||||
</message>
|
||||
|
|
@ -9226,210 +9226,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation>%1.zip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation>Exportant</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9786,18 +9786,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/cs.ts
vendored
|
|
@ -9190,10 +9190,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9214,210 +9214,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9774,18 +9774,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/da.ts
vendored
|
|
@ -9194,10 +9194,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9218,210 +9218,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9778,18 +9778,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/de.ts
vendored
|
|
@ -9214,10 +9214,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9238,210 +9238,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9798,18 +9798,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/el.ts
vendored
|
|
@ -9186,10 +9186,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9210,210 +9210,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9770,18 +9770,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/es.ts
vendored
|
|
@ -9316,10 +9316,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Cancelar</translation>
|
||||
</message>
|
||||
|
|
@ -9340,7 +9340,7 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
|
|
@ -9349,206 +9349,206 @@ p, li { white-space: pre-wrap; }
|
|||
%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation>Verificando integridad...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation>¡La verificación de integridad ha sido un éxito!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation>La operación se completó con éxito.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation>¡Verificación de integridad se fallo!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation>Los contenidos del archivo pueden estar corruptos.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation>No se pudo ejecutar la verificación de integridad</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation>Instalacion de firmware cancellado , firmware podria estar en un mal estado o coruptos. contenidos de el archivo no pudieron ser verificados para validez.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation>Seleccionar ubicación de origen de los llaves volcados</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation>Instalación de llaves de descifra salo con exito</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation>Instalacion de las llaves de descifra se fallo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation>¡Se detectaron perfiles huérfanos!
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation>¡PODRÍAN SUCEDER COSAS MALAS E INESPERADAS SI NO LEE ESTO!<br>Eden ha detectado que los siguientes directorios de guardado no tienen perfil asociado:<br>%1<br><br>Los siguientes perfiles son válidos:<br>%2<br><br>Haga clic en "Aceptar" para abrir la carpeta de guardado y arreglar sus perfiles.<br>Consejo: copie el contenido de la carpeta más grande o la última modificada en otro lugar, elimine todos los perfiles huérfanos y mueva el contenido copiado al perfil correcto.<br><br>¿Aún tiene dudas? Consulte la <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>página de ayuda</a>.<br></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation>¿Realmente deseas borrar los datos?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation>¡Podrías perder información importante!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation>¿Estás REALMENTE seguro?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation>¡Una vez eliminados, tus datos no podrán recuperarse!
|
||||
Haz esto solo si estás 100% seguro de que deseas borrarlos.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation>Limpiando...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation>Selecciona la Ubicación de Exportación.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation>%1.zip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation>Archivos comprimidos (*.zip)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation>Exportando datos. Esto puede tardar un poco...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation>Exportando</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation>Exportación Exitosa.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation>Los datos se exportaron correctamente.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation>Exportación cancelada.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation>La exportación fue cancelada por el usuario.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation>Exportación Fallida</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation>Asegúrate de tener permisos de escritura en el directorio seleccionado e inténtalo nuevamente.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation>Seleccionar ubicación de importación.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation>Advertencia al importar datos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation>Todos los datos anteriores en este directorio serán eliminados. ¿Estás seguro de que deseas continuar?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation>Importando datos. Esto puede tomar unos minutos...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation>Importando</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation>Importación completada con éxito.
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation>Los datos se importaron correctamente.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation>La importación fue cancelada.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation>La importación fue cancelada por el usuario.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation>Importación Fallida.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation>Asegúrate de tener permisos de lectura en el directorio seleccionado e inténtalo nuevamente.</translation>
|
||||
</message>
|
||||
|
|
@ -9912,18 +9912,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
La mayoría de los mods son RomFS, pero los parches (.pchtxt) suelen ser ExeFS.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation>Fallo al extraer el mod</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation>Fallo al crear directorio temporal %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation>El archivo zip %1 está vacío</translation>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/fi.ts
vendored
|
|
@ -9163,10 +9163,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9187,210 +9187,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9747,18 +9747,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/fr.ts
vendored
|
|
@ -9273,10 +9273,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Annuler</translation>
|
||||
</message>
|
||||
|
|
@ -9297,7 +9297,7 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
|
|
@ -9306,204 +9306,204 @@ p, li { white-space: pre-wrap; }
|
|||
%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation>Vérification de l'intégrité...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation>La vérification de l'intégrité réussi !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation>L'opération s'est déroulée avec succès.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation>La vérification de l'intégrité a échoué !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation>Le contenu d'un fichier peut être corrompu or manquant.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation>La vérification de l'intégrité n'a pas pu être effectuée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation>Installation du firmware annulée, le firmware est peut-être en mauvais état ou corrompu. Impossible de vérifier la validité du contenu du fichier.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation>Sélectionner Emplacement Clés Extraites</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation>Installation des clés de décryptage avec succès</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation>Installation des clés de décryptage échoué</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation>Profils orphelins détectés !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation>DES CHOSES GRAVES INATTENDUES PEUVENT SURVENIR SI VOUS NE LISEZ PAS CECI !<br>Eden a détecté les répertoires de sauvegarde suivants sans profil associé :<br>%1<br><br>Les profils suivants sont valides :<br>%2<br><br>Cliquez sur « OK » pour ouvrir votre dossier de sauvegarde et corriger vos profils.<br>Astuce : copiez le contenu du dossier le plus volumineux ou le plus récemment modifié ailleurs, supprimez tous les profils orphelins et déplacez le contenu copié vers le profil correct.<br><br>Toujours confus ? Consultez la <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>page d’aide</a>.<br></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation>Vraiment effacer les données ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation>Des données importantes peuvent être perdues !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation>Êtes-vous VRAIMENT sûr ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation>Une fois supprimées, vos données NE POURRONT PAS être récupérées !
|
||||
Ne faites cela que si vous êtes sûr à 100 % de vouloir supprimer ces données.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation>Suppression en cours…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation>Sélectionner l’emplacement d’exportation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation>%1.zip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation>Archives compressées (*.zip)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation>Exportation des données en cours. Cela peut prendre un certain temps…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation>Exportation en cours…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation>Exportation réussie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation>Les données ont été exportées avec succès.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation>Exportation annulée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation>L’exportation a été annulée par l’utilisateur.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation>Échec de l’exportation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation>Assurez-vous d’avoir les permissions d’écriture sur le répertoire ciblé et réessayez.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation>Sélectionner l’emplacement d’importation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation>Avertissement d’importation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation>Toutes les données précédentes de ce répertoire seront supprimées. Êtes-vous sûr de vouloir continuer ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation>Importation des données en cours. Cela peut prendre un certain temps…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation>Importation en cours…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation>Importation réussie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation>Les données ont été importées avec succès.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation>Importation annulée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation>L’importation a été annulée par l’utilisateur.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation>Échec de l’importation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation>Assurez-vous d’avoir les permissions de lecture sur le répertoire ciblé et réessayez.</translation>
|
||||
</message>
|
||||
|
|
@ -9863,18 +9863,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/hu.ts
vendored
|
|
@ -9185,10 +9185,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9209,210 +9209,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9769,18 +9769,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/id.ts
vendored
|
|
@ -9214,10 +9214,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9238,210 +9238,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9798,18 +9798,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/it.ts
vendored
|
|
@ -9301,10 +9301,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Annulla</translation>
|
||||
</message>
|
||||
|
|
@ -9325,7 +9325,7 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
|
|
@ -9334,204 +9334,204 @@ p, li { white-space: pre-wrap; }
|
|||
%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation>Verifica dell'integrità in corso...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation>Verifica dell'integrità riuscita!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation>L'operazione è stata completata con successo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation>Verifica dell'integrità fallita!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation>I contenuti dei file potrebbero essere corrotti o mancanti.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation>Impossibile effettuare la verifica dell'integrità</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation>Installazione del firmware annullata, il firmware potrebbe essere corrotto o in cattivo stato. Non è stato possibile controllare la validità dei contenuti dei file.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation>Seleziona il percorso delle chiavi estratte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation>Installazione delle chiavi di crittografia riuscita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation>Installazione delle chiavi di crittografia fallita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation>Rilevati profili scollegati!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation>Eliminare i dati?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation>Potresti perdere dei dati importanti!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation>Sei DAVVERO sicuro?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation>Una volta eliminati, i tuoi dati NON potranno essere ripristinati!
|
||||
Procedi solo se sei assolutamente sicuro di voler eliminare questi dati.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation>Eliminazione in corso...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation>Scegli dove esportare i dati</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation>%1.zip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation>Archivi compressi (*.zip)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation>Esportazione dei dati in corso. Potrebbe richiedere un po' di tempo...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation>Esportazione in corso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation>Esportazione completata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation>I dati sono stati esportati con successo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation>Esportazione annullata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation>L'esportazione è stata annullata dall'utente.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation>Esportazione fallita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation>Assicurati di disporre dei permessi di scrittura nella cartella selezionata e poi riprova.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation>Seleziona il file da importare</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation>Attenzione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation>Tutti i dati già presenti in questa cartella verranno eliminati. Sei sicuro di voler procedere?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation>Importazione dei dati in corso. Potrebbe richiedere un po' di tempo...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation>Importazione in corso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation>Importazione completata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation>I dati sono stati importati con successo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation>Importazione annullata</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation>L'importazione è stata annullata dall'utente.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation>Importazione fallita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation>Assicurati di disporre dei permessi di lettura nella cartella selezionata e poi riprova.</translation>
|
||||
</message>
|
||||
|
|
@ -9895,18 +9895,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
La maggior parte delle mod sono RomFS, ma le patch (.pchtxt) sono tipicamente ExeFS.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation>Estrazione mod fallita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation>Impossibile creare la cartella temporanea %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation>Il file ZIP %1 è vuoto</translation>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/ja_JP.ts
vendored
|
|
@ -9208,10 +9208,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9232,210 +9232,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9792,18 +9792,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
233
dist/languages/ko_KR.ts
vendored
|
|
@ -4,12 +4,12 @@
|
|||
<message>
|
||||
<location filename="../../src/yuzu/aboutdialog.ui" line="14"/>
|
||||
<source>About Eden</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Eden에 대해</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/aboutdialog.ui" line="72"/>
|
||||
<source><html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/aboutdialog.ui" line="85"/>
|
||||
|
|
@ -26,17 +26,24 @@ li.unchecked::marker { content: "\2610"; }
|
|||
li.checked::marker { content: "\2612"; }
|
||||
</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;">
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
hr { height: 1px; border-width: 0; }
|
||||
li.unchecked::marker { content: "\2610"; }
|
||||
li.checked::marker { content: "\2612"; }
|
||||
</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;">
|
||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden은 GPLv3.0+ 라이선스를 받은 실험적인 오픈 소스 닌텐도 스위치 에뮬레이터로, 2024년 3월에 개발이 종료된 yuzu 에뮬레이터를 기반으로 합니다. <br /><br />이 소프트웨어는 법적으로 획득하지 않은 게임을 플레이하는 데 사용되어서는 안 됩니다.</span></p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/aboutdialog.ui" line="131"/>
|
||||
<source><html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">웹사이트</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">소스 코드</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">기여자</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">디스코드</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">트위터</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">라이선스</span></a></p></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/aboutdialog.ui" line="147"/>
|
||||
<source><html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><html><head/><body><p><span style=" font-size:7pt;">&quot;닌텐도 스위치&quot;는 닌텐도의 상표이며, Eden은 닌텐도와 어떤 방식으로도 제휴되어 있지 않습니다.</span></p></body></html></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
|
@ -138,7 +145,7 @@ li.checked::marker { content: "\2612"; }
|
|||
<message>
|
||||
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="483"/>
|
||||
<source>Kick</source>
|
||||
<translation>추방</translation>
|
||||
<translation>강퇴</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="484"/>
|
||||
|
|
@ -148,12 +155,12 @@ li.checked::marker { content: "\2612"; }
|
|||
<message>
|
||||
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="488"/>
|
||||
<source>Kick Player</source>
|
||||
<translation>추방된 플레이어</translation>
|
||||
<translation>강퇴된 플레이어</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="489"/>
|
||||
<source>Are you sure you would like to <b>kick</b> %1?</source>
|
||||
<translation>정말로 %1을 <b>추방</b>하겠습니까??</translation>
|
||||
<translation>정말 %1을 <b>강퇴</b>시키겠습니까?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/multiplayer/chat_room.cpp" line="497"/>
|
||||
|
|
@ -165,9 +172,9 @@ li.checked::marker { content: "\2612"; }
|
|||
<source>Are you sure you would like to <b>kick and ban</b> %1?
|
||||
|
||||
This would ban both their forum username and their IP address.</source>
|
||||
<translation>%1을 <b>추방</b>하겠습니까?
|
||||
<translation>정말 %1을 <b>강퇴 및 차단</b>하겠습니까?
|
||||
|
||||
이렇게 하면 포럼 사용자 이름과 IP 주소가 모두 금지됩니다.</translation>
|
||||
이렇게 하면 포럼 사용자 이름과 IP 주소 모두 차단됩니다.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
|
@ -232,7 +239,7 @@ This would ban both their forum username and their IP address.</source>
|
|||
<message>
|
||||
<location filename="../../src/yuzu/compatdb.ui" line="36"/>
|
||||
<source><html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html></source>
|
||||
<translation type="unfinished"/>
|
||||
<translation><html><head/><body><p><span style=" font-size:10pt;">만약 </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden 호환성 목록</span></a><span style=" font-size:10pt;">에 시험 사례를 제출하기로 선택하면, 다음과 같은 정보가 수집되어 사이트에 표시됩니다:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">하드웨어 정보(CPU/GPU/운영 체제)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">사용 중인 eden 버전</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">연결된 eden 계정</li></ul></body></html></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/compatdb.ui" line="77"/>
|
||||
|
|
@ -297,12 +304,12 @@ This would ban both their forum username and their IP address.</source>
|
|||
<message>
|
||||
<location filename="../../src/yuzu/compatdb.ui" line="280"/>
|
||||
<source>Major The game has major graphical errors</source>
|
||||
<translation>주요 게임에 주요 그래픽 오류가 있습니다</translation>
|
||||
<translation>심각 게임에 심각한 그래픽 오류가 있습니다</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/compatdb.ui" line="287"/>
|
||||
<source>Minor The game has minor graphical errors</source>
|
||||
<translation>마이너 게임에 경미한 그래픽 오류가 있습니다</translation>
|
||||
<translation>경미 게임에 경미한 그래픽 오류가 있습니다</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/compatdb.ui" line="294"/>
|
||||
|
|
@ -317,12 +324,12 @@ This would ban both their forum username and their IP address.</source>
|
|||
<message>
|
||||
<location filename="../../src/yuzu/compatdb.ui" line="339"/>
|
||||
<source>Major The game has major audio errors</source>
|
||||
<translation>메이저 게임에 주요 오디오 오류가 있습니다</translation>
|
||||
<translation>심각 게임에 심각한 오디오 오류가 있습니다</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/compatdb.ui" line="346"/>
|
||||
<source>Minor The game has minor audio errors</source>
|
||||
<translation>마이너 게임에 사소한 오디오 오류가 있습니다</translation>
|
||||
<translation>경미 게임에 경미한 오디오 오류가 있습니다</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/compatdb.ui" line="353"/>
|
||||
|
|
@ -370,17 +377,17 @@ This would ban both their forum username and their IP address.</source>
|
|||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="34"/>
|
||||
<source>Amiibo editor</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Amiibo 편집기</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="35"/>
|
||||
<source>Controller configuration</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>컨트롤러 구성</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="36"/>
|
||||
<source>Data erase</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>데이터 삭제</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="37"/>
|
||||
|
|
@ -390,12 +397,12 @@ This would ban both their forum username and their IP address.</source>
|
|||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="38"/>
|
||||
<source>Net connect</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>망 연결</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="39"/>
|
||||
<source>Player select</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>플레이어 선택</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="40"/>
|
||||
|
|
@ -405,52 +412,52 @@ This would ban both their forum username and their IP address.</source>
|
|||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="41"/>
|
||||
<source>Mii Edit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Mii 편집</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="42"/>
|
||||
<source>Online web</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>온라인 웹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="43"/>
|
||||
<source>Shop</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>숍</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="44"/>
|
||||
<source>Photo viewer</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>사진 뷰어</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="45"/>
|
||||
<source>Offline web</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>오프라인 웹</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="46"/>
|
||||
<source>Login share</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>로그인 공유</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="47"/>
|
||||
<source>Wifi web auth</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Wi-Fi 웹 인증</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="48"/>
|
||||
<source>My page</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>마이페이지</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="49"/>
|
||||
<source>Enable Overlay Applet</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>오버레이 애플릿 활성화</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="50"/>
|
||||
<source>Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Horizon의 내장 오버레이 애플릿을 활성화합니다. HOME 버튼을 1초 동안 길게 누르면 애플릿이 나타납니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="54"/>
|
||||
|
|
@ -470,7 +477,7 @@ This would ban both their forum username and their IP address.</source>
|
|||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="57"/>
|
||||
<source>Mute audio</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>오디오 음소거</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="58"/>
|
||||
|
|
@ -480,7 +487,7 @@ This would ban both their forum username and their IP address.</source>
|
|||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="60"/>
|
||||
<source>Mute audio when in background</source>
|
||||
<translation>백그라운드에서 오디오 음소거</translation>
|
||||
<translation>백그라운드에서 실행될 때 오디오 음소거</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="63"/>
|
||||
|
|
@ -491,61 +498,66 @@ This would ban both their forum username and their IP address.</source>
|
|||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="64"/>
|
||||
<source>This option increases CPU emulation thread use from 1 to the maximum of 4.
|
||||
This is mainly a debug option and shouldn't be disabled.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>이 옵션은 CPU 에뮬레이션 스레드 사용량을 1에서 최대 4까지 증가시킵니다.
|
||||
이 옵션은 주로 디버그용이므로 비활성화해서는 안 됩니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="66"/>
|
||||
<source>Memory Layout</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>메모리 레이아웃</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="67"/>
|
||||
<source>Increases the amount of emulated RAM.
|
||||
Doesn't affect performance/stability but may allow HD texture mods to load.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>에뮬레이트된 RAM의 용량을 증가시킵니다.
|
||||
성능/안정성에는 영향을 미치지 않지만 HD 텍스처 모드가 로드될 수 있습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="72"/>
|
||||
<source>Limit Speed Percent</source>
|
||||
<translation>속도 퍼센트 제한</translation>
|
||||
<translation>속도 제한 비율</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="73"/>
|
||||
<source>Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not.
|
||||
200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS.
|
||||
Disabling it means unlocking the framerate to the maximum your PC can reach.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>게임의 최대 렌더링 속도를 제어하지만, 실제로 더 빠르게 실행될지는 각 게임에 따라 다릅니다.
|
||||
30 FPS 게임에서 200%로 설정하면 60 FPS가 되고, 60 FPS 게임에서는 120 FPS가 됩니다.
|
||||
이 옵션을 비활성화하면 PC가 도달할 수 있는 최대 프레임률까지 프레임 속도 제한이 해제됩니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="78"/>
|
||||
<source>Turbo Speed</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>터보 속도</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="79"/>
|
||||
<source>When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>터보 속도 단축키를 누르면 속도가 이 비율로 제한됩니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="81"/>
|
||||
<source>Slow Speed</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>느린 속도</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="82"/>
|
||||
<source>When the Slow Speed hotkey is pressed, the speed will be limited to this percentage.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>느린 속도 단축키를 누르면 속도가 이 비율로 제한됩니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="85"/>
|
||||
<source>Synchronize Core Speed</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>코어 속도 동기화</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="86"/>
|
||||
<source>Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.).
|
||||
Can help reduce stuttering at lower framerates.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>CPU 코어 속도를 게임의 최대 렌더링 속도와 동기화하여 게임 속도(애니메이션, 물리 등)에 영향을 주지 않고 FPS를 향상시킵니다.
|
||||
낮은 프레임률에서 발생하는 끊김 현상을 줄이는 데 도움될 수 있습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="91"/>
|
||||
|
|
@ -555,56 +567,59 @@ Can help reduce stuttering at lower framerates.</source>
|
|||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="92"/>
|
||||
<source>Change the accuracy of the emulated CPU (for debugging only).</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>에뮬레이트된 CPU의 정확도를 변경합니다(디버깅용으로만 사용).</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="93"/>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="106"/>
|
||||
<source>Backend:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>백엔드:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="95"/>
|
||||
<source>CPU Overclock</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>CPU 오버클럭</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="96"/>
|
||||
<source>Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly.
|
||||
Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>에뮬레이트된 CPU를 오버클럭하여 일부 FPS 제한기를 제거합니다. CPU가 약하면 성능이 저하될 수 있으며 특정 게임이 부정확하게 작동할 수 있습니다.
|
||||
스위치의 최고 네이티브 클럭으로 실행하려면 부스트(1700MHz)를 사용하고, 2배 클럭으로 실행하려면 고속(2000MHz)을 사용하세요.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="103"/>
|
||||
<source>Custom CPU Ticks</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>사용자 지정 CPU 틱</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="104"/>
|
||||
<source>Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>CPU 틱 값을 사용자 지정으로 설정합니다. 값이 높을수록 성능이 향상될 수 있지만 교착 상태가 발생할 수 있습니다. 77~21000 범위의 값을 권장합니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="112"/>
|
||||
<source>Enable Host MMU Emulation (fastmem)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>호스트 MMU 에뮬레이션 사용 (빠른 메모리)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="113"/>
|
||||
<source>This optimization speeds up memory accesses by the guest program.
|
||||
Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.
|
||||
Disabling this forces all memory accesses to use Software MMU Emulation.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>이 최적화는 게스트 프로그램의 메모리 접근 속도를 높입니다.
|
||||
이 옵션을 활성화하면 게스트 메모리 읽기/쓰기가 메모리에서 직접 수행되고 호스트의 MMU를 사용하게 됩니다.
|
||||
이 옵션을 비활성화하면 모든 메모리 접근에 소프트웨어 MMU 에뮬레이션을 사용하도록 강제됩니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="118"/>
|
||||
<source>Unfuse FMA (improve performance on CPUs without FMA)</source>
|
||||
<translation>FMA 분리 (FMA를 지원하지 않는 CPU에서의 성능을 향상시킵니다)</translation>
|
||||
<translation>FMA 분리 (FMA를 지원하지 않는 CPU의 성능 향상)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="119"/>
|
||||
<source>This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>이 옵션은 네이티브 FMA를 지원하지 않는 CPU의 fused-multiply-add 명령어 정확도를 낮춰 속도를 향상시킵니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="122"/>
|
||||
|
|
@ -614,7 +629,7 @@ Disabling this forces all memory accesses to use Software MMU Emulation.</source
|
|||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="123"/>
|
||||
<source>This option improves the speed of some approximate floating-point functions by using less accurate native approximations.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>이 옵션은 정확도가 낮은 네이티브 근사값을 사용하여 일부 근사 부동 소수점 함수의 속도를 향상시킵니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="126"/>
|
||||
|
|
@ -2077,12 +2092,12 @@ When a program attempts to open the controller applet, it is immediately closed.
|
|||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="629"/>
|
||||
<source>Boost (1700MHz)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>부스트(1700MHz)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="630"/>
|
||||
<source>Fast (2000MHz)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>고속(2000MHz)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/config/shared_translation.cpp" line="635"/>
|
||||
|
|
@ -9206,10 +9221,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9230,210 +9245,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9790,18 +9805,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/nb.ts
vendored
|
|
@ -9207,10 +9207,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Avbryt</translation>
|
||||
</message>
|
||||
|
|
@ -9231,210 +9231,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation>Er du HELT sikker?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation>%1.zip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation>Zippede arkiver (*.zip)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation>Eksporterer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation>Eksportering mislyktes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation>Importerer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation>Importeringen var vellykket</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation>Importering mislyktes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9791,18 +9791,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation>«%1»-zip-filen er tom</translation>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/nl.ts
vendored
|
|
@ -9203,10 +9203,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9227,210 +9227,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9787,18 +9787,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/pl.ts
vendored
|
|
@ -9306,10 +9306,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Anuluj</translation>
|
||||
</message>
|
||||
|
|
@ -9330,7 +9330,7 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
|
|
@ -9338,204 +9338,204 @@ p, li { white-space: pre-wrap; }
|
|||
%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation>Weryfikacja integralności...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation>Weryfikacja integralności zakończona sukcesem!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation>Operacja zakończona pomyślnie.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation>Weryfikacja integralności nie powiodła się!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation>Zawartość pliku może być uszkodzona lub brakująca.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation>Nie można było przeprowadzić weryfikacji integralności</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation>Instalacja firmware’u została anulowana — firmware może być w złym stanie lub uszkodzony. Nie udało się sprawdzić poprawności zawartości plików.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation>Wybierz lokalizację zrzutu kluczy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation>Instalacja kluczy deszyfrujących powiodła się</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation>Instalacja kluczy deszyfrujących nie powiodła się</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation>Wykryto osierocone profile!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation>MOGĄ WYSTĄPIĆ NIEOCZEKIWANE PROBLEMY, JEŚLI TEGO NIE PRZECZYTASZ!<br>Eden wykrył następujące katalogi zapisów bez przypisanego profilu:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Kliknij „OK”, aby otworzyć folder zapisów i naprawić profile.<br>Wskazówka: skopiuj zawartość największego lub ostatnio modyfikowanego folderu w inne miejsce, usuń wszystkie osierocone profile, a następnie przenieś skopiowaną zawartość do właściwego profilu.<br><br>Nadal masz wątpliwości? Zobacz<a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>tronę pomocy</a>.<br></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation>Na pewno wyczyścić dane?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation>Ważne dane mogą zostać utracone!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation>Czy NA PEWNO chcesz to zrobić?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation>Po usunięciu Twoje dane NIE WRÓCĄ!
|
||||
Wykonaj to tylko, jeśli w 100% chcesz usunąć te dane.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation>Czyszczenie…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation>Wybierz lokalizację eksportu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation>%1.zip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation>Archiwa ZIP (.zip)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation>Eksportowanie danych. To może chwilę potrwać…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation>Eksportowanie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation>Wyeksportowano pomyślnie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation>Dane zostały pomyślnie wyeksportowane.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation>Eksport anulowany</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation>Eksport został anulowany przez użytkownika.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation>Eksport nie powiódł się</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation>Upewnij się, że masz uprawnienia zapisu do docelowego katalogu i spróbuj ponownie.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation>Wybierz lokalizację importu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation>Ostrzeżenie dotyczące importu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation>Wszystkie dotychczasowe dane w tym katalogu zostaną usunięte. Czy na pewno chcesz kontynuować?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation>Importowanie danych. To może chwilę potrwać…</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation>Importowanie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation>Zaimportowano pomyślnie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation>Dane zostały pomyślnie zaimportowane.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation>Import anulowany</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation>Import został anulowany przez użytkownika.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation>Import nie powiódł się</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation>Upewnij się, że masz uprawnienia odczytu do docelowego katalogu i spróbuj ponownie.</translation>
|
||||
</message>
|
||||
|
|
@ -9897,18 +9897,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/pt_BR.ts
vendored
|
|
@ -9279,10 +9279,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9303,210 +9303,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9865,18 +9865,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation>Falha ao criar um diretório temporário %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/pt_PT.ts
vendored
|
|
@ -9206,10 +9206,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9230,210 +9230,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9790,18 +9790,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/ru_RU.ts
vendored
|
|
@ -9322,10 +9322,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Отмена</translation>
|
||||
</message>
|
||||
|
|
@ -9346,7 +9346,7 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
|
|
@ -9355,204 +9355,204 @@ p, li { white-space: pre-wrap; }
|
|||
%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation>Проверка целостности...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation>Проверка целостности прошла успешно!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation>Операция выполнена успешно.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation>Проверка целостности не удалась!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation>Содержимое файла может быть повреждено или отсутствовать.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation>Проверка целостности не может быть выполнена</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation>Установка прошивки отменена, прошивка может быть повреждена. Содержимое файла не удалось проверить на корректность.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation>Выберите местоположение дампнутых ключей</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation>Установка ключей дешифровки прошла успешно.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation>Ошибка установки ключей дешифровки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation>Обнаружены «сиротские» профили!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation>МОГУТ ПРОИЗОЙТИ НЕПРЕДВИДЕННЫЕ ПРОБЛЕМЫ, ЕСЛИ ВЫ НЕ ПРОЧИТАЕТЕ ЭТО!<br>Eden обнаружил следующие папки сохранений без привязанного профиля:<br>%1<br><br>Найдены следующие корректные профили:<br>%2<br><br>Нажмите «OK», чтобы открыть папку сохранений и исправить профили.<br>Совет: скопируйте содержимое самой большой или последней измененной папки в другое место, удалите все «сиротские» профили и переместите скопированные данные в правильный профиль.<br><br>Если есть вопросы, прочитайте <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>справку</a>.<br></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation>Действительно очистить данные?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation>Важные данные могут быть потеряны!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation>Вы уверены?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation>Данные будут безвозвратно потеряны после удаления!
|
||||
Делайте это только если вы абсолютно уверены, что хотите их удалить.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation>Очистка...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation>Выберите папку для экспорта</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation>%1.zip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation>Архивы ZIP (*.zip)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation>Идет экспорт данных. Это может занять некоторое время...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation>Экспорт</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation>Экспорт выполнен успешно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation>Данные успешно экспортированы.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation>Экспорт отменен</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation>Экспорт был отменен пользователем.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation>Не удалось экспортировать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation>Проверьте, есть ли права на запись в выбранную папку, и повторите попытку.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation>Выберите папку для импорта</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation>Предупреждение при импорте</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation>Все существующие данные в этой папке будут удалены. Вы уверены, что хотите продолжить?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation>Идет импорт данных. Это может занять некоторое время...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation>Импорт</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation>Импорт успешно выполнен</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation>Данные успешно импортированы.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation>Импорт отменен</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation>Импорт был отменен пользователем.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation>Не удалось импортировать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation>Проверьте, есть ли права на чтение в выбранной папке, и повторите попытку.</translation>
|
||||
</message>
|
||||
|
|
@ -9916,18 +9916,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
Большинство модов относятся к типу RomFS, а патчи (.pchtxt) обычно являются модами ExeFS.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation>Ошибка извлечения мода</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation>Не удалось создать временную папку %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation>ZIP-файл %1 пуст</translation>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/sv.ts
vendored
|
|
@ -9323,10 +9323,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Avbryt</translation>
|
||||
</message>
|
||||
|
|
@ -9347,7 +9347,7 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
|
|
@ -9356,204 +9356,204 @@ p, li { white-space: pre-wrap; }
|
|||
%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation>Verifierar integritet...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation>Integritetsverifieringen lyckades!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation>Operationen slutfördes utan problem.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation>Integritetsverifieringen misslyckades!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation>Filens innehåll kan vara skadat eller saknas.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation>Integritetsverifiering kunde inte utföras</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation>Firmwareinstallationen avbruten, firmware kan vara i dåligt skick eller skadad. Filens innehåll kunde inte kontrolleras för giltighet.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation>Välj plats för dumpade nycklar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation>Installation av avkrypteringsnycklar lyckades</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation>Installationen av avkrypteringsnycklar misslyckades</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation>Föräldralösa profiler upptäcktes!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation>OVÄNTADE PROBLEM KAN UPPSTÅ OM DU INTE LÄSER DETTA! <br>Eden har upptäckt följande sparningskataloger utan bifogade profiler:<br>%1<br><br>Följande profiler är giltiga:<br>%2<br><br>Klicka på ”OK” för att öppna din sparningsmapp och fixa dina profiler.<br>Tips: kopiera innehållet i den största eller senast ändrade mappen till en annan plats, ta bort alla övergivna profiler och flytta det kopierade innehållet till den giltiga profilen.<br><br>Fortfarande förvirrad? Se hjälpsidan<a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>.<br></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation>Verkligen tömma data?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation>Viktig data kan gå förlorad!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation>Är du VERKLIGEN säker?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation>När dina data har raderats kan de INTE återställas!
|
||||
Gör detta endast om du är 100% säker på att du vill radera dessa data.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation>Tömmer...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation>Välj exportplats</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation>%1.zip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation>Zippade arkiv (*.zip)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation>Exporterar data. Detta kan ta en stund...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation>Exporterar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation>Exporten lyckades</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation>Data har exporterats.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation>Exporten avbröts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation>Exporten avbröts av användaren.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation>Exporten misslyckades</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation>Kontrollera att du har skrivbehörighet till den aktuella katalogen och försök igen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation>Välj importplats</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation>Importvarning</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation>Alla tidigare data i denna katalog kommer att raderas. Är du säker på att du vill fortsätta?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation>Importerar data. Detta kan ta en stund...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation>Importerar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation>Importen lyckades</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation>Data har importerats.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation>Importen avbröts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation>Importen avbröts av användaren.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation>Importen misslyckades</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation>Kontrollera att du har läsbehörighet till den aktuella katalogen och försök igen.</translation>
|
||||
</message>
|
||||
|
|
@ -9917,18 +9917,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
De flesta mods är RomFS-mods, men patchar (.pchtxt) är vanligtvis ExeFS-mods.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation>Mod-extrahering misslyckades</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation>Det gick inte att skapa den tillfälliga katalogen %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation>Zip-filen %1 är tom</translation>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/tr_TR.ts
vendored
|
|
@ -9234,10 +9234,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9258,210 +9258,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9818,18 +9818,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/uk.ts
vendored
|
|
@ -9324,10 +9324,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation>Скасувати</translation>
|
||||
</message>
|
||||
|
|
@ -9348,7 +9348,7 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
|
|
@ -9357,204 +9357,204 @@ p, li { white-space: pre-wrap; }
|
|||
%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation>Перевірка цілісності...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation>Перевірка цілісності успішна!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation>Операцію успішно завершено.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation>Не вдалося перевірити цілісність!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation>Файли вмісту можуть бути пошкоджені або відсутні.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation>Неможливо виконати перевірку цілісності</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation>Встановлення прошивки скасовано. Можливо, прошивка в поганому стані або пошкоджена. Неможливо перевірити на дійсність файли вмісту.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation>Виберіть розатшування дампу ключів</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation>Ключі дешифрування успішно встановлено</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation>Не вдалося встановити ключі дешифрування</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation>Виявлено покинуті профілі!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation>ЯКЩО ВИ ЦЕ НЕ ПРОЧИТАЄТЕ, МОЖУТЬ СТАТИСЯ НЕОЧІКУВАНІ ПОГАНІ РЕЧІ!<br>Eden виявив такі теки збережень без прикріпленого профілю:<br>%1<br><br>Є такі дійсні профілі:<br>%2<br><br>Натисніть «ОК», щоб відкрити теку збережень і полагодити свої профілі.<br>Порада: скопіюйте у будь-яке інше місце вміст найбільшої теки, у якій нещодавно були зміни, видаліть профілі, що лишилися та перемістіть скопійований вміст до провильного профілю.<br><br>Досі не розумієте, що робити? Перегляньте <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>сторінку допомоги</a>.<br></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation>Дійсно очистити дані?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation>Може бути втрачено важливі дані!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation>Ви ДІЙСНО впевнені?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation>Після видалення ваші дані буде НЕМОЖЛИВО повернути!
|
||||
Виконуйте цю дію, лише якщо ви на 100% упевнені, що хочете видалити ці дані.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation>Очищення...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation>Виберіть розташування для експортування</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation>%1.zip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation>Zip-архіви (*.zip)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation>Експортування даних. Це може тривати певний час...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation>Експортування</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation>Успішно експортовано</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation>Дані успішно експортовано.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation>Експортування скасовано</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation>Експортування скасовано користувачем.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation>Не вдалося експортувати</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation>Запевніться, що у вас є дозволи на записування до вказаної теки й спробуйте знову.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation>Виберіть розташування для імпортування</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation>Попередження щодо імпортування</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation>Усі попередні в цій теці будуть видалені. Ви впевнені, що хочете продовжити?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation>Імпортування даних. Це може тривати певний час...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation>Імпортування</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation>Успішно імпортовано</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation>Дані успішно імпортовано.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation>Імпортування скасовано</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation>Імпортування скасовано користувачем.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation>Не вдалося імпортувати</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation>Запевніться, що у вас є дозволи на читання зі вказаної теки й спробуйте знову.</translation>
|
||||
</message>
|
||||
|
|
@ -9918,18 +9918,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
Більшість модів є RomFS-модами, але патчі (.pchtxt) зазвичай є ExeFS-модами.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation>Не вдалося видобути мод</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation>Не вдалося створити тимчасову теку %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation>Zip-файл %1 порожній</translation>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/vi.ts
vendored
|
|
@ -9206,10 +9206,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9230,210 +9230,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9790,18 +9790,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/vi_VN.ts
vendored
|
|
@ -9206,10 +9206,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9230,210 +9230,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9790,18 +9790,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/zh_CN.ts
vendored
|
|
@ -9299,10 +9299,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation>取消</translation>
|
||||
</message>
|
||||
|
|
@ -9323,7 +9323,7 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
|
|
@ -9332,204 +9332,204 @@ p, li { white-space: pre-wrap; }
|
|||
%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation>正在验证完整性...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation>完整性验证成功!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation>操作成功完成。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation>完整性验证失败!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation>文件内容可能缺失或已损坏。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation>无法执行完整性验证</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation>固件安装失败。固件可能处于异常状态或已损坏,无法验证文件内容的有效性。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation>选择导出的密钥文件位置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation>密钥文件安装成功</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation>密钥文件安装失败</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation>检测到孤立的配置文件!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation>如果您不阅读此内容,可能会发生意想不到的糟糕情况!<br>Eden 检测到以下存档目录没有附加的配置文件:<br>%1<br><br>下列配置是有效的:<br>%2<br><br>点击“确定”以打开您的存档文件夹并修复配置文件。<br>提示: 将最大或最近修改的文件夹内容复制到其他地方,删除所有孤立的配置文件,然后将复制的内容移到正确的配置文件中。<br><br>还是感到疑惑? 请查看 <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>帮助页</a>。<br></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation>确实要清除数据吗?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation>可能会丢失重要的数据!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation>您真的确定吗?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation>在删除后,您将无法找回数据!
|
||||
仅在您 100% 确认要删除此数据时才这样做。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation>正在清除...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation>选择导出位置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation>%1.zip</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation>压缩档案 (*.zip)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation>正在导出数据。这可能需要一些时间...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation>正在导出</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation>导出成功</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation>数据已成功导出。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation>导出已被取消</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation>导出已被用户取消。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation>导出失败</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation>请确认您是否具有目标目录的写入权限然后再次尝试。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation>选择导入位置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation>导入警告</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation>此目录中的所有先前数据将被删除。您确定要继续吗?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation>正在导入数据。这需要一些时间...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation>正在导入</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation>导入成功</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation>数据已导入成功。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation>导入已被取消</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation>导入已被用户取消。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation>导入失败</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation>请确认是否您具有目标目录的读取权限然后再次尝试。</translation>
|
||||
</message>
|
||||
|
|
@ -9891,18 +9891,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
大多数模组是 RomFS 模组,但补丁(.pchtxt)通常是 ExeFS 模组。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation>模组提取失败</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation>未能创建临时 %1 目录</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation>压缩文件 %1 是空的。</translation>
|
||||
</message>
|
||||
|
|
|
|||
106
dist/languages/zh_TW.ts
vendored
|
|
@ -9232,10 +9232,10 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="44"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9256,210 +9256,210 @@ p, li { white-space: pre-wrap; }
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="166"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="290"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="288"/>
|
||||
<source>Verification failed for the following files:
|
||||
|
||||
%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="209"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="265"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="207"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="263"/>
|
||||
<source>Verifying integrity...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="224"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="283"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="222"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="281"/>
|
||||
<source>Integrity verification succeeded!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="225"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="284"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="223"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="282"/>
|
||||
<source>The operation completed successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="228"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="289"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="226"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="287"/>
|
||||
<source>Integrity verification failed!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="229"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="227"/>
|
||||
<source>File contents may be corrupt or missing.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="233"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="231"/>
|
||||
<source>Integrity verification couldn't be performed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="234"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="232"/>
|
||||
<source>Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="241"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="239"/>
|
||||
<source>Select Dumped Keys Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="254"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="252"/>
|
||||
<source>Decryption Keys install succeeded</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="257"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="255"/>
|
||||
<source>Decryption Keys install failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="329"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="327"/>
|
||||
<source>Orphaned Profiles Detected!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="330"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="328"/>
|
||||
<source>UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br></source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Really clear data?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="349"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="347"/>
|
||||
<source>Important data may be lost!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="354"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="352"/>
|
||||
<source>Are you REALLY sure?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="355"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="353"/>
|
||||
<source>Once deleted, your data will NOT come back!
|
||||
Only do this if you're 100% sure you want to delete this data.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="362"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="360"/>
|
||||
<source>Clearing...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>Select Export Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<source>%1.zip</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="376"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="374"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Zipped Archives (*.zip)</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="380"/>
|
||||
<source>Exporting data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="384"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="382"/>
|
||||
<source>Exporting</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Exported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="403"/>
|
||||
<source>Data was exported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="407"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="405"/>
|
||||
<source>Export was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="410"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="408"/>
|
||||
<source>Export Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="411"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="409"/>
|
||||
<source>Ensure you have write permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="430"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="428"/>
|
||||
<source>Select Import Location</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="436"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="434"/>
|
||||
<source>Import Warning</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="437"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="435"/>
|
||||
<source>All previous data in this directory will be deleted. Are you sure you wish to proceed?</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="443"/>
|
||||
<source>Importing data. This may take a while...</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="447"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="445"/>
|
||||
<source>Importing</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Imported Successfully</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="478"/>
|
||||
<source>Data was imported successfully.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import Cancelled</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="480"/>
|
||||
<source>Import was cancelled by the user.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="484"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="482"/>
|
||||
<source>Import Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="485"/>
|
||||
<location filename="../../src/qt_common/util/content.cpp" line="483"/>
|
||||
<source>Ensure you have read permissions on the targeted directory and try again.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
@ -9816,18 +9816,18 @@ Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods.</sourc
|
|||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="122"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="135"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<source>Mod Extract Failed</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="123"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="124"/>
|
||||
<source>Failed to create temporary directory %1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="136"/>
|
||||
<location filename="../../src/qt_common/util/mod.cpp" line="137"/>
|
||||
<source>Zip file %1 is empty</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
|
|
|
|||
BIN
dist/qt_themes/default/icons/256x256/eden.png
vendored
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 35 KiB |
|
|
@ -46,7 +46,7 @@ Qt Widgets appears to be broken. For now, add `-DENABLE_QT=OFF` to your configur
|
|||
This is needed for some dependencies that call cc directly (tz):
|
||||
|
||||
```sh
|
||||
echo '#!/bin/sh' >cc
|
||||
echo '#!/bin/sh -e' >cc
|
||||
echo 'gcc $@' >>cc
|
||||
chmod +x cc
|
||||
export PATH="$PATH:$PWD"
|
||||
|
|
@ -65,14 +65,13 @@ export LIBGL_ALWAYS_SOFTWARE=1
|
|||
```
|
||||
|
||||
- Modify the generated ffmpeg.make (in build dir) if using multiple threads (base system `make` doesn't use `-j4`, so change for `gmake`).
|
||||
- If using OpenIndiana, due to a bug in SDL2's CMake configuration, audio driver defaults to SunOS `<sys/audioio.h>`, which does not exist on OpenIndiana. Using external or bundled SDL2 may solve this.
|
||||
- System OpenSSL generally does not work. Instead, use `-DYUZU_USE_BUNDLED_OPENSSL=ON` to use a bundled static OpenSSL, or build a system dependency from source.
|
||||
|
||||
## OmniOS
|
||||
|
||||
Install `developer/gcc14` on OmniOS using pkgsrc.
|
||||
|
||||
Since so many dependencies are missing on `OmniOS`, you may wish to use `-DCPMUTIL_FORCE_BUNDLED=ON -DYUZU_USE_EXTERNAL_SDL2=ON`
|
||||
Since so many dependencies are missing on `OmniOS`, you may wish to use `-DCPMUTIL_FORCE_BUNDLED=ON`
|
||||
|
||||
For OmniOS you are required to build glslang yourself:
|
||||
```sh
|
||||
|
|
|
|||
50
docs/Deps.md
|
|
@ -35,6 +35,11 @@ If you are on desktop and plan to use the Qt frontend, you *must* install Qt 6,
|
|||
|
||||
* For help setting up Qt Creator, run `./install.sh -h qtcreator`
|
||||
|
||||
* If you're using clang-cl and want to still use MSVC
|
||||
* Check the option to add "C++ clang compiler for Windows" on Visual Studio installer and uncheck "x64/x86 build tool for MSVC" while selecting "C++ desktop developement tools" and change Visual Studio to 2026, from 2022.
|
||||
* At qt creator section generator tab change Visual Studio 17 2022 to 2026.
|
||||
* Finally, to use clang-cl: `cmake -S . -B build -G "Visual Studio 17 2026" -T ClangCL`
|
||||
|
||||
If you are on **Windows** and building with **MSVC** or **clang-cl**, you may go [back home](Build.md) and continue.
|
||||
|
||||
## Externals
|
||||
|
|
@ -42,7 +47,7 @@ If you are on **Windows** and building with **MSVC** or **clang-cl**, you may go
|
|||
The following are handled by Eden's externals:
|
||||
|
||||
* [FFmpeg](https://ffmpeg.org/) (should use `-DYUZU_USE_EXTERNAL_FFMPEG=ON`)
|
||||
* [SDL2](https://www.libsdl.org/download-2.0.php) 2.0.18+ (should use `-DYUZU_USE_EXTERNAL_SDL2=ON` OR `-DYUZU_USE_BUNDLED_SDL2=ON` to reduce compile time)
|
||||
* [SDL3](https://www.libsdl.org/download-2.0.php) 3.2.10+ (Use `-DYUZU_USE_BUNDLED_SDL2=ON` to reduce compile time)
|
||||
|
||||
All other dependencies will be downloaded and built by [CPM](https://github.com/cpm-cmake/CPM.cmake/) if `YUZU_USE_CPM` is on, but will always use system dependencies if available (UNIX-like only):
|
||||
|
||||
|
|
@ -118,7 +123,7 @@ sudo emerge -a \
|
|||
dev-util/spirv-tools dev-util/spirv-headers dev-util/vulkan-headers \
|
||||
dev-util/vulkan-utility-libraries dev-util/glslang \
|
||||
media-gfx/renderdoc media-libs/libva media-libs/opus media-video/ffmpeg \
|
||||
media-libs/VulkanMemoryAllocator media-libs/libsdl2 media-libs/cubeb \
|
||||
media-libs/VulkanMemoryAllocator media-libs/libsdl3 media-libs/cubeb \
|
||||
net-libs/enet \
|
||||
sys-libs/zlib \
|
||||
dev-cpp/nlohmann_json dev-cpp/simpleini dev-cpp/cpp-httplib dev-cpp/cpp-jwt \
|
||||
|
|
@ -137,7 +142,8 @@ Required USE flags:
|
|||
|
||||
* `dev-qt/qtbase network concurrent dbus gui widgets`
|
||||
* `dev-libs/quazip qt6`
|
||||
* `media-libs/libsdl2 haptic joystick sound video`
|
||||
* `media-libs/libsdl3 haptic joystick sound video`
|
||||
* Adding `X vulkan udev opengl` is recommended but not required
|
||||
* `dev-cpp/cpp-httplib ssl`
|
||||
|
||||
[Caveats](./Caveats.md#gentoo-linux)
|
||||
|
|
@ -148,7 +154,7 @@ Required USE flags:
|
|||
<summary>Arch Linux</summary>
|
||||
|
||||
```sh
|
||||
sudo pacman -Syu --needed base-devel boost catch2 cmake enet ffmpeg fmt git glslang libzip lz4 ninja nlohmann-json openssl opus qt6-base qt6-multimedia qt6-charts sdl2 zlib zstd zip unzip vulkan-headers vulkan-utility-libraries libusb spirv-tools spirv-headers
|
||||
sudo pacman -Syu --needed base-devel boost catch2 cmake enet ffmpeg fmt git glslang libzip lz4 ninja nlohmann-json openssl opus qt6-base qt6-multimedia qt6-charts sdl3 zlib zstd zip unzip vulkan-headers vulkan-utility-libraries libusb spirv-tools spirv-headers
|
||||
```
|
||||
|
||||
* Building with QT Web Engine requires `qt6-webengine` as well.
|
||||
|
|
@ -161,10 +167,10 @@ sudo pacman -Syu --needed base-devel boost catch2 cmake enet ffmpeg fmt git glsl
|
|||
<summary>Ubuntu, Debian, Mint Linux</summary>
|
||||
|
||||
```sh
|
||||
sudo apt-get install autoconf cmake g++ gcc git glslang-tools libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qt6-base-private-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev libva-dev libvdpau-dev qt6-tools-dev qt6-charts-dev libvulkan-dev spirv-tools spirv-headers libusb-1.0-0-dev libxbyak-dev libboost-dev libboost-fiber-dev libboost-context-dev libsdl2-dev libopus-dev libasound2t64 vulkan-utility-libraries-dev
|
||||
sudo apt-get install autoconf cmake g++ gcc git glslang-tools libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qt6-base-private-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev libva-dev libvdpau-dev qt6-tools-dev qt6-charts-dev libvulkan-dev spirv-tools spirv-headers libusb-1.0-0-dev libxbyak-dev libboost-dev libboost-fiber-dev libboost-context-dev libsdl3-dev libopus-dev libasound2t64 vulkan-utility-libraries-dev
|
||||
```
|
||||
|
||||
* Ubuntu 22.04, Linux Mint 20, or Debian 12 or later is required.
|
||||
* Ubuntu 26.04, Linux Mint 22.3, or Debian 13 or later is required.
|
||||
* To enable QT Web Engine, add `-DYUZU_USE_QT_WEB_ENGINE=ON` when running CMake.
|
||||
|
||||
</details>
|
||||
|
|
@ -185,13 +191,13 @@ AlmaLinux (use `YUZU_USE_CPM=ON`):
|
|||
sudo dnf install epel-release dnf-utils
|
||||
# (run rpmfusion installation afterwards)
|
||||
# vvv - This will work for most systems
|
||||
sudo dnf install autoconf cmake libtool libudev cmake gcc gcc-c++ qt6-qtbase-devel zlib-devel openssl-devel boost SDL2 ffmpeg-devel libdrm glslang jq patch
|
||||
sudo dnf install autoconf cmake libtool libudev cmake gcc gcc-c++ qt6-qtbase-devel zlib-devel openssl-devel boost SDL3 ffmpeg-devel libdrm glslang jq patch
|
||||
# Qt6 private GUI must be taken from CRB repos
|
||||
sudo dnf config-manager --enable crb
|
||||
sudo dnf install qt6-qtbase-private-devel
|
||||
```
|
||||
|
||||
For systems like OpenEuler or derivates, don't forget to also install: `SDL2-devel pkg-config fmt-dev nlohmann-json-dev`.
|
||||
For systems like OpenEuler or derivates, don't forget to also install: `SDL3-devel pkg-config fmt-dev nlohmann-json-dev`.
|
||||
|
||||
* [RPM Fusion](https://rpmfusion.org/Configuration) is required for `ffmpeg-devel`
|
||||
* Fedora 32 or later is required.
|
||||
|
|
@ -208,7 +214,7 @@ First, enable the community repository; [see here](https://wiki.alpinelinux.org/
|
|||
# Enable the community repository
|
||||
setup-apkrepos -c
|
||||
# Install
|
||||
apk add g++ git cmake make mesa-dev qt6-qtbase-dev qt6-qtbase-private-dev libquazip1-qt6 ffmpeg-dev qt6-charts-dev libusb-dev libtool boost-dev sdl2-dev zstd-dev vulkan-utility-libraries spirv-tools-dev openssl-dev nlohmann-json lz4-dev opus-dev jq patch
|
||||
apk add g++ git cmake make mesa-dev qt6-qtbase-dev qt6-qtbase-private-dev libquazip1-qt6 ffmpeg-dev qt6-charts-dev libusb-dev libtool boost-dev sdl3-dev zstd-dev vulkan-utility-libraries spirv-tools-dev openssl-dev nlohmann-json lz4-dev opus-dev jq patch
|
||||
```
|
||||
|
||||
</details>
|
||||
|
|
@ -216,7 +222,7 @@ apk add g++ git cmake make mesa-dev qt6-qtbase-dev qt6-qtbase-private-dev libqua
|
|||
<summary>Void Linux</summary>
|
||||
|
||||
```sh
|
||||
xbps-install -Su git make cmake clang pkg-config patch SPIRV-Tools-devel SPIRV-Headers lz4 liblz4-devel boost-devel ffmpeg6-devel catch2 Vulkan-Utility-Libraries Vulkan-Headers glslang openssl-devel SDL2-devel quazip-qt6-devel qt6-base-devel qt6-qt5compat-devel qt6-charts-devel fmt-devel json-c++ libenet-devel libusb-devel
|
||||
xbps-install -Su git make cmake clang pkg-config patch SPIRV-Tools-devel SPIRV-Headers lz4 liblz4-devel boost-devel ffmpeg6-devel catch2 Vulkan-Utility-Libraries Vulkan-Headers glslang openssl-devel SDL3-devel quazip-qt6-devel qt6-base-devel qt6-qt5compat-devel qt6-charts-devel fmt-devel json-c++ libenet-devel libusb-devel
|
||||
```
|
||||
|
||||
Yes, `nlohmann-json` is just named `json-c++`. Why?
|
||||
|
|
@ -237,7 +243,7 @@ If you're going for a pure build (i.e no downloaded deps), use `-DYUZU_USE_CPM=O
|
|||
Install dependencies from **[Homebrew](https://brew.sh/)**
|
||||
|
||||
```sh
|
||||
brew install autoconf automake boost ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@6 sdl2 speexdsp zlib zstd cmake Catch2 molten-vk vulkan-loader spirv-tools
|
||||
brew install autoconf automake boost ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@6 sdl3 speexdsp zlib zstd cmake Catch2 molten-vk vulkan-loader spirv-tools
|
||||
```
|
||||
|
||||
If you are compiling on Intel Mac, or are using a Rosetta Homebrew installation, you must replace all references of `/opt/homebrew` with `/usr/local`.
|
||||
|
|
@ -254,7 +260,7 @@ brew install molten-vk
|
|||
<details>
|
||||
<summary>FreeBSD</summary>
|
||||
|
||||
As root run: `pkg install devel/cmake devel/sdl20 devel/boost-libs devel/catch2 devel/libfmt devel/nlohmann-json devel/ninja devel/nasm devel/autoconf devel/pkgconf devel/qt6-base devel/qt6-charts devel/simpleini net/enet multimedia/ffnvcodec-headers multimedia/ffmpeg audio/opus archivers/liblz4 lang/gcc12 graphics/glslang graphics/vulkan-utility-libraries graphics/spirv-tools www/cpp-httplib devel/unordered-dense vulkan-headers quazip-qt6`
|
||||
As root run: `pkg install devel/cmake sdl3 devel/boost-libs devel/catch2 devel/libfmt devel/nlohmann-json devel/ninja devel/nasm devel/autoconf devel/pkgconf devel/qt6-base devel/qt6-charts devel/simpleini net/enet multimedia/ffnvcodec-headers multimedia/ffmpeg audio/opus archivers/liblz4 lang/gcc12 graphics/glslang graphics/vulkan-utility-libraries graphics/spirv-tools www/cpp-httplib devel/unordered-dense vulkan-headers quazip-qt6`
|
||||
|
||||
If using FreeBSD 12 or prior, use `devel/pkg-config` instead.
|
||||
|
||||
|
|
@ -264,7 +270,11 @@ If using FreeBSD 12 or prior, use `devel/pkg-config` instead.
|
|||
<details>
|
||||
<summary>NetBSD</summary>
|
||||
|
||||
For NetBSD +10.1: `pkgin install git cmake boost fmtlib SDL2 catch2 libjwt spirv-headers spirv-tools ffmpeg7 libva nlohmann-json jq libopus qt6 cpp-httplib lz4 vulkan-headers nasm autoconf enet pkg-config libusb1 libcxx`.
|
||||
For NetBSD +10.1:
|
||||
|
||||
```sh
|
||||
pkgin install git cmake boost fmtlib SDL3 catch2 libjwt spirv-headers spirv-tools ffmpeg7 libva nlohmann-json jq libopus qt6 cpp-httplib lz4 vulkan-headers nasm autoconf enet pkg-config libusb1 libcxx frozen
|
||||
```
|
||||
|
||||
[Caveats](./Caveats.md#netbsd).
|
||||
|
||||
|
|
@ -274,7 +284,7 @@ For NetBSD +10.1: `pkgin install git cmake boost fmtlib SDL2 catch2 libjwt spirv
|
|||
|
||||
```sh
|
||||
pkg_add -u
|
||||
pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gmake qt6 jq fmt nlohmann-json enet boost vulkan-utility-libraries vulkan-headers spirv-headers spirv-tools catch2 sdl2 libusb1-1.0.29
|
||||
pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gmake qt6 jq fmt nlohmann-json enet boost vulkan-utility-libraries vulkan-headers spirv-headers spirv-tools catch2 sdl3 libusb1-1.0.29 quazip-qt6
|
||||
```
|
||||
|
||||
[Caveats](./Caveats.md#openbsd).
|
||||
|
|
@ -284,7 +294,7 @@ pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gm
|
|||
<summary>DragonFlyBSD</summary>
|
||||
|
||||
```sh
|
||||
pkg install gcc14 git cmake unzip nasm autoconf bash pkgconf ffmpeg glslang gmake jq nlohmann-json enet spirv-tools sdl2 vulkan-utility-libraries vulkan-headers catch2 libfmt openssl liblz4 boost-libs cpp-httplib qt6-base qt6-charts quazip-qt6 unordered-dense libva-vdpau-driver libva-utils libva-intel-driver
|
||||
pkg install gcc14 git cmake unzip nasm autoconf bash pkgconf ffmpeg glslang gmake jq nlohmann-json enet spirv-tools sdl3 vulkan-utility-libraries vulkan-headers catch2 libfmt openssl liblz4 boost-libs cpp-httplib qt6-base qt6-charts quazip-qt6 unordered-dense libva-vdpau-driver libva-utils libva-intel-driver
|
||||
```
|
||||
|
||||
[Caveats](./Caveats.md#dragonflybsd).
|
||||
|
|
@ -294,7 +304,7 @@ pkg install gcc14 git cmake unzip nasm autoconf bash pkgconf ffmpeg glslang gmak
|
|||
<summary>OpenIndiana</summary>
|
||||
|
||||
```sh
|
||||
sudo pkg install git cmake qt6 boost glslang libzip library/lz4 libusb-1 nlohmann-json openssl opus sdl2 zlib compress/zstd unzip pkg-config nasm autoconf mesa library/libdrm header-drm developer/fmt
|
||||
sudo pkg install git cmake qt6 boost glslang libzip library/lz4 libusb-1 nlohmann-json openssl opus sdl3 zlib compress/zstd unzip pkg-config nasm autoconf mesa library/libdrm header-drm developer/fmt
|
||||
```
|
||||
|
||||
[Caveats](./Caveats.md#openindiana).
|
||||
|
|
@ -318,7 +328,7 @@ sudo pkgin install git cmake autoconf build-essential libusb-1 nasm gcc13
|
|||
|
||||
```sh
|
||||
BASE="git make autoconf libtool automake-wrapper jq patch"
|
||||
MINGW="qt6-base qt6-charts qt6-tools qt6-translations qt6-svg cmake toolchain clang python-pip openssl vulkan-memory-allocator vulkan-devel glslang boost fmt lz4 nlohmann-json zlib zstd enet opus libusb unordered_dense openssl SDL2"
|
||||
MINGW="qt6-base qt6-charts qt6-tools qt6-translations qt6-svg cmake toolchain clang python-pip openssl vulkan-memory-allocator vulkan-devel glslang boost fmt lz4 nlohmann-json zlib zstd enet opus libusb unordered_dense openssl SDL3"
|
||||
# Either x86_64 or clang-aarch64 (Windows on ARM)
|
||||
packages="$BASE"
|
||||
for pkg in $MINGW; do
|
||||
|
|
@ -344,7 +354,7 @@ pacman -Syuu --needed --noconfirm $packages
|
|||
<summary>HaikuOS</summary>
|
||||
|
||||
```sh
|
||||
pkgman install git cmake patch libfmt_devel nlohmann_json lz4_devel opus_devel boost1.90_devel vulkan_devel qt6_base_devel qt6_declarative_devel libsdl2_devel ffmpeg7_devel libx11_devel enet_devel catch2_devel quazip1_qt5_devel qt6_5compat_devel glslang qt6_devel qt6_charts_devel
|
||||
pkgman install git cmake patch libfmt_devel nlohmann_json lz4_devel opus_devel boost1.90_devel vulkan_devel qt6_base_devel qt6_declarative_devel libsdl3_devel ffmpeg7_devel libx11_devel enet_devel catch2_devel quazip1_qt5_devel qt6_5compat_devel glslang qt6_devel qt6_charts_devel cubeb_devel simpleini quazip_qt6_devel
|
||||
```
|
||||
|
||||
[Caveats](./Caveats.md#haikuos).
|
||||
|
|
@ -355,9 +365,11 @@ pkgman install git cmake patch libfmt_devel nlohmann_json lz4_devel opus_devel b
|
|||
|
||||
```sh
|
||||
sudo pkg update
|
||||
sudo pkg install git cmake ffmpeg6 sdl2 zlib llvm18
|
||||
sudo pkg install git cmake ffmpeg6 zlib llvm18
|
||||
```
|
||||
|
||||
RedoxOS currently does not support SDL3. You will have to compile it yourself and pray.
|
||||
|
||||
[Caveats](./Caveats.md#redoxos).
|
||||
|
||||
</details>
|
||||
|
|
|
|||
31
docs/HosKernel.md
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# HOS Kernel
|
||||
|
||||
In brief, the HOS kernel is a microkernel, some services and programs run in userspace, the primary way to do communication between these is via `HIPC` (not covered here); otherwise most of the primitives reside in the forms of syscalls invoked via `svc #imm`. The kernel supports both 32-bit and 64-bit programs, and has the capacity to use 32, 36 and 39 bits of address space for spawned processes. Most of the networking stack is based off FreeBSD's network stack.
|
||||
|
||||
The emulator implements the majority of the syscalls pertaining to the HOS kernel itself. When we talk about the HOS Kernel (in the context of the emulator) we are strictly speaking about the mechanisms from which syscalls are handled (and it's subsequent side effects, such as the page table book-keeping). The emulator at it's current state is unable to load a custom low-level kernel and do supervisor-level emulation.
|
||||
|
||||
Most programs in NX eventually invoke an `svc`, which, depending on it's immediate value, will go on to be dispatched into one of the specific syscall handlers.
|
||||
|
||||
These can be seen in [svc.cpp](/src/core/hle/kernel/svc.cpp). All of these correspond to syscalls which userspace programs may perform.
|
||||
|
||||
In turn, these syscalls create the mechanisms that allows programs to use CMIF/TIPC as their primary IPC form to contact other services/processes running on the system, the details of which will not be covered here, but you can consult the relevant [SwitchBrew article: 'HIPC'](https://switchbrew.org/wiki/HIPC).
|
||||
|
||||
From the point of view of the programs, no special devices (such as PCIE, Realtek drivers, Bluetooth or USB) has to be handled by the emulator; this is because most of the fun occurs in specialized services such as `usb:u` or `pcie` services. Which aren't emulated (yet).
|
||||
|
||||
Due to the nature of syscalls, many of them interact with memory. The emulated kernel has an internal tree-like structure, borrowed from FreeBSD's intrusive red-black tree; this is used to track and find mappings added or removed. Thus most of the process space is emulated in this way.
|
||||
|
||||
The kernel keeps it's own separate pagetable, in a traditional sense, each process has it's own pagetable, this is true for HOS as well.
|
||||
|
||||
Every process keeps it's own tracking of the following structures:
|
||||
- Name (13 characters)
|
||||
- 64-bit ID
|
||||
- A handle table
|
||||
- Exclusive monitor
|
||||
- Threads
|
||||
- Held locks
|
||||
- Thread local pages
|
||||
- A page table for each process
|
||||
|
||||
The emulator willingly restricts itself to only use 4 threads (to emulate 4 cores), this is because most existing applications do not benefit greatly from the added core count, and in fact can be detrimental due to extra contention. This translates equitatively to about 4 `ArmInterface` slots for each process, these are then redirected to whatever is the last `pc` of the last thread running on the core is meant to be; proceed to run it, then when returning (due to halt or interruption), proceed to reschedule the thread.
|
||||
|
||||
The scheduler as-is isn't 100% faithful to the original, and has great timing variance (especially due to the fact the emulator can run in systems with wildly different timings).
|
||||
|
|
@ -853,6 +853,8 @@ Texture Query.
|
|||
|
||||
Vote Across SIMD Thread Group
|
||||
|
||||
`VOTE_vtg` is a kepler leftover.
|
||||
|
||||
# VSET
|
||||
`0100 000- ---- ----`
|
||||
|
||||
|
|
|
|||
|
|
@ -29,8 +29,7 @@ These options control dependencies.
|
|||
- `YUZU_TZDB_PATH` (string) Path to a pre-downloaded timezone database (useful for nixOS and Gentoo)
|
||||
- `YUZU_USE_BUNDLED_MOLTENVK` (ON, macOS only) Download bundled MoltenVK lib
|
||||
- `YUZU_USE_BUNDLED_OPENSSL` (ON for MSVC, Android, Solaris, and OpenBSD) Download bundled OpenSSL build
|
||||
- `YUZU_USE_EXTERNAL_SDL2` (OFF) Compiles SDL2 from source
|
||||
- `YUZU_USE_BUNDLED_SDL2` (ON for MSVC) Download a prebuilt SDL2
|
||||
- `YUZU_USE_BUNDLED_SDL3` (ON for MSVC) Download a prebuilt SDL3
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
|
|
@ -44,6 +43,9 @@ These options control dependencies.
|
|||
- UNIX may be better off appending `-flto=thin` to compiler args
|
||||
- `USE_FASTER_LINKER` (OFF) Check if a faster linker is available
|
||||
- Not recommended outside of Linux
|
||||
- `YUZU_INSTALL_UDEV_RULES` (OFF) Install udev rules to enable hidraw access
|
||||
- Needed for gyroscopes
|
||||
- Only available on Linux
|
||||
|
||||
### Flavors
|
||||
|
||||
|
|
@ -60,7 +62,7 @@ These options control executables and build flavors.
|
|||
|
||||
**Desktop only**:
|
||||
|
||||
- `YUZU_CMD` (ON) Compile the SDL2 frontend (eden-cli)
|
||||
- `YUZU_CMD` (ON) Compile the SDL-based frontend (eden-cli)
|
||||
- `YUZU_ROOM` (OFF) Compile dedicated room functionality into the main executable
|
||||
- `YUZU_ROOM_STANDALONE` (OFF) Compile a separate executable for room functionality
|
||||
- `YUZU_STATIC_ROOM` (OFF) Compile the room executable *only* as a static, portable executable
|
||||
|
|
@ -96,5 +98,6 @@ The following options were a part of Eden at one point, but have since been reti
|
|||
- `ENABLE_SDL2` - While technically possible to *not* use SDL2 on desktop, this is **NOT** a supported configuration under any means, and adding this matrix to our build system was not worth the effort.
|
||||
- `YUZU_USE_CPM` - This option once had a purpose, but that purpose has long since passed us by. *All* builds use CPMUtil to manage dependencies now.
|
||||
- If you want to *force* the usage of system dependencies, use `-DCPMUTIL_FORCE_SYSTEM=ON`.
|
||||
- `YUZU_USE_EXTERNAL_SDL` - This is now handled automatically. It was included even after CPM for purposes that have not applied for a very long time.
|
||||
|
||||
See `src/dynarmic/CMakeLists.txt` for additional options--usually, these don't need changed
|
||||
|
|
|
|||
|
|
@ -2,21 +2,26 @@
|
|||
|
||||
Are you just a casual user? Take a look at our [User Handbook](./user) then!
|
||||
|
||||
If you want to register/signup as a contributor, take a gander at the [signup guide](./SIGNUP.md).
|
||||
|
||||
This contains documentation created by developers. This contains build instructions, guidelines, instructions/layouts for [cool stuff we made](./CPMUtil), and more.
|
||||
|
||||
- **[General Build Instructions](Build.md)**
|
||||
- **[CMake Options](Options.md)**
|
||||
- **[Cross Compiling](CrossCompile.md)**
|
||||
- **[Development Guidelines](Development.md)**
|
||||
- **[Dependencies](Deps.md)**
|
||||
- **[General Build Instructions](./Build.md)**
|
||||
- **[CMake Options](./Options.md)**
|
||||
- **[Cross Compiling](./CrossCompile.md)**
|
||||
- **[Development Guidelines](./Development.md)**
|
||||
- **[Dependencies](./Deps.md)**
|
||||
- **[Debug Guidelines](./Debug.md)**
|
||||
- **[CPM - CMake Package Manager](./CPMUtil)**
|
||||
- **[Platform-Specific Caveats](Caveats.md)**
|
||||
- **[Platform-Specific Caveats](./Caveats.md)**
|
||||
- **[The NVIDIA SM86 (Maxwell) GPU](./NvidiaGpu.md)**
|
||||
- **[Dynarmic](./dynarmic)**
|
||||
- **[Cross compilation](./CrossCompile.md)**
|
||||
- **[Driver Bugs](./DriverBugs.md)**
|
||||
- **[Building Older Commits](./build/OlderCommits.md)**
|
||||
- Subsystems:
|
||||
- **[Dynarmic](./dynarmic/README.md)**
|
||||
- **[HOS Kernel](./HosKernel.md)**
|
||||
- **[Settings](./Settings.md)**
|
||||
|
||||
## Policies
|
||||
|
||||
|
|
@ -25,3 +30,12 @@ Policies and information on development.
|
|||
- **[AI and LLM Usage](./policies/AI.md)**
|
||||
- **[Release Policy](./policies/Release.md)**
|
||||
- **[Coding guidelines](./policies/Coding.md)**
|
||||
- **[Coding Style guidelines](./policies/CodingStyle.md)**
|
||||
|
||||
## Externals
|
||||
|
||||
Other useful resources in general, take a quick read if you need.
|
||||
|
||||
- **[SwitchBrew](https://switchbrew.org/wiki/Main_Page)**
|
||||
- **[IPS file format](https://zerosoft.zophar.net/ips.php)**
|
||||
- **[IPSwitch file format](https://github.com/3096/ipswitch)**
|
||||
|
|
|
|||
327
docs/Settings.md
Normal file
|
|
@ -0,0 +1,327 @@
|
|||
# Settings
|
||||
|
||||
> [!WARNING]
|
||||
> This guide is intended for developers ONLY. If you're looking for configuring the emulator itself, please read **[the user handbook](./user/README.md)**.
|
||||
|
||||
Settings on the emulator are very important, toggles and such can be used to guard and/or add branches to paths where some games may crash while others won't, and viceversa.
|
||||
|
||||
However, this process can be tedious for those unfamiliar; this document serves as a outline/documentation for the settings subsystem.
|
||||
|
||||
## Index
|
||||
|
||||
* [Adding Debug Knobs](#adding-debug-knobs)
|
||||
* [Advantages](#advantages)
|
||||
* [Usage](#usage)
|
||||
* [Accessing Debug Knobs (dev side)](#accessing-debug-knobs-dev-side)
|
||||
* [Setting Debug Knobs (user side)](#setting-debug-knobs-user-side)
|
||||
* [Bit Manipulation Examples](#bit-manipulation-examples)
|
||||
* [Terminology and user communication](#terminology-and-user-communication)
|
||||
* [Examples](#examples)
|
||||
* [Example 1: Conditional Debug Logging](#example-1-conditional-debug-logging)
|
||||
* [Example 2: Performance Tuning](#example-2-performance-tuning)
|
||||
* [Example 3: Feature Gating](#example-3-feature-gating)
|
||||
* [Best Practices](#best-practices)
|
||||
* [Adding Boolean Settings Toggles](#adding-boolean-settings-toggles)
|
||||
* [Step 1 - Common Setting](#step-1-common-setting)
|
||||
* [Step 2 - Qt Toggle](#step-2-qt-toggle)
|
||||
* [Step 3 - Kotlin (Android)](#step-3-kotlin-android)
|
||||
* [Step 3.1 - BooleanSetting.kt](#step-3-1-booleansetting-kt)
|
||||
* [Step 3.2 - SettingsItem.kt](#step-3-2-settingsitem-kt)
|
||||
* [Step 3.3 - SettingsFragmentPresenter.kt](#step-3-3-settingsfragmentpresenter-kt)
|
||||
* [Step 3.4 - Localization](#step-3-4-localization)
|
||||
* [Step 4 - Use Your Toggle](#step-4-use-your-toggle)
|
||||
* [Best Practices](#best-practices)
|
||||
|
||||
## Adding Boolean Settings Toggles
|
||||
|
||||
This guide will walk you through adding a new boolean toggle setting to Eden's configuration across both Qt's (PC) and Kotlin's (Android) UIs.
|
||||
|
||||
---
|
||||
|
||||
### Step 1 - Common Setting
|
||||
|
||||
Firstly add your desired toggle:
|
||||
|
||||
Example: `src/common/setting.h`
|
||||
```cpp
|
||||
SwitchableSetting<bool> your_setting_name{linkage, false, "your_setting_name", Category::RendererExtensions};
|
||||
```
|
||||
|
||||
Remember to add your toggle to the appropriate category, for example:
|
||||
|
||||
Common Categories:
|
||||
|
||||
* Category::Renderer
|
||||
* Category::RendererAdvanced
|
||||
* Category::RendererExtensions
|
||||
* Category::System
|
||||
* Category::Core
|
||||
|
||||
> [!WARNING]
|
||||
> If you wish for your toggle to be `on by default` then change `false` to `true` after `linkage,`.
|
||||
|
||||
---
|
||||
|
||||
### Step 2 - Qt Toggle
|
||||
|
||||
Add the toggle to the Qt UI, where you wish for it to appear and place it there.
|
||||
|
||||
Example: `src/qt_common/config/shared_translation.cpp`
|
||||
```cpp
|
||||
INSERT(Settings,
|
||||
your_setting_name,
|
||||
tr("Your Setting Display Name"),
|
||||
tr("Detailed description of what this setting does.\n"
|
||||
"You can use multiple lines.\n"
|
||||
"Explain any caveats or requirements."));
|
||||
```
|
||||
|
||||
#### Make sure to:
|
||||
|
||||
* Keep display naming consistant
|
||||
* Put detailed info in the description
|
||||
* Use `\n` for line breaks in descriptions
|
||||
|
||||
---
|
||||
|
||||
### Step 3 - Kotlin (Android)
|
||||
|
||||
#### Step 3.1 - BooleanSetting.kt
|
||||
|
||||
Add where it should be in the settings.
|
||||
|
||||
Example: `src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt`
|
||||
```kts
|
||||
RENDERER_YOUR_SETTING_NAME("your_setting_name"),
|
||||
```
|
||||
|
||||
#### Make sure to:
|
||||
|
||||
* Ensure the prefix naming matches the intended category.
|
||||
|
||||
---
|
||||
|
||||
#### Step 3.2 - SettingsItem.kt
|
||||
|
||||
Add the toggle to the Kotlin (Android) UI
|
||||
|
||||
Example: `src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt`
|
||||
```kts
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.RENDERER_YOUR_SETTING_NAME,
|
||||
titleId = R.string.your_setting_name,
|
||||
descriptionId = R.string.your_setting_name_description
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Step 3.3 - SettingsFragmentPresenter.kt
|
||||
|
||||
Add your setting within the right category.
|
||||
|
||||
Example: `src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt`
|
||||
```kts
|
||||
add(BooleanSetting.RENDERER_YOUR_SETTING_NAME.key)
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> Remember, placing matters! Settings appear in the order of where you add them.
|
||||
|
||||
---
|
||||
|
||||
#### Step 3.4 - Localization
|
||||
|
||||
Add your setting and description in the appropriate place.
|
||||
|
||||
Example: `src/android/app/src/main/res/values/strings.xml`
|
||||
```xml
|
||||
<string name="your_setting_name">Your Setting Display Name</string>
|
||||
<string name="your_setting_name_description">Detailed description of what this setting does. Explain any caveats, requirements, or warnings here.</string>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Step 4 - Use Your Toggle!
|
||||
|
||||
Now the UI part is done find a place in the code for the toggle,
|
||||
And use it to your heart's desire!
|
||||
|
||||
Example:
|
||||
```cpp
|
||||
const bool your_value = Settings::values.your_setting_name.GetValue();
|
||||
|
||||
if (your_value) {
|
||||
// Do something when enabled
|
||||
}
|
||||
```
|
||||
|
||||
If you wish to do something only when the toggle is disabled,
|
||||
Use `if (!your_value) {` instead of `if (your_value) {`.
|
||||
|
||||
---
|
||||
|
||||
### Best Practices
|
||||
|
||||
* Naming - Use clear, descriptive names. Something for both the devs and the users.
|
||||
* Defaults - Choose safe default values (usually false for new features).
|
||||
* Documentation - Write clear descriptions explaining when and why to use the setting.
|
||||
* Categories - Put settings in the appropriate category.
|
||||
* Order - Place related settings near each other.
|
||||
* Testing - Always test on both PC and Android before committing when possible.
|
||||
|
||||
Thank you for reading, I hope this guide helped you making your toggle!
|
||||
|
||||
## Adding Debug Knobs
|
||||
|
||||
Debug Knobs is a 16-bit integer setting (`debug_knobs`) in the Eden Emulator that serves as a bitmask for gating various testing and debugging features. This allows developers and advanced users to enable or disable specific debug behaviors without requiring deploying of complete but temporary toggles.
|
||||
|
||||
The setting ranges from 0 to 65535 (0x0000 to 0xFFFF), where each bit represents a different debug feature flag.
|
||||
|
||||
---
|
||||
|
||||
### Advantages
|
||||
|
||||
The main advantage is to avoid deploying new disposable toggles (those made only for testing stage, and are disposed once new feature gets good to merge). This empowers devs to be free of all frontend burocracy and hassle of new toggles.
|
||||
|
||||
Common advantages recap:
|
||||
|
||||
* **Fine-Grained Control**: Enable or disable up to 16 individual debug features independently using bit manipulation on a single build
|
||||
* **Runtime Configuration**: Change debug behavior at runtime the same way as new toggles would do
|
||||
* **Safe incremental development**: New debug features can be added while impact can be isolated from previous deployments
|
||||
|
||||
### Usage
|
||||
|
||||
#### Accessing Debug Knobs (dev side)
|
||||
|
||||
Use the `Settings::getDebugKnobAt(u8 i)` function to check if a specific bit is set:
|
||||
|
||||
```cpp
|
||||
//cpp side
|
||||
#include "common/settings.h"
|
||||
|
||||
// Check if bit 0 is set
|
||||
bool feature_enabled = Settings::getDebugKnobAt(0);
|
||||
|
||||
// Check if bit 15 is set
|
||||
bool another_feature = Settings::getDebugKnobAt(15);
|
||||
```
|
||||
|
||||
```kts
|
||||
//kotlin side
|
||||
import org.yuzu.yuzu_emu.features.settings.model.Settings
|
||||
|
||||
// Check if bit x is set
|
||||
bool feature_enabled = Settings.getDebugKnobAt(x); //x as integer from 0 to 15
|
||||
```
|
||||
|
||||
The function returns `true` if the specified bit (0-15) is set in the `debug_knobs` value, `false` otherwise.
|
||||
|
||||
#### Setting Debug Knobs (user side)
|
||||
|
||||
Developers must inform which knobs are tied to each functionality to be tested.
|
||||
|
||||
The debug knobs value can be set through:
|
||||
|
||||
1. **Desktop UI**: In the Debug configuration tab, there's a spinbox for "Debug knobs" (0-65535)
|
||||
2. **Android UI**: Available as an integer setting in the Debug section
|
||||
3. **Configuration Files**: Set the `debug_knobs` value in the emulator's configuration
|
||||
|
||||
#### Bit Manipulation Examples
|
||||
|
||||
To enable specific features, calculate the decimal value by setting the appropriate bits:
|
||||
|
||||
* **Enable only bit 0**: Value = 1 (2^0)
|
||||
* **Enable only bit 1**: Value = 2 (2^1)
|
||||
* **Enable bits 0 and 1**: Value = 3 (2^0 + 2^1)
|
||||
* **Enable bit 15**: Value = 32768 (2^15)
|
||||
|
||||
### Terminology and user communication
|
||||
|
||||
There are two main confusions when talking about knobs:
|
||||
|
||||
#### Whether it's zero-based or one-based
|
||||
|
||||
Sometimes when an user reports: knobs 1 and 2 gets better performance, dev may get confuse whether he means the knobs 1 and 2 literally, or the 1st and 2nd knobs (knobs 0 and 1).
|
||||
|
||||
Debug knobs are **zero-based**, which means:
|
||||
* The first knob is the knob(0) (or knob0 henceforth), and the last one is the 15 (knob15, likewise)
|
||||
* You can talk: "knob0 is enabled/disabled", "In this video i was using only knobs 0 and 2", etc.
|
||||
|
||||
#### Whether one is talking about the knob itself or about the entire parameter value (which represents all knobs)
|
||||
|
||||
Sometimes when an user reports: knob 3 results, it's unclear whether he's referring to knob setting with value 3 (which means both knob 0 and 1 are enabled), or to knob(3) specifically.
|
||||
Whenever you're instructing tests or reporting results, be precise about whether one you're talking to avoid confusion:
|
||||
|
||||
#### Setting based terminology
|
||||
|
||||
ALWAYS use the word in PLURAL (knobs), without mentioning which one, to refer to the setting, aka multiple knobs at once:
|
||||
Examples:
|
||||
- **knobs=0**: no knobs enabled
|
||||
- **knobs=1**: knob0 enabled, others disabled
|
||||
- **knobs=2**: knob1 enabled, others disabled
|
||||
- **knobs=3**: knobs 0 and 1 enabled, others disabled
|
||||
|
||||
...
|
||||
|
||||
#### Knob based terminology
|
||||
|
||||
Use the word in SINGULAR (knob), or in plural but referring which ones, when meaning multiple knobs at once:
|
||||
Examples:
|
||||
- **knob0**: knob 0 enabled, others disabled
|
||||
- **knob1**: knob 1 enabled, others disabled
|
||||
- **knobs 0 and 1**: knobs 0 and 1 enabled, others disabled
|
||||
|
||||
...
|
||||
|
||||
### Examples
|
||||
|
||||
#### Example 1: Conditional Debug Logging
|
||||
|
||||
```cpp
|
||||
void SomeFunction() {
|
||||
if (Settings::getDebugKnobAt(0)) {
|
||||
LOG_DEBUG(Common, "Debug feature 0 is enabled");
|
||||
// Additional debug code here
|
||||
}
|
||||
|
||||
if (Settings::getDebugKnobAt(1)) {
|
||||
LOG_DEBUG(Common, "Debug feature 1 is enabled");
|
||||
// Different debug behavior
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Example 2: Performance Tuning
|
||||
|
||||
```cpp
|
||||
bool UseOptimizedPath() {
|
||||
// Skip optimization if debug bit 2 is set for testing
|
||||
return !Settings::getDebugKnobAt(2);
|
||||
}
|
||||
```
|
||||
|
||||
#### Example 3: Feature Gating
|
||||
|
||||
```cpp
|
||||
void ExperimentalFeature() {
|
||||
static constexpr u8 EXPERIMENTAL_FEATURE_BIT = 3;
|
||||
|
||||
if (!Settings::getDebugKnobAt(EXPERIMENTAL_FEATURE_BIT)) {
|
||||
// Fallback to stable implementation
|
||||
StableImplementation();
|
||||
return;
|
||||
}
|
||||
|
||||
// Experimental implementation
|
||||
ExperimentalImplementation();
|
||||
}
|
||||
```
|
||||
|
||||
### Best Practices
|
||||
|
||||
* This setting is intended for development and testing purposes only
|
||||
* Knobs must be unwired before PR creation
|
||||
* The setting is per-game configurable, allowing different debug setups for different titles
|
||||
|
|
@ -1,126 +1,70 @@
|
|||
# Coding guidelines
|
||||
|
||||
These are mostly "suggestions", if you feel like your code is readable, comprehensible to others; and most importantly doesn't result in unreadable spaghetti you're fine to go.
|
||||
These are **not** stylistic guidelines, they're, for the most part, suggestions on how to architecture new systems or improve upon the existing codebase.
|
||||
|
||||
But for new developers you may find that following these guidelines will make everything x10 easier.
|
||||
# Foreword
|
||||
|
||||
## Naming conventions
|
||||
Don't try to micro-optimize out of the get go, while yes, most of the code is pretty, subpar, most of these are aftertoughts and details that can be glossed over **generally**.
|
||||
|
||||
Simply put, types/classes are named as `PascalCase`, same for methods and functions like `AddElement`. Variables are named `like_this_snake_case` and constants are `IN_SCREAMING_CASE`.
|
||||
Architectural issues are more important, for example an API returning a `std::string` is not as efficient as one that operates on `std::string_view` directly (cost of constructing an `std::string` w/o small-string optimization and all of that).
|
||||
|
||||
Except for Qt MOC where `functionName` is preferred.
|
||||
Regardless of the details, try to keep things simple. As a general rule of thumb.
|
||||
|
||||
Template typenames prefer short names like `T`, `I`, `U`, if a longer name is required either `Iterator` or `perform_action` are fine as well. Do not use names like `SS` as systems like solaris define it for registers, in general do not use any of the following for short names:
|
||||
# C++ guidelines
|
||||
|
||||
- `SS`, `DS`, `GS`, `FS`: Segment registers, defined by Solaris `<ucontext.h>`
|
||||
- `EAX`, `EBX`, `ECX`, `EDX`, `ESI`, `EDI`, `ESP`, `EBP`, `EIP`: Registers, defined by Solaris.
|
||||
- `X`: Defined by some utility headers, avoid.
|
||||
- `_`: Defined by gettext, avoid.
|
||||
- `N`, `M`, `S`: Preferably don't use this for types, use it for numeric constants.
|
||||
- `TR`: Used by some weird `<ucontext.h>` whom define the Task Register as a logical register to provide to the user... (Need to remember which OS in specific).
|
||||
Everyone has their own way of viewing good/bad C++ practices, my general outline:
|
||||
|
||||
Macros must always be in `SCREAMING_CASE`. Do not use short letter macros as systems like Solaris will conflict with them; a good rule of thumb is >5 characters per macro - i.e `THIS_MACRO_IS_GOOD`, `AND_ALSO_THIS_ONE`.
|
||||
- At your disposal you may use `boost::container::static_vector<>` (beware it has a ctor/initialization cost which goes up the more elements you add).
|
||||
- Or you may use `boost::container::small_vector<>` (which has an initialization cost as well, and will use extra book-keeping for heap, try to keep a balance).
|
||||
- Don't use `[[likely]]` or `[[unlikely]]`; PGO builds exist for that.
|
||||
- Don't use inline assembly to try to outsmart the compiler unless you're 100% sure the assembly you're writing is actually good.
|
||||
- And if so, try to restructure your C++ code so the compiler vectorizes it/makes it better, right?
|
||||
- Or if that fails, use intrinsics instead of raw `asm volatile`.
|
||||
- Use `std::optional<>` instead of `std::unique_ptr<>` if possible.
|
||||
- `std::unique_ptr<>` carries indirection cost due to it being memory allocated on the heap.
|
||||
- It isn't often that objects that contain `std::unique_ptr<>`, are allocated on the heap themselves, allocating even more things on the heap seems redundant.
|
||||
- Avoid `std::recursive_mutex` at all costs.
|
||||
- It's basically implemented as a linked list most of the time and has HEAVY performance penalties.
|
||||
- Exploit the fact `std::atomic<uint32_t>/std::atomic<int32_t>` is basically free on most arches that matter.
|
||||
- In x86_64, an atomic `uint32_t` is basically `mov [m32], r32`, which is essentially free/cheap.
|
||||
- Avoid template parameters unless you really need them.
|
||||
- For small inlineable functions this is fine, for more complex ones, please consider the generated assembly.
|
||||
- Dont make your own memcpy/memset/strcpy/strncpy/etc.
|
||||
- Seriously DON'T DO THIS. You will NOT beat the compiler.
|
||||
- Nor 30 years of writing optimized `mem*`.
|
||||
- If your code is slow, don't blame `mem*`, blame your code.
|
||||
- Try to avoid using `virtual` since vtable indirection has a cost
|
||||
- Avoid `dynamic_cast` and `typeid` at all costs.
|
||||
- The reason is because the project has `-fno-rtti` disabled by default, due to the costs of dynamic polymorphism.
|
||||
- Always copy-on-value for objects with `sizeof(void *) >= sizeof(T) * 2`, i.e objects sized as 2 pointers or less, for bigger objects you can use ref/pointer as usual.
|
||||
- Try using move semantics instead of references, whenever possible.
|
||||
- Remember function parameters are extremelly cheap as fuck, don't be afraid to place upto 8 parameters on a given function.
|
||||
- Don't save a reference in structures of a parent object, i.e:
|
||||
```c++
|
||||
struct Child {
|
||||
Parent& parent;
|
||||
void Mehod() {
|
||||
parent.Something();
|
||||
}
|
||||
};
|
||||
```
|
||||
- Instead you can do the following:
|
||||
```c++
|
||||
struct Child {
|
||||
void Mehod(Parent& parent) {
|
||||
parent.Something();
|
||||
}
|
||||
};
|
||||
```
|
||||
- This reduces the amount of pointers you have lying around, and also works better because of the aforementioned cheapness of parameter functions.
|
||||
|
||||
Try not using hungarian notation, if you're able.
|
||||
# Engineering guidelines
|
||||
|
||||
## Formatting
|
||||
Coding isn't also writing stuff but architecturing stuff, consider the following:
|
||||
|
||||
Formatting is extremelly lax, the general rule of thumb is: Don't add new lines just to increase line count. The less lines we have to look at, the better. This means also packing densely your code while not making it a clusterfuck. Strike a balance of "this is a short and comprehensible piece of code" and "my eyes are actually happy to see this!". Don't just drop the entire thing in a single line and call it "dense code", that's just spaghetti posing as code. In general, be mindful of what other devs need to look at.
|
||||
|
||||
Do not put if/while/etc braces after lines:
|
||||
|
||||
```c++
|
||||
// no dont do this
|
||||
// this is more lines of code for no good reason (why braces need their separate lines?)
|
||||
// and those take space in someone's screen, cumulatively
|
||||
if (thing)
|
||||
{ //<--
|
||||
some(); // ...
|
||||
} //<-- 2 lines of code for basically "opening" and "closing" an statment
|
||||
|
||||
// do this
|
||||
if (thing) { //<-- [...] and with your brain you can deduce it's this piece of code
|
||||
// that's being closed
|
||||
some(); // ...
|
||||
} //<-- only one line, and it's clearer since you know its closing something [...]
|
||||
|
||||
// or this, albeit the extra line isn't needed (at your discretion of course)
|
||||
if (thing)
|
||||
some(); // ...
|
||||
|
||||
// this is also ok, keeps things in one line and makes it extremely clear
|
||||
if (thing) some();
|
||||
|
||||
// NOT ok, don't be "clever" and use the comma operator to stash a bunch of statments
|
||||
// in a single line, doing this will definitely ruin someone's day - just do the thing below
|
||||
// vvv
|
||||
if (thing) some(), thing(), a2(a1(), y1(), j1()), do_complex_shit(wa(), wo(), ploo());
|
||||
// ... and in general don't use the comma operator for "multiple statments", EXCEPT if you think
|
||||
// that it makes the code more readable (the situation may be rare however)
|
||||
|
||||
// Wow so much clearer! Now I can actually see what each statment is meant to do!
|
||||
if (thing) {
|
||||
some();
|
||||
thing();
|
||||
a2(a1(), y1(), j1());
|
||||
do_complex_shit(wa(), wo(), ploo());
|
||||
}
|
||||
```
|
||||
|
||||
Brace rules are lax, if you can get the point across, do it:
|
||||
|
||||
```c++
|
||||
// this is fine
|
||||
do {
|
||||
if (thing) {
|
||||
return 0;
|
||||
}
|
||||
} while (other);
|
||||
|
||||
// this is also ok --- albeit a bit more dense
|
||||
do if (thing) return 0; while (other);
|
||||
|
||||
// ok as well
|
||||
do {
|
||||
if (thing) return 0;
|
||||
} while (other);
|
||||
```
|
||||
|
||||
There is no 80-column limit but preferably be mindful of other developer's readability (like don't just put everything onto one line).
|
||||
|
||||
```c++
|
||||
// someone is going to be mad due to this
|
||||
SDL_AudioSpec obtained;
|
||||
device_name.empty() ? device = SDL_OpenAudioDevice(nullptr, capture, &spec, &obtained, false) : device = SDL_OpenAudioDevice(device_name.c_str(), capture, &spec, &obtained, false);
|
||||
|
||||
// maybe consider this
|
||||
SDL_AudioSpec obtained;
|
||||
if (device_name.empty()) {
|
||||
device = SDL_OpenAudioDevice(nullptr, capture, &spec, &obtained, false);
|
||||
} else {
|
||||
device = SDL_OpenAudioDevice(device_name.c_str(), capture, &spec, &obtained, false);
|
||||
}
|
||||
|
||||
// or this is fine as well
|
||||
SDL_AudioSpec obtained;
|
||||
device = SDL_OpenAudioDevice(device_name.empty() ? nullptr : device_name.c_str(), capture, &spec, &obtained, false);
|
||||
```
|
||||
|
||||
A note about operators: Use them sparingly, yes, the language is lax on them, but some usages can be... tripping to say the least.
|
||||
|
||||
```c++
|
||||
a, b, c; //<-- NOT OK multiple statments with comma operator is definitely a recipe for disaster
|
||||
return c ? a : b; //<-- OK ternaries at end of return statments are clear and fine
|
||||
return a, b; //<-- NOT OK return will take value of `b` but also evaluate `a`, just use a separate statment
|
||||
void f(int a[]) //<-- OK? if you intend to use the pointer as an array, otherwise just mark it as *
|
||||
```
|
||||
|
||||
And about templates, use them sparingly, don't just do meta-templating for the sake of it, do it when you actually need it. This isn't a competition to see who can make the most complicated and robust meta-templating system. Just use what works, and preferably stick to the standard libary instead of reinventing the wheel. Additionally:
|
||||
|
||||
```c++
|
||||
// NOT OK This will create (T * N * C * P) versions of the same function. DO. NOT. DO. THIS.
|
||||
template<typename T, size_t N, size_t C, size_t P> inline void what() const noexcept;
|
||||
|
||||
// OK use parameters like a normal person, don't be afraid to use them :)
|
||||
template<typename T> inline void what(size_t n, size_t c, size_t p) const noexcept;
|
||||
```
|
||||
- Try to reduce dependency on... dependencies
|
||||
- While some dependencies are useful `boost::container` and `fmt` to name a few, remember each dependency added incurs a cost.
|
||||
- It may also be subpar with a hand rolled implementation, biggest exemplar of this is `spirv-tools` providing subpar SPIRV optimizations in comparison to the in-house optimizer.
|
||||
- Try to rely less on indirection for architecturing systems
|
||||
- If the underlying HLE kernel emulation requires it, try making a solution that keeps things local
|
||||
- For example, there isn't a need for file descriptors to each be a pointer, when they could be a fixed table size with elements that may be emplaced at will.
|
||||
|
|
|
|||
126
docs/policies/CodingStyle.md
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
# Coding Style guidelines
|
||||
|
||||
These are mostly "suggestions", if you feel like your code is readable, comprehensible to others; and most importantly doesn't result in unreadable spaghetti you're fine to go.
|
||||
|
||||
But for new developers you may find that following these guidelines will make everything x10 easier.
|
||||
|
||||
## Naming conventions
|
||||
|
||||
Simply put, types/classes are named as `PascalCase`, same for methods and functions like `AddElement`. Variables are named `like_this_snake_case` and constants are `IN_SCREAMING_CASE`.
|
||||
|
||||
Except for Qt MOC where `functionName` is preferred.
|
||||
|
||||
Template typenames prefer short names like `T`, `I`, `U`, if a longer name is required either `Iterator` or `perform_action` are fine as well. Do not use names like `SS` as systems like solaris define it for registers, in general do not use any of the following for short names:
|
||||
|
||||
- `SS`, `DS`, `GS`, `FS`: Segment registers, defined by Solaris `<ucontext.h>`
|
||||
- `EAX`, `EBX`, `ECX`, `EDX`, `ESI`, `EDI`, `ESP`, `EBP`, `EIP`: Registers, defined by Solaris.
|
||||
- `X`: Defined by some utility headers, avoid.
|
||||
- `_`: Defined by gettext, avoid.
|
||||
- `N`, `M`, `S`: Preferably don't use this for types, use it for numeric constants.
|
||||
- `TR`: Used by some weird `<ucontext.h>` whom define the Task Register as a logical register to provide to the user... (Need to remember which OS in specific).
|
||||
|
||||
Macros must always be in `SCREAMING_CASE`. Do not use short letter macros as systems like Solaris will conflict with them; a good rule of thumb is >5 characters per macro - i.e `THIS_MACRO_IS_GOOD`, `AND_ALSO_THIS_ONE`.
|
||||
|
||||
Try not using hungarian notation, if you're able.
|
||||
|
||||
## Formatting
|
||||
|
||||
Formatting is extremelly lax, the general rule of thumb is: Don't add new lines just to increase line count. The less lines we have to look at, the better. This means also packing densely your code while not making it a clusterfuck. Strike a balance of "this is a short and comprehensible piece of code" and "my eyes are actually happy to see this!". Don't just drop the entire thing in a single line and call it "dense code", that's just spaghetti posing as code. In general, be mindful of what other devs need to look at.
|
||||
|
||||
Do not put if/while/etc braces after lines:
|
||||
|
||||
```c++
|
||||
// no dont do this
|
||||
// this is more lines of code for no good reason (why braces need their separate lines?)
|
||||
// and those take space in someone's screen, cumulatively
|
||||
if (thing)
|
||||
{ //<--
|
||||
some(); // ...
|
||||
} //<-- 2 lines of code for basically "opening" and "closing" an statment
|
||||
|
||||
// do this
|
||||
if (thing) { //<-- [...] and with your brain you can deduce it's this piece of code
|
||||
// that's being closed
|
||||
some(); // ...
|
||||
} //<-- only one line, and it's clearer since you know its closing something [...]
|
||||
|
||||
// or this, albeit the extra line isn't needed (at your discretion of course)
|
||||
if (thing)
|
||||
some(); // ...
|
||||
|
||||
// this is also ok, keeps things in one line and makes it extremely clear
|
||||
if (thing) some();
|
||||
|
||||
// NOT ok, don't be "clever" and use the comma operator to stash a bunch of statments
|
||||
// in a single line, doing this will definitely ruin someone's day - just do the thing below
|
||||
// vvv
|
||||
if (thing) some(), thing(), a2(a1(), y1(), j1()), do_complex_shit(wa(), wo(), ploo());
|
||||
// ... and in general don't use the comma operator for "multiple statments", EXCEPT if you think
|
||||
// that it makes the code more readable (the situation may be rare however)
|
||||
|
||||
// Wow so much clearer! Now I can actually see what each statment is meant to do!
|
||||
if (thing) {
|
||||
some();
|
||||
thing();
|
||||
a2(a1(), y1(), j1());
|
||||
do_complex_shit(wa(), wo(), ploo());
|
||||
}
|
||||
```
|
||||
|
||||
Brace rules are lax, if you can get the point across, do it:
|
||||
|
||||
```c++
|
||||
// this is fine
|
||||
do {
|
||||
if (thing) {
|
||||
return 0;
|
||||
}
|
||||
} while (other);
|
||||
|
||||
// this is also ok --- albeit a bit more dense
|
||||
do if (thing) return 0; while (other);
|
||||
|
||||
// ok as well
|
||||
do {
|
||||
if (thing) return 0;
|
||||
} while (other);
|
||||
```
|
||||
|
||||
There is no 80-column limit but preferably be mindful of other developer's readability (like don't just put everything onto one line).
|
||||
|
||||
```c++
|
||||
// someone is going to be mad due to this
|
||||
SDL_AudioSpec obtained;
|
||||
device_name.empty() ? device = SDL_OpenAudioDevice(nullptr, capture, &spec, &obtained, false) : device = SDL_OpenAudioDevice(device_name.c_str(), capture, &spec, &obtained, false);
|
||||
|
||||
// maybe consider this
|
||||
SDL_AudioSpec obtained;
|
||||
if (device_name.empty()) {
|
||||
device = SDL_OpenAudioDevice(nullptr, capture, &spec, &obtained, false);
|
||||
} else {
|
||||
device = SDL_OpenAudioDevice(device_name.c_str(), capture, &spec, &obtained, false);
|
||||
}
|
||||
|
||||
// or this is fine as well
|
||||
SDL_AudioSpec obtained;
|
||||
device = SDL_OpenAudioDevice(device_name.empty() ? nullptr : device_name.c_str(), capture, &spec, &obtained, false);
|
||||
```
|
||||
|
||||
A note about operators: Use them sparingly, yes, the language is lax on them, but some usages can be... tripping to say the least.
|
||||
|
||||
```c++
|
||||
a, b, c; //<-- NOT OK multiple statments with comma operator is definitely a recipe for disaster
|
||||
return c ? a : b; //<-- OK ternaries at end of return statments are clear and fine
|
||||
return a, b; //<-- NOT OK return will take value of `b` but also evaluate `a`, just use a separate statment
|
||||
void f(int a[]) //<-- OK? if you intend to use the pointer as an array, otherwise just mark it as *
|
||||
```
|
||||
|
||||
And about templates, use them sparingly, don't just do meta-templating for the sake of it, do it when you actually need it. This isn't a competition to see who can make the most complicated and robust meta-templating system. Just use what works, and preferably stick to the standard libary instead of reinventing the wheel. Additionally:
|
||||
|
||||
```c++
|
||||
// NOT OK This will create (T * N * C * P) versions of the same function. DO. NOT. DO. THIS.
|
||||
template<typename T, size_t N, size_t C, size_t P> inline void what() const noexcept;
|
||||
|
||||
// OK use parameters like a normal person, don't be afraid to use them :)
|
||||
template<typename T> inline void what(size_t n, size_t c, size_t p) const noexcept;
|
||||
```
|
||||
|
|
@ -1,159 +0,0 @@
|
|||
# User Handbook - Adding Boolean Settings Toggles
|
||||
|
||||
> [!WARNING]
|
||||
> This guide is intended for developers ONLY. If you are not a developer, this likely irrelevant to yourself.
|
||||
>
|
||||
> If you want to add temporary toggles, please refer to **[Adding Debug Knobs](AddingDebugKnobs.md)**
|
||||
|
||||
This guide will walk you through adding a new boolean toggle setting to Eden's configuration across both Qt's (PC) and Kotlin's (Android) UIs.
|
||||
|
||||
## Index
|
||||
|
||||
1. [Step 1 - Common Setting](#step-1-common-setting)
|
||||
2. [Step 2 - Qt Toggle](#step-2-qt-toggle)
|
||||
3. [Step 3 - Kotlin (Android)](#step-3-kotlin-android)
|
||||
|
||||
* [Step 3.1 - BooleanSetting.kt](#step-3-1-booleansetting-kt)
|
||||
* [Step 3.2 - SettingsItem.kt](#step-3-2-settingsitem-kt)
|
||||
* [Step 3.3 - SettingsFragmentPresenter.kt](#step-3-3-settingsfragmentpresenter-kt)
|
||||
* [Step 3.4 - Localization](#step-3-4-localization)
|
||||
4. [Step 4 - Use Your Toggle](#step-4-use-your-toggle)
|
||||
5. [Best Practices](#best-practices)
|
||||
|
||||
---
|
||||
|
||||
## Step 1 - Common Setting
|
||||
|
||||
Firstly add your desired toggle:
|
||||
|
||||
Example: `src/common/setting.h`
|
||||
```cpp
|
||||
SwitchableSetting<bool> your_setting_name{linkage, false, "your_setting_name", Category::RendererExtensions};
|
||||
```
|
||||
|
||||
### Remember to add your toggle to the appropriate category, for example:
|
||||
|
||||
Common Categories:
|
||||
|
||||
* Category::Renderer
|
||||
* Category::RendererAdvanced
|
||||
* Category::RendererExtensions
|
||||
* Category::System
|
||||
* Category::Core
|
||||
|
||||
> [!WARNING]
|
||||
> If you wish for your toggle to be `on by default` then change `false` to `true` after `linkage,`.
|
||||
|
||||
---
|
||||
|
||||
## Step 2 - Qt Toggle
|
||||
|
||||
Add the toggle to the Qt UI, where you wish for it to appear and place it there.
|
||||
|
||||
Example: `src/qt_common/config/shared_translation.cpp`
|
||||
```cpp
|
||||
INSERT(Settings,
|
||||
your_setting_name,
|
||||
tr("Your Setting Display Name"),
|
||||
tr("Detailed description of what this setting does.\n"
|
||||
"You can use multiple lines.\n"
|
||||
"Explain any caveats or requirements."));
|
||||
```
|
||||
|
||||
### Make sure to:
|
||||
|
||||
* Keep display naming consistant
|
||||
* Put detailed info in the description
|
||||
* Use `\n` for line breaks in descriptions
|
||||
|
||||
---
|
||||
|
||||
## Step 3 - Kotlin (Android)
|
||||
|
||||
### Step 3.1 - BooleanSetting.kt
|
||||
|
||||
Add where it should be in the settings.
|
||||
|
||||
Example: `src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt`
|
||||
```kts
|
||||
RENDERER_YOUR_SETTING_NAME("your_setting_name"),
|
||||
```
|
||||
|
||||
### Make sure to:
|
||||
|
||||
* Ensure the prefix naming matches the intended category.
|
||||
|
||||
---
|
||||
|
||||
### Step 3.2 - SettingsItem.kt
|
||||
|
||||
Add the toggle to the Kotlin (Android) UI
|
||||
|
||||
Example: `src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt`
|
||||
```kts
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.RENDERER_YOUR_SETTING_NAME,
|
||||
titleId = R.string.your_setting_name,
|
||||
descriptionId = R.string.your_setting_name_description
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Step 3.3 - SettingsFragmentPresenter.kt
|
||||
|
||||
Add your setting within the right category.
|
||||
|
||||
Example: `src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt`
|
||||
```kts
|
||||
add(BooleanSetting.RENDERER_YOUR_SETTING_NAME.key)
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> Remember, placing matters! Settings appear in the order of where you add them.
|
||||
|
||||
---
|
||||
|
||||
### Step 3.4 - Localization
|
||||
|
||||
Add your setting and description in the appropriate place.
|
||||
|
||||
Example: `src/android/app/src/main/res/values/strings.xml`
|
||||
```xml
|
||||
<string name="your_setting_name">Your Setting Display Name</string>
|
||||
<string name="your_setting_name_description">Detailed description of what this setting does. Explain any caveats, requirements, or warnings here.</string>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 4 - Use Your Toggle!
|
||||
|
||||
Now the UI part is done find a place in the code for the toggle,
|
||||
And use it to your heart's desire!
|
||||
|
||||
Example:
|
||||
```cpp
|
||||
const bool your_value = Settings::values.your_setting_name.GetValue();
|
||||
|
||||
if (your_value) {
|
||||
// Do something when enabled
|
||||
}
|
||||
```
|
||||
|
||||
If you wish to do something only when the toggle is disabled,
|
||||
Use `if (!your_value) {` instead of `if (your_value) {`.
|
||||
|
||||
---
|
||||
|
||||
## Best Practices
|
||||
|
||||
* Naming - Use clear, descriptive names. Something for both the devs and the users.
|
||||
* Defaults - Choose safe default values (usually false for new features).
|
||||
* Documentation - Write clear descriptions explaining when and why to use the setting.
|
||||
* Categories - Put settings in the appropriate category.
|
||||
* Order - Place related settings near each other.
|
||||
* Testing - Always test on both PC and Android before committing when possible.
|
||||
|
||||
### Thank you for reading, I hope this guide helped you making your toggle!
|
||||
|
|
@ -1,167 +0,0 @@
|
|||
# User Handbook - Adding Debug Knobs
|
||||
|
||||
Debug Knobs is a 16-bit integer setting (`debug_knobs`) in the Eden Emulator that serves as a bitmask for gating various testing and debugging features. This allows developers and advanced users to enable or disable specific debug behaviors without requiring deploying of complete but temporary toggles.
|
||||
|
||||
The setting ranges from 0 to 65535 (0x0000 to 0xFFFF), where each bit represents a different debug feature flag.
|
||||
|
||||
## Index
|
||||
|
||||
1. [Advantages](#advantages)
|
||||
2. [Usage](#usage)
|
||||
|
||||
* [Accessing Debug Knobs (dev side)](#accessing-debug-knobs-dev-side)
|
||||
* [Setting Debug Knobs (user side)](#setting-debug-knobs-user-side)
|
||||
* [Bit Manipulation Examples](#bit-manipulation-examples)
|
||||
3. [Terminology and user communication](#terminology-and-user-communication)
|
||||
4. [Examples](#examples)
|
||||
|
||||
* [Example 1: Conditional Debug Logging](#example-1-conditional-debug-logging)
|
||||
* [Example 2: Performance Tuning](#example-2-performance-tuning)
|
||||
* [Example 3: Feature Gating](#example-3-feature-gating)
|
||||
5. [Best Practices](#best-practices)
|
||||
|
||||
---
|
||||
|
||||
## Advantages
|
||||
|
||||
The main advantage is to avoid deploying new disposable toggles (those made only for testing stage, and are disposed once new feature gets good to merge). This empowers devs to be free of all frontend burocracy and hassle of new toggles.
|
||||
|
||||
Common advantages recap:
|
||||
|
||||
* **Fine-Grained Control**: Enable or disable up to 16 individual debug features independently using bit manipulation on a single build
|
||||
* **Runtime Configuration**: Change debug behavior at runtime the same way as new toggles would do
|
||||
* **Safe incremental development**: New debug features can be added while impact can be isolated from previous deployments
|
||||
|
||||
## Usage
|
||||
|
||||
### Accessing Debug Knobs (dev side)
|
||||
|
||||
Use the `Settings::getDebugKnobAt(u8 i)` function to check if a specific bit is set:
|
||||
|
||||
```cpp
|
||||
//cpp side
|
||||
#include "common/settings.h"
|
||||
|
||||
// Check if bit 0 is set
|
||||
bool feature_enabled = Settings::getDebugKnobAt(0);
|
||||
|
||||
// Check if bit 15 is set
|
||||
bool another_feature = Settings::getDebugKnobAt(15);
|
||||
```
|
||||
|
||||
```kts
|
||||
//kotlin side
|
||||
import org.yuzu.yuzu_emu.features.settings.model.Settings
|
||||
|
||||
// Check if bit x is set
|
||||
bool feature_enabled = Settings.getDebugKnobAt(x); //x as integer from 0 to 15
|
||||
```
|
||||
|
||||
The function returns `true` if the specified bit (0-15) is set in the `debug_knobs` value, `false` otherwise.
|
||||
|
||||
### Setting Debug Knobs (user side)
|
||||
|
||||
Developers must inform which knobs are tied to each functionality to be tested.
|
||||
|
||||
The debug knobs value can be set through:
|
||||
|
||||
1. **Desktop UI**: In the Debug configuration tab, there's a spinbox for "Debug knobs" (0-65535)
|
||||
2. **Android UI**: Available as an integer setting in the Debug section
|
||||
3. **Configuration Files**: Set the `debug_knobs` value in the emulator's configuration
|
||||
|
||||
### Bit Manipulation Examples
|
||||
|
||||
To enable specific features, calculate the decimal value by setting the appropriate bits:
|
||||
|
||||
* **Enable only bit 0**: Value = 1 (2^0)
|
||||
* **Enable only bit 1**: Value = 2 (2^1)
|
||||
* **Enable bits 0 and 1**: Value = 3 (2^0 + 2^1)
|
||||
* **Enable bit 15**: Value = 32768 (2^15)
|
||||
|
||||
## Terminology and user communication
|
||||
|
||||
There are two main confusions when talking about knobs:
|
||||
|
||||
### Whether it's zero-based or one-based
|
||||
|
||||
Sometimes when an user reports: knobs 1 and 2 gets better performance, dev may get confuse whether he means the knobs 1 and 2 literally, or the 1st and 2nd knobs (knobs 0 and 1).
|
||||
|
||||
Debug knobs are **zero-based**, which means:
|
||||
* The first knob is the knob(0) (or knob0 henceforth), and the last one is the 15 (knob15, likewise)
|
||||
* You can talk: "knob0 is enabled/disabled", "In this video i was using only knobs 0 and 2", etc.
|
||||
|
||||
### Whether one is talking about the knob itself or about the entire parameter value (which represents all knobs)
|
||||
|
||||
Sometimes when an user reports: knob 3 results, it's unclear whether he's referring to knob setting with value 3 (which means both knob 0 and 1 are enabled), or to knob(3) specifically.
|
||||
Whenever you're instructing tests or reporting results, be precise about whether one you're talking to avoid confusion:
|
||||
|
||||
### Setting based terminology
|
||||
|
||||
ALWAYS use the word in PLURAL (knobs), without mentioning which one, to refer to the setting, aka multiple knobs at once:
|
||||
Examples:
|
||||
- **knobs=0**: no knobs enabled
|
||||
- **knobs=1**: knob0 enabled, others disabled
|
||||
- **knobs=2**: knob1 enabled, others disabled
|
||||
- **knobs=3**: knobs 0 and 1 enabled, others disabled
|
||||
|
||||
...
|
||||
|
||||
### Knob based terminology
|
||||
|
||||
Use the word in SINGULAR (knob), or in plural but referring which ones, when meaning multiple knobs at once:
|
||||
Examples:
|
||||
- **knob0**: knob 0 enabled, others disabled
|
||||
- **knob1**: knob 1 enabled, others disabled
|
||||
- **knobs 0 and 1**: knobs 0 and 1 enabled, others disabled
|
||||
|
||||
...
|
||||
|
||||
## Examples
|
||||
|
||||
### Example 1: Conditional Debug Logging
|
||||
|
||||
```cpp
|
||||
void SomeFunction() {
|
||||
if (Settings::getDebugKnobAt(0)) {
|
||||
LOG_DEBUG(Common, "Debug feature 0 is enabled");
|
||||
// Additional debug code here
|
||||
}
|
||||
|
||||
if (Settings::getDebugKnobAt(1)) {
|
||||
LOG_DEBUG(Common, "Debug feature 1 is enabled");
|
||||
// Different debug behavior
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Example 2: Performance Tuning
|
||||
|
||||
```cpp
|
||||
bool UseOptimizedPath() {
|
||||
// Skip optimization if debug bit 2 is set for testing
|
||||
return !Settings::getDebugKnobAt(2);
|
||||
}
|
||||
```
|
||||
|
||||
### Example 3: Feature Gating
|
||||
|
||||
```cpp
|
||||
void ExperimentalFeature() {
|
||||
static constexpr u8 EXPERIMENTAL_FEATURE_BIT = 3;
|
||||
|
||||
if (!Settings::getDebugKnobAt(EXPERIMENTAL_FEATURE_BIT)) {
|
||||
// Fallback to stable implementation
|
||||
StableImplementation();
|
||||
return;
|
||||
}
|
||||
|
||||
// Experimental implementation
|
||||
ExperimentalImplementation();
|
||||
}
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
* This setting is intended for development and testing purposes only
|
||||
* Knobs must be unwired before PR creation
|
||||
* The setting is per-game configurable, allowing different debug setups for different titles
|
||||
|
|
@ -40,7 +40,7 @@ Windows/riscv64 doesn't exist, and may never (until corporate greed no longer co
|
|||
|
||||
Android/riscv64 is interesting. While support for it may be added if and when RISC-V phones/handhelds ever go mainstream, arm64 devices will always be preferred due to NCE.
|
||||
|
||||
Only Fedora/riscv64 has been tested, but in theory, every riscv64 distribution that has *at least* the standard build tools, Qt, FFmpeg, and SDL2 should work.
|
||||
Only Fedora/riscv64 has been tested, but in theory, every riscv64 distribution that has *at least* the standard build tools, Qt, FFmpeg, and SDL3 should work.
|
||||
|
||||
## Other
|
||||
|
||||
|
|
|
|||
|
|
@ -9,3 +9,11 @@ At the moment of writing, we do not support CFW such as Atmosphere, due to:
|
|||
We do however, maintain HLE compatibility with the former mentioned CFW, applications that require Atmosphere to run will run fine in the emulator without any adjustments.
|
||||
|
||||
If they don't run - then that's a bug!
|
||||
|
||||
## Atmosphere
|
||||
|
||||
Fusee Galee, the bootloader and other low-level mechanisms are not emulated at the moment.
|
||||
|
||||
Having OFW is recommended, but may not be required (untested).
|
||||
|
||||
Extract the contents of Atmosphere into `sdmc`. Then to launch simply use `-hlaunch` instead (orthogonal to `-qlaunch`).
|
||||
|
|
|
|||
|
|
@ -1,17 +1,22 @@
|
|||
# User Handbook - Command Line
|
||||
|
||||
There are two main applications, an SDL2 based app (`eden-cli`) and a Qt based app (`eden`); both accept command line arguments.
|
||||
There are two main applications, an SDL-based app (`eden-cli`) and a Qt based app (`eden`); both accept command line arguments.
|
||||
|
||||
## eden
|
||||
|
||||
- `./eden <path>`: Running with a single argument and nothing else, will make the emulator look for the given file and load it, this behaviour is similar to `eden-cli`; allows dragging and dropping games into the application.
|
||||
- `-g <path>`: Alternate way to specify what to load, overrides. However let it be noted that arguments that use `-` will be treated as options/ignored, if your game, for some reason, starts with `-`, in order to safely handle it you may need to specify it as an argument.
|
||||
- `-f`: Use fullscreen.
|
||||
- `-u <number>`: Select the index of the user to load as.
|
||||
- `-input-profile <name>`: Specifies input profile name to use (for player #0 only).
|
||||
- `-qlaunch`: Launch QLaunch.
|
||||
- `-hlaunch`: Launch homebrew launcher `nx-hbloader`.
|
||||
- Requires a copy of Atmosphere to be extracted onto `sdmc`.
|
||||
- This is a shorthand for `<eden folder>/sdmc/atmosphere/hbl.nsp`.
|
||||
- `-setup`: Launch setup applet.
|
||||
|
||||
## eden-cli
|
||||
|
||||
- `--debug/-d`: Enter debug mode, allow gdb stub at port `1234`
|
||||
- `--config/-c`: Specify alternate configuration file.
|
||||
- `--fullscreen/-f`: Set fullscreen.
|
||||
|
|
|
|||
|
|
@ -44,6 +44,10 @@ Various graphical filters exist - each of them aimed at a specific target/image
|
|||
- **MMPX**: Nearest-neighbour filter aimed at providing higher pixel-art quality.
|
||||
- **Pros**: Offers decent pixel-art upscaling.
|
||||
- **Cons**: Only works for pixel-art.
|
||||
- **SGSR**: Uses Snapdragon Studios Game Super Resolution to enhance image quality (similar to FSR, but for Adreno devices).
|
||||
- **Pros**: Optimized for Adreno devices.
|
||||
- **Cons**: Doesn't play nicely with non-Adreno devices.
|
||||
- **SGSR Edge**: Almost the same pipeline as SGSR, but with improved edge detection.
|
||||
|
||||
### Anisotropy values
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Multiplayer
|
||||
# User Handbook - Multiplayer
|
||||
Use this guide to answer questions regarding and to start using the multiplayer functionality of Eden.
|
||||
|
||||
## Multiplayer FAQ
|
||||
|
|
|
|||
|
|
@ -25,12 +25,12 @@ A copy of this handbook is [available online](https://git.eden-emu.dev/eden-emu/
|
|||
- **[Importing Saves](./ImportingSaves.md)**
|
||||
- **[Installing Atmosphere Mods](./InstallingAtmosphereMods.md)**
|
||||
- **[Installing Updates & DLCs](./InstallingUpdatesDLC.md)**
|
||||
- **[Alter Date & Time](./AlterDateTime.md)**
|
||||
- **[Multiplayer](./Multiplayer.md)**
|
||||
|
||||
## 3rd-party Integration
|
||||
|
||||
- **[Configuring Steam ROM Manager](./SteamROM.md)**
|
||||
- **[Server hosting](ServerHosting.md)**
|
||||
- **[Server hosting](./ServerHosting.md)**
|
||||
- **[Syncthing Guide](./SyncthingGuide.md)**
|
||||
- **[Third Party](./ThirdParty.md)**
|
||||
- **[Obtainium](./ThirdParty.md#configuring-obtainium)**
|
||||
|
|
@ -40,12 +40,13 @@ A copy of this handbook is [available online](https://git.eden-emu.dev/eden-emu/
|
|||
|
||||
## Advanced
|
||||
|
||||
- **[Command Line](./CommandLine.md)**
|
||||
- **[Custom Firmware](./CFW.md)**
|
||||
- **[Alter Date & Time](./AlterDateTime.md)**
|
||||
- **[How To Access Logs](./HowToAccessLogs.md)**
|
||||
- **[Gyro Controls](./GyroControls.md)**
|
||||
- **[Platforms and Architectures](Architectures.md)**
|
||||
- **[Command Line](CommandLine.md)**
|
||||
- **[Native Application Development](Native.md)**
|
||||
- **[Adding Boolean Settings Toggles](AddingBooleanToggles.md)**
|
||||
- **[Platforms and Architectures](./Architectures.md)**
|
||||
- **[Native Application Development](./Native.md)**
|
||||
- **[Adding Boolean Settings Toggles](./AddingBooleanToggles.md)**
|
||||
- **[Adding Debug Knobs](./AddingDebugKnobs.md)**
|
||||
- **[Testing](Testing.md)**
|
||||
- **[Testing](./Testing.md)**
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ EmuDeck will automatically create an *Emulators - Emulators* parser for ***Steam
|
|||
4. Paste the following code into the contents of the file, save and close the file.
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
#!/bin/sh -e
|
||||
emuName="eden" #parameterize me
|
||||
|
||||
. "$HOME/.config/EmuDeck/backend/functions/all.sh"
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ The main origin repository is always at https://git.eden-emu.dev/eden-emu/eden.
|
|||
|
||||
- https://github.com/eden-emulator/mirror
|
||||
- https://git.crueter.xyz/mirror/eden
|
||||
- https://codeberg.org/eden-emu/eden
|
||||
- https://collective.taymaerz.de/eden/eden
|
||||
|
||||
Other mirrors obviously exist on the internet, but we can't guarantee their reliability and/or availability.
|
||||
|
|
|
|||
28
externals/CMakeLists.txt
vendored
|
|
@ -136,8 +136,7 @@ if(ENABLE_CUBEB)
|
|||
endif()
|
||||
|
||||
if (NOT ANDROID)
|
||||
if (YUZU_USE_EXTERNAL_SDL2)
|
||||
message(STATUS "Using SDL2 from externals.")
|
||||
if (NOT YUZU_USE_BUNDLED_SDL3)
|
||||
if (NOT WIN32)
|
||||
# Yuzu itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers
|
||||
# Since 2.0.18 Atomic+Threads required for HIDAPI/libusb (see https://github.com/libsdl-org/SDL/issues/5095)
|
||||
|
|
@ -158,21 +157,26 @@ if (NOT ANDROID)
|
|||
set(SDL_FILE ON)
|
||||
endif()
|
||||
|
||||
if ("${YUZU_SYSTEM_PROFILE}" STREQUAL "steamdeck")
|
||||
set(SDL_PIPEWIRE OFF) # build errors out with this on
|
||||
AddJsonPackage("sdl2_steamdeck")
|
||||
else()
|
||||
AddJsonPackage("sdl2_generic")
|
||||
endif()
|
||||
elseif (YUZU_USE_BUNDLED_SDL2)
|
||||
message(STATUS "Using bundled SDL2")
|
||||
AddJsonPackage(sdl3)
|
||||
else()
|
||||
message(STATUS "Using bundled SDL3")
|
||||
if (PLATFORM_FREEBSD)
|
||||
set(BUILD_SHARED_LIBS ON)
|
||||
endif()
|
||||
AddJsonPackage(sdl2)
|
||||
AddJsonPackage(sdl3-ci)
|
||||
endif()
|
||||
|
||||
find_package(SDL2 2.26.4 REQUIRED)
|
||||
# Normalize SDL3 link target across package variants.
|
||||
# Some SDL3 packages export only SDL3::SDL3-shared or SDL3::SDL3-static.
|
||||
if (NOT TARGET SDL3::SDL3)
|
||||
if (TARGET SDL3::SDL3-shared)
|
||||
add_library(SDL3::SDL3 ALIAS SDL3::SDL3-shared)
|
||||
elseif (TARGET SDL3::SDL3-static)
|
||||
add_library(SDL3::SDL3 ALIAS SDL3::SDL3-static)
|
||||
else()
|
||||
message(FATAL_ERROR "SDL3 package found, but no usable SDL3 target was exported")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
|
|
|
|||
32
externals/cpmfile.json
vendored
|
|
@ -30,7 +30,6 @@
|
|||
"tag": "v%VERSION%",
|
||||
"hash": "5efa8140aadffe105dcf39935b732476e95755f6c7473ada3d0b64df2bc02c557633ae3948a25b45e1cf67e89a3ff6329fb30362e4ac033b9a1d1e453aa2eded",
|
||||
"git_version": "0.37.0",
|
||||
"version": "0.18.7",
|
||||
"find_args": "MODULE GLOBAL",
|
||||
"patches": [
|
||||
"0001-mingw.patch",
|
||||
|
|
@ -123,13 +122,13 @@
|
|||
"BUNDLE_SPEEX ON"
|
||||
]
|
||||
},
|
||||
"sdl2": {
|
||||
"sdl3-ci": {
|
||||
"ci": true,
|
||||
"package": "SDL2",
|
||||
"name": "SDL2",
|
||||
"repo": "crueter-ci/SDL2",
|
||||
"version": "2.32.10-3c28e8ecc0",
|
||||
"min_version": "2.26.4"
|
||||
"package": "SDL3",
|
||||
"name": "SDL3",
|
||||
"repo": "crueter-ci/SDL3",
|
||||
"version": "3.4.8-d57c3b685c",
|
||||
"min_version": "3.2.10"
|
||||
},
|
||||
"catch2": {
|
||||
"package": "Catch2",
|
||||
|
|
@ -157,22 +156,13 @@
|
|||
"find_args": "MODULE",
|
||||
"git_version": "4.25"
|
||||
},
|
||||
"sdl2_generic": {
|
||||
"package": "SDL2",
|
||||
"sdl3": {
|
||||
"package": "SDL3",
|
||||
"repo": "libsdl-org/SDL",
|
||||
"tag": "release-%VERSION%",
|
||||
"hash": "d5622d6bb7266f7942a7b8ad43e8a22524893bf0c2ea1af91204838d9b78d32768843f6faa248757427b8404b8c6443776d4afa6b672cd8571a4e0c03a829383",
|
||||
"bundled": true,
|
||||
"git_version": "2.32.10",
|
||||
"skip_updates": true
|
||||
},
|
||||
"sdl2_steamdeck": {
|
||||
"package": "SDL2",
|
||||
"repo": "libsdl-org/SDL",
|
||||
"sha": "cc016b0046",
|
||||
"hash": "b8d9873446cdb922387471df9968e078714683046674ef0d0edddf8e25da65a539a3bae83d635496b970237f90b07b36a69f8d7855d450de59311d6d6e8c3dbc",
|
||||
"bundled": true,
|
||||
"skip_updates": "true"
|
||||
"hash": "df5a323af7ac366661a3c0e887969c72584d232f3cc211419d59b0487b620b6b2859d4549c9e8df002ee489290062e466fcfddf7edc0872a37b1f2845e81c0f3",
|
||||
"git_version": "3.4.8",
|
||||
"version": "3.2.10"
|
||||
},
|
||||
"moltenvk": {
|
||||
"repo": "V380-Ori/Ryujinx.MoltenVK",
|
||||
|
|
|
|||
27
externals/nx_tzdb/NxTzdbCreateHeader.cmake
vendored
|
|
@ -1,3 +1,6 @@
|
|||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -16,15 +19,24 @@ if (NOT FILE_LIST)
|
|||
endif()
|
||||
|
||||
set(DIRECTORY_NAME ${HEADER_NAME})
|
||||
|
||||
set(FILE_DATA "")
|
||||
|
||||
string(APPEND FILE_DATA "[[nodiscard]] static inline std::vector<FileSys::VirtualFile> CollectFiles_${DIRECTORY_NAME}() {\n")
|
||||
string(APPEND FILE_DATA [[
|
||||
std::vector<FileSys::VirtualFile> vfs_files;
|
||||
auto const fn = [&](std::string_view name, std::span<const u8> data) {
|
||||
vfs_files.push_back(std::make_shared<FileSys::VectorVfsFile>(
|
||||
std::vector<u8>(data.begin(), data.end()),
|
||||
std::string{name}
|
||||
));
|
||||
};
|
||||
]])
|
||||
foreach(ZONE_FILE ${FILE_LIST})
|
||||
if (ZONE_FILE STREQUAL "\n")
|
||||
continue()
|
||||
endif()
|
||||
|
||||
string(APPEND FILE_DATA "{\"${ZONE_FILE}\",\n{")
|
||||
|
||||
string(APPEND FILE_DATA " {\n")
|
||||
string(APPEND FILE_DATA " constexpr uint8_t tzdb_data[] = {\n")
|
||||
file(READ ${ZONE_PATH}/${ZONE_FILE} ZONE_DATA HEX)
|
||||
string(LENGTH "${ZONE_DATA}" ZONE_DATA_LEN)
|
||||
foreach(I RANGE 0 ${ZONE_DATA_LEN} 2)
|
||||
|
|
@ -42,9 +54,12 @@ foreach(ZONE_FILE ${FILE_LIST})
|
|||
string(APPEND FILE_DATA " ")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
string(APPEND FILE_DATA "}},\n")
|
||||
string(APPEND FILE_DATA " };\n")
|
||||
string(APPEND FILE_DATA " fn(\"${ZONE_FILE}\", tzdb_data);\n")
|
||||
string(APPEND FILE_DATA " }\n")
|
||||
endforeach()
|
||||
string(APPEND FILE_DATA " return vfs_files;\n")
|
||||
string(APPEND FILE_DATA "}\n")
|
||||
|
||||
file(READ ${NX_TZDB_SOURCE_DIR}/tzdb_template.h.in NX_TZDB_TEMPLATE_H_IN)
|
||||
file(CONFIGURE OUTPUT ${NX_TZDB_INCLUDE_DIR}/nx_tzdb/${HEADER_NAME}.h CONTENT "${NX_TZDB_TEMPLATE_H_IN}")
|
||||
|
|
|
|||
9
externals/nx_tzdb/tzdb_template.h.in
vendored
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -9,10 +12,10 @@
|
|||
|
||||
namespace NxTzdb {
|
||||
|
||||
// @DIRECTORY_NAME@
|
||||
|
||||
// clang-format off
|
||||
const static std::map<const char*, const std::vector<uint8_t>> @DIRECTORY_NAME@ =
|
||||
{
|
||||
@FILE_DATA@};
|
||||
@FILE_DATA@
|
||||
// clang-format on
|
||||
|
||||
} // namespace NxTzdb
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
#!/bin/sh
|
||||
#!/bin/sh -e
|
||||
|
||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
# SPDX-FileCopyrightText: 2015 Citra Emulator Project
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -10,20 +12,19 @@ paths_to_check="src/ CMakeLists.txt"
|
|||
|
||||
# If there are whitespace errors, print the offending file names and fail.
|
||||
if ! git diff --cached --check -- $paths_to_check ; then
|
||||
cat<<END
|
||||
|
||||
cat<<EOF
|
||||
Error: This commit would contain trailing spaces or tabs, which is against this repo's policy.
|
||||
Please correct those issues before committing. (Use 'git diff --check' for more details)
|
||||
If you know what you are doing, you can try 'git commit --no-verify' to bypass the check
|
||||
END
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for tabs, since tab-in-indent catches only those at the beginning of a line
|
||||
if git diff --cached -- $paths_to_check | egrep '^\+.* '; then
|
||||
cat<<END
|
||||
cat<<EOF
|
||||
Error: This commit would contain a tab, which is against this repo's policy.
|
||||
If you know what you are doing, you can try 'git commit --no-verify' to bypass the check.
|
||||
END
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
|||
6
shell.nix
Normal file → Executable file
|
|
@ -1,3 +1,7 @@
|
|||
#!/usr/bin/nix-shell
|
||||
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
let
|
||||
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05";
|
||||
pkgs = import nixpkgs { config = {}; overlays = []; };
|
||||
|
|
@ -16,7 +20,7 @@ pkgs.mkShellNoCC {
|
|||
qt6.qtbase qt6.qtmultimedia qt6.qtwayland qt6.qttools
|
||||
qt6.qtwebengine qt6.qt5compat
|
||||
# eden-cli
|
||||
SDL2
|
||||
SDL3
|
||||
# optional components
|
||||
discord-rpc gamemode
|
||||
];
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ import android.content.BroadcastReceiver
|
|||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.content.pm.PackageManager
|
||||
import android.content.res.Configuration
|
||||
import android.graphics.Rect
|
||||
import android.graphics.drawable.Icon
|
||||
|
|
@ -101,7 +100,6 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener, InputManager
|
|||
private var romSwapGeneration = 0
|
||||
private var hasEmulationSession = processHasEmulationSession
|
||||
private val romSwapStopTimeoutRunnable = Runnable { onRomSwapStopTimeout() }
|
||||
private val pictureInPictureFailureActions: MutableSet<String> = mutableSetOf()
|
||||
|
||||
private fun onRomSwapStopTimeout() {
|
||||
if (!isWaitingForRomSwapStop) {
|
||||
|
|
@ -127,6 +125,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener, InputManager
|
|||
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
NativeConfig.reloadGlobalConfig()
|
||||
|
||||
InputHandler.updateControllerData()
|
||||
val players = NativeConfig.getInputSettings(true)
|
||||
var hasConfiguredControllers = false
|
||||
|
|
@ -268,18 +268,12 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener, InputManager
|
|||
}
|
||||
|
||||
override fun onUserLeaveHint() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ||
|
||||
!isPictureInPictureSupported() ||
|
||||
!BooleanSetting.PICTURE_IN_PICTURE.getBoolean() ||
|
||||
isInPictureInPictureMode
|
||||
) {
|
||||
return
|
||||
}
|
||||
|
||||
val pictureInPictureParamsBuilder = PictureInPictureParams.Builder()
|
||||
.getPictureInPictureActionsBuilder().getPictureInPictureAspectBuilder()
|
||||
runPictureInPictureAction("enter picture-in-picture mode") {
|
||||
enterPictureInPictureMode(pictureInPictureParamsBuilder.build())
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
|
||||
if (BooleanSetting.PICTURE_IN_PICTURE.getBoolean() && !isInPictureInPictureMode) {
|
||||
val pictureInPictureParamsBuilder = PictureInPictureParams.Builder()
|
||||
.getPictureInPictureActionsBuilder().getPictureInPictureAspectBuilder()
|
||||
enterPictureInPictureMode(pictureInPictureParamsBuilder.build())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -659,29 +653,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener, InputManager
|
|||
return this.apply { setActions(pictureInPictureActions) }
|
||||
}
|
||||
|
||||
private fun isPictureInPictureSupported() =
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O &&
|
||||
packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)
|
||||
|
||||
private fun runPictureInPictureAction(actionName: String, action: () -> Unit) {
|
||||
try {
|
||||
action()
|
||||
} catch (e: IllegalStateException) {
|
||||
if (pictureInPictureFailureActions.add(actionName)) {
|
||||
Log.warning("[PiP] Failed to $actionName: ${e.message}")
|
||||
}
|
||||
} catch (e: UnsupportedOperationException) {
|
||||
if (pictureInPictureFailureActions.add(actionName)) {
|
||||
Log.warning("[PiP] Failed to $actionName: ${e.message}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun buildPictureInPictureParams() {
|
||||
if (!isPictureInPictureSupported()) {
|
||||
return
|
||||
}
|
||||
|
||||
val pictureInPictureParamsBuilder = PictureInPictureParams.Builder()
|
||||
.getPictureInPictureActionsBuilder().getPictureInPictureAspectBuilder()
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
|
|
@ -691,9 +663,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener, InputManager
|
|||
BooleanSetting.PICTURE_IN_PICTURE.getBoolean() && isEmulationActive
|
||||
)
|
||||
}
|
||||
runPictureInPictureAction("set picture-in-picture params") {
|
||||
setPictureInPictureParams(pictureInPictureParamsBuilder.build())
|
||||
}
|
||||
setPictureInPictureParams(pictureInPictureParamsBuilder.build())
|
||||
}
|
||||
|
||||
fun displayMultiplayerDialog() {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
|
|||
RENDERER_USE_SPEED_LIMIT("use_speed_limit"),
|
||||
USE_CUSTOM_CPU_TICKS("use_custom_cpu_ticks"),
|
||||
SKIP_CPU_INNER_INVALIDATION("skip_cpu_inner_invalidation"),
|
||||
ANTIFLICKER("antiflicker"),
|
||||
FIX_BLOOM_EFFECTS("fix_bloom_effects"),
|
||||
EMULATE_BGR565("emulate_bgr565"),
|
||||
RESCALE_HACK("rescale_hack"),
|
||||
|
|
|
|||
|
|
@ -750,6 +750,13 @@ abstract class SettingsItem(
|
|||
descriptionId = R.string.skip_cpu_inner_invalidation_description
|
||||
)
|
||||
)
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.ANTIFLICKER,
|
||||
titleId = R.string.antiflicker,
|
||||
descriptionId = R.string.antiflicker_description
|
||||
)
|
||||
)
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.FIX_BLOOM_EFFECTS,
|
||||
|
|
|
|||
|
|
@ -76,18 +76,25 @@ class SettingsFragmentPresenter(
|
|||
}
|
||||
}
|
||||
|
||||
private fun isFsrScalingFilterSelected(): Boolean {
|
||||
val fsrFilterValue = resolveFsrScalingFilterValue() ?: return false
|
||||
private fun isSharpnessScalingFilterSelected(): Boolean {
|
||||
val needsGlobal = getNeedsGlobalForKey(IntSetting.RENDERER_SCALING_FILTER.key)
|
||||
val selectedFilter = IntSetting.RENDERER_SCALING_FILTER.getInt(needsGlobal)
|
||||
return selectedFilter == fsrFilterValue
|
||||
return selectedFilter in resolveSharpnessScalingFilterValues()
|
||||
}
|
||||
|
||||
private fun resolveFsrScalingFilterValue(): Int? {
|
||||
private fun resolveSharpnessScalingFilterValues(): Set<Int> {
|
||||
val names = context.resources.getStringArray(R.array.rendererScalingFilterNames)
|
||||
val values = context.resources.getIntArray(R.array.rendererScalingFilterValues)
|
||||
val fsrIndex = names.indexOf(context.getString(R.string.scaling_filter_fsr))
|
||||
return if (fsrIndex in values.indices) values[fsrIndex] else null
|
||||
val sharpnessFilterNames = setOf(
|
||||
context.getString(R.string.scaling_filter_fsr),
|
||||
context.getString(R.string.scaling_filter_sgsr),
|
||||
context.getString(R.string.scaling_filter_sgsr_edge),
|
||||
)
|
||||
return names.asSequence()
|
||||
.mapIndexedNotNull { index, name ->
|
||||
if (name in sharpnessFilterNames && index in values.indices) values[index] else null
|
||||
}
|
||||
.toSet()
|
||||
}
|
||||
|
||||
// Allows you to show/hide abstract settings based on the paired setting key
|
||||
|
|
@ -267,7 +274,7 @@ class SettingsFragmentPresenter(
|
|||
add(IntSetting.RENDERER_RESOLUTION.key)
|
||||
add(IntSetting.RENDERER_VSYNC.key)
|
||||
add(IntSetting.RENDERER_SCALING_FILTER.key)
|
||||
if (isFsrScalingFilterSelected()) {
|
||||
if (isSharpnessScalingFilterSelected()) {
|
||||
add(IntSetting.FSR_SHARPENING_SLIDER.key)
|
||||
}
|
||||
add(IntSetting.RENDERER_ANTI_ALIASING.key)
|
||||
|
|
@ -291,6 +298,7 @@ class SettingsFragmentPresenter(
|
|||
|
||||
add(IntSetting.FAST_GPU_TIME.key)
|
||||
add(BooleanSetting.SKIP_CPU_INNER_INVALIDATION.key)
|
||||
add(BooleanSetting.ANTIFLICKER.key)
|
||||
add(BooleanSetting.FIX_BLOOM_EFFECTS.key)
|
||||
add(BooleanSetting.EMULATE_BGR565.key)
|
||||
add(BooleanSetting.RESCALE_HACK.key)
|
||||
|
|
|
|||
|
|
@ -1090,7 +1090,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
|||
private fun addQuickSettings() {
|
||||
binding.quickSettingsSheet.apply {
|
||||
val container = binding.quickSettingsSheet.findViewById<ViewGroup>(R.id.quick_settings_container)
|
||||
val isFsrSelected = isFsrScalingFilterSelected()
|
||||
val isSharpnessFilterSelected = isSharpnessScalingFilterSelected()
|
||||
|
||||
container.removeAllViews()
|
||||
|
||||
|
|
@ -1176,7 +1176,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
|||
addQuickSettings()
|
||||
}
|
||||
|
||||
if (isFsrSelected) {
|
||||
if (isSharpnessFilterSelected) {
|
||||
quickSettings.addSliderSetting(
|
||||
R.string.fsr_sharpness,
|
||||
container,
|
||||
|
|
@ -1197,17 +1197,24 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
|||
}
|
||||
}
|
||||
|
||||
private fun isFsrScalingFilterSelected(): Boolean {
|
||||
val fsrFilterValue = resolveFsrScalingFilterValue() ?: return false
|
||||
private fun isSharpnessScalingFilterSelected(): Boolean {
|
||||
val selectedFilter = IntSetting.RENDERER_SCALING_FILTER.getInt(needsGlobal = false)
|
||||
return selectedFilter == fsrFilterValue
|
||||
return selectedFilter in resolveSharpnessScalingFilterValues()
|
||||
}
|
||||
|
||||
private fun resolveFsrScalingFilterValue(): Int? {
|
||||
private fun resolveSharpnessScalingFilterValues(): Set<Int> {
|
||||
val names = resources.getStringArray(R.array.rendererScalingFilterNames)
|
||||
val values = resources.getIntArray(R.array.rendererScalingFilterValues)
|
||||
val fsrIndex = names.indexOf(getString(R.string.scaling_filter_fsr))
|
||||
return if (fsrIndex in values.indices) values[fsrIndex] else null
|
||||
val sharpnessFilterNames = setOf(
|
||||
getString(R.string.scaling_filter_fsr),
|
||||
getString(R.string.scaling_filter_sgsr),
|
||||
getString(R.string.scaling_filter_sgsr_edge),
|
||||
)
|
||||
return names.asSequence()
|
||||
.mapIndexedNotNull { index, name ->
|
||||
if (name in sharpnessFilterNames && index in values.indices) values[index] else null
|
||||
}
|
||||
.toSet()
|
||||
}
|
||||
|
||||
private fun openQuickSettingsMenu() {
|
||||
|
|
|
|||
|
|
@ -19,6 +19,9 @@ AndroidConfig::AndroidConfig(const std::string& config_name, ConfigType config_t
|
|||
}
|
||||
|
||||
void AndroidConfig::ReloadAllValues() {
|
||||
// Ensure the INI file is current before reloading values.
|
||||
SetUpIni();
|
||||
|
||||
Reload();
|
||||
ReadAndroidValues();
|
||||
SaveAndroidValues();
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 67 KiB |
|
|
@ -489,6 +489,8 @@
|
|||
<string name="enable_buffer_history">Activar el historial del búfer</string>
|
||||
<string name="enable_buffer_history_description">Permite el acceso al estado del búfer anterior. Esta opción puede mejorar la calidad de renderizado y la consistencia en el rendimiento de algunos juegos.</string>
|
||||
<string name="use_optimized_vertex_buffers">Búferes de vértices optimizados</string>
|
||||
<string name="use_optimized_vertex_buffers_description">Permite la optimización del enlace del búfer de vértices para un mejor rendimiento. Requiere controladores Mesa 26.0+ Turnip/ controladores QCOM. Fallará con controladores Turnip más antiguos (versión 25.3 o inferior).</string>
|
||||
|
||||
<string name="hacks">Hacks</string>
|
||||
|
||||
<string name="fast_gpu_time">Tiempo rápido de la GPU</string>
|
||||
|
|
@ -500,6 +502,7 @@
|
|||
<string name="emulate_bgr565">Emular BGR565</string>
|
||||
<string name="emulate_bgr565_description">Soluciona problemas con colores invertidos en juegos, artefactos o sombras extrañas.</string>
|
||||
<string name="rescale_hack">Activar la pasada de reescalado heredada</string>
|
||||
<string name="rescale_hack_description">Permite el manejo de versiones anteriores para el paso de configuración de reescalado para juegos mediante el uso de una ruta de reescalado rápida.</string>
|
||||
<string name="renderer_asynchronous_shaders">Usar sombreadores asíncronos</string>
|
||||
<string name="renderer_asynchronous_shaders_description">Compila los sombreadores de forma asíncrona. Esto puede reducir los tirones, pero también puede introducir errores gráficos.</string>
|
||||
<string name="gpu_unswizzle_settings">Ajustes de desentrelazado de la GPU</string>
|
||||
|
|
@ -518,8 +521,10 @@
|
|||
<string name="extensions">Extensiones</string>
|
||||
|
||||
<string name="dyna_state">Estado dinámico extendido</string>
|
||||
<string name="dyna_state_description">Controla la cantidad de características que se pueden usar en ExtendedDynamicState (EDS). Un valor más alto permitirá reducir la cantidad de compilaciones de canalización basadas en el estado dinámico compatible con el controlador.</string>
|
||||
<string name="disabled">Desactivado</string>
|
||||
<string name="vertex_input_dynamic_state">Estado dinámico de entrada de vértices</string>
|
||||
<string name="vertex_input_dynamic_state_description">La activación de esta función permite un manejo más flexible de la entrada de vértices, lo que podría reducir el tiempo de compilación de la canalización en vértices/búfer.</string>
|
||||
<string name="sample_shading_fraction">Muestreo de sombreado</string>
|
||||
<string name="sample_shading_fraction_description">Permite que el sombreador de fragmentos se ejecute por muestra en un fragmento multimuestreado, en lugar de una sola vez por fragmento. Mejora la calidad de los gráficos a coste de algo de rendimiento.</string>
|
||||
|
||||
|
|
|
|||
|
|
@ -66,6 +66,8 @@
|
|||
<string name="show_power_info_description">显示当前功耗和电池剩余容量</string>
|
||||
<string name="show_shaders_building">显示着色器编译信息</string>
|
||||
<string name="show_shaders_building_description">显示当前正在编译的着色器数量</string>
|
||||
<string name="pipeline_worker_cores">管线工作线程</string>
|
||||
<string name="pipeline_worker_cores_description">管理用于构建 Vulkan 管线的核心数量,数值越高则管线编译性能越好,但温度也会随之升高。</string>
|
||||
<string name="overlay_position">叠加层位置</string>
|
||||
<string name="overlay_position_description">选择叠加层在屏幕上显示的位置</string>
|
||||
<string name="overlay_position_top_left">左上</string>
|
||||
|
|
@ -473,14 +475,18 @@
|
|||
<string name="use_disk_shader_cache">磁盘着色器缓存</string>
|
||||
<string name="use_disk_shader_cache_description">将生成的着色器缓存于磁盘中并进行读取,以减少卡顿。</string>
|
||||
<string name="renderer_force_max_clock">强制最大时钟 (仅限 Adreno)</string>
|
||||
<string name="renderer_force_max_clock_description">强制 GPU 以最大时钟运行 (仍被温控限制)。</string>
|
||||
<string name="renderer_force_max_clock_description">强制 GPU 以最大时钟运行 (温控依然生效)。</string>
|
||||
<string name="renderer_asynchronous_gpu_emulation">GPU 异步模拟</string>
|
||||
<string name="renderer_asynchronous_gpu_emulation_description">此技巧可通过异步运行 GPU 模拟来提升性能,但在执行与时序相关的操作时,可能引入图形问题和增加崩溃概率。</string>
|
||||
<string name="renderer_async_presentation">异步呈现</string>
|
||||
<string name="renderer_async_presentation_description">此技巧通过将图形呈现移至独立的 CPU 线程来提升性能,但可能会引入图形显示问题。</string>
|
||||
<string name="renderer_reactive_flushing">启用反应性刷新</string>
|
||||
<string name="renderer_reactive_flushing_description">通过牺牲性能来提高某些游戏的渲染精度。</string>
|
||||
<string name="enable_buffer_history">启用缓冲区历史</string>
|
||||
<string name="enable_buffer_history_description">启用对先前缓冲区状态的访问。此选项可在某些游戏中提升渲染质量并保持性能的一致性。</string>
|
||||
<string name="use_optimized_vertex_buffers">优化顶点缓冲区</string>
|
||||
<string name="use_optimized_vertex_buffers_description">启用经过优化的顶点缓冲区绑定以提升性能。需要 Mesa 26.0 及以上版本的 Turnip 或 QCOM 驱动程序。若使用较旧版本的 Turnip 驱动 (25.3 及以下版本) 则会导致崩溃。</string>
|
||||
|
||||
<string name="hacks">Hacks</string>
|
||||
|
||||
<string name="fast_gpu_time">GPU 超频频率</string>
|
||||
|
|
@ -491,6 +497,8 @@
|
|||
<string name="fix_bloom_effects_description">减少《塞尔达传说:智慧的再现》(Adreno A6XX - A7XX/ Turnip)中的 bloom 模糊,并移除《Burnout》中的 bloom 效果。警告:可能会导致在其他游戏中出现图形异常。</string>
|
||||
<string name="emulate_bgr565">模拟 BGR565</string>
|
||||
<string name="emulate_bgr565_description">修复了游戏中的颜色反转以及出现的异常画面瑕疵或奇怪阴影问题</string>
|
||||
<string name="rescale_hack">启用旧版缩放处理</string>
|
||||
<string name="rescale_hack_description">启用通过使用快速缩放路径,来为游戏提供缩放配置处理的传统处理方式</string>
|
||||
<string name="renderer_asynchronous_shaders">使用异步着色器</string>
|
||||
<string name="renderer_asynchronous_shaders_description">异步编译着色器。这可能会减少卡顿,但也可能会导致图形错误。</string>
|
||||
<string name="gpu_unswizzle_settings">GPU 还原设置</string>
|
||||
|
|
@ -509,8 +517,10 @@
|
|||
<string name="extensions">扩展</string>
|
||||
|
||||
<string name="dyna_state">扩展动态状态</string>
|
||||
<string name="dyna_state_description">控制扩展动态状态 (EDS) 可使用的功能数目。较高的数值将允许根据驱动程序支持的动态状态来减少管线编译的次数。</string>
|
||||
<string name="disabled">已禁用</string>
|
||||
<string name="vertex_input_dynamic_state">顶点输入动态状态</string>
|
||||
<string name="vertex_input_dynamic_state_description">启用此功能可实现更灵活的顶点输入处理,可能减少顶点/缓冲区的管线编译时间。</string>
|
||||
<string name="sample_shading_fraction">采样着色</string>
|
||||
<string name="sample_shading_fraction_description">允许片段着色器在多采样片段中每个样本执行一次,而不是每个片段执行一次。以提高性能为代价改善图形质量。</string>
|
||||
|
||||
|
|
|
|||
|
|
@ -240,6 +240,8 @@
|
|||
<item>@string/scaling_filter_bspline</item>
|
||||
<item>@string/scaling_filter_mitchell</item>
|
||||
<item>@string/scaling_filter_spline1</item>
|
||||
<item>@string/scaling_filter_sgsr</item>
|
||||
<item>@string/scaling_filter_sgsr_edge</item>
|
||||
</string-array>
|
||||
|
||||
<integer-array name="rendererScalingFilterValues">
|
||||
|
|
@ -256,6 +258,8 @@
|
|||
<item>10</item>
|
||||
<item>11</item>
|
||||
<item>12</item>
|
||||
<item>13</item>
|
||||
<item>14</item>
|
||||
</integer-array>
|
||||
|
||||
<string-array name="rendererAntiAliasingNames">
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
<?xml version='1.0' encoding='utf-8'?><resources><color name='ic_launcher_background'>#ffd700</color></resources>
|
||||
<?xml version='1.0' encoding='utf-8'?><resources><color name='ic_launcher_background'>#1F143C</color></resources>
|
||||
|
|
|
|||
|
|
@ -468,8 +468,8 @@
|
|||
<string name="renderer_resolution">Resolution (Handheld/Docked)</string>
|
||||
<string name="renderer_vsync">VSync mode</string>
|
||||
<string name="renderer_scaling_filter">Window adapting filter</string>
|
||||
<string name="fsr_sharpness">FSR sharpness</string>
|
||||
<string name="fsr_sharpness_description">Determines how sharpened the image will look while using FSR\'s dynamic contrast</string>
|
||||
<string name="fsr_sharpness">FSR/SGSR sharpness</string>
|
||||
<string name="fsr_sharpness_description">Determines how sharpened the image will look while using FSR or SGSR filters</string>
|
||||
<string name="renderer_anti_aliasing">Anti-aliasing method</string>
|
||||
|
||||
|
||||
|
|
@ -509,6 +509,8 @@
|
|||
<string name="fast_gpu_time_description">Forces most games to run at their highest native resolution. Use 256 for maximal performance and 512 for maximal graphics fidelity.</string>
|
||||
<string name="skip_cpu_inner_invalidation">Skip CPU Inner Invalidation</string>
|
||||
<string name="skip_cpu_inner_invalidation_description">Skips certain CPU-side cache invalidations during memory updates, reducing CPU usage and improving it\'s performance. This may cause glitches or crashes on some games.</string>
|
||||
<string name="antiflicker">Anti-Flicker</string>
|
||||
<string name="antiflicker_description">Forces GPU fence callbacks to wait for submitted GPU work. Use with Fast GPU mode, to avoid flicker with lower performance impact.</string>
|
||||
<string name="fix_bloom_effects">Fix Bloom Effects</string>
|
||||
<string name="fix_bloom_effects_description">Reduces bloom blur in LA/EOW (Adreno A6XX - A7XX/ Turnip), removes bloom in Burnout. Warning: may cause graphical artifacts in other games.</string>
|
||||
<string name="emulate_bgr565">Emulate BGR565</string>
|
||||
|
|
@ -1078,6 +1080,8 @@
|
|||
<string name="scaling_filter_bspline" translatable="false">B-Spline</string>
|
||||
<string name="scaling_filter_mitchell" translatable="false">Mitchell</string>
|
||||
<string name="scaling_filter_mmpx" translatable="false">MMPX</string>
|
||||
<string name="scaling_filter_sgsr" translatable="false">Snapdragon GSR</string>
|
||||
<string name="scaling_filter_sgsr_edge" translatable="false">Snapdragon GSR EdgeDir</string>
|
||||
|
||||
<!-- Anti-Aliasing -->
|
||||
<string name="anti_aliasing_none">None</string>
|
||||
|
|
|
|||
|
|
@ -247,11 +247,11 @@ if(ANDROID)
|
|||
target_compile_definitions(audio_core PUBLIC HAVE_OBOE)
|
||||
else()
|
||||
target_sources(audio_core PRIVATE
|
||||
sink/sdl2_sink.cpp
|
||||
sink/sdl2_sink.h)
|
||||
sink/sdl3_sink.cpp
|
||||
sink/sdl3_sink.h)
|
||||
|
||||
target_link_libraries(audio_core PRIVATE SDL2::SDL2)
|
||||
target_compile_definitions(audio_core PRIVATE HAVE_SDL2)
|
||||
target_link_libraries(audio_core PRIVATE SDL3::SDL3)
|
||||
target_compile_definitions(audio_core PRIVATE HAVE_SDL3)
|
||||
endif()
|
||||
|
||||
create_target_directory_groups(audio_core)
|
||||
|
|
|
|||
|
|
@ -29,8 +29,96 @@ void AudioRenderer::Start() {
|
|||
CreateSinkStreams();
|
||||
|
||||
mailbox.Initialize(AppMailboxId::AudioRenderer);
|
||||
// Main AudioRenderer thread, responsible for processing the command lists.
|
||||
main_thread = std::jthread([this](std::stop_token stop_token) {
|
||||
Common::SetCurrentThreadName("DSP_AudioRenderer_Main");
|
||||
Common::SetCurrentThreadPriority(Common::ThreadPriority::High);
|
||||
|
||||
main_thread = std::jthread([this](std::stop_token stop_token) { Main(stop_token); });
|
||||
// TODO: Create buffer map/unmap thread + mailbox
|
||||
// TODO: Create gMix devices, initialize them here
|
||||
|
||||
if (mailbox.Receive(Direction::DSP) != Message::InitializeOK) {
|
||||
LOG_ERROR(Service_Audio, "ADSP Audio Renderer -- Failed to receive initialize message from host!");
|
||||
return;
|
||||
}
|
||||
|
||||
mailbox.Send(Direction::Host, Message::InitializeOK);
|
||||
|
||||
// 0.12 seconds (2,304,000 / 19,200,000)
|
||||
constexpr u64 max_process_time{2'304'000ULL};
|
||||
while (!stop_token.stop_requested()) {
|
||||
auto msg{mailbox.Receive(Direction::DSP)};
|
||||
switch (msg) {
|
||||
case Message::Shutdown:
|
||||
mailbox.Send(Direction::Host, Message::Shutdown);
|
||||
return;
|
||||
|
||||
case Message::Render: {
|
||||
if (system.IsShuttingDown()) {
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||
mailbox.Send(Direction::Host, Message::RenderResponse);
|
||||
continue;
|
||||
}
|
||||
std::array<bool, MaxRendererSessions> buffers_reset{};
|
||||
std::array<u64, MaxRendererSessions> render_times_taken{};
|
||||
const auto start_time{system.CoreTiming().GetGlobalTimeUs().count()};
|
||||
|
||||
for (u32 index = 0; index < MaxRendererSessions; index++) {
|
||||
auto& command_buffer{command_buffers[index]};
|
||||
auto& command_list_processor{command_list_processors[index]};
|
||||
|
||||
// Check this buffer is valid, as it may not be used.
|
||||
if (command_buffer.buffer != 0) {
|
||||
// If there are no remaining commands (from the previous list),
|
||||
// this is a new command list, initialize it.
|
||||
if (command_buffer.remaining_command_count == 0) {
|
||||
command_list_processor.Initialize(system, *command_buffer.process,
|
||||
command_buffer.buffer,
|
||||
command_buffer.size, streams[index]);
|
||||
}
|
||||
|
||||
if (command_buffer.reset_buffer && !buffers_reset[index]) {
|
||||
streams[index]->ClearQueue();
|
||||
buffers_reset[index] = true;
|
||||
}
|
||||
|
||||
u64 max_time{max_process_time};
|
||||
if (index == 1 && command_buffer.applet_resource_user_id ==
|
||||
command_buffers[0].applet_resource_user_id) {
|
||||
max_time = max_process_time - render_times_taken[0];
|
||||
if (render_times_taken[0] > max_process_time) {
|
||||
max_time = 0;
|
||||
}
|
||||
}
|
||||
|
||||
max_time = (std::min)(command_buffer.time_limit, max_time);
|
||||
command_list_processor.SetProcessTimeMax(max_time);
|
||||
|
||||
if (index == 0) {
|
||||
streams[index]->WaitFreeSpace(stop_token);
|
||||
}
|
||||
|
||||
// Process the command list
|
||||
{
|
||||
render_times_taken[index] =
|
||||
command_list_processor.Process(index) - start_time;
|
||||
}
|
||||
|
||||
const auto end_time{system.CoreTiming().GetGlobalTimeUs().count()};
|
||||
|
||||
command_buffer.remaining_command_count =
|
||||
command_list_processor.GetRemainingCommandCount();
|
||||
command_buffer.render_time_taken_us = end_time - start_time;
|
||||
}
|
||||
}
|
||||
mailbox.Send(Direction::Host, Message::RenderResponse);
|
||||
} break;
|
||||
default:
|
||||
LOG_WARNING(Service_Audio, "ADSP AudioRenderer received an invalid message, msg={:02X}!", msg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mailbox.Send(Direction::DSP, Message::InitializeOK);
|
||||
if (mailbox.Receive(Direction::Host) != Message::InitializeOK) {
|
||||
|
|
@ -129,95 +217,4 @@ void AudioRenderer::CreateSinkStreams() {
|
|||
}
|
||||
}
|
||||
|
||||
void AudioRenderer::Main(std::stop_token stop_token) {
|
||||
Common::SetCurrentThreadName("DSP_AudioRenderer_Main");
|
||||
Common::SetCurrentThreadPriority(Common::ThreadPriority::High);
|
||||
|
||||
// TODO: Create buffer map/unmap thread + mailbox
|
||||
// TODO: Create gMix devices, initialize them here
|
||||
|
||||
if (mailbox.Receive(Direction::DSP) != Message::InitializeOK) {
|
||||
LOG_ERROR(Service_Audio, "ADSP Audio Renderer -- Failed to receive initialize message from host!");
|
||||
return;
|
||||
}
|
||||
|
||||
mailbox.Send(Direction::Host, Message::InitializeOK);
|
||||
|
||||
// 0.12 seconds (2,304,000 / 19,200,000)
|
||||
constexpr u64 max_process_time{2'304'000ULL};
|
||||
|
||||
while (!stop_token.stop_requested()) {
|
||||
auto msg{mailbox.Receive(Direction::DSP)};
|
||||
switch (msg) {
|
||||
case Message::Shutdown:
|
||||
mailbox.Send(Direction::Host, Message::Shutdown);
|
||||
return;
|
||||
|
||||
case Message::Render: {
|
||||
if (system.IsShuttingDown()) {
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||
mailbox.Send(Direction::Host, Message::RenderResponse);
|
||||
continue;
|
||||
}
|
||||
std::array<bool, MaxRendererSessions> buffers_reset{};
|
||||
std::array<u64, MaxRendererSessions> render_times_taken{};
|
||||
const auto start_time{system.CoreTiming().GetGlobalTimeUs().count()};
|
||||
|
||||
for (u32 index = 0; index < MaxRendererSessions; index++) {
|
||||
auto& command_buffer{command_buffers[index]};
|
||||
auto& command_list_processor{command_list_processors[index]};
|
||||
|
||||
// Check this buffer is valid, as it may not be used.
|
||||
if (command_buffer.buffer != 0) {
|
||||
// If there are no remaining commands (from the previous list),
|
||||
// this is a new command list, initialize it.
|
||||
if (command_buffer.remaining_command_count == 0) {
|
||||
command_list_processor.Initialize(system, *command_buffer.process,
|
||||
command_buffer.buffer,
|
||||
command_buffer.size, streams[index]);
|
||||
}
|
||||
|
||||
if (command_buffer.reset_buffer && !buffers_reset[index]) {
|
||||
streams[index]->ClearQueue();
|
||||
buffers_reset[index] = true;
|
||||
}
|
||||
|
||||
u64 max_time{max_process_time};
|
||||
if (index == 1 && command_buffer.applet_resource_user_id ==
|
||||
command_buffers[0].applet_resource_user_id) {
|
||||
max_time = max_process_time - render_times_taken[0];
|
||||
if (render_times_taken[0] > max_process_time) {
|
||||
max_time = 0;
|
||||
}
|
||||
}
|
||||
|
||||
max_time = (std::min)(command_buffer.time_limit, max_time);
|
||||
command_list_processor.SetProcessTimeMax(max_time);
|
||||
|
||||
if (index == 0) {
|
||||
streams[index]->WaitFreeSpace(stop_token);
|
||||
}
|
||||
|
||||
// Process the command list
|
||||
{
|
||||
render_times_taken[index] =
|
||||
command_list_processor.Process(index) - start_time;
|
||||
}
|
||||
|
||||
const auto end_time{system.CoreTiming().GetGlobalTimeUs().count()};
|
||||
|
||||
command_buffer.remaining_command_count =
|
||||
command_list_processor.GetRemainingCommandCount();
|
||||
command_buffer.render_time_taken_us = end_time - start_time;
|
||||
}
|
||||
}
|
||||
mailbox.Send(Direction::Host, Message::RenderResponse);
|
||||
} break;
|
||||
default:
|
||||
LOG_WARNING(Service_Audio, "ADSP AudioRenderer received an invalid message, msg={:02X}!", msg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace AudioCore::ADSP::AudioRenderer
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
|
|
@ -82,11 +82,6 @@ public:
|
|||
u64 GetRenderingStartTick(s32 session_id) const noexcept;
|
||||
|
||||
private:
|
||||
/**
|
||||
* Main AudioRenderer thread, responsible for processing the command lists.
|
||||
*/
|
||||
void Main(std::stop_token stop_token);
|
||||
|
||||
/**
|
||||
* Creates the streams which will receive the processed samples.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -37,7 +37,9 @@ bool IsValidMultiStreamStreamCounts(s32 total_stream_count, s32 stereo_stream_co
|
|||
} // namespace
|
||||
|
||||
OpusDecoder::OpusDecoder(Core::System& system_) : system{system_} {
|
||||
init_thread = std::jthread([this](std::stop_token stop_token) { Init(stop_token); });
|
||||
init_thread = std::jthread([this](std::stop_token stop_token) {
|
||||
Init(stop_token);
|
||||
});
|
||||
}
|
||||
|
||||
OpusDecoder::~OpusDecoder() {
|
||||
|
|
@ -64,206 +66,203 @@ u32 OpusDecoder::Receive(Direction dir, std::stop_token stop_token) {
|
|||
return mailbox.Receive(dir, stop_token);
|
||||
}
|
||||
|
||||
void OpusDecoder::Init(std::stop_token stop_token) {
|
||||
void OpusDecoder::Init(std::stop_token rc_stop_token) {
|
||||
Common::SetCurrentThreadName("DSP_OpusDecoder_Init");
|
||||
|
||||
if (Receive(Direction::DSP, stop_token) != Message::Start) {
|
||||
LOG_ERROR(Service_Audio,
|
||||
"DSP OpusDecoder failed to receive Start message. Opus initialization failed.");
|
||||
if (Receive(Direction::DSP, rc_stop_token) != Message::Start) {
|
||||
LOG_ERROR(Service_Audio, "DSP OpusDecoder failed to receive Start message. Opus initialization failed.");
|
||||
return;
|
||||
}
|
||||
main_thread = std::jthread([this](std::stop_token st) { Main(st); });
|
||||
// Main OpusDecoder thread, responsible for processing the incoming Opus packets.
|
||||
main_thread = std::jthread([this](std::stop_token stop_token) {
|
||||
Common::SetCurrentThreadName("DSP_OpusDecoder_Main");
|
||||
while (!stop_token.stop_requested()) {
|
||||
auto msg = Receive(Direction::DSP, stop_token);
|
||||
switch (msg) {
|
||||
case Shutdown:
|
||||
Send(Direction::Host, Message::ShutdownOK);
|
||||
return;
|
||||
|
||||
case GetWorkBufferSize: {
|
||||
auto channel_count = static_cast<s32>(shared_memory->host_send_data[0]);
|
||||
|
||||
ASSERT(IsValidChannelCount(channel_count));
|
||||
|
||||
shared_memory->dsp_return_data[0] = OpusDecodeObject::GetWorkBufferSize(channel_count);
|
||||
Send(Direction::Host, Message::GetWorkBufferSizeOK);
|
||||
} break;
|
||||
|
||||
case InitializeDecodeObject: {
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
auto buffer_size = shared_memory->host_send_data[1];
|
||||
auto sample_rate = static_cast<s32>(shared_memory->host_send_data[2]);
|
||||
auto channel_count = static_cast<s32>(shared_memory->host_send_data[3]);
|
||||
|
||||
ASSERT(sample_rate >= 0);
|
||||
ASSERT(IsValidChannelCount(channel_count));
|
||||
ASSERT(buffer_size >= OpusDecodeObject::GetWorkBufferSize(channel_count));
|
||||
|
||||
auto& decoder_object = OpusDecodeObject::Initialize(buffer, buffer);
|
||||
shared_memory->dsp_return_data[0] =
|
||||
decoder_object.InitializeDecoder(sample_rate, channel_count);
|
||||
|
||||
Send(Direction::Host, Message::InitializeDecodeObjectOK);
|
||||
} break;
|
||||
|
||||
case ShutdownDecodeObject: {
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
[[maybe_unused]] auto buffer_size = shared_memory->host_send_data[1];
|
||||
|
||||
auto& decoder_object = OpusDecodeObject::Initialize(buffer, buffer);
|
||||
shared_memory->dsp_return_data[0] = decoder_object.Shutdown();
|
||||
|
||||
Send(Direction::Host, Message::ShutdownDecodeObjectOK);
|
||||
} break;
|
||||
|
||||
case DecodeInterleaved: {
|
||||
auto start_time = system.CoreTiming().GetGlobalTimeUs();
|
||||
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
auto input_data = shared_memory->host_send_data[1];
|
||||
auto input_data_size = shared_memory->host_send_data[2];
|
||||
auto output_data = shared_memory->host_send_data[3];
|
||||
auto output_data_size = shared_memory->host_send_data[4];
|
||||
auto final_range = static_cast<u32>(shared_memory->host_send_data[5]);
|
||||
auto reset_requested = shared_memory->host_send_data[6];
|
||||
|
||||
u32 decoded_samples{0};
|
||||
|
||||
auto& decoder_object = OpusDecodeObject::Initialize(buffer, buffer);
|
||||
s32 error_code{OPUS_OK};
|
||||
if (reset_requested) {
|
||||
error_code = decoder_object.ResetDecoder();
|
||||
}
|
||||
|
||||
if (error_code == OPUS_OK) {
|
||||
error_code = decoder_object.Decode(decoded_samples, output_data, output_data_size,
|
||||
input_data, input_data_size);
|
||||
}
|
||||
|
||||
if (error_code == OPUS_OK) {
|
||||
if (final_range && decoder_object.GetFinalRange() != final_range) {
|
||||
error_code = OPUS_INVALID_PACKET;
|
||||
}
|
||||
}
|
||||
|
||||
auto end_time = system.CoreTiming().GetGlobalTimeUs();
|
||||
shared_memory->dsp_return_data[0] = error_code;
|
||||
shared_memory->dsp_return_data[1] = decoded_samples;
|
||||
shared_memory->dsp_return_data[2] = (end_time - start_time).count();
|
||||
|
||||
Send(Direction::Host, Message::DecodeInterleavedOK);
|
||||
} break;
|
||||
|
||||
case MapMemory: {
|
||||
[[maybe_unused]] auto buffer = shared_memory->host_send_data[0];
|
||||
[[maybe_unused]] auto buffer_size = shared_memory->host_send_data[1];
|
||||
Send(Direction::Host, Message::MapMemoryOK);
|
||||
} break;
|
||||
|
||||
case UnmapMemory: {
|
||||
[[maybe_unused]] auto buffer = shared_memory->host_send_data[0];
|
||||
[[maybe_unused]] auto buffer_size = shared_memory->host_send_data[1];
|
||||
Send(Direction::Host, Message::UnmapMemoryOK);
|
||||
} break;
|
||||
|
||||
case GetWorkBufferSizeForMultiStream: {
|
||||
auto total_stream_count = static_cast<s32>(shared_memory->host_send_data[0]);
|
||||
auto stereo_stream_count = static_cast<s32>(shared_memory->host_send_data[1]);
|
||||
|
||||
ASSERT(IsValidMultiStreamStreamCounts(total_stream_count, stereo_stream_count));
|
||||
|
||||
shared_memory->dsp_return_data[0] = OpusMultiStreamDecodeObject::GetWorkBufferSize(
|
||||
total_stream_count, stereo_stream_count);
|
||||
Send(Direction::Host, Message::GetWorkBufferSizeForMultiStreamOK);
|
||||
} break;
|
||||
|
||||
case InitializeMultiStreamDecodeObject: {
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
auto buffer_size = shared_memory->host_send_data[1];
|
||||
auto sample_rate = static_cast<s32>(shared_memory->host_send_data[2]);
|
||||
auto channel_count = static_cast<s32>(shared_memory->host_send_data[3]);
|
||||
auto total_stream_count = static_cast<s32>(shared_memory->host_send_data[4]);
|
||||
auto stereo_stream_count = static_cast<s32>(shared_memory->host_send_data[5]);
|
||||
// Nintendo seem to have a bug here, they try to use &host_send_data[6] for the channel
|
||||
// mappings, but [6] is never set, and there is not enough room in the argument data for
|
||||
// more than 40 channels, when 255 are possible.
|
||||
// It also means the mapping values are undefined, though likely always 0,
|
||||
// and the mappings given by the game are ignored. The mappings are copied to this
|
||||
// dedicated buffer host side, so let's do as intended.
|
||||
auto mappings = shared_memory->channel_mapping.data();
|
||||
|
||||
ASSERT(IsValidMultiStreamStreamCounts(total_stream_count, stereo_stream_count));
|
||||
ASSERT(sample_rate >= 0);
|
||||
ASSERT(buffer_size >= OpusMultiStreamDecodeObject::GetWorkBufferSize(
|
||||
total_stream_count, stereo_stream_count));
|
||||
|
||||
auto& decoder_object = OpusMultiStreamDecodeObject::Initialize(buffer, buffer);
|
||||
shared_memory->dsp_return_data[0] = decoder_object.InitializeDecoder(
|
||||
sample_rate, total_stream_count, channel_count, stereo_stream_count, mappings);
|
||||
|
||||
Send(Direction::Host, Message::InitializeMultiStreamDecodeObjectOK);
|
||||
} break;
|
||||
|
||||
case ShutdownMultiStreamDecodeObject: {
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
[[maybe_unused]] auto buffer_size = shared_memory->host_send_data[1];
|
||||
|
||||
auto& decoder_object = OpusMultiStreamDecodeObject::Initialize(buffer, buffer);
|
||||
shared_memory->dsp_return_data[0] = decoder_object.Shutdown();
|
||||
|
||||
Send(Direction::Host, Message::ShutdownMultiStreamDecodeObjectOK);
|
||||
} break;
|
||||
|
||||
case DecodeInterleavedForMultiStream: {
|
||||
auto start_time = system.CoreTiming().GetGlobalTimeUs();
|
||||
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
auto input_data = shared_memory->host_send_data[1];
|
||||
auto input_data_size = shared_memory->host_send_data[2];
|
||||
auto output_data = shared_memory->host_send_data[3];
|
||||
auto output_data_size = shared_memory->host_send_data[4];
|
||||
auto final_range = static_cast<u32>(shared_memory->host_send_data[5]);
|
||||
auto reset_requested = shared_memory->host_send_data[6];
|
||||
|
||||
u32 decoded_samples{0};
|
||||
|
||||
auto& decoder_object = OpusMultiStreamDecodeObject::Initialize(buffer, buffer);
|
||||
s32 error_code{OPUS_OK};
|
||||
if (reset_requested) {
|
||||
error_code = decoder_object.ResetDecoder();
|
||||
}
|
||||
|
||||
if (error_code == OPUS_OK) {
|
||||
error_code = decoder_object.Decode(decoded_samples, output_data, output_data_size,
|
||||
input_data, input_data_size);
|
||||
}
|
||||
|
||||
if (error_code == OPUS_OK) {
|
||||
if (final_range && decoder_object.GetFinalRange() != final_range) {
|
||||
error_code = OPUS_INVALID_PACKET;
|
||||
}
|
||||
}
|
||||
|
||||
auto end_time = system.CoreTiming().GetGlobalTimeUs();
|
||||
shared_memory->dsp_return_data[0] = error_code;
|
||||
shared_memory->dsp_return_data[1] = decoded_samples;
|
||||
shared_memory->dsp_return_data[2] = (end_time - start_time).count();
|
||||
|
||||
Send(Direction::Host, Message::DecodeInterleavedForMultiStreamOK);
|
||||
} break;
|
||||
|
||||
default:
|
||||
LOG_ERROR(Service_Audio, "Invalid OpusDecoder command {}", msg);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
});
|
||||
running = true;
|
||||
Send(Direction::Host, Message::StartOK);
|
||||
}
|
||||
|
||||
void OpusDecoder::Main(std::stop_token stop_token) {
|
||||
Common::SetCurrentThreadName("DSP_OpusDecoder_Main");
|
||||
|
||||
while (!stop_token.stop_requested()) {
|
||||
auto msg = Receive(Direction::DSP, stop_token);
|
||||
switch (msg) {
|
||||
case Shutdown:
|
||||
Send(Direction::Host, Message::ShutdownOK);
|
||||
return;
|
||||
|
||||
case GetWorkBufferSize: {
|
||||
auto channel_count = static_cast<s32>(shared_memory->host_send_data[0]);
|
||||
|
||||
ASSERT(IsValidChannelCount(channel_count));
|
||||
|
||||
shared_memory->dsp_return_data[0] = OpusDecodeObject::GetWorkBufferSize(channel_count);
|
||||
Send(Direction::Host, Message::GetWorkBufferSizeOK);
|
||||
} break;
|
||||
|
||||
case InitializeDecodeObject: {
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
auto buffer_size = shared_memory->host_send_data[1];
|
||||
auto sample_rate = static_cast<s32>(shared_memory->host_send_data[2]);
|
||||
auto channel_count = static_cast<s32>(shared_memory->host_send_data[3]);
|
||||
|
||||
ASSERT(sample_rate >= 0);
|
||||
ASSERT(IsValidChannelCount(channel_count));
|
||||
ASSERT(buffer_size >= OpusDecodeObject::GetWorkBufferSize(channel_count));
|
||||
|
||||
auto& decoder_object = OpusDecodeObject::Initialize(buffer, buffer);
|
||||
shared_memory->dsp_return_data[0] =
|
||||
decoder_object.InitializeDecoder(sample_rate, channel_count);
|
||||
|
||||
Send(Direction::Host, Message::InitializeDecodeObjectOK);
|
||||
} break;
|
||||
|
||||
case ShutdownDecodeObject: {
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
[[maybe_unused]] auto buffer_size = shared_memory->host_send_data[1];
|
||||
|
||||
auto& decoder_object = OpusDecodeObject::Initialize(buffer, buffer);
|
||||
shared_memory->dsp_return_data[0] = decoder_object.Shutdown();
|
||||
|
||||
Send(Direction::Host, Message::ShutdownDecodeObjectOK);
|
||||
} break;
|
||||
|
||||
case DecodeInterleaved: {
|
||||
auto start_time = system.CoreTiming().GetGlobalTimeUs();
|
||||
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
auto input_data = shared_memory->host_send_data[1];
|
||||
auto input_data_size = shared_memory->host_send_data[2];
|
||||
auto output_data = shared_memory->host_send_data[3];
|
||||
auto output_data_size = shared_memory->host_send_data[4];
|
||||
auto final_range = static_cast<u32>(shared_memory->host_send_data[5]);
|
||||
auto reset_requested = shared_memory->host_send_data[6];
|
||||
|
||||
u32 decoded_samples{0};
|
||||
|
||||
auto& decoder_object = OpusDecodeObject::Initialize(buffer, buffer);
|
||||
s32 error_code{OPUS_OK};
|
||||
if (reset_requested) {
|
||||
error_code = decoder_object.ResetDecoder();
|
||||
}
|
||||
|
||||
if (error_code == OPUS_OK) {
|
||||
error_code = decoder_object.Decode(decoded_samples, output_data, output_data_size,
|
||||
input_data, input_data_size);
|
||||
}
|
||||
|
||||
if (error_code == OPUS_OK) {
|
||||
if (final_range && decoder_object.GetFinalRange() != final_range) {
|
||||
error_code = OPUS_INVALID_PACKET;
|
||||
}
|
||||
}
|
||||
|
||||
auto end_time = system.CoreTiming().GetGlobalTimeUs();
|
||||
shared_memory->dsp_return_data[0] = error_code;
|
||||
shared_memory->dsp_return_data[1] = decoded_samples;
|
||||
shared_memory->dsp_return_data[2] = (end_time - start_time).count();
|
||||
|
||||
Send(Direction::Host, Message::DecodeInterleavedOK);
|
||||
} break;
|
||||
|
||||
case MapMemory: {
|
||||
[[maybe_unused]] auto buffer = shared_memory->host_send_data[0];
|
||||
[[maybe_unused]] auto buffer_size = shared_memory->host_send_data[1];
|
||||
Send(Direction::Host, Message::MapMemoryOK);
|
||||
} break;
|
||||
|
||||
case UnmapMemory: {
|
||||
[[maybe_unused]] auto buffer = shared_memory->host_send_data[0];
|
||||
[[maybe_unused]] auto buffer_size = shared_memory->host_send_data[1];
|
||||
Send(Direction::Host, Message::UnmapMemoryOK);
|
||||
} break;
|
||||
|
||||
case GetWorkBufferSizeForMultiStream: {
|
||||
auto total_stream_count = static_cast<s32>(shared_memory->host_send_data[0]);
|
||||
auto stereo_stream_count = static_cast<s32>(shared_memory->host_send_data[1]);
|
||||
|
||||
ASSERT(IsValidMultiStreamStreamCounts(total_stream_count, stereo_stream_count));
|
||||
|
||||
shared_memory->dsp_return_data[0] = OpusMultiStreamDecodeObject::GetWorkBufferSize(
|
||||
total_stream_count, stereo_stream_count);
|
||||
Send(Direction::Host, Message::GetWorkBufferSizeForMultiStreamOK);
|
||||
} break;
|
||||
|
||||
case InitializeMultiStreamDecodeObject: {
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
auto buffer_size = shared_memory->host_send_data[1];
|
||||
auto sample_rate = static_cast<s32>(shared_memory->host_send_data[2]);
|
||||
auto channel_count = static_cast<s32>(shared_memory->host_send_data[3]);
|
||||
auto total_stream_count = static_cast<s32>(shared_memory->host_send_data[4]);
|
||||
auto stereo_stream_count = static_cast<s32>(shared_memory->host_send_data[5]);
|
||||
// Nintendo seem to have a bug here, they try to use &host_send_data[6] for the channel
|
||||
// mappings, but [6] is never set, and there is not enough room in the argument data for
|
||||
// more than 40 channels, when 255 are possible.
|
||||
// It also means the mapping values are undefined, though likely always 0,
|
||||
// and the mappings given by the game are ignored. The mappings are copied to this
|
||||
// dedicated buffer host side, so let's do as intended.
|
||||
auto mappings = shared_memory->channel_mapping.data();
|
||||
|
||||
ASSERT(IsValidMultiStreamStreamCounts(total_stream_count, stereo_stream_count));
|
||||
ASSERT(sample_rate >= 0);
|
||||
ASSERT(buffer_size >= OpusMultiStreamDecodeObject::GetWorkBufferSize(
|
||||
total_stream_count, stereo_stream_count));
|
||||
|
||||
auto& decoder_object = OpusMultiStreamDecodeObject::Initialize(buffer, buffer);
|
||||
shared_memory->dsp_return_data[0] = decoder_object.InitializeDecoder(
|
||||
sample_rate, total_stream_count, channel_count, stereo_stream_count, mappings);
|
||||
|
||||
Send(Direction::Host, Message::InitializeMultiStreamDecodeObjectOK);
|
||||
} break;
|
||||
|
||||
case ShutdownMultiStreamDecodeObject: {
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
[[maybe_unused]] auto buffer_size = shared_memory->host_send_data[1];
|
||||
|
||||
auto& decoder_object = OpusMultiStreamDecodeObject::Initialize(buffer, buffer);
|
||||
shared_memory->dsp_return_data[0] = decoder_object.Shutdown();
|
||||
|
||||
Send(Direction::Host, Message::ShutdownMultiStreamDecodeObjectOK);
|
||||
} break;
|
||||
|
||||
case DecodeInterleavedForMultiStream: {
|
||||
auto start_time = system.CoreTiming().GetGlobalTimeUs();
|
||||
|
||||
auto buffer = shared_memory->host_send_data[0];
|
||||
auto input_data = shared_memory->host_send_data[1];
|
||||
auto input_data_size = shared_memory->host_send_data[2];
|
||||
auto output_data = shared_memory->host_send_data[3];
|
||||
auto output_data_size = shared_memory->host_send_data[4];
|
||||
auto final_range = static_cast<u32>(shared_memory->host_send_data[5]);
|
||||
auto reset_requested = shared_memory->host_send_data[6];
|
||||
|
||||
u32 decoded_samples{0};
|
||||
|
||||
auto& decoder_object = OpusMultiStreamDecodeObject::Initialize(buffer, buffer);
|
||||
s32 error_code{OPUS_OK};
|
||||
if (reset_requested) {
|
||||
error_code = decoder_object.ResetDecoder();
|
||||
}
|
||||
|
||||
if (error_code == OPUS_OK) {
|
||||
error_code = decoder_object.Decode(decoded_samples, output_data, output_data_size,
|
||||
input_data, input_data_size);
|
||||
}
|
||||
|
||||
if (error_code == OPUS_OK) {
|
||||
if (final_range && decoder_object.GetFinalRange() != final_range) {
|
||||
error_code = OPUS_INVALID_PACKET;
|
||||
}
|
||||
}
|
||||
|
||||
auto end_time = system.CoreTiming().GetGlobalTimeUs();
|
||||
shared_memory->dsp_return_data[0] = error_code;
|
||||
shared_memory->dsp_return_data[1] = decoded_samples;
|
||||
shared_memory->dsp_return_data[2] = (end_time - start_time).count();
|
||||
|
||||
Send(Direction::Host, Message::DecodeInterleavedForMultiStreamOK);
|
||||
} break;
|
||||
|
||||
default:
|
||||
LOG_ERROR(Service_Audio, "Invalid OpusDecoder command {}", msg);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace AudioCore::ADSP::OpusDecoder
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -69,10 +72,6 @@ private:
|
|||
* Initializing thread, launched at audio_core boot to avoid blocking the main emu boot thread.
|
||||
*/
|
||||
void Init(std::stop_token stop_token);
|
||||
/**
|
||||
* Main OpusDecoder thread, responsible for processing the incoming Opus packets.
|
||||
*/
|
||||
void Main(std::stop_token stop_token);
|
||||
|
||||
/// Core system
|
||||
Core::System& system;
|
||||
|
|
|
|||
|
|
@ -7,16 +7,40 @@
|
|||
#include <span>
|
||||
#include <vector>
|
||||
|
||||
#include <SDL.h>
|
||||
#include <SDL3/SDL.h>
|
||||
|
||||
#include "audio_core/common/common.h"
|
||||
#include "audio_core/sink/sdl2_sink.h"
|
||||
#include "audio_core/sink/sdl3_sink.h"
|
||||
#include "audio_core/sink/sink_stream.h"
|
||||
#include "common/logging.h"
|
||||
#include "common/scope_exit.h"
|
||||
#include "core/core.h"
|
||||
|
||||
namespace AudioCore::Sink {
|
||||
|
||||
namespace {
|
||||
SDL_AudioDeviceID FindAudioDeviceByName(const std::string& device_name, bool capture) {
|
||||
int device_count = 0;
|
||||
SDL_AudioDeviceID* devices = capture ? SDL_GetAudioRecordingDevices(&device_count)
|
||||
: SDL_GetAudioPlaybackDevices(&device_count);
|
||||
if (devices == nullptr) {
|
||||
return capture ? SDL_AUDIO_DEVICE_DEFAULT_RECORDING : SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK;
|
||||
}
|
||||
|
||||
SDL_AudioDeviceID selected = capture ? SDL_AUDIO_DEVICE_DEFAULT_RECORDING
|
||||
: SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK;
|
||||
for (int i = 0; i < device_count; ++i) {
|
||||
const char* current_name = SDL_GetAudioDeviceName(devices[i]);
|
||||
if (current_name != nullptr && device_name == current_name) {
|
||||
selected = devices[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
SDL_free(devices);
|
||||
return selected;
|
||||
}
|
||||
} // Anonymous namespace
|
||||
|
||||
/**
|
||||
* SDL sink stream, responsible for sinking samples to hardware.
|
||||
*/
|
||||
|
|
@ -39,13 +63,10 @@ public:
|
|||
system_channels = system_channels_;
|
||||
device_channels = device_channels_;
|
||||
|
||||
SDL_AudioSpec spec;
|
||||
SDL_AudioSpec spec{};
|
||||
spec.freq = TargetSampleRate;
|
||||
spec.channels = static_cast<u8>(device_channels);
|
||||
spec.format = AUDIO_S16SYS;
|
||||
spec.samples = TargetSampleCount * 2;
|
||||
spec.callback = &SDLSinkStream::DataCallback;
|
||||
spec.userdata = this;
|
||||
spec.format = SDL_AUDIO_S16;
|
||||
|
||||
std::string device_name{output_device};
|
||||
bool capture{false};
|
||||
|
|
@ -54,22 +75,28 @@ public:
|
|||
capture = true;
|
||||
}
|
||||
|
||||
SDL_AudioSpec obtained;
|
||||
if (device_name.empty()) {
|
||||
device = SDL_OpenAudioDevice(nullptr, capture, &spec, &obtained, false);
|
||||
} else {
|
||||
device = SDL_OpenAudioDevice(device_name.c_str(), capture, &spec, &obtained, false);
|
||||
}
|
||||
const SDL_AudioDeviceID audio_device =
|
||||
device_name.empty() ? (capture ? SDL_AUDIO_DEVICE_DEFAULT_RECORDING
|
||||
: SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK)
|
||||
: FindAudioDeviceByName(device_name, capture);
|
||||
|
||||
if (device == 0) {
|
||||
stream = SDL_OpenAudioDeviceStream(audio_device, &spec, &SDLSinkStream::DataCallback,
|
||||
this);
|
||||
|
||||
if (stream == nullptr) {
|
||||
LOG_CRITICAL(Audio_Sink, "Error opening SDL audio device: {}", SDL_GetError());
|
||||
return;
|
||||
}
|
||||
|
||||
SDL_AudioSpec stream_in{};
|
||||
SDL_AudioSpec stream_out{};
|
||||
static_cast<void>(SDL_GetAudioStreamFormat(stream, &stream_in, &stream_out));
|
||||
|
||||
LOG_INFO(Service_Audio,
|
||||
"Opening SDL stream {} with: rate {} channels {} (system channels {}) "
|
||||
" samples {}",
|
||||
device, obtained.freq, obtained.channels, system_channels, obtained.samples);
|
||||
" format {}",
|
||||
static_cast<const void*>(stream), stream_out.freq, stream_out.channels,
|
||||
system_channels, static_cast<int>(stream_out.format));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -84,13 +111,14 @@ public:
|
|||
* Finalize the sink stream.
|
||||
*/
|
||||
void Finalize() override {
|
||||
if (device == 0) {
|
||||
if (stream == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
Stop();
|
||||
SDL_ClearQueuedAudio(device);
|
||||
SDL_CloseAudioDevice(device);
|
||||
SDL_ClearAudioStream(stream);
|
||||
SDL_DestroyAudioStream(stream);
|
||||
stream = nullptr;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -100,23 +128,23 @@ public:
|
|||
* Default false.
|
||||
*/
|
||||
void Start(bool resume = false) override {
|
||||
if (device == 0 || !paused) {
|
||||
if (stream == nullptr || !paused) {
|
||||
return;
|
||||
}
|
||||
|
||||
paused = false;
|
||||
SDL_PauseAudioDevice(device, 0);
|
||||
static_cast<void>(SDL_ResumeAudioStreamDevice(stream));
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop the sink stream.
|
||||
*/
|
||||
void Stop() override {
|
||||
if (device == 0 || paused) {
|
||||
if (stream == nullptr || paused) {
|
||||
return;
|
||||
}
|
||||
SignalPause();
|
||||
SDL_PauseAudioDevice(device, 1);
|
||||
static_cast<void>(SDL_PauseAudioStreamDevice(stream));
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
@ -128,7 +156,8 @@ private:
|
|||
* @param stream - Buffer of samples to be filled or read.
|
||||
* @param len - Length of the stream in bytes.
|
||||
*/
|
||||
static void DataCallback(void* userdata, Uint8* stream, int len) {
|
||||
static void DataCallback(void* userdata, SDL_AudioStream* stream, int additional_amount,
|
||||
int total_amount) {
|
||||
auto* impl = static_cast<SDLSinkStream*>(userdata);
|
||||
|
||||
if (!impl) {
|
||||
|
|
@ -137,25 +166,46 @@ private:
|
|||
|
||||
const std::size_t num_channels = impl->GetDeviceChannels();
|
||||
const std::size_t frame_size = num_channels;
|
||||
const std::size_t num_frames{len / num_channels / sizeof(s16)};
|
||||
|
||||
if (impl->type == StreamType::In) {
|
||||
std::span<const s16> input_buffer{reinterpret_cast<const s16*>(stream),
|
||||
num_frames * frame_size};
|
||||
const int bytes_available = SDL_GetAudioStreamAvailable(stream);
|
||||
if (bytes_available <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<s16> input(bytes_available / static_cast<int>(sizeof(s16)));
|
||||
const int bytes_read = SDL_GetAudioStreamData(stream, input.data(), bytes_available);
|
||||
if (bytes_read <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const std::size_t num_frames =
|
||||
static_cast<std::size_t>(bytes_read) / sizeof(s16) / frame_size;
|
||||
std::span<const s16> input_buffer{input.data(),
|
||||
static_cast<std::size_t>(bytes_read) / sizeof(s16)};
|
||||
impl->ProcessAudioIn(input_buffer, num_frames);
|
||||
} else {
|
||||
std::span<s16> output_buffer{reinterpret_cast<s16*>(stream), num_frames * frame_size};
|
||||
if (additional_amount <= 0 && total_amount <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const int bytes_requested = additional_amount > 0 ? additional_amount : total_amount;
|
||||
std::vector<s16> output(bytes_requested / static_cast<int>(sizeof(s16)));
|
||||
const std::size_t num_frames =
|
||||
static_cast<std::size_t>(bytes_requested) / sizeof(s16) / frame_size;
|
||||
std::span<s16> output_buffer{output.data(), output.size()};
|
||||
impl->ProcessAudioOutAndRender(output_buffer, num_frames);
|
||||
static_cast<void>(SDL_PutAudioStreamData(stream, output.data(), bytes_requested));
|
||||
}
|
||||
}
|
||||
|
||||
/// SDL device id of the opened input/output device
|
||||
SDL_AudioDeviceID device{};
|
||||
/// SDL stream attached to an opened input/output device
|
||||
SDL_AudioStream* stream{};
|
||||
};
|
||||
|
||||
SDLSink::SDLSink(std::string_view target_device_name) {
|
||||
if (!SDL_WasInit(SDL_INIT_AUDIO)) {
|
||||
if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0) {
|
||||
if (!SDL_InitSubSystem(SDL_INIT_AUDIO)) {
|
||||
LOG_CRITICAL(Audio_Sink, "SDL_InitSubSystem audio failed: {}", SDL_GetError());
|
||||
return;
|
||||
}
|
||||
|
|
@ -218,18 +268,26 @@ std::vector<std::string> ListSDLSinkDevices(bool capture) {
|
|||
std::vector<std::string> device_list;
|
||||
|
||||
if (!SDL_WasInit(SDL_INIT_AUDIO)) {
|
||||
if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0) {
|
||||
if (!SDL_InitSubSystem(SDL_INIT_AUDIO)) {
|
||||
LOG_CRITICAL(Audio_Sink, "SDL_InitSubSystem audio failed: {}", SDL_GetError());
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
const int device_count = SDL_GetNumAudioDevices(capture);
|
||||
int device_count = 0;
|
||||
SDL_AudioDeviceID* devices =
|
||||
capture ? SDL_GetAudioRecordingDevices(&device_count)
|
||||
: SDL_GetAudioPlaybackDevices(&device_count);
|
||||
if (devices == nullptr) {
|
||||
return device_list;
|
||||
}
|
||||
|
||||
for (int i = 0; i < device_count; ++i) {
|
||||
if (const char* name = SDL_GetAudioDeviceName(i, capture)) {
|
||||
if (const char* name = SDL_GetAudioDeviceName(devices[i])) {
|
||||
device_list.emplace_back(name);
|
||||
}
|
||||
}
|
||||
SDL_free(devices);
|
||||
|
||||
return device_list;
|
||||
}
|
||||
|
|
@ -242,7 +300,7 @@ u32 GetSDLLatency() {
|
|||
// REVERTED back to 3833 - Below function IsSDLSuitable() removed, reverting to GetSDLLatency() above. - DIABLO 3 FIX
|
||||
/*
|
||||
bool IsSDLSuitable() {
|
||||
#if !defined(HAVE_SDL2)
|
||||
#if !defined(HAVE_SDL3)
|
||||
return false;
|
||||
#else
|
||||
// Check SDL can init
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
|
|
@ -16,8 +16,8 @@
|
|||
#ifdef HAVE_CUBEB
|
||||
#include "audio_core/sink/cubeb_sink.h"
|
||||
#endif
|
||||
#ifdef HAVE_SDL2
|
||||
#include "audio_core/sink/sdl2_sink.h"
|
||||
#ifdef HAVE_SDL3
|
||||
#include "audio_core/sink/sdl3_sink.h"
|
||||
#endif
|
||||
#include "audio_core/sink/null_sink.h"
|
||||
#include "common/logging.h"
|
||||
|
|
@ -71,9 +71,9 @@ constexpr SinkDetails sink_details[] = {
|
|||
&GetCubebLatency,
|
||||
},
|
||||
#endif
|
||||
#ifdef HAVE_SDL2
|
||||
#ifdef HAVE_SDL3
|
||||
SinkDetails{
|
||||
Settings::AudioEngine::Sdl2,
|
||||
Settings::AudioEngine::Sdl3,
|
||||
[](std::string_view device_id) -> std::unique_ptr<Sink> {
|
||||
return std::make_unique<SDLSink>(device_id);
|
||||
},
|
||||
|
|
@ -115,10 +115,10 @@ const SinkDetails& GetOutputSinkDetails(Settings::AudioEngine sink_id) {
|
|||
// BEGIN REINTRODUCED FROM 3833 - REPLACED CODE BLOCK ABOVE - DIABLO 3 FIX
|
||||
// Auto-select a backend. Prefer CubeB, but it may report a large minimum latency which
|
||||
// causes audio issues, in that case go with SDL.
|
||||
#if defined(HAVE_CUBEB) && defined(HAVE_SDL2)
|
||||
#if defined(HAVE_CUBEB) && defined(HAVE_SDL3)
|
||||
iter = find_backend(Settings::AudioEngine::Cubeb);
|
||||
if (iter->latency() > TargetSampleCount * 3) {
|
||||
iter = find_backend(Settings::AudioEngine::Sdl2);
|
||||
iter = find_backend(Settings::AudioEngine::Sdl3);
|
||||
}
|
||||
#else
|
||||
iter = std::begin(sink_details);
|
||||
|
|
|
|||
|
|
@ -184,19 +184,12 @@ if(ARCHITECTURE_x86_64)
|
|||
x64/cpu_detect.h
|
||||
x64/cpu_wait.cpp
|
||||
x64/cpu_wait.h
|
||||
x64/native_clock.cpp
|
||||
x64/native_clock.h
|
||||
x64/rdtsc.cpp
|
||||
x64/rdtsc.h
|
||||
x64/xbyak_abi.h
|
||||
x64/xbyak_util.h)
|
||||
x64/xbyak.h)
|
||||
target_link_libraries(common PRIVATE xbyak::xbyak)
|
||||
endif()
|
||||
|
||||
if(HAS_NCE)
|
||||
target_sources(common PRIVATE arm64/native_clock.cpp arm64/native_clock.h)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
target_compile_definitions(
|
||||
common
|
||||
|
|
|
|||
|
|
@ -1,87 +0,0 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#ifdef ANDROID
|
||||
#include <sys/system_properties.h>
|
||||
#endif
|
||||
#include "common/arm64/native_clock.h"
|
||||
|
||||
namespace Common::Arm64 {
|
||||
|
||||
namespace {
|
||||
|
||||
NativeClock::FactorType GetFixedPointFactor(u64 num, u64 den) {
|
||||
return (static_cast<NativeClock::FactorType>(num) << 64) / den;
|
||||
}
|
||||
|
||||
u64 MultiplyHigh(u64 m, NativeClock::FactorType factor) {
|
||||
return static_cast<u64>((m * factor) >> 64);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
NativeClock::NativeClock() {
|
||||
const u64 host_cntfrq = GetHostCNTFRQ();
|
||||
ns_cntfrq_factor = GetFixedPointFactor(NsRatio::den, host_cntfrq);
|
||||
us_cntfrq_factor = GetFixedPointFactor(UsRatio::den, host_cntfrq);
|
||||
ms_cntfrq_factor = GetFixedPointFactor(MsRatio::den, host_cntfrq);
|
||||
guest_cntfrq_factor = GetFixedPointFactor(CNTFRQ, host_cntfrq);
|
||||
gputick_cntfrq_factor = GetFixedPointFactor(GPUTickFreq, host_cntfrq);
|
||||
}
|
||||
|
||||
std::chrono::nanoseconds NativeClock::GetTimeNS() const {
|
||||
return std::chrono::nanoseconds{MultiplyHigh(GetUptime(), ns_cntfrq_factor)};
|
||||
}
|
||||
|
||||
std::chrono::microseconds NativeClock::GetTimeUS() const {
|
||||
return std::chrono::microseconds{MultiplyHigh(GetUptime(), us_cntfrq_factor)};
|
||||
}
|
||||
|
||||
std::chrono::milliseconds NativeClock::GetTimeMS() const {
|
||||
return std::chrono::milliseconds{MultiplyHigh(GetUptime(), ms_cntfrq_factor)};
|
||||
}
|
||||
|
||||
s64 NativeClock::GetCNTPCT() const {
|
||||
return MultiplyHigh(GetUptime(), guest_cntfrq_factor);
|
||||
}
|
||||
|
||||
s64 NativeClock::GetGPUTick() const {
|
||||
return MultiplyHigh(GetUptime(), gputick_cntfrq_factor);
|
||||
}
|
||||
|
||||
s64 NativeClock::GetUptime() const {
|
||||
s64 cntvct_el0 = 0;
|
||||
asm volatile("dsb ish\n\t"
|
||||
"mrs %[cntvct_el0], cntvct_el0\n\t"
|
||||
"dsb ish\n\t"
|
||||
: [cntvct_el0] "=r"(cntvct_el0));
|
||||
return cntvct_el0;
|
||||
}
|
||||
|
||||
bool NativeClock::IsNative() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
s64 NativeClock::GetHostCNTFRQ() {
|
||||
u64 cntfrq_el0 = 0;
|
||||
std::string_view board{""};
|
||||
#ifdef ANDROID
|
||||
char buffer[PROP_VALUE_MAX];
|
||||
int len{__system_property_get("ro.product.board", buffer)};
|
||||
board = std::string_view(buffer, static_cast<size_t>(len));
|
||||
#endif
|
||||
if (board == "s5e9925") { // Exynos 2200
|
||||
cntfrq_el0 = 25600000;
|
||||
} else if (board == "exynos2100") { // Exynos 2100
|
||||
cntfrq_el0 = 26000000;
|
||||
} else if (board == "exynos9810") { // Exynos 9810
|
||||
cntfrq_el0 = 26000000;
|
||||
} else if (board == "s5e8825") { // Exynos 1280
|
||||
cntfrq_el0 = 26000000;
|
||||
} else {
|
||||
asm("mrs %[cntfrq_el0], cntfrq_el0" : [cntfrq_el0] "=r"(cntfrq_el0));
|
||||
}
|
||||
return cntfrq_el0;
|
||||
}
|
||||
|
||||
} // namespace Common::Arm64
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common/wall_clock.h"
|
||||
|
||||
namespace Common::Arm64 {
|
||||
|
||||
class NativeClock final : public WallClock {
|
||||
public:
|
||||
explicit NativeClock();
|
||||
|
||||
std::chrono::nanoseconds GetTimeNS() const override;
|
||||
|
||||
std::chrono::microseconds GetTimeUS() const override;
|
||||
|
||||
std::chrono::milliseconds GetTimeMS() const override;
|
||||
|
||||
s64 GetCNTPCT() const override;
|
||||
|
||||
s64 GetGPUTick() const override;
|
||||
|
||||
s64 GetUptime() const override;
|
||||
|
||||
bool IsNative() const override;
|
||||
|
||||
static s64 GetHostCNTFRQ();
|
||||
|
||||
public:
|
||||
using FactorType = unsigned __int128;
|
||||
|
||||
FactorType GetGuestCNTFRQFactor() const {
|
||||
return guest_cntfrq_factor;
|
||||
}
|
||||
|
||||
private:
|
||||
FactorType ns_cntfrq_factor;
|
||||
FactorType us_cntfrq_factor;
|
||||
FactorType ms_cntfrq_factor;
|
||||
FactorType guest_cntfrq_factor;
|
||||
FactorType gputick_cntfrq_factor;
|
||||
};
|
||||
|
||||
} // namespace Common::Arm64
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -60,7 +63,7 @@ public:
|
|||
template <typename Func>
|
||||
void ForEachItemBelow(TickType tick, Func&& func) {
|
||||
static constexpr bool RETURNS_BOOL =
|
||||
std::is_same_v<std::invoke_result<Func, ObjectType>, bool>;
|
||||
std::is_same_v<std::invoke_result_t<Func, ObjectType>, bool>;
|
||||
Item* iterator = first_item;
|
||||
while (iterator) {
|
||||
if (static_cast<s64>(tick) - static_cast<s64>(iterator->tick) < 0) {
|
||||
|
|
|
|||
|
|
@ -435,4 +435,16 @@ void ToggleSlowMode() {
|
|||
SetSpeedMode(SpeedMode::Standard);
|
||||
}
|
||||
|
||||
bool IsOpenGL() {
|
||||
const auto backend = Settings::values.renderer_backend.GetValue();
|
||||
switch (backend) {
|
||||
case RendererBackend::OpenGL_GLSL:
|
||||
case RendererBackend::OpenGL_GLASM:
|
||||
case RendererBackend::OpenGL_SPIRV:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Settings
|
||||
|
|
|
|||
|
|
@ -545,6 +545,13 @@ struct Values {
|
|||
Specialization::Default,
|
||||
true,
|
||||
true};
|
||||
SwitchableSetting<bool> antiflicker{linkage,
|
||||
false,
|
||||
"antiflicker",
|
||||
Category::RendererHacks,
|
||||
Specialization::Default,
|
||||
true,
|
||||
true};
|
||||
SwitchableSetting<bool> async_presentation{linkage,
|
||||
#ifdef ANDROID
|
||||
false,
|
||||
|
|
@ -863,6 +870,8 @@ bool IsFastmemEnabled();
|
|||
void SetNceEnabled(bool is_64bit);
|
||||
bool IsNceEnabled();
|
||||
|
||||
bool IsOpenGL();
|
||||
|
||||
bool IsDockedMode();
|
||||
|
||||
float Volume();
|
||||
|
|
|
|||
|
|
@ -92,11 +92,13 @@ struct EnumMetadata {
|
|||
// AudioEngine must be specified discretely due to having existing but slightly different
|
||||
// canonicalizations
|
||||
// TODO (lat9nq): Remove explicit definition of AudioEngine/sink_id
|
||||
enum class AudioEngine : u32 { Auto, Cubeb, Sdl2, Null, Oboe, };
|
||||
enum class AudioEngine : u32 { Auto, Cubeb, Sdl3, Null, Oboe, };
|
||||
template<>
|
||||
inline std::vector<std::pair<std::string_view, AudioEngine>> EnumMetadata<AudioEngine>::Canonicalizations() {
|
||||
return {
|
||||
{"auto", AudioEngine::Auto}, {"cubeb", AudioEngine::Cubeb}, {"sdl2", AudioEngine::Sdl2},
|
||||
{"auto", AudioEngine::Auto},
|
||||
{"cubeb", AudioEngine::Cubeb},
|
||||
{"sdl3", AudioEngine::Sdl3},
|
||||
{"null", AudioEngine::Null}, {"oboe", AudioEngine::Oboe},
|
||||
};
|
||||
}
|
||||
|
|
@ -143,7 +145,7 @@ ENUM(ConfirmStop, Ask_Always, Ask_Based_On_Game, Ask_Never);
|
|||
ENUM(FullscreenMode, Borderless, Exclusive);
|
||||
ENUM(NvdecEmulation, Off, Cpu, Gpu);
|
||||
ENUM(ResolutionSetup, Res1_4X, Res1_2X, Res3_4X, Res1X, Res5_4X, Res3_2X, Res2X, Res3X, Res4X, Res5X, Res6X, Res7X, Res8X);
|
||||
ENUM(ScalingFilter, NearestNeighbor, Bilinear, Bicubic, Gaussian, Lanczos, ScaleForce, Fsr, Area, ZeroTangent, BSpline, Mitchell, Spline1, Mmpx, MaxEnum);
|
||||
ENUM(ScalingFilter, NearestNeighbor, Bilinear, Bicubic, Gaussian, Lanczos, ScaleForce, Fsr, Area, ZeroTangent, BSpline, Mitchell, Spline1, Mmpx, Sgsr, SgsrEdge, MaxEnum);
|
||||
ENUM(AntiAliasing, None, Fxaa, Smaa, MaxEnum);
|
||||
ENUM(AspectRatio, R16_9, R4_3, R21_9, R16_10, Stretch);
|
||||
ENUM(ConsoleMode, Handheld, Docked);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -28,9 +31,118 @@ enum class Type {
|
|||
/// Protocol values for sockets
|
||||
enum class Protocol : u8 {
|
||||
Unspecified, ///< Represents 0, usable in various places
|
||||
IP,
|
||||
ICMP,
|
||||
TCP,
|
||||
UDP,
|
||||
IPV6,
|
||||
RAW,
|
||||
IGMP,
|
||||
GGP,
|
||||
IPV4,
|
||||
ST,
|
||||
EGP,
|
||||
PIGP,
|
||||
RCCMON,
|
||||
NVPII,
|
||||
PUP,
|
||||
ARGUS,
|
||||
EMCON,
|
||||
XNET,
|
||||
CHAOS,
|
||||
MUX,
|
||||
MEAS,
|
||||
HMP,
|
||||
PRM,
|
||||
IDP,
|
||||
TRUNK1,
|
||||
TRUNK2,
|
||||
LEAF1,
|
||||
LEAF2,
|
||||
RDP,
|
||||
IRTP,
|
||||
TP,
|
||||
BLT,
|
||||
NSP,
|
||||
INP,
|
||||
DCCP,
|
||||
//TODO: 3PC,
|
||||
IDPR,
|
||||
XTP,
|
||||
DDP,
|
||||
CMTP,
|
||||
TPXX,
|
||||
IL,
|
||||
SDRP,
|
||||
ROUTING,
|
||||
FRAGMENT,
|
||||
IDRP,
|
||||
RSVP,
|
||||
GRE,
|
||||
MHRP,
|
||||
BHA,
|
||||
ESP,
|
||||
AH,
|
||||
INLSP,
|
||||
SWIPE,
|
||||
NHRP,
|
||||
MOBILE,
|
||||
TLSP,
|
||||
SKIP,
|
||||
ICMPV6,
|
||||
NONE,
|
||||
DSTOPTS,
|
||||
AHIP,
|
||||
CFTP,
|
||||
HELLO,
|
||||
SATEXPAK,
|
||||
KRYPTOLAN,
|
||||
RVD,
|
||||
IPPC,
|
||||
ADFS,
|
||||
SATMON,
|
||||
VISA,
|
||||
IPCV,
|
||||
CPNX,
|
||||
CPHB,
|
||||
WSN,
|
||||
PVP,
|
||||
BRSATMON,
|
||||
ND,
|
||||
WBMON,
|
||||
WBEXPAK,
|
||||
EON,
|
||||
VMTP,
|
||||
SVMTP,
|
||||
VINES,
|
||||
TTP,
|
||||
IGP,
|
||||
DGP,
|
||||
TCF,
|
||||
IGRP,
|
||||
OSPFIGP,
|
||||
SRPC,
|
||||
LARP,
|
||||
MTP,
|
||||
AX25,
|
||||
IPEIP,
|
||||
MICP,
|
||||
SCCSP,
|
||||
ETHERIP,
|
||||
ENCAP,
|
||||
APES,
|
||||
GMTP,
|
||||
IPCOMP,
|
||||
SCTP,
|
||||
MH,
|
||||
UDPLITE,
|
||||
HIP,
|
||||
SHIM6,
|
||||
PIM,
|
||||
CARP,
|
||||
PGM,
|
||||
MPLS,
|
||||
PFSYNC
|
||||
};
|
||||
|
||||
/// Shutdown mode
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@ public:
|
|||
VirtualBuffer& operator=(const VirtualBuffer&) = delete;
|
||||
|
||||
VirtualBuffer(VirtualBuffer&& other) noexcept
|
||||
: alloc_size{std::exchange(other.alloc_size, 0)}, base_ptr{std::exchange(other.base_ptr), nullptr}
|
||||
: alloc_size{std::exchange(other.alloc_size, 0)}
|
||||
, base_ptr{std::exchange(other.base_ptr, nullptr)}
|
||||
{}
|
||||
|
||||
VirtualBuffer& operator=(VirtualBuffer&& other) noexcept {
|
||||
|
|
|
|||
|
|
@ -1,77 +1,196 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "common/steady_clock.h"
|
||||
#include "common/uint128.h"
|
||||
#include "common/wall_clock.h"
|
||||
|
||||
#ifdef __ANDROID__
|
||||
#include <sys/system_properties.h>
|
||||
#endif
|
||||
#ifdef ARCHITECTURE_x86_64
|
||||
#include "common/x64/cpu_detect.h"
|
||||
#include "common/x64/native_clock.h"
|
||||
#include "common/x64/rdtsc.h"
|
||||
#endif
|
||||
#ifdef HAS_NCE
|
||||
#include "common/arm64/native_clock.h"
|
||||
#endif
|
||||
|
||||
namespace Common {
|
||||
|
||||
class StandardWallClock final : public WallClock {
|
||||
public:
|
||||
explicit StandardWallClock() {}
|
||||
|
||||
std::chrono::nanoseconds GetTimeNS() const override {
|
||||
return std::chrono::duration_cast<std::chrono::nanoseconds>(
|
||||
std::chrono::system_clock::now().time_since_epoch());
|
||||
}
|
||||
|
||||
std::chrono::microseconds GetTimeUS() const override {
|
||||
return std::chrono::duration_cast<std::chrono::microseconds>(
|
||||
std::chrono::system_clock::now().time_since_epoch());
|
||||
}
|
||||
|
||||
std::chrono::milliseconds GetTimeMS() const override {
|
||||
return std::chrono::duration_cast<std::chrono::milliseconds>(
|
||||
std::chrono::system_clock::now().time_since_epoch());
|
||||
}
|
||||
|
||||
s64 GetCNTPCT() const override {
|
||||
return GetUptime() * NsToCNTPCTRatio::num / NsToCNTPCTRatio::den;
|
||||
}
|
||||
|
||||
s64 GetGPUTick() const override {
|
||||
return GetUptime() * NsToGPUTickRatio::num / NsToGPUTickRatio::den;
|
||||
}
|
||||
|
||||
s64 GetUptime() const override {
|
||||
return std::chrono::duration_cast<std::chrono::nanoseconds>(
|
||||
std::chrono::steady_clock::now().time_since_epoch())
|
||||
.count();
|
||||
}
|
||||
|
||||
bool IsNative() const override {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
std::unique_ptr<WallClock> CreateOptimalClock() {
|
||||
#if defined(ARCHITECTURE_x86_64)
|
||||
const auto& caps = GetCPUCaps();
|
||||
WallClock::WallClock(bool invariant_, u64 rdtsc_frequency_) noexcept
|
||||
: invariant{invariant_}
|
||||
, rdtsc_frequency{rdtsc_frequency_}
|
||||
, ns_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(NsRatio::den, rdtsc_frequency_)}
|
||||
, us_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(UsRatio::den, rdtsc_frequency_)}
|
||||
, ms_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(MsRatio::den, rdtsc_frequency_)}
|
||||
, cntpct_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(CNTFRQ, rdtsc_frequency_)}
|
||||
, gputick_rdtsc_factor{invariant_ ? 0 : GetFixedPoint64Factor(GPUTickFreq, rdtsc_frequency_)}
|
||||
{}
|
||||
|
||||
if (caps.invariant_tsc && caps.tsc_frequency >= std::nano::den) {
|
||||
return std::make_unique<X64::NativeClock>(caps.tsc_frequency);
|
||||
} else {
|
||||
// Fallback to StandardWallClock if the hardware TSC
|
||||
// - Is not invariant
|
||||
// - Is not more precise than 1 GHz (1ns resolution)
|
||||
return std::make_unique<StandardWallClock>();
|
||||
}
|
||||
std::chrono::nanoseconds WallClock::GetTimeNS() const {
|
||||
if (invariant)
|
||||
return std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::system_clock::now().time_since_epoch());
|
||||
return std::chrono::nanoseconds{MultiplyHigh(GetUptime(), ns_rdtsc_factor)};
|
||||
}
|
||||
|
||||
std::chrono::microseconds WallClock::GetTimeUS() const {
|
||||
if (invariant)
|
||||
return std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch());
|
||||
return std::chrono::microseconds{MultiplyHigh(GetUptime(), us_rdtsc_factor)};
|
||||
}
|
||||
|
||||
std::chrono::milliseconds WallClock::GetTimeMS() const {
|
||||
if (invariant)
|
||||
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch());
|
||||
return std::chrono::milliseconds{MultiplyHigh(GetUptime(), ms_rdtsc_factor)};
|
||||
}
|
||||
|
||||
s64 WallClock::GetCNTPCT() const {
|
||||
if (invariant)
|
||||
return GetUptime() * NsToCNTPCTRatio::num / NsToCNTPCTRatio::den;
|
||||
return MultiplyHigh(GetUptime(), cntpct_rdtsc_factor);
|
||||
}
|
||||
|
||||
s64 WallClock::GetGPUTick() const {
|
||||
if (invariant)
|
||||
return GetUptime() * NsToGPUTickRatio::num / NsToGPUTickRatio::den;
|
||||
return MultiplyHigh(GetUptime(), gputick_rdtsc_factor);
|
||||
}
|
||||
|
||||
s64 WallClock::GetUptime() const {
|
||||
if (invariant)
|
||||
return std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::steady_clock::now().time_since_epoch()).count();
|
||||
return s64(Common::X64::FencedRDTSC());
|
||||
}
|
||||
|
||||
bool WallClock::IsNative() const {
|
||||
if (invariant)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
#elif defined(HAS_NCE)
|
||||
return std::make_unique<Arm64::NativeClock>();
|
||||
namespace {
|
||||
|
||||
[[nodiscard]] WallClock::FactorType GetFixedPointFactor(u64 num, u64 den) noexcept {
|
||||
return (WallClock::FactorType(num) << 64) / den;
|
||||
}
|
||||
|
||||
[[nodiscard]] u64 MultiplyHigh(u64 m, WallClock::FactorType factor) noexcept {
|
||||
return static_cast<u64>((m * factor) >> 64);
|
||||
}
|
||||
|
||||
[[nodiscard]] s64 GetHostCNTFRQ() noexcept {
|
||||
u64 cntfrq_el0 = 0;
|
||||
#ifdef ANDROID
|
||||
std::string_view board{""};
|
||||
char buffer[PROP_VALUE_MAX];
|
||||
int len{__system_property_get("ro.product.board", buffer)};
|
||||
board = std::string_view(buffer, static_cast<size_t>(len));
|
||||
if (board == "s5e9925") { // Exynos 2200
|
||||
cntfrq_el0 = 25600000;
|
||||
} else if (board == "exynos2100") { // Exynos 2100
|
||||
cntfrq_el0 = 26000000;
|
||||
} else if (board == "exynos9810") { // Exynos 9810
|
||||
cntfrq_el0 = 26000000;
|
||||
} else if (board == "s5e8825") { // Exynos 1280
|
||||
cntfrq_el0 = 26000000;
|
||||
} else {
|
||||
asm volatile("mrs %[cntfrq_el0], cntfrq_el0" : [cntfrq_el0] "=r"(cntfrq_el0));
|
||||
}
|
||||
return cntfrq_el0;
|
||||
#else
|
||||
return std::make_unique<StandardWallClock>();
|
||||
asm volatile("mrs %[cntfrq_el0], cntfrq_el0" : [cntfrq_el0] "=r"(cntfrq_el0));
|
||||
return cntfrq_el0;
|
||||
#endif
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
WallClock::WallClock(bool invariant_, u64 rdtsc_frequency_) noexcept {
|
||||
const u64 host_cntfrq = std::max<u64>(GetHostCNTFRQ(), 1);
|
||||
ns_cntfrq_factor = GetFixedPointFactor(NsRatio::den, host_cntfrq);
|
||||
us_cntfrq_factor = GetFixedPointFactor(UsRatio::den, host_cntfrq);
|
||||
ms_cntfrq_factor = GetFixedPointFactor(MsRatio::den, host_cntfrq);
|
||||
guest_cntfrq_factor = GetFixedPointFactor(CNTFRQ, host_cntfrq);
|
||||
gputick_cntfrq_factor = GetFixedPointFactor(GPUTickFreq, host_cntfrq);
|
||||
}
|
||||
|
||||
std::chrono::nanoseconds WallClock::GetTimeNS() const {
|
||||
return std::chrono::nanoseconds{MultiplyHigh(GetUptime(), ns_cntfrq_factor)};
|
||||
}
|
||||
|
||||
std::chrono::microseconds WallClock::GetTimeUS() const {
|
||||
return std::chrono::microseconds{MultiplyHigh(GetUptime(), us_cntfrq_factor)};
|
||||
}
|
||||
|
||||
std::chrono::milliseconds WallClock::GetTimeMS() const {
|
||||
return std::chrono::milliseconds{MultiplyHigh(GetUptime(), ms_cntfrq_factor)};
|
||||
}
|
||||
|
||||
s64 WallClock::GetCNTPCT() const {
|
||||
return MultiplyHigh(GetUptime(), guest_cntfrq_factor);
|
||||
}
|
||||
|
||||
s64 WallClock::GetGPUTick() const {
|
||||
return MultiplyHigh(GetUptime(), gputick_cntfrq_factor);
|
||||
}
|
||||
|
||||
s64 WallClock::GetUptime() const {
|
||||
s64 cntvct_el0 = 0;
|
||||
asm volatile(
|
||||
"dsb ish\n\t"
|
||||
"mrs %[cntvct_el0], cntvct_el0\n\t"
|
||||
"dsb ish\n\t"
|
||||
: [cntvct_el0] "=r"(cntvct_el0)
|
||||
);
|
||||
return cntvct_el0;
|
||||
}
|
||||
|
||||
bool WallClock::IsNative() const {
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
WallClock::WallClock(bool invariant_, u64 rdtsc_frequency_) noexcept {}
|
||||
|
||||
std::chrono::nanoseconds WallClock::GetTimeNS() const {
|
||||
return std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::system_clock::now().time_since_epoch());
|
||||
}
|
||||
|
||||
std::chrono::microseconds WallClock::GetTimeUS() const {
|
||||
return std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::system_clock::now().time_since_epoch());
|
||||
}
|
||||
|
||||
std::chrono::milliseconds WallClock::GetTimeMS() const {
|
||||
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch());
|
||||
}
|
||||
|
||||
s64 WallClock::GetCNTPCT() const {
|
||||
return GetUptime() * NsToCNTPCTRatio::num / NsToCNTPCTRatio::den;
|
||||
}
|
||||
|
||||
s64 WallClock::GetGPUTick() const {
|
||||
return GetUptime() * NsToGPUTickRatio::num / NsToGPUTickRatio::den;
|
||||
}
|
||||
|
||||
s64 WallClock::GetUptime() const {
|
||||
return std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::steady_clock::now().time_since_epoch()).count();
|
||||
}
|
||||
|
||||
bool WallClock::IsNative() const {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
WallClock CreateOptimalClock() noexcept {
|
||||
#if defined(ARCHITECTURE_x86_64)
|
||||
auto const& caps = GetCPUCaps();
|
||||
return WallClock(!(caps.invariant_tsc && caps.tsc_frequency >= std::nano::den), caps.tsc_frequency);
|
||||
#elif defined(HAS_NCE)
|
||||
return WallClock(false, 1);
|
||||
#else
|
||||
return WallClock(true, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||