refactor: Rework features that use external libraries into optional plugins (#1470)
This commit is contained in:
parent
84bfd10416
commit
61bfe10bc2
20
.github/workflows/build.yml
vendored
20
.github/workflows/build.yml
vendored
@ -95,7 +95,7 @@ jobs:
|
||||
echo "ImHex checks for the existence of this file to determine if it is running in portable mode. You should not delete this file" > $PWD/install/PORTABLE
|
||||
|
||||
- name: ⬆️ Upload Windows Installer
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
if-no-files-found: error
|
||||
name: Windows Installer x86_64
|
||||
@ -103,7 +103,7 @@ jobs:
|
||||
imhex-*.msi
|
||||
|
||||
- name: ⬆️ Upload Portable ZIP
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
if-no-files-found: error
|
||||
name: Windows Portable x86_64
|
||||
@ -120,7 +120,7 @@ jobs:
|
||||
mv opengl32.dll build/install
|
||||
|
||||
- name: ⬆️ Upload NoGPU Portable ZIP
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
if-no-files-found: error
|
||||
name: Windows Portable NoGPU x86_64
|
||||
@ -238,7 +238,7 @@ jobs:
|
||||
ninja package
|
||||
|
||||
- name: ⬆️ Upload DMG
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
if-no-files-found: error
|
||||
name: macOS DMG${{matrix.suffix}} x86_64
|
||||
@ -270,7 +270,7 @@ jobs:
|
||||
docker buildx build . -f dist/macOS/arm64.Dockerfile --progress=plain --build-arg 'JOBS=4' --build-arg "BUILD_TYPE=$(BUILD_TYPE)" --build-context imhex=$(pwd) --output out
|
||||
|
||||
- name: ⬆️ Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: macOS ZIP arm64
|
||||
path: out/
|
||||
@ -374,7 +374,7 @@ jobs:
|
||||
mv build/DebDir.deb imhex-${{env.IMHEX_VERSION}}-Ubuntu-${{ matrix.release_num }}-x86_64.deb
|
||||
|
||||
- name: ⬆️ Upload DEB
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
if-no-files-found: error
|
||||
name: Ubuntu ${{ matrix.release_num }} DEB x86_64
|
||||
@ -410,14 +410,14 @@ jobs:
|
||||
|
||||
|
||||
- name: ⬆️ Upload AppImage
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
if-no-files-found: error
|
||||
name: Linux AppImage x86_64
|
||||
path: 'out/*.AppImage'
|
||||
|
||||
- name: ⬆️ Upload AppImage zsync
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
if-no-files-found: error
|
||||
name: Linux AppImage zsync x86_64
|
||||
@ -520,7 +520,7 @@ jobs:
|
||||
mv *.pkg.tar.zst imhex-${{env.IMHEX_VERSION}}-ArchLinux-x86_64.pkg.tar.zst
|
||||
|
||||
- name: ⬆️ Upload imhex-archlinux.pkg.tar.zst
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
if-no-files-found: error
|
||||
name: ArchLinux .pkg.tar.zst x86_64
|
||||
@ -648,7 +648,7 @@ jobs:
|
||||
$GITHUB_WORKSPACE/imhex-${{env.IMHEX_VERSION}}-${{matrix.name}}-${{matrix.release_num}}-x86_64.rpm
|
||||
|
||||
- name: ⬆️ Upload RPM
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
if-no-files-found: error
|
||||
name: ${{ matrix.name }} ${{ matrix.release_num }} RPM x86_64
|
||||
|
@ -39,12 +39,7 @@ setDefaultBuiltTypeIfUnset()
|
||||
detectBadClone()
|
||||
verifyCompiler()
|
||||
|
||||
# List plugin names here. Project name must match folder name
|
||||
set(PLUGINS
|
||||
builtin
|
||||
windows
|
||||
script_loader
|
||||
)
|
||||
detectBundledPlugins()
|
||||
|
||||
# Add various defines
|
||||
detectOS()
|
||||
|
@ -147,27 +147,17 @@ macro(createPackage)
|
||||
foreach (plugin IN LISTS PLUGINS)
|
||||
add_subdirectory("plugins/${plugin}")
|
||||
if (TARGET ${plugin})
|
||||
get_target_property(IS_RUST_PROJECT ${plugin} RUST_PROJECT)
|
||||
|
||||
set_target_properties(${plugin} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins)
|
||||
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins)
|
||||
|
||||
if (IS_RUST_PROJECT)
|
||||
set_target_properties(${plugin} PROPERTIES CARGO_BUILD_TARGET_DIR ${CMAKE_BINARY_DIR}/plugins)
|
||||
|
||||
get_target_property(PLUGIN_LOCATION ${plugin} LOCATION)
|
||||
|
||||
install(FILES "${PLUGIN_LOCATION}/../${plugin}.hexplug" DESTINATION "${PLUGINS_INSTALL_LOCATION}" PERMISSIONS ${LIBRARY_PERMISSIONS})
|
||||
else ()
|
||||
if (APPLE)
|
||||
if (IMHEX_GENERATE_PACKAGE)
|
||||
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PLUGINS_INSTALL_LOCATION})
|
||||
else ()
|
||||
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins)
|
||||
endif ()
|
||||
if (APPLE)
|
||||
if (IMHEX_GENERATE_PACKAGE)
|
||||
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PLUGINS_INSTALL_LOCATION})
|
||||
else ()
|
||||
install(TARGETS ${plugin} LIBRARY DESTINATION ${PLUGINS_INSTALL_LOCATION})
|
||||
set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins)
|
||||
endif ()
|
||||
else ()
|
||||
install(TARGETS ${plugin} LIBRARY DESTINATION ${PLUGINS_INSTALL_LOCATION})
|
||||
endif ()
|
||||
|
||||
add_dependencies(imhex_all ${plugin})
|
||||
@ -395,6 +385,35 @@ function(verifyCompiler)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
macro(detectBundledPlugins)
|
||||
file(GLOB PLUGINS_DIRS "plugins/*")
|
||||
|
||||
if (NOT DEFINED IMHEX_INCLUDE_PLUGINS)
|
||||
foreach(PLUGIN_DIR ${PLUGINS_DIRS})
|
||||
if (EXISTS "${PLUGIN_DIR}/CMakeLists.txt")
|
||||
get_filename_component(PLUGIN_NAME ${PLUGIN_DIR} NAME)
|
||||
if (NOT (${PLUGIN_NAME} IN_LIST IMHEX_EXCLUDE_PLUGINS))
|
||||
list(APPEND PLUGINS ${PLUGIN_NAME})
|
||||
endif ()
|
||||
endif()
|
||||
endforeach()
|
||||
else()
|
||||
set(PLUGINS ${IMHEX_INCLUDE_PLUGINS})
|
||||
endif()
|
||||
|
||||
foreach(PLUGIN_NAME ${PLUGINS})
|
||||
message(STATUS "Enabled bundled plugin '${PLUGIN_NAME}'")
|
||||
endforeach()
|
||||
|
||||
if (NOT PLUGINS)
|
||||
message(FATAL_ERROR "No bundled plugins enabled")
|
||||
endif()
|
||||
|
||||
if (NOT ("builtin" IN_LIST PLUGINS))
|
||||
message(FATAL_ERROR "The 'builtin' plugin is required for ImHex to work!")
|
||||
endif ()
|
||||
endmacro()
|
||||
|
||||
macro(setVariableInParent variable value)
|
||||
get_directory_property(hasParent PARENT_DIRECTORY)
|
||||
|
||||
@ -561,24 +580,6 @@ macro(addBundledLibraries)
|
||||
find_package(LLVM REQUIRED Demangle)
|
||||
endif()
|
||||
|
||||
if (NOT USE_SYSTEM_YARA)
|
||||
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/yara EXCLUDE_FROM_ALL)
|
||||
set_target_properties(libyara PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
set(YARA_LIBRARIES libyara)
|
||||
else()
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(YARA REQUIRED IMPORTED_TARGET yara)
|
||||
endif()
|
||||
|
||||
if (NOT USE_SYSTEM_MINIAUDIO)
|
||||
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/miniaudio EXCLUDE_FROM_ALL)
|
||||
set_target_properties(miniaudio PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
set(MINIAUDIO_LIBRARIES miniaudio)
|
||||
else()
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(miniaudio REQUIRED IMPORTED_TARGET miniaudio)
|
||||
endif()
|
||||
|
||||
if (NOT USE_SYSTEM_JTHREAD)
|
||||
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/jthread EXCLUDE_FROM_ALL)
|
||||
set(JTHREAD_LIBRARIES jthread)
|
||||
@ -591,20 +592,6 @@ macro(addBundledLibraries)
|
||||
set(JTHREAD_LIBRARIES jthread)
|
||||
endif()
|
||||
|
||||
if (NOT USE_SYSTEM_CAPSTONE)
|
||||
set(CAPSTONE_BUILD_STATIC_RUNTIME OFF CACHE BOOL "Disable shared library building")
|
||||
set(CAPSTONE_BUILD_SHARED OFF CACHE BOOL "Disable shared library building")
|
||||
set(CAPSTONE_BUILD_TESTS OFF CACHE BOOL "Disable tests")
|
||||
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/capstone EXCLUDE_FROM_ALL)
|
||||
set_target_properties(capstone PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
target_compile_options(capstone PRIVATE -Wno-unused-function)
|
||||
set(CAPSTONE_LIBRARIES "capstone")
|
||||
set(CAPSTONE_INCLUDE_DIRS ${THIRD_PARTY_LIBS_FOLDER}/capstone/include)
|
||||
else()
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_search_module(CAPSTONE 4.0.2 REQUIRED capstone)
|
||||
endif()
|
||||
|
||||
set(LIBPL_BUILD_CLI_AS_EXECUTABLE OFF)
|
||||
add_subdirectory(${EXTERNAL_LIBS_FOLDER}/pattern_language EXCLUDE_FROM_ALL)
|
||||
set_target_properties(libpl PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
|
@ -1,6 +1,6 @@
|
||||
macro(add_imhex_plugin)
|
||||
# Parse arguments
|
||||
set(options "")
|
||||
set(options LIBRARY_PLUGIN)
|
||||
set(oneValueArgs NAME)
|
||||
set(multiValueArgs SOURCES INCLUDES LIBRARIES)
|
||||
cmake_parse_arguments(IMHEX_PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
@ -12,8 +12,15 @@ macro(add_imhex_plugin)
|
||||
|
||||
configure_file(${CMAKE_SOURCE_DIR}/dist/web/plugin-bundle.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/plugin-bundle.cpp @ONLY)
|
||||
target_sources(main PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/plugin-bundle.cpp)
|
||||
set(IMHEX_PLUGIN_SUFFIX ".hexplug")
|
||||
else()
|
||||
set(IMHEX_PLUGIN_LIBRARY_TYPE MODULE)
|
||||
if (IMHEX_PLUGIN_LIBRARY_PLUGIN)
|
||||
set(IMHEX_PLUGIN_LIBRARY_TYPE SHARED)
|
||||
set(IMHEX_PLUGIN_SUFFIX ".hexpluglib")
|
||||
else()
|
||||
set(IMHEX_PLUGIN_LIBRARY_TYPE MODULE)
|
||||
set(IMHEX_PLUGIN_SUFFIX ".hexplug")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Define new project for plugin
|
||||
@ -24,7 +31,7 @@ macro(add_imhex_plugin)
|
||||
|
||||
# Add include directories and link libraries
|
||||
target_include_directories(${IMHEX_PLUGIN_NAME} PUBLIC ${IMHEX_PLUGIN_INCLUDES})
|
||||
target_link_libraries(${IMHEX_PLUGIN_NAME} PRIVATE libimhex ${IMHEX_PLUGIN_LIBRARIES} fmt::fmt imgui_all_includes libwolv)
|
||||
target_link_libraries(${IMHEX_PLUGIN_NAME} PRIVATE libimhex ${IMHEX_PLUGIN_LIBRARIES} ${FMT_LIBRARIES} imgui_all_includes libwolv)
|
||||
addIncludesFromLibrary(${IMHEX_PLUGIN_NAME} libpl)
|
||||
|
||||
# Add IMHEX_PROJECT_NAME and IMHEX_VERSION define
|
||||
@ -43,7 +50,7 @@ macro(add_imhex_plugin)
|
||||
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins
|
||||
CXX_STANDARD 23
|
||||
PREFIX ""
|
||||
SUFFIX ".hexplug"
|
||||
SUFFIX ${IMHEX_PLUGIN_SUFFIX}
|
||||
)
|
||||
|
||||
# Setup a romfs for the plugin
|
||||
|
@ -35,26 +35,27 @@ message(STATUS "Fixing up application bundle: ${BUNDLE_PATH}")
|
||||
|
||||
|
||||
# Make sure to fix up any included ImHex plugin.
|
||||
file(GLOB_RECURSE extra_libs "${BUNDLE_PATH}/Contents/MacOS/plugins/*.hexplug")
|
||||
file(GLOB_RECURSE plugins "${BUNDLE_PATH}/Contents/MacOS/plugins/*.hexplug")
|
||||
file(GLOB_RECURSE plugin_libs "${BUNDLE_PATH}/Contents/MacOS/plugins/*.hexpluglib")
|
||||
|
||||
|
||||
# BundleUtilities doesn't support DYLD_FALLBACK_LIBRARY_PATH behavior, which
|
||||
# makes it sometimes break on libraries that do weird things with @rpath. Specify
|
||||
# equivalent search directories until https://gitlab.kitware.com/cmake/cmake/issues/16625
|
||||
# is fixed and in our minimum CMake version.
|
||||
set(extra_dirs "/usr/local/lib" "/lib" "/usr/lib" ${EXTRA_BUNDLE_LIBRARY_PATHS})
|
||||
set(extra_dirs "/usr/local/lib" "/lib" "/usr/lib" ${EXTRA_BUNDLE_LIBRARY_PATHS} "${BUNDLE_PATH}/Contents/MacOS/plugins")
|
||||
message(STATUS "Fixing up application bundle: ${extra_dirs}")
|
||||
|
||||
# BundleUtilities is overly verbose, so disable most of its messages
|
||||
function(message)
|
||||
if(NOT ARGV MATCHES "^STATUS;")
|
||||
_message(${ARGV})
|
||||
endif()
|
||||
endfunction()
|
||||
#function(message)
|
||||
# if(NOT ARGV MATCHES "^STATUS;")
|
||||
# _message(${ARGV})
|
||||
# endif()
|
||||
#endfunction()
|
||||
|
||||
include(BundleUtilities)
|
||||
set(BU_CHMOD_BUNDLE_ITEMS ON)
|
||||
fixup_bundle("${BUNDLE_PATH}" "${extra_libs}" "${extra_dirs}")
|
||||
fixup_bundle("${BUNDLE_PATH}" "${plugins};${plugin_libs}" "${extra_dirs}")
|
||||
|
||||
if (CODE_SIGN_CERTIFICATE_ID)
|
||||
# Hack around Apple Silicon signing bugs by copying the real app, signing it and moving it back.
|
||||
|
2
dist/Arch/PKGBUILD
vendored
2
dist/Arch/PKGBUILD
vendored
@ -19,7 +19,7 @@ package() {
|
||||
install -Dm755 "$srcdir/usr/bin/imhex" "$pkgdir/usr/bin/imhex"
|
||||
install -Dm644 "$srcdir/usr/lib/libimhex.so.$pkgver" "$pkgdir/usr/lib/libimhex.so.$pkgver"
|
||||
|
||||
for plugin in "$srcdir/usr/lib/imhex/plugins/"*.hexplug; do
|
||||
for plugin in "$srcdir/usr/lib/imhex/plugins/"*.hexplug*; do
|
||||
install -Dm644 "$plugin" "$pkgdir/usr/lib/imhex/plugins/${plugin##*/}"
|
||||
done
|
||||
|
||||
|
1
dist/web/Dockerfile
vendored
1
dist/web/Dockerfile
vendored
@ -54,6 +54,7 @@ ccache -zs
|
||||
cmake /imhex \
|
||||
-DIMHEX_OFFLINE_BUILD=ON \
|
||||
-DIMHEX_STATIC_LINK_PLUGINS=ON \
|
||||
-DIMHEX_EXCLUDE_PLUGINS="script_loader" \
|
||||
-DNATIVE_CMAKE_C_COMPILER=gcc \
|
||||
-DNATIVE_CMAKE_CXX_COMPILER=g++ \
|
||||
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include <string>
|
||||
|
||||
#include <wolv/io/fs.hpp>
|
||||
#include <hex/helpers/logger.hpp>
|
||||
|
||||
struct ImGuiContext;
|
||||
|
||||
@ -18,6 +19,7 @@ namespace hex {
|
||||
|
||||
struct PluginFunctions {
|
||||
using InitializePluginFunc = void (*)();
|
||||
using InitializeLibraryFunc = void (*)();
|
||||
using GetPluginNameFunc = const char *(*)();
|
||||
using GetPluginAuthorFunc = const char *(*)();
|
||||
using GetPluginDescriptionFunc = const char *(*)();
|
||||
@ -27,6 +29,7 @@ namespace hex {
|
||||
using GetSubCommandsFunc = void* (*)();
|
||||
|
||||
InitializePluginFunc initializePluginFunction = nullptr;
|
||||
InitializeLibraryFunc initializeLibraryFunction = nullptr;
|
||||
GetPluginNameFunc getPluginNameFunction = nullptr;
|
||||
GetPluginAuthorFunc getPluginAuthorFunction = nullptr;
|
||||
GetPluginDescriptionFunc getPluginDescriptionFunction = nullptr;
|
||||
@ -38,8 +41,8 @@ namespace hex {
|
||||
|
||||
class Plugin {
|
||||
public:
|
||||
explicit Plugin(const std::fs::path &path);
|
||||
explicit Plugin(PluginFunctions functions);
|
||||
explicit Plugin(const std::fs::path &path, bool libraryPlugin);
|
||||
explicit Plugin(PluginFunctions functions, bool libraryPlugin);
|
||||
|
||||
Plugin(const Plugin &) = delete;
|
||||
Plugin(Plugin &&other) noexcept;
|
||||
@ -59,9 +62,12 @@ namespace hex {
|
||||
|
||||
[[nodiscard]] std::span<SubCommand> getSubCommands() const;
|
||||
|
||||
[[nodiscard]] bool isLibraryPlugin() const { return m_libraryPlugin; }
|
||||
|
||||
private:
|
||||
uintptr_t m_handle = 0;
|
||||
std::fs::path m_path;
|
||||
bool m_libraryPlugin;
|
||||
|
||||
mutable bool m_initialized = false;
|
||||
|
||||
|
@ -22,6 +22,24 @@
|
||||
* Name, Author and Description will be displayed in the in the plugin list on the Welcome screen.
|
||||
*/
|
||||
#define IMHEX_PLUGIN_SETUP(name, author, description) IMHEX_PLUGIN_SETUP_IMPL(name, author, description)
|
||||
#define IMHEX_LIBRARY_SETUP() IMHEX_LIBRARY_SETUP_IMPL()
|
||||
|
||||
#define IMHEX_LIBRARY_SETUP_IMPL() \
|
||||
IMHEX_PLUGIN_VISIBILITY_PREFIX void initializeLibrary(); \
|
||||
extern "C" [[gnu::visibility("default")]] void WOLV_TOKEN_CONCAT(forceLinkPlugin_, IMHEX_PLUGIN_NAME)() { \
|
||||
hex::PluginManager::addPlugin(hex::PluginFunctions { \
|
||||
nullptr, \
|
||||
initializeLibrary, \
|
||||
nullptr, \
|
||||
nullptr, \
|
||||
nullptr, \
|
||||
nullptr, \
|
||||
nullptr, \
|
||||
nullptr, \
|
||||
nullptr \
|
||||
}); \
|
||||
} \
|
||||
IMHEX_PLUGIN_VISIBILITY_PREFIX void initializeLibrary()
|
||||
|
||||
#define IMHEX_PLUGIN_SETUP_IMPL(name, author, description) \
|
||||
IMHEX_PLUGIN_VISIBILITY_PREFIX const char *getPluginName() { return name; } \
|
||||
@ -36,6 +54,7 @@
|
||||
extern "C" [[gnu::visibility("default")]] void WOLV_TOKEN_CONCAT(forceLinkPlugin_, IMHEX_PLUGIN_NAME)() { \
|
||||
hex::PluginManager::addPlugin(hex::PluginFunctions { \
|
||||
initializePlugin, \
|
||||
nullptr, \
|
||||
getPluginName, \
|
||||
getPluginAuthor, \
|
||||
getPluginDescription, \
|
||||
|
@ -16,25 +16,27 @@
|
||||
|
||||
namespace hex {
|
||||
|
||||
Plugin::Plugin(const std::fs::path &path) : m_path(path) {
|
||||
|
||||
Plugin::Plugin(const std::fs::path &path, bool libraryPlugin) : m_path(path), m_libraryPlugin(libraryPlugin) {
|
||||
#if defined(OS_WINDOWS)
|
||||
m_handle = uintptr_t(LoadLibraryW(path.c_str()));
|
||||
|
||||
if (m_handle == uintptr_t(INVALID_HANDLE_VALUE) || m_handle == 0) {
|
||||
log::error("LoadLibraryW failed: {}!", std::system_category().message(::GetLastError()));
|
||||
log::error("Loading plugin '{}' failed: {} {}!", wolv::util::toUTF8String(path.filename()), ::GetLastError(), std::system_category().message(::GetLastError()));
|
||||
return;
|
||||
}
|
||||
#else
|
||||
m_handle = uintptr_t(dlopen(wolv::util::toUTF8String(path).c_str(), RTLD_LAZY));
|
||||
|
||||
if (m_handle == 0) {
|
||||
log::error("dlopen failed: {}!", dlerror());
|
||||
log::error("Loading plugin '{}' failed: {}!", wolv::util::toUTF8String(path.filename()), dlerror());
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
log::info("Loaded plugin '{}'", wolv::util::toUTF8String(path.filename()));
|
||||
|
||||
m_functions.initializePluginFunction = getPluginFunction<PluginFunctions::InitializePluginFunc>("initializePlugin");
|
||||
m_functions.initializeLibraryFunction = getPluginFunction<PluginFunctions::InitializePluginFunc>("initializeLibrary");
|
||||
m_functions.getPluginNameFunction = getPluginFunction<PluginFunctions::GetPluginNameFunc>("getPluginName");
|
||||
m_functions.getPluginAuthorFunction = getPluginFunction<PluginFunctions::GetPluginAuthorFunc>("getPluginAuthor");
|
||||
m_functions.getPluginDescriptionFunction = getPluginFunction<PluginFunctions::GetPluginDescriptionFunc>("getPluginDescription");
|
||||
@ -44,9 +46,10 @@ namespace hex {
|
||||
m_functions.getSubCommandsFunction = getPluginFunction<PluginFunctions::GetSubCommandsFunc>("getSubCommands");
|
||||
}
|
||||
|
||||
Plugin::Plugin(hex::PluginFunctions functions) {
|
||||
m_handle = 0;
|
||||
m_functions = functions;
|
||||
Plugin::Plugin(hex::PluginFunctions functions, bool libraryPlugin) {
|
||||
m_handle = 0;
|
||||
m_functions = functions;
|
||||
m_libraryPlugin = libraryPlugin;
|
||||
}
|
||||
|
||||
|
||||
@ -54,6 +57,8 @@ namespace hex {
|
||||
m_handle = other.m_handle;
|
||||
other.m_handle = 0;
|
||||
|
||||
m_libraryPlugin = other.m_libraryPlugin;
|
||||
|
||||
m_path = std::move(other.m_path);
|
||||
|
||||
m_functions = other.m_functions;
|
||||
@ -73,6 +78,12 @@ namespace hex {
|
||||
bool Plugin::initializePlugin() const {
|
||||
const auto pluginName = wolv::util::toUTF8String(m_path.filename());
|
||||
|
||||
if (m_functions.initializeLibraryFunction != nullptr) {
|
||||
m_functions.initializeLibraryFunction();
|
||||
log::info("Library plugin '{}' initialized successfully", pluginName);
|
||||
return true;
|
||||
}
|
||||
|
||||
const auto requestedVersion = getCompatibleVersion();
|
||||
if (requestedVersion != ImHexApi::System::getImHexVersion()) {
|
||||
if (requestedVersion.empty()) {
|
||||
@ -107,8 +118,12 @@ namespace hex {
|
||||
std::string Plugin::getPluginName() const {
|
||||
if (m_functions.getPluginNameFunction != nullptr)
|
||||
return m_functions.getPluginNameFunction();
|
||||
else
|
||||
return hex::format("Unknown Plugin @ 0x{0:016X}", m_handle);
|
||||
else {
|
||||
if (this->isLibraryPlugin())
|
||||
return "Library Plugin";
|
||||
else
|
||||
return hex::format("Unknown Plugin @ 0x{0:016X}", m_handle);
|
||||
}
|
||||
}
|
||||
|
||||
std::string Plugin::getPluginAuthor() const {
|
||||
@ -132,6 +147,7 @@ namespace hex {
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
void Plugin::setImGuiContext(ImGuiContext *ctx) const {
|
||||
if (m_functions.setImGuiContextFunction != nullptr)
|
||||
m_functions.setImGuiContextFunction(ctx);
|
||||
@ -175,9 +191,16 @@ namespace hex {
|
||||
|
||||
getPluginPaths().push_back(pluginFolder);
|
||||
|
||||
// Load library plugins first
|
||||
for (auto &pluginPath : std::fs::directory_iterator(pluginFolder)) {
|
||||
if (pluginPath.is_regular_file() && pluginPath.path().extension() == ".hexpluglib")
|
||||
getPlugins().emplace_back(pluginPath.path(), true);
|
||||
}
|
||||
|
||||
// Load regular plugins afterwards
|
||||
for (auto &pluginPath : std::fs::directory_iterator(pluginFolder)) {
|
||||
if (pluginPath.is_regular_file() && pluginPath.path().extension() == ".hexplug")
|
||||
getPlugins().emplace_back(pluginPath.path());
|
||||
getPlugins().emplace_back(pluginPath.path(), false);
|
||||
}
|
||||
|
||||
if (getPlugins().empty())
|
||||
@ -200,7 +223,7 @@ namespace hex {
|
||||
}
|
||||
|
||||
void PluginManager::addPlugin(hex::PluginFunctions functions) {
|
||||
getPlugins().emplace_back(functions);
|
||||
getPlugins().emplace_back(functions, false);
|
||||
}
|
||||
|
||||
std::vector<Plugin> &PluginManager::getPlugins() {
|
||||
|
@ -52,7 +52,7 @@ set_target_properties(main PROPERTIES
|
||||
|
||||
add_compile_definitions(IMHEX_PROJECT_NAME="${PROJECT_NAME}")
|
||||
|
||||
target_link_libraries(main PRIVATE libromfs-imhex libimhex ${GLFW_LIBRARIES} libwolv libpl plcli libpl-gen ${FMT_LIBRARIES})
|
||||
target_link_libraries(main PRIVATE libromfs-imhex libimhex libwolv libpl plcli libpl-gen ${FMT_LIBRARIES})
|
||||
if (WIN32)
|
||||
target_link_libraries(main PRIVATE usp10 wsock32 ws2_32 Dwmapi.lib)
|
||||
else ()
|
||||
|
@ -182,12 +182,23 @@ namespace hex::init {
|
||||
return !std::fs::relative(plugin.getPath(), executablePath->parent_path()).string().starts_with("..");
|
||||
};
|
||||
|
||||
// Load library plugins first since plugins might depend on them
|
||||
for (const auto &plugin : plugins) {
|
||||
if (!plugin.isLibraryPlugin()) continue;
|
||||
|
||||
// Initialize the plugin
|
||||
if (!plugin.initializePlugin()) {
|
||||
log::error("Failed to initialize library plugin {}", wolv::util::toUTF8String(plugin.getPath().filename()));
|
||||
}
|
||||
}
|
||||
|
||||
u32 builtinPlugins = 0;
|
||||
u32 loadErrors = 0;
|
||||
|
||||
// Load the builtin plugin first, so it can initialize everything that's necessary for ImHex to work
|
||||
for (const auto &plugin : plugins) {
|
||||
if (!plugin.isBuiltinPlugin()) continue;
|
||||
if (plugin.isLibraryPlugin()) continue;
|
||||
|
||||
if (!shouldLoadPlugin(plugin)) {
|
||||
log::debug("Skipping built-in plugin {}", plugin.getPath().string());
|
||||
@ -209,6 +220,7 @@ namespace hex::init {
|
||||
// Load all other plugins
|
||||
for (const auto &plugin : plugins) {
|
||||
if (plugin.isBuiltinPlugin()) continue;
|
||||
if (plugin.isLibraryPlugin()) continue;
|
||||
|
||||
if (!shouldLoadPlugin(plugin)) {
|
||||
log::debug("Skipping plugin {}", plugin.getPath().string());
|
||||
|
@ -595,7 +595,7 @@ namespace hex {
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted(wolv::util::toUTF8String(filePath).c_str());
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted(wolv::io::fs::exists(filePath) ? ICON_VS_CHECK : ICON_VS_CLOSE);
|
||||
ImGui::TextUnformatted(wolv::io::fs::exists(filePath) ? "Yes" : "No");
|
||||
}
|
||||
ImGui::EndTable();
|
||||
}
|
||||
|
@ -21,8 +21,6 @@ add_imhex_plugin(
|
||||
source/content/data_inspector.cpp
|
||||
source/content/pl_builtin_functions.cpp
|
||||
source/content/pl_pragmas.cpp
|
||||
source/content/pl_visualizers.cpp
|
||||
source/content/pl_inline_visualizers.cpp
|
||||
source/content/settings_entries.cpp
|
||||
source/content/tools_entries.cpp
|
||||
source/content/data_processor_nodes.cpp
|
||||
@ -46,6 +44,7 @@ add_imhex_plugin(
|
||||
source/content/init_tasks.cpp
|
||||
source/content/fonts.cpp
|
||||
source/content/workspaces.cpp
|
||||
source/content/pl_visualizers.cpp
|
||||
|
||||
source/content/data_processor_nodes/basic_nodes.cpp
|
||||
source/content/data_processor_nodes/control_nodes.cpp
|
||||
@ -82,20 +81,12 @@ add_imhex_plugin(
|
||||
source/content/tools/tcp_client_server.cpp
|
||||
source/content/tools/wiki_explainer.cpp
|
||||
|
||||
source/content/pl_visualizers/hex_viewer.cpp
|
||||
source/content/pl_visualizers/chunk_entropy.cpp
|
||||
|
||||
source/content/tutorials/tutorials.cpp
|
||||
source/content/tutorials/introduction.cpp
|
||||
|
||||
source/content/pl_visualizers/line_plot.cpp
|
||||
source/content/pl_visualizers/scatter_plot.cpp
|
||||
source/content/pl_visualizers/image.cpp
|
||||
source/content/pl_visualizers/disassembler.cpp
|
||||
source/content/pl_visualizers/3d_model.cpp
|
||||
source/content/pl_visualizers/sound.cpp
|
||||
source/content/pl_visualizers/chunk_entropy.cpp
|
||||
source/content/pl_visualizers/hex_viewer.cpp
|
||||
source/content/pl_visualizers/coordinates.cpp
|
||||
source/content/pl_visualizers/timestamp.cpp
|
||||
|
||||
source/content/views/view_hex_editor.cpp
|
||||
source/content/views/view_pattern_editor.cpp
|
||||
source/content/views/view_pattern_data.cpp
|
||||
@ -104,7 +95,6 @@ add_imhex_plugin(
|
||||
source/content/views/view_about.cpp
|
||||
source/content/views/view_tools.cpp
|
||||
source/content/views/view_data_inspector.cpp
|
||||
source/content/views/view_disassembler.cpp
|
||||
source/content/views/view_bookmarks.cpp
|
||||
source/content/views/view_patches.cpp
|
||||
source/content/views/view_command_palette.cpp
|
||||
@ -120,26 +110,15 @@ add_imhex_plugin(
|
||||
source/content/views/view_achievements.cpp
|
||||
source/content/views/view_highlight_rules.cpp
|
||||
source/content/views/view_tutorials.cpp
|
||||
source/content/views/view_yara.cpp
|
||||
|
||||
source/content/helpers/notification.cpp
|
||||
|
||||
source/ui/hex_editor.cpp
|
||||
source/ui/pattern_drawer.cpp
|
||||
|
||||
INCLUDES
|
||||
include
|
||||
${CAPSTONE_INCLUDE_DIRS}
|
||||
${YARA_INCLUDE_DIRS}
|
||||
${MINIAUDIO_INCLUDE_DIRS}
|
||||
|
||||
LIBRARIES
|
||||
${CAPSTONE_LIBRARIES}
|
||||
${YARA_LIBRARIES}
|
||||
${MINIAUDIO_LIBRARIES}
|
||||
ui
|
||||
${JTHREAD_LIBRARIES}
|
||||
${GLFW_LIBRARIES}
|
||||
plcli libpl-gen
|
||||
plcli
|
||||
)
|
||||
|
||||
if (WIN32)
|
||||
|
@ -11,8 +11,11 @@
|
||||
#include <hex/providers/provider.hpp>
|
||||
#include <hex/providers/buffered_reader.hpp>
|
||||
|
||||
#include <hex/helpers/utils.hpp>
|
||||
|
||||
#include <imgui_internal.h>
|
||||
|
||||
#include <atomic>
|
||||
#include <random>
|
||||
|
||||
namespace hex {
|
||||
@ -299,7 +302,7 @@ namespace hex {
|
||||
void draw(ImVec2 size, ImPlotFlags flags, bool updateHandle = false) {
|
||||
|
||||
if (!m_processing && ImPlot::BeginPlot("##ChunkBasedAnalysis", size, flags)) {
|
||||
ImPlot::SetupAxes("hex.builtin.common.address"_lang, "hex.builtin.view.information.entropy"_lang,
|
||||
ImPlot::SetupAxes("hex.ui.common.address"_lang, "hex.builtin.view.information.entropy"_lang,
|
||||
ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch,
|
||||
ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch);
|
||||
ImPlot::SetupAxisFormat(ImAxis_X1, impl::IntegerAxisFormatter, (void*)("0x%04llX"));
|
||||
@ -595,7 +598,7 @@ namespace hex {
|
||||
void draw(ImVec2 size, ImPlotFlags flags) {
|
||||
|
||||
if (!m_processing && ImPlot::BeginPlot("##distribution", size, flags)) {
|
||||
ImPlot::SetupAxes("hex.builtin.common.value"_lang, "hex.builtin.common.count"_lang,
|
||||
ImPlot::SetupAxes("hex.ui.common.value"_lang, "hex.ui.common.count"_lang,
|
||||
ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch,
|
||||
ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch);
|
||||
ImPlot::SetupAxisScale(ImAxis_Y1, ImPlotScale_Log10);
|
||||
@ -690,7 +693,7 @@ namespace hex {
|
||||
void draw(ImVec2 size, ImPlotFlags flags, bool updateHandle = false) {
|
||||
// Draw the result of the analysis
|
||||
if (!m_processing && ImPlot::BeginPlot("##byte_types", size, flags)) {
|
||||
ImPlot::SetupAxes("hex.builtin.common.address"_lang, "hex.builtin.common.percentage"_lang,
|
||||
ImPlot::SetupAxes("hex.ui.common.address"_lang, "hex.ui.common.percentage"_lang,
|
||||
ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch,
|
||||
ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch);
|
||||
ImPlot::SetupAxesLimits(
|
||||
|
@ -22,7 +22,7 @@ namespace hex::plugin::builtin {
|
||||
ImGui::ProgressBar(m_task.getProgress() / 100.0F);
|
||||
|
||||
ImGui::NewLine();
|
||||
if (ImGui::ButtonEx("hex.builtin.common.cancel"_lang, ImVec2(ImGui::GetContentRegionAvail().x, 0)) || ImGui::IsKeyDown(ImGuiKey_Escape))
|
||||
if (ImGui::ButtonEx("hex.ui.common.cancel"_lang, ImVec2(ImGui::GetContentRegionAvail().x, 0)) || ImGui::IsKeyDown(ImGuiKey_Escape))
|
||||
m_task.interrupt();
|
||||
|
||||
if (!m_task.isRunning()) {
|
||||
|
@ -21,7 +21,7 @@ namespace hex::plugin::builtin {
|
||||
ImGuiExt::TextSpinner("");
|
||||
ImGui::NewLine();
|
||||
ImGui::SetCursorPosX((ImGui::GetWindowWidth() - 150_scaled) / 2);
|
||||
if (ImGui::ButtonEx("hex.builtin.common.cancel"_lang, ImVec2(150, 0)) || ImGui::IsKeyDown(ImGuiKey_Escape))
|
||||
if (ImGui::ButtonEx("hex.ui.common.cancel"_lang, ImVec2(150, 0)) || ImGui::IsKeyDown(ImGuiKey_Escape))
|
||||
ImGui::CloseCurrentPopup();
|
||||
|
||||
if (TaskManager::getRunningTaskCount() == 0 && TaskManager::getRunningBackgroundTaskCount() == 0) {
|
||||
|
@ -13,7 +13,7 @@ namespace hex::plugin::builtin {
|
||||
class PopupTelemetryRequest : public Popup<PopupTelemetryRequest> {
|
||||
public:
|
||||
PopupTelemetryRequest()
|
||||
: hex::Popup<PopupTelemetryRequest>("hex.builtin.common.question", false) {
|
||||
: hex::Popup<PopupTelemetryRequest>("hex.ui.common.question", false) {
|
||||
// Check if there is a telemetry uuid
|
||||
m_uuid = ContentRegistry::Settings::read("hex.builtin.setting.general", "hex.builtin.setting.general.uuid", "").get<std::string>();
|
||||
if(m_uuid.empty()) {
|
||||
@ -77,7 +77,7 @@ namespace hex::plugin::builtin {
|
||||
const auto buttonPos = [&](u8 index) { return ImGui::GetStyle().FramePadding.x + (buttonSize.x + ImGui::GetStyle().FramePadding.x * 3) * index; };
|
||||
|
||||
ImGui::SetCursorPosX(buttonPos(0));
|
||||
if (ImGui::Button("hex.builtin.common.allow"_lang, buttonSize)) {
|
||||
if (ImGui::Button("hex.ui.common.allow"_lang, buttonSize)) {
|
||||
ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.server_contact", 1);
|
||||
ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.upload_crash_logs", 1);
|
||||
this->close();
|
||||
@ -91,7 +91,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
ImGui::SameLine();
|
||||
ImGui::SetCursorPosX(buttonPos(2));
|
||||
if (ImGui::Button("hex.builtin.common.deny"_lang, buttonSize)) {
|
||||
if (ImGui::Button("hex.ui.common.deny"_lang, buttonSize)) {
|
||||
this->close();
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ namespace hex::plugin::builtin {
|
||||
class PopupUnsavedChanges : public Popup<PopupUnsavedChanges> {
|
||||
public:
|
||||
PopupUnsavedChanges(std::string message, std::function<void()> yesFunction, std::function<void()> noFunction)
|
||||
: hex::Popup<PopupUnsavedChanges>("hex.builtin.common.question", false),
|
||||
: hex::Popup<PopupUnsavedChanges>("hex.ui.common.question", false),
|
||||
m_message(std::move(message)),
|
||||
m_yesFunction(std::move(yesFunction)), m_noFunction(std::move(noFunction)) { }
|
||||
|
||||
@ -34,13 +34,13 @@ namespace hex::plugin::builtin {
|
||||
|
||||
auto width = ImGui::GetWindowWidth();
|
||||
ImGui::SetCursorPosX(width / 9);
|
||||
if (ImGui::Button("hex.builtin.common.yes"_lang, ImVec2(width / 3, 0))) {
|
||||
if (ImGui::Button("hex.ui.common.yes"_lang, ImVec2(width / 3, 0))) {
|
||||
m_yesFunction();
|
||||
this->close();
|
||||
}
|
||||
ImGui::SameLine();
|
||||
ImGui::SetCursorPosX(width / 9 * 5);
|
||||
if (ImGui::Button("hex.builtin.common.no"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) {
|
||||
if (ImGui::Button("hex.ui.common.no"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) {
|
||||
m_noFunction();
|
||||
this->close();
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ namespace hex::plugin::builtin {
|
||||
ImGui::NewLine();
|
||||
ImGui::TextUnformatted("hex.builtin.view.pattern_editor.accept_pattern.question"_lang);
|
||||
|
||||
ImGuiExt::ConfirmButtons("hex.builtin.common.yes"_lang, "hex.builtin.common.no"_lang,
|
||||
ImGuiExt::ConfirmButtons("hex.ui.common.yes"_lang, "hex.ui.common.no"_lang,
|
||||
[this, provider] {
|
||||
m_view->loadPatternFile(m_view->m_possiblePatternFiles.get(provider)[m_selectedPatternFile], provider);
|
||||
this->close();
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -63,76 +63,6 @@
|
||||
"hex.builtin.command.cmd.result": "Befehl '{0}' ausführen",
|
||||
"hex.builtin.command.web.desc": "Webseite nachschlagen",
|
||||
"hex.builtin.command.web.result": "'{0}' nachschlagen",
|
||||
"hex.builtin.common.address": "Adresse",
|
||||
"hex.builtin.common.allow": "Erlauben",
|
||||
"hex.builtin.common.begin": "Anfangen",
|
||||
"hex.builtin.common.big": "Big",
|
||||
"hex.builtin.common.big_endian": "Big Endian",
|
||||
"hex.builtin.common.browse": "Durchsuchen...",
|
||||
"hex.builtin.common.bytes": "Bytes",
|
||||
"hex.builtin.common.cancel": "Abbrechen",
|
||||
"hex.builtin.common.choose_file": "Datei auswählen",
|
||||
"hex.builtin.common.close": "Schliessen",
|
||||
"hex.builtin.common.comment": "Kommentar",
|
||||
"hex.builtin.common.count": "Anzahl",
|
||||
"hex.builtin.common.decimal": "Dezimal",
|
||||
"hex.builtin.common.deny": "Verweigern",
|
||||
"hex.builtin.common.dont_show_again": "Nicht mehr anzeigen",
|
||||
"hex.builtin.common.encoding.ascii": "ASCII",
|
||||
"hex.builtin.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.builtin.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.builtin.common.encoding.utf8": "UTF-8",
|
||||
"hex.builtin.common.end": "Beenden",
|
||||
"hex.builtin.common.endian": "Endian",
|
||||
"hex.builtin.common.warning": "Warnung",
|
||||
"hex.builtin.common.error": "Fehler",
|
||||
"hex.builtin.common.fatal": "Fataler Fehler",
|
||||
"hex.builtin.common.file": "Datei",
|
||||
"hex.builtin.common.filter": "Filter",
|
||||
"hex.builtin.common.hexadecimal": "Hexadezimal",
|
||||
"hex.builtin.common.info": "Information",
|
||||
"hex.builtin.common.instruction": "Instruktion",
|
||||
"hex.builtin.common.link": "Link",
|
||||
"hex.builtin.common.little": "Little",
|
||||
"hex.builtin.common.little_endian": "Little Endian",
|
||||
"hex.builtin.common.load": "Laden",
|
||||
"hex.builtin.common.match_selection": "Arbeitsbereich synchronisieren",
|
||||
"hex.builtin.common.name": "Name",
|
||||
"hex.builtin.common.no": "Nein",
|
||||
"hex.builtin.common.number_format": "Format",
|
||||
"hex.builtin.common.octal": "Oktal",
|
||||
"hex.builtin.common.offset": "Offset",
|
||||
"hex.builtin.common.okay": "Okay",
|
||||
"hex.builtin.common.open": "Öffnen",
|
||||
"hex.builtin.common.percentage": "Prozent",
|
||||
"hex.builtin.common.processing": "Verarbeiten",
|
||||
"hex.builtin.common.project": "Projekt",
|
||||
"hex.builtin.common.question": "Frage",
|
||||
"hex.builtin.common.range": "Bereich",
|
||||
"hex.builtin.common.range.entire_data": "Gesamte Daten",
|
||||
"hex.builtin.common.range.selection": "Auswahl",
|
||||
"hex.builtin.common.region": "Region",
|
||||
"hex.builtin.common.reset": "Zurücksetzen",
|
||||
"hex.builtin.common.set": "Setzen",
|
||||
"hex.builtin.common.settings": "Einstellungen",
|
||||
"hex.builtin.common.size": "Länge",
|
||||
"hex.builtin.common.type": "Typ",
|
||||
"hex.builtin.common.type.f32": "float",
|
||||
"hex.builtin.common.type.f64": "double",
|
||||
"hex.builtin.common.type.i16": "int16_t",
|
||||
"hex.builtin.common.type.i24": "int24_t",
|
||||
"hex.builtin.common.type.i32": "int32_t",
|
||||
"hex.builtin.common.type.i48": "int48_t",
|
||||
"hex.builtin.common.type.i64": "int64_t",
|
||||
"hex.builtin.common.type.i8": "int8_t",
|
||||
"hex.builtin.common.type.u16": "uint16_t",
|
||||
"hex.builtin.common.type.u24": "uint24_t",
|
||||
"hex.builtin.common.type.u32": "uint32_t",
|
||||
"hex.builtin.common.type.u48": "uint48_t",
|
||||
"hex.builtin.common.type.u64": "uint64_t",
|
||||
"hex.builtin.common.type.u8": "uint8_t",
|
||||
"hex.builtin.common.value": "Wert",
|
||||
"hex.builtin.common.yes": "Ja",
|
||||
"hex.builtin.hash.crc.iv": "Initialwert",
|
||||
"hex.builtin.hash.crc.poly": "Polynom",
|
||||
"hex.builtin.hash.crc.refl_in": "Reflect In",
|
||||
@ -150,18 +80,6 @@
|
||||
"hex.builtin.hash.sha256": "SHA256",
|
||||
"hex.builtin.hash.sha384": "SHA384",
|
||||
"hex.builtin.hash.sha512": "SHA512",
|
||||
"hex.builtin.hex_editor.ascii_view": "ASCII Spalte anzeigen",
|
||||
"hex.builtin.hex_editor.custom_encoding_view": "Erweiterte Dekodierungsspalte anzeigen",
|
||||
"hex.builtin.hex_editor.human_readable_units_footer": "",
|
||||
"hex.builtin.hex_editor.data_size": "Datengrösse",
|
||||
"hex.builtin.hex_editor.gray_out_zero": "Nullen ausgrauen",
|
||||
"hex.builtin.hex_editor.no_bytes": "Keine Bytes verfügbar",
|
||||
"hex.builtin.hex_editor.page": "Seite",
|
||||
"hex.builtin.hex_editor.region": "Region",
|
||||
"hex.builtin.hex_editor.selection": "Auswahl",
|
||||
"hex.builtin.hex_editor.selection.none": "Keine",
|
||||
"hex.builtin.hex_editor.uppercase_hex": "Hex Zeichen als Grossbuchstaben",
|
||||
"hex.builtin.hex_editor.visualizer": "Daten Anzeige",
|
||||
"hex.builtin.inspector.ascii": "ASCII Zeichen",
|
||||
"hex.builtin.inspector.binary": "Binär (8 bit)",
|
||||
"hex.builtin.inspector.bool": "bool",
|
||||
@ -423,31 +341,6 @@
|
||||
"hex.builtin.nodes.visualizer.image_rgba.header": "RGBA8 Bild",
|
||||
"hex.builtin.nodes.visualizer.layered_dist": "Schichtverteilung",
|
||||
"hex.builtin.nodes.visualizer.layered_dist.header": "Schichtverteilung",
|
||||
"hex.builtin.pattern_drawer.color": "Farbe",
|
||||
"hex.builtin.pattern_drawer.double_click": "Doppelklicken um mehr Einträge zu sehen",
|
||||
"hex.builtin.pattern_drawer.end": "Ende",
|
||||
"hex.builtin.pattern_drawer.export": "Pattern exportieren als...",
|
||||
"hex.builtin.pattern_drawer.favorites": "Favoriten",
|
||||
"hex.builtin.pattern_drawer.local": "Local",
|
||||
"hex.builtin.pattern_drawer.size": "Grösse",
|
||||
"hex.builtin.pattern_drawer.spec_name": "",
|
||||
"hex.builtin.pattern_drawer.start": "Start",
|
||||
"hex.builtin.pattern_drawer.tree_style.tree": "Baum",
|
||||
"hex.builtin.pattern_drawer.tree_style.auto_expanded": "Automatisch geöffneter Baum",
|
||||
"hex.builtin.pattern_drawer.tree_style.flattened": "Flach",
|
||||
"hex.builtin.pattern_drawer.type": "Typ",
|
||||
"hex.builtin.pattern_drawer.updating": "",
|
||||
"hex.builtin.pattern_drawer.value": "Wert",
|
||||
"hex.builtin.pattern_drawer.var_name": "Name",
|
||||
"hex.builtin.pattern_drawer.visualizer.unknown": "Unbekannter Visualizer",
|
||||
"hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "Falsche anzahl Parameter",
|
||||
"hex.builtin.pl_visualizer.3d.rotation": "Rotation",
|
||||
"hex.builtin.pl_visualizer.3d.scale": "Skala",
|
||||
"hex.builtin.pl_visualizer.coordinates.latitude": "Breitengrade",
|
||||
"hex.builtin.pl_visualizer.coordinates.longitude": "Längengrad",
|
||||
"hex.builtin.pl_visualizer.coordinates.query": "Adresse finden",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying": "Adresse abfragen...",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying_no_address": "Keine Adresse gefunden",
|
||||
"hex.builtin.popup.close_provider.desc": "Es wurden ungespeicherte Änderungen an einem oder mehreren Provider vorgenommen.\nBist du sicher, dass du diese schliessen willst?",
|
||||
"hex.builtin.popup.close_provider.title": "Provider schliessen?",
|
||||
"hex.builtin.popup.docs_question.title": "Dokumentationsabfrage",
|
||||
@ -701,76 +594,6 @@
|
||||
"hex.builtin.view.diff.provider_a": "",
|
||||
"hex.builtin.view.diff.provider_b": "",
|
||||
"hex.builtin.view.diff.removed": "",
|
||||
"hex.builtin.view.disassembler.16bit": "16-bit",
|
||||
"hex.builtin.view.disassembler.32bit": "32-bit",
|
||||
"hex.builtin.view.disassembler.64bit": "64-bit",
|
||||
"hex.builtin.view.disassembler.arch": "Architektur",
|
||||
"hex.builtin.view.disassembler.arm.arm": "ARM",
|
||||
"hex.builtin.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.builtin.view.disassembler.arm.default": "Standard",
|
||||
"hex.builtin.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.builtin.view.disassembler.base": "Basisadresse",
|
||||
"hex.builtin.view.disassembler.bpf.classic": "Classic",
|
||||
"hex.builtin.view.disassembler.bpf.extended": "Extended",
|
||||
"hex.builtin.view.disassembler.disassemble": "Disassemble",
|
||||
"hex.builtin.view.disassembler.disassembling": "Disassemblen...",
|
||||
"hex.builtin.view.disassembler.disassembly.address": "Adresse",
|
||||
"hex.builtin.view.disassembler.disassembly.bytes": "Byte",
|
||||
"hex.builtin.view.disassembler.disassembly.offset": "Offset",
|
||||
"hex.builtin.view.disassembler.disassembly.title": "Disassembly",
|
||||
"hex.builtin.view.disassembler.m680x.6301": "6301",
|
||||
"hex.builtin.view.disassembler.m680x.6309": "6309",
|
||||
"hex.builtin.view.disassembler.m680x.6800": "6800",
|
||||
"hex.builtin.view.disassembler.m680x.6801": "6801",
|
||||
"hex.builtin.view.disassembler.m680x.6805": "6805",
|
||||
"hex.builtin.view.disassembler.m680x.6808": "6808",
|
||||
"hex.builtin.view.disassembler.m680x.6809": "6809",
|
||||
"hex.builtin.view.disassembler.m680x.6811": "6811",
|
||||
"hex.builtin.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.builtin.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.builtin.view.disassembler.m68k.000": "000",
|
||||
"hex.builtin.view.disassembler.m68k.010": "010",
|
||||
"hex.builtin.view.disassembler.m68k.020": "020",
|
||||
"hex.builtin.view.disassembler.m68k.030": "030",
|
||||
"hex.builtin.view.disassembler.m68k.040": "040",
|
||||
"hex.builtin.view.disassembler.m68k.060": "060",
|
||||
"hex.builtin.view.disassembler.mips.micro": "Micro",
|
||||
"hex.builtin.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.builtin.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.builtin.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.builtin.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.builtin.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.builtin.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.builtin.view.disassembler.sh.sh2": "",
|
||||
"hex.builtin.view.disassembler.sh.sh2a": "",
|
||||
"hex.builtin.view.disassembler.sh.sh3": "",
|
||||
"hex.builtin.view.disassembler.sh.sh4": "",
|
||||
"hex.builtin.view.disassembler.sh.sh4a": "",
|
||||
"hex.builtin.view.disassembler.sh.fpu": "",
|
||||
"hex.builtin.view.disassembler.sh.dsp": "",
|
||||
"hex.builtin.view.disassembler.tricore.110": "",
|
||||
"hex.builtin.view.disassembler.tricore.120": "",
|
||||
"hex.builtin.view.disassembler.tricore.130": "",
|
||||
"hex.builtin.view.disassembler.tricore.131": "",
|
||||
"hex.builtin.view.disassembler.tricore.160": "",
|
||||
"hex.builtin.view.disassembler.tricore.161": "",
|
||||
"hex.builtin.view.disassembler.tricore.162": "",
|
||||
"hex.builtin.view.disassembler.name": "Disassembler",
|
||||
"hex.builtin.view.disassembler.position": "Position",
|
||||
"hex.builtin.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.builtin.view.disassembler.ppc.spe": "Signal Processing Engine",
|
||||
"hex.builtin.view.disassembler.region": "Code Region",
|
||||
"hex.builtin.view.disassembler.riscv.compressed": "Komprimiert",
|
||||
"hex.builtin.view.disassembler.settings.mode": "Modus",
|
||||
"hex.builtin.view.disassembler.sparc.v9": "Sparc V9",
|
||||
"hex.builtin.view.find.binary_pattern": "Binärpattern",
|
||||
"hex.builtin.view.find.binary_pattern.alignment": "",
|
||||
"hex.builtin.view.find.context.copy": "Wert kopieren",
|
||||
@ -981,19 +804,6 @@
|
||||
"hex.builtin.view.theme_manager.save_theme": "",
|
||||
"hex.builtin.view.theme_manager.styles": "",
|
||||
"hex.builtin.view.tools.name": "Werkzeuge",
|
||||
"hex.builtin.view.yara.error": "Yara Kompilerfehler: {0}",
|
||||
"hex.builtin.view.yara.header.matches": "Treffer",
|
||||
"hex.builtin.view.yara.header.rules": "Regeln",
|
||||
"hex.builtin.view.yara.match": "Regeln anwenden",
|
||||
"hex.builtin.view.yara.matches.identifier": "Kennung",
|
||||
"hex.builtin.view.yara.matches.variable": "Variable",
|
||||
"hex.builtin.view.yara.matching": "Anwenden...",
|
||||
"hex.builtin.view.yara.name": "Yara Regeln",
|
||||
"hex.builtin.view.yara.no_rules": "Keine Yara Regeln gefunden. Platziere sie in ImHex's 'yara' Ordner",
|
||||
"hex.builtin.view.yara.reload": "Neu laden",
|
||||
"hex.builtin.view.yara.reset": "Zurücksetzen",
|
||||
"hex.builtin.view.yara.rule_added": "Yara Regel hinzugefügt!",
|
||||
"hex.builtin.view.yara.whole_data": "Gesamte Daten Übereinstimmung!",
|
||||
"hex.builtin.visualizer.binary": "",
|
||||
"hex.builtin.visualizer.decimal.signed.16bit": "Dezimal Signed (16 bits)",
|
||||
"hex.builtin.visualizer.decimal.signed.32bit": "Dezimal Signed (32 bits)",
|
||||
|
@ -75,82 +75,6 @@
|
||||
"hex.builtin.command.cmd.result": "Run command '{0}'",
|
||||
"hex.builtin.command.web.desc": "Website lookup",
|
||||
"hex.builtin.command.web.result": "Navigate to '{0}'",
|
||||
"hex.builtin.common.address": "Address",
|
||||
"hex.builtin.common.allow": "Allow",
|
||||
"hex.builtin.common.begin": "Begin",
|
||||
"hex.builtin.common.big": "Big",
|
||||
"hex.builtin.common.big_endian": "Big Endian",
|
||||
"hex.builtin.common.browse": "Browse...",
|
||||
"hex.builtin.common.bytes": "Bytes",
|
||||
"hex.builtin.common.cancel": "Cancel",
|
||||
"hex.builtin.common.choose_file": "Choose file",
|
||||
"hex.builtin.common.close": "Close",
|
||||
"hex.builtin.common.comment": "Comment",
|
||||
"hex.builtin.common.count": "Count",
|
||||
"hex.builtin.common.decimal": "Decimal",
|
||||
"hex.builtin.common.deny": "Deny",
|
||||
"hex.builtin.common.dont_show_again": "Don't show again",
|
||||
"hex.builtin.common.edit": "Edit",
|
||||
"hex.builtin.common.encoding.ascii": "ASCII",
|
||||
"hex.builtin.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.builtin.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.builtin.common.encoding.utf8": "UTF-8",
|
||||
"hex.builtin.common.end": "End",
|
||||
"hex.builtin.common.endian": "Endian",
|
||||
"hex.builtin.common.warning": "Warning",
|
||||
"hex.builtin.common.error": "Error",
|
||||
"hex.builtin.common.fatal": "Fatal Error",
|
||||
"hex.builtin.common.file": "File",
|
||||
"hex.builtin.common.filter": "Filter",
|
||||
"hex.builtin.common.hexadecimal": "Hexadecimal",
|
||||
"hex.builtin.common.info": "Information",
|
||||
"hex.builtin.common.instruction": "Instruction",
|
||||
"hex.builtin.common.link": "Link",
|
||||
"hex.builtin.common.little": "Little",
|
||||
"hex.builtin.common.little_endian": "Little Endian",
|
||||
"hex.builtin.common.load": "Load",
|
||||
"hex.builtin.common.loading": "Loading...",
|
||||
"hex.builtin.common.match_selection": "Match Selection",
|
||||
"hex.builtin.common.name": "Name",
|
||||
"hex.builtin.common.no": "No",
|
||||
"hex.builtin.common.number_format": "Format",
|
||||
"hex.builtin.common.octal": "Octal",
|
||||
"hex.builtin.common.offset": "Offset",
|
||||
"hex.builtin.common.okay": "Okay",
|
||||
"hex.builtin.common.open": "Open",
|
||||
"hex.builtin.common.on": "On",
|
||||
"hex.builtin.common.off": "Off",
|
||||
"hex.builtin.common.path": "Path",
|
||||
"hex.builtin.common.percentage": "Percentage",
|
||||
"hex.builtin.common.processing": "Processing",
|
||||
"hex.builtin.common.project": "Project",
|
||||
"hex.builtin.common.question": "Question",
|
||||
"hex.builtin.common.range": "Range",
|
||||
"hex.builtin.common.range.entire_data": "Entire Data",
|
||||
"hex.builtin.common.range.selection": "Selection",
|
||||
"hex.builtin.common.region": "Region",
|
||||
"hex.builtin.common.remove": "Remove",
|
||||
"hex.builtin.common.reset": "Reset",
|
||||
"hex.builtin.common.set": "Set",
|
||||
"hex.builtin.common.settings": "Settings",
|
||||
"hex.builtin.common.size": "Size",
|
||||
"hex.builtin.common.type": "Type",
|
||||
"hex.builtin.common.type.f32": "float",
|
||||
"hex.builtin.common.type.f64": "double",
|
||||
"hex.builtin.common.type.i16": "int16_t",
|
||||
"hex.builtin.common.type.i24": "int24_t",
|
||||
"hex.builtin.common.type.i32": "int32_t",
|
||||
"hex.builtin.common.type.i48": "int48_t",
|
||||
"hex.builtin.common.type.i64": "int64_t",
|
||||
"hex.builtin.common.type.i8": "int8_t",
|
||||
"hex.builtin.common.type.u16": "uint16_t",
|
||||
"hex.builtin.common.type.u24": "uint24_t",
|
||||
"hex.builtin.common.type.u32": "uint32_t",
|
||||
"hex.builtin.common.type.u48": "uint48_t",
|
||||
"hex.builtin.common.type.u64": "uint64_t",
|
||||
"hex.builtin.common.type.u8": "uint8_t",
|
||||
"hex.builtin.common.value": "Value",
|
||||
"hex.builtin.common.yes": "Yes",
|
||||
"hex.builtin.hash.crc.iv": "Initial Value",
|
||||
"hex.builtin.hash.crc.poly": "Polynomial",
|
||||
"hex.builtin.hash.crc.refl_in": "Reflect In",
|
||||
@ -168,18 +92,6 @@
|
||||
"hex.builtin.hash.sha256": "SHA256",
|
||||
"hex.builtin.hash.sha384": "SHA384",
|
||||
"hex.builtin.hash.sha512": "SHA512",
|
||||
"hex.builtin.hex_editor.ascii_view": "Display ASCII column",
|
||||
"hex.builtin.hex_editor.custom_encoding_view": "Display advanced decoding column",
|
||||
"hex.builtin.hex_editor.human_readable_units_footer": "Convert sizes to human-readable units",
|
||||
"hex.builtin.hex_editor.data_size": "Data Size",
|
||||
"hex.builtin.hex_editor.gray_out_zero": "Grey out zeros",
|
||||
"hex.builtin.hex_editor.no_bytes": "No bytes available",
|
||||
"hex.builtin.hex_editor.page": "Page",
|
||||
"hex.builtin.hex_editor.region": "Region",
|
||||
"hex.builtin.hex_editor.selection": "Selection",
|
||||
"hex.builtin.hex_editor.selection.none": "None",
|
||||
"hex.builtin.hex_editor.uppercase_hex": "Upper case Hex characters",
|
||||
"hex.builtin.hex_editor.visualizer": "Data visualizer",
|
||||
"hex.builtin.inspector.ascii": "ASCII Character",
|
||||
"hex.builtin.inspector.binary": "Binary (8 bit)",
|
||||
"hex.builtin.inspector.bool": "bool",
|
||||
@ -453,37 +365,6 @@
|
||||
"hex.builtin.nodes.visualizer.image_rgba.header": "RGBA8 Image Visualizer",
|
||||
"hex.builtin.nodes.visualizer.layered_dist": "Layered Distribution",
|
||||
"hex.builtin.nodes.visualizer.layered_dist.header": "Layered Distribution",
|
||||
"hex.builtin.pattern_drawer.color": "Color",
|
||||
"hex.builtin.pattern_drawer.double_click": "Double-click to see more items",
|
||||
"hex.builtin.pattern_drawer.end": "End",
|
||||
"hex.builtin.pattern_drawer.export": "Export Patterns as...",
|
||||
"hex.builtin.pattern_drawer.favorites": "Favorites",
|
||||
"hex.builtin.pattern_drawer.local": "Local",
|
||||
"hex.builtin.pattern_drawer.size": "Size",
|
||||
"hex.builtin.pattern_drawer.spec_name": "Display specification names",
|
||||
"hex.builtin.pattern_drawer.start": "Start",
|
||||
"hex.builtin.pattern_drawer.tree_style.tree": "Tree",
|
||||
"hex.builtin.pattern_drawer.tree_style.auto_expanded": "Auto Expanded Tree",
|
||||
"hex.builtin.pattern_drawer.tree_style.flattened": "Flattened",
|
||||
"hex.builtin.pattern_drawer.type": "Type",
|
||||
"hex.builtin.pattern_drawer.updating": "Updating patterns...",
|
||||
"hex.builtin.pattern_drawer.value": "Value",
|
||||
"hex.builtin.pattern_drawer.var_name": "Name",
|
||||
"hex.builtin.pattern_drawer.visualizer.unknown": "Unknown visualizer",
|
||||
"hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "Invalid parameter count",
|
||||
"hex.builtin.pl_visualizer.3d.light_position": "Light Position",
|
||||
"hex.builtin.pl_visualizer.3d.ambient_brightness": "Ambient Brightness",
|
||||
"hex.builtin.pl_visualizer.3d.diffuse_brightness": "Diffuse Brightness",
|
||||
"hex.builtin.pl_visualizer.3d.specular_brightness": "Specular Brightness",
|
||||
"hex.builtin.pl_visualizer.3d.object_reflectiveness": "Object Reflectiveness",
|
||||
"hex.builtin.pl_visualizer.3d.light_color": "Light Color",
|
||||
"hex.builtin.pl_visualizer.3d.more_settings": "More Settings",
|
||||
"hex.builtin.pl_visualizer.3d.texture_file": "Texture File Path",
|
||||
"hex.builtin.pl_visualizer.coordinates.latitude": "Latitude",
|
||||
"hex.builtin.pl_visualizer.coordinates.longitude": "Longitude",
|
||||
"hex.builtin.pl_visualizer.coordinates.query": "Find address",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying": "Querying address...",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying_no_address": "No address found",
|
||||
"hex.builtin.popup.close_provider.desc": "There are unsaved changes made to one or more Providers\nthat haven't been saved to a Project yet.\n\nAre you sure you want to close them?",
|
||||
"hex.builtin.popup.close_provider.title": "Close Provider?",
|
||||
"hex.builtin.popup.docs_question.title": "Documentation query",
|
||||
@ -808,76 +689,6 @@
|
||||
"hex.builtin.view.diff.provider_a": "Provider A",
|
||||
"hex.builtin.view.diff.provider_b": "Provider B",
|
||||
"hex.builtin.view.diff.removed": "Removed",
|
||||
"hex.builtin.view.disassembler.16bit": "16-bit",
|
||||
"hex.builtin.view.disassembler.32bit": "32-bit",
|
||||
"hex.builtin.view.disassembler.64bit": "64-bit",
|
||||
"hex.builtin.view.disassembler.arch": "Architecture",
|
||||
"hex.builtin.view.disassembler.arm.arm": "ARM",
|
||||
"hex.builtin.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.builtin.view.disassembler.arm.default": "Default",
|
||||
"hex.builtin.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.builtin.view.disassembler.base": "Base address",
|
||||
"hex.builtin.view.disassembler.bpf.classic": "Classic",
|
||||
"hex.builtin.view.disassembler.bpf.extended": "Extended",
|
||||
"hex.builtin.view.disassembler.disassemble": "Disassemble",
|
||||
"hex.builtin.view.disassembler.disassembling": "Disassembling...",
|
||||
"hex.builtin.view.disassembler.disassembly.address": "Address",
|
||||
"hex.builtin.view.disassembler.disassembly.bytes": "Byte",
|
||||
"hex.builtin.view.disassembler.disassembly.offset": "Offset",
|
||||
"hex.builtin.view.disassembler.disassembly.title": "Disassembly",
|
||||
"hex.builtin.view.disassembler.m680x.6301": "6301",
|
||||
"hex.builtin.view.disassembler.m680x.6309": "6309",
|
||||
"hex.builtin.view.disassembler.m680x.6800": "6800",
|
||||
"hex.builtin.view.disassembler.m680x.6801": "6801",
|
||||
"hex.builtin.view.disassembler.m680x.6805": "6805",
|
||||
"hex.builtin.view.disassembler.m680x.6808": "6808",
|
||||
"hex.builtin.view.disassembler.m680x.6809": "6809",
|
||||
"hex.builtin.view.disassembler.m680x.6811": "6811",
|
||||
"hex.builtin.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.builtin.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.builtin.view.disassembler.m68k.000": "000",
|
||||
"hex.builtin.view.disassembler.m68k.010": "010",
|
||||
"hex.builtin.view.disassembler.m68k.020": "020",
|
||||
"hex.builtin.view.disassembler.m68k.030": "030",
|
||||
"hex.builtin.view.disassembler.m68k.040": "040",
|
||||
"hex.builtin.view.disassembler.m68k.060": "060",
|
||||
"hex.builtin.view.disassembler.mips.micro": "Micro",
|
||||
"hex.builtin.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.builtin.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.builtin.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.builtin.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.builtin.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.builtin.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.builtin.view.disassembler.sh.sh2": "SH2",
|
||||
"hex.builtin.view.disassembler.sh.sh2a": "SH2A",
|
||||
"hex.builtin.view.disassembler.sh.sh3": "SH3",
|
||||
"hex.builtin.view.disassembler.sh.sh4": "SH4",
|
||||
"hex.builtin.view.disassembler.sh.sh4a": "SH4A",
|
||||
"hex.builtin.view.disassembler.sh.fpu": "FPU",
|
||||
"hex.builtin.view.disassembler.sh.dsp": "DSP",
|
||||
"hex.builtin.view.disassembler.tricore.110": "110",
|
||||
"hex.builtin.view.disassembler.tricore.120": "120",
|
||||
"hex.builtin.view.disassembler.tricore.130": "130",
|
||||
"hex.builtin.view.disassembler.tricore.131": "131",
|
||||
"hex.builtin.view.disassembler.tricore.160": "160",
|
||||
"hex.builtin.view.disassembler.tricore.161": "161",
|
||||
"hex.builtin.view.disassembler.tricore.162": "162",
|
||||
"hex.builtin.view.disassembler.name": "Disassembler",
|
||||
"hex.builtin.view.disassembler.position": "Position",
|
||||
"hex.builtin.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.builtin.view.disassembler.ppc.spe": "Signal Processing Engine",
|
||||
"hex.builtin.view.disassembler.region": "Code region",
|
||||
"hex.builtin.view.disassembler.riscv.compressed": "Compressed",
|
||||
"hex.builtin.view.disassembler.settings.mode": "Mode",
|
||||
"hex.builtin.view.disassembler.sparc.v9": "Sparc V9",
|
||||
"hex.builtin.view.find.binary_pattern": "Binary Pattern",
|
||||
"hex.builtin.view.find.binary_pattern.alignment": "Alignment",
|
||||
"hex.builtin.view.find.context.copy": "Copy Value",
|
||||
@ -1123,19 +934,6 @@
|
||||
"hex.builtin.view.tutorials.name": "Interactive Tutorials",
|
||||
"hex.builtin.view.tutorials.description": "Description",
|
||||
"hex.builtin.view.tutorials.start": "Start Tutorial",
|
||||
"hex.builtin.view.yara.error": "Yara Compiler error: {0}",
|
||||
"hex.builtin.view.yara.header.matches": "Matches",
|
||||
"hex.builtin.view.yara.header.rules": "Rules",
|
||||
"hex.builtin.view.yara.match": "Match Rules",
|
||||
"hex.builtin.view.yara.matches.identifier": "Identifier",
|
||||
"hex.builtin.view.yara.matches.variable": "Variable",
|
||||
"hex.builtin.view.yara.matching": "Matching...",
|
||||
"hex.builtin.view.yara.name": "Yara Rules",
|
||||
"hex.builtin.view.yara.no_rules": "No YARA rules found. Put them in ImHex's 'yara' folder",
|
||||
"hex.builtin.view.yara.reload": "Reload",
|
||||
"hex.builtin.view.yara.reset": "Reset",
|
||||
"hex.builtin.view.yara.rule_added": "Yara rule added!",
|
||||
"hex.builtin.view.yara.whole_data": "Whole file matches!",
|
||||
"hex.builtin.visualizer.binary": "Binary",
|
||||
"hex.builtin.visualizer.decimal.signed.16bit": "Decimal Signed (16 bits)",
|
||||
"hex.builtin.visualizer.decimal.signed.32bit": "Decimal Signed (32 bits)",
|
||||
|
@ -63,76 +63,6 @@
|
||||
"hex.builtin.command.cmd.result": "Ejecutar comando '{0}'",
|
||||
"hex.builtin.command.web.desc": "Búsqueda (de) web",
|
||||
"hex.builtin.command.web.result": "Navegar a '{0}'",
|
||||
"hex.builtin.common.address": "Dirección",
|
||||
"hex.builtin.common.allow": "",
|
||||
"hex.builtin.common.begin": "Inicio",
|
||||
"hex.builtin.common.big": "Big",
|
||||
"hex.builtin.common.big_endian": "Big Endian",
|
||||
"hex.builtin.common.browse": "Navegar...",
|
||||
"hex.builtin.common.bytes": "Bytes",
|
||||
"hex.builtin.common.cancel": "Cancelar",
|
||||
"hex.builtin.common.choose_file": "Escoger archivo",
|
||||
"hex.builtin.common.close": "Cerrar",
|
||||
"hex.builtin.common.comment": "Comentario",
|
||||
"hex.builtin.common.count": "Cantidad",
|
||||
"hex.builtin.common.decimal": "Decimal",
|
||||
"hex.builtin.common.deny": "",
|
||||
"hex.builtin.common.dont_show_again": "No mostrar de nuevo",
|
||||
"hex.builtin.common.encoding.ascii": "ASCII",
|
||||
"hex.builtin.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.builtin.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.builtin.common.encoding.utf8": "UTF-8",
|
||||
"hex.builtin.common.end": "Fin",
|
||||
"hex.builtin.common.endian": "Endian",
|
||||
"hex.builtin.common.warning": "",
|
||||
"hex.builtin.common.error": "Error",
|
||||
"hex.builtin.common.fatal": "Error Crítico",
|
||||
"hex.builtin.common.file": "Archivo",
|
||||
"hex.builtin.common.filter": "Filtro",
|
||||
"hex.builtin.common.hexadecimal": "Hexadecimal",
|
||||
"hex.builtin.common.info": "Información",
|
||||
"hex.builtin.common.instruction": "Instrucción",
|
||||
"hex.builtin.common.link": "Enlace",
|
||||
"hex.builtin.common.little": "Little",
|
||||
"hex.builtin.common.little_endian": "Little Endian",
|
||||
"hex.builtin.common.load": "Cargar",
|
||||
"hex.builtin.common.match_selection": "Match Selection",
|
||||
"hex.builtin.common.name": "Nombre",
|
||||
"hex.builtin.common.no": "No",
|
||||
"hex.builtin.common.number_format": "Formato",
|
||||
"hex.builtin.common.octal": "Octal",
|
||||
"hex.builtin.common.offset": "Offset",
|
||||
"hex.builtin.common.okay": "Okey",
|
||||
"hex.builtin.common.open": "Abrir",
|
||||
"hex.builtin.common.percentage": "Porcentaje",
|
||||
"hex.builtin.common.processing": "Procesado",
|
||||
"hex.builtin.common.project": "",
|
||||
"hex.builtin.common.question": "Pregunta",
|
||||
"hex.builtin.common.range": "Rango",
|
||||
"hex.builtin.common.range.entire_data": "Todos los Datos",
|
||||
"hex.builtin.common.range.selection": "Selección",
|
||||
"hex.builtin.common.region": "Región",
|
||||
"hex.builtin.common.reset": "",
|
||||
"hex.builtin.common.set": "Establecer",
|
||||
"hex.builtin.common.settings": "Ajustes",
|
||||
"hex.builtin.common.size": "Tamaño",
|
||||
"hex.builtin.common.type": "Tipo",
|
||||
"hex.builtin.common.type.f32": "float",
|
||||
"hex.builtin.common.type.f64": "double",
|
||||
"hex.builtin.common.type.i16": "int16_t",
|
||||
"hex.builtin.common.type.i24": "int24_t",
|
||||
"hex.builtin.common.type.i32": "int32_t",
|
||||
"hex.builtin.common.type.i48": "int48_t",
|
||||
"hex.builtin.common.type.i64": "int64_t",
|
||||
"hex.builtin.common.type.i8": "int8_t",
|
||||
"hex.builtin.common.type.u16": "uint16_t",
|
||||
"hex.builtin.common.type.u24": "uint24_t",
|
||||
"hex.builtin.common.type.u32": "uint32_t",
|
||||
"hex.builtin.common.type.u48": "uint48_t",
|
||||
"hex.builtin.common.type.u64": "uint64_t",
|
||||
"hex.builtin.common.type.u8": "uint8_t",
|
||||
"hex.builtin.common.value": "Valor",
|
||||
"hex.builtin.common.yes": "Sí",
|
||||
"hex.builtin.hash.crc.iv": "Valor Inicial",
|
||||
"hex.builtin.hash.crc.poly": "Polinomio",
|
||||
"hex.builtin.hash.crc.refl_in": "Reflect In",
|
||||
@ -150,18 +80,6 @@
|
||||
"hex.builtin.hash.sha256": "SHA256",
|
||||
"hex.builtin.hash.sha384": "SHA384",
|
||||
"hex.builtin.hash.sha512": "SHA512",
|
||||
"hex.builtin.hex_editor.ascii_view": "Mostrar columna ASCII",
|
||||
"hex.builtin.hex_editor.custom_encoding_view": "Mostrar columna de decodificación avanzada",
|
||||
"hex.builtin.hex_editor.human_readable_units_footer": "",
|
||||
"hex.builtin.hex_editor.data_size": "Tamaño de Datos",
|
||||
"hex.builtin.hex_editor.gray_out_zero": "Mostrar ceros en gris",
|
||||
"hex.builtin.hex_editor.no_bytes": "No hay bytes disponibles",
|
||||
"hex.builtin.hex_editor.page": "Página",
|
||||
"hex.builtin.hex_editor.region": "Región",
|
||||
"hex.builtin.hex_editor.selection": "Selección",
|
||||
"hex.builtin.hex_editor.selection.none": "Ninguno",
|
||||
"hex.builtin.hex_editor.uppercase_hex": "Caracteres hexadecimales mayúscula",
|
||||
"hex.builtin.hex_editor.visualizer": "Visualizador de datos",
|
||||
"hex.builtin.inspector.ascii": "Carácter ASCII",
|
||||
"hex.builtin.inspector.binary": "Binario (8 bit)",
|
||||
"hex.builtin.inspector.bool": "bool",
|
||||
@ -422,31 +340,6 @@
|
||||
"hex.builtin.nodes.visualizer.image_rgba.header": "Visualizador de Imágenes RGBA8",
|
||||
"hex.builtin.nodes.visualizer.layered_dist": "Distribución en Capas",
|
||||
"hex.builtin.nodes.visualizer.layered_dist.header": "Distribución en Capas",
|
||||
"hex.builtin.pattern_drawer.color": "Color",
|
||||
"hex.builtin.pattern_drawer.double_click": "Haga doble clic para ver más elementos",
|
||||
"hex.builtin.pattern_drawer.end": "",
|
||||
"hex.builtin.pattern_drawer.export": "",
|
||||
"hex.builtin.pattern_drawer.favorites": "",
|
||||
"hex.builtin.pattern_drawer.local": "",
|
||||
"hex.builtin.pattern_drawer.size": "Tamaño",
|
||||
"hex.builtin.pattern_drawer.spec_name": "",
|
||||
"hex.builtin.pattern_drawer.start": "",
|
||||
"hex.builtin.pattern_drawer.tree_style.tree": "Árbol",
|
||||
"hex.builtin.pattern_drawer.tree_style.auto_expanded": "Árbol Automáticamente Expandido",
|
||||
"hex.builtin.pattern_drawer.tree_style.flattened": "Allanado",
|
||||
"hex.builtin.pattern_drawer.type": "Tipo",
|
||||
"hex.builtin.pattern_drawer.updating": "",
|
||||
"hex.builtin.pattern_drawer.value": "Valor",
|
||||
"hex.builtin.pattern_drawer.var_name": "Nombre",
|
||||
"hex.builtin.pattern_drawer.visualizer.unknown": "Visualizador Desconocido",
|
||||
"hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "Cantidad de parámetros inválida",
|
||||
"hex.builtin.pl_visualizer.3d.rotation": "Rotación",
|
||||
"hex.builtin.pl_visualizer.3d.scale": "Escala",
|
||||
"hex.builtin.pl_visualizer.coordinates.latitude": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.longitude": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.query": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying_no_address": "",
|
||||
"hex.builtin.popup.close_provider.desc": "",
|
||||
"hex.builtin.popup.close_provider.title": "¿Cerrar Proveedor?",
|
||||
"hex.builtin.popup.docs_question.title": "Búsqueda de Documentación",
|
||||
@ -700,76 +593,6 @@
|
||||
"hex.builtin.view.diff.provider_a": "Proveedor A",
|
||||
"hex.builtin.view.diff.provider_b": "Proveedor B",
|
||||
"hex.builtin.view.diff.removed": "Eliminados",
|
||||
"hex.builtin.view.disassembler.16bit": "16-bit",
|
||||
"hex.builtin.view.disassembler.32bit": "32-bit",
|
||||
"hex.builtin.view.disassembler.64bit": "64-bit",
|
||||
"hex.builtin.view.disassembler.arch": "Arquitectura",
|
||||
"hex.builtin.view.disassembler.arm.arm": "",
|
||||
"hex.builtin.view.disassembler.arm.armv8": "",
|
||||
"hex.builtin.view.disassembler.arm.cortex_m": "",
|
||||
"hex.builtin.view.disassembler.arm.default": "Estándar",
|
||||
"hex.builtin.view.disassembler.arm.thumb": "",
|
||||
"hex.builtin.view.disassembler.base": "Dirección base",
|
||||
"hex.builtin.view.disassembler.bpf.classic": "Clásica",
|
||||
"hex.builtin.view.disassembler.bpf.extended": "Extendida",
|
||||
"hex.builtin.view.disassembler.disassemble": "Desensamblar",
|
||||
"hex.builtin.view.disassembler.disassembling": "Desensamblando...",
|
||||
"hex.builtin.view.disassembler.disassembly.address": "Dirección",
|
||||
"hex.builtin.view.disassembler.disassembly.bytes": "Byte",
|
||||
"hex.builtin.view.disassembler.disassembly.offset": "Offset",
|
||||
"hex.builtin.view.disassembler.disassembly.title": "Desensamblado",
|
||||
"hex.builtin.view.disassembler.m680x.6301": "6301",
|
||||
"hex.builtin.view.disassembler.m680x.6309": "6309",
|
||||
"hex.builtin.view.disassembler.m680x.6800": "6800",
|
||||
"hex.builtin.view.disassembler.m680x.6801": "6801",
|
||||
"hex.builtin.view.disassembler.m680x.6805": "6805",
|
||||
"hex.builtin.view.disassembler.m680x.6808": "6808",
|
||||
"hex.builtin.view.disassembler.m680x.6809": "6809",
|
||||
"hex.builtin.view.disassembler.m680x.6811": "6811",
|
||||
"hex.builtin.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.builtin.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.builtin.view.disassembler.m68k.000": "000",
|
||||
"hex.builtin.view.disassembler.m68k.010": "010",
|
||||
"hex.builtin.view.disassembler.m68k.020": "020",
|
||||
"hex.builtin.view.disassembler.m68k.030": "030",
|
||||
"hex.builtin.view.disassembler.m68k.040": "040",
|
||||
"hex.builtin.view.disassembler.m68k.060": "060",
|
||||
"hex.builtin.view.disassembler.mips.micro": "Micro",
|
||||
"hex.builtin.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.builtin.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.builtin.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.builtin.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.builtin.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.builtin.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.builtin.view.disassembler.sh.sh2": "",
|
||||
"hex.builtin.view.disassembler.sh.sh2a": "",
|
||||
"hex.builtin.view.disassembler.sh.sh3": "",
|
||||
"hex.builtin.view.disassembler.sh.sh4": "",
|
||||
"hex.builtin.view.disassembler.sh.sh4a": "",
|
||||
"hex.builtin.view.disassembler.sh.fpu": "",
|
||||
"hex.builtin.view.disassembler.sh.dsp": "",
|
||||
"hex.builtin.view.disassembler.tricore.110": "",
|
||||
"hex.builtin.view.disassembler.tricore.120": "",
|
||||
"hex.builtin.view.disassembler.tricore.130": "",
|
||||
"hex.builtin.view.disassembler.tricore.131": "",
|
||||
"hex.builtin.view.disassembler.tricore.160": "",
|
||||
"hex.builtin.view.disassembler.tricore.161": "",
|
||||
"hex.builtin.view.disassembler.tricore.162": "",
|
||||
"hex.builtin.view.disassembler.name": "Desensamblador",
|
||||
"hex.builtin.view.disassembler.position": "Posición",
|
||||
"hex.builtin.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.builtin.view.disassembler.ppc.spe": "Signal Processing Engine",
|
||||
"hex.builtin.view.disassembler.region": "Región de código",
|
||||
"hex.builtin.view.disassembler.riscv.compressed": "Comprimido",
|
||||
"hex.builtin.view.disassembler.settings.mode": "Modo",
|
||||
"hex.builtin.view.disassembler.sparc.v9": "Sparc V9",
|
||||
"hex.builtin.view.find.binary_pattern": "Patrón Binario",
|
||||
"hex.builtin.view.find.binary_pattern.alignment": "Alineado",
|
||||
"hex.builtin.view.find.context.copy": "Copiar Valor",
|
||||
@ -979,19 +802,6 @@
|
||||
"hex.builtin.view.theme_manager.save_theme": "Guardar Tema",
|
||||
"hex.builtin.view.theme_manager.styles": "Estilos",
|
||||
"hex.builtin.view.tools.name": "Herramientas",
|
||||
"hex.builtin.view.yara.error": "Error del compilador de Yara: ",
|
||||
"hex.builtin.view.yara.header.matches": "Coincidenciasç",
|
||||
"hex.builtin.view.yara.header.rules": "Rules",
|
||||
"hex.builtin.view.yara.match": "Reglas de Coincidencia",
|
||||
"hex.builtin.view.yara.matches.identifier": "Identificador",
|
||||
"hex.builtin.view.yara.matches.variable": "",
|
||||
"hex.builtin.view.yara.matching": "Analizando coincidencias...",
|
||||
"hex.builtin.view.yara.name": "Yara Rules",
|
||||
"hex.builtin.view.yara.no_rules": "No se encontraron Yara Rules. Estas han de encontrarse en la carpeta 'yara' de ImHex.",
|
||||
"hex.builtin.view.yara.reload": "Recargar",
|
||||
"hex.builtin.view.yara.reset": "Restablecer",
|
||||
"hex.builtin.view.yara.rule_added": "¡La Yara Rule fue añadida con éxito!",
|
||||
"hex.builtin.view.yara.whole_data": "¡El archivo completo coincide!",
|
||||
"hex.builtin.visualizer.binary": "Binario",
|
||||
"hex.builtin.visualizer.decimal.signed.16bit": "Decimal con Signo (16 bits)",
|
||||
"hex.builtin.visualizer.decimal.signed.32bit": "Decimal con Signo (32 bits)",
|
||||
|
@ -63,76 +63,6 @@
|
||||
"hex.builtin.command.cmd.result": "Esegui comando '{0}'",
|
||||
"hex.builtin.command.web.desc": "Consulta il Web",
|
||||
"hex.builtin.command.web.result": "Naviga a '{0}'",
|
||||
"hex.builtin.common.address": "Indirizzo",
|
||||
"hex.builtin.common.allow": "",
|
||||
"hex.builtin.common.begin": "",
|
||||
"hex.builtin.common.big": "Big",
|
||||
"hex.builtin.common.big_endian": "Big Endian",
|
||||
"hex.builtin.common.browse": "Esplora...",
|
||||
"hex.builtin.common.bytes": "",
|
||||
"hex.builtin.common.cancel": "Cancella",
|
||||
"hex.builtin.common.choose_file": "Scegli file",
|
||||
"hex.builtin.common.close": "Chiudi",
|
||||
"hex.builtin.common.comment": "",
|
||||
"hex.builtin.common.count": "",
|
||||
"hex.builtin.common.decimal": "Decimale",
|
||||
"hex.builtin.common.deny": "",
|
||||
"hex.builtin.common.dont_show_again": "Non mostrare di nuovo",
|
||||
"hex.builtin.common.encoding.ascii": "ASCII",
|
||||
"hex.builtin.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.builtin.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.builtin.common.encoding.utf8": "UTF-8",
|
||||
"hex.builtin.common.end": "",
|
||||
"hex.builtin.common.endian": "Endian",
|
||||
"hex.builtin.common.warning": "",
|
||||
"hex.builtin.common.error": "Errore",
|
||||
"hex.builtin.common.fatal": "Errore Fatale",
|
||||
"hex.builtin.common.file": "File",
|
||||
"hex.builtin.common.filter": "",
|
||||
"hex.builtin.common.hexadecimal": "Esadecimale",
|
||||
"hex.builtin.common.info": "Informazioni",
|
||||
"hex.builtin.common.instruction": "",
|
||||
"hex.builtin.common.link": "Link",
|
||||
"hex.builtin.common.little": "Little",
|
||||
"hex.builtin.common.little_endian": "Little Endian",
|
||||
"hex.builtin.common.load": "Carica",
|
||||
"hex.builtin.common.match_selection": "Seleziona abbinamento",
|
||||
"hex.builtin.common.name": "",
|
||||
"hex.builtin.common.no": "No",
|
||||
"hex.builtin.common.number_format": "",
|
||||
"hex.builtin.common.octal": "Ottale",
|
||||
"hex.builtin.common.offset": "Offset",
|
||||
"hex.builtin.common.okay": "Okay",
|
||||
"hex.builtin.common.open": "Apri",
|
||||
"hex.builtin.common.percentage": "",
|
||||
"hex.builtin.common.processing": "",
|
||||
"hex.builtin.common.project": "",
|
||||
"hex.builtin.common.question": "",
|
||||
"hex.builtin.common.range": "",
|
||||
"hex.builtin.common.range.entire_data": "",
|
||||
"hex.builtin.common.range.selection": "",
|
||||
"hex.builtin.common.region": "Regione",
|
||||
"hex.builtin.common.reset": "",
|
||||
"hex.builtin.common.set": "Imposta",
|
||||
"hex.builtin.common.settings": "Impostazioni",
|
||||
"hex.builtin.common.size": "Dimensione",
|
||||
"hex.builtin.common.type": "",
|
||||
"hex.builtin.common.type.f32": "float",
|
||||
"hex.builtin.common.type.f64": "double",
|
||||
"hex.builtin.common.type.i16": "int16_t",
|
||||
"hex.builtin.common.type.i24": "int24_t",
|
||||
"hex.builtin.common.type.i32": "int32_t",
|
||||
"hex.builtin.common.type.i48": "int48_t",
|
||||
"hex.builtin.common.type.i64": "int64_t",
|
||||
"hex.builtin.common.type.i8": "int8_t",
|
||||
"hex.builtin.common.type.u16": "uint16_t",
|
||||
"hex.builtin.common.type.u24": "uint24_t",
|
||||
"hex.builtin.common.type.u32": "uint32_t",
|
||||
"hex.builtin.common.type.u48": "uint48_t",
|
||||
"hex.builtin.common.type.u64": "uint64_t",
|
||||
"hex.builtin.common.type.u8": "uint8_t",
|
||||
"hex.builtin.common.value": "",
|
||||
"hex.builtin.common.yes": "Sì",
|
||||
"hex.builtin.hash.crc.iv": "Valore Iniziale",
|
||||
"hex.builtin.hash.crc.poly": "Polinomio",
|
||||
"hex.builtin.hash.crc.refl_in": "",
|
||||
@ -150,18 +80,6 @@
|
||||
"hex.builtin.hash.sha256": "SHA256",
|
||||
"hex.builtin.hash.sha384": "SHA384",
|
||||
"hex.builtin.hash.sha512": "SHA512",
|
||||
"hex.builtin.hex_editor.ascii_view": "Mostra la colonna ASCII",
|
||||
"hex.builtin.hex_editor.custom_encoding_view": "Mostra la colonna di decodifica avanzata",
|
||||
"hex.builtin.hex_editor.human_readable_units_footer": "",
|
||||
"hex.builtin.hex_editor.data_size": "",
|
||||
"hex.builtin.hex_editor.gray_out_zero": "Taglia fuori gli zeri",
|
||||
"hex.builtin.hex_editor.no_bytes": "",
|
||||
"hex.builtin.hex_editor.page": "",
|
||||
"hex.builtin.hex_editor.region": "",
|
||||
"hex.builtin.hex_editor.selection": "",
|
||||
"hex.builtin.hex_editor.selection.none": "",
|
||||
"hex.builtin.hex_editor.uppercase_hex": "Caratteri esadecimali maiuscoli",
|
||||
"hex.builtin.hex_editor.visualizer": "",
|
||||
"hex.builtin.inspector.ascii": "ASCII Character",
|
||||
"hex.builtin.inspector.binary": "Binary (8 bit)",
|
||||
"hex.builtin.inspector.bool": "bool",
|
||||
@ -422,31 +340,6 @@
|
||||
"hex.builtin.nodes.visualizer.image_rgba.header": "",
|
||||
"hex.builtin.nodes.visualizer.layered_dist": "",
|
||||
"hex.builtin.nodes.visualizer.layered_dist.header": "",
|
||||
"hex.builtin.pattern_drawer.color": "",
|
||||
"hex.builtin.pattern_drawer.double_click": "",
|
||||
"hex.builtin.pattern_drawer.end": "",
|
||||
"hex.builtin.pattern_drawer.export": "",
|
||||
"hex.builtin.pattern_drawer.favorites": "",
|
||||
"hex.builtin.pattern_drawer.local": "",
|
||||
"hex.builtin.pattern_drawer.size": "",
|
||||
"hex.builtin.pattern_drawer.spec_name": "",
|
||||
"hex.builtin.pattern_drawer.start": "",
|
||||
"hex.builtin.pattern_drawer.tree_style.tree": "",
|
||||
"hex.builtin.pattern_drawer.tree_style.auto_expanded": "",
|
||||
"hex.builtin.pattern_drawer.tree_style.flattened": "",
|
||||
"hex.builtin.pattern_drawer.type": "",
|
||||
"hex.builtin.pattern_drawer.updating": "",
|
||||
"hex.builtin.pattern_drawer.value": "",
|
||||
"hex.builtin.pattern_drawer.var_name": "",
|
||||
"hex.builtin.pattern_drawer.visualizer.unknown": "",
|
||||
"hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "",
|
||||
"hex.builtin.pl_visualizer.3d.rotation": "",
|
||||
"hex.builtin.pl_visualizer.3d.scale": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.latitude": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.longitude": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.query": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying_no_address": "",
|
||||
"hex.builtin.popup.close_provider.desc": "",
|
||||
"hex.builtin.popup.close_provider.title": "",
|
||||
"hex.builtin.popup.docs_question.title": "",
|
||||
@ -700,76 +593,6 @@
|
||||
"hex.builtin.view.diff.provider_a": "",
|
||||
"hex.builtin.view.diff.provider_b": "",
|
||||
"hex.builtin.view.diff.removed": "",
|
||||
"hex.builtin.view.disassembler.16bit": "16-bit",
|
||||
"hex.builtin.view.disassembler.32bit": "32-bit",
|
||||
"hex.builtin.view.disassembler.64bit": "64-bit",
|
||||
"hex.builtin.view.disassembler.arch": "Architettura",
|
||||
"hex.builtin.view.disassembler.arm.arm": "ARM",
|
||||
"hex.builtin.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.builtin.view.disassembler.arm.default": "Default",
|
||||
"hex.builtin.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.builtin.view.disassembler.base": "Indirizzo di base",
|
||||
"hex.builtin.view.disassembler.bpf.classic": "Classico",
|
||||
"hex.builtin.view.disassembler.bpf.extended": "Esteso",
|
||||
"hex.builtin.view.disassembler.disassemble": "Disassembla",
|
||||
"hex.builtin.view.disassembler.disassembling": "Disassemblaggio...",
|
||||
"hex.builtin.view.disassembler.disassembly.address": "Indirizzo",
|
||||
"hex.builtin.view.disassembler.disassembly.bytes": "Byte",
|
||||
"hex.builtin.view.disassembler.disassembly.offset": "Offset",
|
||||
"hex.builtin.view.disassembler.disassembly.title": "Disassembla",
|
||||
"hex.builtin.view.disassembler.m680x.6301": "6301",
|
||||
"hex.builtin.view.disassembler.m680x.6309": "6309",
|
||||
"hex.builtin.view.disassembler.m680x.6800": "6800",
|
||||
"hex.builtin.view.disassembler.m680x.6801": "6801",
|
||||
"hex.builtin.view.disassembler.m680x.6805": "6805",
|
||||
"hex.builtin.view.disassembler.m680x.6808": "6808",
|
||||
"hex.builtin.view.disassembler.m680x.6809": "6809",
|
||||
"hex.builtin.view.disassembler.m680x.6811": "6811",
|
||||
"hex.builtin.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.builtin.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.builtin.view.disassembler.m68k.000": "000",
|
||||
"hex.builtin.view.disassembler.m68k.010": "010",
|
||||
"hex.builtin.view.disassembler.m68k.020": "020",
|
||||
"hex.builtin.view.disassembler.m68k.030": "030",
|
||||
"hex.builtin.view.disassembler.m68k.040": "040",
|
||||
"hex.builtin.view.disassembler.m68k.060": "060",
|
||||
"hex.builtin.view.disassembler.mips.micro": "Micro",
|
||||
"hex.builtin.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.builtin.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.builtin.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.builtin.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.builtin.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.builtin.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.builtin.view.disassembler.sh.sh2": "",
|
||||
"hex.builtin.view.disassembler.sh.sh2a": "",
|
||||
"hex.builtin.view.disassembler.sh.sh3": "",
|
||||
"hex.builtin.view.disassembler.sh.sh4": "",
|
||||
"hex.builtin.view.disassembler.sh.sh4a": "",
|
||||
"hex.builtin.view.disassembler.sh.fpu": "",
|
||||
"hex.builtin.view.disassembler.sh.dsp": "",
|
||||
"hex.builtin.view.disassembler.tricore.110": "",
|
||||
"hex.builtin.view.disassembler.tricore.120": "",
|
||||
"hex.builtin.view.disassembler.tricore.130": "",
|
||||
"hex.builtin.view.disassembler.tricore.131": "",
|
||||
"hex.builtin.view.disassembler.tricore.160": "",
|
||||
"hex.builtin.view.disassembler.tricore.161": "",
|
||||
"hex.builtin.view.disassembler.tricore.162": "",
|
||||
"hex.builtin.view.disassembler.name": "Disassembla",
|
||||
"hex.builtin.view.disassembler.position": "Posiziona",
|
||||
"hex.builtin.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.builtin.view.disassembler.ppc.spe": "Signal Processing Engine",
|
||||
"hex.builtin.view.disassembler.region": "Regione del Codice",
|
||||
"hex.builtin.view.disassembler.riscv.compressed": "Compresso",
|
||||
"hex.builtin.view.disassembler.settings.mode": "",
|
||||
"hex.builtin.view.disassembler.sparc.v9": "Sparc V9",
|
||||
"hex.builtin.view.find.binary_pattern": "",
|
||||
"hex.builtin.view.find.binary_pattern.alignment": "",
|
||||
"hex.builtin.view.find.context.copy": "",
|
||||
@ -979,19 +802,6 @@
|
||||
"hex.builtin.view.theme_manager.save_theme": "",
|
||||
"hex.builtin.view.theme_manager.styles": "",
|
||||
"hex.builtin.view.tools.name": "Strumenti",
|
||||
"hex.builtin.view.yara.error": "Errore compilazione Yara: {0}",
|
||||
"hex.builtin.view.yara.header.matches": "Abbinamenti",
|
||||
"hex.builtin.view.yara.header.rules": "Regola",
|
||||
"hex.builtin.view.yara.match": "Abbina Regole",
|
||||
"hex.builtin.view.yara.matches.identifier": "Identificatore",
|
||||
"hex.builtin.view.yara.matches.variable": "Variabile",
|
||||
"hex.builtin.view.yara.matching": "Abbinamento...",
|
||||
"hex.builtin.view.yara.name": "Regole di Yara",
|
||||
"hex.builtin.view.yara.no_rules": "Nessuna regola di YARA. Aggiungile in nella cartella 'yara' di 'ImHex'",
|
||||
"hex.builtin.view.yara.reload": "Ricarica",
|
||||
"hex.builtin.view.yara.reset": "",
|
||||
"hex.builtin.view.yara.rule_added": "Regola di Yara aggiunta!",
|
||||
"hex.builtin.view.yara.whole_data": "Tutti i file combaciano!",
|
||||
"hex.builtin.visualizer.binary": "",
|
||||
"hex.builtin.visualizer.decimal.signed.16bit": "",
|
||||
"hex.builtin.visualizer.decimal.signed.32bit": "",
|
||||
|
@ -63,76 +63,6 @@
|
||||
"hex.builtin.command.cmd.result": "コマンド '{0}' を実行",
|
||||
"hex.builtin.command.web.desc": "ウェブサイト参照",
|
||||
"hex.builtin.command.web.result": "'{0}' を開く",
|
||||
"hex.builtin.common.address": "アドレス",
|
||||
"hex.builtin.common.allow": "",
|
||||
"hex.builtin.common.begin": "",
|
||||
"hex.builtin.common.big": "ビッグ",
|
||||
"hex.builtin.common.big_endian": "ビッグエンディアン",
|
||||
"hex.builtin.common.browse": "ファイルを参照…",
|
||||
"hex.builtin.common.bytes": "",
|
||||
"hex.builtin.common.cancel": "キャンセル",
|
||||
"hex.builtin.common.choose_file": "ファイルを選択",
|
||||
"hex.builtin.common.close": "閉じる",
|
||||
"hex.builtin.common.comment": "コメント",
|
||||
"hex.builtin.common.count": "",
|
||||
"hex.builtin.common.decimal": "10進数",
|
||||
"hex.builtin.common.deny": "",
|
||||
"hex.builtin.common.dont_show_again": "再度表示しない",
|
||||
"hex.builtin.common.encoding.ascii": "ASCII",
|
||||
"hex.builtin.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.builtin.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.builtin.common.encoding.utf8": "UTF-8",
|
||||
"hex.builtin.common.end": "",
|
||||
"hex.builtin.common.endian": "エンディアン",
|
||||
"hex.builtin.common.warning": "",
|
||||
"hex.builtin.common.error": "エラー",
|
||||
"hex.builtin.common.fatal": "深刻なエラー",
|
||||
"hex.builtin.common.file": "ファイル",
|
||||
"hex.builtin.common.filter": "フィルタ",
|
||||
"hex.builtin.common.hexadecimal": "16進数",
|
||||
"hex.builtin.common.info": "情報",
|
||||
"hex.builtin.common.instruction": "",
|
||||
"hex.builtin.common.link": "リンク",
|
||||
"hex.builtin.common.little": "リトル",
|
||||
"hex.builtin.common.little_endian": "リトルエンディアン",
|
||||
"hex.builtin.common.load": "読み込む",
|
||||
"hex.builtin.common.match_selection": "選択範囲と一致",
|
||||
"hex.builtin.common.name": "",
|
||||
"hex.builtin.common.no": "いいえ",
|
||||
"hex.builtin.common.number_format": "",
|
||||
"hex.builtin.common.octal": "8進数",
|
||||
"hex.builtin.common.offset": "オフセット",
|
||||
"hex.builtin.common.okay": "OK",
|
||||
"hex.builtin.common.open": "開く",
|
||||
"hex.builtin.common.percentage": "",
|
||||
"hex.builtin.common.processing": "",
|
||||
"hex.builtin.common.project": "",
|
||||
"hex.builtin.common.question": "",
|
||||
"hex.builtin.common.range": "範囲",
|
||||
"hex.builtin.common.range.entire_data": "データ全体",
|
||||
"hex.builtin.common.range.selection": "選択範囲",
|
||||
"hex.builtin.common.region": "領域",
|
||||
"hex.builtin.common.reset": "",
|
||||
"hex.builtin.common.set": "セット",
|
||||
"hex.builtin.common.settings": "設定",
|
||||
"hex.builtin.common.size": "サイズ",
|
||||
"hex.builtin.common.type": "",
|
||||
"hex.builtin.common.type.f32": "float",
|
||||
"hex.builtin.common.type.f64": "double",
|
||||
"hex.builtin.common.type.i16": "int16_t",
|
||||
"hex.builtin.common.type.i24": "int24_t",
|
||||
"hex.builtin.common.type.i32": "int32_t",
|
||||
"hex.builtin.common.type.i48": "int48_t",
|
||||
"hex.builtin.common.type.i64": "int64_t",
|
||||
"hex.builtin.common.type.i8": "int8_t",
|
||||
"hex.builtin.common.type.u16": "uint16_t",
|
||||
"hex.builtin.common.type.u24": "uint24_t",
|
||||
"hex.builtin.common.type.u32": "uint32_t",
|
||||
"hex.builtin.common.type.u48": "uint48_t",
|
||||
"hex.builtin.common.type.u64": "uint64_t",
|
||||
"hex.builtin.common.type.u8": "uint8_t",
|
||||
"hex.builtin.common.value": "値",
|
||||
"hex.builtin.common.yes": "はい",
|
||||
"hex.builtin.hash.crc.iv": "初期値",
|
||||
"hex.builtin.hash.crc.poly": "多項式",
|
||||
"hex.builtin.hash.crc.refl_in": "入力を反映",
|
||||
@ -150,18 +80,6 @@
|
||||
"hex.builtin.hash.sha256": "SHA256",
|
||||
"hex.builtin.hash.sha384": "SHA384",
|
||||
"hex.builtin.hash.sha512": "SHA512",
|
||||
"hex.builtin.hex_editor.ascii_view": "ASCIIを表示",
|
||||
"hex.builtin.hex_editor.custom_encoding_view": "他のデコード列を表示",
|
||||
"hex.builtin.hex_editor.human_readable_units_footer": "",
|
||||
"hex.builtin.hex_editor.data_size": "ファイルサイズ",
|
||||
"hex.builtin.hex_editor.gray_out_zero": "ゼロをグレーアウト",
|
||||
"hex.builtin.hex_editor.no_bytes": "",
|
||||
"hex.builtin.hex_editor.page": "ページ",
|
||||
"hex.builtin.hex_editor.region": "ページの領域",
|
||||
"hex.builtin.hex_editor.selection": "選択中",
|
||||
"hex.builtin.hex_editor.selection.none": "なし",
|
||||
"hex.builtin.hex_editor.uppercase_hex": "16進数を大文字表記",
|
||||
"hex.builtin.hex_editor.visualizer": "データ表示方式",
|
||||
"hex.builtin.inspector.ascii": "ASCII",
|
||||
"hex.builtin.inspector.binary": "バイナリ (8 bit)",
|
||||
"hex.builtin.inspector.bool": "bool",
|
||||
@ -422,31 +340,6 @@
|
||||
"hex.builtin.nodes.visualizer.image_rgba.header": "",
|
||||
"hex.builtin.nodes.visualizer.layered_dist": "層状分布",
|
||||
"hex.builtin.nodes.visualizer.layered_dist.header": "層状分布",
|
||||
"hex.builtin.pattern_drawer.color": "色",
|
||||
"hex.builtin.pattern_drawer.double_click": "",
|
||||
"hex.builtin.pattern_drawer.end": "",
|
||||
"hex.builtin.pattern_drawer.export": "",
|
||||
"hex.builtin.pattern_drawer.favorites": "",
|
||||
"hex.builtin.pattern_drawer.local": "",
|
||||
"hex.builtin.pattern_drawer.size": "サイズ",
|
||||
"hex.builtin.pattern_drawer.spec_name": "",
|
||||
"hex.builtin.pattern_drawer.start": "",
|
||||
"hex.builtin.pattern_drawer.tree_style.tree": "",
|
||||
"hex.builtin.pattern_drawer.tree_style.auto_expanded": "",
|
||||
"hex.builtin.pattern_drawer.tree_style.flattened": "",
|
||||
"hex.builtin.pattern_drawer.type": "型",
|
||||
"hex.builtin.pattern_drawer.updating": "",
|
||||
"hex.builtin.pattern_drawer.value": "値",
|
||||
"hex.builtin.pattern_drawer.var_name": "名前",
|
||||
"hex.builtin.pattern_drawer.visualizer.unknown": "",
|
||||
"hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "",
|
||||
"hex.builtin.pl_visualizer.3d.rotation": "",
|
||||
"hex.builtin.pl_visualizer.3d.scale": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.latitude": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.longitude": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.query": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying_no_address": "",
|
||||
"hex.builtin.popup.close_provider.desc": "",
|
||||
"hex.builtin.popup.close_provider.title": "タブを閉じますか?",
|
||||
"hex.builtin.popup.docs_question.title": "",
|
||||
@ -700,76 +593,6 @@
|
||||
"hex.builtin.view.diff.provider_a": "",
|
||||
"hex.builtin.view.diff.provider_b": "",
|
||||
"hex.builtin.view.diff.removed": "",
|
||||
"hex.builtin.view.disassembler.16bit": "16-bit",
|
||||
"hex.builtin.view.disassembler.32bit": "32-bit",
|
||||
"hex.builtin.view.disassembler.64bit": "64-bit",
|
||||
"hex.builtin.view.disassembler.arch": "アーキテクチャ",
|
||||
"hex.builtin.view.disassembler.arm.arm": "ARM",
|
||||
"hex.builtin.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.builtin.view.disassembler.arm.default": "デフォルト",
|
||||
"hex.builtin.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.builtin.view.disassembler.base": "ベースアドレス",
|
||||
"hex.builtin.view.disassembler.bpf.classic": "クラシック",
|
||||
"hex.builtin.view.disassembler.bpf.extended": "拡張",
|
||||
"hex.builtin.view.disassembler.disassemble": "逆アセンブル",
|
||||
"hex.builtin.view.disassembler.disassembling": "逆アセンブル中…",
|
||||
"hex.builtin.view.disassembler.disassembly.address": "アドレス",
|
||||
"hex.builtin.view.disassembler.disassembly.bytes": "バイト",
|
||||
"hex.builtin.view.disassembler.disassembly.offset": "オフセット",
|
||||
"hex.builtin.view.disassembler.disassembly.title": "逆アセンブル",
|
||||
"hex.builtin.view.disassembler.m680x.6301": "6301",
|
||||
"hex.builtin.view.disassembler.m680x.6309": "6309",
|
||||
"hex.builtin.view.disassembler.m680x.6800": "6800",
|
||||
"hex.builtin.view.disassembler.m680x.6801": "6801",
|
||||
"hex.builtin.view.disassembler.m680x.6805": "6805",
|
||||
"hex.builtin.view.disassembler.m680x.6808": "6808",
|
||||
"hex.builtin.view.disassembler.m680x.6809": "6809",
|
||||
"hex.builtin.view.disassembler.m680x.6811": "6811",
|
||||
"hex.builtin.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.builtin.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.builtin.view.disassembler.m68k.000": "000",
|
||||
"hex.builtin.view.disassembler.m68k.010": "010",
|
||||
"hex.builtin.view.disassembler.m68k.020": "020",
|
||||
"hex.builtin.view.disassembler.m68k.030": "030",
|
||||
"hex.builtin.view.disassembler.m68k.040": "040",
|
||||
"hex.builtin.view.disassembler.m68k.060": "060",
|
||||
"hex.builtin.view.disassembler.mips.micro": "Micro",
|
||||
"hex.builtin.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.builtin.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.builtin.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.builtin.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.builtin.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.builtin.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.builtin.view.disassembler.sh.sh2": "",
|
||||
"hex.builtin.view.disassembler.sh.sh2a": "",
|
||||
"hex.builtin.view.disassembler.sh.sh3": "",
|
||||
"hex.builtin.view.disassembler.sh.sh4": "",
|
||||
"hex.builtin.view.disassembler.sh.sh4a": "",
|
||||
"hex.builtin.view.disassembler.sh.fpu": "",
|
||||
"hex.builtin.view.disassembler.sh.dsp": "",
|
||||
"hex.builtin.view.disassembler.tricore.110": "",
|
||||
"hex.builtin.view.disassembler.tricore.120": "",
|
||||
"hex.builtin.view.disassembler.tricore.130": "",
|
||||
"hex.builtin.view.disassembler.tricore.131": "",
|
||||
"hex.builtin.view.disassembler.tricore.160": "",
|
||||
"hex.builtin.view.disassembler.tricore.161": "",
|
||||
"hex.builtin.view.disassembler.tricore.162": "",
|
||||
"hex.builtin.view.disassembler.name": "逆アセンブラ",
|
||||
"hex.builtin.view.disassembler.position": "位置",
|
||||
"hex.builtin.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.builtin.view.disassembler.ppc.qpx": "",
|
||||
"hex.builtin.view.disassembler.ppc.spe": "信号処理エンジン",
|
||||
"hex.builtin.view.disassembler.region": "コード領域",
|
||||
"hex.builtin.view.disassembler.riscv.compressed": "圧縮済み",
|
||||
"hex.builtin.view.disassembler.settings.mode": "モード",
|
||||
"hex.builtin.view.disassembler.sparc.v9": "Sparc V9",
|
||||
"hex.builtin.view.find.binary_pattern": "16進数",
|
||||
"hex.builtin.view.find.binary_pattern.alignment": "",
|
||||
"hex.builtin.view.find.context.copy": "値をコピー",
|
||||
@ -979,19 +802,6 @@
|
||||
"hex.builtin.view.theme_manager.save_theme": "",
|
||||
"hex.builtin.view.theme_manager.styles": "",
|
||||
"hex.builtin.view.tools.name": "ツール",
|
||||
"hex.builtin.view.yara.error": "Yaraコンパイルエラー: {0}",
|
||||
"hex.builtin.view.yara.header.matches": "マッチ結果",
|
||||
"hex.builtin.view.yara.header.rules": "ルール",
|
||||
"hex.builtin.view.yara.match": "検出",
|
||||
"hex.builtin.view.yara.matches.identifier": "識別子",
|
||||
"hex.builtin.view.yara.matches.variable": "変数",
|
||||
"hex.builtin.view.yara.matching": "マッチ中…",
|
||||
"hex.builtin.view.yara.name": "Yaraルール",
|
||||
"hex.builtin.view.yara.no_rules": "YARAルールが見つかりませんでした。ImHexの'yara'フォルダ内に入れてください",
|
||||
"hex.builtin.view.yara.reload": "リロード",
|
||||
"hex.builtin.view.yara.reset": "",
|
||||
"hex.builtin.view.yara.rule_added": "Yaraルールが追加されました。",
|
||||
"hex.builtin.view.yara.whole_data": "ファイル全体が一致します。",
|
||||
"hex.builtin.visualizer.binary": "",
|
||||
"hex.builtin.visualizer.decimal.signed.16bit": "符号付き整数型 (16 bits)",
|
||||
"hex.builtin.visualizer.decimal.signed.32bit": "符号付き整数型 (32 bits)",
|
||||
|
@ -63,76 +63,6 @@
|
||||
"hex.builtin.command.cmd.result": "'{0}' 명령 실행",
|
||||
"hex.builtin.command.web.desc": "웹사이트 탐색",
|
||||
"hex.builtin.command.web.result": "'{0}'(으)로 이동",
|
||||
"hex.builtin.common.address": "주소",
|
||||
"hex.builtin.common.allow": "허용",
|
||||
"hex.builtin.common.begin": "시작",
|
||||
"hex.builtin.common.big": "빅",
|
||||
"hex.builtin.common.big_endian": "빅 엔디언",
|
||||
"hex.builtin.common.browse": "찾아보기...",
|
||||
"hex.builtin.common.bytes": "바이트",
|
||||
"hex.builtin.common.cancel": "취소",
|
||||
"hex.builtin.common.choose_file": "파일 선택",
|
||||
"hex.builtin.common.close": "닫기",
|
||||
"hex.builtin.common.comment": "주석",
|
||||
"hex.builtin.common.count": "개수",
|
||||
"hex.builtin.common.decimal": "10진수",
|
||||
"hex.builtin.common.deny": "거부",
|
||||
"hex.builtin.common.dont_show_again": "다시 보지 않기",
|
||||
"hex.builtin.common.encoding.ascii": "ASCII",
|
||||
"hex.builtin.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.builtin.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.builtin.common.encoding.utf8": "UTF-8",
|
||||
"hex.builtin.common.end": "끝",
|
||||
"hex.builtin.common.endian": "엔디언",
|
||||
"hex.builtin.common.warning": "경고",
|
||||
"hex.builtin.common.error": "오류",
|
||||
"hex.builtin.common.fatal": "치명적 오류",
|
||||
"hex.builtin.common.file": "파일",
|
||||
"hex.builtin.common.filter": "필터",
|
||||
"hex.builtin.common.hexadecimal": "16진수",
|
||||
"hex.builtin.common.info": "정보",
|
||||
"hex.builtin.common.instruction": "지침",
|
||||
"hex.builtin.common.link": "링크",
|
||||
"hex.builtin.common.little": "리틀",
|
||||
"hex.builtin.common.little_endian": "리틀 엔디언",
|
||||
"hex.builtin.common.load": "불러오기",
|
||||
"hex.builtin.common.match_selection": "선택 영역 일치",
|
||||
"hex.builtin.common.name": "이름",
|
||||
"hex.builtin.common.no": "아니요",
|
||||
"hex.builtin.common.number_format": "포맷",
|
||||
"hex.builtin.common.octal": "8진수",
|
||||
"hex.builtin.common.offset": "오프셋",
|
||||
"hex.builtin.common.okay": "확인",
|
||||
"hex.builtin.common.open": "열기",
|
||||
"hex.builtin.common.percentage": "비율",
|
||||
"hex.builtin.common.processing": "작업 중",
|
||||
"hex.builtin.common.project": "프로젝트",
|
||||
"hex.builtin.common.question": "질문",
|
||||
"hex.builtin.common.range": "범위",
|
||||
"hex.builtin.common.range.entire_data": "전체 데이터",
|
||||
"hex.builtin.common.range.selection": "선택 영역",
|
||||
"hex.builtin.common.region": "영역",
|
||||
"hex.builtin.common.reset": "재설정",
|
||||
"hex.builtin.common.set": "설정",
|
||||
"hex.builtin.common.settings": "설정",
|
||||
"hex.builtin.common.size": "크기",
|
||||
"hex.builtin.common.type": "유형",
|
||||
"hex.builtin.common.type.f32": "플로트",
|
||||
"hex.builtin.common.type.f64": "더블",
|
||||
"hex.builtin.common.type.i16": "int16_t",
|
||||
"hex.builtin.common.type.i24": "int24_t",
|
||||
"hex.builtin.common.type.i32": "int32_t",
|
||||
"hex.builtin.common.type.i48": "int48_t",
|
||||
"hex.builtin.common.type.i64": "int64_t",
|
||||
"hex.builtin.common.type.i8": "int8_t",
|
||||
"hex.builtin.common.type.u16": "uint16_t",
|
||||
"hex.builtin.common.type.u24": "uint24_t",
|
||||
"hex.builtin.common.type.u32": "uint32_t",
|
||||
"hex.builtin.common.type.u48": "uint48_t",
|
||||
"hex.builtin.common.type.u64": "uint64_t",
|
||||
"hex.builtin.common.type.u8": "uint8_t",
|
||||
"hex.builtin.common.value": "값",
|
||||
"hex.builtin.common.yes": "예",
|
||||
"hex.builtin.hash.crc.iv": "초기 값",
|
||||
"hex.builtin.hash.crc.poly": "다항식",
|
||||
"hex.builtin.hash.crc.refl_in": "입력에 반영",
|
||||
@ -150,18 +80,6 @@
|
||||
"hex.builtin.hash.sha256": "SHA256",
|
||||
"hex.builtin.hash.sha384": "SHA384",
|
||||
"hex.builtin.hash.sha512": "SHA512",
|
||||
"hex.builtin.hex_editor.ascii_view": "ASCII 열 표시",
|
||||
"hex.builtin.hex_editor.custom_encoding_view": "추가 디코딩 열 표시",
|
||||
"hex.builtin.hex_editor.human_readable_units_footer": "크기를 사람이 읽을 수 있는 단위로 변환",
|
||||
"hex.builtin.hex_editor.data_size": "데이터 크기",
|
||||
"hex.builtin.hex_editor.gray_out_zero": "00을 회색으로 표시",
|
||||
"hex.builtin.hex_editor.no_bytes": "바이트가 없습니다",
|
||||
"hex.builtin.hex_editor.page": "페이지",
|
||||
"hex.builtin.hex_editor.region": "영역",
|
||||
"hex.builtin.hex_editor.selection": "선택 영역",
|
||||
"hex.builtin.hex_editor.selection.none": "없음",
|
||||
"hex.builtin.hex_editor.uppercase_hex": "16진수 값을 대문자로 표시",
|
||||
"hex.builtin.hex_editor.visualizer": "데이터 시각화",
|
||||
"hex.builtin.inspector.ascii": "ASCII 문자",
|
||||
"hex.builtin.inspector.binary": "2진수 (8비트)",
|
||||
"hex.builtin.inspector.bool": "부울",
|
||||
@ -422,31 +340,13 @@
|
||||
"hex.builtin.nodes.visualizer.image_rgba.header": "RGBA8 이미지 시각화",
|
||||
"hex.builtin.nodes.visualizer.layered_dist": "계층적 분포",
|
||||
"hex.builtin.nodes.visualizer.layered_dist.header": "계층적 분포",
|
||||
"hex.builtin.pattern_drawer.color": "색상",
|
||||
"hex.builtin.pattern_drawer.double_click": "더 많은 항목을 보려면 두 번 클릭",
|
||||
"hex.builtin.pattern_drawer.end": "끝",
|
||||
"hex.builtin.pattern_drawer.export": "다른 이름으로 패턴 내보내기...",
|
||||
"hex.builtin.pattern_drawer.favorites": "즐겨찾기",
|
||||
"hex.builtin.pattern_drawer.local": "로컬",
|
||||
"hex.builtin.pattern_drawer.size": "크기",
|
||||
"hex.builtin.pattern_drawer.spec_name": "명세 이름 표시",
|
||||
"hex.builtin.pattern_drawer.start": "시작",
|
||||
"hex.builtin.pattern_drawer.tree_style.tree": "트리",
|
||||
"hex.builtin.pattern_drawer.tree_style.auto_expanded": "자동 확장 트리",
|
||||
"hex.builtin.pattern_drawer.tree_style.flattened": "접기",
|
||||
"hex.builtin.pattern_drawer.type": "유형",
|
||||
"hex.builtin.pattern_drawer.updating": "패턴 업데이트 중...",
|
||||
"hex.builtin.pattern_drawer.value": "값",
|
||||
"hex.builtin.pattern_drawer.var_name": "이름",
|
||||
"hex.builtin.pattern_drawer.visualizer.unknown": "알 수 없는 시각화",
|
||||
"hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "잘못된 매개변수 수",
|
||||
"hex.builtin.pl_visualizer.3d.rotation": "회전",
|
||||
"hex.builtin.pl_visualizer.3d.scale": "배율",
|
||||
"hex.builtin.pl_visualizer.coordinates.latitude": "위도",
|
||||
"hex.builtin.pl_visualizer.coordinates.longitude": "경도",
|
||||
"hex.builtin.pl_visualizer.coordinates.query": "주소 찾기",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying": "주소 쿼리 중...",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying_no_address": "찾은 주소가 없습니다",
|
||||
"hex.visualizers.pl_visualizer.3d.rotation": "회전",
|
||||
"hex.visualizers.pl_visualizer.3d.scale": "배율",
|
||||
"hex.visualizers.pl_visualizer.coordinates.latitude": "위도",
|
||||
"hex.visualizers.pl_visualizer.coordinates.longitude": "경도",
|
||||
"hex.visualizers.pl_visualizer.coordinates.query": "주소 찾기",
|
||||
"hex.visualizers.pl_visualizer.coordinates.querying": "주소 쿼리 중...",
|
||||
"hex.visualizers.pl_visualizer.coordinates.querying_no_address": "찾은 주소가 없습니다",
|
||||
"hex.builtin.popup.close_provider.desc": "이 공급자에 대해 아직 프로젝트에\n저장되지 않은 변경 사항이 있습니다.\n\n정말 종료하시겠습니까?",
|
||||
"hex.builtin.popup.close_provider.title": "공급자를 종료하시겠습니까?",
|
||||
"hex.builtin.popup.docs_question.title": "설명서 쿼리",
|
||||
@ -714,76 +614,6 @@
|
||||
"hex.builtin.view.diff.provider_a": "공급자 A",
|
||||
"hex.builtin.view.diff.provider_b": "공급자 B",
|
||||
"hex.builtin.view.diff.removed": "제거됨",
|
||||
"hex.builtin.view.disassembler.16bit": "16비트",
|
||||
"hex.builtin.view.disassembler.32bit": "32비트",
|
||||
"hex.builtin.view.disassembler.64bit": "64비트",
|
||||
"hex.builtin.view.disassembler.arch": "아키텍처",
|
||||
"hex.builtin.view.disassembler.arm.arm": "ARM",
|
||||
"hex.builtin.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.builtin.view.disassembler.arm.default": "기본",
|
||||
"hex.builtin.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.builtin.view.disassembler.base": "베이스 주소",
|
||||
"hex.builtin.view.disassembler.bpf.classic": "클래식",
|
||||
"hex.builtin.view.disassembler.bpf.extended": "확장",
|
||||
"hex.builtin.view.disassembler.disassemble": "디스어셈블",
|
||||
"hex.builtin.view.disassembler.disassembling": "디스어셈블하는 중...",
|
||||
"hex.builtin.view.disassembler.disassembly.address": "주소",
|
||||
"hex.builtin.view.disassembler.disassembly.bytes": "바이트",
|
||||
"hex.builtin.view.disassembler.disassembly.offset": "오프셋",
|
||||
"hex.builtin.view.disassembler.disassembly.title": "디스어셈블리",
|
||||
"hex.builtin.view.disassembler.m680x.6301": "6301",
|
||||
"hex.builtin.view.disassembler.m680x.6309": "6309",
|
||||
"hex.builtin.view.disassembler.m680x.6800": "6800",
|
||||
"hex.builtin.view.disassembler.m680x.6801": "6801",
|
||||
"hex.builtin.view.disassembler.m680x.6805": "6805",
|
||||
"hex.builtin.view.disassembler.m680x.6808": "6808",
|
||||
"hex.builtin.view.disassembler.m680x.6809": "6809",
|
||||
"hex.builtin.view.disassembler.m680x.6811": "6811",
|
||||
"hex.builtin.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.builtin.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.builtin.view.disassembler.m68k.000": "000",
|
||||
"hex.builtin.view.disassembler.m68k.010": "010",
|
||||
"hex.builtin.view.disassembler.m68k.020": "020",
|
||||
"hex.builtin.view.disassembler.m68k.030": "030",
|
||||
"hex.builtin.view.disassembler.m68k.040": "040",
|
||||
"hex.builtin.view.disassembler.m68k.060": "060",
|
||||
"hex.builtin.view.disassembler.mips.micro": "Micro",
|
||||
"hex.builtin.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.builtin.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.builtin.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.builtin.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.builtin.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.builtin.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.builtin.view.disassembler.sh.sh2": "SH2",
|
||||
"hex.builtin.view.disassembler.sh.sh2a": "SH2A",
|
||||
"hex.builtin.view.disassembler.sh.sh3": "SH3",
|
||||
"hex.builtin.view.disassembler.sh.sh4": "SH4",
|
||||
"hex.builtin.view.disassembler.sh.sh4a": "SH4A",
|
||||
"hex.builtin.view.disassembler.sh.fpu": "FPU",
|
||||
"hex.builtin.view.disassembler.sh.dsp": "DSP",
|
||||
"hex.builtin.view.disassembler.tricore.110": "110",
|
||||
"hex.builtin.view.disassembler.tricore.120": "120",
|
||||
"hex.builtin.view.disassembler.tricore.130": "130",
|
||||
"hex.builtin.view.disassembler.tricore.131": "131",
|
||||
"hex.builtin.view.disassembler.tricore.160": "160",
|
||||
"hex.builtin.view.disassembler.tricore.161": "161",
|
||||
"hex.builtin.view.disassembler.tricore.162": "162",
|
||||
"hex.builtin.view.disassembler.name": "디스어셈블러",
|
||||
"hex.builtin.view.disassembler.position": "위치",
|
||||
"hex.builtin.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.builtin.view.disassembler.ppc.qpx": "쿼드 프로세싱 확장",
|
||||
"hex.builtin.view.disassembler.ppc.spe": "시그널 프로세싱 엔진",
|
||||
"hex.builtin.view.disassembler.region": "코드 영역",
|
||||
"hex.builtin.view.disassembler.riscv.compressed": "압축됨",
|
||||
"hex.builtin.view.disassembler.settings.mode": "모드",
|
||||
"hex.builtin.view.disassembler.sparc.v9": "Sparc V9",
|
||||
"hex.builtin.view.find.binary_pattern": "바이너리 패턴",
|
||||
"hex.builtin.view.find.binary_pattern.alignment": "정렬",
|
||||
"hex.builtin.view.find.context.copy": "값 복사",
|
||||
@ -993,19 +823,6 @@
|
||||
"hex.builtin.view.theme_manager.save_theme": "테마 저장",
|
||||
"hex.builtin.view.theme_manager.styles": "스타일",
|
||||
"hex.builtin.view.tools.name": "도구",
|
||||
"hex.builtin.view.yara.error": "Yara 컴파일러 오류: {0}",
|
||||
"hex.builtin.view.yara.header.matches": "일치",
|
||||
"hex.builtin.view.yara.header.rules": "규칙",
|
||||
"hex.builtin.view.yara.match": "규칙 일치 찾기",
|
||||
"hex.builtin.view.yara.matches.identifier": "식별자",
|
||||
"hex.builtin.view.yara.matches.variable": "변수",
|
||||
"hex.builtin.view.yara.matching": "검색 중...",
|
||||
"hex.builtin.view.yara.name": "Yara 규칙",
|
||||
"hex.builtin.view.yara.no_rules": "Yara 규칙이 없습니다. ImHex의 'yara' 폴더에 Yara 규칙을 넣으세요",
|
||||
"hex.builtin.view.yara.reload": "새로 고침",
|
||||
"hex.builtin.view.yara.reset": "재설정",
|
||||
"hex.builtin.view.yara.rule_added": "Yara 규칙 추가됨!",
|
||||
"hex.builtin.view.yara.whole_data": "모든 파일을 검색했습니다!",
|
||||
"hex.builtin.visualizer.binary": "2진수",
|
||||
"hex.builtin.visualizer.decimal.signed.16bit": "부호 있는 10진수 (16비트)",
|
||||
"hex.builtin.visualizer.decimal.signed.32bit": "부호 있는 10진수 (32비트)",
|
||||
@ -1104,7 +921,6 @@
|
||||
"hex.builtin.view.help.about.release_notes": "릴리스 노트",
|
||||
"hex.builtin.menu.file.export.as_language": "텍스트 형식 바이트",
|
||||
"hex.builtin.view.help.about.commits": "커밋 기록",
|
||||
"hex.builtin.common.loading": "불러오는 중...",
|
||||
"hex.builtin.undo_operation.remove": "{0} 제거",
|
||||
"hex.builtin.view.find.shortcut.select_all": "모든 발생 선택",
|
||||
"hex.builtin.view.hex_editor.menu.edit.cut": "자르기",
|
||||
@ -1153,18 +969,8 @@
|
||||
"hex.builtin.view.pattern_editor.shortcut.step_debugger": "스텝 디버거",
|
||||
"hex.builtin.welcome.learn.achievements.title": "도전 과제 진행 상황",
|
||||
"hex.builtin.welcome.learn.achievements.desc": "모든 도전 과제를 완료하여 ImHex의 사용 방법을 알아보세요",
|
||||
"hex.builtin.common.remove": "제거",
|
||||
"hex.builtin.common.edit": "편집",
|
||||
"hex.builtin.popup.blocking_task.desc": "현재 작업을 실행 중입니다.",
|
||||
"hex.builtin.popup.blocking_task.title": "작업 실행 중",
|
||||
"hex.builtin.pl_visualizer.3d.light_position": "조명 위치",
|
||||
"hex.builtin.pl_visualizer.3d.ambient_brightness": "주변 밝기",
|
||||
"hex.builtin.pl_visualizer.3d.diffuse_brightness": "확산 밝기",
|
||||
"hex.builtin.pl_visualizer.3d.specular_brightness": "반사 밝기",
|
||||
"hex.builtin.pl_visualizer.3d.object_reflectiveness": "개체 반사도",
|
||||
"hex.builtin.pl_visualizer.3d.light_color": "조명 색상",
|
||||
"hex.builtin.pl_visualizer.3d.more_settings": "설정 더 보기",
|
||||
"hex.builtin.pl_visualizer.3d.texture_file": "텍스처 파일 경로",
|
||||
"hex.builtin.menu.workspace.layout.lock": "레이아웃 잠금",
|
||||
"hex.builtin.welcome.drop_file": "시작하려면 여기에 파일을 놓으세요...",
|
||||
"hex.builtin.command.convert.desc": "단위 변환",
|
||||
|
@ -63,76 +63,6 @@
|
||||
"hex.builtin.command.cmd.result": "Iniciar Comando '{0}'",
|
||||
"hex.builtin.command.web.desc": "Website lookup",
|
||||
"hex.builtin.command.web.result": "Navegar para '{0}'",
|
||||
"hex.builtin.common.address": "Address",
|
||||
"hex.builtin.common.allow": "",
|
||||
"hex.builtin.common.begin": "",
|
||||
"hex.builtin.common.big": "Big",
|
||||
"hex.builtin.common.big_endian": "Big Endian",
|
||||
"hex.builtin.common.browse": "Navegar...",
|
||||
"hex.builtin.common.bytes": "",
|
||||
"hex.builtin.common.cancel": "Cancelar",
|
||||
"hex.builtin.common.choose_file": "Escolher arquivo",
|
||||
"hex.builtin.common.close": "Fechar",
|
||||
"hex.builtin.common.comment": "",
|
||||
"hex.builtin.common.count": "",
|
||||
"hex.builtin.common.decimal": "Decimal",
|
||||
"hex.builtin.common.deny": "",
|
||||
"hex.builtin.common.dont_show_again": "Não Mostrar Novamente",
|
||||
"hex.builtin.common.encoding.ascii": "ASCII",
|
||||
"hex.builtin.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.builtin.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.builtin.common.encoding.utf8": "UTF-8",
|
||||
"hex.builtin.common.end": "",
|
||||
"hex.builtin.common.endian": "Endian",
|
||||
"hex.builtin.common.warning": "",
|
||||
"hex.builtin.common.error": "Erro",
|
||||
"hex.builtin.common.fatal": "Erro Fatal",
|
||||
"hex.builtin.common.file": "Arquivo",
|
||||
"hex.builtin.common.filter": "",
|
||||
"hex.builtin.common.hexadecimal": "Hexadecimal",
|
||||
"hex.builtin.common.info": "Informação",
|
||||
"hex.builtin.common.instruction": "",
|
||||
"hex.builtin.common.link": "Link",
|
||||
"hex.builtin.common.little": "Little",
|
||||
"hex.builtin.common.little_endian": "Little Endian",
|
||||
"hex.builtin.common.load": "Carregar",
|
||||
"hex.builtin.common.match_selection": "Seleção de correspondência",
|
||||
"hex.builtin.common.name": "",
|
||||
"hex.builtin.common.no": "Não",
|
||||
"hex.builtin.common.number_format": "Format",
|
||||
"hex.builtin.common.octal": "Octal",
|
||||
"hex.builtin.common.offset": "Offset",
|
||||
"hex.builtin.common.okay": "OK",
|
||||
"hex.builtin.common.open": "Abrir",
|
||||
"hex.builtin.common.percentage": "",
|
||||
"hex.builtin.common.processing": "Processando",
|
||||
"hex.builtin.common.project": "",
|
||||
"hex.builtin.common.question": "Question",
|
||||
"hex.builtin.common.range": "",
|
||||
"hex.builtin.common.range.entire_data": "",
|
||||
"hex.builtin.common.range.selection": "",
|
||||
"hex.builtin.common.region": "Region",
|
||||
"hex.builtin.common.reset": "",
|
||||
"hex.builtin.common.set": "Colocar",
|
||||
"hex.builtin.common.settings": "Configurações",
|
||||
"hex.builtin.common.size": "Tamanho",
|
||||
"hex.builtin.common.type": "",
|
||||
"hex.builtin.common.type.f32": "float",
|
||||
"hex.builtin.common.type.f64": "double",
|
||||
"hex.builtin.common.type.i16": "int16_t",
|
||||
"hex.builtin.common.type.i24": "int24_t",
|
||||
"hex.builtin.common.type.i32": "int32_t",
|
||||
"hex.builtin.common.type.i48": "int48_t",
|
||||
"hex.builtin.common.type.i64": "int64_t",
|
||||
"hex.builtin.common.type.i8": "int8_t",
|
||||
"hex.builtin.common.type.u16": "uint16_t",
|
||||
"hex.builtin.common.type.u24": "uint24_t",
|
||||
"hex.builtin.common.type.u32": "uint32_t",
|
||||
"hex.builtin.common.type.u48": "uint48_t",
|
||||
"hex.builtin.common.type.u64": "uint64_t",
|
||||
"hex.builtin.common.type.u8": "uint8_t",
|
||||
"hex.builtin.common.value": "",
|
||||
"hex.builtin.common.yes": "Sim",
|
||||
"hex.builtin.hash.crc.iv": "Initial Value",
|
||||
"hex.builtin.hash.crc.poly": "Polynomial",
|
||||
"hex.builtin.hash.crc.refl_in": "Reflect In",
|
||||
@ -150,18 +80,6 @@
|
||||
"hex.builtin.hash.sha256": "SHA256",
|
||||
"hex.builtin.hash.sha384": "SHA384",
|
||||
"hex.builtin.hash.sha512": "SHA512",
|
||||
"hex.builtin.hex_editor.ascii_view": "Exibir coluna ASCII",
|
||||
"hex.builtin.hex_editor.custom_encoding_view": "",
|
||||
"hex.builtin.hex_editor.human_readable_units_footer": "",
|
||||
"hex.builtin.hex_editor.data_size": "Tamanho dos Dados",
|
||||
"hex.builtin.hex_editor.gray_out_zero": "",
|
||||
"hex.builtin.hex_editor.no_bytes": "Nenhum Byte Disponivel",
|
||||
"hex.builtin.hex_editor.page": "Pagina",
|
||||
"hex.builtin.hex_editor.region": "Região",
|
||||
"hex.builtin.hex_editor.selection": "Seleção",
|
||||
"hex.builtin.hex_editor.selection.none": "Nenhum",
|
||||
"hex.builtin.hex_editor.uppercase_hex": "",
|
||||
"hex.builtin.hex_editor.visualizer": "Visualizador de Dados",
|
||||
"hex.builtin.inspector.ascii": "ASCII Character",
|
||||
"hex.builtin.inspector.binary": "Binary (8 bit)",
|
||||
"hex.builtin.inspector.bool": "bool",
|
||||
@ -422,31 +340,6 @@
|
||||
"hex.builtin.nodes.visualizer.image_rgba.header": "",
|
||||
"hex.builtin.nodes.visualizer.layered_dist": "Layered Distribution",
|
||||
"hex.builtin.nodes.visualizer.layered_dist.header": "Layered Distribution",
|
||||
"hex.builtin.pattern_drawer.color": "Cor",
|
||||
"hex.builtin.pattern_drawer.double_click": "",
|
||||
"hex.builtin.pattern_drawer.end": "",
|
||||
"hex.builtin.pattern_drawer.export": "",
|
||||
"hex.builtin.pattern_drawer.favorites": "",
|
||||
"hex.builtin.pattern_drawer.local": "",
|
||||
"hex.builtin.pattern_drawer.size": "Tamanho",
|
||||
"hex.builtin.pattern_drawer.spec_name": "",
|
||||
"hex.builtin.pattern_drawer.start": "",
|
||||
"hex.builtin.pattern_drawer.tree_style.tree": "",
|
||||
"hex.builtin.pattern_drawer.tree_style.auto_expanded": "",
|
||||
"hex.builtin.pattern_drawer.tree_style.flattened": "",
|
||||
"hex.builtin.pattern_drawer.type": "Tipo",
|
||||
"hex.builtin.pattern_drawer.updating": "",
|
||||
"hex.builtin.pattern_drawer.value": "Valor",
|
||||
"hex.builtin.pattern_drawer.var_name": "Nome",
|
||||
"hex.builtin.pattern_drawer.visualizer.unknown": "",
|
||||
"hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "",
|
||||
"hex.builtin.pl_visualizer.3d.rotation": "",
|
||||
"hex.builtin.pl_visualizer.3d.scale": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.latitude": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.longitude": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.query": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying_no_address": "",
|
||||
"hex.builtin.popup.close_provider.desc": "",
|
||||
"hex.builtin.popup.close_provider.title": "",
|
||||
"hex.builtin.popup.docs_question.title": "",
|
||||
@ -700,76 +593,6 @@
|
||||
"hex.builtin.view.diff.provider_a": "",
|
||||
"hex.builtin.view.diff.provider_b": "",
|
||||
"hex.builtin.view.diff.removed": "",
|
||||
"hex.builtin.view.disassembler.16bit": "16-bit",
|
||||
"hex.builtin.view.disassembler.32bit": "32-bit",
|
||||
"hex.builtin.view.disassembler.64bit": "64-bit",
|
||||
"hex.builtin.view.disassembler.arch": "Arquitetura",
|
||||
"hex.builtin.view.disassembler.arm.arm": "ARM",
|
||||
"hex.builtin.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.builtin.view.disassembler.arm.default": "Default",
|
||||
"hex.builtin.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.builtin.view.disassembler.base": "Endereço base",
|
||||
"hex.builtin.view.disassembler.bpf.classic": "Classico",
|
||||
"hex.builtin.view.disassembler.bpf.extended": "Extendido",
|
||||
"hex.builtin.view.disassembler.disassemble": "Desmontar",
|
||||
"hex.builtin.view.disassembler.disassembling": "Desmontando...",
|
||||
"hex.builtin.view.disassembler.disassembly.address": "Address",
|
||||
"hex.builtin.view.disassembler.disassembly.bytes": "Byte",
|
||||
"hex.builtin.view.disassembler.disassembly.offset": "Offset",
|
||||
"hex.builtin.view.disassembler.disassembly.title": "Disassembly",
|
||||
"hex.builtin.view.disassembler.m680x.6301": "6301",
|
||||
"hex.builtin.view.disassembler.m680x.6309": "6309",
|
||||
"hex.builtin.view.disassembler.m680x.6800": "6800",
|
||||
"hex.builtin.view.disassembler.m680x.6801": "6801",
|
||||
"hex.builtin.view.disassembler.m680x.6805": "6805",
|
||||
"hex.builtin.view.disassembler.m680x.6808": "6808",
|
||||
"hex.builtin.view.disassembler.m680x.6809": "6809",
|
||||
"hex.builtin.view.disassembler.m680x.6811": "6811",
|
||||
"hex.builtin.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.builtin.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.builtin.view.disassembler.m68k.000": "000",
|
||||
"hex.builtin.view.disassembler.m68k.010": "010",
|
||||
"hex.builtin.view.disassembler.m68k.020": "020",
|
||||
"hex.builtin.view.disassembler.m68k.030": "030",
|
||||
"hex.builtin.view.disassembler.m68k.040": "040",
|
||||
"hex.builtin.view.disassembler.m68k.060": "060",
|
||||
"hex.builtin.view.disassembler.mips.micro": "Micro",
|
||||
"hex.builtin.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.builtin.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.builtin.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.builtin.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.builtin.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.builtin.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.builtin.view.disassembler.sh.sh2": "",
|
||||
"hex.builtin.view.disassembler.sh.sh2a": "",
|
||||
"hex.builtin.view.disassembler.sh.sh3": "",
|
||||
"hex.builtin.view.disassembler.sh.sh4": "",
|
||||
"hex.builtin.view.disassembler.sh.sh4a": "",
|
||||
"hex.builtin.view.disassembler.sh.fpu": "",
|
||||
"hex.builtin.view.disassembler.sh.dsp": "",
|
||||
"hex.builtin.view.disassembler.tricore.110": "",
|
||||
"hex.builtin.view.disassembler.tricore.120": "",
|
||||
"hex.builtin.view.disassembler.tricore.130": "",
|
||||
"hex.builtin.view.disassembler.tricore.131": "",
|
||||
"hex.builtin.view.disassembler.tricore.160": "",
|
||||
"hex.builtin.view.disassembler.tricore.161": "",
|
||||
"hex.builtin.view.disassembler.tricore.162": "",
|
||||
"hex.builtin.view.disassembler.name": "Desmontador",
|
||||
"hex.builtin.view.disassembler.position": "Posição",
|
||||
"hex.builtin.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.builtin.view.disassembler.ppc.spe": "Signal Processing Engine",
|
||||
"hex.builtin.view.disassembler.region": "Região do código",
|
||||
"hex.builtin.view.disassembler.riscv.compressed": "Compressed",
|
||||
"hex.builtin.view.disassembler.settings.mode": "Modo",
|
||||
"hex.builtin.view.disassembler.sparc.v9": "Sparc V9",
|
||||
"hex.builtin.view.find.binary_pattern": "",
|
||||
"hex.builtin.view.find.binary_pattern.alignment": "",
|
||||
"hex.builtin.view.find.context.copy": "",
|
||||
@ -979,19 +802,6 @@
|
||||
"hex.builtin.view.theme_manager.save_theme": "",
|
||||
"hex.builtin.view.theme_manager.styles": "",
|
||||
"hex.builtin.view.tools.name": "Ferramentas",
|
||||
"hex.builtin.view.yara.error": "Erro do compilador Yara: {0}",
|
||||
"hex.builtin.view.yara.header.matches": "Combinações",
|
||||
"hex.builtin.view.yara.header.rules": "Regras",
|
||||
"hex.builtin.view.yara.match": "Combinar Regras",
|
||||
"hex.builtin.view.yara.matches.identifier": "Identificador",
|
||||
"hex.builtin.view.yara.matches.variable": "Variável",
|
||||
"hex.builtin.view.yara.matching": "Combinando...",
|
||||
"hex.builtin.view.yara.name": "Regras Yara",
|
||||
"hex.builtin.view.yara.no_rules": "Nenhuma regra YARA encontrada. Coloque-os na pasta 'yara' do ImHex",
|
||||
"hex.builtin.view.yara.reload": "Recarregar",
|
||||
"hex.builtin.view.yara.reset": "",
|
||||
"hex.builtin.view.yara.rule_added": "Regra Yara Adicionada!",
|
||||
"hex.builtin.view.yara.whole_data": "O arquivo inteiro corresponde!",
|
||||
"hex.builtin.visualizer.binary": "",
|
||||
"hex.builtin.visualizer.decimal.signed.16bit": "Decimal Signed (16 bits)",
|
||||
"hex.builtin.visualizer.decimal.signed.32bit": "Decimal Signed (32 bits)",
|
||||
|
@ -63,76 +63,6 @@
|
||||
"hex.builtin.command.cmd.result": "运行指令 '{0}'",
|
||||
"hex.builtin.command.web.desc": "网站解析",
|
||||
"hex.builtin.command.web.result": "导航到 '{0}'",
|
||||
"hex.builtin.common.address": "地址",
|
||||
"hex.builtin.common.allow": "允许",
|
||||
"hex.builtin.common.begin": "起始",
|
||||
"hex.builtin.common.big": "大",
|
||||
"hex.builtin.common.big_endian": "大端序",
|
||||
"hex.builtin.common.browse": "浏览...",
|
||||
"hex.builtin.common.bytes": "字节",
|
||||
"hex.builtin.common.cancel": "取消",
|
||||
"hex.builtin.common.choose_file": "选择文件",
|
||||
"hex.builtin.common.close": "关闭",
|
||||
"hex.builtin.common.comment": "注释",
|
||||
"hex.builtin.common.count": "数量",
|
||||
"hex.builtin.common.decimal": "十进制",
|
||||
"hex.builtin.common.deny": "拒绝",
|
||||
"hex.builtin.common.dont_show_again": "不要再次显示",
|
||||
"hex.builtin.common.encoding.ascii": "ASCII",
|
||||
"hex.builtin.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.builtin.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.builtin.common.encoding.utf8": "UTF-8",
|
||||
"hex.builtin.common.end": "末尾",
|
||||
"hex.builtin.common.endian": "端序",
|
||||
"hex.builtin.common.warning": "警告",
|
||||
"hex.builtin.common.error": "错误",
|
||||
"hex.builtin.common.fatal": "致命错误",
|
||||
"hex.builtin.common.file": "文件",
|
||||
"hex.builtin.common.filter": "过滤器",
|
||||
"hex.builtin.common.hexadecimal": "十六进制",
|
||||
"hex.builtin.common.info": "信息",
|
||||
"hex.builtin.common.instruction": "指示",
|
||||
"hex.builtin.common.link": "链接",
|
||||
"hex.builtin.common.little": "小",
|
||||
"hex.builtin.common.little_endian": "小端序",
|
||||
"hex.builtin.common.load": "加载",
|
||||
"hex.builtin.common.match_selection": "匹配选择",
|
||||
"hex.builtin.common.name": "名称",
|
||||
"hex.builtin.common.no": "否",
|
||||
"hex.builtin.common.number_format": "数字进制",
|
||||
"hex.builtin.common.octal": "八进制",
|
||||
"hex.builtin.common.offset": "偏移",
|
||||
"hex.builtin.common.okay": "好的",
|
||||
"hex.builtin.common.open": "打开",
|
||||
"hex.builtin.common.percentage": "百分比",
|
||||
"hex.builtin.common.processing": "处理",
|
||||
"hex.builtin.common.project": "项目",
|
||||
"hex.builtin.common.question": "问题",
|
||||
"hex.builtin.common.range": "范围",
|
||||
"hex.builtin.common.range.entire_data": "所有数据",
|
||||
"hex.builtin.common.range.selection": "选区",
|
||||
"hex.builtin.common.region": "区域",
|
||||
"hex.builtin.common.reset": "重置",
|
||||
"hex.builtin.common.set": "设置",
|
||||
"hex.builtin.common.settings": "设置",
|
||||
"hex.builtin.common.size": "大小",
|
||||
"hex.builtin.common.type": "类型",
|
||||
"hex.builtin.common.type.f32": "float",
|
||||
"hex.builtin.common.type.f64": "double",
|
||||
"hex.builtin.common.type.i16": "int16_t",
|
||||
"hex.builtin.common.type.i24": "int24_t",
|
||||
"hex.builtin.common.type.i32": "int32_t",
|
||||
"hex.builtin.common.type.i48": "int48_t",
|
||||
"hex.builtin.common.type.i64": "int64_t",
|
||||
"hex.builtin.common.type.i8": "int8_t",
|
||||
"hex.builtin.common.type.u16": "uint16_t",
|
||||
"hex.builtin.common.type.u24": "uint24_t",
|
||||
"hex.builtin.common.type.u32": "uint32_t",
|
||||
"hex.builtin.common.type.u48": "uint48_t",
|
||||
"hex.builtin.common.type.u64": "uint64_t",
|
||||
"hex.builtin.common.type.u8": "uint8_t",
|
||||
"hex.builtin.common.value": "值",
|
||||
"hex.builtin.common.yes": "是",
|
||||
"hex.builtin.hash.crc.iv": "初始值",
|
||||
"hex.builtin.hash.crc.poly": "多项式",
|
||||
"hex.builtin.hash.crc.refl_in": "输入值取反",
|
||||
@ -150,18 +80,6 @@
|
||||
"hex.builtin.hash.sha256": "SHA256",
|
||||
"hex.builtin.hash.sha384": "SHA384",
|
||||
"hex.builtin.hash.sha512": "SHA512",
|
||||
"hex.builtin.hex_editor.ascii_view": "显示 ASCII 栏",
|
||||
"hex.builtin.hex_editor.custom_encoding_view": "显示高级解码栏",
|
||||
"hex.builtin.hex_editor.human_readable_units_footer": "将数据转换为人类可读的单位",
|
||||
"hex.builtin.hex_editor.data_size": "总大小",
|
||||
"hex.builtin.hex_editor.gray_out_zero": "显示零字节为灰色",
|
||||
"hex.builtin.hex_editor.no_bytes": "没有可显示的字节",
|
||||
"hex.builtin.hex_editor.page": "分页",
|
||||
"hex.builtin.hex_editor.region": "范围",
|
||||
"hex.builtin.hex_editor.selection": "选区",
|
||||
"hex.builtin.hex_editor.selection.none": "未选中",
|
||||
"hex.builtin.hex_editor.uppercase_hex": "大写十六进制",
|
||||
"hex.builtin.hex_editor.visualizer": "数据处理器的数据可视化格式",
|
||||
"hex.builtin.inspector.ascii": "ASCII 字符",
|
||||
"hex.builtin.inspector.binary": "二进制(8 位)",
|
||||
"hex.builtin.inspector.bool": "bool",
|
||||
@ -422,31 +340,6 @@
|
||||
"hex.builtin.nodes.visualizer.image_rgba.header": "RGBA8 图像可视化",
|
||||
"hex.builtin.nodes.visualizer.layered_dist": "分层布局",
|
||||
"hex.builtin.nodes.visualizer.layered_dist.header": "分层布局",
|
||||
"hex.builtin.pattern_drawer.color": "颜色",
|
||||
"hex.builtin.pattern_drawer.double_click": "双击查看更多",
|
||||
"hex.builtin.pattern_drawer.end": "结束",
|
||||
"hex.builtin.pattern_drawer.export": "导出为...",
|
||||
"hex.builtin.pattern_drawer.favorites": "收藏",
|
||||
"hex.builtin.pattern_drawer.local": "本地",
|
||||
"hex.builtin.pattern_drawer.size": "大小",
|
||||
"hex.builtin.pattern_drawer.spec_name": "显示标准名称",
|
||||
"hex.builtin.pattern_drawer.start": "开始",
|
||||
"hex.builtin.pattern_drawer.tree_style.tree": "树",
|
||||
"hex.builtin.pattern_drawer.tree_style.auto_expanded": "自动展开树",
|
||||
"hex.builtin.pattern_drawer.tree_style.flattened": "扁平化",
|
||||
"hex.builtin.pattern_drawer.type": "类型",
|
||||
"hex.builtin.pattern_drawer.updating": "更新模式中...",
|
||||
"hex.builtin.pattern_drawer.value": "值",
|
||||
"hex.builtin.pattern_drawer.var_name": "名称",
|
||||
"hex.builtin.pattern_drawer.visualizer.unknown": "未知可视化器",
|
||||
"hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "无效参数数",
|
||||
"hex.builtin.pl_visualizer.3d.rotation": "旋转",
|
||||
"hex.builtin.pl_visualizer.3d.scale": "缩放",
|
||||
"hex.builtin.pl_visualizer.coordinates.latitude": "维度",
|
||||
"hex.builtin.pl_visualizer.coordinates.longitude": "精度",
|
||||
"hex.builtin.pl_visualizer.coordinates.query": "查找地址",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying": "正在查找地址...",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying_no_address": "找不到地址",
|
||||
"hex.builtin.popup.close_provider.desc": "",
|
||||
"hex.builtin.popup.close_provider.title": "关闭提供器?",
|
||||
"hex.builtin.popup.docs_question.title": "查找文档",
|
||||
@ -714,76 +607,6 @@
|
||||
"hex.builtin.view.diff.provider_a": "提供者A",
|
||||
"hex.builtin.view.diff.provider_b": "提供者B",
|
||||
"hex.builtin.view.diff.removed": "移除",
|
||||
"hex.builtin.view.disassembler.16bit": "16 位",
|
||||
"hex.builtin.view.disassembler.32bit": "32 位",
|
||||
"hex.builtin.view.disassembler.64bit": "64 位",
|
||||
"hex.builtin.view.disassembler.arch": "架构",
|
||||
"hex.builtin.view.disassembler.arm.arm": "ARM",
|
||||
"hex.builtin.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.builtin.view.disassembler.arm.default": "默认",
|
||||
"hex.builtin.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.builtin.view.disassembler.base": "基地址",
|
||||
"hex.builtin.view.disassembler.bpf.classic": "传统 BPF(cBPF)",
|
||||
"hex.builtin.view.disassembler.bpf.extended": "扩展 BPF(eBPF)",
|
||||
"hex.builtin.view.disassembler.disassemble": "反汇编",
|
||||
"hex.builtin.view.disassembler.disassembling": "反汇编中...",
|
||||
"hex.builtin.view.disassembler.disassembly.address": "地址",
|
||||
"hex.builtin.view.disassembler.disassembly.bytes": "字节",
|
||||
"hex.builtin.view.disassembler.disassembly.offset": "偏移",
|
||||
"hex.builtin.view.disassembler.disassembly.title": "反汇编",
|
||||
"hex.builtin.view.disassembler.m680x.6301": "6301",
|
||||
"hex.builtin.view.disassembler.m680x.6309": "6309",
|
||||
"hex.builtin.view.disassembler.m680x.6800": "6800",
|
||||
"hex.builtin.view.disassembler.m680x.6801": "6801",
|
||||
"hex.builtin.view.disassembler.m680x.6805": "6805",
|
||||
"hex.builtin.view.disassembler.m680x.6808": "6808",
|
||||
"hex.builtin.view.disassembler.m680x.6809": "6809",
|
||||
"hex.builtin.view.disassembler.m680x.6811": "6811",
|
||||
"hex.builtin.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.builtin.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.builtin.view.disassembler.m68k.000": "000",
|
||||
"hex.builtin.view.disassembler.m68k.010": "010",
|
||||
"hex.builtin.view.disassembler.m68k.020": "020",
|
||||
"hex.builtin.view.disassembler.m68k.030": "030",
|
||||
"hex.builtin.view.disassembler.m68k.040": "040",
|
||||
"hex.builtin.view.disassembler.m68k.060": "060",
|
||||
"hex.builtin.view.disassembler.mips.micro": "Micro MIPS",
|
||||
"hex.builtin.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.builtin.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.builtin.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.builtin.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.builtin.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.builtin.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.builtin.view.disassembler.sh.sh2": "SH2",
|
||||
"hex.builtin.view.disassembler.sh.sh2a": "SH2A",
|
||||
"hex.builtin.view.disassembler.sh.sh3": "SH3",
|
||||
"hex.builtin.view.disassembler.sh.sh4": "SH4",
|
||||
"hex.builtin.view.disassembler.sh.sh4a": "SH4A",
|
||||
"hex.builtin.view.disassembler.sh.fpu": "FPU",
|
||||
"hex.builtin.view.disassembler.sh.dsp": "DSP",
|
||||
"hex.builtin.view.disassembler.tricore.110": "110",
|
||||
"hex.builtin.view.disassembler.tricore.120": "120",
|
||||
"hex.builtin.view.disassembler.tricore.130": "130",
|
||||
"hex.builtin.view.disassembler.tricore.131": "131",
|
||||
"hex.builtin.view.disassembler.tricore.160": "160",
|
||||
"hex.builtin.view.disassembler.tricore.161": "161",
|
||||
"hex.builtin.view.disassembler.tricore.162": "162",
|
||||
"hex.builtin.view.disassembler.name": "反汇编",
|
||||
"hex.builtin.view.disassembler.position": "位置",
|
||||
"hex.builtin.view.disassembler.ppc.booke": "PowerPC Book-E",
|
||||
"hex.builtin.view.disassembler.ppc.qpx": "PowerPC 四核处理扩展(QPX)",
|
||||
"hex.builtin.view.disassembler.ppc.spe": "PowerPC 单核引擎(SPE)",
|
||||
"hex.builtin.view.disassembler.region": "代码范围",
|
||||
"hex.builtin.view.disassembler.riscv.compressed": "压缩的 RISC-V",
|
||||
"hex.builtin.view.disassembler.settings.mode": "模式",
|
||||
"hex.builtin.view.disassembler.sparc.v9": "Sparc V9",
|
||||
"hex.builtin.view.find.binary_pattern": "二进制模式",
|
||||
"hex.builtin.view.find.binary_pattern.alignment": "对齐",
|
||||
"hex.builtin.view.find.context.copy": "复制值",
|
||||
@ -993,19 +816,6 @@
|
||||
"hex.builtin.view.theme_manager.save_theme": "保存主题",
|
||||
"hex.builtin.view.theme_manager.styles": "样式",
|
||||
"hex.builtin.view.tools.name": "工具",
|
||||
"hex.builtin.view.yara.error": "Yara 编译器错误: {0}",
|
||||
"hex.builtin.view.yara.header.matches": "匹配",
|
||||
"hex.builtin.view.yara.header.rules": "规则",
|
||||
"hex.builtin.view.yara.match": "匹配规则",
|
||||
"hex.builtin.view.yara.matches.identifier": "标识符",
|
||||
"hex.builtin.view.yara.matches.variable": "变量",
|
||||
"hex.builtin.view.yara.matching": "匹配中...",
|
||||
"hex.builtin.view.yara.name": "Yara 规则",
|
||||
"hex.builtin.view.yara.no_rules": "没有找到 Yara 规则。请将规则放到 ImHex 的 'yara' 目录下。",
|
||||
"hex.builtin.view.yara.reload": "重新加载",
|
||||
"hex.builtin.view.yara.reset": "重置",
|
||||
"hex.builtin.view.yara.rule_added": "Yara 规则已添加!",
|
||||
"hex.builtin.view.yara.whole_data": "全文件匹配!",
|
||||
"hex.builtin.visualizer.binary": "二进制",
|
||||
"hex.builtin.visualizer.decimal.signed.16bit": "有符号十进制(16 位)",
|
||||
"hex.builtin.visualizer.decimal.signed.32bit": "有符号十进制(32 位)",
|
||||
|
@ -63,76 +63,6 @@
|
||||
"hex.builtin.command.cmd.result": "執行命令 '{0}'",
|
||||
"hex.builtin.command.web.desc": "網站查詢",
|
||||
"hex.builtin.command.web.result": "前往 '{0}'",
|
||||
"hex.builtin.common.address": "位址",
|
||||
"hex.builtin.common.allow": "允許",
|
||||
"hex.builtin.common.begin": "起始",
|
||||
"hex.builtin.common.big": "大",
|
||||
"hex.builtin.common.big_endian": "大端序",
|
||||
"hex.builtin.common.browse": "瀏覽...",
|
||||
"hex.builtin.common.bytes": "位元組",
|
||||
"hex.builtin.common.cancel": "取消",
|
||||
"hex.builtin.common.choose_file": "選擇檔案",
|
||||
"hex.builtin.common.close": "關閉",
|
||||
"hex.builtin.common.comment": "註解",
|
||||
"hex.builtin.common.count": "計數",
|
||||
"hex.builtin.common.decimal": "十進位",
|
||||
"hex.builtin.common.deny": "拒絕",
|
||||
"hex.builtin.common.dont_show_again": "不再顯示",
|
||||
"hex.builtin.common.encoding.ascii": "ASCII",
|
||||
"hex.builtin.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.builtin.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.builtin.common.encoding.utf8": "UTF-8",
|
||||
"hex.builtin.common.end": "結尾",
|
||||
"hex.builtin.common.endian": "端序",
|
||||
"hex.builtin.common.warning": "警告",
|
||||
"hex.builtin.common.error": "錯誤",
|
||||
"hex.builtin.common.fatal": "嚴重錯誤",
|
||||
"hex.builtin.common.file": "檔案",
|
||||
"hex.builtin.common.filter": "篩選",
|
||||
"hex.builtin.common.hexadecimal": "十六進位",
|
||||
"hex.builtin.common.info": "資訊",
|
||||
"hex.builtin.common.instruction": "指令",
|
||||
"hex.builtin.common.link": "連結",
|
||||
"hex.builtin.common.little": "小",
|
||||
"hex.builtin.common.little_endian": "小端序",
|
||||
"hex.builtin.common.load": "載入",
|
||||
"hex.builtin.common.match_selection": "符合選取",
|
||||
"hex.builtin.common.name": "名稱",
|
||||
"hex.builtin.common.no": "否",
|
||||
"hex.builtin.common.number_format": "格式",
|
||||
"hex.builtin.common.octal": "八進位",
|
||||
"hex.builtin.common.offset": "位移",
|
||||
"hex.builtin.common.okay": "好",
|
||||
"hex.builtin.common.open": "開啟",
|
||||
"hex.builtin.common.percentage": "百分比",
|
||||
"hex.builtin.common.processing": "正在處理",
|
||||
"hex.builtin.common.project": "專案",
|
||||
"hex.builtin.common.question": "問題",
|
||||
"hex.builtin.common.range": "範圍",
|
||||
"hex.builtin.common.range.entire_data": "整筆資料",
|
||||
"hex.builtin.common.range.selection": "所選",
|
||||
"hex.builtin.common.region": "區域",
|
||||
"hex.builtin.common.reset": "重設",
|
||||
"hex.builtin.common.set": "設定",
|
||||
"hex.builtin.common.settings": "設定",
|
||||
"hex.builtin.common.size": "大小",
|
||||
"hex.builtin.common.type": "類型",
|
||||
"hex.builtin.common.type.f32": "float",
|
||||
"hex.builtin.common.type.f64": "double",
|
||||
"hex.builtin.common.type.i16": "int16_t",
|
||||
"hex.builtin.common.type.i24": "int24_t",
|
||||
"hex.builtin.common.type.i32": "int32_t",
|
||||
"hex.builtin.common.type.i48": "int48_t",
|
||||
"hex.builtin.common.type.i64": "int64_t",
|
||||
"hex.builtin.common.type.i8": "int8_t",
|
||||
"hex.builtin.common.type.u16": "uint16_t",
|
||||
"hex.builtin.common.type.u24": "uint24_t",
|
||||
"hex.builtin.common.type.u32": "uint32_t",
|
||||
"hex.builtin.common.type.u48": "uint48_t",
|
||||
"hex.builtin.common.type.u64": "uint64_t",
|
||||
"hex.builtin.common.type.u8": "uint8_t",
|
||||
"hex.builtin.common.value": "數值",
|
||||
"hex.builtin.common.yes": "是",
|
||||
"hex.builtin.hash.crc.iv": "初始數值",
|
||||
"hex.builtin.hash.crc.poly": "多項式",
|
||||
"hex.builtin.hash.crc.refl_in": "Reflect In",
|
||||
@ -150,18 +80,6 @@
|
||||
"hex.builtin.hash.sha256": "SHA256",
|
||||
"hex.builtin.hash.sha384": "SHA384",
|
||||
"hex.builtin.hash.sha512": "SHA512",
|
||||
"hex.builtin.hex_editor.ascii_view": "顯示 ASCII 欄",
|
||||
"hex.builtin.hex_editor.custom_encoding_view": "顯示進階解碼欄",
|
||||
"hex.builtin.hex_editor.human_readable_units_footer": "將大小轉換成較為易讀的單位",
|
||||
"hex.builtin.hex_editor.data_size": "資料大小",
|
||||
"hex.builtin.hex_editor.gray_out_zero": "Grey out zeros",
|
||||
"hex.builtin.hex_editor.no_bytes": "無可用位元組",
|
||||
"hex.builtin.hex_editor.page": "頁面",
|
||||
"hex.builtin.hex_editor.region": "區域",
|
||||
"hex.builtin.hex_editor.selection": "選取",
|
||||
"hex.builtin.hex_editor.selection.none": "無",
|
||||
"hex.builtin.hex_editor.uppercase_hex": "十六進位使用大寫字母",
|
||||
"hex.builtin.hex_editor.visualizer": "資料可視化工具",
|
||||
"hex.builtin.inspector.ascii": "ASCII 字元",
|
||||
"hex.builtin.inspector.binary": "二進位 (8 位元)",
|
||||
"hex.builtin.inspector.bool": "bool",
|
||||
@ -422,31 +340,6 @@
|
||||
"hex.builtin.nodes.visualizer.image_rgba.header": "RGBA8 圖片視覺化工具",
|
||||
"hex.builtin.nodes.visualizer.layered_dist": "Layered Distribution",
|
||||
"hex.builtin.nodes.visualizer.layered_dist.header": "Layered Distribution",
|
||||
"hex.builtin.pattern_drawer.color": "顏色",
|
||||
"hex.builtin.pattern_drawer.double_click": "點擊兩下以檢視更多項目",
|
||||
"hex.builtin.pattern_drawer.end": "結尾",
|
||||
"hex.builtin.pattern_drawer.export": "匯出模式為...",
|
||||
"hex.builtin.pattern_drawer.favorites": "",
|
||||
"hex.builtin.pattern_drawer.local": "",
|
||||
"hex.builtin.pattern_drawer.size": "大小",
|
||||
"hex.builtin.pattern_drawer.spec_name": "Display specification names",
|
||||
"hex.builtin.pattern_drawer.start": "起始",
|
||||
"hex.builtin.pattern_drawer.tree_style.tree": "樹",
|
||||
"hex.builtin.pattern_drawer.tree_style.auto_expanded": "",
|
||||
"hex.builtin.pattern_drawer.tree_style.flattened": "",
|
||||
"hex.builtin.pattern_drawer.type": "類型",
|
||||
"hex.builtin.pattern_drawer.updating": "正在更新模式...",
|
||||
"hex.builtin.pattern_drawer.value": "數值",
|
||||
"hex.builtin.pattern_drawer.var_name": "名稱",
|
||||
"hex.builtin.pattern_drawer.visualizer.unknown": "",
|
||||
"hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "",
|
||||
"hex.builtin.pl_visualizer.3d.rotation": "",
|
||||
"hex.builtin.pl_visualizer.3d.scale": "",
|
||||
"hex.builtin.pl_visualizer.coordinates.latitude": "緯度",
|
||||
"hex.builtin.pl_visualizer.coordinates.longitude": "經度",
|
||||
"hex.builtin.pl_visualizer.coordinates.query": "查詢地址",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying": "正在查詢地址...",
|
||||
"hex.builtin.pl_visualizer.coordinates.querying_no_address": "找不到地址",
|
||||
"hex.builtin.popup.close_provider.desc": "",
|
||||
"hex.builtin.popup.close_provider.title": "關閉提供者?",
|
||||
"hex.builtin.popup.docs_question.title": "說明文件查詢",
|
||||
@ -714,76 +607,6 @@
|
||||
"hex.builtin.view.diff.provider_a": "提供者 A",
|
||||
"hex.builtin.view.diff.provider_b": "提供者 B",
|
||||
"hex.builtin.view.diff.removed": "已移除",
|
||||
"hex.builtin.view.disassembler.16bit": "16 位元",
|
||||
"hex.builtin.view.disassembler.32bit": "32 位元",
|
||||
"hex.builtin.view.disassembler.64bit": "64 位元",
|
||||
"hex.builtin.view.disassembler.arch": "架構",
|
||||
"hex.builtin.view.disassembler.arm.arm": "ARM",
|
||||
"hex.builtin.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.builtin.view.disassembler.arm.default": "預設",
|
||||
"hex.builtin.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.builtin.view.disassembler.base": "基址",
|
||||
"hex.builtin.view.disassembler.bpf.classic": "經典",
|
||||
"hex.builtin.view.disassembler.bpf.extended": "擴充",
|
||||
"hex.builtin.view.disassembler.disassemble": "解譯",
|
||||
"hex.builtin.view.disassembler.disassembling": "正在反組譯...",
|
||||
"hex.builtin.view.disassembler.disassembly.address": "位址",
|
||||
"hex.builtin.view.disassembler.disassembly.bytes": "位元",
|
||||
"hex.builtin.view.disassembler.disassembly.offset": "位移",
|
||||
"hex.builtin.view.disassembler.disassembly.title": "反組譯",
|
||||
"hex.builtin.view.disassembler.m680x.6301": "6301",
|
||||
"hex.builtin.view.disassembler.m680x.6309": "6309",
|
||||
"hex.builtin.view.disassembler.m680x.6800": "6800",
|
||||
"hex.builtin.view.disassembler.m680x.6801": "6801",
|
||||
"hex.builtin.view.disassembler.m680x.6805": "6805",
|
||||
"hex.builtin.view.disassembler.m680x.6808": "6808",
|
||||
"hex.builtin.view.disassembler.m680x.6809": "6809",
|
||||
"hex.builtin.view.disassembler.m680x.6811": "6811",
|
||||
"hex.builtin.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.builtin.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.builtin.view.disassembler.m68k.000": "000",
|
||||
"hex.builtin.view.disassembler.m68k.010": "010",
|
||||
"hex.builtin.view.disassembler.m68k.020": "020",
|
||||
"hex.builtin.view.disassembler.m68k.030": "030",
|
||||
"hex.builtin.view.disassembler.m68k.040": "040",
|
||||
"hex.builtin.view.disassembler.m68k.060": "060",
|
||||
"hex.builtin.view.disassembler.mips.micro": "Micro",
|
||||
"hex.builtin.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.builtin.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.builtin.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.builtin.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.builtin.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.builtin.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.builtin.view.disassembler.sh.sh2": "SH2",
|
||||
"hex.builtin.view.disassembler.sh.sh2a": "SH2A",
|
||||
"hex.builtin.view.disassembler.sh.sh3": "SH3",
|
||||
"hex.builtin.view.disassembler.sh.sh4": "SH4",
|
||||
"hex.builtin.view.disassembler.sh.sh4a": "SH4A",
|
||||
"hex.builtin.view.disassembler.sh.fpu": "FPU",
|
||||
"hex.builtin.view.disassembler.sh.dsp": "DSP",
|
||||
"hex.builtin.view.disassembler.tricore.110": "110",
|
||||
"hex.builtin.view.disassembler.tricore.120": "120",
|
||||
"hex.builtin.view.disassembler.tricore.130": "130",
|
||||
"hex.builtin.view.disassembler.tricore.131": "131",
|
||||
"hex.builtin.view.disassembler.tricore.160": "160",
|
||||
"hex.builtin.view.disassembler.tricore.161": "161",
|
||||
"hex.builtin.view.disassembler.tricore.162": "162",
|
||||
"hex.builtin.view.disassembler.name": "反組譯器",
|
||||
"hex.builtin.view.disassembler.position": "位置",
|
||||
"hex.builtin.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.builtin.view.disassembler.ppc.spe": "訊號處理引擎",
|
||||
"hex.builtin.view.disassembler.region": "程式碼區域",
|
||||
"hex.builtin.view.disassembler.riscv.compressed": "Compressed",
|
||||
"hex.builtin.view.disassembler.settings.mode": "模式",
|
||||
"hex.builtin.view.disassembler.sparc.v9": "Sparc V9",
|
||||
"hex.builtin.view.find.binary_pattern": "二進位模式",
|
||||
"hex.builtin.view.find.binary_pattern.alignment": "",
|
||||
"hex.builtin.view.find.context.copy": "複製數值",
|
||||
@ -993,19 +816,6 @@
|
||||
"hex.builtin.view.theme_manager.save_theme": "儲存主題",
|
||||
"hex.builtin.view.theme_manager.styles": "樣式",
|
||||
"hex.builtin.view.tools.name": "工具",
|
||||
"hex.builtin.view.yara.error": "Yara 編譯器錯誤:",
|
||||
"hex.builtin.view.yara.header.matches": "Matches",
|
||||
"hex.builtin.view.yara.header.rules": "規則",
|
||||
"hex.builtin.view.yara.match": "Match Rules",
|
||||
"hex.builtin.view.yara.matches.identifier": "識別碼",
|
||||
"hex.builtin.view.yara.matches.variable": "變數",
|
||||
"hex.builtin.view.yara.matching": "Matching...",
|
||||
"hex.builtin.view.yara.name": "Yara 規則",
|
||||
"hex.builtin.view.yara.no_rules": "找不到 YARA 規則。請放進 ImHex 的 'yara' 資料夾中",
|
||||
"hex.builtin.view.yara.reload": "重新載入",
|
||||
"hex.builtin.view.yara.reset": "重設",
|
||||
"hex.builtin.view.yara.rule_added": " Yara 規則已新增!",
|
||||
"hex.builtin.view.yara.whole_data": "Whole file matches!",
|
||||
"hex.builtin.visualizer.binary": "",
|
||||
"hex.builtin.visualizer.decimal.signed.16bit": "十進位有號數 (16 位元)",
|
||||
"hex.builtin.visualizer.decimal.signed.32bit": "十進位有號數 (32 位元)",
|
||||
|
@ -55,7 +55,7 @@ Pos=-1889,-120
|
||||
Size=510,420
|
||||
Collapsed=0
|
||||
|
||||
[Window][###hex.builtin.view.yara.name]
|
||||
[Window][###hex.yara_rules.view.yara.name]
|
||||
Pos=720,38
|
||||
Size=560,660
|
||||
Collapsed=0
|
||||
@ -127,7 +127,7 @@ Pos=419,-124
|
||||
Size=652,660
|
||||
Collapsed=0
|
||||
|
||||
[Window][###hex.builtin.view.disassembler.name]
|
||||
[Window][###hex.disassembler.view.disassembler.name]
|
||||
Pos=1004,-204
|
||||
Size=1336,1320
|
||||
Collapsed=0
|
||||
@ -150,7 +150,7 @@ hex.builtin.view.constants.name=0
|
||||
hex.builtin.view.data_inspector.name=1
|
||||
hex.builtin.view.data_processor.name=0
|
||||
hex.builtin.view.diff.name=0
|
||||
hex.builtin.view.disassembler.name=0
|
||||
hex.disassembler.view.disassembler.name=0
|
||||
hex.builtin.view.find.name=0
|
||||
hex.builtin.view.hashes.name=0
|
||||
hex.builtin.view.help.about.name=0
|
||||
@ -164,5 +164,5 @@ hex.builtin.view.settings.name=0
|
||||
hex.builtin.view.store.name=0
|
||||
hex.builtin.view.theme_manager.name=0
|
||||
hex.builtin.view.tools.name=0
|
||||
hex.builtin.view.yara.name=0
|
||||
hex.yara_rules.view.yara.name=0
|
||||
hex.windows.view.tty_console.name=0
|
@ -55,7 +55,7 @@ Pos=-1889,-120
|
||||
Size=510,420
|
||||
Collapsed=0
|
||||
|
||||
[Window][###hex.builtin.view.yara.name]
|
||||
[Window][###hex.yara_rules.view.yara.name]
|
||||
Pos=720,38
|
||||
Size=560,660
|
||||
Collapsed=0
|
||||
@ -127,7 +127,7 @@ Pos=419,-124
|
||||
Size=652,660
|
||||
Collapsed=0
|
||||
|
||||
[Window][###hex.builtin.view.disassembler.name]
|
||||
[Window][###hex.disassembler.view.disassembler.name]
|
||||
Pos=1004,-204
|
||||
Size=1336,1320
|
||||
Collapsed=0
|
||||
@ -151,7 +151,7 @@ hex.builtin.view.constants.name=0
|
||||
hex.builtin.view.data_inspector.name=0
|
||||
hex.builtin.view.data_processor.name=0
|
||||
hex.builtin.view.diff.name=0
|
||||
hex.builtin.view.disassembler.name=0
|
||||
hex.disassembler.view.disassembler.name=0
|
||||
hex.builtin.view.find.name=0
|
||||
hex.builtin.view.hashes.name=0
|
||||
hex.builtin.view.help.about.name=0
|
||||
@ -167,7 +167,7 @@ hex.builtin.view.settings.name=0
|
||||
hex.builtin.view.store.name=0
|
||||
hex.builtin.view.theme_manager.name=0
|
||||
hex.builtin.view.tools.name=0
|
||||
hex.builtin.view.yara.name=0
|
||||
hex.yara_rules.view.yara.name=0
|
||||
hex.windows.view.tty_console.name=0
|
||||
hex.builtin.tools.demangler=0
|
||||
hex.builtin.tools.ascii_table=0
|
||||
|
@ -4,8 +4,8 @@
|
||||
|
||||
#include <hex/helpers/crypto.hpp>
|
||||
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <content/popups/popup_text_input.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
#include <popups/popup_text_input.hpp>
|
||||
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <romfs/romfs.hpp>
|
||||
@ -276,11 +276,11 @@ namespace hex::plugin::builtin {
|
||||
if (password.empty())
|
||||
achievement.setUnlocked(true);
|
||||
else
|
||||
PopupTextInput::open("Enter Password", "Enter the password to unlock this achievement", [password, &achievement](const std::string &input) {
|
||||
ui::PopupTextInput::open("Enter Password", "Enter the password to unlock this achievement", [password, &achievement](const std::string &input) {
|
||||
if (input == password)
|
||||
achievement.setUnlocked(true);
|
||||
else
|
||||
PopupInfo::open("The password you entered was incorrect.");
|
||||
ui::PopupInfo::open("The password you entered was incorrect.");
|
||||
});
|
||||
});
|
||||
|
||||
@ -301,7 +301,7 @@ namespace hex::plugin::builtin {
|
||||
return false;
|
||||
}
|
||||
|
||||
PopupInfo::open(challengeDescription);
|
||||
ui::PopupInfo::open(challengeDescription);
|
||||
|
||||
|
||||
return true;
|
||||
|
@ -197,7 +197,7 @@ namespace hex::plugin::builtin {
|
||||
|
||||
class NodeBufferPatch : public dp::Node {
|
||||
public:
|
||||
NodeBufferPatch() : Node("hex.builtin.nodes.buffer.patch.header", { dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Buffer, "hex.builtin.nodes.common.input"), dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Buffer, "hex.builtin.nodes.buffer.patch.input.patch"), dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Integer, "hex.builtin.common.address"), dp::Attribute(dp::Attribute::IOType::Out, dp::Attribute::Type::Buffer, "hex.builtin.nodes.common.output") }) { }
|
||||
NodeBufferPatch() : Node("hex.builtin.nodes.buffer.patch.header", { dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Buffer, "hex.builtin.nodes.common.input"), dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Buffer, "hex.builtin.nodes.buffer.patch.input.patch"), dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Integer, "hex.ui.common.address"), dp::Attribute(dp::Attribute::IOType::Out, dp::Attribute::Type::Buffer, "hex.builtin.nodes.common.output") }) { }
|
||||
|
||||
void process() override {
|
||||
auto buffer = this->getBufferOnInput(0);
|
||||
|
@ -14,8 +14,8 @@
|
||||
#include <wolv/io/fs.hpp>
|
||||
#include <wolv/utils/string.hpp>
|
||||
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <content/popups/popup_question.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
#include <popups/popup_question.hpp>
|
||||
#include <content/popups/popup_tasks_waiting.hpp>
|
||||
#include <content/popups/popup_unsaved_changes.hpp>
|
||||
|
||||
@ -26,7 +26,7 @@ namespace hex::plugin::builtin {
|
||||
if (auto *fileProvider = dynamic_cast<FileProvider*>(provider); fileProvider != nullptr) {
|
||||
fileProvider->setPath(path);
|
||||
if (!provider->open() || !provider->isAvailable()) {
|
||||
PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
ui::PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
|
||||
} else {
|
||||
EventProviderOpened::post(fileProvider);
|
||||
@ -41,7 +41,7 @@ namespace hex::plugin::builtin {
|
||||
imhexClosing = false;
|
||||
if (ImHexApi::Provider::isDirty() && !imhexClosing) {
|
||||
glfwSetWindowShouldClose(window, GLFW_FALSE);
|
||||
PopupQuestion::open("hex.builtin.popup.exit_application.desc"_lang,
|
||||
ui::PopupQuestion::open("hex.builtin.popup.exit_application.desc"_lang,
|
||||
[] {
|
||||
imhexClosing = true;
|
||||
for (const auto &provider : auto(ImHexApi::Provider::getProviders()))
|
||||
@ -104,7 +104,7 @@ namespace hex::plugin::builtin {
|
||||
fs::openFileBrowser(fs::DialogMode::Open, { }, [](const auto &path) {
|
||||
if (path.extension() == ".hexproj") {
|
||||
if (!ProjectFile::load(path)) {
|
||||
PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path)));
|
||||
ui::PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path)));
|
||||
}
|
||||
} else {
|
||||
FileProvider* newProvider = static_cast<FileProvider*>(
|
||||
@ -128,7 +128,7 @@ namespace hex::plugin::builtin {
|
||||
fs::openFileBrowser(fs::DialogMode::Open, { {"Project File", "hexproj"} },
|
||||
[](const auto &path) {
|
||||
if (!ProjectFile::load(path)) {
|
||||
PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path)));
|
||||
ui::PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path)));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -149,7 +149,7 @@ namespace hex::plugin::builtin {
|
||||
return;
|
||||
}
|
||||
if (!provider->open()) {
|
||||
PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
ui::PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
|
||||
return;
|
||||
}
|
||||
@ -158,7 +158,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
else if (!provider->hasLoadInterface()) {
|
||||
if (!provider->open() || !provider->isAvailable()) {
|
||||
PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
ui::PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
|
||||
return;
|
||||
}
|
||||
@ -172,22 +172,22 @@ namespace hex::plugin::builtin {
|
||||
});
|
||||
|
||||
RequestOpenInfoPopup::subscribe([](const std::string &message) {
|
||||
PopupInfo::open(message);
|
||||
ui::PopupInfo::open(message);
|
||||
});
|
||||
|
||||
RequestOpenErrorPopup::subscribe([](const std::string &message) {
|
||||
PopupError::open(message);
|
||||
ui::PopupError::open(message);
|
||||
});
|
||||
|
||||
RequestOpenFatalPopup::subscribe([](const std::string &message) {
|
||||
PopupFatal::open(message);
|
||||
ui::PopupFatal::open(message);
|
||||
});
|
||||
|
||||
fs::setFileBrowserErrorCallback([](const std::string& errMsg){
|
||||
#if defined(NFD_PORTAL)
|
||||
PopupError::open(hex::format("hex.builtin.popup.error.file_dialog.portal"_lang, errMsg));
|
||||
ui::PopupError::open(hex::format("hex.builtin.popup.error.file_dialog.portal"_lang, errMsg));
|
||||
#else
|
||||
PopupError::open(hex::format("hex.builtin.popup.error.file_dialog.common"_lang, errMsg));
|
||||
ui::PopupError::open(hex::format("hex.builtin.popup.error.file_dialog.common"_lang, errMsg));
|
||||
#endif
|
||||
});
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
#include <hex/api/project_file_manager.hpp>
|
||||
#include <hex/helpers/logger.hpp>
|
||||
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
|
||||
#include <wolv/utils/string.hpp>
|
||||
|
||||
@ -13,7 +13,7 @@ namespace hex::plugin::builtin {
|
||||
fs::openFileBrowser(fs::DialogMode::Open, { {"Project File", "hexproj"} },
|
||||
[](const auto &path) {
|
||||
if (!ProjectFile::load(path)) {
|
||||
PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path)));
|
||||
ui::PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path)));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -21,7 +21,7 @@ namespace hex::plugin::builtin {
|
||||
void saveProject() {
|
||||
if (ImHexApi::Provider::isValid() && ProjectFile::hasPath()) {
|
||||
if (!ProjectFile::store()) {
|
||||
PopupError::open("hex.builtin.popup.error.project.save"_lang);
|
||||
ui::PopupError::open("hex.builtin.popup.error.project.save"_lang);
|
||||
} else {
|
||||
log::debug("Project saved");
|
||||
}
|
||||
@ -36,7 +36,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
|
||||
if (!ProjectFile::store(path)) {
|
||||
PopupError::open("hex.builtin.popup.error.project.save"_lang);
|
||||
ui::PopupError::open("hex.builtin.popup.error.project.save"_lang);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1,16 +1,16 @@
|
||||
#include <hex/helpers/logger.hpp>
|
||||
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
|
||||
void showError(const std::string& message){
|
||||
PopupError::open(message);
|
||||
ui::PopupError::open(message);
|
||||
log::error(message);
|
||||
}
|
||||
|
||||
void showWarning(const std::string& message){
|
||||
PopupWarning::open(message);
|
||||
ui::PopupWarning::open(message);
|
||||
log::warn(message);
|
||||
}
|
||||
}
|
||||
|
@ -14,8 +14,8 @@
|
||||
#include <hex/helpers/debugging.hpp>
|
||||
|
||||
#include <content/global_actions.hpp>
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <content/popups/popup_text_input.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
#include <popups/popup_text_input.hpp>
|
||||
#include <hex/api/workspace_manager.hpp>
|
||||
|
||||
#include <wolv/io/file.hpp>
|
||||
@ -50,19 +50,19 @@ namespace hex::plugin::builtin {
|
||||
TaskManager::doLater([error]{
|
||||
switch (error) {
|
||||
case IPSError::InvalidPatchHeader:
|
||||
PopupError::open("hex.builtin.menu.file.export.ips.popup.invalid_patch_header_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.invalid_patch_header_error"_lang);
|
||||
break;
|
||||
case IPSError::AddressOutOfRange:
|
||||
PopupError::open("hex.builtin.menu.file.export.ips.popup.address_out_of_range_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.address_out_of_range_error"_lang);
|
||||
break;
|
||||
case IPSError::PatchTooLarge:
|
||||
PopupError::open("hex.builtin.menu.file.export.ips.popup.patch_too_large_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.patch_too_large_error"_lang);
|
||||
break;
|
||||
case IPSError::InvalidPatchFormat:
|
||||
PopupError::open("hex.builtin.menu.file.export.ips.popup.invalid_patch_format_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.invalid_patch_format_error"_lang);
|
||||
break;
|
||||
case IPSError::MissingEOF:
|
||||
PopupError::open("hex.builtin.menu.file.export.ips.popup.missing_eof_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.missing_eof_error"_lang);
|
||||
break;
|
||||
}
|
||||
});
|
||||
@ -77,7 +77,7 @@ namespace hex::plugin::builtin {
|
||||
fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) {
|
||||
wolv::io::File inputFile(path, wolv::io::File::Mode::Read);
|
||||
if (!inputFile.isValid()) {
|
||||
PopupError::open("hex.builtin.menu.file.import.base64.popup.open_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.import.base64.popup.open_error"_lang);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -87,26 +87,26 @@ namespace hex::plugin::builtin {
|
||||
auto data = crypt::decode64(base64);
|
||||
|
||||
if (data.empty())
|
||||
PopupError::open("hex.builtin.menu.file.import.base64.popup.import_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.import.base64.popup.import_error"_lang);
|
||||
else {
|
||||
fs::openFileBrowser(fs::DialogMode::Save, {}, [&data](const std::fs::path &path) {
|
||||
wolv::io::File outputFile(path, wolv::io::File::Mode::Create);
|
||||
|
||||
if (!outputFile.isValid())
|
||||
PopupError::open("hex.builtin.menu.file.import.base64.popup.import_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.import.base64.popup.import_error"_lang);
|
||||
|
||||
outputFile.writeVector(data);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
PopupError::open("hex.builtin.popup.file_open_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.popup.file_open_error"_lang);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void importIPSPatch() {
|
||||
fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) {
|
||||
TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [path](auto &task) {
|
||||
TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [path](auto &task) {
|
||||
auto patchData = wolv::io::File(path, wolv::io::File::Mode::Read).readVector();
|
||||
auto patch = Patches::fromIPSPatch(patchData);
|
||||
if (!patch.has_value()) {
|
||||
@ -132,7 +132,7 @@ namespace hex::plugin::builtin {
|
||||
|
||||
void importIPS32Patch() {
|
||||
fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) {
|
||||
TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [path](auto &task) {
|
||||
TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [path](auto &task) {
|
||||
auto patchData = wolv::io::File(path, wolv::io::File::Mode::Read).readVector();
|
||||
auto patch = Patches::fromIPS32Patch(patchData);
|
||||
if (!patch.has_value()) {
|
||||
@ -158,12 +158,12 @@ namespace hex::plugin::builtin {
|
||||
|
||||
void importModifiedFile() {
|
||||
fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) {
|
||||
TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [path](auto &task) {
|
||||
TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [path](auto &task) {
|
||||
auto provider = ImHexApi::Provider::get();
|
||||
auto patchData = wolv::io::File(path, wolv::io::File::Mode::Read).readVector();
|
||||
|
||||
if (patchData.size() != provider->getActualSize()) {
|
||||
PopupError::open("hex.builtin.menu.file.import.modified_file.popup.invalid_size"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.import.modified_file.popup.invalid_size"_lang);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -199,11 +199,11 @@ namespace hex::plugin::builtin {
|
||||
|
||||
void exportBase64() {
|
||||
fs::openFileBrowser(fs::DialogMode::Save, {}, [](const auto &path) {
|
||||
TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [path](auto &) {
|
||||
TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [path](auto &) {
|
||||
wolv::io::File outputFile(path, wolv::io::File::Mode::Create);
|
||||
if (!outputFile.isValid()) {
|
||||
TaskManager::doLater([] {
|
||||
PopupError::open("hex.builtin.menu.file.export.base64.popup.export_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.export.base64.popup.export_error"_lang);
|
||||
});
|
||||
return;
|
||||
}
|
||||
@ -238,7 +238,7 @@ namespace hex::plugin::builtin {
|
||||
wolv::io::File file(path, wolv::io::File::Mode::Create);
|
||||
if (!file.isValid()) {
|
||||
TaskManager::doLater([] {
|
||||
PopupError::open("hex.builtin.menu.file.export.as_language.popup.export_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.export.as_language.popup.export_error"_lang);
|
||||
});
|
||||
return;
|
||||
}
|
||||
@ -251,7 +251,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
|
||||
void exportReport() {
|
||||
TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [](auto &) {
|
||||
TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [](auto &) {
|
||||
std::string data;
|
||||
|
||||
for (const auto &provider : ImHexApi::Provider::getProviders()) {
|
||||
@ -269,7 +269,7 @@ namespace hex::plugin::builtin {
|
||||
fs::openFileBrowser(fs::DialogMode::Save, { { "Markdown File", "md" }}, [&data](const auto &path) {
|
||||
auto file = wolv::io::File(path, wolv::io::File::Mode::Create);
|
||||
if (!file.isValid()) {
|
||||
PopupError::open("hex.builtin.menu.file.export.report.popup.export_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.export.report.popup.export_error"_lang);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -295,14 +295,14 @@ namespace hex::plugin::builtin {
|
||||
patches->get().at(0x00454F45) = value;
|
||||
}
|
||||
|
||||
TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [patches](auto &) {
|
||||
TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [patches](auto &) {
|
||||
auto data = patches->toIPSPatch();
|
||||
|
||||
TaskManager::doLater([data] {
|
||||
fs::openFileBrowser(fs::DialogMode::Save, {}, [&data](const auto &path) {
|
||||
auto file = wolv::io::File(path, wolv::io::File::Mode::Create);
|
||||
if (!file.isValid()) {
|
||||
PopupError::open("hex.builtin.menu.file.export.ips.popup.export_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.export_error"_lang);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -334,14 +334,14 @@ namespace hex::plugin::builtin {
|
||||
patches->get().at(0x45454F45) = value;
|
||||
}
|
||||
|
||||
TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [patches](auto &) {
|
||||
TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [patches](auto &) {
|
||||
auto data = patches->toIPS32Patch();
|
||||
|
||||
TaskManager::doLater([data] {
|
||||
fs::openFileBrowser(fs::DialogMode::Save, {}, [&data](const auto &path) {
|
||||
auto file = wolv::io::File(path, wolv::io::File::Mode::Create);
|
||||
if (!file.isValid()) {
|
||||
PopupError::open("hex.builtin.menu.file.export.ips.popup.export_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.export_error"_lang);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -542,14 +542,14 @@ namespace hex::plugin::builtin {
|
||||
ContentRegistry::Interface::registerMainMenuItem("hex.builtin.menu.workspace", 4000);
|
||||
|
||||
ContentRegistry::Interface::addMenuItem({ "hex.builtin.menu.workspace", "hex.builtin.menu.workspace.layout", "hex.builtin.menu.workspace.layout.save" }, 1100, Shortcut::None, [] {
|
||||
PopupTextInput::open("hex.builtin.popup.save_layout.title", "hex.builtin.popup.save_layout.desc", [](const std::string &name) {
|
||||
ui::PopupTextInput::open("hex.builtin.popup.save_layout.title", "hex.builtin.popup.save_layout.desc", [](const std::string &name) {
|
||||
LayoutManager::save(name);
|
||||
});
|
||||
}, ImHexApi::Provider::isValid);
|
||||
|
||||
ContentRegistry::Interface::addMenuItemSubMenu({ "hex.builtin.menu.workspace", "hex.builtin.menu.workspace.layout" }, 1150, [] {
|
||||
bool locked = LayoutManager::isLayoutLocked();
|
||||
if (ImGui::MenuItem("hex.builtin.menu.workspace.layout.lock", nullptr, &locked, ImHexApi::Provider::isValid())) {
|
||||
if (ImGui::MenuItem("hex.builtin.menu.workspace.layout.lock"_lang, nullptr, &locked, ImHexApi::Provider::isValid())) {
|
||||
LayoutManager::lockLayout(locked);
|
||||
ContentRegistry::Settings::write("hex.builtin.setting.interface", "hex.builtin.setting.interface.layout_locked", locked);
|
||||
}
|
||||
@ -584,7 +584,7 @@ namespace hex::plugin::builtin {
|
||||
ContentRegistry::Interface::addMenuItemSeparator({ "hex.builtin.menu.workspace" }, 3000);
|
||||
|
||||
ContentRegistry::Interface::addMenuItem({ "hex.builtin.menu.workspace", "hex.builtin.menu.workspace.create" }, 3100, Shortcut::None, [] {
|
||||
PopupTextInput::open("hex.builtin.popup.create_workspace.title", "hex.builtin.popup.create_workspace.desc", [](const std::string &name) {
|
||||
ui::PopupTextInput::open("hex.builtin.popup.create_workspace.title", "hex.builtin.popup.create_workspace.desc", [](const std::string &name) {
|
||||
WorkspaceManager::createWorkspace(name);
|
||||
});
|
||||
}, ImHexApi::Provider::isValid);
|
||||
|
@ -1,36 +1,18 @@
|
||||
#include <hex/api/imhex_api.hpp>
|
||||
#include <hex/api/content_registry.hpp>
|
||||
|
||||
#include <pl/patterns/pattern.hpp>
|
||||
|
||||
#include <pl/core/evaluator.hpp>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
|
||||
void drawLinePlotVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
void drawScatterPlotVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
void drawImageVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
void drawBitmapVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
void drawDisassemblyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
void draw3DVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
void drawSoundVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
void drawChunkBasedEntropyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
void drawHexVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
void drawCoordinateVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
void drawTimestampVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
void drawChunkBasedEntropyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
|
||||
void registerPatternLanguageVisualizers() {
|
||||
using ParamCount = pl::api::FunctionParameterCount;
|
||||
|
||||
ContentRegistry::PatternLanguage::addVisualizer("line_plot", drawLinePlotVisualizer, ParamCount::exactly(1));
|
||||
ContentRegistry::PatternLanguage::addVisualizer("scatter_plot", drawScatterPlotVisualizer, ParamCount::exactly(2));
|
||||
ContentRegistry::PatternLanguage::addVisualizer("image", drawImageVisualizer, ParamCount::exactly(1));
|
||||
ContentRegistry::PatternLanguage::addVisualizer("bitmap", drawBitmapVisualizer, ParamCount::exactly(3));
|
||||
ContentRegistry::PatternLanguage::addVisualizer("disassembler", drawDisassemblyVisualizer, ParamCount::exactly(4));
|
||||
ContentRegistry::PatternLanguage::addVisualizer("3d", draw3DVisualizer, ParamCount::between(2, 6));
|
||||
ContentRegistry::PatternLanguage::addVisualizer("sound", drawSoundVisualizer, ParamCount::exactly(3));
|
||||
ContentRegistry::PatternLanguage::addVisualizer("hex_viewer", drawHexVisualizer, ParamCount::exactly(1));
|
||||
ContentRegistry::PatternLanguage::addVisualizer("chunk_entropy", drawChunkBasedEntropyVisualizer, ParamCount::exactly(2));
|
||||
ContentRegistry::PatternLanguage::addVisualizer("hex_viewer", drawHexVisualizer, ParamCount::exactly(1));
|
||||
ContentRegistry::PatternLanguage::addVisualizer("coordinates", drawCoordinateVisualizer, ParamCount::exactly(2));
|
||||
ContentRegistry::PatternLanguage::addVisualizer("timestamp", drawTimestampVisualizer, ParamCount::exactly(1));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -1,13 +1,11 @@
|
||||
#include <hex/helpers/utils.hpp>
|
||||
|
||||
#include <content/pl_visualizers/visualizer_helpers.hpp>
|
||||
|
||||
#include <implot.h>
|
||||
#include <imgui.h>
|
||||
#include <content/helpers/diagrams.hpp>
|
||||
|
||||
#include <hex/ui/imgui_imhex_extensions.h>
|
||||
|
||||
#include <pl/patterns/pattern.hpp>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
|
||||
void drawChunkBasedEntropyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool shouldReset, std::span<const pl::core::Token::Literal> arguments) {
|
||||
|
@ -1,9 +1,10 @@
|
||||
#include <hex/helpers/utils.hpp>
|
||||
|
||||
#include <content/pl_visualizers/visualizer_helpers.hpp>
|
||||
|
||||
#include <imgui.h>
|
||||
|
||||
#include <pl/pattern_language.hpp>
|
||||
#include <pl/patterns/pattern.hpp>
|
||||
|
||||
#include <hex/ui/imgui_imhex_extensions.h>
|
||||
#include <ui/hex_editor.hpp>
|
||||
#include <content/providers/memory_file_provider.hpp>
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include "content/providers/memory_file_provider.hpp"
|
||||
#include "content/providers/view_provider.hpp"
|
||||
#include <content/providers/process_memory_provider.hpp>
|
||||
#include "content/popups/popup_notification.hpp"
|
||||
#include <popups/popup_notification.hpp>
|
||||
#include "content/helpers/notification.hpp"
|
||||
|
||||
#include <hex/api/project_file_manager.hpp>
|
||||
|
@ -289,7 +289,7 @@ namespace hex::plugin::builtin {
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
ImGuiExt::InputHexadecimal("hex.builtin.common.size"_lang, &m_size, ImGuiInputTextFlags_CharsHexadecimal);
|
||||
ImGuiExt::InputHexadecimal("hex.ui.common.size"_lang, &m_size, ImGuiInputTextFlags_CharsHexadecimal);
|
||||
|
||||
if (m_port < 0)
|
||||
m_port = 0;
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "content/providers/memory_file_provider.hpp"
|
||||
#include "content/providers/file_provider.hpp"
|
||||
#include "content/popups/popup_text_input.hpp"
|
||||
#include <popups/popup_text_input.hpp>
|
||||
|
||||
#include <cstring>
|
||||
|
||||
@ -146,7 +146,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
|
||||
void MemoryFileProvider::renameFile() {
|
||||
PopupTextInput::open("hex.builtin.provider.mem_file.rename", "hex.builtin.provider.mem_file.rename.desc", [this](const std::string &name) {
|
||||
ui::PopupTextInput::open("hex.builtin.provider.mem_file.rename", "hex.builtin.provider.mem_file.rename.desc", [this](const std::string &name) {
|
||||
m_name = name;
|
||||
RequestUpdateWindowTitle::post();
|
||||
});
|
||||
|
@ -252,9 +252,9 @@ namespace hex::plugin::builtin {
|
||||
#endif
|
||||
|
||||
if (ImGui::BeginTable("##module_table", 3, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_ScrollY, ImVec2(availableX, availableY))) {
|
||||
ImGui::TableSetupColumn("hex.builtin.common.region"_lang);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.size"_lang);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.name"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.region"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.size"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.name"_lang);
|
||||
ImGui::TableSetupScrollFreeze(0, 1);
|
||||
|
||||
ImGui::TableHeadersRow();
|
||||
|
@ -15,7 +15,7 @@
|
||||
#include <wolv/utils/string.hpp>
|
||||
|
||||
#include <content/recent.hpp>
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
#include <fonts/codicons_font.h>
|
||||
|
||||
namespace hex::plugin::builtin::recent {
|
||||
@ -131,7 +131,7 @@ namespace hex::plugin::builtin::recent {
|
||||
if (!recentFile.isValid())
|
||||
continue;
|
||||
|
||||
std::string displayName = hex::format("[{}] {}", "hex.builtin.common.project"_lang, wolv::util::toUTF8String(projectFileName));
|
||||
std::string displayName = hex::format("[{}] {}", "hex.ui.common.project"_lang, wolv::util::toUTF8String(projectFileName));
|
||||
|
||||
nlohmann::json recentEntry {
|
||||
{"type", "project"},
|
||||
@ -224,7 +224,7 @@ namespace hex::plugin::builtin::recent {
|
||||
provider->loadSettings(recentEntry.data);
|
||||
|
||||
if (!provider->open() || !provider->isAvailable()) {
|
||||
PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
ui::PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage()));
|
||||
TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); });
|
||||
return;
|
||||
}
|
||||
@ -269,21 +269,21 @@ namespace hex::plugin::builtin::recent {
|
||||
if (ImGui::BeginTable("##RecentEntryTooltip", 2, ImGuiTableFlags_RowBg)) {
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted("hex.builtin.common.name"_lang);
|
||||
ImGui::TextUnformatted("hex.ui.common.name"_lang);
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted(recentEntry.displayName.c_str());
|
||||
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted("hex.builtin.common.type"_lang);
|
||||
ImGui::TextUnformatted("hex.ui.common.type"_lang);
|
||||
ImGui::TableNextColumn();
|
||||
|
||||
if (isProject) {
|
||||
ImGui::TextUnformatted("hex.builtin.common.project"_lang);
|
||||
ImGui::TextUnformatted("hex.ui.common.project"_lang);
|
||||
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted("hex.builtin.common.path"_lang);
|
||||
ImGui::TextUnformatted("hex.ui.common.path"_lang);
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted(recentEntry.data["path"].get<std::string>().c_str());
|
||||
} else {
|
||||
@ -303,7 +303,7 @@ namespace hex::plugin::builtin::recent {
|
||||
}
|
||||
|
||||
if (ImGui::BeginPopup(popupID.c_str())) {
|
||||
if (ImGui::MenuItem("hex.builtin.common.remove"_lang)) {
|
||||
if (ImGui::MenuItem("hex.ui.common.remove"_lang)) {
|
||||
shouldRemove = true;
|
||||
}
|
||||
ImGui::EndPopup();
|
||||
|
@ -197,7 +197,7 @@ namespace hex::plugin::builtin {
|
||||
auto format = [this] -> std::string {
|
||||
auto value = m_value * 30;
|
||||
if (value == 0)
|
||||
return "hex.builtin.common.off"_lang;
|
||||
return "hex.ui.common.off"_lang;
|
||||
else if (value < 60)
|
||||
return hex::format("hex.builtin.setting.general.auto_backup_time.format.simple"_lang, value);
|
||||
else
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include <imgui.h>
|
||||
|
||||
#include <hex/ui/imgui_imhex_extensions.h>
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
|
||||
#include <wolv/io/file.hpp>
|
||||
|
||||
@ -113,7 +113,7 @@ namespace hex::plugin::builtin {
|
||||
wolv::io::File output(outputPath, wolv::io::File::Mode::Create);
|
||||
|
||||
if (!output.isValid()) {
|
||||
PopupError::open("hex.builtin.tools.file_tools.combiner.error.open_output"_lang);
|
||||
ui::PopupError::open("hex.builtin.tools.file_tools.combiner.error.open_output"_lang);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ namespace hex::plugin::builtin {
|
||||
|
||||
wolv::io::File input(file, wolv::io::File::Mode::Read);
|
||||
if (!input.isValid()) {
|
||||
PopupError::open(hex::format("hex.builtin.tools.file_tools.combiner.open_input"_lang, wolv::util::toUTF8String(file)));
|
||||
ui::PopupError::open(hex::format("hex.builtin.tools.file_tools.combiner.open_input"_lang, wolv::util::toUTF8String(file)));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -142,7 +142,7 @@ namespace hex::plugin::builtin {
|
||||
selectedIndex = 0;
|
||||
outputPath.clear();
|
||||
|
||||
PopupInfo::open("hex.builtin.tools.file_tools.combiner.success"_lang);
|
||||
ui::PopupInfo::open("hex.builtin.tools.file_tools.combiner.success"_lang);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include <imgui.h>
|
||||
|
||||
#include <hex/ui/imgui_imhex_extensions.h>
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
|
||||
#include <wolv/io/file.hpp>
|
||||
#include <wolv/utils/guards.hpp>
|
||||
@ -54,7 +54,7 @@ namespace hex::plugin::builtin {
|
||||
wolv::io::File file(selectedFile, wolv::io::File::Mode::Write);
|
||||
|
||||
if (!file.isValid()) {
|
||||
PopupError::open("hex.builtin.tools.file_tools.shredder.error.open"_lang);
|
||||
ui::PopupError::open("hex.builtin.tools.file_tools.shredder.error.open"_lang);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -128,7 +128,7 @@ namespace hex::plugin::builtin {
|
||||
|
||||
file.remove();
|
||||
|
||||
PopupInfo::open("hex.builtin.tools.file_tools.shredder.success"_lang);
|
||||
ui::PopupInfo::open("hex.builtin.tools.file_tools.shredder.success"_lang);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include <imgui.h>
|
||||
|
||||
#include <hex/ui/imgui_imhex_extensions.h>
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
|
||||
#include <wolv/io/file.hpp>
|
||||
#include <wolv/utils/guards.hpp>
|
||||
@ -101,12 +101,12 @@ namespace hex::plugin::builtin {
|
||||
wolv::io::File file(selectedFile, wolv::io::File::Mode::Read);
|
||||
|
||||
if (!file.isValid()) {
|
||||
PopupError::open("hex.builtin.tools.file_tools.splitter.picker.error.open"_lang);
|
||||
ui::PopupError::open("hex.builtin.tools.file_tools.splitter.picker.error.open"_lang);
|
||||
return;
|
||||
}
|
||||
|
||||
if (file.getSize() < splitSize) {
|
||||
PopupError::open("hex.builtin.tools.file_tools.splitter.picker.error.size"_lang);
|
||||
ui::PopupError::open("hex.builtin.tools.file_tools.splitter.picker.error.size"_lang);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -122,7 +122,7 @@ namespace hex::plugin::builtin {
|
||||
wolv::io::File partFile(path, wolv::io::File::Mode::Create);
|
||||
|
||||
if (!partFile.isValid()) {
|
||||
PopupError::open(hex::format("hex.builtin.tools.file_tools.splitter.picker.error.create"_lang, index));
|
||||
ui::PopupError::open(hex::format("hex.builtin.tools.file_tools.splitter.picker.error.create"_lang, index));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -135,7 +135,7 @@ namespace hex::plugin::builtin {
|
||||
index++;
|
||||
}
|
||||
|
||||
PopupInfo::open("hex.builtin.tools.file_tools.splitter.picker.success"_lang);
|
||||
ui::PopupInfo::open("hex.builtin.tools.file_tools.splitter.picker.success"_lang);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ namespace hex::plugin::builtin {
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (ImGui::Button("hex.builtin.common.cancel"_lang)) {
|
||||
if (ImGui::Button("hex.ui.common.cancel"_lang)) {
|
||||
request.cancel();
|
||||
}
|
||||
}
|
||||
@ -33,9 +33,9 @@ namespace hex::plugin::builtin {
|
||||
ImGuiExt::Header("hex.builtin.tools.file_uploader.recent"_lang);
|
||||
|
||||
if (ImGui::BeginTable("##links", 3, ImGuiTableFlags_ScrollY | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_RowBg, ImVec2(0, 200))) {
|
||||
ImGui::TableSetupColumn("hex.builtin.common.file"_lang);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.link"_lang);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.size"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.file"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.link"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.size"_lang);
|
||||
ImGui::TableSetupScrollFreeze(0, 1);
|
||||
ImGui::TableHeadersRow();
|
||||
|
||||
@ -81,11 +81,11 @@ namespace hex::plugin::builtin {
|
||||
json.at("data").at("file").at("metadata").at("size").at("readable")
|
||||
});
|
||||
} catch (...) {
|
||||
PopupError::open("hex.builtin.tools.file_uploader.invalid_response"_lang);
|
||||
ui::PopupError::open("hex.builtin.tools.file_uploader.invalid_response"_lang);
|
||||
}
|
||||
} else if (response.getStatusCode() == 0) {
|
||||
// Canceled by user, no action needed
|
||||
} else PopupError::open(hex::format("hex.builtin.tools.file_uploader.error"_lang, response.getStatusCode()));
|
||||
} else ui::PopupError::open(hex::format("hex.builtin.tools.file_uploader.error"_lang, response.getStatusCode()));
|
||||
|
||||
uploadProcess = {};
|
||||
currFile.clear();
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include <implot.h>
|
||||
#include <hex/ui/imgui_imhex_extensions.h>
|
||||
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
|
||||
@ -46,7 +46,7 @@ namespace hex::plugin::builtin {
|
||||
// Task exception popup
|
||||
for (const auto &task : TaskManager::getRunningTasks()) {
|
||||
if (task->hadException()) {
|
||||
PopupError::open(hex::format("hex.builtin.popup.error.task_exception"_lang, Lang(task->getUnlocalizedName()), task->getExceptionMessage()));
|
||||
ui::PopupError::open(hex::format("hex.builtin.popup.error.task_exception"_lang, Lang(task->getUnlocalizedName()), task->getExceptionMessage()));
|
||||
task->clearException();
|
||||
break;
|
||||
}
|
||||
|
@ -6,13 +6,11 @@
|
||||
#include "content/views/view_about.hpp"
|
||||
#include "content/views/view_tools.hpp"
|
||||
#include "content/views/view_data_inspector.hpp"
|
||||
#include "content/views/view_disassembler.hpp"
|
||||
#include "content/views/view_bookmarks.hpp"
|
||||
#include "content/views/view_patches.hpp"
|
||||
#include "content/views/view_command_palette.hpp"
|
||||
#include "content/views/view_settings.hpp"
|
||||
#include "content/views/view_data_processor.hpp"
|
||||
#include "content/views/view_yara.hpp"
|
||||
#include "content/views/view_constants.hpp"
|
||||
#include "content/views/view_store.hpp"
|
||||
#include "content/views/view_diff.hpp"
|
||||
@ -33,7 +31,6 @@ namespace hex::plugin::builtin {
|
||||
ContentRegistry::Views::add<ViewDataInspector>();
|
||||
ContentRegistry::Views::add<ViewHashes>();
|
||||
ContentRegistry::Views::add<ViewInformation>();
|
||||
ContentRegistry::Views::add<ViewDisassembler>();
|
||||
ContentRegistry::Views::add<ViewBookmarks>();
|
||||
ContentRegistry::Views::add<ViewPatches>();
|
||||
ContentRegistry::Views::add<ViewTools>();
|
||||
@ -41,7 +38,6 @@ namespace hex::plugin::builtin {
|
||||
ContentRegistry::Views::add<ViewAbout>();
|
||||
ContentRegistry::Views::add<ViewSettings>();
|
||||
ContentRegistry::Views::add<ViewDataProcessor>();
|
||||
ContentRegistry::Views::add<ViewYara>();
|
||||
ContentRegistry::Views::add<ViewConstants>();
|
||||
ContentRegistry::Views::add<ViewStore>();
|
||||
ContentRegistry::Views::add<ViewDiff>();
|
||||
|
@ -351,30 +351,24 @@ namespace hex::plugin::builtin {
|
||||
|
||||
ImGui::TableHeadersRow();
|
||||
|
||||
ImGuiListClipper clipper;
|
||||
clipper.Begin(plugins.size());
|
||||
for (const auto &plugin : plugins) {
|
||||
if (plugin.isLibraryPlugin())
|
||||
continue;
|
||||
|
||||
while (clipper.Step()) {
|
||||
for (int i = clipper.DisplayStart; i < clipper.DisplayEnd; i++) {
|
||||
const auto &plugin = plugins[i];
|
||||
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormattedColored(
|
||||
plugin.isBuiltinPlugin() ? ImGuiExt::GetCustomColorVec4(ImGuiCustomCol_Highlight) : ImGui::GetStyleColorVec4(ImGuiCol_Text),
|
||||
"{}", plugin.getPluginName().c_str()
|
||||
);
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted(plugin.getPluginAuthor().c_str());
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted(plugin.getPluginDescription().c_str());
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted(plugin.isLoaded() ? ICON_VS_CHECK : ICON_VS_CLOSE);
|
||||
}
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormattedColored(
|
||||
plugin.isBuiltinPlugin() ? ImGuiExt::GetCustomColorVec4(ImGuiCustomCol_Highlight) : ImGui::GetStyleColorVec4(ImGuiCol_Text),
|
||||
"{}", plugin.getPluginName().c_str()
|
||||
);
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted(plugin.getPluginAuthor().c_str());
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted(plugin.getPluginDescription().c_str());
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextUnformatted(plugin.isLoaded() ? ICON_VS_CHECK : ICON_VS_CLOSE);
|
||||
}
|
||||
|
||||
clipper.End();
|
||||
|
||||
ImGui::EndTable();
|
||||
}
|
||||
}
|
||||
@ -480,7 +474,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
} else {
|
||||
// Draw a spinner while the release notes are loading
|
||||
ImGuiExt::TextSpinner("hex.builtin.common.loading"_lang);
|
||||
ImGuiExt::TextSpinner("hex.ui.common.loading"_lang);
|
||||
}
|
||||
}
|
||||
|
||||
@ -597,7 +591,7 @@ namespace hex::plugin::builtin {
|
||||
|
||||
} catch (std::exception &e) {
|
||||
commits.emplace_back(
|
||||
"hex.builtin.common.error"_lang,
|
||||
"hex.ui.common.error"_lang,
|
||||
e.what(),
|
||||
"",
|
||||
"",
|
||||
@ -607,7 +601,7 @@ namespace hex::plugin::builtin {
|
||||
} else {
|
||||
// An error occurred, display it
|
||||
commits.emplace_back(
|
||||
"hex.builtin.common.error"_lang,
|
||||
"hex.ui.common.error"_lang,
|
||||
"HTTP " + std::to_string(response.getStatusCode()),
|
||||
"",
|
||||
"",
|
||||
@ -616,7 +610,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
} else {
|
||||
// Draw a spinner while the commits are loading
|
||||
ImGuiExt::TextSpinner("hex.builtin.common.loading"_lang);
|
||||
ImGuiExt::TextSpinner("hex.ui.common.loading"_lang);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -104,7 +104,7 @@ namespace hex::plugin::builtin {
|
||||
// Draw region
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted("{}: ", "hex.builtin.common.region"_lang.get());
|
||||
ImGuiExt::TextFormatted("{}: ", "hex.ui.common.region"_lang.get());
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted("[ 0x{:08X} - 0x{:08X} ] ", bookmark.region.getStartAddress(), bookmark.region.getEndAddress());
|
||||
|
||||
@ -354,7 +354,7 @@ namespace hex::plugin::builtin {
|
||||
ImGui::TableNextRow(ImGuiTableRowFlags_None, rowHeight);
|
||||
ImGui::TableNextColumn();
|
||||
|
||||
ImGui::TextUnformatted("hex.builtin.common.address"_lang);
|
||||
ImGui::TextUnformatted("hex.ui.common.address"_lang);
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TableNextColumn();
|
||||
|
||||
@ -405,7 +405,7 @@ namespace hex::plugin::builtin {
|
||||
ImGui::TableNextColumn();
|
||||
|
||||
// Draw size of the bookmark
|
||||
ImGui::TextUnformatted("hex.builtin.common.size"_lang);
|
||||
ImGui::TextUnformatted("hex.ui.common.size"_lang);
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted(hex::toByteString(region.size));
|
||||
|
@ -332,7 +332,7 @@ namespace hex::plugin::builtin {
|
||||
ImGui::EndTable();
|
||||
}
|
||||
|
||||
ImGuiExt::DimmedButtonToggle("hex.builtin.common.edit"_lang, &m_tableEditingModeEnabled, ImVec2(ImGui::GetContentRegionAvail().x, 0));
|
||||
ImGuiExt::DimmedButtonToggle("hex.ui.common.edit"_lang, &m_tableEditingModeEnabled, ImVec2(ImGui::GetContentRegionAvail().x, 0));
|
||||
|
||||
ImGui::NewLine();
|
||||
ImGui::Separator();
|
||||
@ -350,9 +350,9 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
}();
|
||||
|
||||
std::array options = { "hex.builtin.common.little"_lang, "hex.builtin.common.big"_lang };
|
||||
std::array options = { "hex.ui.common.little"_lang, "hex.ui.common.big"_lang };
|
||||
|
||||
if (ImGui::SliderInt("hex.builtin.common.endian"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) {
|
||||
if (ImGui::SliderInt("hex.ui.common.endian"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) {
|
||||
m_shouldInvalidate = true;
|
||||
|
||||
switch (selection) {
|
||||
@ -373,9 +373,9 @@ namespace hex::plugin::builtin {
|
||||
case NumberDisplayStyle::Octal: return 2;
|
||||
}
|
||||
}();
|
||||
std::array options = { "hex.builtin.common.decimal"_lang, "hex.builtin.common.hexadecimal"_lang, "hex.builtin.common.octal"_lang };
|
||||
std::array options = { "hex.ui.common.decimal"_lang, "hex.ui.common.hexadecimal"_lang, "hex.ui.common.octal"_lang };
|
||||
|
||||
if (ImGui::SliderInt("hex.builtin.common.number_format"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) {
|
||||
if (ImGui::SliderInt("hex.ui.common.number_format"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) {
|
||||
m_shouldInvalidate = true;
|
||||
|
||||
switch (selection) {
|
||||
@ -390,7 +390,7 @@ namespace hex::plugin::builtin {
|
||||
// Draw invert setting
|
||||
{
|
||||
int selection = m_invert ? 1 : 0;
|
||||
std::array options = { "hex.builtin.common.no"_lang, "hex.builtin.common.yes"_lang };
|
||||
std::array options = { "hex.ui.common.no"_lang, "hex.ui.common.yes"_lang };
|
||||
|
||||
if (ImGui::SliderInt("hex.builtin.view.data_inspector.invert"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) {
|
||||
m_shouldInvalidate = true;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "content/views/view_data_processor.hpp"
|
||||
#include "content/popups/popup_notification.hpp"
|
||||
#include <popups/popup_notification.hpp>
|
||||
|
||||
#include <hex/api/content_registry.hpp>
|
||||
#include <hex/api/project_file_manager.hpp>
|
||||
@ -852,7 +852,7 @@ namespace hex::plugin::builtin {
|
||||
int nodeId;
|
||||
if (ImNodes::IsNodeHovered(&nodeId) && workspace.currNodeError.has_value() && workspace.currNodeError->node->getId() == nodeId) {
|
||||
ImGui::BeginTooltip();
|
||||
ImGui::TextUnformatted("hex.builtin.common.error"_lang);
|
||||
ImGui::TextUnformatted("hex.ui.common.error"_lang);
|
||||
ImGui::Separator();
|
||||
ImGui::TextUnformatted(workspace.currNodeError->message.c_str());
|
||||
ImGui::EndTooltip();
|
||||
@ -1194,7 +1194,7 @@ namespace hex::plugin::builtin {
|
||||
|
||||
m_updateNodePositions = true;
|
||||
} catch (nlohmann::json::exception &e) {
|
||||
PopupError::open(hex::format("Failed to load nodes: {}", e.what()));
|
||||
ui::PopupError::open(hex::format("Failed to load nodes: {}", e.what()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -262,9 +262,9 @@ namespace hex::plugin::builtin {
|
||||
// Draw the differences table
|
||||
if (ImGui::BeginTable("##differences", 3, ImGuiTableFlags_Borders | ImGuiTableFlags_ScrollY | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Resizable, ImVec2(0, 200_scaled))) {
|
||||
ImGui::TableSetupScrollFreeze(0, 1);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.begin"_lang);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.end"_lang);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.type"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.begin"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.end"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.type"_lang);
|
||||
ImGui::TableHeadersRow();
|
||||
|
||||
// Draw the differences if the providers have been analyzed
|
||||
|
@ -62,7 +62,7 @@ namespace hex::plugin::builtin {
|
||||
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted("{}: ", "hex.builtin.common.region"_lang);
|
||||
ImGuiExt::TextFormatted("{}: ", "hex.ui.common.region"_lang);
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted("[ 0x{:08X} - 0x{:08X} ]", region.getStartAddress(), region.getEndAddress());
|
||||
|
||||
@ -663,11 +663,11 @@ namespace hex::plugin::builtin {
|
||||
|
||||
if (ImGui::BeginTabBar("SearchMethods")) {
|
||||
const std::array<std::string, 5> StringTypes = {
|
||||
"hex.builtin.common.encoding.ascii"_lang,
|
||||
"hex.builtin.common.encoding.utf16le"_lang,
|
||||
"hex.builtin.common.encoding.utf16be"_lang,
|
||||
hex::format("{} + {}", "hex.builtin.common.encoding.ascii"_lang, "hex.builtin.common.encoding.utf16le"_lang),
|
||||
hex::format("{} + {}", "hex.builtin.common.encoding.ascii"_lang, "hex.builtin.common.encoding.utf16be"_lang)
|
||||
"hex.ui.common.encoding.ascii"_lang,
|
||||
"hex.ui.common.encoding.utf16le"_lang,
|
||||
"hex.ui.common.encoding.utf16be"_lang,
|
||||
hex::format("{} + {}", "hex.ui.common.encoding.ascii"_lang, "hex.ui.common.encoding.utf16le"_lang),
|
||||
hex::format("{} + {}", "hex.ui.common.encoding.ascii"_lang, "hex.ui.common.encoding.utf16be"_lang)
|
||||
};
|
||||
|
||||
auto &mode = m_searchSettings.mode;
|
||||
@ -679,7 +679,7 @@ namespace hex::plugin::builtin {
|
||||
if (settings.minLength < 1)
|
||||
settings.minLength = 1;
|
||||
|
||||
if (ImGui::BeginCombo("hex.builtin.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) {
|
||||
if (ImGui::BeginCombo("hex.ui.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) {
|
||||
for (size_t i = 0; i < StringTypes.size(); i++) {
|
||||
auto type = static_cast<SearchSettings::StringType>(i);
|
||||
|
||||
@ -711,9 +711,9 @@ namespace hex::plugin::builtin {
|
||||
|
||||
mode = SearchSettings::Mode::Sequence;
|
||||
|
||||
ImGuiExt::InputTextIcon("hex.builtin.common.value"_lang, ICON_VS_SYMBOL_KEY, settings.sequence);
|
||||
ImGuiExt::InputTextIcon("hex.ui.common.value"_lang, ICON_VS_SYMBOL_KEY, settings.sequence);
|
||||
|
||||
if (ImGui::BeginCombo("hex.builtin.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) {
|
||||
if (ImGui::BeginCombo("hex.ui.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) {
|
||||
for (size_t i = 0; i < StringTypes.size() - 2; i++) {
|
||||
auto type = static_cast<SearchSettings::StringType>(i);
|
||||
|
||||
@ -738,7 +738,7 @@ namespace hex::plugin::builtin {
|
||||
if (settings.minLength < 1)
|
||||
settings.minLength = 1;
|
||||
|
||||
if (ImGui::BeginCombo("hex.builtin.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) {
|
||||
if (ImGui::BeginCombo("hex.ui.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) {
|
||||
for (size_t i = 0; i < StringTypes.size(); i++) {
|
||||
auto type = static_cast<SearchSettings::StringType>(i);
|
||||
|
||||
@ -794,7 +794,7 @@ namespace hex::plugin::builtin {
|
||||
if (ImGuiExt::InputTextIcon("hex.builtin.view.find.value.min"_lang, ICON_VS_SYMBOL_NUMERIC, settings.inputMin)) edited = true;
|
||||
if (ImGuiExt::InputTextIcon("hex.builtin.view.find.value.max"_lang, ICON_VS_SYMBOL_NUMERIC, settings.inputMax)) edited = true;
|
||||
} else {
|
||||
if (ImGuiExt::InputTextIcon("hex.builtin.common.value"_lang, ICON_VS_SYMBOL_NUMERIC, settings.inputMin)) {
|
||||
if (ImGuiExt::InputTextIcon("hex.ui.common.value"_lang, ICON_VS_SYMBOL_NUMERIC, settings.inputMin)) {
|
||||
edited = true;
|
||||
settings.inputMax = settings.inputMin;
|
||||
}
|
||||
@ -810,19 +810,19 @@ namespace hex::plugin::builtin {
|
||||
ImGui::NewLine();
|
||||
|
||||
const std::array<std::string, 10> InputTypes = {
|
||||
"hex.builtin.common.type.u8"_lang,
|
||||
"hex.builtin.common.type.u16"_lang,
|
||||
"hex.builtin.common.type.u32"_lang,
|
||||
"hex.builtin.common.type.u64"_lang,
|
||||
"hex.builtin.common.type.i8"_lang,
|
||||
"hex.builtin.common.type.i16"_lang,
|
||||
"hex.builtin.common.type.i32"_lang,
|
||||
"hex.builtin.common.type.i64"_lang,
|
||||
"hex.builtin.common.type.f32"_lang,
|
||||
"hex.builtin.common.type.f64"_lang
|
||||
"hex.ui.common.type.u8"_lang,
|
||||
"hex.ui.common.type.u16"_lang,
|
||||
"hex.ui.common.type.u32"_lang,
|
||||
"hex.ui.common.type.u64"_lang,
|
||||
"hex.ui.common.type.i8"_lang,
|
||||
"hex.ui.common.type.i16"_lang,
|
||||
"hex.ui.common.type.i32"_lang,
|
||||
"hex.ui.common.type.i64"_lang,
|
||||
"hex.ui.common.type.f32"_lang,
|
||||
"hex.ui.common.type.f64"_lang
|
||||
};
|
||||
|
||||
if (ImGui::BeginCombo("hex.builtin.common.type"_lang, InputTypes[std::to_underlying(settings.type)].c_str())) {
|
||||
if (ImGui::BeginCombo("hex.ui.common.type"_lang, InputTypes[std::to_underlying(settings.type)].c_str())) {
|
||||
for (size_t i = 0; i < InputTypes.size(); i++) {
|
||||
auto type = static_cast<SearchSettings::Value::Type>(i);
|
||||
|
||||
@ -843,8 +843,8 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
}();
|
||||
|
||||
std::array options = { "hex.builtin.common.little"_lang, "hex.builtin.common.big"_lang };
|
||||
if (ImGui::SliderInt("hex.builtin.common.endian"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) {
|
||||
std::array options = { "hex.ui.common.little"_lang, "hex.ui.common.big"_lang };
|
||||
if (ImGui::SliderInt("hex.ui.common.endian"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) {
|
||||
edited = true;
|
||||
switch (selection) {
|
||||
default:
|
||||
@ -932,9 +932,9 @@ namespace hex::plugin::builtin {
|
||||
|
||||
if (ImGui::BeginTable("##entries", 3, ImGuiTableFlags_Borders | ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_Sortable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_RowBg | ImGuiTableFlags_ScrollY, ImMax(ImGui::GetContentRegionAvail(), ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 5)))) {
|
||||
ImGui::TableSetupScrollFreeze(0, 1);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.offset"_lang, 0, -1, ImGui::GetID("offset"));
|
||||
ImGui::TableSetupColumn("hex.builtin.common.size"_lang, 0, -1, ImGui::GetID("size"));
|
||||
ImGui::TableSetupColumn("hex.builtin.common.value"_lang, 0, -1, ImGui::GetID("value"));
|
||||
ImGui::TableSetupColumn("hex.ui.common.offset"_lang, 0, -1, ImGui::GetID("offset"));
|
||||
ImGui::TableSetupColumn("hex.ui.common.size"_lang, 0, -1, ImGui::GetID("size"));
|
||||
ImGui::TableSetupColumn("hex.ui.common.value"_lang, 0, -1, ImGui::GetID("value"));
|
||||
|
||||
auto sortSpecs = ImGui::TableGetSortSpecs();
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include <wolv/math_eval/math_evaluator.hpp>
|
||||
|
||||
#include <content/providers/view_provider.hpp>
|
||||
#include <content/popups/popup_file_chooser.hpp>
|
||||
#include <popups/popup_file_chooser.hpp>
|
||||
|
||||
#include <imgui_internal.h>
|
||||
#include <content/popups/popup_blocking_task.hpp>
|
||||
@ -214,7 +214,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
|
||||
if (!m_searchTask.isRunning() && !searchSequence.empty() && m_shouldSearch) {
|
||||
m_searchTask = TaskManager::createTask("hex.builtin.common.processing", ImHexApi::Provider::get()->getActualSize(), [this, editor, searchSequence](auto &) {
|
||||
m_searchTask = TaskManager::createTask("hex.ui.common.processing", ImHexApi::Provider::get()->getActualSize(), [this, editor, searchSequence](auto &) {
|
||||
for (u8 retry = 0; retry < 2; retry++) {
|
||||
auto region = this->findSequence(searchSequence, m_backwards);
|
||||
|
||||
@ -349,7 +349,7 @@ namespace hex::plugin::builtin {
|
||||
editor->closePopup();
|
||||
}
|
||||
|
||||
ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang,
|
||||
ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang,
|
||||
[&, this]{
|
||||
setBaseAddress(m_baseAddress);
|
||||
editor->closePopup();
|
||||
@ -383,7 +383,7 @@ namespace hex::plugin::builtin {
|
||||
editor->closePopup();
|
||||
}
|
||||
|
||||
ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang,
|
||||
ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang,
|
||||
[&, this]{
|
||||
setPageSize(m_pageSize);
|
||||
editor->closePopup();
|
||||
@ -421,7 +421,7 @@ namespace hex::plugin::builtin {
|
||||
editor->closePopup();
|
||||
}
|
||||
|
||||
ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang,
|
||||
ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang,
|
||||
[&, this]{
|
||||
this->resize(m_size);
|
||||
editor->closePopup();
|
||||
@ -448,10 +448,10 @@ namespace hex::plugin::builtin {
|
||||
void draw(ViewHexEditor *editor) override {
|
||||
ImGui::TextUnformatted("hex.builtin.view.hex_editor.menu.edit.insert"_lang);
|
||||
|
||||
ImGuiExt::InputHexadecimal("hex.builtin.common.address"_lang, &m_address);
|
||||
ImGuiExt::InputHexadecimal("hex.builtin.common.size"_lang, &m_size);
|
||||
ImGuiExt::InputHexadecimal("hex.ui.common.address"_lang, &m_address);
|
||||
ImGuiExt::InputHexadecimal("hex.ui.common.size"_lang, &m_size);
|
||||
|
||||
ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang,
|
||||
ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang,
|
||||
[&, this]{
|
||||
insert(m_address, m_size);
|
||||
editor->closePopup();
|
||||
@ -479,10 +479,10 @@ namespace hex::plugin::builtin {
|
||||
void draw(ViewHexEditor *editor) override {
|
||||
ImGui::TextUnformatted("hex.builtin.view.hex_editor.menu.edit.remove"_lang);
|
||||
|
||||
ImGuiExt::InputHexadecimal("hex.builtin.common.address"_lang, &m_address);
|
||||
ImGuiExt::InputHexadecimal("hex.builtin.common.size"_lang, &m_size);
|
||||
ImGuiExt::InputHexadecimal("hex.ui.common.address"_lang, &m_address);
|
||||
ImGuiExt::InputHexadecimal("hex.ui.common.size"_lang, &m_size);
|
||||
|
||||
ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang,
|
||||
ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang,
|
||||
[&, this]{
|
||||
remove(m_address, m_size);
|
||||
editor->closePopup();
|
||||
@ -510,14 +510,14 @@ namespace hex::plugin::builtin {
|
||||
void draw(ViewHexEditor *editor) override {
|
||||
ImGui::TextUnformatted("hex.builtin.view.hex_editor.menu.edit.fill"_lang);
|
||||
|
||||
ImGuiExt::InputHexadecimal("hex.builtin.common.address"_lang, &m_address);
|
||||
ImGuiExt::InputHexadecimal("hex.builtin.common.size"_lang, &m_size);
|
||||
ImGuiExt::InputHexadecimal("hex.ui.common.address"_lang, &m_address);
|
||||
ImGuiExt::InputHexadecimal("hex.ui.common.size"_lang, &m_size);
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
ImGuiExt::InputTextIcon("hex.builtin.common.bytes"_lang, ICON_VS_SYMBOL_NAMESPACE, m_input);
|
||||
ImGuiExt::InputTextIcon("hex.ui.common.bytes"_lang, ICON_VS_SYMBOL_NAMESPACE, m_input);
|
||||
|
||||
ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang,
|
||||
ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang,
|
||||
[&, this] {
|
||||
fill(m_address, m_size, m_input);
|
||||
editor->closePopup();
|
||||
@ -640,6 +640,9 @@ namespace hex::plugin::builtin {
|
||||
EventProviderChanged::unsubscribe(this);
|
||||
EventProviderOpened::unsubscribe(this);
|
||||
EventHighlightingChanged::unsubscribe(this);
|
||||
EventSettingsChanged::unsubscribe(this);
|
||||
|
||||
ContentRegistry::Settings::write("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.bytes_per_row", m_hexEditor.getBytesPerRow());
|
||||
}
|
||||
|
||||
void ViewHexEditor::drawPopup() {
|
||||
@ -1037,6 +1040,14 @@ namespace hex::plugin::builtin {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
m_hexEditor.setBytesPerRow(ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.bytes_per_row", m_hexEditor.getBytesPerRow()));
|
||||
EventSettingsChanged::subscribe(this, [this] {
|
||||
m_hexEditor.setSelectionColor(ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.highlight_color", 0x60C08080));
|
||||
m_hexEditor.enableSyncScrolling(ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.sync_scrolling", false));
|
||||
m_hexEditor.setByteCellPadding(ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.byte_padding", 0));
|
||||
m_hexEditor.setCharacterCellPadding(ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.char_padding", 0));
|
||||
});
|
||||
}
|
||||
|
||||
void ViewHexEditor::registerMenuItems() {
|
||||
@ -1079,7 +1090,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
}
|
||||
|
||||
PopupFileChooser::open(basePaths, paths, std::vector<hex::fs::ItemFilter>{ {"Thingy Table File", "tbl"} }, false,
|
||||
ui::PopupFileChooser::open(basePaths, paths, std::vector<hex::fs::ItemFilter>{ {"Thingy Table File", "tbl"} }, false,
|
||||
[this](const auto &path) {
|
||||
TaskManager::createTask("Loading encoding file", 0, [this, path](auto&) {
|
||||
auto encoding = EncodingFile(EncodingFile::Type::Thingy, path);
|
||||
@ -1280,13 +1291,13 @@ namespace hex::plugin::builtin {
|
||||
return (value >= provider->getBaseAddress()) && (value < (provider->getBaseAddress() + provider->getActualSize()));
|
||||
};
|
||||
|
||||
if (ImGui::MenuItem(hex::format("0x{:08X}", littleEndianValue).c_str(), "hex.builtin.common.little_endian"_lang, false, canJumpTo(littleEndianValue))) {
|
||||
if (ImGui::MenuItem(hex::format("0x{:08X}", littleEndianValue).c_str(), "hex.ui.common.little_endian"_lang, false, canJumpTo(littleEndianValue))) {
|
||||
if (value < provider->getBaseAddress() + provider->getActualSize()) {
|
||||
ImHexApi::HexEditor::setSelection(littleEndianValue, 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (ImGui::MenuItem(hex::format("0x{:08X}", bigEndianValue).c_str(), "hex.builtin.common.big_endian"_lang, false, canJumpTo(bigEndianValue))) {
|
||||
if (ImGui::MenuItem(hex::format("0x{:08X}", bigEndianValue).c_str(), "hex.ui.common.big_endian"_lang, false, canJumpTo(bigEndianValue))) {
|
||||
if (value < provider->getBaseAddress() + provider->getActualSize()) {
|
||||
ImHexApi::HexEditor::setSelection(bigEndianValue, 1);
|
||||
}
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
#include <implot.h>
|
||||
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
|
||||
@ -48,7 +48,7 @@ namespace hex::plugin::builtin {
|
||||
ContentRegistry::FileHandler::add({ ".mgc" }, [](const auto &path) {
|
||||
for (const auto &destPath : fs::getDefaultPaths(fs::ImHexPath::Magic)) {
|
||||
if (wolv::io::fs::copyFile(path, destPath / path.filename(), std::fs::copy_options::overwrite_existing)) {
|
||||
PopupInfo::open("hex.builtin.view.information.magic_db_added"_lang);
|
||||
ui::PopupInfo::open("hex.builtin.view.information.magic_db_added"_lang);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -141,7 +141,7 @@ namespace hex::plugin::builtin {
|
||||
auto provider = ImHexApi::Provider::get();
|
||||
if (ImHexApi::Provider::isValid() && provider->isReadable()) {
|
||||
ImGui::BeginDisabled(m_analyzerTask.isRunning());
|
||||
ImGuiExt::BeginSubWindow("hex.builtin.common.settings"_lang);
|
||||
ImGuiExt::BeginSubWindow("hex.ui.common.settings"_lang);
|
||||
{
|
||||
if (ImGui::BeginTable("SettingsTable", 2, ImGuiTableFlags_BordersInner | ImGuiTableFlags_SizingFixedSame, ImVec2(ImGui::GetContentRegionAvail().x, 0))) {
|
||||
ImGui::TableSetupColumn("Left", ImGuiTableColumnFlags_WidthStretch, 0.5F);
|
||||
|
@ -19,8 +19,8 @@
|
||||
#include <hex/helpers/fmt.hpp>
|
||||
#include <fmt/chrono.h>
|
||||
|
||||
#include <content/popups/popup_file_chooser.hpp>
|
||||
#include <content/popups/popup_question.hpp>
|
||||
#include <popups/popup_file_chooser.hpp>
|
||||
#include <popups/popup_question.hpp>
|
||||
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <chrono>
|
||||
@ -360,7 +360,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
|
||||
if (m_dangerousFunctionCalled && !ImGui::IsPopupOpen(ImGuiID(0), ImGuiPopupFlags_AnyPopup)) {
|
||||
PopupQuestion::open("hex.builtin.view.pattern_editor.dangerous_function.desc"_lang,
|
||||
ui::PopupQuestion::open("hex.builtin.view.pattern_editor.dangerous_function.desc"_lang,
|
||||
[this] {
|
||||
m_dangerousFunctionsAllowed = DangerousFunctionPerms::Allow;
|
||||
}, [this] {
|
||||
@ -567,8 +567,8 @@ namespace hex::plugin::builtin {
|
||||
|
||||
if (ImGui::BeginTable("##sections_table", 3, ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_ScrollY, size)) {
|
||||
ImGui::TableSetupScrollFreeze(0, 1);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.name"_lang, ImGuiTableColumnFlags_WidthStretch, 0.5F);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.size"_lang, ImGuiTableColumnFlags_WidthStretch, 0.5F);
|
||||
ImGui::TableSetupColumn("hex.ui.common.name"_lang, ImGuiTableColumnFlags_WidthStretch, 0.5F);
|
||||
ImGui::TableSetupColumn("hex.ui.common.size"_lang, ImGuiTableColumnFlags_WidthStretch, 0.5F);
|
||||
ImGui::TableSetupColumn("##button", ImGuiTableColumnFlags_WidthFixed, 20_scaled);
|
||||
|
||||
ImGui::TableHeadersRow();
|
||||
@ -903,32 +903,32 @@ namespace hex::plugin::builtin {
|
||||
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted("{} ", "hex.builtin.common.type"_lang);
|
||||
ImGuiExt::TextFormatted("{} ", "hex.ui.common.type"_lang);
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted(" {}", pattern->getTypeName());
|
||||
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted("{} ", "hex.builtin.common.address"_lang);
|
||||
ImGuiExt::TextFormatted("{} ", "hex.ui.common.address"_lang);
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted(" 0x{:08X}", pattern->getOffset());
|
||||
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted("{} ", "hex.builtin.common.size"_lang);
|
||||
ImGuiExt::TextFormatted("{} ", "hex.ui.common.size"_lang);
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted(" {}", hex::toByteString(pattern->getSize()));
|
||||
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted("{} ", "hex.builtin.common.endian"_lang);
|
||||
ImGuiExt::TextFormatted("{} ", "hex.ui.common.endian"_lang);
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted(" {}", pattern->getEndian() == std::endian::little ? "hex.builtin.common.little"_lang : "hex.builtin.common.big"_lang);
|
||||
ImGuiExt::TextFormatted(" {}", pattern->getEndian() == std::endian::little ? "hex.ui.common.little"_lang : "hex.ui.common.big"_lang);
|
||||
|
||||
if (const auto &comment = pattern->getComment(); !comment.empty()) {
|
||||
ImGui::TableNextRow();
|
||||
ImGui::TableNextColumn();
|
||||
ImGuiExt::TextFormatted("{} ", "hex.builtin.common.comment"_lang);
|
||||
ImGuiExt::TextFormatted("{} ", "hex.ui.common.comment"_lang);
|
||||
ImGui::TableNextColumn();
|
||||
ImGui::TextWrapped(" \"%s\"", comment.c_str());
|
||||
}
|
||||
@ -1208,7 +1208,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
}
|
||||
|
||||
PopupFileChooser::open(basePaths, paths, std::vector<hex::fs::ItemFilter>{ { "Pattern File", "hexpat" } }, false,
|
||||
ui::PopupFileChooser::open(basePaths, paths, std::vector<hex::fs::ItemFilter>{ { "Pattern File", "hexpat" } }, false,
|
||||
[this, provider](const std::fs::path &path) {
|
||||
this->loadPatternFile(path, provider);
|
||||
AchievementManager::unlockAchievement("hex.builtin.achievement.patterns", "hex.builtin.achievement.patterns.load_existing.name");
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "content/views/view_provider_settings.hpp"
|
||||
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
#include <hex/api/content_registry.hpp>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
@ -37,7 +37,7 @@ namespace hex::plugin::builtin {
|
||||
ImGui::Separator();
|
||||
|
||||
ImGui::BeginDisabled(!settingsValid);
|
||||
if (ImGui::Button("hex.builtin.common.open"_lang)) {
|
||||
if (ImGui::Button("hex.ui.common.open"_lang)) {
|
||||
if (provider->open()) {
|
||||
EventProviderOpened::post(provider);
|
||||
|
||||
@ -49,9 +49,9 @@ namespace hex::plugin::builtin {
|
||||
ImGui::CloseCurrentPopup();
|
||||
auto errorMessage = provider->getErrorMessage();
|
||||
if (errorMessage.empty()) {
|
||||
PopupError::open("hex.builtin.view.provider_settings.load_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.view.provider_settings.load_error"_lang);
|
||||
} else {
|
||||
PopupError::open(hex::format("hex.builtin.view.provider_settings.load_error_details"_lang, errorMessage));
|
||||
ui::PopupError::open(hex::format("hex.builtin.view.provider_settings.load_error_details"_lang, errorMessage));
|
||||
}
|
||||
TaskManager::doLater([=] { ImHexApi::Provider::remove(provider); });
|
||||
}
|
||||
@ -60,7 +60,7 @@ namespace hex::plugin::builtin {
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
if (ImGui::Button("hex.builtin.common.cancel"_lang)) {
|
||||
if (ImGui::Button("hex.ui.common.cancel"_lang)) {
|
||||
ImGui::CloseCurrentPopup();
|
||||
this->getWindowOpenState() = false;
|
||||
TaskManager::doLater([=] { ImHexApi::Provider::remove(provider); });
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
#include <content/popups/popup_question.hpp>
|
||||
#include <popups/popup_question.hpp>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
|
||||
@ -111,7 +111,7 @@ namespace hex::plugin::builtin {
|
||||
// If a restart is required, ask the user if they want to restart
|
||||
if (!this->getWindowOpenState() && m_triggerPopup) {
|
||||
m_triggerPopup = false;
|
||||
PopupQuestion::open("hex.builtin.view.settings.restart_question"_lang,
|
||||
ui::PopupQuestion::open("hex.builtin.view.settings.restart_question"_lang,
|
||||
ImHexApi::System::restartImHex,
|
||||
[this]{
|
||||
m_restartRequested = false;
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
#include <hex/api/content_registry.hpp>
|
||||
|
||||
#include <content/popups/popup_notification.hpp>
|
||||
#include <popups/popup_notification.hpp>
|
||||
|
||||
#include <imgui.h>
|
||||
|
||||
@ -310,7 +310,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
|
||||
if (!downloading) {
|
||||
PopupError::open("hex.builtin.view.store.download_error"_lang);
|
||||
ui::PopupError::open("hex.builtin.view.store.download_error"_lang);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
#include <string>
|
||||
#include <random>
|
||||
#include <content/popups/popup_question.hpp>
|
||||
#include <popups/popup_question.hpp>
|
||||
#include <hex/api/tutorial_manager.hpp>
|
||||
#include <hex/api/workspace_manager.hpp>
|
||||
|
||||
@ -126,13 +126,13 @@ namespace hex::plugin::builtin {
|
||||
ImGui::NewLine();
|
||||
|
||||
static bool dontShowAgain = false;
|
||||
if (ImGui::Checkbox("hex.builtin.common.dont_show_again"_lang, &dontShowAgain)) {
|
||||
if (ImGui::Checkbox("hex.ui.common.dont_show_again"_lang, &dontShowAgain)) {
|
||||
ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.show_tips", !dontShowAgain);
|
||||
}
|
||||
|
||||
ImGui::SameLine((ImGui::GetMainViewport()->Size / 3 - ImGui::CalcTextSize("hex.builtin.common.close"_lang) - ImGui::GetStyle().FramePadding).x);
|
||||
ImGui::SameLine((ImGui::GetMainViewport()->Size / 3 - ImGui::CalcTextSize("hex.ui.common.close"_lang) - ImGui::GetStyle().FramePadding).x);
|
||||
|
||||
if (ImGui::Button("hex.builtin.common.close"_lang) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape)))
|
||||
if (ImGui::Button("hex.ui.common.close"_lang) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape)))
|
||||
Popup::close();
|
||||
}
|
||||
};
|
||||
@ -508,7 +508,7 @@ namespace hex::plugin::builtin {
|
||||
}
|
||||
|
||||
if (ContentRegistry::Settings::read("hex.builtin.setting.general", "hex.builtin.setting.general.prev_launch_version", "") == "") {
|
||||
PopupQuestion::open("hex.builtin.popup.play_tutorial.desc"_lang,
|
||||
ui::PopupQuestion::open("hex.builtin.popup.play_tutorial.desc"_lang,
|
||||
[]{
|
||||
TutorialManager::startTutorial("hex.builtin.tutorial.introduction");
|
||||
},
|
||||
|
@ -19,7 +19,6 @@ namespace hex::plugin::builtin {
|
||||
void registerPatternLanguageFunctions();
|
||||
void registerPatternLanguagePragmas();
|
||||
void registerPatternLanguageVisualizers();
|
||||
void registerPatternLanguageInlineVisualizers();
|
||||
void registerCommandPaletteCommands();
|
||||
void registerSettings();
|
||||
void loadSettings();
|
||||
@ -91,7 +90,6 @@ IMHEX_PLUGIN_SETUP("Built-in", "WerWolv", "Default ImHex functionality") {
|
||||
registerPatternLanguageFunctions();
|
||||
registerPatternLanguagePragmas();
|
||||
registerPatternLanguageVisualizers();
|
||||
registerPatternLanguageInlineVisualizers();
|
||||
registerCommandPaletteCommands();
|
||||
registerThemes();
|
||||
registerSettings();
|
||||
|
33
plugins/disassembler/CMakeLists.txt
Normal file
33
plugins/disassembler/CMakeLists.txt
Normal file
@ -0,0 +1,33 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
include(ImHexPlugin)
|
||||
|
||||
if (NOT USE_SYSTEM_CAPSTONE)
|
||||
set(CAPSTONE_BUILD_STATIC_RUNTIME OFF CACHE BOOL "Disable shared library building")
|
||||
set(CAPSTONE_BUILD_SHARED OFF CACHE BOOL "Disable shared library building")
|
||||
set(CAPSTONE_BUILD_TESTS OFF CACHE BOOL "Disable tests")
|
||||
add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/capstone ${CMAKE_CURRENT_BINARY_DIR}/capstone EXCLUDE_FROM_ALL)
|
||||
set_target_properties(capstone PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
target_compile_options(capstone PRIVATE -Wno-unused-function)
|
||||
set(CAPSTONE_LIBRARIES "capstone")
|
||||
set(CAPSTONE_INCLUDE_DIRS ${THIRD_PARTY_LIBS_FOLDER}/capstone/include)
|
||||
else()
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_search_module(CAPSTONE 4.0.2 REQUIRED capstone)
|
||||
endif()
|
||||
|
||||
add_imhex_plugin(
|
||||
NAME
|
||||
disassembler
|
||||
SOURCES
|
||||
source/plugin_disassembler.cpp
|
||||
|
||||
source/content/views/view_disassembler.cpp
|
||||
|
||||
source/content/pl_visualizers/disassembler.cpp
|
||||
INCLUDES
|
||||
include
|
||||
LIBRARIES
|
||||
${CAPSTONE_LIBRARIES}
|
||||
ui
|
||||
)
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <capstone/capstone.h>
|
||||
|
||||
namespace hex {
|
||||
namespace hex::plugin::disasm {
|
||||
|
||||
enum class Architecture : i32
|
||||
{
|
@ -10,7 +10,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
namespace hex::plugin::disasm {
|
||||
|
||||
struct Disassembly {
|
||||
u64 address;
|
78
plugins/disassembler/romfs/lang/de_DE.json
Normal file
78
plugins/disassembler/romfs/lang/de_DE.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"code": "de-DE",
|
||||
"language": "German",
|
||||
"country": "Germany",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.disassembler.view.disassembler.16bit": "16-bit",
|
||||
"hex.disassembler.view.disassembler.32bit": "32-bit",
|
||||
"hex.disassembler.view.disassembler.64bit": "64-bit",
|
||||
"hex.disassembler.view.disassembler.arch": "Architektur",
|
||||
"hex.disassembler.view.disassembler.arm.arm": "ARM",
|
||||
"hex.disassembler.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.disassembler.view.disassembler.arm.default": "Standard",
|
||||
"hex.disassembler.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.disassembler.view.disassembler.base": "Basisadresse",
|
||||
"hex.disassembler.view.disassembler.bpf.classic": "Classic",
|
||||
"hex.disassembler.view.disassembler.bpf.extended": "Extended",
|
||||
"hex.disassembler.view.disassembler.disassemble": "Disassemble",
|
||||
"hex.disassembler.view.disassembler.disassembling": "Disassemblen...",
|
||||
"hex.disassembler.view.disassembler.disassembly.address": "Adresse",
|
||||
"hex.disassembler.view.disassembler.disassembly.bytes": "Byte",
|
||||
"hex.disassembler.view.disassembler.disassembly.offset": "Offset",
|
||||
"hex.disassembler.view.disassembler.disassembly.title": "Disassembly",
|
||||
"hex.disassembler.view.disassembler.m680x.6301": "6301",
|
||||
"hex.disassembler.view.disassembler.m680x.6309": "6309",
|
||||
"hex.disassembler.view.disassembler.m680x.6800": "6800",
|
||||
"hex.disassembler.view.disassembler.m680x.6801": "6801",
|
||||
"hex.disassembler.view.disassembler.m680x.6805": "6805",
|
||||
"hex.disassembler.view.disassembler.m680x.6808": "6808",
|
||||
"hex.disassembler.view.disassembler.m680x.6809": "6809",
|
||||
"hex.disassembler.view.disassembler.m680x.6811": "6811",
|
||||
"hex.disassembler.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.disassembler.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.disassembler.view.disassembler.m68k.000": "000",
|
||||
"hex.disassembler.view.disassembler.m68k.010": "010",
|
||||
"hex.disassembler.view.disassembler.m68k.020": "020",
|
||||
"hex.disassembler.view.disassembler.m68k.030": "030",
|
||||
"hex.disassembler.view.disassembler.m68k.040": "040",
|
||||
"hex.disassembler.view.disassembler.m68k.060": "060",
|
||||
"hex.disassembler.view.disassembler.mips.micro": "Micro",
|
||||
"hex.disassembler.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.disassembler.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.disassembler.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.disassembler.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.disassembler.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.disassembler.view.disassembler.sh.sh2": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh2a": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh3": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh4": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh4a": "",
|
||||
"hex.disassembler.view.disassembler.sh.fpu": "",
|
||||
"hex.disassembler.view.disassembler.sh.dsp": "",
|
||||
"hex.disassembler.view.disassembler.tricore.110": "",
|
||||
"hex.disassembler.view.disassembler.tricore.120": "",
|
||||
"hex.disassembler.view.disassembler.tricore.130": "",
|
||||
"hex.disassembler.view.disassembler.tricore.131": "",
|
||||
"hex.disassembler.view.disassembler.tricore.160": "",
|
||||
"hex.disassembler.view.disassembler.tricore.161": "",
|
||||
"hex.disassembler.view.disassembler.tricore.162": "",
|
||||
"hex.disassembler.view.disassembler.name": "Disassembler",
|
||||
"hex.disassembler.view.disassembler.position": "Position",
|
||||
"hex.disassembler.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.disassembler.view.disassembler.ppc.spe": "Signal Processing Engine",
|
||||
"hex.disassembler.view.disassembler.region": "Code Region",
|
||||
"hex.disassembler.view.disassembler.riscv.compressed": "Komprimiert",
|
||||
"hex.disassembler.view.disassembler.settings.mode": "Modus",
|
||||
"hex.disassembler.view.disassembler.sparc.v9": "Sparc V9"
|
||||
}
|
||||
}
|
78
plugins/disassembler/romfs/lang/en_US.json
Normal file
78
plugins/disassembler/romfs/lang/en_US.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"code": "en-US",
|
||||
"language": "English",
|
||||
"country": "United States",
|
||||
"fallback": true,
|
||||
"translations": {
|
||||
"hex.disassembler.view.disassembler.16bit": "16-bit",
|
||||
"hex.disassembler.view.disassembler.32bit": "32-bit",
|
||||
"hex.disassembler.view.disassembler.64bit": "64-bit",
|
||||
"hex.disassembler.view.disassembler.arch": "Architecture",
|
||||
"hex.disassembler.view.disassembler.arm.arm": "ARM",
|
||||
"hex.disassembler.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.disassembler.view.disassembler.arm.default": "Default",
|
||||
"hex.disassembler.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.disassembler.view.disassembler.base": "Base address",
|
||||
"hex.disassembler.view.disassembler.bpf.classic": "Classic",
|
||||
"hex.disassembler.view.disassembler.bpf.extended": "Extended",
|
||||
"hex.disassembler.view.disassembler.disassemble": "Disassemble",
|
||||
"hex.disassembler.view.disassembler.disassembling": "Disassembling...",
|
||||
"hex.disassembler.view.disassembler.disassembly.address": "Address",
|
||||
"hex.disassembler.view.disassembler.disassembly.bytes": "Byte",
|
||||
"hex.disassembler.view.disassembler.disassembly.offset": "Offset",
|
||||
"hex.disassembler.view.disassembler.disassembly.title": "Disassembly",
|
||||
"hex.disassembler.view.disassembler.m680x.6301": "6301",
|
||||
"hex.disassembler.view.disassembler.m680x.6309": "6309",
|
||||
"hex.disassembler.view.disassembler.m680x.6800": "6800",
|
||||
"hex.disassembler.view.disassembler.m680x.6801": "6801",
|
||||
"hex.disassembler.view.disassembler.m680x.6805": "6805",
|
||||
"hex.disassembler.view.disassembler.m680x.6808": "6808",
|
||||
"hex.disassembler.view.disassembler.m680x.6809": "6809",
|
||||
"hex.disassembler.view.disassembler.m680x.6811": "6811",
|
||||
"hex.disassembler.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.disassembler.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.disassembler.view.disassembler.m68k.000": "000",
|
||||
"hex.disassembler.view.disassembler.m68k.010": "010",
|
||||
"hex.disassembler.view.disassembler.m68k.020": "020",
|
||||
"hex.disassembler.view.disassembler.m68k.030": "030",
|
||||
"hex.disassembler.view.disassembler.m68k.040": "040",
|
||||
"hex.disassembler.view.disassembler.m68k.060": "060",
|
||||
"hex.disassembler.view.disassembler.mips.micro": "Micro",
|
||||
"hex.disassembler.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.disassembler.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.disassembler.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.disassembler.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.disassembler.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.disassembler.view.disassembler.sh.sh2": "SH2",
|
||||
"hex.disassembler.view.disassembler.sh.sh2a": "SH2A",
|
||||
"hex.disassembler.view.disassembler.sh.sh3": "SH3",
|
||||
"hex.disassembler.view.disassembler.sh.sh4": "SH4",
|
||||
"hex.disassembler.view.disassembler.sh.sh4a": "SH4A",
|
||||
"hex.disassembler.view.disassembler.sh.fpu": "FPU",
|
||||
"hex.disassembler.view.disassembler.sh.dsp": "DSP",
|
||||
"hex.disassembler.view.disassembler.tricore.110": "110",
|
||||
"hex.disassembler.view.disassembler.tricore.120": "120",
|
||||
"hex.disassembler.view.disassembler.tricore.130": "130",
|
||||
"hex.disassembler.view.disassembler.tricore.131": "131",
|
||||
"hex.disassembler.view.disassembler.tricore.160": "160",
|
||||
"hex.disassembler.view.disassembler.tricore.161": "161",
|
||||
"hex.disassembler.view.disassembler.tricore.162": "162",
|
||||
"hex.disassembler.view.disassembler.name": "Disassembler",
|
||||
"hex.disassembler.view.disassembler.position": "Position",
|
||||
"hex.disassembler.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.disassembler.view.disassembler.ppc.spe": "Signal Processing Engine",
|
||||
"hex.disassembler.view.disassembler.region": "Code region",
|
||||
"hex.disassembler.view.disassembler.riscv.compressed": "Compressed",
|
||||
"hex.disassembler.view.disassembler.settings.mode": "Mode",
|
||||
"hex.disassembler.view.disassembler.sparc.v9": "Sparc V9"
|
||||
}
|
||||
}
|
78
plugins/disassembler/romfs/lang/es_ES.json
Normal file
78
plugins/disassembler/romfs/lang/es_ES.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"code": "es_ES",
|
||||
"language": "Spanish",
|
||||
"country": "Spain",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.disassembler.view.disassembler.16bit": "16-bit",
|
||||
"hex.disassembler.view.disassembler.32bit": "32-bit",
|
||||
"hex.disassembler.view.disassembler.64bit": "64-bit",
|
||||
"hex.disassembler.view.disassembler.arch": "Arquitectura",
|
||||
"hex.disassembler.view.disassembler.arm.arm": "",
|
||||
"hex.disassembler.view.disassembler.arm.armv8": "",
|
||||
"hex.disassembler.view.disassembler.arm.cortex_m": "",
|
||||
"hex.disassembler.view.disassembler.arm.default": "Estándar",
|
||||
"hex.disassembler.view.disassembler.arm.thumb": "",
|
||||
"hex.disassembler.view.disassembler.base": "Dirección base",
|
||||
"hex.disassembler.view.disassembler.bpf.classic": "Clásica",
|
||||
"hex.disassembler.view.disassembler.bpf.extended": "Extendida",
|
||||
"hex.disassembler.view.disassembler.disassemble": "Desensamblar",
|
||||
"hex.disassembler.view.disassembler.disassembling": "Desensamblando...",
|
||||
"hex.disassembler.view.disassembler.disassembly.address": "Dirección",
|
||||
"hex.disassembler.view.disassembler.disassembly.bytes": "Byte",
|
||||
"hex.disassembler.view.disassembler.disassembly.offset": "Offset",
|
||||
"hex.disassembler.view.disassembler.disassembly.title": "Desensamblado",
|
||||
"hex.disassembler.view.disassembler.m680x.6301": "6301",
|
||||
"hex.disassembler.view.disassembler.m680x.6309": "6309",
|
||||
"hex.disassembler.view.disassembler.m680x.6800": "6800",
|
||||
"hex.disassembler.view.disassembler.m680x.6801": "6801",
|
||||
"hex.disassembler.view.disassembler.m680x.6805": "6805",
|
||||
"hex.disassembler.view.disassembler.m680x.6808": "6808",
|
||||
"hex.disassembler.view.disassembler.m680x.6809": "6809",
|
||||
"hex.disassembler.view.disassembler.m680x.6811": "6811",
|
||||
"hex.disassembler.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.disassembler.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.disassembler.view.disassembler.m68k.000": "000",
|
||||
"hex.disassembler.view.disassembler.m68k.010": "010",
|
||||
"hex.disassembler.view.disassembler.m68k.020": "020",
|
||||
"hex.disassembler.view.disassembler.m68k.030": "030",
|
||||
"hex.disassembler.view.disassembler.m68k.040": "040",
|
||||
"hex.disassembler.view.disassembler.m68k.060": "060",
|
||||
"hex.disassembler.view.disassembler.mips.micro": "Micro",
|
||||
"hex.disassembler.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.disassembler.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.disassembler.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.disassembler.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.disassembler.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.disassembler.view.disassembler.sh.sh2": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh2a": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh3": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh4": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh4a": "",
|
||||
"hex.disassembler.view.disassembler.sh.fpu": "",
|
||||
"hex.disassembler.view.disassembler.sh.dsp": "",
|
||||
"hex.disassembler.view.disassembler.tricore.110": "",
|
||||
"hex.disassembler.view.disassembler.tricore.120": "",
|
||||
"hex.disassembler.view.disassembler.tricore.130": "",
|
||||
"hex.disassembler.view.disassembler.tricore.131": "",
|
||||
"hex.disassembler.view.disassembler.tricore.160": "",
|
||||
"hex.disassembler.view.disassembler.tricore.161": "",
|
||||
"hex.disassembler.view.disassembler.tricore.162": "",
|
||||
"hex.disassembler.view.disassembler.name": "Desensamblador",
|
||||
"hex.disassembler.view.disassembler.position": "Posición",
|
||||
"hex.disassembler.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.disassembler.view.disassembler.ppc.spe": "Signal Processing Engine",
|
||||
"hex.disassembler.view.disassembler.region": "Región de código",
|
||||
"hex.disassembler.view.disassembler.riscv.compressed": "Comprimido",
|
||||
"hex.disassembler.view.disassembler.settings.mode": "Modo",
|
||||
"hex.disassembler.view.disassembler.sparc.v9": "Sparc V9"
|
||||
}
|
||||
}
|
78
plugins/disassembler/romfs/lang/it_IT.json
Normal file
78
plugins/disassembler/romfs/lang/it_IT.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"code": "it-IT",
|
||||
"language": "Italian",
|
||||
"country": "Italy",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.disassembler.view.disassembler.16bit": "16-bit",
|
||||
"hex.disassembler.view.disassembler.32bit": "32-bit",
|
||||
"hex.disassembler.view.disassembler.64bit": "64-bit",
|
||||
"hex.disassembler.view.disassembler.arch": "Architettura",
|
||||
"hex.disassembler.view.disassembler.arm.arm": "ARM",
|
||||
"hex.disassembler.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.disassembler.view.disassembler.arm.default": "Default",
|
||||
"hex.disassembler.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.disassembler.view.disassembler.base": "Indirizzo di base",
|
||||
"hex.disassembler.view.disassembler.bpf.classic": "Classico",
|
||||
"hex.disassembler.view.disassembler.bpf.extended": "Esteso",
|
||||
"hex.disassembler.view.disassembler.disassemble": "Disassembla",
|
||||
"hex.disassembler.view.disassembler.disassembling": "Disassemblaggio...",
|
||||
"hex.disassembler.view.disassembler.disassembly.address": "Indirizzo",
|
||||
"hex.disassembler.view.disassembler.disassembly.bytes": "Byte",
|
||||
"hex.disassembler.view.disassembler.disassembly.offset": "Offset",
|
||||
"hex.disassembler.view.disassembler.disassembly.title": "Disassembla",
|
||||
"hex.disassembler.view.disassembler.m680x.6301": "6301",
|
||||
"hex.disassembler.view.disassembler.m680x.6309": "6309",
|
||||
"hex.disassembler.view.disassembler.m680x.6800": "6800",
|
||||
"hex.disassembler.view.disassembler.m680x.6801": "6801",
|
||||
"hex.disassembler.view.disassembler.m680x.6805": "6805",
|
||||
"hex.disassembler.view.disassembler.m680x.6808": "6808",
|
||||
"hex.disassembler.view.disassembler.m680x.6809": "6809",
|
||||
"hex.disassembler.view.disassembler.m680x.6811": "6811",
|
||||
"hex.disassembler.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.disassembler.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.disassembler.view.disassembler.m68k.000": "000",
|
||||
"hex.disassembler.view.disassembler.m68k.010": "010",
|
||||
"hex.disassembler.view.disassembler.m68k.020": "020",
|
||||
"hex.disassembler.view.disassembler.m68k.030": "030",
|
||||
"hex.disassembler.view.disassembler.m68k.040": "040",
|
||||
"hex.disassembler.view.disassembler.m68k.060": "060",
|
||||
"hex.disassembler.view.disassembler.mips.micro": "Micro",
|
||||
"hex.disassembler.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.disassembler.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.disassembler.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.disassembler.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.disassembler.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.disassembler.view.disassembler.sh.sh2": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh2a": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh3": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh4": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh4a": "",
|
||||
"hex.disassembler.view.disassembler.sh.fpu": "",
|
||||
"hex.disassembler.view.disassembler.sh.dsp": "",
|
||||
"hex.disassembler.view.disassembler.tricore.110": "",
|
||||
"hex.disassembler.view.disassembler.tricore.120": "",
|
||||
"hex.disassembler.view.disassembler.tricore.130": "",
|
||||
"hex.disassembler.view.disassembler.tricore.131": "",
|
||||
"hex.disassembler.view.disassembler.tricore.160": "",
|
||||
"hex.disassembler.view.disassembler.tricore.161": "",
|
||||
"hex.disassembler.view.disassembler.tricore.162": "",
|
||||
"hex.disassembler.view.disassembler.name": "Disassembla",
|
||||
"hex.disassembler.view.disassembler.position": "Posiziona",
|
||||
"hex.disassembler.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.disassembler.view.disassembler.ppc.spe": "Signal Processing Engine",
|
||||
"hex.disassembler.view.disassembler.region": "Regione del Codice",
|
||||
"hex.disassembler.view.disassembler.riscv.compressed": "Compresso",
|
||||
"hex.disassembler.view.disassembler.settings.mode": "",
|
||||
"hex.disassembler.view.disassembler.sparc.v9": "Sparc V9"
|
||||
}
|
||||
}
|
78
plugins/disassembler/romfs/lang/ja_JP.json
Normal file
78
plugins/disassembler/romfs/lang/ja_JP.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"code": "ja-JP",
|
||||
"language": "Japanese",
|
||||
"country": "Japan",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.disassembler.view.disassembler.16bit": "16-bit",
|
||||
"hex.disassembler.view.disassembler.32bit": "32-bit",
|
||||
"hex.disassembler.view.disassembler.64bit": "64-bit",
|
||||
"hex.disassembler.view.disassembler.arch": "アーキテクチャ",
|
||||
"hex.disassembler.view.disassembler.arm.arm": "ARM",
|
||||
"hex.disassembler.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.disassembler.view.disassembler.arm.default": "デフォルト",
|
||||
"hex.disassembler.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.disassembler.view.disassembler.base": "ベースアドレス",
|
||||
"hex.disassembler.view.disassembler.bpf.classic": "クラシック",
|
||||
"hex.disassembler.view.disassembler.bpf.extended": "拡張",
|
||||
"hex.disassembler.view.disassembler.disassemble": "逆アセンブル",
|
||||
"hex.disassembler.view.disassembler.disassembling": "逆アセンブル中…",
|
||||
"hex.disassembler.view.disassembler.disassembly.address": "アドレス",
|
||||
"hex.disassembler.view.disassembler.disassembly.bytes": "バイト",
|
||||
"hex.disassembler.view.disassembler.disassembly.offset": "オフセット",
|
||||
"hex.disassembler.view.disassembler.disassembly.title": "逆アセンブル",
|
||||
"hex.disassembler.view.disassembler.m680x.6301": "6301",
|
||||
"hex.disassembler.view.disassembler.m680x.6309": "6309",
|
||||
"hex.disassembler.view.disassembler.m680x.6800": "6800",
|
||||
"hex.disassembler.view.disassembler.m680x.6801": "6801",
|
||||
"hex.disassembler.view.disassembler.m680x.6805": "6805",
|
||||
"hex.disassembler.view.disassembler.m680x.6808": "6808",
|
||||
"hex.disassembler.view.disassembler.m680x.6809": "6809",
|
||||
"hex.disassembler.view.disassembler.m680x.6811": "6811",
|
||||
"hex.disassembler.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.disassembler.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.disassembler.view.disassembler.m68k.000": "000",
|
||||
"hex.disassembler.view.disassembler.m68k.010": "010",
|
||||
"hex.disassembler.view.disassembler.m68k.020": "020",
|
||||
"hex.disassembler.view.disassembler.m68k.030": "030",
|
||||
"hex.disassembler.view.disassembler.m68k.040": "040",
|
||||
"hex.disassembler.view.disassembler.m68k.060": "060",
|
||||
"hex.disassembler.view.disassembler.mips.micro": "Micro",
|
||||
"hex.disassembler.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.disassembler.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.disassembler.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.disassembler.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.disassembler.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.disassembler.view.disassembler.sh.sh2": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh2a": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh3": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh4": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh4a": "",
|
||||
"hex.disassembler.view.disassembler.sh.fpu": "",
|
||||
"hex.disassembler.view.disassembler.sh.dsp": "",
|
||||
"hex.disassembler.view.disassembler.tricore.110": "",
|
||||
"hex.disassembler.view.disassembler.tricore.120": "",
|
||||
"hex.disassembler.view.disassembler.tricore.130": "",
|
||||
"hex.disassembler.view.disassembler.tricore.131": "",
|
||||
"hex.disassembler.view.disassembler.tricore.160": "",
|
||||
"hex.disassembler.view.disassembler.tricore.161": "",
|
||||
"hex.disassembler.view.disassembler.tricore.162": "",
|
||||
"hex.disassembler.view.disassembler.name": "逆アセンブラ",
|
||||
"hex.disassembler.view.disassembler.position": "位置",
|
||||
"hex.disassembler.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.disassembler.view.disassembler.ppc.qpx": "",
|
||||
"hex.disassembler.view.disassembler.ppc.spe": "信号処理エンジン",
|
||||
"hex.disassembler.view.disassembler.region": "コード領域",
|
||||
"hex.disassembler.view.disassembler.riscv.compressed": "圧縮済み",
|
||||
"hex.disassembler.view.disassembler.settings.mode": "モード",
|
||||
"hex.disassembler.view.disassembler.sparc.v9": "Sparc V9"
|
||||
}
|
||||
}
|
78
plugins/disassembler/romfs/lang/ko_KR.json
Normal file
78
plugins/disassembler/romfs/lang/ko_KR.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"code": "ko-KR",
|
||||
"language": "Korean",
|
||||
"country": "Korea",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.disassembler.view.disassembler.16bit": "16비트",
|
||||
"hex.disassembler.view.disassembler.32bit": "32비트",
|
||||
"hex.disassembler.view.disassembler.64bit": "64비트",
|
||||
"hex.disassembler.view.disassembler.arch": "아키텍처",
|
||||
"hex.disassembler.view.disassembler.arm.arm": "ARM",
|
||||
"hex.disassembler.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.disassembler.view.disassembler.arm.default": "기본",
|
||||
"hex.disassembler.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.disassembler.view.disassembler.base": "베이스 주소",
|
||||
"hex.disassembler.view.disassembler.bpf.classic": "클래식",
|
||||
"hex.disassembler.view.disassembler.bpf.extended": "확장",
|
||||
"hex.disassembler.view.disassembler.disassemble": "디스어셈블",
|
||||
"hex.disassembler.view.disassembler.disassembling": "디스어셈블하는 중...",
|
||||
"hex.disassembler.view.disassembler.disassembly.address": "주소",
|
||||
"hex.disassembler.view.disassembler.disassembly.bytes": "바이트",
|
||||
"hex.disassembler.view.disassembler.disassembly.offset": "오프셋",
|
||||
"hex.disassembler.view.disassembler.disassembly.title": "디스어셈블리",
|
||||
"hex.disassembler.view.disassembler.m680x.6301": "6301",
|
||||
"hex.disassembler.view.disassembler.m680x.6309": "6309",
|
||||
"hex.disassembler.view.disassembler.m680x.6800": "6800",
|
||||
"hex.disassembler.view.disassembler.m680x.6801": "6801",
|
||||
"hex.disassembler.view.disassembler.m680x.6805": "6805",
|
||||
"hex.disassembler.view.disassembler.m680x.6808": "6808",
|
||||
"hex.disassembler.view.disassembler.m680x.6809": "6809",
|
||||
"hex.disassembler.view.disassembler.m680x.6811": "6811",
|
||||
"hex.disassembler.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.disassembler.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.disassembler.view.disassembler.m68k.000": "000",
|
||||
"hex.disassembler.view.disassembler.m68k.010": "010",
|
||||
"hex.disassembler.view.disassembler.m68k.020": "020",
|
||||
"hex.disassembler.view.disassembler.m68k.030": "030",
|
||||
"hex.disassembler.view.disassembler.m68k.040": "040",
|
||||
"hex.disassembler.view.disassembler.m68k.060": "060",
|
||||
"hex.disassembler.view.disassembler.mips.micro": "Micro",
|
||||
"hex.disassembler.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.disassembler.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.disassembler.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.disassembler.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.disassembler.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.disassembler.view.disassembler.sh.sh2": "SH2",
|
||||
"hex.disassembler.view.disassembler.sh.sh2a": "SH2A",
|
||||
"hex.disassembler.view.disassembler.sh.sh3": "SH3",
|
||||
"hex.disassembler.view.disassembler.sh.sh4": "SH4",
|
||||
"hex.disassembler.view.disassembler.sh.sh4a": "SH4A",
|
||||
"hex.disassembler.view.disassembler.sh.fpu": "FPU",
|
||||
"hex.disassembler.view.disassembler.sh.dsp": "DSP",
|
||||
"hex.disassembler.view.disassembler.tricore.110": "110",
|
||||
"hex.disassembler.view.disassembler.tricore.120": "120",
|
||||
"hex.disassembler.view.disassembler.tricore.130": "130",
|
||||
"hex.disassembler.view.disassembler.tricore.131": "131",
|
||||
"hex.disassembler.view.disassembler.tricore.160": "160",
|
||||
"hex.disassembler.view.disassembler.tricore.161": "161",
|
||||
"hex.disassembler.view.disassembler.tricore.162": "162",
|
||||
"hex.disassembler.view.disassembler.name": "디스어셈블러",
|
||||
"hex.disassembler.view.disassembler.position": "위치",
|
||||
"hex.disassembler.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.disassembler.view.disassembler.ppc.qpx": "쿼드 프로세싱 확장",
|
||||
"hex.disassembler.view.disassembler.ppc.spe": "시그널 프로세싱 엔진",
|
||||
"hex.disassembler.view.disassembler.region": "코드 영역",
|
||||
"hex.disassembler.view.disassembler.riscv.compressed": "압축됨",
|
||||
"hex.disassembler.view.disassembler.settings.mode": "모드",
|
||||
"hex.disassembler.view.disassembler.sparc.v9": "Sparc V9"
|
||||
}
|
||||
}
|
78
plugins/disassembler/romfs/lang/pt_BR.json
Normal file
78
plugins/disassembler/romfs/lang/pt_BR.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"code": "pt-BR",
|
||||
"language": "Portuguese",
|
||||
"country": "Brazil",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.disassembler.view.disassembler.16bit": "16-bit",
|
||||
"hex.disassembler.view.disassembler.32bit": "32-bit",
|
||||
"hex.disassembler.view.disassembler.64bit": "64-bit",
|
||||
"hex.disassembler.view.disassembler.arch": "Arquitetura",
|
||||
"hex.disassembler.view.disassembler.arm.arm": "ARM",
|
||||
"hex.disassembler.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.disassembler.view.disassembler.arm.default": "Default",
|
||||
"hex.disassembler.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.disassembler.view.disassembler.base": "Endereço base",
|
||||
"hex.disassembler.view.disassembler.bpf.classic": "Classico",
|
||||
"hex.disassembler.view.disassembler.bpf.extended": "Extendido",
|
||||
"hex.disassembler.view.disassembler.disassemble": "Desmontar",
|
||||
"hex.disassembler.view.disassembler.disassembling": "Desmontando...",
|
||||
"hex.disassembler.view.disassembler.disassembly.address": "Address",
|
||||
"hex.disassembler.view.disassembler.disassembly.bytes": "Byte",
|
||||
"hex.disassembler.view.disassembler.disassembly.offset": "Offset",
|
||||
"hex.disassembler.view.disassembler.disassembly.title": "Disassembly",
|
||||
"hex.disassembler.view.disassembler.m680x.6301": "6301",
|
||||
"hex.disassembler.view.disassembler.m680x.6309": "6309",
|
||||
"hex.disassembler.view.disassembler.m680x.6800": "6800",
|
||||
"hex.disassembler.view.disassembler.m680x.6801": "6801",
|
||||
"hex.disassembler.view.disassembler.m680x.6805": "6805",
|
||||
"hex.disassembler.view.disassembler.m680x.6808": "6808",
|
||||
"hex.disassembler.view.disassembler.m680x.6809": "6809",
|
||||
"hex.disassembler.view.disassembler.m680x.6811": "6811",
|
||||
"hex.disassembler.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.disassembler.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.disassembler.view.disassembler.m68k.000": "000",
|
||||
"hex.disassembler.view.disassembler.m68k.010": "010",
|
||||
"hex.disassembler.view.disassembler.m68k.020": "020",
|
||||
"hex.disassembler.view.disassembler.m68k.030": "030",
|
||||
"hex.disassembler.view.disassembler.m68k.040": "040",
|
||||
"hex.disassembler.view.disassembler.m68k.060": "060",
|
||||
"hex.disassembler.view.disassembler.mips.micro": "Micro",
|
||||
"hex.disassembler.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.disassembler.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.disassembler.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.disassembler.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.disassembler.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.disassembler.view.disassembler.sh.sh2": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh2a": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh3": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh4": "",
|
||||
"hex.disassembler.view.disassembler.sh.sh4a": "",
|
||||
"hex.disassembler.view.disassembler.sh.fpu": "",
|
||||
"hex.disassembler.view.disassembler.sh.dsp": "",
|
||||
"hex.disassembler.view.disassembler.tricore.110": "",
|
||||
"hex.disassembler.view.disassembler.tricore.120": "",
|
||||
"hex.disassembler.view.disassembler.tricore.130": "",
|
||||
"hex.disassembler.view.disassembler.tricore.131": "",
|
||||
"hex.disassembler.view.disassembler.tricore.160": "",
|
||||
"hex.disassembler.view.disassembler.tricore.161": "",
|
||||
"hex.disassembler.view.disassembler.tricore.162": "",
|
||||
"hex.disassembler.view.disassembler.name": "Desmontador",
|
||||
"hex.disassembler.view.disassembler.position": "Posição",
|
||||
"hex.disassembler.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.disassembler.view.disassembler.ppc.spe": "Signal Processing Engine",
|
||||
"hex.disassembler.view.disassembler.region": "Região do código",
|
||||
"hex.disassembler.view.disassembler.riscv.compressed": "Compressed",
|
||||
"hex.disassembler.view.disassembler.settings.mode": "Modo",
|
||||
"hex.disassembler.view.disassembler.sparc.v9": "Sparc V9"
|
||||
}
|
||||
}
|
78
plugins/disassembler/romfs/lang/zh_CN.json
Normal file
78
plugins/disassembler/romfs/lang/zh_CN.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"code": "zh-CN",
|
||||
"language": "Chinese (Simplified)",
|
||||
"country": "China",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.disassembler.view.disassembler.16bit": "16 位",
|
||||
"hex.disassembler.view.disassembler.32bit": "32 位",
|
||||
"hex.disassembler.view.disassembler.64bit": "64 位",
|
||||
"hex.disassembler.view.disassembler.arch": "架构",
|
||||
"hex.disassembler.view.disassembler.arm.arm": "ARM",
|
||||
"hex.disassembler.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.disassembler.view.disassembler.arm.default": "默认",
|
||||
"hex.disassembler.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.disassembler.view.disassembler.base": "基地址",
|
||||
"hex.disassembler.view.disassembler.bpf.classic": "传统 BPF(cBPF)",
|
||||
"hex.disassembler.view.disassembler.bpf.extended": "扩展 BPF(eBPF)",
|
||||
"hex.disassembler.view.disassembler.disassemble": "反汇编",
|
||||
"hex.disassembler.view.disassembler.disassembling": "反汇编中...",
|
||||
"hex.disassembler.view.disassembler.disassembly.address": "地址",
|
||||
"hex.disassembler.view.disassembler.disassembly.bytes": "字节",
|
||||
"hex.disassembler.view.disassembler.disassembly.offset": "偏移",
|
||||
"hex.disassembler.view.disassembler.disassembly.title": "反汇编",
|
||||
"hex.disassembler.view.disassembler.m680x.6301": "6301",
|
||||
"hex.disassembler.view.disassembler.m680x.6309": "6309",
|
||||
"hex.disassembler.view.disassembler.m680x.6800": "6800",
|
||||
"hex.disassembler.view.disassembler.m680x.6801": "6801",
|
||||
"hex.disassembler.view.disassembler.m680x.6805": "6805",
|
||||
"hex.disassembler.view.disassembler.m680x.6808": "6808",
|
||||
"hex.disassembler.view.disassembler.m680x.6809": "6809",
|
||||
"hex.disassembler.view.disassembler.m680x.6811": "6811",
|
||||
"hex.disassembler.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.disassembler.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.disassembler.view.disassembler.m68k.000": "000",
|
||||
"hex.disassembler.view.disassembler.m68k.010": "010",
|
||||
"hex.disassembler.view.disassembler.m68k.020": "020",
|
||||
"hex.disassembler.view.disassembler.m68k.030": "030",
|
||||
"hex.disassembler.view.disassembler.m68k.040": "040",
|
||||
"hex.disassembler.view.disassembler.m68k.060": "060",
|
||||
"hex.disassembler.view.disassembler.mips.micro": "Micro MIPS",
|
||||
"hex.disassembler.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.disassembler.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.disassembler.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.disassembler.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.disassembler.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.disassembler.view.disassembler.sh.sh2": "SH2",
|
||||
"hex.disassembler.view.disassembler.sh.sh2a": "SH2A",
|
||||
"hex.disassembler.view.disassembler.sh.sh3": "SH3",
|
||||
"hex.disassembler.view.disassembler.sh.sh4": "SH4",
|
||||
"hex.disassembler.view.disassembler.sh.sh4a": "SH4A",
|
||||
"hex.disassembler.view.disassembler.sh.fpu": "FPU",
|
||||
"hex.disassembler.view.disassembler.sh.dsp": "DSP",
|
||||
"hex.disassembler.view.disassembler.tricore.110": "110",
|
||||
"hex.disassembler.view.disassembler.tricore.120": "120",
|
||||
"hex.disassembler.view.disassembler.tricore.130": "130",
|
||||
"hex.disassembler.view.disassembler.tricore.131": "131",
|
||||
"hex.disassembler.view.disassembler.tricore.160": "160",
|
||||
"hex.disassembler.view.disassembler.tricore.161": "161",
|
||||
"hex.disassembler.view.disassembler.tricore.162": "162",
|
||||
"hex.disassembler.view.disassembler.name": "反汇编",
|
||||
"hex.disassembler.view.disassembler.position": "位置",
|
||||
"hex.disassembler.view.disassembler.ppc.booke": "PowerPC Book-E",
|
||||
"hex.disassembler.view.disassembler.ppc.qpx": "PowerPC 四核处理扩展(QPX)",
|
||||
"hex.disassembler.view.disassembler.ppc.spe": "PowerPC 单核引擎(SPE)",
|
||||
"hex.disassembler.view.disassembler.region": "代码范围",
|
||||
"hex.disassembler.view.disassembler.riscv.compressed": "压缩的 RISC-V",
|
||||
"hex.disassembler.view.disassembler.settings.mode": "模式",
|
||||
"hex.disassembler.view.disassembler.sparc.v9": "Sparc V9"
|
||||
}
|
||||
}
|
78
plugins/disassembler/romfs/lang/zh_TW.json
Normal file
78
plugins/disassembler/romfs/lang/zh_TW.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"code": "zh-TW",
|
||||
"language": "Chinese (Traditional)",
|
||||
"country": "Taiwan",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.disassembler.view.disassembler.16bit": "16 位元",
|
||||
"hex.disassembler.view.disassembler.32bit": "32 位元",
|
||||
"hex.disassembler.view.disassembler.64bit": "64 位元",
|
||||
"hex.disassembler.view.disassembler.arch": "架構",
|
||||
"hex.disassembler.view.disassembler.arm.arm": "ARM",
|
||||
"hex.disassembler.view.disassembler.arm.armv8": "ARMv8",
|
||||
"hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M",
|
||||
"hex.disassembler.view.disassembler.arm.default": "預設",
|
||||
"hex.disassembler.view.disassembler.arm.thumb": "Thumb",
|
||||
"hex.disassembler.view.disassembler.base": "基址",
|
||||
"hex.disassembler.view.disassembler.bpf.classic": "經典",
|
||||
"hex.disassembler.view.disassembler.bpf.extended": "擴充",
|
||||
"hex.disassembler.view.disassembler.disassemble": "解譯",
|
||||
"hex.disassembler.view.disassembler.disassembling": "正在反組譯...",
|
||||
"hex.disassembler.view.disassembler.disassembly.address": "位址",
|
||||
"hex.disassembler.view.disassembler.disassembly.bytes": "位元",
|
||||
"hex.disassembler.view.disassembler.disassembly.offset": "位移",
|
||||
"hex.disassembler.view.disassembler.disassembly.title": "反組譯",
|
||||
"hex.disassembler.view.disassembler.m680x.6301": "6301",
|
||||
"hex.disassembler.view.disassembler.m680x.6309": "6309",
|
||||
"hex.disassembler.view.disassembler.m680x.6800": "6800",
|
||||
"hex.disassembler.view.disassembler.m680x.6801": "6801",
|
||||
"hex.disassembler.view.disassembler.m680x.6805": "6805",
|
||||
"hex.disassembler.view.disassembler.m680x.6808": "6808",
|
||||
"hex.disassembler.view.disassembler.m680x.6809": "6809",
|
||||
"hex.disassembler.view.disassembler.m680x.6811": "6811",
|
||||
"hex.disassembler.view.disassembler.m680x.cpu12": "CPU12",
|
||||
"hex.disassembler.view.disassembler.m680x.hcs08": "HCS08",
|
||||
"hex.disassembler.view.disassembler.m68k.000": "000",
|
||||
"hex.disassembler.view.disassembler.m68k.010": "010",
|
||||
"hex.disassembler.view.disassembler.m68k.020": "020",
|
||||
"hex.disassembler.view.disassembler.m68k.030": "030",
|
||||
"hex.disassembler.view.disassembler.m68k.040": "040",
|
||||
"hex.disassembler.view.disassembler.m68k.060": "060",
|
||||
"hex.disassembler.view.disassembler.mips.micro": "Micro",
|
||||
"hex.disassembler.view.disassembler.mips.mips2": "MIPS II",
|
||||
"hex.disassembler.view.disassembler.mips.mips3": "MIPS III",
|
||||
"hex.disassembler.view.disassembler.mips.mips32": "MIPS32",
|
||||
"hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6",
|
||||
"hex.disassembler.view.disassembler.mips.mips64": "MIPS64",
|
||||
"hex.disassembler.view.disassembler.mos65xx.6502": "6502",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816": "65816",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X",
|
||||
"hex.disassembler.view.disassembler.mos65xx.65c02": "65C02",
|
||||
"hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02",
|
||||
"hex.disassembler.view.disassembler.sh.sh2": "SH2",
|
||||
"hex.disassembler.view.disassembler.sh.sh2a": "SH2A",
|
||||
"hex.disassembler.view.disassembler.sh.sh3": "SH3",
|
||||
"hex.disassembler.view.disassembler.sh.sh4": "SH4",
|
||||
"hex.disassembler.view.disassembler.sh.sh4a": "SH4A",
|
||||
"hex.disassembler.view.disassembler.sh.fpu": "FPU",
|
||||
"hex.disassembler.view.disassembler.sh.dsp": "DSP",
|
||||
"hex.disassembler.view.disassembler.tricore.110": "110",
|
||||
"hex.disassembler.view.disassembler.tricore.120": "120",
|
||||
"hex.disassembler.view.disassembler.tricore.130": "130",
|
||||
"hex.disassembler.view.disassembler.tricore.131": "131",
|
||||
"hex.disassembler.view.disassembler.tricore.160": "160",
|
||||
"hex.disassembler.view.disassembler.tricore.161": "161",
|
||||
"hex.disassembler.view.disassembler.tricore.162": "162",
|
||||
"hex.disassembler.view.disassembler.name": "反組譯器",
|
||||
"hex.disassembler.view.disassembler.position": "位置",
|
||||
"hex.disassembler.view.disassembler.ppc.booke": "Book-E",
|
||||
"hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions",
|
||||
"hex.disassembler.view.disassembler.ppc.spe": "訊號處理引擎",
|
||||
"hex.disassembler.view.disassembler.region": "程式碼區域",
|
||||
"hex.disassembler.view.disassembler.riscv.compressed": "Compressed",
|
||||
"hex.disassembler.view.disassembler.settings.mode": "模式",
|
||||
"hex.disassembler.view.disassembler.sparc.v9": "Sparc V9"
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
#include <hex/helpers/utils.hpp>
|
||||
|
||||
#include <content/pl_visualizers/visualizer_helpers.hpp>
|
||||
#include <pl/pattern_language.hpp>
|
||||
#include <pl/patterns/pattern.hpp>
|
||||
|
||||
#include <imgui.h>
|
||||
|
||||
@ -9,7 +10,7 @@
|
||||
#include <hex/ui/imgui_imhex_extensions.h>
|
||||
#include <hex/api/localization_manager.hpp>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
namespace hex::plugin::disasm {
|
||||
|
||||
void drawDisassemblyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool shouldReset, std::span<const pl::core::Token::Literal> arguments) {
|
||||
struct Disassembly {
|
||||
@ -45,9 +46,9 @@ namespace hex::plugin::builtin {
|
||||
|
||||
if (ImGui::BeginTable("##disassembly", 3, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_ScrollY, scaled(ImVec2(0, 300)))) {
|
||||
ImGui::TableSetupScrollFreeze(0, 1);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.address"_lang);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.bytes"_lang);
|
||||
ImGui::TableSetupColumn("hex.builtin.common.instruction"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.address"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.bytes"_lang);
|
||||
ImGui::TableSetupColumn("hex.ui.common.instruction"_lang);
|
||||
ImGui::TableHeadersRow();
|
||||
|
||||
for (auto &entry : disassembly) {
|
@ -7,9 +7,9 @@
|
||||
|
||||
using namespace std::literals::string_literals;
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
namespace hex::plugin::disasm {
|
||||
|
||||
ViewDisassembler::ViewDisassembler() : View::Window("hex.builtin.view.disassembler.name") {
|
||||
ViewDisassembler::ViewDisassembler() : View::Window("hex.disassembler.view.disassembler.name") {
|
||||
EventProviderDeleted::subscribe(this, [this](const auto*) {
|
||||
m_disassembly.clear();
|
||||
});
|
||||
@ -24,7 +24,7 @@ namespace hex::plugin::builtin {
|
||||
void ViewDisassembler::disassemble() {
|
||||
m_disassembly.clear();
|
||||
|
||||
m_disassemblerTask = TaskManager::createTask("hex.builtin.view.disassembler.disassembling", m_codeRegion.getSize(), [this](auto &task) {
|
||||
m_disassemblerTask = TaskManager::createTask("hex.disassembler.view.disassembler.disassembling", m_codeRegion.getSize(), [this](auto &task) {
|
||||
csh capstoneHandle;
|
||||
cs_insn *instructions = nullptr;
|
||||
|
||||
@ -93,20 +93,20 @@ namespace hex::plugin::builtin {
|
||||
void ViewDisassembler::drawContent() {
|
||||
auto provider = ImHexApi::Provider::get();
|
||||
if (ImHexApi::Provider::isValid() && provider->isReadable()) {
|
||||
ImGuiExt::Header("hex.builtin.view.disassembler.position"_lang, true);
|
||||
ImGuiExt::Header("hex.disassembler.view.disassembler.position"_lang, true);
|
||||
|
||||
// Draw base address input
|
||||
ImGuiExt::InputHexadecimal("hex.builtin.view.disassembler.base"_lang, &m_baseAddress, ImGuiInputTextFlags_CharsHexadecimal);
|
||||
ImGuiExt::InputHexadecimal("hex.disassembler.view.disassembler.base"_lang, &m_baseAddress, ImGuiInputTextFlags_CharsHexadecimal);
|
||||
|
||||
// Draw region selection picker
|
||||
ui::regionSelectionPicker(&m_codeRegion, provider, &m_range);
|
||||
|
||||
// Draw settings
|
||||
{
|
||||
ImGuiExt::Header("hex.builtin.common.settings"_lang);
|
||||
ImGuiExt::Header("hex.ui.common.settings"_lang);
|
||||
|
||||
// Draw architecture selector
|
||||
if (ImGui::Combo("hex.builtin.view.disassembler.arch"_lang, reinterpret_cast<int *>(&m_architecture), Disassembler::ArchitectureNames.data(), Disassembler::getArchitectureSupportedCount()))
|
||||
if (ImGui::Combo("hex.disassembler.view.disassembler.arch"_lang, reinterpret_cast<int *>(&m_architecture), Disassembler::ArchitectureNames.data(), Disassembler::getArchitectureSupportedCount()))
|
||||
m_mode = cs_mode(0);
|
||||
|
||||
// Draw sub-settings for each architecture
|
||||
@ -114,9 +114,9 @@ namespace hex::plugin::builtin {
|
||||
|
||||
// Draw endian radio buttons. This setting is available for all architectures
|
||||
static int littleEndian = true;
|
||||
ImGui::RadioButton("hex.builtin.common.little_endian"_lang, &littleEndian, true);
|
||||
ImGui::RadioButton("hex.ui.common.little_endian"_lang, &littleEndian, true);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.common.big_endian"_lang, &littleEndian, false);
|
||||
ImGui::RadioButton("hex.ui.common.big_endian"_lang, &littleEndian, false);
|
||||
|
||||
ImGui::NewLine();
|
||||
|
||||
@ -125,16 +125,16 @@ namespace hex::plugin::builtin {
|
||||
case Architecture::ARM:
|
||||
{
|
||||
static int mode = CS_MODE_ARM;
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.arm.arm"_lang, &mode, CS_MODE_ARM);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.arm.arm"_lang, &mode, CS_MODE_ARM);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.arm.thumb"_lang, &mode, CS_MODE_THUMB);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.arm.thumb"_lang, &mode, CS_MODE_THUMB);
|
||||
|
||||
static int extraMode = 0;
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.arm.default"_lang, &extraMode, 0);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.arm.default"_lang, &extraMode, 0);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.arm.cortex_m"_lang, &extraMode, CS_MODE_MCLASS);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.arm.cortex_m"_lang, &extraMode, CS_MODE_MCLASS);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.arm.armv8"_lang, &extraMode, CS_MODE_V8);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.arm.armv8"_lang, &extraMode, CS_MODE_V8);
|
||||
|
||||
m_mode = cs_mode(mode | extraMode);
|
||||
}
|
||||
@ -142,18 +142,18 @@ namespace hex::plugin::builtin {
|
||||
case Architecture::MIPS:
|
||||
{
|
||||
static int mode = CS_MODE_MIPS32;
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips32"_lang, &mode, CS_MODE_MIPS32);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.mips.mips32"_lang, &mode, CS_MODE_MIPS32);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips64"_lang, &mode, CS_MODE_MIPS64);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.mips.mips64"_lang, &mode, CS_MODE_MIPS64);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips32R6"_lang, &mode, CS_MODE_MIPS32R6);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.mips.mips32R6"_lang, &mode, CS_MODE_MIPS32R6);
|
||||
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips2"_lang, &mode, CS_MODE_MIPS2);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.mips.mips2"_lang, &mode, CS_MODE_MIPS2);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips3"_lang, &mode, CS_MODE_MIPS3);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.mips.mips3"_lang, &mode, CS_MODE_MIPS3);
|
||||
|
||||
static bool microMode;
|
||||
ImGui::Checkbox("hex.builtin.view.disassembler.mips.micro"_lang, µMode);
|
||||
ImGui::Checkbox("hex.disassembler.view.disassembler.mips.micro"_lang, µMode);
|
||||
|
||||
m_mode = cs_mode(mode | (microMode ? CS_MODE_MICRO : cs_mode(0)));
|
||||
}
|
||||
@ -161,11 +161,11 @@ namespace hex::plugin::builtin {
|
||||
case Architecture::X86:
|
||||
{
|
||||
static int mode = CS_MODE_32;
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.16bit"_lang, &mode, CS_MODE_16);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.16bit"_lang, &mode, CS_MODE_16);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.32bit"_lang, &mode, CS_MODE_32);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.32bit"_lang, &mode, CS_MODE_32);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.64bit"_lang, &mode, CS_MODE_64);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.64bit"_lang, &mode, CS_MODE_64);
|
||||
|
||||
m_mode = cs_mode(mode);
|
||||
}
|
||||
@ -173,18 +173,18 @@ namespace hex::plugin::builtin {
|
||||
case Architecture::PPC:
|
||||
{
|
||||
static int mode = CS_MODE_32;
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.32bit"_lang, &mode, CS_MODE_32);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.32bit"_lang, &mode, CS_MODE_32);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.64bit"_lang, &mode, CS_MODE_64);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.64bit"_lang, &mode, CS_MODE_64);
|
||||
|
||||
static bool qpx = false;
|
||||
ImGui::Checkbox("hex.builtin.view.disassembler.ppc.qpx"_lang, &qpx);
|
||||
ImGui::Checkbox("hex.disassembler.view.disassembler.ppc.qpx"_lang, &qpx);
|
||||
|
||||
#if CS_API_MAJOR >= 5
|
||||
static bool spe = false;
|
||||
ImGui::Checkbox("hex.builtin.view.disassembler.ppc.spe"_lang, &spe);
|
||||
ImGui::Checkbox("hex.disassembler.view.disassembler.ppc.spe"_lang, &spe);
|
||||
static bool booke = false;
|
||||
ImGui::Checkbox("hex.builtin.view.disassembler.ppc.booke"_lang, &booke);
|
||||
ImGui::Checkbox("hex.disassembler.view.disassembler.ppc.booke"_lang, &booke);
|
||||
|
||||
m_mode = cs_mode(mode | (qpx ? CS_MODE_QPX : cs_mode(0)) | (spe ? CS_MODE_SPE : cs_mode(0)) | (booke ? CS_MODE_BOOKE : cs_mode(0)));
|
||||
#else
|
||||
@ -195,7 +195,7 @@ namespace hex::plugin::builtin {
|
||||
case Architecture::SPARC:
|
||||
{
|
||||
static bool v9Mode = false;
|
||||
ImGui::Checkbox("hex.builtin.view.disassembler.sparc.v9"_lang, &v9Mode);
|
||||
ImGui::Checkbox("hex.disassembler.view.disassembler.sparc.v9"_lang, &v9Mode);
|
||||
|
||||
m_mode = cs_mode(v9Mode ? CS_MODE_V9 : cs_mode(0));
|
||||
}
|
||||
@ -204,12 +204,12 @@ namespace hex::plugin::builtin {
|
||||
case Architecture::RISCV:
|
||||
{
|
||||
static int mode = CS_MODE_RISCV32;
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.32bit"_lang, &mode, CS_MODE_RISCV32);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.32bit"_lang, &mode, CS_MODE_RISCV32);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.64bit"_lang, &mode, CS_MODE_RISCV64);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.64bit"_lang, &mode, CS_MODE_RISCV64);
|
||||
|
||||
static bool compressed = false;
|
||||
ImGui::Checkbox("hex.builtin.view.disassembler.riscv.compressed"_lang, &compressed);
|
||||
ImGui::Checkbox("hex.disassembler.view.disassembler.riscv.compressed"_lang, &compressed);
|
||||
|
||||
m_mode = cs_mode(mode | (compressed ? CS_MODE_RISCVC : cs_mode(0)));
|
||||
}
|
||||
@ -220,15 +220,15 @@ namespace hex::plugin::builtin {
|
||||
static int selectedMode = 0;
|
||||
|
||||
std::pair<const char *, cs_mode> modes[] = {
|
||||
{"hex.builtin.view.disassembler.m68k.000"_lang, CS_MODE_M68K_000},
|
||||
{ "hex.builtin.view.disassembler.m68k.010"_lang, CS_MODE_M68K_010},
|
||||
{ "hex.builtin.view.disassembler.m68k.020"_lang, CS_MODE_M68K_020},
|
||||
{ "hex.builtin.view.disassembler.m68k.030"_lang, CS_MODE_M68K_030},
|
||||
{ "hex.builtin.view.disassembler.m68k.040"_lang, CS_MODE_M68K_040},
|
||||
{ "hex.builtin.view.disassembler.m68k.060"_lang, CS_MODE_M68K_060},
|
||||
{"hex.disassembler.view.disassembler.m68k.000"_lang, CS_MODE_M68K_000},
|
||||
{ "hex.disassembler.view.disassembler.m68k.010"_lang, CS_MODE_M68K_010},
|
||||
{ "hex.disassembler.view.disassembler.m68k.020"_lang, CS_MODE_M68K_020},
|
||||
{ "hex.disassembler.view.disassembler.m68k.030"_lang, CS_MODE_M68K_030},
|
||||
{ "hex.disassembler.view.disassembler.m68k.040"_lang, CS_MODE_M68K_040},
|
||||
{ "hex.disassembler.view.disassembler.m68k.060"_lang, CS_MODE_M68K_060},
|
||||
};
|
||||
|
||||
if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) {
|
||||
if (ImGui::BeginCombo("hex.disassembler.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) {
|
||||
for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) {
|
||||
if (ImGui::Selectable(modes[i].first))
|
||||
selectedMode = i;
|
||||
@ -244,19 +244,19 @@ namespace hex::plugin::builtin {
|
||||
static int selectedMode = 0;
|
||||
|
||||
std::pair<const char *, cs_mode> modes[] = {
|
||||
{"hex.builtin.view.disassembler.m680x.6301"_lang, CS_MODE_M680X_6301 },
|
||||
{ "hex.builtin.view.disassembler.m680x.6309"_lang, CS_MODE_M680X_6309 },
|
||||
{ "hex.builtin.view.disassembler.m680x.6800"_lang, CS_MODE_M680X_6800 },
|
||||
{ "hex.builtin.view.disassembler.m680x.6801"_lang, CS_MODE_M680X_6801 },
|
||||
{ "hex.builtin.view.disassembler.m680x.6805"_lang, CS_MODE_M680X_6805 },
|
||||
{ "hex.builtin.view.disassembler.m680x.6808"_lang, CS_MODE_M680X_6808 },
|
||||
{ "hex.builtin.view.disassembler.m680x.6809"_lang, CS_MODE_M680X_6809 },
|
||||
{ "hex.builtin.view.disassembler.m680x.6811"_lang, CS_MODE_M680X_6811 },
|
||||
{ "hex.builtin.view.disassembler.m680x.cpu12"_lang, CS_MODE_M680X_CPU12},
|
||||
{ "hex.builtin.view.disassembler.m680x.hcs08"_lang, CS_MODE_M680X_HCS08},
|
||||
{"hex.disassembler.view.disassembler.m680x.6301"_lang, CS_MODE_M680X_6301 },
|
||||
{ "hex.disassembler.view.disassembler.m680x.6309"_lang, CS_MODE_M680X_6309 },
|
||||
{ "hex.disassembler.view.disassembler.m680x.6800"_lang, CS_MODE_M680X_6800 },
|
||||
{ "hex.disassembler.view.disassembler.m680x.6801"_lang, CS_MODE_M680X_6801 },
|
||||
{ "hex.disassembler.view.disassembler.m680x.6805"_lang, CS_MODE_M680X_6805 },
|
||||
{ "hex.disassembler.view.disassembler.m680x.6808"_lang, CS_MODE_M680X_6808 },
|
||||
{ "hex.disassembler.view.disassembler.m680x.6809"_lang, CS_MODE_M680X_6809 },
|
||||
{ "hex.disassembler.view.disassembler.m680x.6811"_lang, CS_MODE_M680X_6811 },
|
||||
{ "hex.disassembler.view.disassembler.m680x.cpu12"_lang, CS_MODE_M680X_CPU12},
|
||||
{ "hex.disassembler.view.disassembler.m680x.hcs08"_lang, CS_MODE_M680X_HCS08},
|
||||
};
|
||||
|
||||
if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) {
|
||||
if (ImGui::BeginCombo("hex.disassembler.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) {
|
||||
for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) {
|
||||
if (ImGui::Selectable(modes[i].first))
|
||||
selectedMode = i;
|
||||
@ -273,16 +273,16 @@ namespace hex::plugin::builtin {
|
||||
static int selectedMode = 0;
|
||||
|
||||
std::pair<const char *, cs_mode> modes[] = {
|
||||
{"hex.builtin.view.disassembler.mos65xx.6502"_lang, CS_MODE_MOS65XX_6502 },
|
||||
{ "hex.builtin.view.disassembler.mos65xx.65c02"_lang, CS_MODE_MOS65XX_65C02 },
|
||||
{ "hex.builtin.view.disassembler.mos65xx.w65c02"_lang, CS_MODE_MOS65XX_W65C02 },
|
||||
{ "hex.builtin.view.disassembler.mos65xx.65816"_lang, CS_MODE_MOS65XX_65816 },
|
||||
{ "hex.builtin.view.disassembler.mos65xx.65816_long_m"_lang, CS_MODE_MOS65XX_65816_LONG_M },
|
||||
{ "hex.builtin.view.disassembler.mos65xx.65816_long_x"_lang, CS_MODE_MOS65XX_65816_LONG_X },
|
||||
{ "hex.builtin.view.disassembler.mos65xx.65816_long_mx"_lang, CS_MODE_MOS65XX_65816_LONG_MX},
|
||||
{"hex.disassembler.view.disassembler.mos65xx.6502"_lang, CS_MODE_MOS65XX_6502 },
|
||||
{ "hex.disassembler.view.disassembler.mos65xx.65c02"_lang, CS_MODE_MOS65XX_65C02 },
|
||||
{ "hex.disassembler.view.disassembler.mos65xx.w65c02"_lang, CS_MODE_MOS65XX_W65C02 },
|
||||
{ "hex.disassembler.view.disassembler.mos65xx.65816"_lang, CS_MODE_MOS65XX_65816 },
|
||||
{ "hex.disassembler.view.disassembler.mos65xx.65816_long_m"_lang, CS_MODE_MOS65XX_65816_LONG_M },
|
||||
{ "hex.disassembler.view.disassembler.mos65xx.65816_long_x"_lang, CS_MODE_MOS65XX_65816_LONG_X },
|
||||
{ "hex.disassembler.view.disassembler.mos65xx.65816_long_mx"_lang, CS_MODE_MOS65XX_65816_LONG_MX},
|
||||
};
|
||||
|
||||
if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) {
|
||||
if (ImGui::BeginCombo("hex.disassembler.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) {
|
||||
for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) {
|
||||
if (ImGui::Selectable(modes[i].first))
|
||||
selectedMode = i;
|
||||
@ -298,9 +298,9 @@ namespace hex::plugin::builtin {
|
||||
case Architecture::BPF:
|
||||
{
|
||||
static int mode = CS_MODE_BPF_CLASSIC;
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.bpf.classic"_lang, &mode, CS_MODE_BPF_CLASSIC);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.bpf.classic"_lang, &mode, CS_MODE_BPF_CLASSIC);
|
||||
ImGui::SameLine();
|
||||
ImGui::RadioButton("hex.builtin.view.disassembler.bpf.extended"_lang, &mode, CS_MODE_BPF_EXTENDED);
|
||||
ImGui::RadioButton("hex.disassembler.view.disassembler.bpf.extended"_lang, &mode, CS_MODE_BPF_EXTENDED);
|
||||
|
||||
m_mode = cs_mode(mode);
|
||||
}
|
||||
@ -312,14 +312,14 @@ namespace hex::plugin::builtin {
|
||||
static bool dsp = false;
|
||||
|
||||
std::pair<const char*, cs_mode> modes[] = {
|
||||
{ "hex.builtin.view.disassembler.sh.sh2"_lang, CS_MODE_SH2 },
|
||||
{ "hex.builtin.view.disassembler.sh.sh2a"_lang, CS_MODE_SH2A },
|
||||
{ "hex.builtin.view.disassembler.sh.sh3"_lang, CS_MODE_SH3 },
|
||||
{ "hex.builtin.view.disassembler.sh.sh4"_lang, CS_MODE_SH4 },
|
||||
{ "hex.builtin.view.disassembler.sh.sh4a"_lang, CS_MODE_SH4A },
|
||||
{ "hex.disassembler.view.disassembler.sh.sh2"_lang, CS_MODE_SH2 },
|
||||
{ "hex.disassembler.view.disassembler.sh.sh2a"_lang, CS_MODE_SH2A },
|
||||
{ "hex.disassembler.view.disassembler.sh.sh3"_lang, CS_MODE_SH3 },
|
||||
{ "hex.disassembler.view.disassembler.sh.sh4"_lang, CS_MODE_SH4 },
|
||||
{ "hex.disassembler.view.disassembler.sh.sh4a"_lang, CS_MODE_SH4A },
|
||||
};
|
||||
|
||||
if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectionMode].first)) {
|
||||
if (ImGui::BeginCombo("hex.disassembler.view.disassembler.settings.mode"_lang, modes[selectionMode].first)) {
|
||||
for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) {
|
||||
if (ImGui::Selectable(modes[i].first))
|
||||
selectionMode = i;
|
||||
@ -327,9 +327,9 @@ namespace hex::plugin::builtin {
|
||||
ImGui::EndCombo();
|
||||
}
|
||||
|
||||
ImGui::Checkbox("hex.builtin.view.disassembler.sh.fpu"_lang, &fpu);
|
||||
ImGui::Checkbox("hex.disassembler.view.disassembler.sh.fpu"_lang, &fpu);
|
||||
ImGui::SameLine();
|
||||
ImGui::Checkbox("hex.builtin.view.disassembler.sh.dsp"_lang, &dsp);
|
||||
ImGui::Checkbox("hex.disassembler.view.disassembler.sh.dsp"_lang, &dsp);
|
||||
|
||||
m_mode = cs_mode(modes[selectionMode].second | (fpu ? CS_MODE_SHFPU : cs_mode(0)) | (dsp ? CS_MODE_SHDSP : cs_mode(0)));
|
||||
}
|
||||
@ -339,16 +339,16 @@ namespace hex::plugin::builtin {
|
||||
static u32 selectionMode = 0;
|
||||
|
||||
std::pair<const char*, cs_mode> modes[] = {
|
||||
{ "hex.builtin.view.disassembler.tricore.110"_lang, CS_MODE_TRICORE_110 },
|
||||
{ "hex.builtin.view.disassembler.tricore.120"_lang, CS_MODE_TRICORE_120 },
|
||||
{ "hex.builtin.view.disassembler.tricore.130"_lang, CS_MODE_TRICORE_130 },
|
||||
{ "hex.builtin.view.disassembler.tricore.131"_lang, CS_MODE_TRICORE_131 },
|
||||
{ "hex.builtin.view.disassembler.tricore.160"_lang, CS_MODE_TRICORE_160 },
|
||||
{ "hex.builtin.view.disassembler.tricore.161"_lang, CS_MODE_TRICORE_161 },
|
||||
{ "hex.builtin.view.disassembler.tricore.162"_lang, CS_MODE_TRICORE_162 },
|
||||
{ "hex.disassembler.view.disassembler.tricore.110"_lang, CS_MODE_TRICORE_110 },
|
||||
{ "hex.disassembler.view.disassembler.tricore.120"_lang, CS_MODE_TRICORE_120 },
|
||||
{ "hex.disassembler.view.disassembler.tricore.130"_lang, CS_MODE_TRICORE_130 },
|
||||
{ "hex.disassembler.view.disassembler.tricore.131"_lang, CS_MODE_TRICORE_131 },
|
||||
{ "hex.disassembler.view.disassembler.tricore.160"_lang, CS_MODE_TRICORE_160 },
|
||||
{ "hex.disassembler.view.disassembler.tricore.161"_lang, CS_MODE_TRICORE_161 },
|
||||
{ "hex.disassembler.view.disassembler.tricore.162"_lang, CS_MODE_TRICORE_162 },
|
||||
};
|
||||
|
||||
if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectionMode].first)) {
|
||||
if (ImGui::BeginCombo("hex.disassembler.view.disassembler.settings.mode"_lang, modes[selectionMode].first)) {
|
||||
for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) {
|
||||
if (ImGui::Selectable(modes[i].first))
|
||||
selectionMode = i;
|
||||
@ -377,7 +377,7 @@ namespace hex::plugin::builtin {
|
||||
// Draw disassemble button
|
||||
ImGui::BeginDisabled(m_disassemblerTask.isRunning());
|
||||
{
|
||||
if (ImGui::Button("hex.builtin.view.disassembler.disassemble"_lang))
|
||||
if (ImGui::Button("hex.disassembler.view.disassembler.disassemble"_lang))
|
||||
this->disassemble();
|
||||
}
|
||||
ImGui::EndDisabled();
|
||||
@ -385,21 +385,21 @@ namespace hex::plugin::builtin {
|
||||
// Draw a spinner if the disassembler is running
|
||||
if (m_disassemblerTask.isRunning()) {
|
||||
ImGui::SameLine();
|
||||
ImGuiExt::TextSpinner("hex.builtin.view.disassembler.disassembling"_lang);
|
||||
ImGuiExt::TextSpinner("hex.disassembler.view.disassembler.disassembling"_lang);
|
||||
}
|
||||
|
||||
ImGui::NewLine();
|
||||
|
||||
ImGui::TextUnformatted("hex.builtin.view.disassembler.disassembly.title"_lang);
|
||||
ImGui::TextUnformatted("hex.disassembler.view.disassembler.disassembly.title"_lang);
|
||||
ImGui::Separator();
|
||||
|
||||
// Draw disassembly table
|
||||
if (ImGui::BeginTable("##disassembly", 4, ImGuiTableFlags_ScrollY | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_RowBg | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable)) {
|
||||
ImGui::TableSetupScrollFreeze(0, 1);
|
||||
ImGui::TableSetupColumn("hex.builtin.view.disassembler.disassembly.address"_lang);
|
||||
ImGui::TableSetupColumn("hex.builtin.view.disassembler.disassembly.offset"_lang);
|
||||
ImGui::TableSetupColumn("hex.builtin.view.disassembler.disassembly.bytes"_lang);
|
||||
ImGui::TableSetupColumn("hex.builtin.view.disassembler.disassembly.title"_lang);
|
||||
ImGui::TableSetupColumn("hex.disassembler.view.disassembler.disassembly.address"_lang);
|
||||
ImGui::TableSetupColumn("hex.disassembler.view.disassembler.disassembly.offset"_lang);
|
||||
ImGui::TableSetupColumn("hex.disassembler.view.disassembler.disassembly.bytes"_lang);
|
||||
ImGui::TableSetupColumn("hex.disassembler.view.disassembler.disassembly.title"_lang);
|
||||
|
||||
if (!m_disassemblerTask.isRunning()) {
|
||||
ImGuiListClipper clipper;
|
43
plugins/disassembler/source/plugin_disassembler.cpp
Normal file
43
plugins/disassembler/source/plugin_disassembler.cpp
Normal file
@ -0,0 +1,43 @@
|
||||
#include <hex/plugin.hpp>
|
||||
|
||||
#include <hex/api/content_registry.hpp>
|
||||
#include <hex/helpers/logger.hpp>
|
||||
|
||||
#include <pl/api.hpp>
|
||||
|
||||
#include <romfs/romfs.hpp>
|
||||
|
||||
#include "content/views/view_disassembler.hpp"
|
||||
|
||||
using namespace hex;
|
||||
using namespace hex::plugin::disasm;
|
||||
|
||||
namespace hex::plugin::disasm {
|
||||
|
||||
void drawDisassemblyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span<const pl::core::Token::Literal> arguments);
|
||||
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
void registerViews() {
|
||||
ContentRegistry::Views::add<ViewDisassembler>();
|
||||
}
|
||||
|
||||
void registerPlVisualizers() {
|
||||
using ParamCount = pl::api::FunctionParameterCount;
|
||||
|
||||
ContentRegistry::PatternLanguage::addVisualizer("disassembler", drawDisassemblyVisualizer, ParamCount::exactly(4));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
IMHEX_PLUGIN_SETUP("Disassembler", "WerWolv", "Disassembler support") {
|
||||
hex::log::debug("Using romfs: '{}'", romfs::name());
|
||||
for (auto &path : romfs::list("lang"))
|
||||
hex::ContentRegistry::Language::addLocalization(nlohmann::json::parse(romfs::get(path).string()));
|
||||
|
||||
registerViews();
|
||||
registerPlVisualizers();
|
||||
}
|
@ -1,52 +1,48 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
if (NOT EMSCRIPTEN)
|
||||
include(ImHexPlugin)
|
||||
find_package(CoreClrEmbed)
|
||||
|
||||
include(ImHexPlugin)
|
||||
find_package(CoreClrEmbed)
|
||||
add_imhex_plugin(
|
||||
NAME
|
||||
script_loader
|
||||
|
||||
add_imhex_plugin(
|
||||
NAME
|
||||
script_loader
|
||||
SOURCES
|
||||
source/plugin_script_loader.cpp
|
||||
|
||||
SOURCES
|
||||
source/plugin_script_loader.cpp
|
||||
INCLUDES
|
||||
include
|
||||
)
|
||||
|
||||
INCLUDES
|
||||
include
|
||||
if (CoreClrEmbed_FOUND)
|
||||
add_library(nethost SHARED IMPORTED)
|
||||
target_include_directories(nethost INTERFACE "${CoreClrEmbed_INCLUDE_DIRS}")
|
||||
get_filename_component(CoreClrEmbed_FOLDER ${CoreClrEmbed_SHARED_LIBRARIES} DIRECTORY)
|
||||
set_target_properties(nethost
|
||||
PROPERTIES
|
||||
IMPORTED_IMPLIB ${CoreClrEmbed_SHARED_LIBRARIES}
|
||||
IMPORTED_LOCATION ${CoreClrEmbed_LIBRARIES}
|
||||
BUILD_RPATH ${CoreClrEmbed_FOLDER}
|
||||
INSTALL_RPATH ${CoreClrEmbed_FOLDER})
|
||||
|
||||
target_link_directories(script_loader PRIVATE ${CoreClrEmbed_FOLDER})
|
||||
target_include_directories(script_loader PRIVATE ${CoreClrEmbed_INCLUDE_DIRS})
|
||||
target_compile_definitions(script_loader PRIVATE DOTNET_PLUGINS=1)
|
||||
target_sources(script_loader PRIVATE
|
||||
source/loaders/dotnet/dotnet_loader.cpp
|
||||
|
||||
source/script_api/v1/mem.cpp
|
||||
source/script_api/v1/bookmarks.cpp
|
||||
source/script_api/v1/ui.cpp
|
||||
)
|
||||
|
||||
if (CoreClrEmbed_FOUND)
|
||||
add_library(nethost SHARED IMPORTED)
|
||||
target_include_directories(nethost INTERFACE "${CoreClrEmbed_INCLUDE_DIRS}")
|
||||
get_filename_component(CoreClrEmbed_FOLDER ${CoreClrEmbed_SHARED_LIBRARIES} DIRECTORY)
|
||||
set_target_properties(nethost
|
||||
PROPERTIES
|
||||
IMPORTED_IMPLIB ${CoreClrEmbed_SHARED_LIBRARIES}
|
||||
IMPORTED_LOCATION ${CoreClrEmbed_LIBRARIES}
|
||||
BUILD_RPATH ${CoreClrEmbed_FOLDER}
|
||||
INSTALL_RPATH ${CoreClrEmbed_FOLDER})
|
||||
|
||||
target_link_directories(script_loader PRIVATE ${CoreClrEmbed_FOLDER})
|
||||
target_include_directories(script_loader PRIVATE ${CoreClrEmbed_INCLUDE_DIRS})
|
||||
target_compile_definitions(script_loader PRIVATE DOTNET_PLUGINS=1)
|
||||
target_sources(script_loader PRIVATE
|
||||
source/loaders/dotnet/dotnet_loader.cpp
|
||||
|
||||
source/script_api/v1/mem.cpp
|
||||
source/script_api/v1/bookmarks.cpp
|
||||
source/script_api/v1/ui.cpp
|
||||
)
|
||||
|
||||
set(EXTRA_BUNDLE_LIBRARY_PATHS "${CoreClrEmbed_FOLDER}" PARENT_SCOPE)
|
||||
|
||||
if (IMHEX_BUNDLE_DOTNET)
|
||||
install(FILES ${CoreClrEmbed_SHARED_LIBRARIES} DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif ()
|
||||
|
||||
add_subdirectory(dotnet)
|
||||
add_dependencies(script_loader AssemblyLoader)
|
||||
set(EXTRA_BUNDLE_LIBRARY_PATHS "${CoreClrEmbed_FOLDER}" PARENT_SCOPE)
|
||||
|
||||
if (IMHEX_BUNDLE_DOTNET)
|
||||
install(FILES ${CoreClrEmbed_SHARED_LIBRARIES} DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif ()
|
||||
|
||||
add_subdirectory(dotnet)
|
||||
add_dependencies(script_loader AssemblyLoader)
|
||||
|
||||
endif ()
|
@ -28,13 +28,13 @@ public:
|
||||
|
||||
auto width = ImGui::GetWindowWidth();
|
||||
ImGui::SetCursorPosX(width / 9);
|
||||
if (ImGui::Button("hex.builtin.common.yes"_lang, ImVec2(width / 3, 0))) {
|
||||
if (ImGui::Button("hex.ui.common.yes"_lang, ImVec2(width / 3, 0))) {
|
||||
s_yesNoQuestionBoxResult = true;
|
||||
this->close();
|
||||
}
|
||||
ImGui::SameLine();
|
||||
ImGui::SetCursorPosX(width / 9 * 5);
|
||||
if (ImGui::Button("hex.builtin.common.no"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) {
|
||||
if (ImGui::Button("hex.ui.common.no"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) {
|
||||
s_yesNoQuestionBoxResult = false;
|
||||
this->close();
|
||||
}
|
||||
@ -80,14 +80,14 @@ public:
|
||||
auto width = ImGui::GetWindowWidth();
|
||||
ImGui::SetCursorPosX(width / 9);
|
||||
ImGui::BeginDisabled(m_input.empty());
|
||||
if (ImGui::Button("hex.builtin.common.okay"_lang, ImVec2(width / 3, 0)) || submitted) {
|
||||
if (ImGui::Button("hex.ui.common.okay"_lang, ImVec2(width / 3, 0)) || submitted) {
|
||||
s_inputTextBoxResult = m_input;
|
||||
this->close();
|
||||
}
|
||||
ImGui::EndDisabled();
|
||||
ImGui::SameLine();
|
||||
ImGui::SetCursorPosX(width / 9 * 5);
|
||||
if (ImGui::Button("hex.builtin.common.cancel"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) {
|
||||
if (ImGui::Button("hex.ui.common.cancel"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) {
|
||||
s_inputTextBoxResult = "";
|
||||
this->close();
|
||||
}
|
||||
|
18
plugins/ui/CMakeLists.txt
Normal file
18
plugins/ui/CMakeLists.txt
Normal file
@ -0,0 +1,18 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
include(ImHexPlugin)
|
||||
|
||||
add_imhex_plugin(
|
||||
NAME
|
||||
ui
|
||||
SOURCES
|
||||
source/library_ui.cpp
|
||||
|
||||
source/ui/hex_editor.cpp
|
||||
source/ui/pattern_drawer.cpp
|
||||
INCLUDES
|
||||
include
|
||||
LIBRARIES
|
||||
libpl-gen
|
||||
LIBRARY_PLUGIN
|
||||
)
|
@ -9,12 +9,12 @@
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
namespace hex::ui {
|
||||
|
||||
class PopupFileChooser : public Popup<PopupFileChooser> {
|
||||
public:
|
||||
PopupFileChooser(const std::vector<std::fs::path> &basePaths, const std::vector<std::fs::path> &files, const std::vector<hex::fs::ItemFilter> &validExtensions, bool multiple, const std::function<void(std::fs::path)> &callback)
|
||||
: hex::Popup<PopupFileChooser>("hex.builtin.common.choose_file"),
|
||||
: hex::Popup<PopupFileChooser>("hex.ui.common.choose_file"),
|
||||
m_indices({ }),
|
||||
m_openCallback(callback),
|
||||
m_validExtensions(validExtensions), m_multiple(multiple) {
|
||||
@ -73,7 +73,7 @@ namespace hex::plugin::builtin {
|
||||
ImGui::EndListBox();
|
||||
}
|
||||
|
||||
if (ImGui::Button("hex.builtin.common.open"_lang) || doubleClicked) {
|
||||
if (ImGui::Button("hex.ui.common.open"_lang) || doubleClicked) {
|
||||
for (const auto &index : m_indices)
|
||||
m_openCallback(m_files[index].first);
|
||||
Popup::close();
|
||||
@ -81,7 +81,7 @@ namespace hex::plugin::builtin {
|
||||
|
||||
ImGui::SameLine();
|
||||
|
||||
if (ImGui::Button("hex.builtin.common.browse"_lang)) {
|
||||
if (ImGui::Button("hex.ui.common.browse"_lang)) {
|
||||
fs::openFileBrowser(fs::DialogMode::Open, m_validExtensions, [this](const auto &path) {
|
||||
m_openCallback(path);
|
||||
Popup::close();
|
@ -8,7 +8,7 @@
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
namespace hex::ui {
|
||||
|
||||
namespace impl {
|
||||
|
||||
@ -23,7 +23,7 @@ namespace hex::plugin::builtin {
|
||||
ImGuiExt::TextFormattedWrapped("{}", m_message.c_str());
|
||||
ImGui::NewLine();
|
||||
ImGui::Separator();
|
||||
if (ImGui::Button("hex.builtin.common.okay"_lang) || ImGui::IsKeyDown(ImGuiKey_Escape))
|
||||
if (ImGui::Button("hex.ui.common.okay"_lang) || ImGui::IsKeyDown(ImGuiKey_Escape))
|
||||
m_function();
|
||||
|
||||
ImGui::SetWindowPos((ImHexApi::System::getMainWindowSize() - ImGui::GetWindowSize()) / 2, ImGuiCond_Appearing);
|
||||
@ -54,7 +54,7 @@ namespace hex::plugin::builtin {
|
||||
class PopupInfo : public impl::PopupNotification<PopupInfo> {
|
||||
public:
|
||||
explicit PopupInfo(std::string message)
|
||||
: PopupNotification("hex.builtin.common.info", std::move(message), [this] {
|
||||
: PopupNotification("hex.ui.common.info", std::move(message), [this] {
|
||||
Popup::close();
|
||||
}) { }
|
||||
};
|
||||
@ -62,7 +62,7 @@ namespace hex::plugin::builtin {
|
||||
class PopupWarning : public impl::PopupNotification<PopupWarning> {
|
||||
public:
|
||||
explicit PopupWarning(std::string message)
|
||||
: PopupNotification("hex.builtin.common.warning", std::move(message), [this] {
|
||||
: PopupNotification("hex.ui.common.warning", std::move(message), [this] {
|
||||
Popup::close();
|
||||
}) { }
|
||||
};
|
||||
@ -70,7 +70,7 @@ namespace hex::plugin::builtin {
|
||||
class PopupError : public impl::PopupNotification<PopupError> {
|
||||
public:
|
||||
explicit PopupError(std::string message)
|
||||
: PopupNotification("hex.builtin.common.error", std::move(message), [this] {
|
||||
: PopupNotification("hex.ui.common.error", std::move(message), [this] {
|
||||
Popup::close();
|
||||
}) { }
|
||||
};
|
||||
@ -78,7 +78,7 @@ namespace hex::plugin::builtin {
|
||||
class PopupFatal : public impl::PopupNotification<PopupFatal> {
|
||||
public:
|
||||
explicit PopupFatal(std::string message)
|
||||
: PopupNotification("hex.builtin.common.fatal", std::move(message), [this] {
|
||||
: PopupNotification("hex.ui.common.fatal", std::move(message), [this] {
|
||||
ImHexApi::System::closeImHex();
|
||||
Popup::close();
|
||||
}) { }
|
@ -7,12 +7,12 @@
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
namespace hex::ui {
|
||||
|
||||
class PopupQuestion : public Popup<PopupQuestion> {
|
||||
public:
|
||||
PopupQuestion(std::string message, std::function<void()> yesFunction, std::function<void()> noFunction)
|
||||
: hex::Popup<PopupQuestion>("hex.builtin.common.question", false),
|
||||
: hex::Popup<PopupQuestion>("hex.ui.common.question", false),
|
||||
m_message(std::move(message)),
|
||||
m_yesFunction(std::move(yesFunction)), m_noFunction(std::move(noFunction)) { }
|
||||
|
||||
@ -23,13 +23,13 @@ namespace hex::plugin::builtin {
|
||||
|
||||
auto width = ImGui::GetWindowWidth();
|
||||
ImGui::SetCursorPosX(width / 9);
|
||||
if (ImGui::Button("hex.builtin.common.yes"_lang, ImVec2(width / 3, 0))) {
|
||||
if (ImGui::Button("hex.ui.common.yes"_lang, ImVec2(width / 3, 0))) {
|
||||
m_yesFunction();
|
||||
this->close();
|
||||
}
|
||||
ImGui::SameLine();
|
||||
ImGui::SetCursorPosX(width / 9 * 5);
|
||||
if (ImGui::Button("hex.builtin.common.no"_lang, ImVec2(width / 3, 0))) {
|
||||
if (ImGui::Button("hex.ui.common.no"_lang, ImVec2(width / 3, 0))) {
|
||||
m_noFunction();
|
||||
this->close();
|
||||
}
|
@ -10,7 +10,7 @@
|
||||
|
||||
#include <fonts/codicons_font.h>
|
||||
|
||||
namespace hex::plugin::builtin {
|
||||
namespace hex::ui {
|
||||
|
||||
class PopupTextInput : public Popup<PopupTextInput> {
|
||||
public:
|
||||
@ -37,13 +37,13 @@ namespace hex::plugin::builtin {
|
||||
|
||||
auto width = ImGui::GetWindowWidth();
|
||||
ImGui::SetCursorPosX(width / 9);
|
||||
if (ImGui::Button("hex.builtin.common.okay"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Enter))) {
|
||||
if (ImGui::Button("hex.ui.common.okay"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Enter))) {
|
||||
m_function(m_input);
|
||||
this->close();
|
||||
}
|
||||
ImGui::SameLine();
|
||||
ImGui::SetCursorPosX(width / 9 * 5);
|
||||
if (ImGui::Button("hex.builtin.common.cancel"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) {
|
||||
if (ImGui::Button("hex.ui.common.cancel"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) {
|
||||
this->close();
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
#include <fonts/codicons_font.h>
|
||||
#include <hex/helpers/utils.hpp>
|
||||
|
||||
namespace hex::plugin::builtin::ui {
|
||||
namespace hex::ui {
|
||||
|
||||
namespace impl {
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include <imgui.h>
|
||||
#include <hex/ui/view.hpp>
|
||||
|
||||
namespace hex::plugin::builtin::ui {
|
||||
namespace hex::ui {
|
||||
|
||||
class HexEditor {
|
||||
public:
|
@ -12,7 +12,7 @@
|
||||
|
||||
struct ImGuiTableSortSpecs;
|
||||
|
||||
namespace hex::plugin::builtin::ui {
|
||||
namespace hex::ui {
|
||||
|
||||
class PatternDrawer : public pl::PatternVisitor {
|
||||
public:
|
@ -6,7 +6,7 @@
|
||||
namespace pl::ptrn { class Pattern; }
|
||||
namespace hex::prv { class Provider; }
|
||||
|
||||
namespace hex::plugin::builtin::ui {
|
||||
namespace hex::ui {
|
||||
|
||||
|
||||
enum class RegionType : int {
|
||||
@ -17,13 +17,13 @@ namespace hex::plugin::builtin::ui {
|
||||
|
||||
inline void regionSelectionPicker(Region *region, prv::Provider *provider, RegionType *type, bool showHeader = true, bool firstEntry = false) {
|
||||
if (showHeader)
|
||||
ImGuiExt::Header("hex.builtin.common.range"_lang, firstEntry);
|
||||
ImGuiExt::Header("hex.ui.common.range"_lang, firstEntry);
|
||||
|
||||
if (ImGui::RadioButton("hex.builtin.common.range.entire_data"_lang, *type == RegionType::EntireData))
|
||||
if (ImGui::RadioButton("hex.ui.common.range.entire_data"_lang, *type == RegionType::EntireData))
|
||||
*type = RegionType::EntireData;
|
||||
if (ImGui::RadioButton("hex.builtin.common.range.selection"_lang, *type == RegionType::Selection))
|
||||
if (ImGui::RadioButton("hex.ui.common.range.selection"_lang, *type == RegionType::Selection))
|
||||
*type = RegionType::Selection;
|
||||
if (ImGui::RadioButton("hex.builtin.common.region"_lang, *type == RegionType::Region))
|
||||
if (ImGui::RadioButton("hex.ui.common.region"_lang, *type == RegionType::Region))
|
||||
*type = RegionType::Region;
|
||||
|
||||
switch (*type) {
|
108
plugins/ui/romfs/lang/de_DE.json
Normal file
108
plugins/ui/romfs/lang/de_DE.json
Normal file
@ -0,0 +1,108 @@
|
||||
{
|
||||
"code": "de-DE",
|
||||
"language": "German",
|
||||
"country": "Germany",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.ui.common.address": "Adresse",
|
||||
"hex.ui.common.allow": "Erlauben",
|
||||
"hex.ui.common.begin": "Anfangen",
|
||||
"hex.ui.common.big": "Big",
|
||||
"hex.ui.common.big_endian": "Big Endian",
|
||||
"hex.ui.common.browse": "Durchsuchen...",
|
||||
"hex.ui.common.bytes": "Bytes",
|
||||
"hex.ui.common.cancel": "Abbrechen",
|
||||
"hex.ui.common.choose_file": "Datei auswählen",
|
||||
"hex.ui.common.close": "Schliessen",
|
||||
"hex.ui.common.comment": "Kommentar",
|
||||
"hex.ui.common.count": "Anzahl",
|
||||
"hex.ui.common.decimal": "Dezimal",
|
||||
"hex.ui.common.deny": "Verweigern",
|
||||
"hex.ui.common.dont_show_again": "Nicht mehr anzeigen",
|
||||
"hex.ui.common.encoding.ascii": "ASCII",
|
||||
"hex.ui.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.ui.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.ui.common.encoding.utf8": "UTF-8",
|
||||
"hex.ui.common.end": "Beenden",
|
||||
"hex.ui.common.endian": "Endian",
|
||||
"hex.ui.common.warning": "Warnung",
|
||||
"hex.ui.common.error": "Fehler",
|
||||
"hex.ui.common.fatal": "Fataler Fehler",
|
||||
"hex.ui.common.file": "Datei",
|
||||
"hex.ui.common.filter": "Filter",
|
||||
"hex.ui.common.hexadecimal": "Hexadezimal",
|
||||
"hex.ui.common.info": "Information",
|
||||
"hex.ui.common.instruction": "Instruktion",
|
||||
"hex.ui.common.link": "Link",
|
||||
"hex.ui.common.little": "Little",
|
||||
"hex.ui.common.little_endian": "Little Endian",
|
||||
"hex.ui.common.load": "Laden",
|
||||
"hex.ui.common.match_selection": "Arbeitsbereich synchronisieren",
|
||||
"hex.ui.common.name": "Name",
|
||||
"hex.ui.common.no": "Nein",
|
||||
"hex.ui.common.number_format": "Format",
|
||||
"hex.ui.common.octal": "Oktal",
|
||||
"hex.ui.common.offset": "Offset",
|
||||
"hex.ui.common.okay": "Okay",
|
||||
"hex.ui.common.open": "Öffnen",
|
||||
"hex.ui.common.percentage": "Prozent",
|
||||
"hex.ui.common.processing": "Verarbeiten",
|
||||
"hex.ui.common.project": "Projekt",
|
||||
"hex.ui.common.question": "Frage",
|
||||
"hex.ui.common.range": "Bereich",
|
||||
"hex.ui.common.range.entire_data": "Gesamte Daten",
|
||||
"hex.ui.common.range.selection": "Auswahl",
|
||||
"hex.ui.common.region": "Region",
|
||||
"hex.ui.common.reset": "Zurücksetzen",
|
||||
"hex.ui.common.set": "Setzen",
|
||||
"hex.ui.common.settings": "Einstellungen",
|
||||
"hex.ui.common.size": "Länge",
|
||||
"hex.ui.common.type": "Typ",
|
||||
"hex.ui.common.type.f32": "float",
|
||||
"hex.ui.common.type.f64": "double",
|
||||
"hex.ui.common.type.i16": "int16_t",
|
||||
"hex.ui.common.type.i24": "int24_t",
|
||||
"hex.ui.common.type.i32": "int32_t",
|
||||
"hex.ui.common.type.i48": "int48_t",
|
||||
"hex.ui.common.type.i64": "int64_t",
|
||||
"hex.ui.common.type.i8": "int8_t",
|
||||
"hex.ui.common.type.u16": "uint16_t",
|
||||
"hex.ui.common.type.u24": "uint24_t",
|
||||
"hex.ui.common.type.u32": "uint32_t",
|
||||
"hex.ui.common.type.u48": "uint48_t",
|
||||
"hex.ui.common.type.u64": "uint64_t",
|
||||
"hex.ui.common.type.u8": "uint8_t",
|
||||
"hex.ui.common.value": "Wert",
|
||||
"hex.ui.common.yes": "Ja",
|
||||
"hex.ui.hex_editor.ascii_view": "ASCII Spalte anzeigen",
|
||||
"hex.ui.hex_editor.custom_encoding_view": "Erweiterte Dekodierungsspalte anzeigen",
|
||||
"hex.ui.hex_editor.human_readable_units_footer": "",
|
||||
"hex.ui.hex_editor.data_size": "Datengrösse",
|
||||
"hex.ui.hex_editor.gray_out_zero": "Nullen ausgrauen",
|
||||
"hex.ui.hex_editor.no_bytes": "Keine Bytes verfügbar",
|
||||
"hex.ui.hex_editor.page": "Seite",
|
||||
"hex.ui.hex_editor.region": "Region",
|
||||
"hex.ui.hex_editor.selection": "Auswahl",
|
||||
"hex.ui.hex_editor.selection.none": "Keine",
|
||||
"hex.ui.hex_editor.uppercase_hex": "Hex Zeichen als Grossbuchstaben",
|
||||
"hex.ui.hex_editor.visualizer": "Daten Anzeige",
|
||||
"hex.ui.pattern_drawer.color": "Farbe",
|
||||
"hex.ui.pattern_drawer.double_click": "Doppelklicken um mehr Einträge zu sehen",
|
||||
"hex.ui.pattern_drawer.end": "Ende",
|
||||
"hex.ui.pattern_drawer.export": "Pattern exportieren als...",
|
||||
"hex.ui.pattern_drawer.favorites": "Favoriten",
|
||||
"hex.ui.pattern_drawer.local": "Local",
|
||||
"hex.ui.pattern_drawer.size": "Grösse",
|
||||
"hex.ui.pattern_drawer.spec_name": "",
|
||||
"hex.ui.pattern_drawer.start": "Start",
|
||||
"hex.ui.pattern_drawer.tree_style.tree": "Baum",
|
||||
"hex.ui.pattern_drawer.tree_style.auto_expanded": "Automatisch geöffneter Baum",
|
||||
"hex.ui.pattern_drawer.tree_style.flattened": "Flach",
|
||||
"hex.ui.pattern_drawer.type": "Typ",
|
||||
"hex.ui.pattern_drawer.updating": "",
|
||||
"hex.ui.pattern_drawer.value": "Wert",
|
||||
"hex.ui.pattern_drawer.var_name": "Name",
|
||||
"hex.ui.pattern_drawer.visualizer.unknown": "Unbekannter Visualizer",
|
||||
"hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "Falsche anzahl Parameter"
|
||||
}
|
||||
}
|
114
plugins/ui/romfs/lang/en_US.json
Normal file
114
plugins/ui/romfs/lang/en_US.json
Normal file
@ -0,0 +1,114 @@
|
||||
{
|
||||
"code": "en-US",
|
||||
"language": "English",
|
||||
"country": "United States",
|
||||
"fallback": true,
|
||||
"translations": {
|
||||
"hex.ui.common.address": "Address",
|
||||
"hex.ui.common.allow": "Allow",
|
||||
"hex.ui.common.begin": "Begin",
|
||||
"hex.ui.common.big": "Big",
|
||||
"hex.ui.common.big_endian": "Big Endian",
|
||||
"hex.ui.common.browse": "Browse...",
|
||||
"hex.ui.common.bytes": "Bytes",
|
||||
"hex.ui.common.cancel": "Cancel",
|
||||
"hex.ui.common.choose_file": "Choose file",
|
||||
"hex.ui.common.close": "Close",
|
||||
"hex.ui.common.comment": "Comment",
|
||||
"hex.ui.common.count": "Count",
|
||||
"hex.ui.common.decimal": "Decimal",
|
||||
"hex.ui.common.deny": "Deny",
|
||||
"hex.ui.common.dont_show_again": "Don't show again",
|
||||
"hex.ui.common.edit": "Edit",
|
||||
"hex.ui.common.encoding.ascii": "ASCII",
|
||||
"hex.ui.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.ui.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.ui.common.encoding.utf8": "UTF-8",
|
||||
"hex.ui.common.end": "End",
|
||||
"hex.ui.common.endian": "Endian",
|
||||
"hex.ui.common.warning": "Warning",
|
||||
"hex.ui.common.error": "Error",
|
||||
"hex.ui.common.fatal": "Fatal Error",
|
||||
"hex.ui.common.file": "File",
|
||||
"hex.ui.common.filter": "Filter",
|
||||
"hex.ui.common.hexadecimal": "Hexadecimal",
|
||||
"hex.ui.common.info": "Information",
|
||||
"hex.ui.common.instruction": "Instruction",
|
||||
"hex.ui.common.link": "Link",
|
||||
"hex.ui.common.little": "Little",
|
||||
"hex.ui.common.little_endian": "Little Endian",
|
||||
"hex.ui.common.load": "Load",
|
||||
"hex.ui.common.loading": "Loading...",
|
||||
"hex.ui.common.match_selection": "Match Selection",
|
||||
"hex.ui.common.name": "Name",
|
||||
"hex.ui.common.no": "No",
|
||||
"hex.ui.common.number_format": "Format",
|
||||
"hex.ui.common.octal": "Octal",
|
||||
"hex.ui.common.offset": "Offset",
|
||||
"hex.ui.common.okay": "Okay",
|
||||
"hex.ui.common.open": "Open",
|
||||
"hex.ui.common.on": "On",
|
||||
"hex.ui.common.off": "Off",
|
||||
"hex.ui.common.path": "Path",
|
||||
"hex.ui.common.percentage": "Percentage",
|
||||
"hex.ui.common.processing": "Processing",
|
||||
"hex.ui.common.project": "Project",
|
||||
"hex.ui.common.question": "Question",
|
||||
"hex.ui.common.range": "Range",
|
||||
"hex.ui.common.range.entire_data": "Entire Data",
|
||||
"hex.ui.common.range.selection": "Selection",
|
||||
"hex.ui.common.region": "Region",
|
||||
"hex.ui.common.remove": "Remove",
|
||||
"hex.ui.common.reset": "Reset",
|
||||
"hex.ui.common.set": "Set",
|
||||
"hex.ui.common.settings": "Settings",
|
||||
"hex.ui.common.size": "Size",
|
||||
"hex.ui.common.type": "Type",
|
||||
"hex.ui.common.type.f32": "float",
|
||||
"hex.ui.common.type.f64": "double",
|
||||
"hex.ui.common.type.i16": "int16_t",
|
||||
"hex.ui.common.type.i24": "int24_t",
|
||||
"hex.ui.common.type.i32": "int32_t",
|
||||
"hex.ui.common.type.i48": "int48_t",
|
||||
"hex.ui.common.type.i64": "int64_t",
|
||||
"hex.ui.common.type.i8": "int8_t",
|
||||
"hex.ui.common.type.u16": "uint16_t",
|
||||
"hex.ui.common.type.u24": "uint24_t",
|
||||
"hex.ui.common.type.u32": "uint32_t",
|
||||
"hex.ui.common.type.u48": "uint48_t",
|
||||
"hex.ui.common.type.u64": "uint64_t",
|
||||
"hex.ui.common.type.u8": "uint8_t",
|
||||
"hex.ui.common.value": "Value",
|
||||
"hex.ui.common.yes": "Yes",
|
||||
"hex.ui.hex_editor.ascii_view": "Display ASCII column",
|
||||
"hex.ui.hex_editor.custom_encoding_view": "Display advanced decoding column",
|
||||
"hex.ui.hex_editor.human_readable_units_footer": "Convert sizes to human-readable units",
|
||||
"hex.ui.hex_editor.data_size": "Data Size",
|
||||
"hex.ui.hex_editor.gray_out_zero": "Grey out zeros",
|
||||
"hex.ui.hex_editor.no_bytes": "No bytes available",
|
||||
"hex.ui.hex_editor.page": "Page",
|
||||
"hex.ui.hex_editor.region": "Region",
|
||||
"hex.ui.hex_editor.selection": "Selection",
|
||||
"hex.ui.hex_editor.selection.none": "None",
|
||||
"hex.ui.hex_editor.uppercase_hex": "Upper case Hex characters",
|
||||
"hex.ui.hex_editor.visualizer": "Data visualizer",
|
||||
"hex.ui.pattern_drawer.color": "Color",
|
||||
"hex.ui.pattern_drawer.double_click": "Double-click to see more items",
|
||||
"hex.ui.pattern_drawer.end": "End",
|
||||
"hex.ui.pattern_drawer.export": "Export Patterns as...",
|
||||
"hex.ui.pattern_drawer.favorites": "Favorites",
|
||||
"hex.ui.pattern_drawer.local": "Local",
|
||||
"hex.ui.pattern_drawer.size": "Size",
|
||||
"hex.ui.pattern_drawer.spec_name": "Display specification names",
|
||||
"hex.ui.pattern_drawer.start": "Start",
|
||||
"hex.ui.pattern_drawer.tree_style.tree": "Tree",
|
||||
"hex.ui.pattern_drawer.tree_style.auto_expanded": "Auto Expanded Tree",
|
||||
"hex.ui.pattern_drawer.tree_style.flattened": "Flattened",
|
||||
"hex.ui.pattern_drawer.type": "Type",
|
||||
"hex.ui.pattern_drawer.updating": "Updating patterns...",
|
||||
"hex.ui.pattern_drawer.value": "Value",
|
||||
"hex.ui.pattern_drawer.var_name": "Name",
|
||||
"hex.ui.pattern_drawer.visualizer.unknown": "Unknown visualizer",
|
||||
"hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "Invalid parameter count"
|
||||
}
|
||||
}
|
108
plugins/ui/romfs/lang/es_ES.json
Normal file
108
plugins/ui/romfs/lang/es_ES.json
Normal file
@ -0,0 +1,108 @@
|
||||
{
|
||||
"code": "es_ES",
|
||||
"language": "Spanish",
|
||||
"country": "Spain",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.ui.common.address": "Dirección",
|
||||
"hex.ui.common.allow": "",
|
||||
"hex.ui.common.begin": "Inicio",
|
||||
"hex.ui.common.big": "Big",
|
||||
"hex.ui.common.big_endian": "Big Endian",
|
||||
"hex.ui.common.browse": "Navegar...",
|
||||
"hex.ui.common.bytes": "Bytes",
|
||||
"hex.ui.common.cancel": "Cancelar",
|
||||
"hex.ui.common.choose_file": "Escoger archivo",
|
||||
"hex.ui.common.close": "Cerrar",
|
||||
"hex.ui.common.comment": "Comentario",
|
||||
"hex.ui.common.count": "Cantidad",
|
||||
"hex.ui.common.decimal": "Decimal",
|
||||
"hex.ui.common.deny": "",
|
||||
"hex.ui.common.dont_show_again": "No mostrar de nuevo",
|
||||
"hex.ui.common.encoding.ascii": "ASCII",
|
||||
"hex.ui.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.ui.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.ui.common.encoding.utf8": "UTF-8",
|
||||
"hex.ui.common.end": "Fin",
|
||||
"hex.ui.common.endian": "Endian",
|
||||
"hex.ui.common.warning": "",
|
||||
"hex.ui.common.error": "Error",
|
||||
"hex.ui.common.fatal": "Error Crítico",
|
||||
"hex.ui.common.file": "Archivo",
|
||||
"hex.ui.common.filter": "Filtro",
|
||||
"hex.ui.common.hexadecimal": "Hexadecimal",
|
||||
"hex.ui.common.info": "Información",
|
||||
"hex.ui.common.instruction": "Instrucción",
|
||||
"hex.ui.common.link": "Enlace",
|
||||
"hex.ui.common.little": "Little",
|
||||
"hex.ui.common.little_endian": "Little Endian",
|
||||
"hex.ui.common.load": "Cargar",
|
||||
"hex.ui.common.match_selection": "Match Selection",
|
||||
"hex.ui.common.name": "Nombre",
|
||||
"hex.ui.common.no": "No",
|
||||
"hex.ui.common.number_format": "Formato",
|
||||
"hex.ui.common.octal": "Octal",
|
||||
"hex.ui.common.offset": "Offset",
|
||||
"hex.ui.common.okay": "Okey",
|
||||
"hex.ui.common.open": "Abrir",
|
||||
"hex.ui.common.percentage": "Porcentaje",
|
||||
"hex.ui.common.processing": "Procesado",
|
||||
"hex.ui.common.project": "",
|
||||
"hex.ui.common.question": "Pregunta",
|
||||
"hex.ui.common.range": "Rango",
|
||||
"hex.ui.common.range.entire_data": "Todos los Datos",
|
||||
"hex.ui.common.range.selection": "Selección",
|
||||
"hex.ui.common.region": "Región",
|
||||
"hex.ui.common.reset": "",
|
||||
"hex.ui.common.set": "Establecer",
|
||||
"hex.ui.common.settings": "Ajustes",
|
||||
"hex.ui.common.size": "Tamaño",
|
||||
"hex.ui.common.type": "Tipo",
|
||||
"hex.ui.common.type.f32": "float",
|
||||
"hex.ui.common.type.f64": "double",
|
||||
"hex.ui.common.type.i16": "int16_t",
|
||||
"hex.ui.common.type.i24": "int24_t",
|
||||
"hex.ui.common.type.i32": "int32_t",
|
||||
"hex.ui.common.type.i48": "int48_t",
|
||||
"hex.ui.common.type.i64": "int64_t",
|
||||
"hex.ui.common.type.i8": "int8_t",
|
||||
"hex.ui.common.type.u16": "uint16_t",
|
||||
"hex.ui.common.type.u24": "uint24_t",
|
||||
"hex.ui.common.type.u32": "uint32_t",
|
||||
"hex.ui.common.type.u48": "uint48_t",
|
||||
"hex.ui.common.type.u64": "uint64_t",
|
||||
"hex.ui.common.type.u8": "uint8_t",
|
||||
"hex.ui.common.value": "Valor",
|
||||
"hex.ui.common.yes": "Sí",
|
||||
"hex.ui.hex_editor.ascii_view": "Mostrar columna ASCII",
|
||||
"hex.ui.hex_editor.custom_encoding_view": "Mostrar columna de decodificación avanzada",
|
||||
"hex.ui.hex_editor.human_readable_units_footer": "",
|
||||
"hex.ui.hex_editor.data_size": "Tamaño de Datos",
|
||||
"hex.ui.hex_editor.gray_out_zero": "Mostrar ceros en gris",
|
||||
"hex.ui.hex_editor.no_bytes": "No hay bytes disponibles",
|
||||
"hex.ui.hex_editor.page": "Página",
|
||||
"hex.ui.hex_editor.region": "Región",
|
||||
"hex.ui.hex_editor.selection": "Selección",
|
||||
"hex.ui.hex_editor.selection.none": "Ninguno",
|
||||
"hex.ui.hex_editor.uppercase_hex": "Caracteres hexadecimales mayúscula",
|
||||
"hex.ui.hex_editor.visualizer": "Visualizador de datos",
|
||||
"hex.ui.pattern_drawer.color": "Color",
|
||||
"hex.ui.pattern_drawer.double_click": "Haga doble clic para ver más elementos",
|
||||
"hex.ui.pattern_drawer.end": "",
|
||||
"hex.ui.pattern_drawer.export": "",
|
||||
"hex.ui.pattern_drawer.favorites": "",
|
||||
"hex.ui.pattern_drawer.local": "",
|
||||
"hex.ui.pattern_drawer.size": "Tamaño",
|
||||
"hex.ui.pattern_drawer.spec_name": "",
|
||||
"hex.ui.pattern_drawer.start": "",
|
||||
"hex.ui.pattern_drawer.tree_style.tree": "Árbol",
|
||||
"hex.ui.pattern_drawer.tree_style.auto_expanded": "Árbol Automáticamente Expandido",
|
||||
"hex.ui.pattern_drawer.tree_style.flattened": "Allanado",
|
||||
"hex.ui.pattern_drawer.type": "Tipo",
|
||||
"hex.ui.pattern_drawer.updating": "",
|
||||
"hex.ui.pattern_drawer.value": "Valor",
|
||||
"hex.ui.pattern_drawer.var_name": "Nombre",
|
||||
"hex.ui.pattern_drawer.visualizer.unknown": "Visualizador Desconocido",
|
||||
"hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "Cantidad de parámetros inválida"
|
||||
}
|
||||
}
|
108
plugins/ui/romfs/lang/it_IT.json
Normal file
108
plugins/ui/romfs/lang/it_IT.json
Normal file
@ -0,0 +1,108 @@
|
||||
{
|
||||
"code": "it-IT",
|
||||
"language": "Italian",
|
||||
"country": "Italy",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.ui.common.address": "Indirizzo",
|
||||
"hex.ui.common.allow": "",
|
||||
"hex.ui.common.begin": "",
|
||||
"hex.ui.common.big": "Big",
|
||||
"hex.ui.common.big_endian": "Big Endian",
|
||||
"hex.ui.common.browse": "Esplora...",
|
||||
"hex.ui.common.bytes": "",
|
||||
"hex.ui.common.cancel": "Cancella",
|
||||
"hex.ui.common.choose_file": "Scegli file",
|
||||
"hex.ui.common.close": "Chiudi",
|
||||
"hex.ui.common.comment": "",
|
||||
"hex.ui.common.count": "",
|
||||
"hex.ui.common.decimal": "Decimale",
|
||||
"hex.ui.common.deny": "",
|
||||
"hex.ui.common.dont_show_again": "Non mostrare di nuovo",
|
||||
"hex.ui.common.encoding.ascii": "ASCII",
|
||||
"hex.ui.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.ui.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.ui.common.encoding.utf8": "UTF-8",
|
||||
"hex.ui.common.end": "",
|
||||
"hex.ui.common.endian": "Endian",
|
||||
"hex.ui.common.warning": "",
|
||||
"hex.ui.common.error": "Errore",
|
||||
"hex.ui.common.fatal": "Errore Fatale",
|
||||
"hex.ui.common.file": "File",
|
||||
"hex.ui.common.filter": "",
|
||||
"hex.ui.common.hexadecimal": "Esadecimale",
|
||||
"hex.ui.common.info": "Informazioni",
|
||||
"hex.ui.common.instruction": "",
|
||||
"hex.ui.common.link": "Link",
|
||||
"hex.ui.common.little": "Little",
|
||||
"hex.ui.common.little_endian": "Little Endian",
|
||||
"hex.ui.common.load": "Carica",
|
||||
"hex.ui.common.match_selection": "Seleziona abbinamento",
|
||||
"hex.ui.common.name": "",
|
||||
"hex.ui.common.no": "No",
|
||||
"hex.ui.common.number_format": "",
|
||||
"hex.ui.common.octal": "Ottale",
|
||||
"hex.ui.common.offset": "Offset",
|
||||
"hex.ui.common.okay": "Okay",
|
||||
"hex.ui.common.open": "Apri",
|
||||
"hex.ui.common.percentage": "",
|
||||
"hex.ui.common.processing": "",
|
||||
"hex.ui.common.project": "",
|
||||
"hex.ui.common.question": "",
|
||||
"hex.ui.common.range": "",
|
||||
"hex.ui.common.range.entire_data": "",
|
||||
"hex.ui.common.range.selection": "",
|
||||
"hex.ui.common.region": "Regione",
|
||||
"hex.ui.common.reset": "",
|
||||
"hex.ui.common.set": "Imposta",
|
||||
"hex.ui.common.settings": "Impostazioni",
|
||||
"hex.ui.common.size": "Dimensione",
|
||||
"hex.ui.common.type": "",
|
||||
"hex.ui.common.type.f32": "float",
|
||||
"hex.ui.common.type.f64": "double",
|
||||
"hex.ui.common.type.i16": "int16_t",
|
||||
"hex.ui.common.type.i24": "int24_t",
|
||||
"hex.ui.common.type.i32": "int32_t",
|
||||
"hex.ui.common.type.i48": "int48_t",
|
||||
"hex.ui.common.type.i64": "int64_t",
|
||||
"hex.ui.common.type.i8": "int8_t",
|
||||
"hex.ui.common.type.u16": "uint16_t",
|
||||
"hex.ui.common.type.u24": "uint24_t",
|
||||
"hex.ui.common.type.u32": "uint32_t",
|
||||
"hex.ui.common.type.u48": "uint48_t",
|
||||
"hex.ui.common.type.u64": "uint64_t",
|
||||
"hex.ui.common.type.u8": "uint8_t",
|
||||
"hex.ui.common.value": "",
|
||||
"hex.ui.common.yes": "Sì",
|
||||
"hex.ui.hex_editor.ascii_view": "Mostra la colonna ASCII",
|
||||
"hex.ui.hex_editor.custom_encoding_view": "Mostra la colonna di decodifica avanzata",
|
||||
"hex.ui.hex_editor.human_readable_units_footer": "",
|
||||
"hex.ui.hex_editor.data_size": "",
|
||||
"hex.ui.hex_editor.gray_out_zero": "Taglia fuori gli zeri",
|
||||
"hex.ui.hex_editor.no_bytes": "",
|
||||
"hex.ui.hex_editor.page": "",
|
||||
"hex.ui.hex_editor.region": "",
|
||||
"hex.ui.hex_editor.selection": "",
|
||||
"hex.ui.hex_editor.selection.none": "",
|
||||
"hex.ui.hex_editor.uppercase_hex": "Caratteri esadecimali maiuscoli",
|
||||
"hex.ui.hex_editor.visualizer": "",
|
||||
"hex.ui.pattern_drawer.color": "",
|
||||
"hex.ui.pattern_drawer.double_click": "",
|
||||
"hex.ui.pattern_drawer.end": "",
|
||||
"hex.ui.pattern_drawer.export": "",
|
||||
"hex.ui.pattern_drawer.favorites": "",
|
||||
"hex.ui.pattern_drawer.local": "",
|
||||
"hex.ui.pattern_drawer.size": "",
|
||||
"hex.ui.pattern_drawer.spec_name": "",
|
||||
"hex.ui.pattern_drawer.start": "",
|
||||
"hex.ui.pattern_drawer.tree_style.tree": "",
|
||||
"hex.ui.pattern_drawer.tree_style.auto_expanded": "",
|
||||
"hex.ui.pattern_drawer.tree_style.flattened": "",
|
||||
"hex.ui.pattern_drawer.type": "",
|
||||
"hex.ui.pattern_drawer.updating": "",
|
||||
"hex.ui.pattern_drawer.value": "",
|
||||
"hex.ui.pattern_drawer.var_name": "",
|
||||
"hex.ui.pattern_drawer.visualizer.unknown": "",
|
||||
"hex.ui.pattern_drawer.visualizer.invalid_parameter_count": ""
|
||||
}
|
||||
}
|
108
plugins/ui/romfs/lang/ja_JP.json
Normal file
108
plugins/ui/romfs/lang/ja_JP.json
Normal file
@ -0,0 +1,108 @@
|
||||
{
|
||||
"code": "ja-JP",
|
||||
"language": "Japanese",
|
||||
"country": "Japan",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.ui.common.address": "アドレス",
|
||||
"hex.ui.common.allow": "",
|
||||
"hex.ui.common.begin": "",
|
||||
"hex.ui.common.big": "ビッグ",
|
||||
"hex.ui.common.big_endian": "ビッグエンディアン",
|
||||
"hex.ui.common.browse": "ファイルを参照…",
|
||||
"hex.ui.common.bytes": "",
|
||||
"hex.ui.common.cancel": "キャンセル",
|
||||
"hex.ui.common.choose_file": "ファイルを選択",
|
||||
"hex.ui.common.close": "閉じる",
|
||||
"hex.ui.common.comment": "コメント",
|
||||
"hex.ui.common.count": "",
|
||||
"hex.ui.common.decimal": "10進数",
|
||||
"hex.ui.common.deny": "",
|
||||
"hex.ui.common.dont_show_again": "再度表示しない",
|
||||
"hex.ui.common.encoding.ascii": "ASCII",
|
||||
"hex.ui.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.ui.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.ui.common.encoding.utf8": "UTF-8",
|
||||
"hex.ui.common.end": "",
|
||||
"hex.ui.common.endian": "エンディアン",
|
||||
"hex.ui.common.warning": "",
|
||||
"hex.ui.common.error": "エラー",
|
||||
"hex.ui.common.fatal": "深刻なエラー",
|
||||
"hex.ui.common.file": "ファイル",
|
||||
"hex.ui.common.filter": "フィルタ",
|
||||
"hex.ui.common.hexadecimal": "16進数",
|
||||
"hex.ui.common.info": "情報",
|
||||
"hex.ui.common.instruction": "",
|
||||
"hex.ui.common.link": "リンク",
|
||||
"hex.ui.common.little": "リトル",
|
||||
"hex.ui.common.little_endian": "リトルエンディアン",
|
||||
"hex.ui.common.load": "読み込む",
|
||||
"hex.ui.common.match_selection": "選択範囲と一致",
|
||||
"hex.ui.common.name": "",
|
||||
"hex.ui.common.no": "いいえ",
|
||||
"hex.ui.common.number_format": "",
|
||||
"hex.ui.common.octal": "8進数",
|
||||
"hex.ui.common.offset": "オフセット",
|
||||
"hex.ui.common.okay": "OK",
|
||||
"hex.ui.common.open": "開く",
|
||||
"hex.ui.common.percentage": "",
|
||||
"hex.ui.common.processing": "",
|
||||
"hex.ui.common.project": "",
|
||||
"hex.ui.common.question": "",
|
||||
"hex.ui.common.range": "範囲",
|
||||
"hex.ui.common.range.entire_data": "データ全体",
|
||||
"hex.ui.common.range.selection": "選択範囲",
|
||||
"hex.ui.common.region": "領域",
|
||||
"hex.ui.common.reset": "",
|
||||
"hex.ui.common.set": "セット",
|
||||
"hex.ui.common.settings": "設定",
|
||||
"hex.ui.common.size": "サイズ",
|
||||
"hex.ui.common.type": "",
|
||||
"hex.ui.common.type.f32": "float",
|
||||
"hex.ui.common.type.f64": "double",
|
||||
"hex.ui.common.type.i16": "int16_t",
|
||||
"hex.ui.common.type.i24": "int24_t",
|
||||
"hex.ui.common.type.i32": "int32_t",
|
||||
"hex.ui.common.type.i48": "int48_t",
|
||||
"hex.ui.common.type.i64": "int64_t",
|
||||
"hex.ui.common.type.i8": "int8_t",
|
||||
"hex.ui.common.type.u16": "uint16_t",
|
||||
"hex.ui.common.type.u24": "uint24_t",
|
||||
"hex.ui.common.type.u32": "uint32_t",
|
||||
"hex.ui.common.type.u48": "uint48_t",
|
||||
"hex.ui.common.type.u64": "uint64_t",
|
||||
"hex.ui.common.type.u8": "uint8_t",
|
||||
"hex.ui.common.value": "値",
|
||||
"hex.ui.common.yes": "はい",
|
||||
"hex.ui.hex_editor.ascii_view": "ASCIIを表示",
|
||||
"hex.ui.hex_editor.custom_encoding_view": "他のデコード列を表示",
|
||||
"hex.ui.hex_editor.human_readable_units_footer": "",
|
||||
"hex.ui.hex_editor.data_size": "ファイルサイズ",
|
||||
"hex.ui.hex_editor.gray_out_zero": "ゼロをグレーアウト",
|
||||
"hex.ui.hex_editor.no_bytes": "",
|
||||
"hex.ui.hex_editor.page": "ページ",
|
||||
"hex.ui.hex_editor.region": "ページの領域",
|
||||
"hex.ui.hex_editor.selection": "選択中",
|
||||
"hex.ui.hex_editor.selection.none": "なし",
|
||||
"hex.ui.hex_editor.uppercase_hex": "16進数を大文字表記",
|
||||
"hex.ui.hex_editor.visualizer": "データ表示方式",
|
||||
"hex.ui.pattern_drawer.color": "色",
|
||||
"hex.ui.pattern_drawer.double_click": "",
|
||||
"hex.ui.pattern_drawer.end": "",
|
||||
"hex.ui.pattern_drawer.export": "",
|
||||
"hex.ui.pattern_drawer.favorites": "",
|
||||
"hex.ui.pattern_drawer.local": "",
|
||||
"hex.ui.pattern_drawer.size": "サイズ",
|
||||
"hex.ui.pattern_drawer.spec_name": "",
|
||||
"hex.ui.pattern_drawer.start": "",
|
||||
"hex.ui.pattern_drawer.tree_style.tree": "",
|
||||
"hex.ui.pattern_drawer.tree_style.auto_expanded": "",
|
||||
"hex.ui.pattern_drawer.tree_style.flattened": "",
|
||||
"hex.ui.pattern_drawer.type": "型",
|
||||
"hex.ui.pattern_drawer.updating": "",
|
||||
"hex.ui.pattern_drawer.value": "値",
|
||||
"hex.ui.pattern_drawer.var_name": "名前",
|
||||
"hex.ui.pattern_drawer.visualizer.unknown": "",
|
||||
"hex.ui.pattern_drawer.visualizer.invalid_parameter_count": ""
|
||||
}
|
||||
}
|
108
plugins/ui/romfs/lang/ko_KR.json
Normal file
108
plugins/ui/romfs/lang/ko_KR.json
Normal file
@ -0,0 +1,108 @@
|
||||
{
|
||||
"code": "ko-KR",
|
||||
"language": "Korean",
|
||||
"country": "Korea",
|
||||
"fallback": false,
|
||||
"translations": {
|
||||
"hex.ui.common.address": "주소",
|
||||
"hex.ui.common.allow": "허용",
|
||||
"hex.ui.common.begin": "시작",
|
||||
"hex.ui.common.big": "빅",
|
||||
"hex.ui.common.big_endian": "빅 엔디언",
|
||||
"hex.ui.common.browse": "찾아보기...",
|
||||
"hex.ui.common.bytes": "바이트",
|
||||
"hex.ui.common.cancel": "취소",
|
||||
"hex.ui.common.choose_file": "파일 선택",
|
||||
"hex.ui.common.close": "닫기",
|
||||
"hex.ui.common.comment": "주석",
|
||||
"hex.ui.common.count": "개수",
|
||||
"hex.ui.common.decimal": "10진수",
|
||||
"hex.ui.common.deny": "거부",
|
||||
"hex.ui.common.dont_show_again": "다시 보지 않기",
|
||||
"hex.ui.common.encoding.ascii": "ASCII",
|
||||
"hex.ui.common.encoding.utf16be": "UTF-16BE",
|
||||
"hex.ui.common.encoding.utf16le": "UTF-16LE",
|
||||
"hex.ui.common.encoding.utf8": "UTF-8",
|
||||
"hex.ui.common.end": "끝",
|
||||
"hex.ui.common.endian": "엔디언",
|
||||
"hex.ui.common.warning": "경고",
|
||||
"hex.ui.common.error": "오류",
|
||||
"hex.ui.common.fatal": "치명적 오류",
|
||||
"hex.ui.common.file": "파일",
|
||||
"hex.ui.common.filter": "필터",
|
||||
"hex.ui.common.hexadecimal": "16진수",
|
||||
"hex.ui.common.info": "정보",
|
||||
"hex.ui.common.instruction": "지침",
|
||||
"hex.ui.common.link": "링크",
|
||||
"hex.ui.common.little": "리틀",
|
||||
"hex.ui.common.little_endian": "리틀 엔디언",
|
||||
"hex.ui.common.load": "불러오기",
|
||||
"hex.ui.common.match_selection": "선택 영역 일치",
|
||||
"hex.ui.common.name": "이름",
|
||||
"hex.ui.common.no": "아니요",
|
||||
"hex.ui.common.number_format": "포맷",
|
||||
"hex.ui.common.octal": "8진수",
|
||||
"hex.ui.common.offset": "오프셋",
|
||||
"hex.ui.common.okay": "확인",
|
||||
"hex.ui.common.open": "열기",
|
||||
"hex.ui.common.percentage": "비율",
|
||||
"hex.ui.common.processing": "작업 중",
|
||||
"hex.ui.common.project": "프로젝트",
|
||||
"hex.ui.common.question": "질문",
|
||||
"hex.ui.common.range": "범위",
|
||||
"hex.ui.common.range.entire_data": "전체 데이터",
|
||||
"hex.ui.common.range.selection": "선택 영역",
|
||||
"hex.ui.common.region": "영역",
|
||||
"hex.ui.common.reset": "재설정",
|
||||
"hex.ui.common.set": "설정",
|
||||
"hex.ui.common.settings": "설정",
|
||||
"hex.ui.common.size": "크기",
|
||||
"hex.ui.common.type": "유형",
|
||||
"hex.ui.common.type.f32": "플로트",
|
||||
"hex.ui.common.type.f64": "더블",
|
||||
"hex.ui.common.type.i16": "int16_t",
|
||||
"hex.ui.common.type.i24": "int24_t",
|
||||
"hex.ui.common.type.i32": "int32_t",
|
||||
"hex.ui.common.type.i48": "int48_t",
|
||||
"hex.ui.common.type.i64": "int64_t",
|
||||
"hex.ui.common.type.i8": "int8_t",
|
||||
"hex.ui.common.type.u16": "uint16_t",
|
||||
"hex.ui.common.type.u24": "uint24_t",
|
||||
"hex.ui.common.type.u32": "uint32_t",
|
||||
"hex.ui.common.type.u48": "uint48_t",
|
||||
"hex.ui.common.type.u64": "uint64_t",
|
||||
"hex.ui.common.type.u8": "uint8_t",
|
||||
"hex.ui.common.value": "값",
|
||||
"hex.ui.common.yes": "예",
|
||||
"hex.ui.hex_editor.ascii_view": "ASCII 열 표시",
|
||||
"hex.ui.hex_editor.custom_encoding_view": "추가 디코딩 열 표시",
|
||||
"hex.ui.hex_editor.human_readable_units_footer": "크기를 사람이 읽을 수 있는 단위로 변환",
|
||||
"hex.ui.hex_editor.data_size": "데이터 크기",
|
||||
"hex.ui.hex_editor.gray_out_zero": "00을 회색으로 표시",
|
||||
"hex.ui.hex_editor.no_bytes": "바이트가 없습니다",
|
||||
"hex.ui.hex_editor.page": "페이지",
|
||||
"hex.ui.hex_editor.region": "영역",
|
||||
"hex.ui.hex_editor.selection": "선택 영역",
|
||||
"hex.ui.hex_editor.selection.none": "없음",
|
||||
"hex.ui.hex_editor.uppercase_hex": "16진수 값을 대문자로 표시",
|
||||
"hex.ui.hex_editor.visualizer": "데이터 시각화",
|
||||
"hex.ui.pattern_drawer.color": "색상",
|
||||
"hex.ui.pattern_drawer.double_click": "더 많은 항목을 보려면 두 번 클릭",
|
||||
"hex.ui.pattern_drawer.end": "끝",
|
||||
"hex.ui.pattern_drawer.export": "다른 이름으로 패턴 내보내기...",
|
||||
"hex.ui.pattern_drawer.favorites": "즐겨찾기",
|
||||
"hex.ui.pattern_drawer.local": "로컬",
|
||||
"hex.ui.pattern_drawer.size": "크기",
|
||||
"hex.ui.pattern_drawer.spec_name": "명세 이름 표시",
|
||||
"hex.ui.pattern_drawer.start": "시작",
|
||||
"hex.ui.pattern_drawer.tree_style.tree": "트리",
|
||||
"hex.ui.pattern_drawer.tree_style.auto_expanded": "자동 확장 트리",
|
||||
"hex.ui.pattern_drawer.tree_style.flattened": "접기",
|
||||
"hex.ui.pattern_drawer.type": "유형",
|
||||
"hex.ui.pattern_drawer.updating": "패턴 업데이트 중...",
|
||||
"hex.ui.pattern_drawer.value": "값",
|
||||
"hex.ui.pattern_drawer.var_name": "이름",
|
||||
"hex.ui.pattern_drawer.visualizer.unknown": "알 수 없는 시각화",
|
||||
"hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "잘못된 매개변수 수"
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user