diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f48aba3..1108ab6 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -30,17 +30,17 @@ jobs: - name: Install dependencies for glibc run: | sudo apt update - sudo apt install -y qt6-base-dev qt6-svg-dev libgl1-mesa-dev libxkbcommon-dev libvulkan-dev qmake6 smartmontools + sudo apt install -y qt6-base-dev qt6-tools-dev qt6-svg-dev libgl1-mesa-dev libxkbcommon-dev libvulkan-dev qmake6 smartmontools if: ${{ matrix.clib == 'glibc' }} - name: Install dependencies for musl run: | - apk add git cmake make gcc g++ curl gcompat qt6-qtbase-dev qt6-qtbase-x11 qt6-qtsvg breeze smartmontools + apk add git cmake make gcc g++ curl gcompat qt6-qtbase-dev qt6-qttools-dev qt6-qtbase-x11 qt6-qtsvg breeze smartmontools git config --global --add safe.directory '*' if: ${{ matrix.clib == 'musl' }} - name: Build run: | - cmake -Bbuild -DCMAKE_BUILD_TYPE:STRING=MinSizeRel -DQT_VERSION_MAJOR=6 + cmake -Bbuild -DCMAKE_BUILD_TYPE:STRING=MinSizeRel -DQT_VERSION_MAJOR=6 -DENABLE_TRANSLATIONS=ON cmake --build build - name: Package AppImage diff --git a/CMakeLists.txt b/CMakeLists.txt index 09e96fd..ce704ef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,35 +14,51 @@ if(NOT DEFINED QT_VERSION_MAJOR) set(QT_VERSION_MAJOR 6) endif() -find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) +if(ENABLE_TRANSLATIONS) + find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools) +else() + find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) +endif() set(PROJECT_SOURCES - src/main.cpp - src/mainwindow.cpp - src/mainwindow.h - src/mainwindow.ui - src/custombutton.h - src/custombutton.cpp - src/statusdot.h - src/statusdot.cpp - src/jsonparser.h - src/jsonparser.cpp - src/utils.h - src/utils.cpp - src/resources.qrc + src/main.cpp + src/mainwindow.cpp + src/mainwindow.h + src/mainwindow.ui + src/custombutton.h + src/custombutton.cpp + src/statusdot.h + src/statusdot.cpp + src/jsonparser.h + src/jsonparser.cpp + src/utils.h + src/utils.cpp + src/resources.qrc ) -if (INCLUDE_OPTIONAL_RESOURCES) +if(INCLUDE_OPTIONAL_RESOURCES) set(PROJECT_SOURCES ${PROJECT_SOURCES} dist/theme/theme_resources.qrc) endif() -add_executable(QDiskInfo - ${PROJECT_SOURCES} -) +if(ENABLE_TRANSLATIONS) + file(GLOB TS_FILES "${CMAKE_SOURCE_DIR}/translations/*.ts") + qt_add_translation(QM_FILES ${TS_FILES}) + set(TRANSLATIONS_QRC "${CMAKE_BINARY_DIR}/translations.qrc") + file(WRITE ${TRANSLATIONS_QRC} "\n \n") + foreach(QM_FILE ${QM_FILES}) + get_filename_component(QM_FILE_NAME ${QM_FILE} NAME) + file(APPEND ${TRANSLATIONS_QRC} " ${QM_FILE_NAME}\n") + endforeach() + file(APPEND ${TRANSLATIONS_QRC} " \n\n") + list(APPEND PROJECT_SOURCES ${TRANSLATIONS_QRC}) +endif() + +add_executable(QDiskInfo ${PROJECT_SOURCES}) target_compile_definitions(QDiskInfo PRIVATE PROJECT_VERSION_MAJOR=${QDiskInfo_VERSION_MAJOR} PROJECT_VERSION_MINOR=${QDiskInfo_VERSION_MINOR} + ENABLE_TRANSLATIONS=$ INCLUDE_OPTIONAL_RESOURCES=$ CHARACTER_IS_RIGHT=$ ) diff --git a/README.md b/README.md index 85d5e67..accd733 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # QDiskInfo -QDiskInfo is a frontend for smartctl (part of the smartmontools package). It provides a user experience similar to CrystalDiskInfo. It shows the SMART (Self-Monitoring, Analysis, and Reporting Technology) data of modern hard disk drives. +QDiskInfo is a frontend for smartctl (part of the smartmontools package). It provides a user experience similar to CrystalDiskInfo. It shows the SMART (Self-Monitoring, Analysis, and Reporting Technology) data of modern hard disk drives. ![mockup](https://github.com/edisionnano/QDiskInfo/assets/26039434/e5488f41-6ea2-4304-9ae8-13d5dac7715b) The icon is a modified version of the KDE Partition Manager logo which is available under GPL-3.0+. @@ -10,11 +10,11 @@ The icon is a modified version of the KDE Partition Manager logo which is availa ### Compilation and Runtime Dependencies Ubuntu and based distros (Mint, Pop!_OS, etc.) ```sh -sudo apt install build-essential cmake git libgl1-mesa-dev libxkbcommon-dev qt6-base-dev qt6-wayland smartmontools +sudo apt install build-essential cmake git libgl1-mesa-dev libxkbcommon-dev qt6-base-dev qt6-tools-dev qt6-wayland smartmontools ``` Fedora and derivatives (Nobara Project, etc.) ``` -sudo dnf install cmake git mesa-libGL-devel libxkbcommon-devel qt6-qtbase-devel qt6-qtwayland-devel smartmontools +sudo dnf install cmake git mesa-libGL-devel libxkbcommon-devel qt6-qtbase-devel qt6-qttools-devel qt6-qtwayland-devel smartmontools ``` ### Compilation Steps First you will need to clone the repository and cd inside @@ -25,11 +25,11 @@ Then you must create a build directory and cd inside ```sh mkdir build && cd build ``` -After that use CMake to setup the project, Qt version can also be set to 5 (for example for Ubuntu) +After that use CMake to setup the project. Qt version can also be set to 5 (for example for Ubuntu), translations can also be disabled if you don't want to install the required tools package ```sh -cmake .. -DCMAKE_BUILD_TYPE:STRING=MinSizeRel -DQT_VERSION_MAJOR=6 +cmake .. -DCMAKE_BUILD_TYPE:STRING=MinSizeRel -DQT_VERSION_MAJOR=6 -DENABLE_TRANSLATIONS=ON ``` -And finally compile the project with all the threads +Finally, compile the project with all the threads using ```sh make -j$(nproc) ``` @@ -47,22 +47,22 @@ Currently, QDiskInfo has support for the following languages: - 🇨🇳 Simplified Chinese (zh_CN) You can translate QDiskInfo to your language very easily using [Crowdin](https://crowdin.com/project/qdiskinfo). If your language isn't available on Crowdin, feel free to create a new issue. -

Alternatively you can copy the qdiskinfo_en_US.ts, which can be found inside the translations folder, to the locale you want. For example to qdiskinfo_de_DE.ts for German. Then you can use the QT Linguist application to translate the strings, marking every finished one with a tick. Once you are finished you can compile the .ts file to a .qm file by running this command from the root of the project -```sh -lrelease translations/qdiskinfo_de_DE.ts -qm translations/qdiskinfo_de_DE.qm -``` -Once you do that, add the .qm file on `src/resources.qrc` and compile the project. +

Alternatively you can copy the qdiskinfo_en_US.ts, which can be found inside the translations folder, to the locale you want. For example to qdiskinfo_de_DE.ts for German. Then you can use the QT Linguist application to translate the strings, marking every finished one with a tick. Compile the project with `-DENABLE_TRANSLATIONS=ON` to test your translation.
If your system language differs from the one you are translating to, you can use ```sh LC_ALL=de_DE.UTF-8 ./QDiskInfo ``` to force the app to use the language of your choice. +
If changes were made to the original strings you can use the `lupdate` command to update the .ts files, for example to update the German translation file you would run +```sh +lupdate src/ -ts translations/qdiskinfo_de_DE.ts -noobsolete +``` ## Using CrystalDiskInfo Anime Themes The process is similar to the one above with a few changes:
First you must download the edition of CrystalDiskInfo you want (Aoi for example) in ZIP format from [here](https://crystalmark.info/en/download/), from this archive you shall copy the light and dark backgrounds as well as the good, caution, bad, unknown icons to dist/theme with the same name as the templates there.
Once you do that compile like above but when running CMake do this instead: ```sh -cmake .. -DCMAKE_BUILD_TYPE:STRING=MinSizeRel -DQT_VERSION_MAJOR=6 -DINCLUDE_OPTIONAL_RESOURCES=ON -DCHARACTER_IS_RIGHT=ON +cmake .. -DCMAKE_BUILD_TYPE:STRING=MinSizeRel -DQT_VERSION_MAJOR=6 -DINCLUDE_OPTIONAL_RESOURCES=ON -DCHARACTER_IS_RIGHT=ON -DENABLE_TRANSLATIONS=ON ``` Regarding the `-DCHARACTER_IS_RIGHT` set it to ON for themes where the character is right (like Aoi) or OFF for most other themes. diff --git a/src/resources.qrc b/src/resources.qrc index 79b07a9..3fd7313 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -2,10 +2,4 @@ ../dist/QDiskInfo.svg - - ../translations/qdiskinfo_el_GR.qm - ../translations/qdiskinfo_es_ES.qm - ../translations/qdiskinfo_pt_BR.qm - ../translations/qdiskinfo_zh_CN.qm - diff --git a/translations/qdiskinfo_el_GR.qm b/translations/qdiskinfo_el_GR.qm deleted file mode 100644 index ad2616f..0000000 Binary files a/translations/qdiskinfo_el_GR.qm and /dev/null differ diff --git a/translations/qdiskinfo_es_ES.qm b/translations/qdiskinfo_es_ES.qm deleted file mode 100644 index ce0f607..0000000 Binary files a/translations/qdiskinfo_es_ES.qm and /dev/null differ diff --git a/translations/qdiskinfo_pt_BR.qm b/translations/qdiskinfo_pt_BR.qm deleted file mode 100644 index 3b584b0..0000000 Binary files a/translations/qdiskinfo_pt_BR.qm and /dev/null differ diff --git a/translations/qdiskinfo_zh_CN.qm b/translations/qdiskinfo_zh_CN.qm deleted file mode 100644 index f285b5f..0000000 Binary files a/translations/qdiskinfo_zh_CN.qm and /dev/null differ