From 4bbc54f6e3aa5522b7f3175fcdff281db754bf59 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Fri, 8 May 2026 12:36:40 +0200 Subject: [PATCH 01/82] git submodule update --remote elements --- elements | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elements b/elements index 2bc4c95cc..bf1332455 160000 --- a/elements +++ b/elements @@ -1 +1 @@ -Subproject commit 2bc4c95cc46ab87670c8df5eee24b16a2c5289c2 +Subproject commit bf133245578bee4643cb2be8a1060928961659b8 From a4bdade3dbea42c5bcf57d482170295b6475d350 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Fri, 8 May 2026 13:25:59 +0200 Subject: [PATCH 02/82] git submodule update --remote elements --- elements | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elements b/elements index bf1332455..73c0dfb4b 160000 --- a/elements +++ b/elements @@ -1 +1 @@ -Subproject commit bf133245578bee4643cb2be8a1060928961659b8 +Subproject commit 73c0dfb4bfe2f1ca7171bb13a0a4e0f8c1cc762f From ae3e01e5644e1a947ba36f0e9f5dd127058389d7 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sun, 10 May 2026 09:56:02 +0200 Subject: [PATCH 03/82] Update windows CI/CD pipeline --- .github/workflows/windows-build.yml | 337 ++++++++++------- CMakeLists.txt | 3 +- build-aux/windows/QET64.nsi | 94 ++--- build-aux/windows/nsis_base/Lancer QET.bat | 11 + build-aux/windows/nsis_base/README.txt | 4 + build-aux/windows/nsis_base/files/CREDIT | 300 +++++++++++++++ build-aux/windows/nsis_base/files/ChangeLog | 249 +++++++++++++ .../windows/nsis_base/files/ChangeLog.MD | 344 ++++++++++++++++++ .../windows/nsis_base/files/ELEMENTS.LICENSE | 233 ++++++++++++ build-aux/windows/nsis_base/files/LICENSE | 342 +++++++++++++++++ build-aux/windows/nsis_base/files/README | 60 +++ build-aux/windows/nsis_base/files/README.md | 229 ++++++++++++ .../files/ico/application-x-qet-element.ico | Bin 0 -> 32606 bytes .../files/ico/application-x-qet-project.ico | Bin 0 -> 32606 bytes .../ico/application-x-qet-titleblock.ico | Bin 0 -> 99678 bytes .../nsis_base/files/ico/qelectrotech.ico | Bin 0 -> 32606 bytes .../files/qet_uninstall_file_associations.reg | 9 + .../nsis_base/files/register_filetypes.bat | 111 ++++++ build-aux/windows/nsis_base/images/header.bmp | Bin 0 -> 25818 bytes build-aux/windows/nsis_base/images/wizard.bmp | Bin 0 -> 154542 bytes .../windows/nsis_base/images/wizard2.bmp | Bin 0 -> 154542 bytes build-aux/windows/patch_nsi.py | 101 +++++ 22 files changed, 2238 insertions(+), 189 deletions(-) create mode 100644 build-aux/windows/nsis_base/Lancer QET.bat create mode 100644 build-aux/windows/nsis_base/README.txt create mode 100644 build-aux/windows/nsis_base/files/CREDIT create mode 100644 build-aux/windows/nsis_base/files/ChangeLog create mode 100644 build-aux/windows/nsis_base/files/ChangeLog.MD create mode 100644 build-aux/windows/nsis_base/files/ELEMENTS.LICENSE create mode 100644 build-aux/windows/nsis_base/files/LICENSE create mode 100644 build-aux/windows/nsis_base/files/README create mode 100644 build-aux/windows/nsis_base/files/README.md create mode 100644 build-aux/windows/nsis_base/files/ico/application-x-qet-element.ico create mode 100644 build-aux/windows/nsis_base/files/ico/application-x-qet-project.ico create mode 100644 build-aux/windows/nsis_base/files/ico/application-x-qet-titleblock.ico create mode 100644 build-aux/windows/nsis_base/files/ico/qelectrotech.ico create mode 100644 build-aux/windows/nsis_base/files/qet_uninstall_file_associations.reg create mode 100644 build-aux/windows/nsis_base/files/register_filetypes.bat create mode 100644 build-aux/windows/nsis_base/images/header.bmp create mode 100644 build-aux/windows/nsis_base/images/wizard.bmp create mode 100644 build-aux/windows/nsis_base/images/wizard2.bmp create mode 100644 build-aux/windows/patch_nsi.py diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 30eefc5d9..67d35986f 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -14,12 +14,12 @@ concurrency: jobs: build-windows: runs-on: windows-latest - steps: - name: Checkout code uses: actions/checkout@v4 with: submodules: recursive + fetch-depth: 0 - name: Install MSYS2 uses: msys2/setup-msys2@v2 @@ -28,6 +28,8 @@ jobs: update: true cache: true install: >- + git + mingw-w64-ucrt-x86_64-ccache mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-ninja @@ -43,14 +45,57 @@ jobs: mingw-w64-ucrt-x86_64-nsis mingw-w64-ucrt-x86_64-angleproject - - name: Force Qt5 — supprimer Qt6 cmake + tools + - name: Cache ccache + uses: actions/cache@v4 + with: + path: C:\Users\runneradmin\AppData\Local\ccache + key: ccache-windows-${{ github.ref_name }}-${{ github.sha }} + restore-keys: | + ccache-windows-${{ github.ref_name }}- + ccache-windows- + + - name: Configure ccache + shell: msys2 {0} + run: | + /ucrt64/bin/ccache --set-config=max_size=500M + /ucrt64/bin/ccache --set-config=compression=true + /ucrt64/bin/ccache -z + echo "=== ccache config ===" + /ucrt64/bin/ccache -p + + - name: Patch NSIS Welcome page — fix title font size + shell: msys2 {0} + run: | + set -euo pipefail + WELCOME_NSH=$(find /ucrt64 -path "*/Modern UI 2/Pages/Welcome.nsh" | head -1) + if [ -z "$WELCOME_NSH" ]; then + echo "WARNING: Welcome.nsh not found, skipping font patch" + else + echo "Patching: $WELCOME_NSH" + # Target only the WelcomePage title CreateFont line and force size to 10 + sed -i '/WelcomePage\.Title\.Font/s/"[0-9]\+" "700"/"10" "700"/' "$WELCOME_NSH" + grep 'WelcomePage.Title.Font' "$WELCOME_NSH" + echo " OK font size patched to 10" + fi + + FINISH_NSH=$(find /ucrt64 -path "*/Modern UI 2/Pages/Finish.nsh" | head -1) + if [ -z "$FINISH_NSH" ]; then + echo "WARNING: Finish.nsh not found, skipping font patch" + else + echo "Patching: $FINISH_NSH" + sed -i '/FinishPage\.Title\.Font/s/"[0-9]\+" "700"/"10" "700"/' "$FINISH_NSH" + grep 'FinishPage.Title.Font' "$FINISH_NSH" + echo " OK font size patched to 10" + fi + + - name: Force Qt5 — remove Qt6 cmake + tools shell: msys2 {0} run: | set -euo pipefail rm -rf /ucrt64/lib/cmake/Qt6 pacman -R --noconfirm mingw-w64-ucrt-x86_64-qt6-tools 2>/dev/null || true echo "=== windeployqt binaries ===" - ls /ucrt64/bin/windeployqt* || echo "AUCUN windeployqt trouve !" + ls /ucrt64/bin/windeployqt* || echo "NO windeployqt found!" - name: Build with cmake shell: msys2 {0} @@ -58,6 +103,10 @@ jobs: set -euo pipefail cd "$GITHUB_WORKSPACE" mkdir build && cd build + # Detect the number of available CPUs + NPROC=$(nproc) + echo "Available CPUs: $NPROC" + cmake -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=/ucrt64 \ @@ -66,8 +115,19 @@ jobs: -DCMAKE_DISABLE_FIND_PACKAGE_Qt6=ON \ -DBUILD_TESTING=OFF \ -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ + -DCMAKE_CXX_FLAGS="-DQET_EXPORT_PROJECT_DB" \ + -DCMAKE_C_COMPILER_LAUNCHER=/ucrt64/bin/ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=/ucrt64/bin/ccache \ + -DSQLite3_INCLUDE_DIR=/ucrt64/include \ + -DSQLite3_LIBRARY=/ucrt64/lib/libsqlite3.dll.a \ .. - ninja + ninja -j"$NPROC" + + - name: Show ccache stats + shell: msys2 {0} + run: | + echo "=== ccache statistics ===" + /ucrt64/bin/ccache -s - name: Verify exe was built shell: msys2 {0} @@ -75,15 +135,15 @@ jobs: set -euo pipefail EXE=$(find "$GITHUB_WORKSPACE/build" -maxdepth 3 -iname "qelectrotech.exe" | head -1) if [ -z "$EXE" ]; then - echo "ERROR: aucun qelectrotech.exe trouve dans build/" + echo "ERROR: no qelectrotech.exe found in build/" find "$GITHUB_WORKSPACE/build" -maxdepth 3 -name "*.exe" || true exit 1 fi SIZE=$(stat -c%s "$EXE") - echo "Exe trouve : $EXE ($SIZE octets)" - [ "$SIZE" -gt 100000 ] || { echo "ERROR: exe trop petit"; exit 1; } + echo "Exe found: $EXE ($SIZE bytes)" + [ "$SIZE" -gt 100000 ] || { echo "ERROR: exe too small"; exit 1; } - - name: Deploy — copie exe + windeployqt + DLLs + - name: Deploy — copy exe + windeployqt + DLLs shell: msys2 {0} run: | set -euo pipefail @@ -93,7 +153,7 @@ jobs: mkdir -p "$BIN" EXE=$(find "$GITHUB_WORKSPACE/build" -maxdepth 3 -iname "qelectrotech.exe" | head -1) - echo "Copie exe : $EXE -> $BIN/QElectroTech.exe" + echo "Copying exe: $EXE -> $BIN/QElectroTech.exe" cp "$EXE" "$BIN/QElectroTech.exe" cd "$BIN" @@ -101,167 +161,176 @@ jobs: --release \ --no-translations \ --no-compiler-runtime \ - --no-opengl-sw \ ./QElectroTech.exe || true - ls -lh "$BIN/QElectroTech.exe" || { echo "ERROR: exe absent de bin/"; exit 1; } + + # 3-pass ldd scan to capture all transitive DLLs + echo "=== 3-pass transitive DLL scan ===" + set +e # ldd may return non-zero exit codes on some files + for PASS in 1 2 3; do + echo "-- Pass $PASS --" + for bin_file in "$BIN"/*.dll "$BIN"/*.exe "$BIN"/sqldrivers/*.dll "$BIN"/platforms/*.dll "$BIN"/imageformats/*.dll; do + [ -f "$bin_file" ] || continue + while IFS= read -r line; do + dll_path=$(echo "$line" | awk '{print $3}') + [ -f "$dll_path" ] || continue + dll_name=$(basename "$dll_path") + dst="$BIN/$dll_name" + if [ ! -f "$dst" ]; then + cp "$dll_path" "$dst" + echo " Copied (pass $PASS): $dll_name" + fi + done < <(ldd "$bin_file" 2>/dev/null | grep -i '/ucrt64/bin/') + done + done + set -e # re-enable + + DLL_SCAN=$(ls -1 "$BIN/"*.dll 2>/dev/null | wc -l) + echo "=== $DLL_SCAN DLLs present after scan ===" + ls -lh "$BIN/QElectroTech.exe" || { echo "ERROR: exe missing from bin/"; exit 1; } DLL_COUNT=$(find "$BIN" -name "*.dll" | wc -l) - echo "DLLs presentes : $DLL_COUNT" - [ "$DLL_COUNT" -gt 5 ] || { echo "ERROR: trop peu de DLLs"; exit 1; } + echo "DLLs present: $DLL_COUNT" + [ "$DLL_COUNT" -gt 5 ] || { echo "ERROR: too few DLLs"; exit 1; } cd "$GITHUB_WORKSPACE" - # --- DLLs runtime compilateur (non copiées par windeployqt) --- - # --- DLLs runtime : copie automatique via ldd --- - # On copie d'abord les DLLs garanties (runtime GCC + KF5 + ICU) - # car ldd ne les liste pas toujours toutes (chargement dynamique). - echo "=== Copie DLLs runtime garanties ===" - UCRT=/ucrt64/bin - for dll in \ - libgcc_s_seh-1.dll \ - libstdc++-6.dll \ - libwinpthread-1.dll \ - libgomp-1.dll; do - [ -f "$UCRT/$dll" ] && cp -v "$UCRT/$dll" "$BIN/" || echo "WARN: $dll non trouve" - done - cp -v "$UCRT"/libicu*.dll "$BIN/" 2>/dev/null || echo "WARN: libicu*.dll non trouvees" - cp -v "$UCRT"/KF5*.dll "$BIN/" 2>/dev/null || echo "WARN: KF5*.dll non trouvees" + cp /ucrt64/bin/libgcc_s_seh-1.dll "$BIN/" + cp /ucrt64/bin/libstdc++-6.dll "$BIN/" + cp /ucrt64/bin/libwinpthread-1.dll "$BIN/" + # SQLite3 — explicit copy because ldd may not detect it + # (statically linked via Qt or via a different path) + SQLITE=$(find /ucrt64/bin -name "libsqlite3*.dll" | head -1) + if [ -n "$SQLITE" ]; then + cp "$SQLITE" "$BIN/" + echo "SQLite3 copied: $(basename $SQLITE)" + else + echo "WARNING: libsqlite3 not found in /ucrt64/bin/" + fi - # Copie automatique de toutes les dependances UCRT64 detectees par ldd - echo "=== Copie automatique dependances ldd ===" - ldd "$BIN/QElectroTech.exe" \ - | grep -i '/ucrt64/bin/' \ - | awk '{print $3}' \ - | while read -r dep; do - cp -v "$dep" "$BIN/" 2>/dev/null || true - done - - # Passe recursive : certaines DLLs ont elles-memes des dependances UCRT64 - echo "=== Passe recursive sur les DLLs copiees ===" - find "$BIN" -maxdepth 1 -name "*.dll" | while read -r lib; do - ldd "$lib" 2>/dev/null \ - | grep -i '/ucrt64/bin/' \ - | awk '{print $3}' \ - | while read -r dep; do - [ -f "$BIN/$(basename "$dep")" ] || cp -v "$dep" "$BIN/" 2>/dev/null || true - done - done - - echo "DLLs totales apres runtime : $(find "$BIN" -name '*.dll' | wc -l)" - - # --- Diagnostic final --- - echo "=== ldd — dependances non resolues ===" - ldd "$BIN/QElectroTech.exe" | grep -i "not found" || echo "Aucune dependance manquante detectee" + # Seed nsis_root/ from the versioned base tree in the repository. + # nsis_base/ contains: images/ and files/ static assets (ico, reg, bat, licenses...). + # and files/ with pre-built static assets (reg, bat, ico, README, licenses...). + # Copy NSIS scripts from build-aux/windows/ then merge the static base tree. + # Copy NSIS scripts and support files from build-aux/windows/ + cp "$GITHUB_WORKSPACE/build-aux/windows/QET64.nsi" "$NSIS_ROOT/" + cp "$GITHUB_WORKSPACE/build-aux/windows/lang_extra.nsh" "$NSIS_ROOT/" + cp "$GITHUB_WORKSPACE/build-aux/windows/lang_extra_fr.nsh" "$NSIS_ROOT/" + cp "$GITHUB_WORKSPACE/build-aux/windows/lang_extra_missing.nsh" "$NSIS_ROOT/" + # Copy static base assets (ico, reg, bat, images, Lancer QET.bat, ...) + cp -r "$GITHUB_WORKSPACE/build-aux/windows/nsis_base/." "$NSIS_ROOT/" + # Layer build-time assets on top of the static base + # Download Lancer QET.bat from misc/ into files/ (portable version) + curl -fsSL "https://raw.githubusercontent.com/qelectrotech/qelectrotech-source-mirror/refs/heads/master/misc/Lancer%20QET.bat" -o "$FILES/Lancer QET.bat" cp -r "$GITHUB_WORKSPACE/elements" "$FILES/elements" || true - cp -r "$GITHUB_WORKSPACE/lang" "$FILES/lang" || true cp -r "$GITHUB_WORKSPACE/titleblocks" "$FILES/titleblocks" || true cp -r "$GITHUB_WORKSPACE/examples" "$FILES/examples" || true cp -r "$GITHUB_WORKSPACE/fonts" "$FILES/fonts" || true - cp -r "$GITHUB_WORKSPACE/ico" "$FILES/ico" || true - for f in LICENSE ChangeLog CREDIT README ELEMENTS.LICENSE \ - qet_uninstall_file_associations.reg register_filetypes.bat; do + # Language files: start from repo lang/, then overlay .qm files built by CMake + cp -r "$GITHUB_WORKSPACE/lang" "$FILES/lang" || true + find "$GITHUB_WORKSPACE/build" -name "*.qm" -exec cp {} "$FILES/lang/" \; 2>/dev/null || true + echo "=== .qm files in files/lang/ ===" + ls "$FILES/lang/"*.qm 2>/dev/null | wc -l || echo "0 .qm files" + + # Top-level doc files from the repository (override nsis_base stubs if present) + for f in LICENSE ChangeLog CREDIT README ELEMENTS.LICENSE; do cp "$GITHUB_WORKSPACE/$f" "$FILES/$f" 2>/dev/null || true done - cp "$GITHUB_WORKSPACE/build-aux/windows/QET64.nsi" "$NSIS_ROOT/" - cp "$GITHUB_WORKSPACE/build-aux/windows/lang_extra.nsh" "$NSIS_ROOT/" || true - cp "$GITHUB_WORKSPACE/build-aux/windows/lang_extra_fr.nsh" "$NSIS_ROOT/" || true - cp "$GITHUB_WORKSPACE/build-aux/windows/lang_extra_missing.nsh" "$NSIS_ROOT/" || true - cp -r "$GITHUB_WORKSPACE/build-aux/windows/images" "$NSIS_ROOT/" || true - - if [ -f "$GITHUB_WORKSPACE/build-aux/windows/Lancer QET.bat" ]; then - cp "$GITHUB_WORKSPACE/build-aux/windows/Lancer QET.bat" "$NSIS_ROOT/" - else - printf '@echo off\r\nstart "" "%%~dp0bin\\QElectroTech.exe" %%*\r\n' \ - > "$NSIS_ROOT/Lancer QET.bat" - fi - - - name: Ensure NSIS images (wizard.bmp + header.bmp) - shell: msys2 {0} - run: | - set -euo pipefail - IMG_SRC="$GITHUB_WORKSPACE/build-aux/windows/images" - IMG_DST="$GITHUB_WORKSPACE/nsis_root/images" - mkdir -p "$IMG_DST" - - if [ -f "$IMG_SRC/wizard.bmp" ] && [ -f "$IMG_SRC/header.bmp" ]; then - echo "Images trouvees dans le repo, copie directe." - cp "$IMG_SRC/wizard.bmp" "$IMG_DST/wizard.bmp" - cp "$IMG_SRC/header.bmp" "$IMG_DST/header.bmp" - else - echo "Images absentes du repo — generation avec ImageMagick." - # wizard.bmp : 164x314 px, fond bleu QET, texte blanc - convert \ - -size 164x314 \ - gradient:"#1a3a5c"-"#2e6da4" \ - -gravity Center \ - -fill white \ - -pointsize 13 \ - -annotate 0 "QElectroTech" \ - -type TrueColor \ - BMP3:"$IMG_DST/wizard.bmp" - # header.bmp : 150x57 px, même palette - convert \ - -size 150x57 \ - gradient:"#1a3a5c"-"#2e6da4" \ - -gravity Center \ - -fill white \ - -pointsize 11 \ - -annotate 0 "QElectroTech" \ - -type TrueColor \ - BMP3:"$IMG_DST/header.bmp" - echo "BMPs generes." - fi - - echo "Contenu de nsis_root/images/ :" - ls -lh "$IMG_DST/" + # --- Verification: list present or missing files in files/ --- + echo "=== Verification of key files in files/ ===" + for f in LICENSE ChangeLog CREDIT README ELEMENTS.LICENSE \ + qet_uninstall_file_associations.reg register_filetypes.bat "Lancer QET.bat"; do + [ -f "$FILES/$f" ] \ + && echo " OK : $f" \ + || echo " MISSING: $f" + done + for d in ico elements lang titleblocks fonts examples bin; do + [ -d "$FILES/$d" ] \ + && echo " OK : $d/" \ + || echo " MISSING: $d/" + done - name: Extract version for installer name shell: msys2 {0} id: qet_version run: | set -euo pipefail - VERSION=$(grep -A5 '^project(' "$GITHUB_WORKSPACE/CMakeLists.txt" \ - | grep -oP '(?<=VERSION )[0-9]+\.[0-9]+[0-9.]*' | head -1 || true) - [ -z "$VERSION" ] && VERSION="dev" - GIT_SHORT=$(git -C "$GITHUB_WORKSPACE" rev-parse --short HEAD 2>/dev/null || echo "unknown") - FULL_VERSION="${VERSION}+git${GIT_SHORT}_x86_64-win64" - echo "version=$FULL_VERSION" >> "$GITHUB_OUTPUT" - echo "Detected version: $FULL_VERSION" - - name: Patch QET64.nsi — version uniquement + # Short commit hash (same as the official packaging script) + GITCOMMIT=$(git -C "$GITHUB_WORKSPACE" rev-parse --short HEAD) + + # Cumulative revision number (trunk style) + project offset 473 + A=$(git -C "$GITHUB_WORKSPACE" rev-list HEAD --count) + HEAD=$(( A + 473 )) + + # Version read from qetversion.cpp — same logic as the official script + VERSION=$(grep 'return QVersionNumber{' "$GITHUB_WORKSPACE/sources/qetversion.cpp" \ + | head -1 \ + | awk -F '{' '{ print $2 }' \ + | awk -F '}' '{ print $1 }' \ + | sed -e 's/,/./g' -e 's/ //g') + [ -z "$VERSION" ] && VERSION="dev" + + FULL_VERSION="${VERSION}-r${HEAD}-${GITCOMMIT}_x86_64-win64" + echo "version=$FULL_VERSION" >> "$GITHUB_OUTPUT" + echo "base_version=$VERSION" >> "$GITHUB_OUTPUT" + echo "gitcommit=$GITCOMMIT" >> "$GITHUB_OUTPUT" + echo "head=$HEAD" >> "$GITHUB_OUTPUT" + echo "VERSION : $VERSION" + echo "GITCOMMIT : $GITCOMMIT" + echo "HEAD (rev) : $HEAD" + echo "FULL : $FULL_VERSION" + + - name: Patch QET64.nsi — version + exe name + absolute paths shell: msys2 {0} run: | set -euo pipefail VERSION="${{ steps.qet_version.outputs.version }}" NSI="$GITHUB_WORKSPACE/nsis_root/QET64.nsi" + FILES_WIN=$(cygpath -w "$GITHUB_WORKSPACE/nsis_root/files") + SCRIPT="$GITHUB_WORKSPACE/build-aux/windows/patch_nsi.py" - # Patch version uniquement. - # Tous les chemins du .nsi sont relatifs (./files/, .\images\) et - # sont resolus par makensis depuis nsis_root/ — aucun patch necessaire. - sed -i "s|!define SOFT_VERSION .*|!define SOFT_VERSION \"${VERSION}\"|" "$NSI" + python3 "$SCRIPT" "$NSI" "$VERSION" "$FILES_WIN" + + echo "=== Verification ===" + grep 'SOFT_VERSION' "$NSI" | head -1 + grep -m2 'nsis_root' "$NSI" | head -2 + echo "=== Contents of nsis_root/files/ ===" + ls "$GITHUB_WORKSPACE/nsis_root/files/" - echo '=== SOFT_VERSION ===' - grep 'SOFT_VERSION' "$NSI" - echo '=== Structure nsis_root ===' - ls "$GITHUB_WORKSPACE/nsis_root/" - echo '=== Contenu files/bin (premiers fichiers) ===' - ls "$GITHUB_WORKSPACE/nsis_root/files/bin/" | head -10 - name: Build NSIS installer shell: msys2 {0} run: | set -euo pipefail - cd "$GITHUB_WORKSPACE/nsis_root" - makensis QET64.nsi + NSIS_ROOT="$GITHUB_WORKSPACE/nsis_root" + cd "$NSIS_ROOT" + echo "=== CWD : $(pwd) ===" + + # MSYS2_ARG_CONV_EXCL prevents MSYS2 from converting /V4 to a POSIX path + MSYS2_ARG_CONV_EXCL="*" makensis /V4 QET64.nsi + RC=$? + echo "=== Contents of nsis_root after makensis ===" + ls "$NSIS_ROOT/" + [ $RC -eq 0 ] || { echo "ERROR: makensis failed (exit $RC)"; exit 1; } + - name: Move installer to dist/ shell: msys2 {0} run: | set -euo pipefail mkdir -p "$GITHUB_WORKSPACE/dist" - mv "$GITHUB_WORKSPACE/nsis_root"/Installer_QElectroTech-*.exe \ - "$GITHUB_WORKSPACE/dist/" + + # Case-insensitive search to avoid glob issues + INSTALLER=$(find "$GITHUB_WORKSPACE/nsis_root" -maxdepth 1 -iname "installer_*.exe" | head -1) + if [ -z "$INSTALLER" ]; then + echo "ERROR: no installer .exe found in nsis_root/" + echo "=== Contents of nsis_root/ ===" + ls "$GITHUB_WORKSPACE/nsis_root/" + exit 1 + fi + echo "Moving: $INSTALLER -> dist/" + mv "$INSTALLER" "$GITHUB_WORKSPACE/dist/" - name: Upload build logs on failure if: failure() @@ -273,10 +342,10 @@ jobs: nsis_root/files/bin/ if-no-files-found: warn - - name: Upload portable (files/ sans installeur) + - name: Upload portable (files/ without installer) uses: actions/upload-artifact@v4 with: - name: qelectrotech-windows-portable + name: qelectrotech-${{ steps.qet_version.outputs.base_version }}+git${{ steps.qet_version.outputs.head }}-x86-win64-readytouse path: nsis_root/files/ retention-days: 14 @@ -284,5 +353,5 @@ jobs: uses: actions/upload-artifact@v4 with: name: qelectrotech-windows-installer - path: dist/Installer_QElectroTech-*.exe + path: dist/Installer_*.exe retention-days: 14 diff --git a/CMakeLists.txt b/CMakeLists.txt index 794ac6eb5..33fa0bb9c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,6 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package( QT NAMES - Qt6 Qt5 COMPONENTS ${QET_COMPONENTS} @@ -69,6 +68,7 @@ find_package( COMPONENTS ${QET_COMPONENTS} REQUIRED) +find_package(SQLite3 REQUIRED) set(CMAKE_AUTOUIC_SEARCH_PATHS ${QET_DIR}/sources/ui) qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) @@ -92,6 +92,7 @@ target_link_libraries( PRIVATE pugixml::pugixml SingleApplication::SingleApplication + SQLite::SQLite3 ${KF5_PRIVATE_LIBRARIES} ${QET_PRIVATE_LIBRARIES} ) diff --git a/build-aux/windows/QET64.nsi b/build-aux/windows/QET64.nsi index 5dd76d080..cc1d81bd0 100644 --- a/build-aux/windows/QET64.nsi +++ b/build-aux/windows/QET64.nsi @@ -27,6 +27,8 @@ ; - MUI2.nsh is unchanged; MUI_LANGDLL_ALLLANGUAGES is still valid ; - FileFunc.nsh / Locate macro: unchanged ; - Var /GLOBAL must be declared at global scope, not inside a Section +; - ${__FILEDIR__} resolves to the directory of the .nsi at compile time; +; used for bitmaps and LICENSE so no sed path-patching is needed. ;============================================================================== ;-------------------------------- @@ -100,11 +102,14 @@ Var final_titleblock_ico !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-uninstall.ico" -!define MUI_WELCOMEFINISHPAGE_BITMAP ".\images\wizard.bmp" +; ${__FILEDIR__} resolves at compile time to the directory containing this +; .nsi file (= nsis_root/ when makensis runs from that folder). +; No sed path-patching needed for these two defines. +!define MUI_WELCOMEFINISHPAGE_BITMAP "${__FILEDIR__}\images\wizard.bmp" !define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH !define MUI_HEADERIMAGE -!define MUI_HEADERIMAGE_BITMAP ".\images\header.bmp" +!define MUI_HEADERIMAGE_BITMAP "${__FILEDIR__}\images\header.bmp" ;-------------------------------- ; Language Selection Dialog Settings (remember chosen language in registry) @@ -116,7 +121,8 @@ Var final_titleblock_ico ; Pages !define MUI_COMPONENTSPAGE_SMALLDESC !insertmacro MUI_PAGE_WELCOME -!insertmacro MUI_PAGE_LICENSE "files\LICENSE" +; ${__FILEDIR__} resolves to nsis_root/ at compile time — no sed needed. +!insertmacro MUI_PAGE_LICENSE "${__FILEDIR__}\files\LICENSE" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES @@ -124,7 +130,7 @@ Var final_titleblock_ico !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES -; Finish page – checkbox to launch QElectroTech +; Finish page - checkbox to launch QElectroTech !define MUI_FINISHPAGE_RUN "$INSTDIR\Lancer QET.bat" !define MUI_FINISHPAGE_RUN_NOTCHECKED !define MUI_FINISHPAGE_RUN_TEXT "$(Check)" @@ -173,7 +179,7 @@ Var final_titleblock_ico ; NOTE: The string "uninstFailed" must be defined in lang_extra.nsh and ; lang_extra_fr.nsh (and any other lang_extra_*.nsh) like so: ; LangString uninstFailed ${LANG_ENGLISH} "Uninstallation of the previous version failed.$\nPlease uninstall QElectroTech manually before continuing." -; LangString uninstFailed ${LANG_FRENCH} "La désinstallation de la version précédente a échoué.$\nVeuillez désinstaller QElectroTech manuellement avant de continuer." +; LangString uninstFailed ${LANG_FRENCH} "La desinstallation de la version precedente a echoue.$\nVeuillez desinstaller QElectroTech manuellement avant de continuer." ;============================================================================== ; SECTIONS @@ -182,76 +188,65 @@ Var final_titleblock_ico SetOverwrite on Section "Main Program" -SectionIn RO ; Read-only – always installed +SectionIn RO ; Read-only - always installed SetOutPath "$INSTDIR\bin\" - File "./files/bin/${SOFT_NAME}.exe" + File /r "./files/bin\*" SetOutPath "$INSTDIR" - File "./files/ChangeLog" - File "./files/CREDIT" - File "./files/ELEMENTS.LICENSE" - File "./files/LICENSE" - File "./files/qet_uninstall_file_associations.reg" - File "./files/README" - File "./files/register_filetypes.bat" + File /nonfatal "./files/ChangeLog" + File /nonfatal "./files/CREDIT" + File /nonfatal "./files/ELEMENTS.LICENSE" + File /nonfatal "./files/LICENSE" + File /nonfatal "./files/qet_uninstall_file_associations.reg" + File /nonfatal "./files/README" + File /nonfatal "./files/register_filetypes.bat" File "Lancer QET.bat" SetOutPath "$INSTDIR" - File /r "./files/ico" + File /nonfatal /r "./files/ico" SectionEnd ;--------------------------- -SetOverwrite on SubSection "$(Elements)" SEC01 - SetOverwrite on Section "$(Electric)" SetOutPath "$INSTDIR\elements" - File /r "./files/elements/10_electric" + File /nonfatal /r "./files/elements/10_electric" SectionEnd - SetOverwrite on Section "$(Logic)" SetOutPath "$INSTDIR\elements" - File /r "./files/elements/20_logic" + File /nonfatal /r "./files/elements/20_logic" SectionEnd - SetOverwrite on Section "$(Hydraulic)" SetOutPath "$INSTDIR\elements" - File /r "./files/elements/30_hydraulic" + File /nonfatal /r "./files/elements/30_hydraulic" SectionEnd - SetOverwrite on Section "$(Pneumatic)" SetOutPath "$INSTDIR\elements" - File /r "./files/elements/50_pneumatic" + File /nonfatal /r "./files/elements/50_pneumatic" SectionEnd ;--------------------------------- SubSection "$(Energy)" - SetOverwrite on Section "$(water)" SetOutPath "$INSTDIR\elements\60_energy" - File /r "./files/elements/60_energy/11_water" - File /r "./files/elements/60_energy/" + File /nonfatal /r "./files/elements/60_energy/11_water" SectionEnd - SetOverwrite on Section "$(Refrigeration)" SetOutPath "$INSTDIR\elements\60_energy" - File /r "./files/elements/60_energy/21_refrigeration" - File /r "./files/elements/60_energy/" + File /nonfatal /r "./files/elements/60_energy/21_refrigeration" SectionEnd - SetOverwrite on Section "$(Solar_thermal)" SetOutPath "$INSTDIR\elements\60_energy" - File /r "./files/elements/60_energy/31_solar_thermal" - File /r "./files/elements/60_energy/" + File /nonfatal /r "./files/elements/60_energy/31_solar_thermal" SectionEnd SubSectionEnd @@ -259,28 +254,24 @@ SubSection "$(Elements)" SEC01 SubSectionEnd ;------------------------------- -SetOverwrite on Section "$(Lang)" SEC02 SetOutPath "$INSTDIR\lang" - File "./files/lang/*.qm" + File /nonfatal "./files/lang/*.qm" SectionEnd -SetOverwrite on Section "$(Titleblocks)" SEC03 SetOutPath "$INSTDIR" - File /r "./files/titleblocks" + File /nonfatal /r "./files/titleblocks" SectionEnd -SetOverwrite on Section "$(Examples)" SEC04 SetOutPath "$INSTDIR" - File /r "./files/examples" + File /nonfatal /r "./files/examples" SectionEnd -SetOverwrite on Section "$(Fonts)" SEC05 SetOutPath "$INSTDIR" - File /r "./files/fonts" + File /nonfatal /r "./files/fonts" SectionEnd ;-------------------------------- @@ -320,7 +311,7 @@ Section "" StrCpy $final_element_ico "$INSTDIR\ico\application-x-qet-element.ico" StrCpy $final_titleblock_ico "$INSTDIR\ico\application-x-qet-titleblock.ico" - ; File associations – .qet + ; File associations - .qet WriteRegStr HKEY_CLASSES_ROOT "Applications\qelectrotech.exe\shell\open\command" "" \ '"$final_qet_exe" "%1"' WriteRegStr HKEY_CLASSES_ROOT ".qet" "" "qet_diagram_file" @@ -330,7 +321,7 @@ Section "" WriteRegStr HKEY_CLASSES_ROOT "qet_diagram_file\DefaultIcon" "" "$final_project_ico" WriteRegStr HKEY_CLASSES_ROOT "qet_diagram_file\shell\open\command" "" '"$final_qet_exe" "%1"' - ; File associations – .elmt + ; File associations - .elmt WriteRegStr HKEY_CLASSES_ROOT ".elmt" "" "qet_element_file" WriteRegStr HKEY_CLASSES_ROOT "qet_element_file" "" "Element QET" WriteRegDWORD HKEY_CLASSES_ROOT "qet_element_file" "EditFlags" 0x00000000 @@ -338,7 +329,7 @@ Section "" WriteRegStr HKEY_CLASSES_ROOT "qet_element_file\DefaultIcon" "" "$final_element_ico" WriteRegStr HKEY_CLASSES_ROOT "qet_element_file\shell\open\command" "" '"$final_qet_exe" "%1"' - ; File associations – .titleblock + ; File associations - .titleblock WriteRegStr HKEY_CLASSES_ROOT ".titleblock" "" "qet_titleblock_file" WriteRegStr HKEY_CLASSES_ROOT "qet_titleblock_file" "" "Titleblock QET" WriteRegDWORD HKEY_CLASSES_ROOT "qet_titleblock_file" "EditFlags" 0x00000000 @@ -379,7 +370,7 @@ Section "" SectionEnd ;-------------------------------- -; Locate callback – sets FILE_ATTRIBUTE_READONLY on each .elmt file +; Locate callback - sets FILE_ATTRIBUTE_READONLY on each .elmt file Function LocateCallback SetFileAttributes $R9 FILE_ATTRIBUTE_READONLY Push $0 @@ -408,7 +399,7 @@ Function .onInit "Software\Microsoft\Windows\CurrentVersion\Uninstall\${SOFT_NAME}" \ "UninstallString" - ; No previous installation found → proceed normally + ; No previous installation found - proceed normally StrCmp $R0 "" done ; Also read the install dir of the previous version @@ -416,11 +407,10 @@ Function .onInit ; Ask user whether to uninstall the existing version MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(installed)" IDOK uninst - Abort ; user clicked Cancel → stop the installer + Abort ; user clicked Cancel - stop the installer uninst: ; Remove surrounding quotes from the UninstallString if present - ; (some installers write: "C:\path\Uninstall.exe" — ExecWait needs clean path) StrCpy $R2 $R0 1 ; first character StrCmp $R2 '"' 0 unquoted ; Strip leading and trailing quote @@ -430,19 +420,15 @@ uninst: StrCpy $R0 $R0 $R3 ; remove trailing " unquoted: - ; Run the uninstaller silently, keeping it in its own directory - ; _?= prevents NSIS from copying the uninstaller to a temp folder, - ; so it can delete itself and the whole $INSTDIR tree. ClearErrors ${If} $R1 != "" - ExecWait '"$R0" /S _?=$R1' ; silent uninstall using saved install dir + ExecWait '"$R0" /S _?=$R1' ${Else} - ExecWait '"$R0" /S' ; fallback if install dir unknown + ExecWait '"$R0" /S' ${EndIf} IfErrors uninstall_failed - ; Verify the old installation is gone before continuing ${If} $R1 != "" IfFileExists "$R1\${SOFT_NAME}.exe" uninstall_failed IfFileExists "$R1\bin\${SOFT_NAME}.exe" uninstall_failed diff --git a/build-aux/windows/nsis_base/Lancer QET.bat b/build-aux/windows/nsis_base/Lancer QET.bat new file mode 100644 index 000000000..3b57f1cd4 --- /dev/null +++ b/build-aux/windows/nsis_base/Lancer QET.bat @@ -0,0 +1,11 @@ +@echo off + +rem Se rend dans le dossier qui convient +set current_dir=%~dp0 +cd /d %current_dir% + +rem lance QElectroTech +rem Sans option --config-dir, la configuration de QElectroTech ainsi que la +rem collection d'elements perso seront dans "%APPDATA%\qet" +set command=bin\qelectrotech.exe -platform windows:fontengine=freetype --common-elements-dir=elements/ --common-tbt-dir=titleblocks/ --lang-dir=lang/ %* +@start %command% diff --git a/build-aux/windows/nsis_base/README.txt b/build-aux/windows/nsis_base/README.txt new file mode 100644 index 000000000..81392213a --- /dev/null +++ b/build-aux/windows/nsis_base/README.txt @@ -0,0 +1,4 @@ +Place all files of "*win32-readytouse.zip" in the "files/" directory +and run "QET.nsi" + +enjoy diff --git a/build-aux/windows/nsis_base/files/CREDIT b/build-aux/windows/nsis_base/files/CREDIT new file mode 100644 index 000000000..f303da2bd --- /dev/null +++ b/build-aux/windows/nsis_base/files/CREDIT @@ -0,0 +1,300 @@ +[ca] +Gràcies a Qt Software per la biblioteca Qt ( http://www.qtsoftware.com/ ), amb llicència GNU/GPL. +Gràcies al projecte KDE ( http://www.kde.org/ ). +Gràcies a Loic per les seves explicacions d'ordre matemàtic. +Gràcies a Remi Collet pels paquets Fedora. +Gràcies a Laurent Trinques pels paquets Debian. +Gràcies a `trem' pels paquets Mandriva. +Gràcies a TuxFamily ( http://tuxfamily.org/ ) per a l'allotjament del projecte. +Gràcies a `Nishiki' pels seus elements i el seu suport suport. +Gràcies a qtcentre.org per la seva classe SingleApplication. +Gràcies a Alfredo Carreto per les seves traduccions i correccions al castellà ( http://electronicosmx.net ) +Gràcies a 'Dr.Slump' et Sivio pour leurs traductions a l'italià +Gràcies a Jose Carlos Martins per les seves traduccions al portuguès +Gràcies a Pavel Fric per les seves traduccions al txec +Gràcies a Pawel Smiech per les seves traduccions al polonès +Gràcies a Yuriy Litkevich per les seves traduccions al rus +Gràcies a Youssef Ouamalkran i Antoni Mirabete per les seves traduccions al català +Gràcies a Gabi Mandoc per les seves traduccions al romanès +Gràcies a Markus Budde i Jonas Stein et Noah Braden per les seves traduccions a l'alemany +Gràcies a Mohamed Souabni per les seves traduccions a l'àrab +Gràcies a Uroš Platiše per les seves traduccions a l'eslovè +Gràcies a Antun Marakovic per les seves traduccions al croat +Gràcies a Nikos Papadopoylos && Yannis Gyftomitros per les seves traduccions al grec +Gràcies a Markos Chandras pels paquets Gentoo +Gràcies a David pels paquets Slackware +Gràcies a Chipsterjulien pels paquets Archlinux AUR +Gràcies a Elbert de NL pels paquets OS/2 +Gràcies a Zloidemon pels paquets (port GCC) +Gràcies a Mrbit per ebuild els paquets Gentoo + +[en] +Thanks to Qt Software for their Qt library ( http://www.qtsoftware.com/ ), licensed under GNU/GPL. +Thanks to the KDE project ( http://www.kde.org/ ). +Thanks to Loic for his mathematics-related explanations. +Thanks to Remi Collet for the Fedora packaging. +Thanks to Laurent Trinques for the Debian packaging. +Thanks to `trem' for the Mandriva packaging. +Thanks to TuxFamily ( http://tuxfamily.org/ ) for hosting the project. +Thanks to `Nishiki' for his elements and his support. +Thanks to qtcentre.org for their SingleApplication class. +Thanks to Alfredo Carreto for his Spanish translations and fixing Spanish translations ( http://electronicosmx.net ) +Thanks to 'Dr.Slump' and Sivio for their translations in Italian +Thanks to Jose Carlos Martins for his translations in Portuguese +Thanks to Pavel Fric for his translations in Czech +Thanks to Pawel Smiech for His Polish translations +Thanks to Yuriy Litkevich for his translations into Russian +Thanks to Youssef Ouamalkran for his translations Catatan +Thanks to Gabi Mandoc for his translations in Romanian +Thanks to Markus Budde and Jonas Stein and Noah Braden for his translations into German +Thanks to Mohamed Souabni for his translations into Arabic +Thanks to Uroš Platiše for his translations into Slovenian +Thanks to Antun Marakovic for his translations Croatian +Thanks to Nikos Papadopoylos && Yannis Gyftomitros their Greek translations +Thanks to Markos Chandras for Gentoo packaging +Thanks to David for packaging Slackware +Thanks to Chipsterjulien for packaging Archlinux AUR packages +Thanks to Elbert from the NL for packaging OS/2 +Thanks to zloidemon from for packaging FreeBsd (port GCC) +Thanks to Mrbit for ebuild Gentoo packaging. + +[fr] +Merci à Qt Software pour la bibliothèque Qt ( http://www.qtsoftware.com/ ), sous licence GNU/GPL. +Merci au projet KDE ( http://www.kde.org/ ). +Merci à Loic pour ses explications d'ordre mathématique. +Merci à Remi Collet pour les paquets Fedora. +Merci à Laurent Trinques pour les paquets Debian. +Merci à `trem' pour les paquets Mandriva. +Merci à TuxFamily ( http://tuxfamily.org/ ) pour l'hébergement du projet. +Merci à `Nishiki' pour ses éléments et son soutien. +Merci à qtcentre.org pour leur classe SingleApplication. +Merci à Alfredo Carreto pour ses traductions et corrections en espagnol ( http://electronicosmx.net ) +Merci à 'Dr.Slump' et Sivio pour leurs traductions en italien +Merci à Jose Carlos Martins pour ses traductions en portugais +Merci à Pavel Fric pour ses traductions en Tchèque +Merci à Pawel Smiech pour ses traductions en polonais +Merci à Yuriy Litkevich pour ses traductions en russe +Merci à Youssef Ouamalkran pour ses traductions en catatan +Merci à Gabi Mandoc pour ses traductions en Roumain +Merci à Markus Budde et Jonas Stein et Noah Braden pour ses traductions en allemand +Merci à Mohamed Souabni pour ses traductions en arabe +Merci à Uroš Platiše pour ses traductions en Slovene +Merci à Antun Marakovic pour ses traductions Croate +Merci à Nikos Papadopoylos && Yannis Gyftomitros pour leurs traductions en grec +Merci à Markos Chandras pour les paquets Gentoo +Merci à David les paquets Slackware +Merci à Chipsterjulien les paquets Archlinux AUR packages +Merci à Elbert from the NL les paquets OS/2 +Merci à Zloidemon from for les paquets (port GCC) +Merci à Mrbit for ebuild les paquets Gentoo + +[ru] +Спасибо Qt Software за их библиотеку Qt ( http://www.qtsoftware.com/ ), лицензированную на условиях GNU/GPL. +Спасибо проекту KDE ( http://www.kde.org/ ). +Спасибо Loic за объяснения связанные с математикой. +Спасибо Remi Collet за пакет для Fedora. +Спасибо Laurent Trinques за пакет для Debian. +Спасибо `trem' за пакет для Mandriva. +Спасибо TuxFamily ( http://tuxfamily.org/ ) за хостинг для проекта. +Спасибо `Nishiki' за элементы и поддержку. +Спасибо qtcentre.org за их класс SingleApplication. +Спасибо Alfredo Carreto за исправления и перевод на испанский ( http://electronicosmx.net ) +Спасибо 'Dr.Slump' за исправления и перевод + +[pt] +Agradecimentos a Qt Software pela sua biblioteca Qt ( http://www.qtsoftware.com/ ), licenciada de acordo com a GNU/GPL. +Agradecimentos ao projecto KDE ( http://www.kde.org/ ). +Agradecimentos a Loic pelas suas explicações relacionadas com problemas matemáticos. +Agradecimentos a Remi Collet pela criação dos pacotes para Fedora. +Agradecimentos a Laurent Trinques pela criação dos pacotes para Debian. +Agradecimentos a "trem" pela criação dos pacotes para Mandriva. +Agradecimentos a TuxFamily ( http://tuxfamily.org/ ) por albergarem este projecto. +Agradecimentos a "Nishiki" pela criação de elementos e o seu suporte. +Agradecimentos a qtcentre.org pela classe SingleApplication. +Agradecimentos a Alfredo Carreto pela tradução para Espanhol e pela correcção de traduções em Espanhol ( http://electronicosmx.net ). +Agradecimentos a 'Dr.Slump'pela tradução para italiano + +[es] +Agradecimientos a Qt Software por su biblioteca Qt ( http://www.qtsoftware.com/ ), licenciada bajo GNU/GPL. +Agradecimientos al proyecto KDE ( http://www.kde.org/ ). +Agradecimientos a Loic por sus explicaciones relacionadas con problemas matemáticos. +Agradecimientos a Remi Collet por criación de paquetes para Fedora. +Agradecimientos a Laurent Trinques por la creación de paquetes para Debian. +Agradecimientos a "trem" por creación de paquetes para Mandriva. +Agradecimientos a TuxFamily ( http://tuxfamily.org/ ) por el alojamiento de este proyecto. +Agradecimientos a "Nishiki" por creación de elementos e de su suporte. +Agradecimientos a qtcentre.org por classe SingleApplication. +Agradecimientos a Alfredo Carreto por sus traducciones en español y correcciones de traducción en español ( http://electronicosmx.net) +Agradecimientos a 'Dr.Slump' por sus traducciones en italiano + +[cs] +Díky Qt Software za jejich knihovnu Qt ( http://www.qtsoftware.com/ ), pod licencí GNU/GPL. +Díky projektu KDE ( http://www.kde.org/ ). +Díky Loicovi za jeho vysvětlení vztahující se k matematice. +Díky Remi Colletovi za balíček pro Fedoru. +Díky Laurentu Trinquesovi za balíček pro Debian. +Díky `trem' za balíček pro Mandrivu. +Díky TuxFamily ( http://tuxfamily.org/ ) za poskytování hostingu pro projekt. +Díky `Nishiki' za jeho prvky a jeho podporu. +Díky qtcentre.org za jejich třídu SingleApplication. +Poděkování Alfredovi Carretovi za jeho španělský překlad a opravy španělského překladu ( http://electronicosmx.net ) +Dìky 'Dr.Slump' za jeho italianský překlad + +[pl] +Podziękowania dla Qt Software, za biblioteki Qt (http://www.qtsoftware.com/) na licencji GNU / GPL. +Podziękowania dla projektu KDE (http://www.kde.org/). +Podziękowania dla Loic, za pomoc w rozwiązaniu problemów matematycznych. +Podziękowania dla Remi Collet, za pakiety dla Fedory. +Podziękowania dla Laurent Trinquesovi, za pakiety dla Debiana. +Podziękowania dla "trem", za pakiety dla Mandrivy. +Podziękowania dla TuxFamily (http://tuxfamily.org/), za organizację projektu. +Podziękowanie dla "Nishiki", zajego elementy i poparcie. +Podziękowania dla qtcentre.org, za klasę SingleApplication. +Podziękowania dla Alfredo Carreto, za jego tłumaczenie na język hiszpański i korektę ( http://electronicosmx.net) + +[it] +Grazie a Qt Software per le loro librerie Qt (http://www.qtsoftware.com/), licenzate sotto GNU/GPL. +Grazie al progetto KDE (http://www.kde.org/). +Grazie a Loic per le sue spiegazioni matematiche. +Grazie a Remi Collet per i pacchetti per Fedora. +Grazie a Laurent Trinques per i pacchetti per Debian. +Grazie a `trem' per i pacchetti per Mandriva. +Grazie a TuxFamily (http://tuxfamily.org/) per l'ospitalità al progetto. +Grazie a `Nishiki' per i suoi elementi ed il supporto. +Grazie a qtcentre.org per la loro classe SingleApplication. +Grazie a Alfredo Carreto per le traduzioni e le correzioni in spagnolo (http://electronicosmx.net). +Grazie a 'Dr.Slump' e 'Silvio' per la traduzione in italiano. +Grazie a Jose Carlos Martins per la traduzione in portoghese. +Grazie a Pavel Fric per la traduzione in ceco. +Grazie a Pawel Smiech per la traduzione in polacco. +Grazie a Yuriy Litkevich per la traduzione in russo . +Grazie a Youssef Ouamalkran per la traduzione in catalano. +Grazie a Gabi Mandoc per la traduzione in rumeno. +Grazie a Markus Budde e Jonas Stein per la traduzione in tedesco. +Grazie a Mohammed Souabni per la traduzione in arabo. +Grazie a Uroš Platiše per la traduzione in sloveno. +Grazie a Antun Marakovic per la traduzione in croato. +Grazie a Nikos Papadopoylos e Yannis Gyftomitros per la traduzione in greco. +Grazie a Markos Chandras per i pacchetti per Gentoo. + +[el] +Ευχαριστίες στην Qt Software για την βιβλιοθήκη Qt ( http://www.qtsoftware.com/ ), αδειοδοτημένο ως GNU/GPL. +Ευχαριστίες στο έργο KDE ( http://www.kde.org/ ). +Ευχαριστίες στον Loic για τις εξηγήσεις σχετικές με μαθηματικά. +Ευχαριστίες στον Remi Collet για τα πακέτα Fedora. +Ευχαριστίες στον Laurent Trinques για τα πακέτα Debian. +Ευχαριστίες στον `trem' για τα πακέτα Mandriva. +Ευχαριστίες στο TuxFamily ( http://tuxfamily.org/ ) για τη φιλοξενία του έργου. +Ευχαριστίες στον `Nishiki' για τα στοιχεία και την υποστήριξη του. +Ευχαριστίες στο qtcentre.org για την κλάση SingleApplication. +Ευχαριστίες στον Alfredo Carreto για τις μεταφράσεις του και για την επισκευή της Ισπανικής μετάφρασης ( http://electronicosmx.net ) +Ευχαριστίες στον 'Dr.Slump' και τον Sivio για τις μεταφράσεις τους στα Ιταλικά +Ευχαριστίες στον Jose Carlos Martins για την μετάφραση στα Πορτογαλικά +Ευχαριστίες στον Pavel Fric Για την μετάφραση στα Τσέχικα +Ευχαριστίες στον Pawel Smiech για την Πολωνική μετάφραση +Ευχαριστίες στον Yuriy Litkevich για τις μεταφράσεις του στα Ρώσικα +Ευχαριστίες στον Youssef Ouamalkran για τις μεταφράσεις του στα Καταλανικά +Ευχαριστίες στον Gabi Mandoc για τις μεταφράσεις του στα Ρουμανικά +Ευχαριστίες στους Markus Budde και Jonas Stein για τις μεταφράσεις τους στα Γερμανικά +Ευχαριστίες στον Mohamed Souabni για τις μεταφράσεις του στα Αραβικά +Ευχαριστίες στον Uroš Platiše για τις μεταφράσεις του στα Σλοβένικα +Ευχαριστίες στον Antun Marakovic για τις μεταφράσεις του στα Κροατικά +Ευχαριστίες στους Νίκο Παπαδόπουλο και Γιάννη Γυφτομήτρο για τις μεταφράσεις τους στα Ελληνικά +Ευχαριστίες στον Markos Chandras για τα πακέτα Gentoo +Ευχαριστίες στον David για τα πακέτα Slackware +Ευχαριστίες στον Chipsterjulien για τα πακέτα Archlinux AUR +Ευχαριστίες στον Elbert για τα πακέτα OS/2 +Ευχαριστίες στον zloidemon για τα πακέτα FreeBsd (port GCC) +Ευχαριστίες στον Mrbit για τα πακέτα ebuild για Gentoo. + +[nl] +Dank aan Qt Software voor hun Qt library ( http://www.qtsoftware.com/ ) , onder de GNU / GPL licentie . +Dank aan het KDE-project ( http://www.kde.org/ ) . +Dank aan Loic voor zijn wiskunde - gerelateerde verklaringen . +Met dank aan Remi Collet voor de Fedora pakket. +Met dank aan Laurent Trinques voor de Debian pakket. +Dank aan ` tremolo ' voor de Mandriva pakket. +Dank aan TuxFamily ( http://tuxfamily.org/ ) voor het hosten van het project . +Dank aan ` Nishiki ' voor zijn elementen en zijn steun . +Dank aan qtcentre.org voor hun SingleApplication klasse . +Dank aan Alfredo Carreto voor zijn Spaanse vertalingen en tot vaststelling Spaanse vertalingen ( http://electronicosmx.net ) +Dank aan ' Dr.Slump ' en Sivio voor hun vertalingen in het Italiaans +Met dank aan Jose Carlos Martins voor zijn vertalingen in het Portugees +Met dank aan Pavel Fric voor zijn vertalingen in het Tsjechisch +Dank aan Pawel miech voor zijn Poolse vertalingen +Dank aan Yuriy Litkevich voor zijn vertalingen in het Russisch +Dank aan Youssef Ouamalkran voor zijn vertalingen Catatan +Met dank aan Gabi Mandoc voor zijn vertalingen in het Roemeens +Dank aan Markus Budde en Jonas Stein en Noah Braden voor zijn vertalingen in het Duits +Met dank aan Mohamed Souabni voor zijn vertalingen in het Arabisch +Dank aan Uro ? Plati ? E voor zijn vertalingen in het Sloveens +Dank aan Antun Marakovic voor zijn vertalingen Kroatisch +Dank aan Nikos Papadopoylos && Yannis Gyftomitros hun Griekse vertalingen +Dank aan Markos Chandras voor Gentoo pakket +Met dank aan David voor het verpakken van Slackware +Dank aan Chipsterjulien voor het verpakken van Archlinux AUR pakketten +Dank aan Elbert uit de NL voor het pakket van OS/2 +Dank aan zloidemon voor het verpakken van FreeBSD ( poort GCC ) +Dank aan Mrbit voor ebuild Gentoo pakket. + +[be] +Dank aan Qt Software bibliotheek voor Qt ( http://www.qtsoftware.com/ ), onder licentie van GNU/GPL. +Dank aan project KDE ( http://www.kde.org/ ). +Dank aan Loic voor zijn uitleg van de mathematische orde. +Dank aan Remi Collet voor de pakketten Fedora. +Dank aan Laurent Trinques voor de pakkette Debian. +Dank aan `trem' voor de pakketten Mandriva. +Dank aan TuxFamily ( http://tuxfamily.org/ ) voor het hosten van het project. +Dank aan `Nishiki' voor zijn elementen en ondersteuning. +Dank aan qtcentre.org voor hun SingleApplication klasse. +Dank aan Alfredo Carreto voor zijn vertalingen en correcties in het Spaans ( http://electronicosmx.net ) +Dank aan 'Dr.Slump' en Sivio hun vertaling in het Italiaans +Dank aan Jose Carlos Martins voor zijn vertalingen in het Portugees +Dank aan Pavel Fric voor zijn vertalingen in het Tsjechisch +Dank aan Pawel Smiech voor zijn vertaling in het Pools +Dank aan Yuriy Litkevich voor zijn vertalingen in het Russisch +Dank aan Youssef Ouamalkran voor zijn vertalingen Catatan +Dank aan Gabi Mandoc voor zijn vertalingen in het Roemeens +Dank aan Markus Budde en Jonas Stein et Noah Braden voor hun vertaling in het Duitse +Dank aan Mohamed Souabni voor zijn vertalingen in het Arabisch +Dank aan Uroš Platiše zijn onze vertalingen Sloveense +Dank aan Antun Marakovic voor zijn vertalingen Kroatisch +Dank aan Nikos Papadopoylos en Yannis Gyftomitros hun vertalingen in het Grieks +Dank aan Markos Chandras voor de pakkette Gentoo +Dank aan David voor de pakkette Slackware +Dank aan Chipsterjulien voor de pakkette Archlinux AUR +Dank aan Elbert voor de pakkette OS/2 +Dank aan Zloidemon fvoor de pakkette (port GCC) +Dank aan Mrbit van ebuild voor de pakkette Gentoo + +[ko] +Qt 라이브러리(Qt Software, http://www.qtsoftware.com/)를 제공해 주신 Qt Software에 감사드립니다. (GNU/GPL 라이선스) +KDE 프로젝트 ( http://www.kde.org/ )에 감사드립니다. +수학적인 설명을 제공해 주신 Loic에게 감사드립니다. +Fedora 패키지를 제공해 주신 Remi Collet에게 감사드립니다. +Debian 패키지를 제공해 주신 Laurent Trinques에게 감사드립니다. +Mandriva 패키지를 제공해 주신 `trem`에게 감사드립니다. +프로젝트 호스팅을 지원해 주신 TuxFamily ( http://tuxfamily.org/ )에 감사드립니다. +요소 제공 및 지원을 해주신 `Nishiki`에게 감사드립니다. +SingleApplication 클래스를 제공해 준 qtcentre.org에 감사드립니다. +스페인어 번역 및 번역 수정에 기여해 주신 Alfredo Carreto ( http://electronicosmx.net )에게 감사드립니다. +이탈리아어 번역에 기여해 주신 'Dr.Slump'와 Silvio에게 감사드립니다. +포르투갈어 번역에 기여해 주신 Jose Carlos Martins에게 감사드립니다. +체코어 번역에 기여해 주신 Pavel Fric에게 감사드립니다. +폴란드어 번역에 기여해 주신 Pawel Smiech에게 감사드립니다. +러시아어 번역에 기여해 주신 Yuriy Litkevich에게 감사드립니다. +카탈로니아어 번역에 기여해 주신 Youssef Ouamalkran에게 감사드립니다. +루마니아어 번역에 기여해 주신 Gabi Mandoc에게 감사드립니다. +독일어 번역에 기여해 주신 Markus Budde, Jonas Stein, Noah Braden에게 감사드립니다. +아랍어 번역에 기여해 주신 Mohamed Souabni에게 감사드립니다. +슬로베니아어 번역에 기여해 주신 Uroš Platiše에게 감사드립니다. +크로아티아어 번역에 기여해 주신 Antun Marakovic에게 감사드립니다. +그리스어 번역에 기여해 주신 Nikos Papadopoylos와 Yannis Gyftomitros에게 감사드립니다. +한국어 번역에 기여해 주신 정광호 님께 감사드립니다. +Gentoo 패키지를 제공해 주신 Markos Chandras에게 감사드립니다. +Slackware 패키지를 제공해 주신 David에게 감사드립니다. +Arch Linux AUR 패키지를 제공해 주신 Chipsterjulien에게 감사드립니다. +OS/2 패키지를 제공해 주신 Elbert에게 감사드립니다. +FreeBSD(GCC 포트) 패키지를 제공해 주신 zloidemon에게 감사드립니다. +Gentoo ebuild 패키지를 제공해 주신 Mrbit에게 감사드립니다. + diff --git a/build-aux/windows/nsis_base/files/ChangeLog b/build-aux/windows/nsis_base/files/ChangeLog new file mode 100644 index 000000000..c8906cc79 --- /dev/null +++ b/build-aux/windows/nsis_base/files/ChangeLog @@ -0,0 +1,249 @@ +====== ChangeLog from 0.4 to 0.5 ====== +In the official collection, there are now 2625 elements, and 418 catégoris for a total of 3043 files. + +* Port to Qt 5 framework +* New QSettings native format for config files. +* In the diagram editor, the grid is not displayed by default outside the diagram, the minimum zoom is blocked. A button allows you to un-validate this operation. +* It is now possible to put the tittle block on the right vertical mode. +* The default tittle block can be defined for the next folios of the project. +* The summary now takes the font set in the QElectroTech.conf +* The floating dock is now operational, variables, actions are taken into account on the fly. +* A transformation tool transforms quickly and finely each primitive by handles. +* Add UUID tag for element XML. +* The database enables faster loading a large number of managing symbols in tables changes pixmaps collections, it no longer compares the modification date of the files but their use UUID attributes to update the cache . +* In terms of basic shapes, the transform tool works directly on vectors, it replaces the reduction tool / enlargement that has just been deleted as unnecessary. +* Improve Undo command by QPropertyUndoCommand class. + + + +====== ChangeLog from 0.3 to 0.4 ====== +In the official collection, there are now 2298 elements, and 376 catégoris for a total of 2674 files. + +* We have removed the flag '-fno-ipa-sra "This settled the compilation problems on Mac OS X and FreeBSD clang. +* The official collection has been redesigned, through the work of Nuri a new structure is in place. +* A menu has been added, allowing you to change the application language. +* we added a summary creation tool. +* Added button "export the nomenclature" transforms data from diagrams to CSV file for spreadsheet. + Arun wrote a detailed manual in English. +* New tools have been added, they can create mechanical connections and draw cabinets, desks, junction boxes, or areas on the schematic (line tool, rectangle, ellipse, polygon type: respect for style dashes). +* An aid in positioning cross, drawing, was added. +* The locked state images and basic forms (basic shapes) is now stored in the project. +* The "control" during the movement of an element, text field disables snapping to the grid, for free positioning. +It is now possible to choose the background folios in white or gray. +* Add supports trackpad gestures (multitouch). +The dates of the cartridges are now using the short system date and date format according to the language detected setting in the OS. +We take advantage of the transition to standard C ++ 11, and a big cleanup in the code was done. +* The undo action or redo the undo stack are now animated graphically. +When the action save, save as, the status bar displays the name and path of the backup job. +Qet is now able to come to load a style sheet (stylesheet) directly from the conf directory. +* A DXF export has been added, the entire project folios can be exported in this format. +* Added reports folio, Cross references. +* Added a variable font size for text of conductors. +* Added new properties to all conductors at the same potential, even through referrals. +* When several conductors have the same value potential equalization, it is not useful to display on all conductors. +* Added button to activates the automatic connection of the conductors of the element when moving it. +* Numbering rules are now available for the entire project. +Qet detects the Windows version and applies the appropriate graphic style, depending on the version of Windows. + + +====== ChangeLog from 0.3 rc to 0.3 ====== +First, the collection of symbols has made a big step forward, with about 1560 new elements. +There are now symbols for pneumatics, hydraulics, process, solar, cold, etc. Considerable effort has been done to organize the collection in a better way. +We hope that the new organisation is clearer for all. We would like to thank all the contributors who send us symbols. + +=====-Element Editor: ===== +Considerable work has be done to replace the manual defining zone of the symbol, aka hotspot.And fix bugs, It is now automatic. You do not have to care about it anymore. +Primary colors have been added for the drawing shapes. +A contextual menu (right click) has been added. So, you can now work more quickly with symbols. It is also more user-friendly. + +====== ChangeLog from v0.3 rc ====== + +=====-Element Editor: ===== +* Replacing checkboxes with lists of colors. +* Removed the manual hotspot, it is now automatic and you do not have to worry. +Officially Collection: a large classification work on the structure was realized. It should be clear to everyone. +The collection is enriched with 1711 items in 286 categories (ie 1997 files) + +=====-Schema Editor:===== +* Added import image, image rotation, image resizing and saving the file in the project. +(Double click on the image called a widget and cursor that reduce or enlarge the selected image.) +NB: Following the "edit image" entry will also be added in the right click menu. +* F5 keyboard shortcut can recharge symbol collections. +Some bugs have been resolved, and the translation status continues to grow. + + +======ChangeLog from v0.3 beta ====== +Two more items for the changelog: +* In the official collection, there are now 1672 elements and 256 categoris for a total of 1928 files. In version 0.3 alpha, there were 1465 elements and 233 categories, while version 0.22 had153 elements and 51 categories. + +*Progress in the translation (see http://qelectrotech.org/wiki/doc/translation/stats for current state) +* Functions (edit element and find in panel) have been moved to the context +Here is the changelog, for version 0.3 beta: +* Functions (edit element and find in panel) have been moved to the context menu, that can be accessed with right click. This is more user friendly. +* Refresh of categories when an element is moved. +* DateNow button added in the "Diagram property" dialog. +* Dotted lines can now been added between conductors. +* Rich text can be added to the diagram text fields. +[screenshot] +* HTML WYSIWYG editor for rich text: bold, italic, underlined, font size from 6 to 72 pixels, font colour, etc. +* You can change between the two modes(Selection mode <-> View mode) with the scroll button. +* Symbol editor: focus on the new value for language, languages sorted in alphabetical order. +* Added a widget that reflects the loading of a big project. +* Automated numbering of conductors according to your rules. See note from Joshua http://qelectrotech.org/wiki/doc/autonum +* Added a dialog to automatically rotate the text if the associated conductor is vertical or horizontal. Parameters are saved in qelectrotech.conf +* Added basic colours on the tools for lines and for the filling of the primitives, and also for the style line and point in the element editor. +* Added several protection to prevent from saving an element if one of its primitive is beyond the hotspot. + + +====== ChangeLog from 0.22 to 0.3a ====== + +===== Application ===== + +Elements collection: QElectroTech now provides 1465 elements within 233 categories (0.22 provided 153 elements within 51 categories). Most elements are related to electricity though some relate to chillers, solar, hydraulic and pneumatic engineering. +A new kind of collections appeared to store title block templates; as for elements, there is a distinction between common (system-wide) templates and custom (user-wide) templates. +Translations: +English, Spanish, French, Portuguese and Czech translations have been maintained. +Russian translations have been removed because they are not maintained anymore. +Polish, German, Italian, Arabic and Croatian translations have been added. +Following translation to Arabic, some work was done to improve Right-To-Left languages support. +Elements names are fully translated to English, French, Czech and Polish. +Main windows: added a “What's this?” action. +QElectroTech now handles *.titleblock files. + +===== Diagram editor ===== + +It is now possible to move and rotate all texts on a diagram : element texts, conductor texts and independent texts. +When moving a text related to an electrical element, this element is highlighted. +Texts related to a conductor cannot be moved too far away from it. +It is now possible to create diagrams with more than 100 rows/columns. +Elements panel: +During a drag and drop operation, the hovered item is now expanded after a short time not moving the mouse. +Items are now expanded/collapsed by a double click. +Common, custom and embedded collections of title block templates are displayed within the elements panel. +Elements previews and names are now cached into a SQLite database stored in the user configuration directory, thus speeding up the elements panel (re)loading +The elements panel now displays the folio index before each diagram title. +UI consistency: renamed “Import element” to “Open an element file”, separated this action from those related to the current selection, and ensured elements-related actions are disabled when selecting a project/diagram/title block template. +Freshly integrated elements are now highlighted in the elements panel – this behaviour can be disabled though. +When clearing the search field, the panel state is restored to its previous state. +Title blocks are now rendered using templates: +For each diagram, users can choose the template to be used in the diagram properties. +They may also drag and drop it from the elements panel to the diagram. +Title block templates are always integrated within the parent project. +Fixed a bug in the print preview dialog. +Added a F2 shortcut for the widget “Edit the color of the given conductor”. +As elements, diagrams now have a “version” attribute for compatibility purposes. +Better handling of file opening for documents saved with newer versions of QElectroTech. +Diagram loading: removed an optimization that could lead to conductors not being loaded when several terminals share the same coordinates. +Users may now enter visualisation mode by pressing Ctrl and Shift. +Printing: when printing diagrams with no title block, use the space left by the title block. +Added a few status and “What's this?” tips. +Got rid of the green icon used for projects, changed a few other icons. + +===== Element editor ===== + +Both static and dynamic texts can now be rotated +Added “dotted” line style +Added white color for texts +Newly added parts are placed above existing ones. + +===== Title block template editor ===== + +A third kind of editor was implemented so users can create their own title block templates: + +It allows users to customize the layout and content of cells that constitute the title block. +Cells can be merged and splitted. +Their width can be fixed, relative to the total width or relative to the remaining widths. +Their height is a simple fixed length. +They contain either a logo (be it in SVG or a usual bitmap format) or some text. +The text value is optionally preceded by a label. +As other texts within QElectroTech, labels and texts can be translated to other languages. +Texts and labels may contain variables (e.g. %company-name); these variables are replaced by real world values once the template is applied to a diagram. +Those real-world values can be set among the diagram properties. + + +====== Changelog 0.11 -> 0.2 ====== +À partir de la version 0.2, QElectroTech est disponible en français, anglais, mais aussi : + * en espagnol, grâce aux traductions de Youssef ; + * en russe, grâce aux traductions de Yuriy ; + * en portugais, grâce aux traductions de José. +L'application utilise désormais le thème d'icônes Oxygen, réalisé par Nuno Pinheiro pour le projet KDE. + +===== Notion de fichier projet ===== +Un fichier .qet peut désormais contenir zéro, un ou plusieurs schémas électriques. Les éléments composant ces schémas sont embarqués dans le fichier projet au moment où ils sont posés sur un schéma. Le panel d'éléments affiche donc désormais : + * les projets ouverts, avec, sous chaque projet : + * les schémas de ce projet, + * la collection embarquée du projet (catégories et éléments utilisés dans les schémas) + * la collection commune fournie par QET, + * et la collection personnelle de l'utilisateur. + +===== Éditeur de schémas ===== + * Il est désormais possible de déplacer et copier les catégories et éléments par simple glisser-déposer (drag'n drop) dans le panel d'éléments. + * La collection embarquée est manipulable au même titre que la collection utilisateur. Les éléments inutilisés dans le projet apparaissent sur fond rouge et un dialogue permet de les purger rapidement. + * Chaque projet embarque également (au niveau de ses propriétés) les paramétrages par défaut pour les nouveaux schémas, cartouches et conducteurs. + * Il est possible de changer l'ordre des schémas dans le projet en déplaçant les onglets qui les représente. Dans le champ "Folio" des cartouches, on peut se référer à la position du schéma courant ou au nombre total de schémas dans le projet en écrivant respectivement %id et %total. + * Lors du chargement d'un fichier .qet, si des éléments ne sont pas trouvés, ils sont remplacés par un élément "fantôme", ce qui évite de perdre certaines informations lors de l'enregistrement du fichier. + * Le rendu avec un zoom réduit a été amélioré. + * Enfin, le logiciel gère l'ouverture en lecture seule d'un fichier projet. + +==== Impression et export ==== + +À partir de la version 0.2, QElectroTech : + * propose d'utiliser une imprimante réelle ou bien de générer un document PDF ou PostScript, et ce sous Windows comme sous X11. + * génère un aperçu avant l'impression d'un projet. Cet aperçu permet de choisir les options d'impression mais également les schémas à imprimer ou non. + +À noter toutefois une limitation pour les impressions PDF/PS sous Windows : le dialogue de mise en page, permettant de spécifier le format du papier ainsi que ses marges, n'est pas disponible. + +Le dialogue "Exporter" (pour générer un fichier image d'un schéma) a également été refait dans l'optique d'un export simultané de tous les schémas du projet. + +===== Éditeur d'éléments ===== + + * Lorsque l'on dessine une ligne dans l'éditeur d'éléments, il est possible de choisir un embout différent pour chaque extrémité, comme par exemple une flèche, un cercle, un carré ou, tout simplement, un bout de ligne normal. + * La forme "Rectangle" a été ajoutée. + * On peut enregistrer un élément en désignant un fichier (= comportement en 0.11) ou bien en choisissant un élément cible dans une liste reprenant l'arborescence du panel d'éléments. + * Si l'on maintient la touche Shift lorsque l'on ajoute une partie (droite, cercle, texte, ...), l'outil en cours est conservé après le dessin. Sinon l'éditeur repasse sur l'outil de sélection. + * La grille a été améliorée : sa densité varie en fonction du zoom ; les points correspondant à ceux de la grille de l'éditeur de schémas sont mis en valeur. + * L'accrochage à la grille (aka "snap to grid", également connu sous le nom de grille magnétique ou encore grille aimantée) a été ajouté. Le dessin s'y accroche désormais avec une précision de 1px. On peut travailler en coordonnées libres en maintenant la touche Ctrl enfoncée durant le dessin. + * Le copier-coller a été implémenté : il est possible de coller : + * avec le bouton du milieu de la souris + * en choisissant une "zone de collage" sur l'élément (Ctrl+Shift+V) + * directement (Ctrl+V) : les parties collées sont placées à côté des parties copiées ; si on recolle les parties, elles sont collées encore un cran à côté, et ce de manière incrémentale. + * Des contrôles sont désormais effectués à l'enregistrement : présence de bornes, respect du cadre, etc. + * Uniformisation des menus par rapport à l'éditeur de schémas + +====== Changelog 0.1 -> 0.11 ====== + +===== Fonctionnalités et interface ===== + + * L'application est désormais capable d'ouvrir un fichier élément passe en paramètre + * L'application se lance désormais une seule fois par utilisateur + * Lors de l'ouverture d'un fichier en dehors de l'application alors que QET est déjà démarré celui-ci essaye de s'afficher ou d'attirer l'attention de l'utilisateur. + * L'application vérifie que ce fichier n'est pas déjà ouvert dans tous les éditeurs de schémas / éléments. + * Ajout de fichiers permettant d'automatiser les associations de fichiers sous Windows (.bat et .reg) et X11 (.desktop et .xml) + * Ajout de menus "Récemment ouverts" pour accéder aux fichiers récents dans les éditeurs de schémas et éléments. + * Ajout d'un splash screen + * La hauteur du schéma est désormais gérée via un système de lignes, dont le nombre et la hauteur sont ajustables. + * Il est également possible d'afficher ou non les en-têtes des lignes et/ou des colonnes. + * Ajout d'une option --lang-dir + * Ajout d'une description dans le dialogue des options d'impression + * Ajout de pages de manuel Unix (`man') en anglais et en français + +===== Corrections de bugs ===== + + * Bug #12 : QET provoquait une erreur de segmentation dès son démarrage dans un environnement sans systray + * Bug #14 : il manquait un / dans le chemin proposé lors de l'impression vers un PDF + * Bug #15 : Mauvais positionnement des champs de texte sur le schéma + * Bug #16 : Mauvaise gestion des modifications du texte d'un conducteur + * La classe DiagramView écrivait sur la sortie d'erreur sans fin de ligne + * L'option --config-dir était mal prise en compte + * Après fermeture d'un schema, le menu Fenêtres n'était pas correctement mis à jour + * Les textes des éléments, des conducteurs, du cartouche ainsi que les textes indépendants utilisent désormais tous la même police. + * Remise à niveau de l'impression suite au passage à Qt 4.4 + +===== Code et détails techniques ===== + + * Corrections pour que QET compile avec gcc-4.3 + * Les classes Conductor et Element héritent désormais de QObject (dépendance sur Qt 4.4) + * Affinage du constructeur de la classe QETApp + * Moins d'avertissements à la compilation (testé avec gcc 4.3) + * Moins d'inclusions non pertinentes + * Nettoyage du trunk : déplacement des sources dans un sous-répertoire diff --git a/build-aux/windows/nsis_base/files/ChangeLog.MD b/build-aux/windows/nsis_base/files/ChangeLog.MD new file mode 100644 index 000000000..9faef60e1 --- /dev/null +++ b/build-aux/windows/nsis_base/files/ChangeLog.MD @@ -0,0 +1,344 @@ +# Changelog + +## [Unreleased](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/HEAD) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.9...HEAD) + +**Closed issues:** + +- error in doxygen action code [\#414](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/414) +- "NoName" is automatically inserted into empty text cells in title block [\#407](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/407) +- Apple silicon download is not working [\#400](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/400) +- Apple silicon download is not working [\#394](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/394) +- Differenciating connector for proper labeling [\#390](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/390) +- Non-perpendicular connections [\#368](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/368) +- using the wrong Application Data folder on Windows [\#325](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/325) +- Unclear which PPA to use [\#321](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/321) +- missing group functionality [\#318](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/318) +- segfault due to calling method of uninitialized object [\#311](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/311) +- Cannot open qelectrotech.app on macOS Sequoia 15.0 [\#307](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/307) +- Dark Mode [\#301](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/301) +- README 404 Not Found URL: qelectrotech.org/download.html needs to be qelectrotech.org/download.php [\#298](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/298) +- Malware warning when trying to install dev version 0.100 [\#290](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/290) +- The page sorting of folio [\#279](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/279) +- Bad file name for translations [\#278](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/278) +- Error using Portuguese Language [\#274](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/274) +- Uninstaller [\#265](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/265) +- New Maintainer [\#263](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/263) +- crash on export project db \(sqlite\) [\#262](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/262) +- https://qelectrotech.org/ is down for several days now ! [\#261](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/261) +- right click on text crashes app [\#260](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/260) +- broken link on github [\#259](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/259) +- Build on Bullseye 11.5 fails [\#254](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/254) +- Question about ARM target in future release [\#238](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/238) +- Component library disappears completely after reset of program [\#87](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/87) +- Can't change language in portable version [\#75](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/75) +- Transformation Matrix for Element Editor [\#56](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/56) + +**Merged pull requests:** + +- Update QCH Help file [\#416](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/416) ([Int-Circuit](https://github.com/Int-Circuit)) +- no random hashes to have more constant order of XML-tags [\#415](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/415) ([plc-user](https://github.com/plc-user)) +- Delete outdated QET docs [\#412](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/412) ([Int-Circuit](https://github.com/Int-Circuit)) +- Fixing translation file list in CMake [\#404](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/404) ([arummler](https://github.com/arummler)) +- Update dependencies to fix compilation errors [\#403](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/403) ([arummler](https://github.com/arummler)) +- Minor corrections to prevent crashes [\#401](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/401) ([Evilscrack](https://github.com/Evilscrack)) +- Correct compositeText alignment on copying [\#399](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/399) ([ChuckNr11](https://github.com/ChuckNr11)) +- Better handling of conductors when moving [\#398](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/398) ([ChuckNr11](https://github.com/ChuckNr11)) +- A few small improvements [\#395](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/395) ([ChuckNr11](https://github.com/ChuckNr11)) +- Added updated automatic doxygen build on push + theme to make it fit with docs page [\#389](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/389) ([Int-Circuit](https://github.com/Int-Circuit)) +- qet\_de updated [\#388](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/388) ([Bisku](https://github.com/Bisku)) +- only calculate grid-point-size, when min != max [\#387](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/387) ([plc-user](https://github.com/plc-user)) +- Mouse hover text for dynamic text items [\#386](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/386) ([elevatormind](https://github.com/elevatormind)) +- improvement: adjust size of grid-dots with zoom-factor [\#384](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/384) ([plc-user](https://github.com/plc-user)) +- adjust zoom-factor to use cosmetic-line and fixed comments [\#383](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/383) ([plc-user](https://github.com/plc-user)) +- element-editor: fix jumping positions when rotate, mirror or flip [\#382](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/382) ([plc-user](https://github.com/plc-user)) +- unify some more code for Qt5 & Qt6 \(and more\) [\#379](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/379) ([plc-user](https://github.com/plc-user)) +- same simplifications as in \#376 "use the same code for Qt5 & Qt6" [\#377](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/377) ([plc-user](https://github.com/plc-user)) +- simplify and use the same code for Qt5 & Qt6 [\#376](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/376) ([plc-user](https://github.com/plc-user)) +- bordertitleblock: use same code for Qt5 & Qt6 for "numbering" rows [\#375](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/375) ([plc-user](https://github.com/plc-user)) +- some minor changes [\#374](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/374) ([plc-user](https://github.com/plc-user)) +- implement setting of point-size of grids [\#372](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/372) ([plc-user](https://github.com/plc-user)) +- some small changes for selective move [\#370](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/370) ([plc-user](https://github.com/plc-user)) +- Added slovak translation to org.qelectrotech.qelectrotech.desktop [\#369](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/369) ([prescott66](https://github.com/prescott66)) +- unify calls to "setRotation" for element-primitives again [\#367](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/367) ([plc-user](https://github.com/plc-user)) +- Added option to only move dynamic texts [\#365](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/365) ([scorpio810](https://github.com/scorpio810)) +- New variables for conductor text formulas [\#364](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/364) ([scorpio810](https://github.com/scorpio810)) +- Fix typo widht to width [\#362](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/362) ([pkess](https://github.com/pkess)) +- element-editor: add mirror and flip for "text" [\#361](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/361) ([plc-user](https://github.com/plc-user)) +- Add Swedish translation [\#360](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/360) ([scorpio810](https://github.com/scorpio810)) +- German text for launcher and debian package code style [\#359](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/359) ([pkess](https://github.com/pkess)) +- some more rotation, mirror and flip [\#358](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/358) ([plc-user](https://github.com/plc-user)) +- BugFix: Flip and Mirror of terminals [\#357](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/357) ([plc-user](https://github.com/plc-user)) +- element-editor: fix rotation and more [\#356](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/356) ([plc-user](https://github.com/plc-user)) +- minor: mostly typos [\#355](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/355) ([plc-user](https://github.com/plc-user)) +- a few translated shortcuts were still there ... fixed! [\#354](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/354) ([plc-user](https://github.com/plc-user)) +- FIX: some shortcuts do not work with language set to local [\#353](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/353) ([plc-user](https://github.com/plc-user)) +- fix movement of element, when origin is outside of graphics [\#352](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/352) ([plc-user](https://github.com/plc-user)) +- FIX copy-and-paste in element-editor: set paste-position to meaningful values [\#351](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/351) ([plc-user](https://github.com/plc-user)) +- some cleaning for element-file [\#350](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/350) ([plc-user](https://github.com/plc-user)) +- fix: properties in project-file [\#348](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/348) ([plc-user](https://github.com/plc-user)) +- translation: update German and English [\#347](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/347) ([plc-user](https://github.com/plc-user)) +- export: set maximum width / height according limitations in QPainter [\#346](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/346) ([plc-user](https://github.com/plc-user)) +- export: set maximum width / height according specifications of export-type [\#345](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/345) ([plc-user](https://github.com/plc-user)) +- some clean-up for element-file and in code [\#344](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/344) ([plc-user](https://github.com/plc-user)) +- minor: typos, comments, whitespace, translation [\#343](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/343) ([plc-user](https://github.com/plc-user)) +- Sort names in element-file by language-code [\#342](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/342) ([plc-user](https://github.com/plc-user)) +- more precise Log-Text for search of "qet\_tb\_generator" [\#341](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/341) ([plc-user](https://github.com/plc-user)) +- machine\_info: add entry for QETApp::configDir\(\) also for win [\#340](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/340) ([plc-user](https://github.com/plc-user)) +- remove dead code \(local variables that were never used\) [\#339](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/339) ([plc-user](https://github.com/plc-user)) +- minor changes [\#338](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/338) ([plc-user](https://github.com/plc-user)) +- Update of qet\_de [\#337](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/337) ([Bisku](https://github.com/Bisku)) +- rewrite code for executing “qet\_tb\_generator” plugin [\#335](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/335) ([plc-user](https://github.com/plc-user)) +- build-aux/snap/snapcraft.yaml: python3.8 -\> 3.10 [\#334](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/334) ([zultron](https://github.com/zultron)) +- corrected a few places where QETApp::documentDir\(\) should also be used [\#333](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/333) ([plc-user](https://github.com/plc-user)) +- add commandline-parameter "--data-dir" [\#332](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/332) ([plc-user](https://github.com/plc-user)) +- machine\_info: fix element-count and make static text a bit shorter [\#331](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/331) ([plc-user](https://github.com/plc-user)) +- formatting / whitespace - unify declarations [\#330](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/330) ([plc-user](https://github.com/plc-user)) +- Set default-location for projects to documents-dir. [\#329](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/329) ([plc-user](https://github.com/plc-user)) +- machine\_info.cpp: add explaining text for directory-list [\#328](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/328) ([plc-user](https://github.com/plc-user)) +- set config- and data-dir to system-specific paths [\#327](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/327) ([plc-user](https://github.com/plc-user)) +- Update qet\_cs.ts [\#326](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/326) ([pafri](https://github.com/pafri)) +- update German translation [\#324](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/324) ([plc-user](https://github.com/plc-user)) +- fix copyright-year [\#323](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/323) ([plc-user](https://github.com/plc-user)) +- PT-BR language update [\#322](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/322) ([gleissonjoaquim3](https://github.com/gleissonjoaquim3)) +- Fix: Only scroll diagram-view, when moved text leaves visible area [\#320](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/320) ([plc-user](https://github.com/plc-user)) +- Change Sorting of ElementInfo ComboBox [\#319](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/319) ([ChuckNr11](https://github.com/ChuckNr11)) +- Revert "ElementEditor elmt\_info\_cb sorting changed" [\#317](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/317) ([scorpio810](https://github.com/scorpio810)) +- Fix typo and some whitespace [\#316](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/316) ([plc-user](https://github.com/plc-user)) +- Fix missing company-titleblocks in properties-dialog [\#315](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/315) ([plc-user](https://github.com/plc-user)) +- ElementEditor elmt\_info\_cb sorting changed [\#314](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/314) ([ChuckNr11](https://github.com/ChuckNr11)) +- fix typos and whitespace [\#313](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/313) ([plc-user](https://github.com/plc-user)) +- Force light mode in collections like projects [\#312](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/312) ([Arusekk](https://github.com/Arusekk)) +- About QET: improvements in usability [\#310](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/310) ([plc-user](https://github.com/plc-user)) +- use MessageBox to inform user about additional info when importing scaled element [\#308](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/308) ([plc-user](https://github.com/plc-user)) +- make text for missing software "dxf2elmt" translatable [\#304](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/304) ([plc-user](https://github.com/plc-user)) +- QET\_ElementScaler: fix error for Qt 5.9 and added mirroring [\#303](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/303) ([plc-user](https://github.com/plc-user)) +- integrate "QET\_ElementScaler" as external software [\#302](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/302) ([plc-user](https://github.com/plc-user)) +- move code into else-clause to avoid possible crashes [\#300](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/300) ([plc-user](https://github.com/plc-user)) +- add terminal-names to connection in qet-file [\#297](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/297) ([plc-user](https://github.com/plc-user)) +- fix: editing SpinBoxes with keyboard lose focus [\#296](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/296) ([plc-user](https://github.com/plc-user)) +- Spanish lang update [\#295](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/295) ([joseyspain](https://github.com/joseyspain)) +- More spanish translations.Josey [\#294](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/294) ([joseyspain](https://github.com/joseyspain)) +- update German and English translations [\#293](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/293) ([plc-user](https://github.com/plc-user)) +- hide SVG background checkbox in print preferences [\#292](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/292) ([plc-user](https://github.com/plc-user)) +- fixed indentations of the remaining \*.cpp/\*.h files [\#291](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/291) ([plc-user](https://github.com/plc-user)) +- correct more indentations / whitespace [\#289](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/289) ([plc-user](https://github.com/plc-user)) +- update German and English translations [\#288](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/288) ([plc-user](https://github.com/plc-user)) +- some minor changes [\#286](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/286) ([plc-user](https://github.com/plc-user)) +- correct comments [\#285](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/285) ([plc-user](https://github.com/plc-user)) +- FIX SegFault: Disable menu-entry for DB-export when no project loaded [\#284](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/284) ([plc-user](https://github.com/plc-user)) +- changed some remaining "pt\_br" to "pt\_BR" [\#282](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/282) ([plc-user](https://github.com/plc-user)) +- add option "transparent background" in SVG-export [\#281](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/281) ([plc-user](https://github.com/plc-user)) +- Fix sizes [\#280](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/280) ([plc-user](https://github.com/plc-user)) +- added folder "company-titleblocks" \(incl. language-files\) [\#277](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/277) ([plc-user](https://github.com/plc-user)) +- update translations: de, en, nl [\#276](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/276) ([plc-user](https://github.com/plc-user)) +- fix: set default "company-element-dir" [\#275](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/275) ([plc-user](https://github.com/plc-user)) +- Fix Cmake build [\#273](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/273) ([De-Backer](https://github.com/De-Backer)) +- added "company-collection" as second user-collection [\#272](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/272) ([plc-user](https://github.com/plc-user)) +- corrected german texts for "line-style" [\#269](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/269) ([plc-user](https://github.com/plc-user)) +- Too many parts [\#268](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/268) ([scorpio810](https://github.com/scorpio810)) +- Merge Terminal strip to master [\#267](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/267) ([scorpio810](https://github.com/scorpio810)) +- Terminal strip [\#266](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/266) ([scorpio810](https://github.com/scorpio810)) +- Added new symbols [\#264](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/264) ([kamikazzyyyy](https://github.com/kamikazzyyyy)) + +## [0.9](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.9) (2023-01-03) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.9-dev-2022/12/30...0.9) + +## [0.9-dev-2022/12/30](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.9-dev-2022/12/30) (2022-12-30) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.9-dev-2022/08/15...0.9-dev-2022/12/30) + +## [0.9-dev-2022/08/15](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.9-dev-2022/08/15) (2022-08-13) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/9-dev-2022/04/22...0.9-dev-2022/08/15) + +**Closed issues:** + +- Polylines always closed on dxf export [\#228](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/228) +- Refreshing after making changes to elements [\#168](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/168) + +## [9-dev-2022/04/22](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/9-dev-2022/04/22) (2022-04-09) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/9-dev-2021/09/09...9-dev-2022/04/22) + +**Closed issues:** + +- File dialog should enforce suffix [\#206](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/206) +- snap: Update stable release to core20 & introduce branch for stable releases [\#201](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/201) +- Can we submit Flatpak to Flathub? [\#143](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/143) + +## [9-dev-2021/09/09](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/9-dev-2021/09/09) (2021-09-08) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/9-dev-2021/06/28...9-dev-2021/09/09) + +## [9-dev-2021/06/28](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/9-dev-2021/06/28) (2021-07-06) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/9-dev-2021/05/09...9-dev-2021/06/28) + +## [9-dev-2021/05/09](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/9-dev-2021/05/09) (2021-05-09) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.9-dev-2021/05...9-dev-2021/05/09) + +## [0.9-dev-2021/05](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.9-dev-2021/05) (2021-04-30) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.8.0...0.9-dev-2021/05) + +**Merged pull requests:** + +- Rewrite how Properties are stored in the Project file [\#144](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/144) ([Murmele](https://github.com/Murmele)) +- Xml properties rebase2 [\#80](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/80) ([Murmele](https://github.com/Murmele)) + +## [0.8.0](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.8.0) (2021-02-21) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.9-dev...0.8.0) + +## [0.9-dev](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.9-dev) (2021-02-21) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.8.rc...0.9-dev) + +**Closed issues:** + +- QET font [\#110](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/110) + +## [0.8.rc](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.8.rc) (2020-12-01) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.8-dev...0.8.rc) + +**Closed issues:** + +- overlapping comparisons always evaluate to true [\#78](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/78) +- New snap break HiDPI [\#41](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/41) + +## [0.8-dev](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.8-dev) (2019-08-06) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.7.0...0.8-dev) + +## [0.7.0](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.7.0) (2019-07-17) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.2a...0.7.0) + +## [0.2a](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.2a) (2019-06-26) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.2b...0.2a) + +## [0.2b](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.2b) (2019-06-26) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.2rc1...0.2b) + +## [0.2rc1](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.2rc1) (2019-06-26) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.2rc2...0.2rc1) + +## [0.2rc2](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.2rc2) (2019-06-26) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.2...0.2rc2) + +## [0.2](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.2) (2019-06-26) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.3a...0.2) + +## [0.3a](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.3a) (2019-06-26) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.11...0.3a) + +## [0.11](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.11) (2019-06-26) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.21...0.11) + +## [0.21](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.21) (2019-06-26) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.22...0.21) + +## [0.22](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.22) (2019-06-26) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.70rc2...0.22) + +## [0.70rc2](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.70rc2) (2019-06-25) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.70rc1...0.70rc2) + +## [0.70rc1](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.70rc1) (2019-04-12) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.61...0.70rc1) + +## [0.61](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.61) (2018-08-23) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.6...0.61) + +## [0.6](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.6) (2018-03-06) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.6rc4...0.6) + +## [0.6rc4](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.6rc4) (2018-01-12) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.6rc3...0.6rc4) + +## [0.6rc3](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.6rc3) (2017-09-20) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.6rc2...0.6rc3) + +## [0.6rc2](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.6rc2) (2017-06-13) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.6rc1...0.6rc2) + +## [0.6rc1](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.6rc1) (2017-04-23) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.5...0.6rc1) + +## [0.5](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.5) (2015-11-27) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.5rc1...0.5) + +## [0.5rc1](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.5rc1) (2015-10-30) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.5b...0.5rc1) + +## [0.5b](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.5b) (2015-10-04) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.4...0.5b) + +## [0.4](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.4) (2015-02-20) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.4rc2...0.4) + +## [0.4rc2](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.4rc2) (2014-12-27) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.4rc1...0.4rc2) + +## [0.4rc1](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.4rc1) (2014-11-10) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.4b...0.4rc1) + +## [0.4b](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.4b) (2014-11-02) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.3...0.4b) + +## [0.3](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.3) (2013-09-28) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.3rc...0.3) + +## [0.3rc](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.3rc) (2013-09-10) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.3b...0.3rc) + +## [0.3b](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.3b) (2013-06-18) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.1...0.3b) + +## [0.1](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.1) (2008-03-08) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.1rc1...0.1) + +## [0.1rc1](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.1rc1) (2008-03-02) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/0.1b...0.1rc1) + +## [0.1b](https://github.com/qelectrotech/qelectrotech-source-mirror/tree/0.1b) (2007-12-23) + +[Full Changelog](https://github.com/qelectrotech/qelectrotech-source-mirror/compare/5cadf173c7b73460b62409c81568fc8999177d52...0.1b) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/build-aux/windows/nsis_base/files/ELEMENTS.LICENSE b/build-aux/windows/nsis_base/files/ELEMENTS.LICENSE new file mode 100644 index 000000000..4ac88b654 --- /dev/null +++ b/build-aux/windows/nsis_base/files/ELEMENTS.LICENSE @@ -0,0 +1,233 @@ +[en] +The elements collection provided along with QElectroTech is provided as is and +without any warranty of fitness for your purpose or working. +The usage, the modification and the integration of the elements into electric +diagrams is allowed without any condition, whatever the final license of the +diagrams is. + +Permission is not granted to use this software or any of the associated files +as sample data for the purposes of building machine learning models. + +If you redistribute all or a part of the QElectroTech collection, with or +without any modification, out of an electric diagram, you must respect the +conditions of the CC-BY license: +This work is licensed under the Creative Commons Attribution 3.0 License. +To view a copy of this license, visit +http://creativecommons.org/licenses/by/3.0/ or send a letter to Creative +Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. + +[fr] +La collection d'éléments fournie avec QElectroTech est fournie telle quelle et +sans la moindre garantie qu'elle convienne à votre utilisation ou qu'elle +fonctionne. +L'utilisation, la modification et l'intégration des éléments dans des schémas +électriques est autorisée sans condition, quelle que soit la licence finale des +schémas. +L'autorisation n'est pas accordée pour utiliser ce logiciel ou l'un des fichiers associés +comme exemples de données aux fins de création de modèles d’apprentissage automatique. + +Si vous redistribuez tout ou partie de la collection QElectroTech, avec ou sans +modification, en dehors d'un schéma électrique, vous devrez respecter les +conditions de la licence CC-BY : +Cette création est mise à disposition selon le Contrat Paternité 3.0 +disponible en ligne http://creativecommons.org/licenses/by/3.0/ ou par +courrier postal à Creative Commons, 171 Second Street, Suite 300, San Francisco, +California 94105, USA. + +[de] +Die mit QElectroTech zur Verfügung gestellte Sammlung von Elementen wird ohne +Gewährleistung der Eignung für einen bestimmten Zweck oder der Funktions- +fähigkeit zur Verfügung gestellt. +Die Verwendung, Modifikation und Integration der Elemente in elektrische +Schaltpläne ist uneingeschränkt erlaubt, unabhängig von der endgültigen Lizenz +der Schaltpläne. +Es ist nicht gestattet, diese Software oder eine der zugehörigen Dateien +als Beispieldaten für die Erstellung von Modellen für maschinelles Lernen +zu verwenden. +Wenn Sie die gesamte QElectroTech-Sammlung oder Teile davon, mit oder ohne +Modifikationen, aus einem Schaltplan weitergeben, müssen Sie die Bedingungen +der CC-BY-Lizenz einhalten. +Dieses Werk steht unter einer Creative Commons Attribution 3.0 Lizenz. +Eine Kopie dieser Lizenz finden Sie unter: +http://creativecommons.org/licenses/by/3.0/ +oder senden Sie einen Brief an: +Creative Commons, 171 Second Street, Suite 300, +San Francisco, Kalifornien, 94105, USA. + +[ru] +Коллекция элементов, поставляемая вместе с QElectroTech, поставляется "как есть" +и без каких-либо гарантий пригодности для той или иной цели или работы. +Использование, изменение и интеграция элементов в электрическую +схему разрешается без каких-либо условий, безотносительно конечной лицензии на +схему. +Если Вы распространяете всю или часть коллекции QElectroTech, с или без +изменений, отдельно от электрической схемы, Вы должны соблюдать условия лицензии +CC-BY: +Эта работа лицензирована на условиях Creative Commons Attribution 3.0 License. +Чтобы увидеть копию этой лицензии, посетите +http://creativecommons.org/licenses/by/3.0/ или отправте письмо в Creative +Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. +(данный перевод, на русский язык, является вольным и выполнен не юристом!) + +[pt] +A colecção de elementos fornecida com o programa QElectroTech é fornecida como é +e sem nenhuma garantia da aptidão para o seu uso e sem garantia de que funciona. +É permitido, sem condição alguma, qualquer que seja a licença final, usar, +editar e incluir estes elementos em esquemas eléctricos. +Se você redistribuir uma parte ou toda a colecção de elementos do programa +QElectroTech, tendo editado ou não os elementos, sem ser num esquema eléctrico, +tem de respeitar as condições da licença CC-BY: +Este trabalho está licenciado de acordo com os termos da licença Creative +Commons Attribution 3.0 License. +Para ver uma cópia da licença visite http://creativecommons.org/licenses/by/3.0/ +ou envie uma carta para o endereço Creative Commons, 171 Second Street, Suite +300, San Francisco, California, 94105, USA. + +[es] +La colección de elementos QElectrotech es distruibida tal cual y sin ninguna +garantía a la conveniencia de su uso y sin garantía de que funciona. +Se permite sin condicion alguna, cualquiera que sea la licencia final, usar, +editar, e incluir estos elementos en esquemas eléctricos. +Si usted redistribuye una parte de la colección o toda la collección de +QElectrotech, con o sin ediciones, fuera de un esquema eléctrico, tiene que +respetar las condiciones de la licencia CC-BY: +Esta obra está bajo una licencia Reconocimiento 3.0 de Creative Commons. +Para ver una copia de esta licencia, visite +http://creativecommons.org/licenses/by/3.0/ o envie una carta a Creative +Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA. + +[ca] +La col·lecció de símbols QElectrotech és distribuïda tal qual i sense cap +garantia d'idoneïtat d'ús ni de funcionament. +Es permet incondicionalment, amb independència de la llicència final, emprar, +editar, i incloure aquests símbols en esquemes elèctrics. +Si vostè redistribueix una part de la col·lecció de QElectrotech o tota ella, +amb condicions o sense, separadament d'un esquema elèctric, haurà de respectar +les condicions de la llicència CC-BY: +Aquesta obra es troba sota una llicència Reconeixement 3.0 de Creative Commons. +Per veure una còpia d'aquesta llicència visiti +http://creativecommons.org/licenses/by/3.0/ o enviï una carta a Creative +Commons, 171 Second Street, Suite 300, San Francisco, California 94105, + +[cs] +Sbírka prvků poskytovaná společně s QElectroTechem je poskytována tak, jak je, +bez záruky nebo vhodnosti pro váš účal nebo práci. +Používání, úpravy a začlenění prvků do nákresů elektrických +obvodů se povoluje bez jakýchkoli podmínek, cokoli je konečná licence nákresu. +Pokud rozdáte celou nebo část ze sbírky QElectroTechu, s nebo bez +jakýchkoli úprav, mimo elektrický nákres, musíte brát ohledy na podmínky +licence CC-BY: +tato práce je licencována pod licencí Creative Commons Attribution 3.0 License. +Kopii této licence si můžete prohlédnout, navštivte +http://creativecommons.org/licenses/by/3.0/ nebo pošlete dopis Creative +Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. + +[pl] +Biblioteka elementów dostarczana wraz z QElectroTech jest w formie "taka jaka jest", +bez żadnych gwarancji przydatności. +Dozwolona jest edycja, modyfikacja i użytkowanie elementów bez żadnych warunków +i bez względu na końcową licencję tworzonych schematów. +W przypadku wykorzystywania całości lub części biblioteki elementów QElectroTech +do innych celów niż tworzenie schematów elektrycznych, należy przestrzegać +warunków licencji CC-BY: +Niniejsza praca jest licencjonowana na zasadach Creative Commons Attribution 3.0 License. +Aby zobaczyć kopię licencji, należy odwiedzić stronę internetową: +http://creativecommons.org/licenses/by/3.0/ lub wysłać list do Creative +Commons, 171 Second Street, Suite 300, San Francisco, Kalifornia 94105, USA. + +[it] +La collezione di elementi che si trova in QElectroTech è fornita così com'è +senza alcuna garanzia di usabilità o funzionamento. +L'uso, la modifica e l'integrazione degli elementi negli schemi elettrici +è permessa senza condizioni, qualunque si ala licenza dello schema finale. +Distribuendo tutto o parte della collezione di QElettroTech, con o senza +modifiche, fuori da uno schema elettrico, bisogna rispettare le condizioni +della licenza CC-BY: +Questo lavoro è licenziato sotto la Licenza Creative Commons 3.0. +Per vedere una copia di questa licenza, visitate il sito +http://creativecommons.org/licenses/by/3.0/ o inviate una lettera a Creative +Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. + +[el] +Η συλλογή στοιχείων που παρέχεται μαζί με το QElectroTech παρέχεται ως έχει και +χωρίς καμία εγγύηση καταλληλότητας για συγκεκριμένο σκοπό ή την εργασία σας. +Η χρήση, η τροποποίηση και η ενσωμάτωση των στοιχείων στα ηλεκτρικά +διαγράμματα επιτρέπεται χωρίς καμία προϋπόθεση, όποια και αν είναι η τελική άδεια +των διαγραμμάτων. +Εάν αναδιανείμετε το σύνολο ή ένα μέρος της συλλογής του QElectroTech, με ή +χωρίς καμία τροποποίηση, έξω από ένα ηλεκτρικό διάγραμμα, θα πρέπει να σεβαστείτε +τους όρους της άδειας CC-BY: +Το έργο αυτό είναι υπό την άδεια Creative Commons Attribution 3.0 License. +Για να δείτε ένα αντίγραφο της άδειας αυτής, επισκεφτείτε το +http://creativecommons.org/licenses/by/3.0/ ή στείλτε μια επιστολή στο Creative +Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. + +[nl] + +De elementen collectie voorzien, samen met QElectroTech wordt geleverd als en +zonder enige garantie van geschiktheid voor uw doel of werk. +Het gebruik, de wijziging en de integratie van de elementen in elektrische +diagrammen wordt toegestaan zonder enige voorwaarden, ongeacht wat de uiteindelijke +vergunning van het diagram is. +Als u alle of een deel van de QElectroTech collectie, met of herdistribueren +zonder enige wijziging, van een elektrisch schema, moet u voldoen aan de +voorwaarden van de CC-BY-licentie: +Dit werk is gelicenseerd onder de Creative Commons Attribution 3.0-licentie. +Om een kopie van deze licentie te bekijken, bezoek +http://creativecommons.org/licenses/by/3.0/ of stuur een brief naar Creative +Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. + +[be] + +De elementen collectie welke samen met QElectroTech wordt geleverd zonder enige garantie +of deze geschikt zijn voor uw doel of de werking. +Het gebruik, wijzigen en integratie van de elementen in uw elektrische +schema's wordt toegestaan zonder enige voorwaarden, ongeacht wat de uiteindelijke +liventie van het schema is. +Als u één of meerdere elementen van de QElectroTech collectie, met of zonder wijzigingen, herdistribuer in een elektrisch schema of zonder schzma , moet u de voorwaarden van de +CC-BY-licentie volgen: +Dit werk is gelicenseerd onder de Creative Commons Attribution 3.0-licentie. +Om een kopie van deze licentie te bekijken, bezoek +http://creativecommons.org/licenses/by/3.0/ of stuur een brief naar Creative +Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. + +[da] +Element samlinger leveret sammen med QElectroTech er tilvejebragt som er og +uden nogen garanti for egnethed til dit formål eller arbejde. +Brug, modifikation og integration af elementer til elektrisk diagrammer er +tilladt uden nogen betingelse uanset den endelige diagram licens. +Omfordeling af hele eller dele af QElectroTech samlingen, med eller +uden ændring af et elektrisk diagram, skal du respektere betingelser for CC-BY-licens: +Dette værk er licenseret under Creative Commons Attribution 3.0 License. +For at se en kopi af denne licens, besøg +http://creativecommons.org/licenses/by/3.0/ or send a letter to Creative +Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. + +[ja] +QElectroTech と一緒に提供される要素コレクションは現状のまま提供され、 +あなたの目的や作業に適合することを保証するものではありません。 +回路図での要素の利用、変更、統合は、回路図の最終的なライセンスに関わらず +無条件で許可されます。 +回路図とは別に QElectroTech コレクションの全部または一部を +変更の有無に関わらず再配布する場合は CC-BY ライセンスを尊重しなければなりません: +この作品は Creative Commons Attribution 3.0 の下でライセンスされます。 +ライセンスのコピーを見るには http://creativecommons.org/licenses/by/3.0/ にアクセスするか、 +「Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.」に +手紙を送ってください。 + +[ko] +QElectroTech와 함께 제공되는 요소 컬렉션은 “있는 그대로(as is)” 제공되며, +특정 목적에 대한 적합성이나 정상 동작에 대한 어떠한 보증도 제공되지 않습니다. +요소의 사용, 수정 및 전기 도면에의 통합은 도면의 최종 라이선스와 관계없이 +아무런 조건 없이 허용됩니다. + +본 소프트웨어 또는 관련 파일을 기계 학습(machine learning) 모델을 구축하기 위한 +샘플 데이터로 사용하는 것은 허용되지 않습니다. + +전기 도면과 분리된 형태로 QElectroTech 요소 컬렉션의 전부 또는 일부를, +수정 여부와 관계없이 재배포하는 경우에는 CC-BY 라이선스 조건을 준수해야 합니다. +본 저작물은 Creative Commons Attribution 3.0 라이선스에 따라 제공됩니다. +라이선스 사본은 다음 주소에서 확인할 수 있습니다. +http://creativecommons.org/licenses/by/3.0/ +또는 다음 주소로 서신을 보내실 수 있습니다. +Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. diff --git a/build-aux/windows/nsis_base/files/LICENSE b/build-aux/windows/nsis_base/files/LICENSE new file mode 100644 index 000000000..c0d0af8d8 --- /dev/null +++ b/build-aux/windows/nsis_base/files/LICENSE @@ -0,0 +1,342 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/build-aux/windows/nsis_base/files/README b/build-aux/windows/nsis_base/files/README new file mode 100644 index 000000000..d35aac646 --- /dev/null +++ b/build-aux/windows/nsis_base/files/README @@ -0,0 +1,60 @@ +[ca] +QElectroTech és una aplicació Qt5 per crear esquemes elèctrics. +QET utilitza el format XML per als seus elements i esquemes i inclou un editor d'esquemes, un editor d'elements i un editor de caixetins. + +[en] +QElectroTech is a Qt5 application to design electric diagrams. +It uses XML files for elements and diagrams, and includes both a diagram editor, a element editor, and an titleblock editor. + +[fr] +QElectroTech est une application Qt5 pour réaliser des schémas électriques. +QET utilise le format XML pour ses éléments et ses schémas et inclut un éditeur de schémas, un éditeur d'élément, ainsi qu'un editeur de cartouche. + +[de] +QElectroTech ist eine Qt5 Software, um Schaltpläne zu erstellen. +QET benutzt das XML Format für seine Bauteile und seine Projekte, und beinhaltet einen Schaltplaneditor, einen Bauteileditor sowie einen Schriftfeldeditor. + + +[ru] +QElectroTech - приложение написанное на Qt5 и предназначенное для разработки электрических схем. +Оно использует XML-файлы для элементов и схем, и включает, как редактор схем, так и редактор элементов. + +[pt] +QElectroTech é uma aplicação baseada em Qt5 para desenhar esquemas eléctricos. +QET utiliza ficheiros XML para os elementos e para os esquemas e inclui um editor de esquemas e um editor de elementos. + +[es] +QElectroTech es una aplicación Qt5 para diseñar esquemas eléctricos. +Utiliza archivos XML para los elementos y esquemas, e incluye un editor de esquemas y un editor de elementos. + +[cs] +QElectroTech je aplikací Qt5 určenou pro návrh nákresů elektrických obvodů. +Pro prvky a nákresy používá soubory XML, a zahrnuje v sobě jak editor nákresů, tak editor prvků. + +[pl] +QElectroTech to aplikacja napisana w Qt5, przeznaczona do tworzenia schematów elektrycznych. +Wykorzystuje XML do zapisywania plików elementów i projektów. Posiada edytor schematów i elementów. + +[it] +QElectroTech è una applicazione fatta in Qt5 per disegnare schemi elettrici. +QET usa il formato XML per i suoi elementi e schemi, includendo anche un editor per gli stessi. + +[el] +Το QElectroTech είναι μια εφαρμογή Qt5 για σχεδίαση ηλεκτρικών διαγραμμάτων. +Χρησιμοποιεί αρχεία XML για στοιχεία και διαγράμματα, και περιλαμβάνει επεξεργαστή διαγραμμάτων καθώς και επεξεργαστή στοιχείων. + +[nl] +QElectroTech is een Qt5 applicatie om elektrische schema's te ontwerpen. +Het maakt gebruik van XML-bestanden voor elementen en diagrammen, en omvat zowel een diagram bewerker, een element bewerker, en een bloksjabloon bewerker. + +[be] +QElectroTech is een Qt5 toepassing voor het maken en beheren van elektrische schema's. +QET gebruikt XML voor de elementen en schema's en omvat een schematische editor, itemeditor, en een titel sjabloon editor. + +[da] +QElectroTech er et Qt5 program til at redigere elektriske diagrammer. +Det bruger XML filer for symboler og diagrammer og inkluderer diagram, symbol og titelblok redigering. + +[ja] +QElectroTech は電気回路図を作成する Qt5 アプリケーションです。 +QET は要素と回路図に XML 形式を利用し、回路図エディタ、要素エディタ、表題欄エディタを含みます。 diff --git a/build-aux/windows/nsis_base/files/README.md b/build-aux/windows/nsis_base/files/README.md new file mode 100644 index 000000000..310f8abf7 --- /dev/null +++ b/build-aux/windows/nsis_base/files/README.md @@ -0,0 +1,229 @@ +![](logo.png) + + +# QElectroTech + +### What it is + +QElectroTech, or QET in short, is a libre and open source desktop application to create diagrams and schematics. +The software is primarily intended to create electrical documentation but it can also be used to draw any kinds of diagrams, such as those made in pneumatics, hydraulics, process industries, electronics... +Generally speaking, QET is a **CAD/CAE editor focusing on schematics drawing features**. + +This means that there are no embedded simulating or calculating functionalities and it is not planned to implement them. + +The main goal of the developers is to provide a libre, easy to use and effective software for **schematics drawing purposes**. + +### Version + +The current stable version is 0.100 and was released on 2026.01.25. +Once it has been officially released, the stable version is always frozen and is no longer developed. + +New functionalities, bug and issue fixings are further made in the development version (currently 0.100.1 or 0.200.0 if based on new Qt6 port), which can also be [downloaded](https://qelectrotech.org/download.php). + +Users who want to test and take benefits from the last software implementations should use the development version. But... use it at your own risk, since things are sometimes broken or only partially implemented until they are done! + +### License + +The software is licensed under [GNU/GPL](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html). +You are free to use, copy, modify and redistribute it under the terms of the license. + +Like many other open source software, QElectroTech is provided as is, without any warranty. + +### Development / technical choices + +The development follows the classical way of free and open source software: the source code, written by a community of users, is freely accessible. +* Get sources and sub-modules +```txt +git clone --recursive https://github.com/qelectrotech/qelectrotech-source-mirror.git +``` + +Here are the technical choices made for the software development: + +* Integrated development environment: [Qt Framework](https://www.qt.io/ide/) +* Libraries: Qt 5.x +* [KF5 Framework](https://github.com/KDE) + [Cmake](https://cmake.org/install/) + [kcoreaddons](https://github.com/KDE/kcoreaddons/tree/kf5) + [kwidgetsaddons](https://github.com/KDE/kwidgetsaddons/tree/kf5). +* Coding language: [C++](https://en.wikipedia.org/wiki/C%2B%2B) +* GUI translations: [Qt Linguist](http://doc.qt.io/qt-5/qtlinguist-index.html) +* Version control: [GIT](https://github.com/qelectrotech/qelectrotech-source-mirror.git) +* Doxygen documentation :[Doxygen](https://qelectrotech.github.io/qelectrotech-source-mirror/) +* QtCreator qch doxygen :[QElectroTech.qch](https://github.com/qelectrotech/qelectrotech-source-mirror/blob/master/doc/QElectroTech.qch) +* File format for projects, elements and titleblocks: [XML](http://www.w3schools.com/xml/xml_whatis.asp) +* Main development platform: [GNU/Linux](http://getgnulinux.org/en/linux/) +* Targeted platforms: Windows, GNU/Linux, Mac OS X, BSDs +* [Forum](https://qelectrotech.org/forum/index.php) +* [Wiki](https://qelectrotech.org/wiki_new/) +* [Mantis_bugtracker](https://qelectrotech.org/bugtracker/my_view_page.php) + +If you wish to be informed of the latest developments, browse the [archive](https://listengine.tuxfamily.org/lists.tuxfamily.org/qet/) of the project mailing list where all commits (changes) are registered. This archive is publicly available, you don't need any account to access it. + + +# Features + +QElectroTech is a free and open source software. +No need to worry about restrictive licensing, privacy violation or dependency on a company. +Zero cost and no licensing fees! +But you are welcome to make a donation to support the development + +QElectroTech runs on the 3 most widespread operating systems for desktop computers in the world. +Files that were created on an OS can be edited on another OS without any conversion or restriction. +MS Windows users can even run the "ready-to-use" version of QElectroTech from an external medium with no need to install it on an access restricted computer. + + +Take advantage of the modern GUI + +Toolbars and panels can be enabled/disabled, moved and displayed the way you want to work. +Panels can be stacked on each other (as tabs) or docked on the sides (as docks) or completely separated from the main window (as windows). +The GUI can fit to small or big screens, and even to multi-display configurations. +![](https://download.qelectrotech.org/qet/images-features/0030.png "GUI overview") + + +The GUI of QElectroTech is translated in 25 languages. +You only need to restart the application for the new selected language to take effect. +![](https://download.qelectrotech.org/qet/images-features/0040.png "Lang menu") + +Create technical documentation in professional quality + +Size, look and informations of the folios (sheets) are fully configurable. +You can set vertical and horizontal headers (printed rulers) individually on and off, set number of columns and rows, and set width/height of each column/row. + +Titlebocks can be created and edited with the embedded titleblock editor to perfectly suit your needs. +Custom variables can be defined to display the informations you wish in the titleblock. +![](https://download.qelectrotech.org/qet/images-features/0055.png "Titleblock editor") + +With only 2 mouse clicks you can add a full automatic generated table of content. +Changes in the documentation are updated on the fly. +![](https://download.qelectrotech.org/qet/images-features/0060.png "Table of content") + +Choose from more than 8.200 symbols... +The embedded QET collection contains a rich library of electric, logic, pneumatic, hydraulic and fluid symbols. +The library grows at every new release thanks to an active user community. +![](https://download.qelectrotech.org/qet/images-features/0070.png "Collections") + +...or create your own collection + +The embedded element editor is a nice tool to create your own elements (symbols or anything else). +Your own elements are stored in the user collection. +![](https://download.qelectrotech.org/qet/images-features/0080.png "Element editor") + +Quickly find what you need + +All collections can quickly be searched with the integrated search engine. +Furthermore, the search request can be restricted to the folder of your choice. +![](https://download.qelectrotech.org/qet/images-features/0090.png "Search engine") + +Easily draw complex schematics + +To add an element on the drawing area, it only needs a drag & drop from the collection panel. +![](https://download.qelectrotech.org/qet/images-features/0102.png "Drag and drop") + +Elements are automatically connected if they are aligned, or connected from point to point by pulling a conductor with the mouse. +![](https://download.qelectrotech.org/qet/images-features/0105.png "Conductor connections") + +The path of every conductor can be modified by moving its handles with the mouse. +![](https://download.qelectrotech.org/qet/images-features/0107.png "Conductor handles") +And of course, you can accurately zoom with the mouse wheel over the drawing area to catch the smallest details. + +Link elements together to create cross references + +Several types of element can be linked together to display a cross reference text. +All types of cross references are automatically updated on the fly, you don't need to think about them if you make changes. +![](https://download.qelectrotech.org/qet/images-features/0112.png "Cross ref elements") +To speed up your work, linkable elements are easily searched and shown. +![](https://download.qelectrotech.org/qet/images-features/0115.png "Cross ref search") + + +Export informations to a parts list +Informations of all elements in the project can be exported to a .csv file that can be read and edited by any spreadsheet application. +![](https://download.qelectrotech.org/qet/images-features/0122.png "Element informations") + +This way, you can make your own parts list or bill of material using the full power of a spreadsheet program. +![](https://download.qelectrotech.org/qet/images-features/0125.png "Spreadsheet") +Print to pdf and/or export your work to images + +Your whole documentation or only selected parts of it can be printed to a real printer or to a pdf file. +Alternatively, you can export to vector (svg) or pixel (png, jpg, bmp) format images. + +### And much more: + +* open and edit several projects at the same time +* import images (.bmp, .jpg, .png, .svg) in your diagrams +* add basic shapes (lines, rectangles, ellipses, polygons) to your drawings +* edit the thickness, the line style and the color of conductors +* define some autonum patterns for conductors, symbols and folios +* take advantage of the open xml standard of elements and projects to create custom tools +* search and replace Widget (Ctrl + F) in entire project +* conductors num can be exported to csv file. +* *** + +Nomenclature + +A new nomenclature tool appears in the menu: project -> Add a nomenclature. +The nomenclature is presented in the form of a configurable table separated into two parts: the display (the form) and the content (the background). +- Display: the size and position of the table, the margins between text and the table cell, the alignment of the text in the cells and the font. The configuration of the table headers and the table itself are separate. +- Content: the information to display in the table and the order in which it should be displayed. + +![](https://download.qelectrotech.org/qet/images_depeche_linuxfr/08/dialogue_nomenclature.png "nomenclature dialogue") + +In order to speed up the establishment of a nomenclature, it is possible to export / import the display and content configurations separately. This is the "Configuration" part that can be seen in the photos above. + +Behind the scenes, an SQLite database does the work, so setting up the content is nothing more or less than an SQL query created using a dialog (screenshot by right). +The SQL query is configured as follows (from top to bottom in the screenshot): +- “Available information”: the information to display; +- "Filter": filter the information (is not empty, is empty, contains, does not contain, is equal to, is not equal to) only one filter can be applied per information, it is not possible combine several; +- "Type of elements": allows you to filter on what type of element you want to obtain information. + +At the bottom, a checkmark "SQL query" allows you to edit a personalized query, if the basic options are not sufficient. + +When a nomenclature is too large to be contained in a single folio, it is possible to separate it on several folios, the tables of each folio are then linked together. When creating a nomenclature, this option is activated by default, which has the effect of adding the necessary number of folios, adding a table in each of them and linking them together. + +Finally two buttons are available in the property panel: +- "Fit the table to the folio": positions and adjusts the size and determines the number of rows in the table in relation to the folio; +- "Apply geometry to all tables linked to this one": applies the three properties mentioned above to all linked tables in order to save time and maintain aesthetic consistency. + +And to finish a table +![](https://download.qelectrotech.org/qet/images_depeche_linuxfr/08/tableau.png "table") + + +Summary + +The old summary has been completely removed from the code in order to make room for the new one which is exactly the same as the nomenclature (a large amount of the code is common), with the exception of the SQL query (and its dialog to configure it) which offers specific information for editing a summary. + +Export of the internal database + +The database used by the nomenclature and the summary can be exported in a “.sqlite” file. +Currently this is irrelevant, as the function was created during development for debugging purposes, we left it. +Note that the database will become increasingly important in the future of Qet. + + +Export of the wiring list + +In order to be able to use the wiring number printers more easily, the names of conductors can be exported in CSV format, the export respects the quantity of conductors in order to print the right quantity of numbers, for example a potential numbered 240 composed of 3 wires will give 6 × 240 (2 numbers per wire × 3 wires) in the CSV. + + + +### Story + +The QElectroTech project was founded in 2007 by two french students, Xavier and Benoit. +Xavier developed the base application itself and made all technical choices about the development. +The first version of QET (0.1) was released on 09.03.2008. +However, both Xavier and Benoit do not participate anymore in the project since 2013. + +Following this period, new developers and contributors took over the project and kept it alive. +The development and the many translations are actively maintained. +New functionalities and evolutions are planned to make QET ever better. + +Nowadays, QET is not only used by many individuals, teachers and students but also by professional electricians and companies all over the world. + + +### Donate Money + +If you love QElectroTech, you can help developers to buy new hardware to test +and implement new features. Thanks in advance for your generous donations. + +For more information, look at [Paypal](https://www.paypal.com/donate/?cmd=_s-xclick&hosted_button_id=ZZHC9D7C3MDPC&ssrt=1694606609672) + + + diff --git a/build-aux/windows/nsis_base/files/ico/application-x-qet-element.ico b/build-aux/windows/nsis_base/files/ico/application-x-qet-element.ico new file mode 100644 index 0000000000000000000000000000000000000000..0e7baf4b57646741b9d5a34fcbe3feaabf1a15be GIT binary patch literal 32606 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 O#DQn$14Qt&_J06L{>Re* literal 0 HcmV?d00001 diff --git a/build-aux/windows/nsis_base/files/ico/application-x-qet-project.ico b/build-aux/windows/nsis_base/files/ico/application-x-qet-project.ico new file mode 100644 index 0000000000000000000000000000000000000000..b7109d7c8b563374d644e33d66a2dc987a05166d GIT binary patch literal 32606 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%0DG!T=@qdn=XIaYv8aELWWZ{bw*E@zJX8P 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 literal 0 HcmV?d00001 diff --git a/build-aux/windows/nsis_base/files/ico/application-x-qet-titleblock.ico b/build-aux/windows/nsis_base/files/ico/application-x-qet-titleblock.ico new file mode 100644 index 0000000000000000000000000000000000000000..f2fd8c2a17a36931cd184b4fa53271055a8cea8c GIT binary patch literal 99678 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 G_WuFnk1}Wg literal 0 HcmV?d00001 diff --git a/build-aux/windows/nsis_base/files/ico/qelectrotech.ico b/build-aux/windows/nsis_base/files/ico/qelectrotech.ico new file mode 100644 index 0000000000000000000000000000000000000000..76020ed60dfb7942cab9c06f86e9d64a44f7fc42 GIT binary patch literal 32606 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

3Cm;C0)(KXp zFgT$Zn#+a`_|P15nBl|2w)~No?w04ez~1RlNSU{7u#-ExPl~v}?f?2e-t+(1;iZu- zh0vSy?&+u+oag4&9BdDz8NTJ>#psK}gEVRBnvLW078VAlfht>3ogyv*-~FKxkKQ$E z%D4?r%vd{P#-THZTo1X1q$~(dw_g=0DPLgWil+Hj_JQ&)VH>U z&17H0y35>mod%#k&~JucMs>IR0^0?J>G`N0yv_^{{<(BepOp{w^NQ@jK4CF5Q2Vfg z!tvo?X>eHERBQzEf9cx-|Hp7(ix35sA-XS7xgPuj1Gl8|1<-z6)XjFb1s(hc|9+kL z@MG_fe&oe&CzE<4DXOcn%J8aHgD`GLoG^j!U*sDeGbbb_u2NK=ataO`KeMemMMS$S zaw^h)zJxxUn(~9BH9~Eqh7aGeb(|8UxIk@?IU_C-=VJN+NscQ(^)**{=D?s>!B-FzHo-nU45nR(yIynn#F?`htL awY1#8@0LAgIau~}=Hnap=8yks_x}Jd)-a6# literal 0 HcmV?d00001 diff --git a/build-aux/windows/nsis_base/files/qet_uninstall_file_associations.reg b/build-aux/windows/nsis_base/files/qet_uninstall_file_associations.reg new file mode 100644 index 000000000..c5d0b0a7f --- /dev/null +++ b/build-aux/windows/nsis_base/files/qet_uninstall_file_associations.reg @@ -0,0 +1,9 @@ +Windows Registry Editor Version 5.00 + +[-HKEY_CLASSES_ROOT\Applications\qelectrotech.exe\shell\open\command] +[-HKEY_CLASSES_ROOT\.qet] +[-HKEY_CLASSES_ROOT\qet_diagram_file] +[-HKEY_CLASSES_ROOT\.elmt] +[-HKEY_CLASSES_ROOT\qet_element_file] +[-HKEY_CLASSES_ROOT\.titleblock] +[-HKEY_CLASSES_ROOT\qet_titleblock_file] diff --git a/build-aux/windows/nsis_base/files/register_filetypes.bat b/build-aux/windows/nsis_base/files/register_filetypes.bat new file mode 100644 index 000000000..29b429367 --- /dev/null +++ b/build-aux/windows/nsis_base/files/register_filetypes.bat @@ -0,0 +1,111 @@ +@echo off +rem Enregistre les associations de fichiers de QElectroTech, a savoir les fichiers .qet + +rem detecte le dossier courant et suppose que celui-ci contient bin\qelectrotech.exe ainsi que windows_icon\diagram_icon\qet-diagram.ico +set current_dir=%~dp0 +cd /d %current_dir% + +set expected_qet_exe=%current_dir%Lancer QET.bat +set expected_project_ico=%current_dir%ico\application-x-qet-project.ico +set expected_element_ico=%current_dir%ico\application-x-qet-element.ico +set expected_titleblock_ico=%current_dir%ico\application-x-qet-titleblock.ico + +rem verifie la presence du fichier qelectrotech.exe +if not exist "%expected_qet_exe%" ( + echo Le fichier %expected_qet_exe% n'a pas ete trouve. Abandon. + pause + exit /b 1 +) + +rem verifie la presence du fichier qet-diagram.ico +if not exist "%expected_project_ico%" ( + echo Le fichier %expected_project_ico% n'a pas ete trouve. Abandon. + pause + exit /b 1 +) + +rem verifie la presence du fichier qet-element.ico +if not exist "%expected_element_ico%" ( + echo Le fichier %expected_element_ico% n'a pas ete trouve. Abandon. + pause + exit /b 1 +) + +rem verifie la presence du fichier qet-titleblock.ico +if not exist "%expected_titleblock_ico%" ( + echo Le fichier %expected_titleblock_ico% n'a pas ete trouve. Abandon. + pause + exit /b 1 +) + +rem echappe les backslashs dans les chemins absolus +set final_qet_exe=%expected_qet_exe:\=\\% +set final_project_ico=%expected_project_ico:\=\\% +set final_element_ico=%expected_element_ico:\=\\% +set final_titleblock_ico=%expected_titleblock_ico:\=\\% + +rem genere le fichier .reg pour enregistrer les associations de fichiers +set reg_file=qet_install_file_associations.reg +( + echo Windows Registry Editor Version 5.00 + echo. + + rem Declaration de l'application + echo [HKEY_CLASSES_ROOT\Applications\qelectrotech.exe\shell\open\command] + echo @="\"%final_qet_exe%\" \"%%1\"" + + rem association de fichier *.qet + echo [HKEY_CLASSES_ROOT\.qet] + echo @="qet_diagram_file" + echo [HKEY_CLASSES_ROOT\qet_diagram_file] + echo @="QET diagram" + echo "EditFlags"=dword:00000000 + echo "BrowserFlags"=dword:00000008 + echo [HKEY_CLASSES_ROOT\qet_diagram_file\DefaultIcon] + echo @="%final_project_ico%,0" + echo [HKEY_CLASSES_ROOT\qet_diagram_file\shell\open\command] + echo @="\"%final_qet_exe%\" \"%%1\"" + + rem association de fichier *.elmt + echo [HKEY_CLASSES_ROOT\.elmt] + echo @="qet_element_file" + echo [HKEY_CLASSES_ROOT\qet_element_file] + echo @="QET element" + echo "EditFlags"=dword:00000000 + echo "BrowserFlags"=dword:00000008 + echo [HKEY_CLASSES_ROOT\qet_element_file\DefaultIcon] + echo @="%final_element_ico%,0" + echo [HKEY_CLASSES_ROOT\qet_element_file\shell\open\command] + echo @="\"%final_qet_exe%\" \"%%1\"" + + rem association de fichier *.titleblock + echo [HKEY_CLASSES_ROOT\.titleblock] + echo @="qet_titleblock_file" + echo [HKEY_CLASSES_ROOT\qet_titleblock_file] + echo @="QET title block template" + echo "EditFlags"=dword:00000000 + echo "BrowserFlags"=dword:00000008 + echo [HKEY_CLASSES_ROOT\qet_titleblock_file\DefaultIcon] + echo @="%final_titleblock_ico%,0" + echo [HKEY_CLASSES_ROOT\qet_titleblock_file\shell\open\command] + echo @="\"%final_qet_exe%\" \"%%1\"" +) > %reg_file% + +rem verifie que le fichier a bien ete ecrit +if not exist %reg_file% ( + echo Impossible de creer le fichier %reg_file%. Abandon. + pause + exit /b 1 +) + +rem Applique le .reg genere +regedit.exe /s %reg_file% +if errorlevel 1 ( + echo La prise en compte du fichier %reg_file% a echoue. + pause + exit /b 1 +) else ( + echo Les associations de fichier ont bien ete crees. + pause + exit /b 0 +) diff --git a/build-aux/windows/nsis_base/images/header.bmp b/build-aux/windows/nsis_base/images/header.bmp new file mode 100644 index 0000000000000000000000000000000000000000..698e4c8fa03a3fe8521af7c564d272e851454811 GIT binary patch literal 25818 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 literal 0 HcmV?d00001 diff --git a/build-aux/windows/nsis_base/images/wizard2.bmp b/build-aux/windows/nsis_base/images/wizard2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5ff634c5ac71e0158d2b50f8a75ca56d37f4c58a GIT binary patch literal 154542 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 bfCMBU0SQPz0uqpb1SB8<2}nQ!oe2B@F~{8; literal 0 HcmV?d00001 diff --git a/build-aux/windows/patch_nsi.py b/build-aux/windows/patch_nsi.py new file mode 100644 index 000000000..4ad5c8d5c --- /dev/null +++ b/build-aux/windows/patch_nsi.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 +""" +Patch QET64.nsi for GitHub Actions Windows build. + +Usage: + python3 patch_nsi.py + +Arguments: + nsi_path : path to QET64.nsi (modified in place) + version : full version string e.g. 0.100.1-r8819-abc1234_x86_64-win64 + files_win_path: absolute Windows path to nsis_root/files/ + e.g. D:\\a\\repo\\nsis_root\\files +""" + +import sys +import re + + +def fix_mixed_paths(nsi, files_win): + """ + After injecting the absolute path, some sub-paths may still contain + forward slashes (e.g. files\\elements/10_electric). + Normalize all slashes inside quoted strings that contain our absolute path. + """ + marker = files_win.lower() + + def fix_quoted(m): + content = m.group(1) + if marker in content.lower(): + content = content.replace('/', '\\') + return '"' + content + '"' + + return re.sub(r'"([^"\r\n]*)"', fix_quoted, nsi) + + +def main(): + if len(sys.argv) != 4: + print(f"Usage: {sys.argv[0]} ") + sys.exit(1) + + nsi_path = sys.argv[1] + version = sys.argv[2] + files_win = sys.argv[3].rstrip('\\/') + + print(f"Patching : {nsi_path}") + print(f"Version : {version}") + print(f"Files dir: {files_win}") + + with open(nsi_path, encoding='utf-8', errors='replace') as f: + nsi = f.read() + + # 1. Patch SOFT_VERSION + nsi = re.sub( + r'!define SOFT_VERSION\s+.*', + f'!define SOFT_VERSION "{version}"', + nsi + ) + print(" [1] SOFT_VERSION patched") + + # 2. Rename QElectroTech.exe -> qelectrotech.exe (literal value, not NSIS var) + nsi = nsi.replace('/bin/QElectroTech.exe', '/bin/qelectrotech.exe') + print(" [2] Exe name patched") + + # 3. Replace relative ./files/ paths with absolute Windows path + backslash + sep = '\\' + abs_files = files_win + sep + nsi = nsi.replace('./files/', abs_files) + nsi = nsi.replace('.\\files\\', abs_files) + nsi = nsi.replace('.\\\\files\\\\', abs_files) + print(f" [3] Paths ./files/ -> {abs_files}") + + # 4. Normalize mixed slashes in injected absolute paths + # e.g. D:\path\files\elements/10_electric -> D:\path\files\elements\10_electric + nsi = fix_mixed_paths(nsi, files_win) + print(" [4] Mixed slashes normalized in absolute paths") + + with open(nsi_path, 'w', encoding='utf-8') as f: + f.write(nsi) + + # Verifications + version_found = re.search(r'!define SOFT_VERSION\s+"([^"]+)"', nsi) + if version_found: + print(f" OK SOFT_VERSION = {version_found.group(1)}") + else: + print(" ERROR: SOFT_VERSION not found after patch") + sys.exit(1) + + count = nsi.count(abs_files) + print(f" OK {count} occurrences of '{abs_files}'") + + mixed = re.findall(r'[A-Z]:[^"\s\r\n]*files[^"\s\r\n]*/[^"\s\r\n]*', nsi) + if mixed: + print(f" WARNING: {len(mixed)} mixed paths remaining:") + for m in mixed[:5]: + print(f" {m}") + else: + print(" OK no mixed paths remaining") + + +if __name__ == '__main__': + main() From b8ed1713a7c5a72355a6c4b2edd9a24872fd7111 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sun, 10 May 2026 12:18:40 +0200 Subject: [PATCH 04/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 274 ++++++++++++++++++++++++---- 1 file changed, 237 insertions(+), 37 deletions(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 67d35986f..8b15c53c4 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -72,7 +72,6 @@ jobs: echo "WARNING: Welcome.nsh not found, skipping font patch" else echo "Patching: $WELCOME_NSH" - # Target only the WelcomePage title CreateFont line and force size to 10 sed -i '/WelcomePage\.Title\.Font/s/"[0-9]\+" "700"/"10" "700"/' "$WELCOME_NSH" grep 'WelcomePage.Title.Font' "$WELCOME_NSH" echo " OK font size patched to 10" @@ -103,7 +102,6 @@ jobs: set -euo pipefail cd "$GITHUB_WORKSPACE" mkdir build && cd build - # Detect the number of available CPUs NPROC=$(nproc) echo "Available CPUs: $NPROC" @@ -163,9 +161,8 @@ jobs: --no-compiler-runtime \ ./QElectroTech.exe || true - # 3-pass ldd scan to capture all transitive DLLs echo "=== 3-pass transitive DLL scan ===" - set +e # ldd may return non-zero exit codes on some files + set +e for PASS in 1 2 3; do echo "-- Pass $PASS --" for bin_file in "$BIN"/*.dll "$BIN"/*.exe "$BIN"/sqldrivers/*.dll "$BIN"/platforms/*.dll "$BIN"/imageformats/*.dll; do @@ -182,21 +179,17 @@ jobs: done < <(ldd "$bin_file" 2>/dev/null | grep -i '/ucrt64/bin/') done done - set -e # re-enable + set -e - DLL_SCAN=$(ls -1 "$BIN/"*.dll 2>/dev/null | wc -l) - echo "=== $DLL_SCAN DLLs present after scan ===" - ls -lh "$BIN/QElectroTech.exe" || { echo "ERROR: exe missing from bin/"; exit 1; } DLL_COUNT=$(find "$BIN" -name "*.dll" | wc -l) - echo "DLLs present: $DLL_COUNT" + echo "=== $DLL_COUNT DLLs present after scan ===" + ls -lh "$BIN/QElectroTech.exe" || { echo "ERROR: exe missing from bin/"; exit 1; } [ "$DLL_COUNT" -gt 5 ] || { echo "ERROR: too few DLLs"; exit 1; } cd "$GITHUB_WORKSPACE" cp /ucrt64/bin/libgcc_s_seh-1.dll "$BIN/" cp /ucrt64/bin/libstdc++-6.dll "$BIN/" cp /ucrt64/bin/libwinpthread-1.dll "$BIN/" - # SQLite3 — explicit copy because ldd may not detect it - # (statically linked via Qt or via a different path) SQLITE=$(find /ucrt64/bin -name "libsqlite3*.dll" | head -1) if [ -n "$SQLITE" ]; then cp "$SQLITE" "$BIN/" @@ -205,38 +198,29 @@ jobs: echo "WARNING: libsqlite3 not found in /ucrt64/bin/" fi - # Seed nsis_root/ from the versioned base tree in the repository. - # nsis_base/ contains: images/ and files/ static assets (ico, reg, bat, licenses...). - # and files/ with pre-built static assets (reg, bat, ico, README, licenses...). - # Copy NSIS scripts from build-aux/windows/ then merge the static base tree. - # Copy NSIS scripts and support files from build-aux/windows/ cp "$GITHUB_WORKSPACE/build-aux/windows/QET64.nsi" "$NSIS_ROOT/" cp "$GITHUB_WORKSPACE/build-aux/windows/lang_extra.nsh" "$NSIS_ROOT/" cp "$GITHUB_WORKSPACE/build-aux/windows/lang_extra_fr.nsh" "$NSIS_ROOT/" cp "$GITHUB_WORKSPACE/build-aux/windows/lang_extra_missing.nsh" "$NSIS_ROOT/" - # Copy static base assets (ico, reg, bat, images, Lancer QET.bat, ...) cp -r "$GITHUB_WORKSPACE/build-aux/windows/nsis_base/." "$NSIS_ROOT/" - # Layer build-time assets on top of the static base - # Download Lancer QET.bat from misc/ into files/ (portable version) - curl -fsSL "https://raw.githubusercontent.com/qelectrotech/qelectrotech-source-mirror/refs/heads/master/misc/Lancer%20QET.bat" -o "$FILES/Lancer QET.bat" + curl -fsSL \ + "https://raw.githubusercontent.com/qelectrotech/qelectrotech-source-mirror/refs/heads/master/misc/Lancer%20QET.bat" \ + -o "$FILES/Lancer QET.bat" cp -r "$GITHUB_WORKSPACE/elements" "$FILES/elements" || true cp -r "$GITHUB_WORKSPACE/titleblocks" "$FILES/titleblocks" || true cp -r "$GITHUB_WORKSPACE/examples" "$FILES/examples" || true cp -r "$GITHUB_WORKSPACE/fonts" "$FILES/fonts" || true - # Language files: start from repo lang/, then overlay .qm files built by CMake cp -r "$GITHUB_WORKSPACE/lang" "$FILES/lang" || true find "$GITHUB_WORKSPACE/build" -name "*.qm" -exec cp {} "$FILES/lang/" \; 2>/dev/null || true echo "=== .qm files in files/lang/ ===" ls "$FILES/lang/"*.qm 2>/dev/null | wc -l || echo "0 .qm files" - # Top-level doc files from the repository (override nsis_base stubs if present) for f in LICENSE ChangeLog CREDIT README ELEMENTS.LICENSE; do cp "$GITHUB_WORKSPACE/$f" "$FILES/$f" 2>/dev/null || true done - # --- Verification: list present or missing files in files/ --- echo "=== Verification of key files in files/ ===" for f in LICENSE ChangeLog CREDIT README ELEMENTS.LICENSE \ qet_uninstall_file_associations.reg register_filetypes.bat "Lancer QET.bat"; do @@ -256,14 +240,11 @@ jobs: run: | set -euo pipefail - # Short commit hash (same as the official packaging script) GITCOMMIT=$(git -C "$GITHUB_WORKSPACE" rev-parse --short HEAD) - # Cumulative revision number (trunk style) + project offset 473 A=$(git -C "$GITHUB_WORKSPACE" rev-list HEAD --count) HEAD=$(( A + 473 )) - # Version read from qetversion.cpp — same logic as the official script VERSION=$(grep 'return QVersionNumber{' "$GITHUB_WORKSPACE/sources/qetversion.cpp" \ | head -1 \ | awk -F '{' '{ print $2 }' \ @@ -272,10 +253,10 @@ jobs: [ -z "$VERSION" ] && VERSION="dev" FULL_VERSION="${VERSION}-r${HEAD}-${GITCOMMIT}_x86_64-win64" - echo "version=$FULL_VERSION" >> "$GITHUB_OUTPUT" - echo "base_version=$VERSION" >> "$GITHUB_OUTPUT" - echo "gitcommit=$GITCOMMIT" >> "$GITHUB_OUTPUT" - echo "head=$HEAD" >> "$GITHUB_OUTPUT" + echo "version=$FULL_VERSION" >> "$GITHUB_OUTPUT" + echo "base_version=$VERSION" >> "$GITHUB_OUTPUT" + echo "gitcommit=$GITCOMMIT" >> "$GITHUB_OUTPUT" + echo "head=$HEAD" >> "$GITHUB_OUTPUT" echo "VERSION : $VERSION" echo "GITCOMMIT : $GITCOMMIT" echo "HEAD (rev) : $HEAD" @@ -298,7 +279,6 @@ jobs: echo "=== Contents of nsis_root/files/ ===" ls "$GITHUB_WORKSPACE/nsis_root/files/" - - name: Build NSIS installer shell: msys2 {0} run: | @@ -306,26 +286,20 @@ jobs: NSIS_ROOT="$GITHUB_WORKSPACE/nsis_root" cd "$NSIS_ROOT" echo "=== CWD : $(pwd) ===" - - # MSYS2_ARG_CONV_EXCL prevents MSYS2 from converting /V4 to a POSIX path MSYS2_ARG_CONV_EXCL="*" makensis /V4 QET64.nsi RC=$? echo "=== Contents of nsis_root after makensis ===" ls "$NSIS_ROOT/" [ $RC -eq 0 ] || { echo "ERROR: makensis failed (exit $RC)"; exit 1; } - - name: Move installer to dist/ shell: msys2 {0} run: | set -euo pipefail mkdir -p "$GITHUB_WORKSPACE/dist" - - # Case-insensitive search to avoid glob issues INSTALLER=$(find "$GITHUB_WORKSPACE/nsis_root" -maxdepth 1 -iname "installer_*.exe" | head -1) if [ -z "$INSTALLER" ]; then echo "ERROR: no installer .exe found in nsis_root/" - echo "=== Contents of nsis_root/ ===" ls "$GITHUB_WORKSPACE/nsis_root/" exit 1 fi @@ -355,3 +329,229 @@ jobs: name: qelectrotech-windows-installer path: dist/Installer_*.exe retention-days: 14 + + # --------------------------------------------------------------------------- + # Job 2 : Publie une release nightly + page GitHub Pages + # Ne tourne que sur push master (pas sur les PRs) + # --------------------------------------------------------------------------- + deploy-pages: + needs: build-windows + runs-on: ubuntu-latest + if: github.event_name != 'pull_request' + permissions: + contents: write + + steps: + - name: Checkout gh-pages branch + uses: actions/checkout@v4 + with: + ref: gh-pages + path: gh-pages + + - name: Download installer artifact + uses: actions/download-artifact@v4 + with: + name: qelectrotech-windows-installer + path: downloaded/installer/ + + - name: Update nightly release + uses: softprops/action-gh-release@v2 + with: + tag_name: nightly + name: "Nightly Build – Windows" + body: | + 🔧 **Automated nightly build** — may be unstable. + + | | | + |---|---| + | **Commit** | ${{ github.sha }} | + | **Run** | https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | + | **Date** | ${{ github.event.head_commit.timestamp }} | + + > ⚠️ This release is overwritten on every push to `master`. + > For stable releases, see the [Releases page](https://github.com/${{ github.repository }}/releases). + prerelease: true + make_latest: false + files: downloaded/installer/*.exe + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Generate download page (index.html) + run: | + DATE=$(date -u '+%Y-%m-%d %H:%M UTC') + SHORT="${{ github.sha }}" + SHORT="${SHORT:0:7}" + REPO="${{ github.repository }}" + RUN_URL="https://github.com/$REPO/actions/runs/${{ github.run_id }}" + EXE_NAME=$(ls downloaded/installer/*.exe | xargs -I{} basename {}) + INSTALLER_URL="https://github.com/$REPO/releases/download/nightly/$EXE_NAME" + + mkdir -p gh-pages + cat > gh-pages/index.html << HTMLEOF + + + + + + QElectroTech – Nightly Builds + + + +

+

⚡ QElectroTech

+

Nightly Windows Builds

+
+ +
+
+

Build info

+
+
+ ⚠️ These builds are generated automatically on every commit to master + and may be unstable or incomplete. + For production use, download a + stable release. +
+
+ + +
+ + + + + HTMLEOF + + - name: Commit and push to gh-pages + run: | + cd gh-pages + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add index.html + git diff --staged --quiet \ + || git commit -m "nightly: build #${{ github.run_number }} (${{ github.sha }})" + git push origin gh-pages From 7e2c2cccf8298002c1190b55c6acbbd1406cdc18 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sun, 10 May 2026 12:42:30 +0200 Subject: [PATCH 05/82] Update windows-build.yml Add Ready_to_use packages --- .github/workflows/windows-build.yml | 35 +++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 8b15c53c4..c0976e89d 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -316,11 +316,24 @@ jobs: nsis_root/files/bin/ if-no-files-found: warn + - name: Zip portable (readytouse) + shell: msys2 {0} + run: | + set -euo pipefail + VERSION="${{ steps.qet_version.outputs.base_version }}" + HEAD="${{ steps.qet_version.outputs.head }}" + ZIP_NAME="qelectrotech-${VERSION}+git${HEAD}-x86-win64-readytouse.zip" + cd "$GITHUB_WORKSPACE/nsis_root/files" + zip -r "$GITHUB_WORKSPACE/dist/$ZIP_NAME" . + echo "ZIP created: $ZIP_NAME ($(du -sh "$GITHUB_WORKSPACE/dist/$ZIP_NAME" | cut -f1))" + echo "zip_name=$ZIP_NAME" >> "$GITHUB_OUTPUT" + id: zip_portable + - name: Upload portable (files/ without installer) uses: actions/upload-artifact@v4 with: name: qelectrotech-${{ steps.qet_version.outputs.base_version }}+git${{ steps.qet_version.outputs.head }}-x86-win64-readytouse - path: nsis_root/files/ + path: dist/${{ steps.zip_portable.outputs.zip_name }} retention-days: 14 - name: Upload NSIS installer @@ -354,6 +367,13 @@ jobs: name: qelectrotech-windows-installer path: downloaded/installer/ + - name: Download portable artifact + uses: actions/download-artifact@v4 + with: + pattern: qelectrotech-*-readytouse + path: downloaded/portable/ + merge-multiple: true + - name: Update nightly release uses: softprops/action-gh-release@v2 with: @@ -372,7 +392,9 @@ jobs: > For stable releases, see the [Releases page](https://github.com/${{ github.repository }}/releases). prerelease: true make_latest: false - files: downloaded/installer/*.exe + files: | + downloaded/installer/*.exe + downloaded/portable/*.zip token: ${{ secrets.GITHUB_TOKEN }} - name: Generate download page (index.html) @@ -384,6 +406,8 @@ jobs: RUN_URL="https://github.com/$REPO/actions/runs/${{ github.run_id }}" EXE_NAME=$(ls downloaded/installer/*.exe | xargs -I{} basename {}) INSTALLER_URL="https://github.com/$REPO/releases/download/nightly/$EXE_NAME" + ZIP_NAME=$(ls downloaded/portable/*.zip | xargs -I{} basename {}) + PORTABLE_URL="https://github.com/$REPO/releases/download/nightly/$ZIP_NAME" mkdir -p gh-pages cat > gh-pages/index.html << HTMLEOF @@ -526,6 +550,13 @@ jobs: .exe — recommended, includes all dependencies + + 📦 + + Windows Portable + .zip — no installation required, extract and run + + 📦 From f67df92f0e2ff4d71cd12c213786ebc37c633639 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sun, 10 May 2026 13:04:31 +0200 Subject: [PATCH 06/82] Update windows-build.yml Use 7-Zip is already installed on all GitHub Windows computers (C:\Program Files\7-Zip\7z.exe), and it is much faster than Compress-Archive when dealing with 9,931 files. --- .github/workflows/windows-build.yml | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index c0976e89d..6300730d4 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -317,17 +317,23 @@ jobs: if-no-files-found: warn - name: Zip portable (readytouse) - shell: msys2 {0} - run: | - set -euo pipefail - VERSION="${{ steps.qet_version.outputs.base_version }}" - HEAD="${{ steps.qet_version.outputs.head }}" - ZIP_NAME="qelectrotech-${VERSION}+git${HEAD}-x86-win64-readytouse.zip" - cd "$GITHUB_WORKSPACE/nsis_root/files" - zip -r "$GITHUB_WORKSPACE/dist/$ZIP_NAME" . - echo "ZIP created: $ZIP_NAME ($(du -sh "$GITHUB_WORKSPACE/dist/$ZIP_NAME" | cut -f1))" - echo "zip_name=$ZIP_NAME" >> "$GITHUB_OUTPUT" id: zip_portable + shell: pwsh + run: | + $version = "${{ steps.qet_version.outputs.base_version }}" + $head = "${{ steps.qet_version.outputs.head }}" + $zipName = "qelectrotech-${version}+git${head}-x86-win64-readytouse.zip" + $src = "$env:GITHUB_WORKSPACE\nsis_root\files" + $dst = "$env:GITHUB_WORKSPACE\dist\$zipName" + $7z = "C:\Program Files\7-Zip\7z.exe" + + New-Item -ItemType Directory -Force -Path "$env:GITHUB_WORKSPACE\dist" | Out-Null + & $7z a -tzip -mx=5 -mmt=on $dst "$src\*" + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } + + $sizeMB = [math]::Round((Get-Item $dst).Length / 1MB, 1) + Write-Output "ZIP created: $zipName ($sizeMB MB)" + "zip_name=$zipName" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append - name: Upload portable (files/ without installer) uses: actions/upload-artifact@v4 From 4fab90d5b9ae3315d1d023353fe5cbfd9421e67f Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sun, 10 May 2026 21:27:10 +0200 Subject: [PATCH 07/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 6300730d4..a159c6139 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -560,7 +560,7 @@ jobs: 📦 Windows Portable - .zip — no installation required, extract and run + .zip — no installation required, extract and run the file "Lancer QET.bat" From 663336a7bc852358f0e201c6adf96325e2aa0958 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Mon, 11 May 2026 15:00:59 +0200 Subject: [PATCH 08/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index a159c6139..9d1555f0d 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -394,7 +394,7 @@ jobs: | **Run** | https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} | | **Date** | ${{ github.event.head_commit.timestamp }} | - > ⚠️ This release is overwritten on every push to `master`. + > ⚠️ This is a development version; it introduces new features you want, but may cause bugs that have not yet been identified yet. > For stable releases, see the [Releases page](https://github.com/${{ github.repository }}/releases). prerelease: true make_latest: false From 0f8d835a1bc6741dce228fcec36e4b9927ab77cd Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 14:22:35 +0200 Subject: [PATCH 09/82] git submodule update --remote elements --- elements | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elements b/elements index 73c0dfb4b..d4b76b45c 160000 --- a/elements +++ b/elements @@ -1 +1 @@ -Subproject commit 73c0dfb4bfe2f1ca7171bb13a0a4e0f8c1cc762f +Subproject commit d4b76b45c2701809f0cb04a983e4e6acdaf8ed9d From 9a9a5446cf5d81a4910382e96f44745622fc56b4 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 14:53:03 +0200 Subject: [PATCH 10/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 9d1555f0d..0452502f1 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -539,8 +539,8 @@ jobs: nightly From 308f2ea8381f1c9950ca6d683d88d17de521903c Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 15:01:21 +0200 Subject: [PATCH 11/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 0452502f1..0cee8a448 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -540,7 +540,7 @@ jobs:
⚠️ This is a development version; it introduces new features you want, - but may cause bugs that have not yet been identified yet. master + but may cause bugs that have not yet been identified yet in master. For production use, download a stable release.
From 2e0a1a55e38ee924216d269a506d2f2a1c0786a4 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 19:43:06 +0200 Subject: [PATCH 12/82] Test Windows VS2026 migration on GitHUB action --- .github/workflows/test-vs2026.yml | 106 ++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 .github/workflows/test-vs2026.yml diff --git a/.github/workflows/test-vs2026.yml b/.github/workflows/test-vs2026.yml new file mode 100644 index 000000000..ce5a78247 --- /dev/null +++ b/.github/workflows/test-vs2026.yml @@ -0,0 +1,106 @@ +name: Test Windows VS2026 migration + +# Ce workflow vérifie que le build QElectroTech fonctionne sur l'image +# windows-2025-vs2026, avant la migration forcée du 8 juin 2026. +# Il peut être supprimé une fois la migration confirmée OK. + +on: + workflow_dispatch: # déclenchement manuel uniquement + schedule: + - cron: '0 4 * * 1' # chaque lundi à 4h00 UTC (optionnel) + +jobs: + test-vs2026: + name: Build on windows-2025-vs2026 + runs-on: windows-2025-vs2026 # <-- image avec VS 2026 + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - name: Install MSYS2 + dependencies + uses: msys2/setup-msys2@v2 + with: + msystem: UCRT64 + update: false + install: >- + mingw-w64-ucrt-x86_64-gcc + mingw-w64-ucrt-x86_64-cmake + mingw-w64-ucrt-x86_64-ninja + mingw-w64-ucrt-x86_64-qt5-base + mingw-w64-ucrt-x86_64-qt5-svg + mingw-w64-ucrt-x86_64-qt5-tools + mingw-w64-ucrt-x86_64-qt5-translations + mingw-w64-ucrt-x86_64-sqlite3 + mingw-w64-ucrt-x86_64-pkgconf + mingw-w64-ucrt-x86_64-extra-cmake-modules + mingw-w64-ucrt-x86_64-kwidgetsaddons-qt5 + mingw-w64-ucrt-x86_64-kcoreaddons-qt5 + mingw-w64-ucrt-x86_64-nsis + mingw-w64-ucrt-x86_64-ccache + mingw-w64-ucrt-x86_64-7zip + git + + - name: Force Qt5 (remove Qt6 interference) + shell: msys2 {0} + run: | + rm -rf /ucrt64/lib/cmake/Qt6 || true + pacman -R --noconfirm mingw-w64-ucrt-x86_64-qt6-tools 2>/dev/null || true + + - name: Cache ccache + uses: actions/cache@v4 + with: + path: C:\Users\runneradmin\AppData\Local\ccache + key: ccache-vs2026-${{ runner.os }}-${{ github.sha }} + restore-keys: | + ccache-vs2026-${{ runner.os }}- + + - name: Configure (CMake) + shell: msys2 {0} + run: | + set -euo pipefail + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DQt5_DIR=/ucrt64/lib/cmake/Qt5 \ + -DQT_VERSION_MAJOR=5 \ + -DCMAKE_DISABLE_FIND_PACKAGE_Qt6=ON \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_FLAGS="-DQET_EXPORT_PROJECT_DB" + + - name: Build + shell: msys2 {0} + run: | + set -euo pipefail + cmake --build build --parallel $(nproc) + + - name: Verify executable + shell: msys2 {0} + run: | + set -euo pipefail + EXE=$(find build -name "qelectrotech.exe" | head -1) + if [ -z "$EXE" ]; then + echo "ERROR: qelectrotech.exe introuvable après le build" + exit 1 + fi + SIZE=$(stat -c%s "$EXE") + echo "Executable trouvé : $EXE ($SIZE octets)" + if [ "$SIZE" -lt 100000 ]; then + echo "ERROR: exe trop petit ($SIZE octets), build probablement incomplet" + exit 1 + fi + echo "BUILD VS2026 : OK ✓" + + - name: Summary + if: always() + shell: msys2 {0} + run: | + echo "=== Résumé de compatibilité VS2026 ===" + gcc --version + cmake --version + ninja --version + echo "Image runner : windows-2025-vs2026" + echo "Date du test : $(date -u)" From 9e0ec69c61e04e6f2d9c2a2848f3af60f3c85408 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 19:49:34 +0200 Subject: [PATCH 13/82] Add windows spec files for msi test --- build-aux/windows/QElectroTech.wxs | 183 +++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 build-aux/windows/QElectroTech.wxs diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs new file mode 100644 index 000000000..27bbb2077 --- /dev/null +++ b/build-aux/windows/QElectroTech.wxs @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 79542edd3b8102c3540fbf9484f204861d1bac69 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 19:50:20 +0200 Subject: [PATCH 14/82] Try to build Windows msi files --- .github/workflows/windows-msi.yml | 216 ++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 .github/workflows/windows-msi.yml diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml new file mode 100644 index 000000000..6d853b95d --- /dev/null +++ b/.github/workflows/windows-msi.yml @@ -0,0 +1,216 @@ +name: Windows MSI (WiX v4) + +# Ce workflow génère un installeur MSI pour QElectroTech. +# Il s'appuie sur l'artifact produit par le job build-windows +# (workflow windows-build.yml) et ne recompile pas le projet. +# +# Déclenchement : +# - Automatiquement après un run réussi de windows-build.yml +# - Manuellement (workflow_dispatch) pour tester + +on: + workflow_run: + workflows: ["Windows build"] # doit correspondre exactement au "name:" de windows-build.yml + types: [completed] + branches: [master] + workflow_dispatch: + inputs: + run_id: + description: "Run ID de windows-build.yml (laisse vide pour le dernier)" + required: false + default: "" + +jobs: + build-msi: + name: Build MSI with WiX v4 + runs-on: windows-latest + # Ne tourne que si le build principal a réussi (ignoré en workflow_dispatch) + if: > + github.event_name == 'workflow_dispatch' || + github.event.workflow_run.conclusion == 'success' + + steps: + # ---------------------------------------------------------------- + # 1. Checkout (pour récupérer QElectroTech.wxs) + # ---------------------------------------------------------------- + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + # ---------------------------------------------------------------- + # 2. Télécharger l'artifact du build principal + # L'artifact "qelectrotech-windows-installer-files" doit contenir + # le dossier nsis_root/files/ (portable build). + # Adapter le nom si nécessaire. + # ---------------------------------------------------------------- + - name: Download build artifact (portable files) + uses: actions/download-artifact@v4 + with: + name: qelectrotech-windows-portable # nom de l'artifact dans windows-build.yml + path: artifact\files + # Si déclenchement manuel avec run_id précisé : + run-id: ${{ github.event.inputs.run_id || github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + # ---------------------------------------------------------------- + # 3. Lire la version depuis l'artifact ou le dépôt + # ---------------------------------------------------------------- + - name: Extract version + id: version + shell: pwsh + run: | + # Lire la version dans CMakeLists.txt + $cmake = Get-Content CMakeLists.txt -Raw + if ($cmake -match 'project\s*\([^)]*VERSION\s+([\d]+\.[\d]+\.[\d]+)') { + $ver = $Matches[1] + } else { + $ver = "0.0.0" + } + + # Version numérique MSI (4 chiffres obligatoire) + $verMsi = "$ver.0" + + # Version lisible avec git short SHA + $sha = git rev-parse --short HEAD 2>$null + if (-not $sha) { $sha = "unknown" } + $verDisplay = "$ver+git$sha" + + echo "VERSION_MSI=$verMsi" >> $env:GITHUB_OUTPUT + echo "VERSION_DISPLAY=$verDisplay" >> $env:GITHUB_OUTPUT + Write-Host "Version MSI : $verMsi" + Write-Host "Version display : $verDisplay" + + # ---------------------------------------------------------------- + # 4. Installer WiX v4 via dotnet tool + # ---------------------------------------------------------------- + - name: Install WiX v4 + shell: pwsh + run: | + dotnet tool install --global wix --version 4.* + # Ajouter le chemin tools au PATH pour la session + $toolsPath = [System.IO.Path]::Combine($env:USERPROFILE, '.dotnet', 'tools') + echo $toolsPath >> $env:GITHUB_PATH + + # ---------------------------------------------------------------- + # 5. Installer l'extension WixUI (interface graphique MSI) + # ---------------------------------------------------------------- + - name: Install WiX UI extension + shell: pwsh + run: | + wix extension add WixToolset.UI.wixext/4.* + + # ---------------------------------------------------------------- + # 6. Copier QElectroTech.wxs depuis build-aux/windows/ + # ---------------------------------------------------------------- + - name: Prepare WXS file + shell: pwsh + run: | + # Le fichier .wxs est versionné dans le dépôt + $wxs = "build-aux\windows\QElectroTech.wxs" + if (-not (Test-Path $wxs)) { + Write-Error "Fichier WXS introuvable : $wxs" + exit 1 + } + Copy-Item $wxs -Destination "QElectroTech.wxs" + Write-Host "WXS prêt." + + # ---------------------------------------------------------------- + # 7. Vérifier la structure de l'artifact + # ---------------------------------------------------------------- + - name: Check artifact structure + shell: pwsh + run: | + Write-Host "=== Contenu de artifact\files ===" + Get-ChildItem -Path "artifact\files" -Recurse -Depth 2 | + Select-Object FullName | Format-Table -AutoSize + + $exe = Get-ChildItem -Path "artifact\files" -Filter "qelectrotech.exe" -Recurse | Select-Object -First 1 + if (-not $exe) { + Write-Error "qelectrotech.exe introuvable dans l'artifact" + exit 1 + } + Write-Host "Executable : $($exe.FullName) ($([math]::Round($exe.Length/1MB,1)) MB)" + + # Identifier le dossier bin/ contenant l'exe + $binDir = $exe.Directory.FullName + echo "BIN_DIR=$binDir" >> $env:GITHUB_ENV + + # FilesDir = parent de bin/ (équivalent de nsis_root\files\) + $filesDir = Split-Path $binDir -Parent + echo "FILES_DIR=$filesDir" >> $env:GITHUB_ENV + Write-Host "FILES_DIR : $filesDir" + + # ---------------------------------------------------------------- + # 8. Construire le MSI avec wix build + # ---------------------------------------------------------------- + - name: Build MSI + shell: pwsh + run: | + $version = "${{ steps.version.outputs.VERSION_MSI }}" + $verDisplay = "${{ steps.version.outputs.VERSION_DISPLAY }}" + $filesDir = $env:FILES_DIR + $outputName = "QElectroTech-${verDisplay}_x86_64-win64.msi" + + Write-Host "=== wix build ===" + Write-Host " Version : $version" + Write-Host " FilesDir : $filesDir" + Write-Host " Output : $outputName" + + wix build QElectroTech.wxs ` + -arch x64 ` + -d "Version=$version" ` + -d "ProductVersion=$verDisplay" ` + -d "FilesDir=$filesDir" ` + -ext WixToolset.UI.wixext ` + -o "dist\$outputName" + + if (-not (Test-Path "dist\$outputName")) { + Write-Error "MSI non généré : dist\$outputName" + exit 1 + } + + $size = [math]::Round((Get-Item "dist\$outputName").Length / 1MB, 1) + Write-Host "MSI généré : dist\$outputName ($size MB)" + echo "MSI_NAME=$outputName" >> $env:GITHUB_ENV + + # ---------------------------------------------------------------- + # 9. Upload de l'artifact MSI + # ---------------------------------------------------------------- + - name: Upload MSI artifact + uses: actions/upload-artifact@v4 + with: + name: qelectrotech-windows-msi + path: dist\*.msi + retention-days: 14 + if-no-files-found: error + + # ---------------------------------------------------------------- + # 10. (Optionnel) Attacher le MSI à la release nightly + # Décommenter si tu veux le MSI dans les releases GitHub + # ---------------------------------------------------------------- + # - name: Upload MSI to nightly release + # uses: softprops/action-gh-release@v2 + # if: github.ref == 'refs/heads/master' + # with: + # tag_name: nightly + # files: dist/*.msi + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # ---------------------------------------------------------------- + # 11. Résumé + # ---------------------------------------------------------------- + - name: Summary + if: always() + shell: pwsh + run: | + Write-Host "=== Résumé build MSI ===" + Write-Host "Version : ${{ steps.version.outputs.VERSION_DISPLAY }}" + Write-Host "Image runner : ${{ runner.os }} / ${{ runner.arch }}" + if (Test-Path "dist\$env:MSI_NAME") { + $size = [math]::Round((Get-Item "dist\$env:MSI_NAME").Length / 1MB, 1) + Write-Host "MSI : $env:MSI_NAME ($size MB) ✓" + } else { + Write-Host "MSI : ÉCHEC ✗" + } From 32733187b8d44215fb08efe94d3714ace20e409f Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 20:12:02 +0200 Subject: [PATCH 15/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 0cee8a448..a09da6230 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -349,6 +349,13 @@ jobs: path: dist/Installer_*.exe retention-days: 14 + - name: Upload portable (nom fixe pour le workflow MSI) + uses: actions/upload-artifact@v4 + with: + name: qelectrotech-windows-portable + path: nsis_root/files/ + retention-days: 14 + # --------------------------------------------------------------------------- # Job 2 : Publie une release nightly + page GitHub Pages # Ne tourne que sur push master (pas sur les PRs) From 1550944011febf4d3eb47e8aa9d0797d38dd44e6 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 20:55:22 +0200 Subject: [PATCH 16/82] Update windows-msi.yml dotnet tool install --global wix --version 7.0.0 --accept-eula wix extension add WixToolset.UI.wixext/7.0.0 --accept-eula wix build ... --accept-eula --- .github/workflows/windows-msi.yml | 150 ++++++++++++++---------------- 1 file changed, 69 insertions(+), 81 deletions(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 6d853b95d..6d9aff033 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -1,130 +1,126 @@ -name: Windows MSI (WiX v4) - -# Ce workflow génère un installeur MSI pour QElectroTech. -# Il s'appuie sur l'artifact produit par le job build-windows -# (workflow windows-build.yml) et ne recompile pas le projet. -# -# Déclenchement : -# - Automatiquement après un run réussi de windows-build.yml -# - Manuellement (workflow_dispatch) pour tester +name: Windows MSI (WiX v7) on: - workflow_run: - workflows: ["Windows build"] # doit correspondre exactement au "name:" de windows-build.yml - types: [completed] - branches: [master] workflow_dispatch: inputs: run_id: - description: "Run ID de windows-build.yml (laisse vide pour le dernier)" + description: "Run ID de 'Windows Build' (laisse vide pour le dernier run réussi)" required: false default: "" jobs: build-msi: - name: Build MSI with WiX v4 + name: Build MSI with WiX v7 runs-on: windows-latest - # Ne tourne que si le build principal a réussi (ignoré en workflow_dispatch) - if: > - github.event_name == 'workflow_dispatch' || - github.event.workflow_run.conclusion == 'success' steps: # ---------------------------------------------------------------- - # 1. Checkout (pour récupérer QElectroTech.wxs) + # 1. Checkout (pour récupérer QElectroTech.wxs et CMakeLists.txt) # ---------------------------------------------------------------- - name: Checkout uses: actions/checkout@v4 with: - fetch-depth: 1 + fetch-depth: 0 # ---------------------------------------------------------------- - # 2. Télécharger l'artifact du build principal - # L'artifact "qelectrotech-windows-installer-files" doit contenir - # le dossier nsis_root/files/ (portable build). - # Adapter le nom si nécessaire. + # 2. Télécharger l'artifact portable du build principal + # Nécessite que windows-build.yml uploade un artifact nommé + # "qelectrotech-windows-portable" (nom fixe, voir windows-build.yml) # ---------------------------------------------------------------- - - name: Download build artifact (portable files) + - name: Download portable artifact uses: actions/download-artifact@v4 with: - name: qelectrotech-windows-portable # nom de l'artifact dans windows-build.yml + name: qelectrotech-windows-portable path: artifact\files - # Si déclenchement manuel avec run_id précisé : - run-id: ${{ github.event.inputs.run_id || github.event.workflow_run.id }} + run-id: ${{ github.event.inputs.run_id != '' && github.event.inputs.run_id || github.run_id }} github-token: ${{ secrets.GITHUB_TOKEN }} + repository: ${{ github.repository }} # ---------------------------------------------------------------- - # 3. Lire la version depuis l'artifact ou le dépôt + # 3. Extraire la version depuis les sources # ---------------------------------------------------------------- - name: Extract version id: version shell: pwsh run: | - # Lire la version dans CMakeLists.txt - $cmake = Get-Content CMakeLists.txt -Raw - if ($cmake -match 'project\s*\([^)]*VERSION\s+([\d]+\.[\d]+\.[\d]+)') { - $ver = $Matches[1] + # Version depuis qetversion.cpp (même logique que windows-build.yml) + $src = Get-Content "sources\qetversion.cpp" -Raw -ErrorAction SilentlyContinue + if ($src -match 'return QVersionNumber\{([^}]+)\}') { + $ver = $Matches[1] -replace '\s','' -replace ',','.' } else { - $ver = "0.0.0" + # Fallback : CMakeLists.txt + $cmake = Get-Content "CMakeLists.txt" -Raw + if ($cmake -match 'project\s*\([^)]*VERSION\s+([\d]+\.[\d]+\.[\d]+)') { + $ver = $Matches[1] + } else { + $ver = "0.0.0" + } } - # Version numérique MSI (4 chiffres obligatoire) + # Version numérique MSI : 4 chiffres obligatoire (ex. 0.100.1.0) $verMsi = "$ver.0" - # Version lisible avec git short SHA + # Short SHA pour la version lisible $sha = git rev-parse --short HEAD 2>$null if (-not $sha) { $sha = "unknown" } - $verDisplay = "$ver+git$sha" - echo "VERSION_MSI=$verMsi" >> $env:GITHUB_OUTPUT - echo "VERSION_DISPLAY=$verDisplay" >> $env:GITHUB_OUTPUT + # Numéro de révision cumulatif (même calcul que windows-build.yml) + $count = git rev-list HEAD --count 2>$null + $rev = [int]$count + 473 + + $verDisplay = "${ver}-r${rev}-${sha}_x86_64-win64" + + echo "VERSION_MSI=$verMsi" >> $env:GITHUB_OUTPUT + echo "VERSION_DISPLAY=$verDisplay" >> $env:GITHUB_OUTPUT Write-Host "Version MSI : $verMsi" Write-Host "Version display : $verDisplay" # ---------------------------------------------------------------- - # 4. Installer WiX v4 via dotnet tool + # 4. Installer WiX v7 via dotnet tool # ---------------------------------------------------------------- - - name: Install WiX v4 + - name: Install WiX v7 shell: pwsh run: | - dotnet tool install --global wix --version 4.* - # Ajouter le chemin tools au PATH pour la session + dotnet tool install --global wix --version 7.0.0 --accept-eula $toolsPath = [System.IO.Path]::Combine($env:USERPROFILE, '.dotnet', 'tools') echo $toolsPath >> $env:GITHUB_PATH + Write-Host "WiX v7 installé." # ---------------------------------------------------------------- - # 5. Installer l'extension WixUI (interface graphique MSI) + # 5. Installer l'extension WixUI # ---------------------------------------------------------------- - name: Install WiX UI extension shell: pwsh run: | - wix extension add WixToolset.UI.wixext/4.* + wix extension add WixToolset.UI.wixext/7.0.0 --accept-eula + Write-Host "Extension UI installée." # ---------------------------------------------------------------- - # 6. Copier QElectroTech.wxs depuis build-aux/windows/ + # 6. Vérifier la présence du fichier WXS dans le dépôt # ---------------------------------------------------------------- - - name: Prepare WXS file + - name: Check WXS file shell: pwsh run: | - # Le fichier .wxs est versionné dans le dépôt $wxs = "build-aux\windows\QElectroTech.wxs" if (-not (Test-Path $wxs)) { Write-Error "Fichier WXS introuvable : $wxs" + Write-Host "Contenu de build-aux\windows\ :" + Get-ChildItem "build-aux\windows\" -ErrorAction SilentlyContinue exit 1 } - Copy-Item $wxs -Destination "QElectroTech.wxs" - Write-Host "WXS prêt." + Write-Host "WXS trouvé : $wxs" # ---------------------------------------------------------------- - # 7. Vérifier la structure de l'artifact + # 7. Vérifier la structure de l'artifact et localiser files/ # ---------------------------------------------------------------- - name: Check artifact structure shell: pwsh run: | - Write-Host "=== Contenu de artifact\files ===" - Get-ChildItem -Path "artifact\files" -Recurse -Depth 2 | + Write-Host "=== Contenu de artifact\files (2 niveaux) ===" + Get-ChildItem -Path "artifact\files" -Depth 2 | Select-Object FullName | Format-Table -AutoSize + # Chercher qelectrotech.exe dans l'artifact $exe = Get-ChildItem -Path "artifact\files" -Filter "qelectrotech.exe" -Recurse | Select-Object -First 1 if (-not $exe) { Write-Error "qelectrotech.exe introuvable dans l'artifact" @@ -132,37 +128,41 @@ jobs: } Write-Host "Executable : $($exe.FullName) ($([math]::Round($exe.Length/1MB,1)) MB)" - # Identifier le dossier bin/ contenant l'exe - $binDir = $exe.Directory.FullName - echo "BIN_DIR=$binDir" >> $env:GITHUB_ENV - - # FilesDir = parent de bin/ (équivalent de nsis_root\files\) + # FilesDir = dossier contenant bin\ (soit artifact\files directement, + # soit un sous-dossier si l'artifact a une structure imbriquée) + $binDir = $exe.Directory.FullName $filesDir = Split-Path $binDir -Parent + echo "FILES_DIR=$filesDir" >> $env:GITHUB_ENV Write-Host "FILES_DIR : $filesDir" # ---------------------------------------------------------------- - # 8. Construire le MSI avec wix build + # 8. Construire le MSI # ---------------------------------------------------------------- - name: Build MSI shell: pwsh run: | - $version = "${{ steps.version.outputs.VERSION_MSI }}" - $verDisplay = "${{ steps.version.outputs.VERSION_DISPLAY }}" - $filesDir = $env:FILES_DIR - $outputName = "QElectroTech-${verDisplay}_x86_64-win64.msi" + $version = "${{ steps.version.outputs.VERSION_MSI }}" + $verDisplay = "${{ steps.version.outputs.VERSION_DISPLAY }}" + $filesDir = $env:FILES_DIR + $wxs = "build-aux\windows\QElectroTech.wxs" + $outputName = "QElectroTech-${verDisplay}.msi" + + New-Item -ItemType Directory -Force -Path "dist" | Out-Null Write-Host "=== wix build ===" + Write-Host " WXS : $wxs" Write-Host " Version : $version" Write-Host " FilesDir : $filesDir" - Write-Host " Output : $outputName" + Write-Host " Output : dist\$outputName" - wix build QElectroTech.wxs ` + wix build $wxs ` -arch x64 ` -d "Version=$version" ` -d "ProductVersion=$verDisplay" ` -d "FilesDir=$filesDir" ` -ext WixToolset.UI.wixext ` + --accept-eula ` -o "dist\$outputName" if (-not (Test-Path "dist\$outputName")) { @@ -171,7 +171,7 @@ jobs: } $size = [math]::Round((Get-Item "dist\$outputName").Length / 1MB, 1) - Write-Host "MSI généré : dist\$outputName ($size MB)" + Write-Host "MSI généré : dist\$outputName ($size MB) ✓" echo "MSI_NAME=$outputName" >> $env:GITHUB_ENV # ---------------------------------------------------------------- @@ -186,20 +186,7 @@ jobs: if-no-files-found: error # ---------------------------------------------------------------- - # 10. (Optionnel) Attacher le MSI à la release nightly - # Décommenter si tu veux le MSI dans les releases GitHub - # ---------------------------------------------------------------- - # - name: Upload MSI to nightly release - # uses: softprops/action-gh-release@v2 - # if: github.ref == 'refs/heads/master' - # with: - # tag_name: nightly - # files: dist/*.msi - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - # ---------------------------------------------------------------- - # 11. Résumé + # 10. Résumé # ---------------------------------------------------------------- - name: Summary if: always() @@ -207,6 +194,7 @@ jobs: run: | Write-Host "=== Résumé build MSI ===" Write-Host "Version : ${{ steps.version.outputs.VERSION_DISPLAY }}" + Write-Host "WiX : v7.0.0" Write-Host "Image runner : ${{ runner.os }} / ${{ runner.arch }}" if (Test-Path "dist\$env:MSI_NAME") { $size = [math]::Round((Get-Item "dist\$env:MSI_NAME").Length / 1MB, 1) From ef261a7afdf632dd0b3d418df8856466d5a67a27 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 21:25:57 +0200 Subject: [PATCH 17/82] Update windows-msi.yml Remove --accept-eula on dotnet tool install --- .github/workflows/windows-msi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 6d9aff033..0e9c295ef 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -81,7 +81,7 @@ jobs: - name: Install WiX v7 shell: pwsh run: | - dotnet tool install --global wix --version 7.0.0 --accept-eula + dotnet tool install --global wix --version 7.0.0 $toolsPath = [System.IO.Path]::Combine($env:USERPROFILE, '.dotnet', 'tools') echo $toolsPath >> $env:GITHUB_PATH Write-Host "WiX v7 installé." From e40f9c6b720dfee81184e76dee9a5c9e9253e07e Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 21:33:05 +0200 Subject: [PATCH 18/82] Update windows-msi.yml --- .github/workflows/windows-msi.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 0e9c295ef..818c22704 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -15,7 +15,7 @@ jobs: steps: # ---------------------------------------------------------------- - # 1. Checkout (pour récupérer QElectroTech.wxs et CMakeLists.txt) + # 1. Checkout (pour récupérer QElectroTech.wxs et les sources) # ---------------------------------------------------------------- - name: Checkout uses: actions/checkout@v4 @@ -25,7 +25,7 @@ jobs: # ---------------------------------------------------------------- # 2. Télécharger l'artifact portable du build principal # Nécessite que windows-build.yml uploade un artifact nommé - # "qelectrotech-windows-portable" (nom fixe, voir windows-build.yml) + # "qelectrotech-windows-portable" (nom fixe) # ---------------------------------------------------------------- - name: Download portable artifact uses: actions/download-artifact@v4 @@ -81,18 +81,22 @@ jobs: - name: Install WiX v7 shell: pwsh run: | - dotnet tool install --global wix --version 7.0.0 + dotnet tool install --global wix --version 7.0.0 $toolsPath = [System.IO.Path]::Combine($env:USERPROFILE, '.dotnet', 'tools') echo $toolsPath >> $env:GITHUB_PATH Write-Host "WiX v7 installé." # ---------------------------------------------------------------- # 5. Installer l'extension WixUI + # WIX_ACCEPT_EULA=true est la méthode officielle pour accepter + # la licence OSMF de WiX v7 en environnement CI # ---------------------------------------------------------------- - name: Install WiX UI extension shell: pwsh + env: + WIX_ACCEPT_EULA: true run: | - wix extension add WixToolset.UI.wixext/7.0.0 --accept-eula + wix extension add WixToolset.UI.wixext/7.0.0 Write-Host "Extension UI installée." # ---------------------------------------------------------------- @@ -128,8 +132,7 @@ jobs: } Write-Host "Executable : $($exe.FullName) ($([math]::Round($exe.Length/1MB,1)) MB)" - # FilesDir = dossier contenant bin\ (soit artifact\files directement, - # soit un sous-dossier si l'artifact a une structure imbriquée) + # FilesDir = dossier contenant bin\ $binDir = $exe.Directory.FullName $filesDir = Split-Path $binDir -Parent @@ -141,6 +144,8 @@ jobs: # ---------------------------------------------------------------- - name: Build MSI shell: pwsh + env: + WIX_ACCEPT_EULA: true run: | $version = "${{ steps.version.outputs.VERSION_MSI }}" $verDisplay = "${{ steps.version.outputs.VERSION_DISPLAY }}" @@ -162,7 +167,6 @@ jobs: -d "ProductVersion=$verDisplay" ` -d "FilesDir=$filesDir" ` -ext WixToolset.UI.wixext ` - --accept-eula ` -o "dist\$outputName" if (-not (Test-Path "dist\$outputName")) { From 2f72e6164c894e3a270a8bb5eaf4848a365191cb Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 21:39:36 +0200 Subject: [PATCH 19/82] Update windows-msi.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removal of all envs: WIX_ACCEPT_EULA: true (does not work) Addition of a dedicated ‘Accept WiX EULA’ step with wix eula accept wix7 before any other WiX command — this is the official CI/CD method, which writes a sentinel file to the user profile, thereby authorising all subsequent WiX commands in the same job. --- .github/workflows/windows-msi.yml | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 818c22704..29482c506 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -87,20 +87,28 @@ jobs: Write-Host "WiX v7 installé." # ---------------------------------------------------------------- - # 5. Installer l'extension WixUI - # WIX_ACCEPT_EULA=true est la méthode officielle pour accepter - # la licence OSMF de WiX v7 en environnement CI + # 5. Accepter la licence OSMF WiX v7 + # "wix eula accept wix7" est la méthode officielle pour CI/CD + # Elle écrit un fichier sentinel dans le profil utilisateur + # qui autorise toutes les commandes wix suivantes + # ---------------------------------------------------------------- + - name: Accept WiX EULA + shell: pwsh + run: | + wix eula accept wix7 + Write-Host "EULA WiX v7 acceptée." + + # ---------------------------------------------------------------- + # 6. Installer l'extension WixUI # ---------------------------------------------------------------- - name: Install WiX UI extension shell: pwsh - env: - WIX_ACCEPT_EULA: true run: | wix extension add WixToolset.UI.wixext/7.0.0 Write-Host "Extension UI installée." # ---------------------------------------------------------------- - # 6. Vérifier la présence du fichier WXS dans le dépôt + # 7. Vérifier la présence du fichier WXS dans le dépôt # ---------------------------------------------------------------- - name: Check WXS file shell: pwsh @@ -115,7 +123,7 @@ jobs: Write-Host "WXS trouvé : $wxs" # ---------------------------------------------------------------- - # 7. Vérifier la structure de l'artifact et localiser files/ + # 8. Vérifier la structure de l'artifact et localiser files/ # ---------------------------------------------------------------- - name: Check artifact structure shell: pwsh @@ -140,12 +148,10 @@ jobs: Write-Host "FILES_DIR : $filesDir" # ---------------------------------------------------------------- - # 8. Construire le MSI + # 9. Construire le MSI # ---------------------------------------------------------------- - name: Build MSI shell: pwsh - env: - WIX_ACCEPT_EULA: true run: | $version = "${{ steps.version.outputs.VERSION_MSI }}" $verDisplay = "${{ steps.version.outputs.VERSION_DISPLAY }}" @@ -179,7 +185,7 @@ jobs: echo "MSI_NAME=$outputName" >> $env:GITHUB_ENV # ---------------------------------------------------------------- - # 9. Upload de l'artifact MSI + # 10. Upload de l'artifact MSI # ---------------------------------------------------------------- - name: Upload MSI artifact uses: actions/upload-artifact@v4 @@ -190,7 +196,7 @@ jobs: if-no-files-found: error # ---------------------------------------------------------------- - # 10. Résumé + # 11. Résumé # ---------------------------------------------------------------- - name: Summary if: always() From 55ae3fc3c6aa66954150739b8903a0e208fe8bc7 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 21:46:11 +0200 Subject: [PATCH 20/82] Update QElectroTech.wxs --- build-aux/windows/QElectroTech.wxs | 116 +++++++++++++---------------- 1 file changed, 50 insertions(+), 66 deletions(-) diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index 27bbb2077..e8ba64779 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -1,12 +1,12 @@ @@ -20,18 +20,18 @@ InstallerVersion="500" Scope="perMachine"> - + - + @@ -41,62 +41,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -136,7 +119,9 @@ - + @@ -149,7 +134,7 @@ @@ -158,19 +143,18 @@ ============================================================ --> - + - - + From 7edc2e02413ab02d4027adfa5b32df845d9e5fed Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 21:50:32 +0200 Subject: [PATCH 21/82] Update windows-msi.yml --- .github/workflows/windows-msi.yml | 328 ++++++++++++------------------ 1 file changed, 133 insertions(+), 195 deletions(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 29482c506..4200870e3 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -1,214 +1,152 @@ -name: Windows MSI (WiX v7) + + + -jobs: - build-msi: - name: Build MSI with WiX v7 - runs-on: windows-latest + - steps: - # ---------------------------------------------------------------- - # 1. Checkout (pour récupérer QElectroTech.wxs et les sources) - # ---------------------------------------------------------------- - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 + + - # ---------------------------------------------------------------- - # 2. Télécharger l'artifact portable du build principal - # Nécessite que windows-build.yml uploade un artifact nommé - # "qelectrotech-windows-portable" (nom fixe) - # ---------------------------------------------------------------- - - name: Download portable artifact - uses: actions/download-artifact@v4 - with: - name: qelectrotech-windows-portable - path: artifact\files - run-id: ${{ github.event.inputs.run_id != '' && github.event.inputs.run_id || github.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - repository: ${{ github.repository }} + + + + - # ---------------------------------------------------------------- - # 3. Extraire la version depuis les sources - # ---------------------------------------------------------------- - - name: Extract version - id: version - shell: pwsh - run: | - # Version depuis qetversion.cpp (même logique que windows-build.yml) - $src = Get-Content "sources\qetversion.cpp" -Raw -ErrorAction SilentlyContinue - if ($src -match 'return QVersionNumber\{([^}]+)\}') { - $ver = $Matches[1] -replace '\s','' -replace ',','.' - } else { - # Fallback : CMakeLists.txt - $cmake = Get-Content "CMakeLists.txt" -Raw - if ($cmake -match 'project\s*\([^)]*VERSION\s+([\d]+\.[\d]+\.[\d]+)') { - $ver = $Matches[1] - } else { - $ver = "0.0.0" - } - } + + + + - # Version numérique MSI : 4 chiffres obligatoire (ex. 0.100.1.0) - $verMsi = "$ver.0" + + + + - # Short SHA pour la version lisible - $sha = git rev-parse --short HEAD 2>$null - if (-not $sha) { $sha = "unknown" } + + + + - # Numéro de révision cumulatif (même calcul que windows-build.yml) - $count = git rev-list HEAD --count 2>$null - $rev = [int]$count + 473 + + + - $verDisplay = "${ver}-r${rev}-${sha}_x86_64-win64" + + + - echo "VERSION_MSI=$verMsi" >> $env:GITHUB_OUTPUT - echo "VERSION_DISPLAY=$verDisplay" >> $env:GITHUB_OUTPUT - Write-Host "Version MSI : $verMsi" - Write-Host "Version display : $verDisplay" + + + - # ---------------------------------------------------------------- - # 4. Installer WiX v7 via dotnet tool - # ---------------------------------------------------------------- - - name: Install WiX v7 - shell: pwsh - run: | - dotnet tool install --global wix --version 7.0.0 - $toolsPath = [System.IO.Path]::Combine($env:USERPROFILE, '.dotnet', 'tools') - echo $toolsPath >> $env:GITHUB_PATH - Write-Host "WiX v7 installé." + + + - # ---------------------------------------------------------------- - # 5. Accepter la licence OSMF WiX v7 - # "wix eula accept wix7" est la méthode officielle pour CI/CD - # Elle écrit un fichier sentinel dans le profil utilisateur - # qui autorise toutes les commandes wix suivantes - # ---------------------------------------------------------------- - - name: Accept WiX EULA - shell: pwsh - run: | - wix eula accept wix7 - Write-Host "EULA WiX v7 acceptée." + + + - # ---------------------------------------------------------------- - # 6. Installer l'extension WixUI - # ---------------------------------------------------------------- - - name: Install WiX UI extension - shell: pwsh - run: | - wix extension add WixToolset.UI.wixext/7.0.0 - Write-Host "Extension UI installée." + + + + + + + + + + + - # ---------------------------------------------------------------- - # 7. Vérifier la présence du fichier WXS dans le dépôt - # ---------------------------------------------------------------- - - name: Check WXS file - shell: pwsh - run: | - $wxs = "build-aux\windows\QElectroTech.wxs" - if (-not (Test-Path $wxs)) { - Write-Error "Fichier WXS introuvable : $wxs" - Write-Host "Contenu de build-aux\windows\ :" - Get-ChildItem "build-aux\windows\" -ErrorAction SilentlyContinue - exit 1 - } - Write-Host "WXS trouvé : $wxs" + + + + + + + + + - # ---------------------------------------------------------------- - # 8. Vérifier la structure de l'artifact et localiser files/ - # ---------------------------------------------------------------- - - name: Check artifact structure - shell: pwsh - run: | - Write-Host "=== Contenu de artifact\files (2 niveaux) ===" - Get-ChildItem -Path "artifact\files" -Depth 2 | - Select-Object FullName | Format-Table -AutoSize + + - # Chercher qelectrotech.exe dans l'artifact - $exe = Get-ChildItem -Path "artifact\files" -Filter "qelectrotech.exe" -Recurse | Select-Object -First 1 - if (-not $exe) { - Write-Error "qelectrotech.exe introuvable dans l'artifact" - exit 1 - } - Write-Host "Executable : $($exe.FullName) ($([math]::Round($exe.Length/1MB,1)) MB)" + + + + + + + + + + + + + - # FilesDir = dossier contenant bin\ - $binDir = $exe.Directory.FullName - $filesDir = Split-Path $binDir -Parent + + - echo "FILES_DIR=$filesDir" >> $env:GITHUB_ENV - Write-Host "FILES_DIR : $filesDir" + + + + + - # ---------------------------------------------------------------- - # 9. Construire le MSI - # ---------------------------------------------------------------- - - name: Build MSI - shell: pwsh - run: | - $version = "${{ steps.version.outputs.VERSION_MSI }}" - $verDisplay = "${{ steps.version.outputs.VERSION_DISPLAY }}" - $filesDir = $env:FILES_DIR - $wxs = "build-aux\windows\QElectroTech.wxs" - $outputName = "QElectroTech-${verDisplay}.msi" - - New-Item -ItemType Directory -Force -Path "dist" | Out-Null - - Write-Host "=== wix build ===" - Write-Host " WXS : $wxs" - Write-Host " Version : $version" - Write-Host " FilesDir : $filesDir" - Write-Host " Output : dist\$outputName" - - wix build $wxs ` - -arch x64 ` - -d "Version=$version" ` - -d "ProductVersion=$verDisplay" ` - -d "FilesDir=$filesDir" ` - -ext WixToolset.UI.wixext ` - -o "dist\$outputName" - - if (-not (Test-Path "dist\$outputName")) { - Write-Error "MSI non généré : dist\$outputName" - exit 1 - } - - $size = [math]::Round((Get-Item "dist\$outputName").Length / 1MB, 1) - Write-Host "MSI généré : dist\$outputName ($size MB) ✓" - echo "MSI_NAME=$outputName" >> $env:GITHUB_ENV - - # ---------------------------------------------------------------- - # 10. Upload de l'artifact MSI - # ---------------------------------------------------------------- - - name: Upload MSI artifact - uses: actions/upload-artifact@v4 - with: - name: qelectrotech-windows-msi - path: dist\*.msi - retention-days: 14 - if-no-files-found: error - - # ---------------------------------------------------------------- - # 11. Résumé - # ---------------------------------------------------------------- - - name: Summary - if: always() - shell: pwsh - run: | - Write-Host "=== Résumé build MSI ===" - Write-Host "Version : ${{ steps.version.outputs.VERSION_DISPLAY }}" - Write-Host "WiX : v7.0.0" - Write-Host "Image runner : ${{ runner.os }} / ${{ runner.arch }}" - if (Test-Path "dist\$env:MSI_NAME") { - $size = [math]::Round((Get-Item "dist\$env:MSI_NAME").Length / 1MB, 1) - Write-Host "MSI : $env:MSI_NAME ($size MB) ✓" - } else { - Write-Host "MSI : ÉCHEC ✗" - } + + From df82a1125d5388b59f3a29d2b315bb3a5f5df8c9 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 21:56:59 +0200 Subject: [PATCH 22/82] Update windows-msi.yml --- .github/workflows/windows-msi.yml | 322 ++++++++++++++++++------------ 1 file changed, 189 insertions(+), 133 deletions(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 4200870e3..818c22704 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -1,152 +1,208 @@ - - - +on: + workflow_dispatch: + inputs: + run_id: + description: "Run ID de 'Windows Build' (laisse vide pour le dernier run réussi)" + required: false + default: "" - +jobs: + build-msi: + name: Build MSI with WiX v7 + runs-on: windows-latest - - + steps: + # ---------------------------------------------------------------- + # 1. Checkout (pour récupérer QElectroTech.wxs et les sources) + # ---------------------------------------------------------------- + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 - - - - + # ---------------------------------------------------------------- + # 2. Télécharger l'artifact portable du build principal + # Nécessite que windows-build.yml uploade un artifact nommé + # "qelectrotech-windows-portable" (nom fixe) + # ---------------------------------------------------------------- + - name: Download portable artifact + uses: actions/download-artifact@v4 + with: + name: qelectrotech-windows-portable + path: artifact\files + run-id: ${{ github.event.inputs.run_id != '' && github.event.inputs.run_id || github.run_id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + repository: ${{ github.repository }} - - - - + # ---------------------------------------------------------------- + # 3. Extraire la version depuis les sources + # ---------------------------------------------------------------- + - name: Extract version + id: version + shell: pwsh + run: | + # Version depuis qetversion.cpp (même logique que windows-build.yml) + $src = Get-Content "sources\qetversion.cpp" -Raw -ErrorAction SilentlyContinue + if ($src -match 'return QVersionNumber\{([^}]+)\}') { + $ver = $Matches[1] -replace '\s','' -replace ',','.' + } else { + # Fallback : CMakeLists.txt + $cmake = Get-Content "CMakeLists.txt" -Raw + if ($cmake -match 'project\s*\([^)]*VERSION\s+([\d]+\.[\d]+\.[\d]+)') { + $ver = $Matches[1] + } else { + $ver = "0.0.0" + } + } - - - - + # Version numérique MSI : 4 chiffres obligatoire (ex. 0.100.1.0) + $verMsi = "$ver.0" - - - - + # Short SHA pour la version lisible + $sha = git rev-parse --short HEAD 2>$null + if (-not $sha) { $sha = "unknown" } - - - + # Numéro de révision cumulatif (même calcul que windows-build.yml) + $count = git rev-list HEAD --count 2>$null + $rev = [int]$count + 473 - - - + $verDisplay = "${ver}-r${rev}-${sha}_x86_64-win64" - - - + echo "VERSION_MSI=$verMsi" >> $env:GITHUB_OUTPUT + echo "VERSION_DISPLAY=$verDisplay" >> $env:GITHUB_OUTPUT + Write-Host "Version MSI : $verMsi" + Write-Host "Version display : $verDisplay" - - - + # ---------------------------------------------------------------- + # 4. Installer WiX v7 via dotnet tool + # ---------------------------------------------------------------- + - name: Install WiX v7 + shell: pwsh + run: | + dotnet tool install --global wix --version 7.0.0 + $toolsPath = [System.IO.Path]::Combine($env:USERPROFILE, '.dotnet', 'tools') + echo $toolsPath >> $env:GITHUB_PATH + Write-Host "WiX v7 installé." - - - + # ---------------------------------------------------------------- + # 5. Installer l'extension WixUI + # WIX_ACCEPT_EULA=true est la méthode officielle pour accepter + # la licence OSMF de WiX v7 en environnement CI + # ---------------------------------------------------------------- + - name: Install WiX UI extension + shell: pwsh + env: + WIX_ACCEPT_EULA: true + run: | + wix extension add WixToolset.UI.wixext/7.0.0 + Write-Host "Extension UI installée." - - - - - - - - - - - + # ---------------------------------------------------------------- + # 6. Vérifier la présence du fichier WXS dans le dépôt + # ---------------------------------------------------------------- + - name: Check WXS file + shell: pwsh + run: | + $wxs = "build-aux\windows\QElectroTech.wxs" + if (-not (Test-Path $wxs)) { + Write-Error "Fichier WXS introuvable : $wxs" + Write-Host "Contenu de build-aux\windows\ :" + Get-ChildItem "build-aux\windows\" -ErrorAction SilentlyContinue + exit 1 + } + Write-Host "WXS trouvé : $wxs" - - - - - - - - - + # ---------------------------------------------------------------- + # 7. Vérifier la structure de l'artifact et localiser files/ + # ---------------------------------------------------------------- + - name: Check artifact structure + shell: pwsh + run: | + Write-Host "=== Contenu de artifact\files (2 niveaux) ===" + Get-ChildItem -Path "artifact\files" -Depth 2 | + Select-Object FullName | Format-Table -AutoSize - - + # Chercher qelectrotech.exe dans l'artifact + $exe = Get-ChildItem -Path "artifact\files" -Filter "qelectrotech.exe" -Recurse | Select-Object -First 1 + if (-not $exe) { + Write-Error "qelectrotech.exe introuvable dans l'artifact" + exit 1 + } + Write-Host "Executable : $($exe.FullName) ($([math]::Round($exe.Length/1MB,1)) MB)" - - - - - - - - - - - - - + # FilesDir = dossier contenant bin\ + $binDir = $exe.Directory.FullName + $filesDir = Split-Path $binDir -Parent - - + echo "FILES_DIR=$filesDir" >> $env:GITHUB_ENV + Write-Host "FILES_DIR : $filesDir" - - - - - + # ---------------------------------------------------------------- + # 8. Construire le MSI + # ---------------------------------------------------------------- + - name: Build MSI + shell: pwsh + env: + WIX_ACCEPT_EULA: true + run: | + $version = "${{ steps.version.outputs.VERSION_MSI }}" + $verDisplay = "${{ steps.version.outputs.VERSION_DISPLAY }}" + $filesDir = $env:FILES_DIR + $wxs = "build-aux\windows\QElectroTech.wxs" + $outputName = "QElectroTech-${verDisplay}.msi" - - + New-Item -ItemType Directory -Force -Path "dist" | Out-Null + + Write-Host "=== wix build ===" + Write-Host " WXS : $wxs" + Write-Host " Version : $version" + Write-Host " FilesDir : $filesDir" + Write-Host " Output : dist\$outputName" + + wix build $wxs ` + -arch x64 ` + -d "Version=$version" ` + -d "ProductVersion=$verDisplay" ` + -d "FilesDir=$filesDir" ` + -ext WixToolset.UI.wixext ` + -o "dist\$outputName" + + if (-not (Test-Path "dist\$outputName")) { + Write-Error "MSI non généré : dist\$outputName" + exit 1 + } + + $size = [math]::Round((Get-Item "dist\$outputName").Length / 1MB, 1) + Write-Host "MSI généré : dist\$outputName ($size MB) ✓" + echo "MSI_NAME=$outputName" >> $env:GITHUB_ENV + + # ---------------------------------------------------------------- + # 9. Upload de l'artifact MSI + # ---------------------------------------------------------------- + - name: Upload MSI artifact + uses: actions/upload-artifact@v4 + with: + name: qelectrotech-windows-msi + path: dist\*.msi + retention-days: 14 + if-no-files-found: error + + # ---------------------------------------------------------------- + # 10. Résumé + # ---------------------------------------------------------------- + - name: Summary + if: always() + shell: pwsh + run: | + Write-Host "=== Résumé build MSI ===" + Write-Host "Version : ${{ steps.version.outputs.VERSION_DISPLAY }}" + Write-Host "WiX : v7.0.0" + Write-Host "Image runner : ${{ runner.os }} / ${{ runner.arch }}" + if (Test-Path "dist\$env:MSI_NAME") { + $size = [math]::Round((Get-Item "dist\$env:MSI_NAME").Length / 1MB, 1) + Write-Host "MSI : $env:MSI_NAME ($size MB) ✓" + } else { + Write-Host "MSI : ÉCHEC ✗" + } From 15e623ac5fe17fc2ad1c9b880a1a81a72a651750 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 21:58:07 +0200 Subject: [PATCH 23/82] Update QElectroTech.wxs --- build-aux/windows/QElectroTech.wxs | 342 ++++++++++++++++------------- 1 file changed, 194 insertions(+), 148 deletions(-) diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index e8ba64779..cb79b73b7 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -1,167 +1,213 @@ - - - +on: + workflow_dispatch: + inputs: + run_id: + description: "Run ID de 'Windows Build' (laisse vide pour le dernier run réussi)" + required: false + default: "" - +jobs: + build-msi: + name: Build MSI with WiX v7 + runs-on: windows-latest - - + steps: + # ---------------------------------------------------------------- + # 1. Checkout (to retrieve QElectroTech.wxs and sources) + # ---------------------------------------------------------------- + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 - - - - + # ---------------------------------------------------------------- + # 2. Download the portable artifact from the main build + # Requires windows-build.yml to upload an artifact named + # "qelectrotech-windows-portable" (fixed name) + # ---------------------------------------------------------------- + - name: Download portable artifact + uses: actions/download-artifact@v4 + with: + name: qelectrotech-windows-portable + path: artifact\files + run-id: ${{ github.event.inputs.run_id || github.run_id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + repository: ${{ github.repository }} - - - - - - - - - - - - + # ---------------------------------------------------------------- + # 3. Extraire la version depuis les sources + # ---------------------------------------------------------------- + - name: Extract version + id: version + shell: pwsh + run: | + # Version from qetversion.cpp (same logic as windows-build.yml) + $src = Get-Content "sources\qetversion.cpp" -Raw -ErrorAction SilentlyContinue + if ($src -match 'return QVersionNumber\{([^}]+)\}') { + $ver = $Matches[1] -replace '\s','' -replace ',','.' + } else { + # Fallback: CMakeLists.txt + $cmake = Get-Content "CMakeLists.txt" -Raw + if ($cmake -match 'project\s*\([^)]*VERSION\s+([\d]+\.[\d]+\.[\d]+)') { + $ver = $Matches[1] + } else { + $ver = "0.0.0" + } + } - - - - + # Numeric MSI version: 4 digits required (e.g. 0.100.1.0) + $verMsi = "$ver.0" - - - - + # Short SHA for the display version + $sha = git rev-parse --short HEAD 2>$null + if (-not $sha) { $sha = "unknown" } - - - + # Cumulative revision number (same calculation as windows-build.yml) + $count = git rev-list HEAD --count 2>$null + $rev = [int]$count + 473 - - - + $verDisplay = "${ver}-r${rev}-${sha}_x86_64-win64" - - - + echo "VERSION_MSI=$verMsi" >> $env:GITHUB_OUTPUT + echo "VERSION_DISPLAY=$verDisplay" >> $env:GITHUB_OUTPUT + Write-Host "Version MSI : $verMsi" + Write-Host "Version display : $verDisplay" - - - + # ---------------------------------------------------------------- + # 4. Installer WiX v7 via dotnet tool + # ---------------------------------------------------------------- + - name: Install WiX v7 + shell: pwsh + run: | + dotnet tool install --global wix --version 7.0.0 + $toolsPath = [System.IO.Path]::Combine($env:USERPROFILE, '.dotnet', 'tools') + echo $toolsPath >> $env:GITHUB_PATH + Write-Host "WiX v7 installé." - - - + # ---------------------------------------------------------------- + # 5. Accepter la licence OSMF WiX v7 + # Official CI/CD method: writes a sentinel file + # that authorises all subsequent wix commands in the job + # ---------------------------------------------------------------- + - name: Accept WiX EULA + shell: pwsh + run: | + wix eula accept wix7 + Write-Host "EULA WiX v7 acceptée." - - - - - - - - - - - + # ---------------------------------------------------------------- + # 6. Installer l'extension WixUI + # ---------------------------------------------------------------- + - name: Install WiX UI extension + shell: pwsh + run: | + wix extension add WixToolset.UI.wixext/7.0.0 + Write-Host "Extension UI installée." - - - - - - - - - + # ---------------------------------------------------------------- + # 7. Check that the WXS file exists in the repository + # ---------------------------------------------------------------- + - name: Check WXS file + shell: pwsh + run: | + $wxs = "build-aux\windows\QElectroTech.wxs" + if (-not (Test-Path $wxs)) { + Write-Error "Fichier WXS introuvable : $wxs" + Write-Host "Contenu de build-aux\windows\ :" + Get-ChildItem "build-aux\windows\" -ErrorAction SilentlyContinue + exit 1 + } + Write-Host "WXS trouvé : $wxs" - - + # ---------------------------------------------------------------- + # 8. Check the artifact structure and locate files/ + # ---------------------------------------------------------------- + - name: Check artifact structure + shell: pwsh + run: | + Write-Host "=== Contenu de artifact\files (2 niveaux) ===" + Get-ChildItem -Path "artifact\files" -Depth 2 | + Select-Object FullName | Format-Table -AutoSize - - - - - - - - - - - - - + # Search for qelectrotech.exe in the artifact + $exe = Get-ChildItem -Path "artifact\files" -Filter "qelectrotech.exe" -Recurse | Select-Object -First 1 + if (-not $exe) { + Write-Error "qelectrotech.exe introuvable dans l'artifact" + exit 1 + } + Write-Host "Executable : $($exe.FullName) ($([math]::Round($exe.Length/1MB,1)) MB)" - - + # FilesDir = folder containing bin\ + $binDir = $exe.Directory.FullName + $filesDir = Split-Path $binDir -Parent - - - - - + echo "FILES_DIR=$filesDir" >> $env:GITHUB_ENV + Write-Host "FILES_DIR : $filesDir" - - + # ---------------------------------------------------------------- + # 9. Construire le MSI + # ---------------------------------------------------------------- + - name: Build MSI + shell: pwsh + run: | + $version = "${{ steps.version.outputs.VERSION_MSI }}" + $verDisplay = "${{ steps.version.outputs.VERSION_DISPLAY }}" + $filesDir = $env:FILES_DIR + $wxs = "build-aux\windows\QElectroTech.wxs" + $outputName = "QElectroTech-${verDisplay}.msi" + + New-Item -ItemType Directory -Force -Path "dist" | Out-Null + + Write-Host "=== wix build ===" + Write-Host " WXS : $wxs" + Write-Host " Version : $version" + Write-Host " FilesDir : $filesDir" + Write-Host " Output : dist\$outputName" + + wix build $wxs ` + -arch x64 ` + -d "Version=$version" ` + -d "ProductVersion=$verDisplay" ` + -d "FilesDir=$filesDir" ` + -ext WixToolset.UI.wixext ` + -o "dist\$outputName" + + if (-not (Test-Path "dist\$outputName")) { + Write-Error "MSI non généré : dist\$outputName" + exit 1 + } + + $size = [math]::Round((Get-Item "dist\$outputName").Length / 1MB, 1) + Write-Host "MSI généré : dist\$outputName ($size MB) ✓" + echo "MSI_NAME=$outputName" >> $env:GITHUB_ENV + + # ---------------------------------------------------------------- + # 10. Upload de l'artifact MSI + # ---------------------------------------------------------------- + - name: Upload MSI artifact + uses: actions/upload-artifact@v4 + with: + name: qelectrotech-windows-msi + path: dist\*.msi + retention-days: 14 + if-no-files-found: error + + # ---------------------------------------------------------------- + # 11. Summary + # ---------------------------------------------------------------- + - name: Summary + if: always() + shell: pwsh + run: | + Write-Host "=== Résumé build MSI ===" + Write-Host "Version : ${{ steps.version.outputs.VERSION_DISPLAY }}" + Write-Host "WiX : v7.0.0" + Write-Host "Image runner : ${{ runner.os }} / ${{ runner.arch }}" + if (Test-Path "dist\$env:MSI_NAME") { + $size = [math]::Round((Get-Item "dist\$env:MSI_NAME").Length / 1MB, 1) + Write-Host "MSI : $env:MSI_NAME ($size MB) ✓" + } else { + Write-Host "MSI : ÉCHEC ✗" + } From ef75ee736a9a1a73b58123637abf51468d1c9b3f Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 22:02:53 +0200 Subject: [PATCH 24/82] Update windows-msi.yml --- .github/workflows/windows-msi.yml | 88 ++++++++++++++----------------- 1 file changed, 41 insertions(+), 47 deletions(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 818c22704..3de1856a6 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: inputs: run_id: - description: "Run ID de 'Windows Build' (laisse vide pour le dernier run réussi)" + description: "Run ID of 'Windows Build' (leave empty for the latest successful run)" required: false default: "" @@ -15,7 +15,7 @@ jobs: steps: # ---------------------------------------------------------------- - # 1. Checkout (pour récupérer QElectroTech.wxs et les sources) + # 1. Checkout (to retrieve QElectroTech.wxs and sources) # ---------------------------------------------------------------- - name: Checkout uses: actions/checkout@v4 @@ -23,32 +23,32 @@ jobs: fetch-depth: 0 # ---------------------------------------------------------------- - # 2. Télécharger l'artifact portable du build principal - # Nécessite que windows-build.yml uploade un artifact nommé - # "qelectrotech-windows-portable" (nom fixe) + # 2. Download the portable artifact from the main build + # Requires windows-build.yml to upload an artifact named + # "qelectrotech-windows-portable" (fixed name) # ---------------------------------------------------------------- - name: Download portable artifact uses: actions/download-artifact@v4 with: name: qelectrotech-windows-portable path: artifact\files - run-id: ${{ github.event.inputs.run_id != '' && github.event.inputs.run_id || github.run_id }} + run-id: ${{ github.event.inputs.run_id || github.run_id }} github-token: ${{ secrets.GITHUB_TOKEN }} repository: ${{ github.repository }} # ---------------------------------------------------------------- - # 3. Extraire la version depuis les sources + # 3. Extract version from sources # ---------------------------------------------------------------- - name: Extract version id: version shell: pwsh run: | - # Version depuis qetversion.cpp (même logique que windows-build.yml) + # Version from qetversion.cpp (same logic as windows-build.yml) $src = Get-Content "sources\qetversion.cpp" -Raw -ErrorAction SilentlyContinue if ($src -match 'return QVersionNumber\{([^}]+)\}') { $ver = $Matches[1] -replace '\s','' -replace ',','.' } else { - # Fallback : CMakeLists.txt + # Fallback: CMakeLists.txt $cmake = Get-Content "CMakeLists.txt" -Raw if ($cmake -match 'project\s*\([^)]*VERSION\s+([\d]+\.[\d]+\.[\d]+)') { $ver = $Matches[1] @@ -57,14 +57,14 @@ jobs: } } - # Version numérique MSI : 4 chiffres obligatoire (ex. 0.100.1.0) + # Numeric MSI version: 4 digits required (e.g. 0.100.1.0) $verMsi = "$ver.0" - # Short SHA pour la version lisible + # Short SHA for the display version $sha = git rev-parse --short HEAD 2>$null if (-not $sha) { $sha = "unknown" } - # Numéro de révision cumulatif (même calcul que windows-build.yml) + # Cumulative revision number (same calculation as windows-build.yml) $count = git rev-list HEAD --count 2>$null $rev = [int]$count + 473 @@ -76,76 +76,70 @@ jobs: Write-Host "Version display : $verDisplay" # ---------------------------------------------------------------- - # 4. Installer WiX v7 via dotnet tool + # 4. Install WiX v7, accept EULA and install WixUI extension + # All done in one step: PATH is updated within the same step + # so wix is immediately available for eula and extension commands # ---------------------------------------------------------------- - name: Install WiX v7 shell: pwsh run: | dotnet tool install --global wix --version 7.0.0 + # Update PATH immediately for the rest of this step $toolsPath = [System.IO.Path]::Combine($env:USERPROFILE, '.dotnet', 'tools') + $env:PATH = "$toolsPath;$env:PATH" + # Also export for subsequent steps echo $toolsPath >> $env:GITHUB_PATH - Write-Host "WiX v7 installé." - - # ---------------------------------------------------------------- - # 5. Installer l'extension WixUI - # WIX_ACCEPT_EULA=true est la méthode officielle pour accepter - # la licence OSMF de WiX v7 en environnement CI - # ---------------------------------------------------------------- - - name: Install WiX UI extension - shell: pwsh - env: - WIX_ACCEPT_EULA: true - run: | + # Accept OSMF EULA (official CI/CD method: writes a sentinel file) + wix eula accept wix7 + # Install WixUI extension wix extension add WixToolset.UI.wixext/7.0.0 - Write-Host "Extension UI installée." + Write-Host "WiX v7 installed, EULA accepted, UI extension added." # ---------------------------------------------------------------- - # 6. Vérifier la présence du fichier WXS dans le dépôt + # 5. Check that the WXS file exists in the repository # ---------------------------------------------------------------- - name: Check WXS file shell: pwsh run: | $wxs = "build-aux\windows\QElectroTech.wxs" if (-not (Test-Path $wxs)) { - Write-Error "Fichier WXS introuvable : $wxs" - Write-Host "Contenu de build-aux\windows\ :" + Write-Error "WXS file not found: $wxs" + Write-Host "Contents of build-aux\windows\ :" Get-ChildItem "build-aux\windows\" -ErrorAction SilentlyContinue exit 1 } - Write-Host "WXS trouvé : $wxs" + Write-Host "WXS found: $wxs" # ---------------------------------------------------------------- - # 7. Vérifier la structure de l'artifact et localiser files/ + # 6. Check the artifact structure and locate files/ # ---------------------------------------------------------------- - name: Check artifact structure shell: pwsh run: | - Write-Host "=== Contenu de artifact\files (2 niveaux) ===" + Write-Host "=== Contents of artifact\files (2 levels) ===" Get-ChildItem -Path "artifact\files" -Depth 2 | Select-Object FullName | Format-Table -AutoSize - # Chercher qelectrotech.exe dans l'artifact + # Search for qelectrotech.exe in the artifact $exe = Get-ChildItem -Path "artifact\files" -Filter "qelectrotech.exe" -Recurse | Select-Object -First 1 if (-not $exe) { - Write-Error "qelectrotech.exe introuvable dans l'artifact" + Write-Error "qelectrotech.exe not found in artifact" exit 1 } - Write-Host "Executable : $($exe.FullName) ($([math]::Round($exe.Length/1MB,1)) MB)" + Write-Host "Executable: $($exe.FullName) ($([math]::Round($exe.Length/1MB,1)) MB)" - # FilesDir = dossier contenant bin\ + # FilesDir = folder containing bin\ $binDir = $exe.Directory.FullName $filesDir = Split-Path $binDir -Parent echo "FILES_DIR=$filesDir" >> $env:GITHUB_ENV - Write-Host "FILES_DIR : $filesDir" + Write-Host "FILES_DIR: $filesDir" # ---------------------------------------------------------------- - # 8. Construire le MSI + # 7. Build the MSI # ---------------------------------------------------------------- - name: Build MSI shell: pwsh - env: - WIX_ACCEPT_EULA: true run: | $version = "${{ steps.version.outputs.VERSION_MSI }}" $verDisplay = "${{ steps.version.outputs.VERSION_DISPLAY }}" @@ -170,16 +164,16 @@ jobs: -o "dist\$outputName" if (-not (Test-Path "dist\$outputName")) { - Write-Error "MSI non généré : dist\$outputName" + Write-Error "MSI not generated: dist\$outputName" exit 1 } $size = [math]::Round((Get-Item "dist\$outputName").Length / 1MB, 1) - Write-Host "MSI généré : dist\$outputName ($size MB) ✓" + Write-Host "MSI generated: dist\$outputName ($size MB) ✓" echo "MSI_NAME=$outputName" >> $env:GITHUB_ENV # ---------------------------------------------------------------- - # 9. Upload de l'artifact MSI + # 8. Upload the MSI artifact # ---------------------------------------------------------------- - name: Upload MSI artifact uses: actions/upload-artifact@v4 @@ -190,19 +184,19 @@ jobs: if-no-files-found: error # ---------------------------------------------------------------- - # 10. Résumé + # 9. Summary # ---------------------------------------------------------------- - name: Summary if: always() shell: pwsh run: | - Write-Host "=== Résumé build MSI ===" + Write-Host "=== MSI build summary ===" Write-Host "Version : ${{ steps.version.outputs.VERSION_DISPLAY }}" Write-Host "WiX : v7.0.0" - Write-Host "Image runner : ${{ runner.os }} / ${{ runner.arch }}" + Write-Host "Runner image : ${{ runner.os }} / ${{ runner.arch }}" if (Test-Path "dist\$env:MSI_NAME") { $size = [math]::Round((Get-Item "dist\$env:MSI_NAME").Length / 1MB, 1) Write-Host "MSI : $env:MSI_NAME ($size MB) ✓" } else { - Write-Host "MSI : ÉCHEC ✗" + Write-Host "MSI : FAILED ✗" } From 703797bb9709316e4ca8e783961f8af15bdf5418 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 22:08:24 +0200 Subject: [PATCH 25/82] Update QElectroTech.wxs --- build-aux/windows/QElectroTech.wxs | 327 ++++++++++++----------------- 1 file changed, 133 insertions(+), 194 deletions(-) diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index cb79b73b7..4200870e3 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -1,213 +1,152 @@ -name: Windows MSI (WiX v7) + + + -jobs: - build-msi: - name: Build MSI with WiX v7 - runs-on: windows-latest + - steps: - # ---------------------------------------------------------------- - # 1. Checkout (to retrieve QElectroTech.wxs and sources) - # ---------------------------------------------------------------- - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 + + - # ---------------------------------------------------------------- - # 2. Download the portable artifact from the main build - # Requires windows-build.yml to upload an artifact named - # "qelectrotech-windows-portable" (fixed name) - # ---------------------------------------------------------------- - - name: Download portable artifact - uses: actions/download-artifact@v4 - with: - name: qelectrotech-windows-portable - path: artifact\files - run-id: ${{ github.event.inputs.run_id || github.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - repository: ${{ github.repository }} + + + + - # ---------------------------------------------------------------- - # 3. Extraire la version depuis les sources - # ---------------------------------------------------------------- - - name: Extract version - id: version - shell: pwsh - run: | - # Version from qetversion.cpp (same logic as windows-build.yml) - $src = Get-Content "sources\qetversion.cpp" -Raw -ErrorAction SilentlyContinue - if ($src -match 'return QVersionNumber\{([^}]+)\}') { - $ver = $Matches[1] -replace '\s','' -replace ',','.' - } else { - # Fallback: CMakeLists.txt - $cmake = Get-Content "CMakeLists.txt" -Raw - if ($cmake -match 'project\s*\([^)]*VERSION\s+([\d]+\.[\d]+\.[\d]+)') { - $ver = $Matches[1] - } else { - $ver = "0.0.0" - } - } + + + + - # Numeric MSI version: 4 digits required (e.g. 0.100.1.0) - $verMsi = "$ver.0" + + + + - # Short SHA for the display version - $sha = git rev-parse --short HEAD 2>$null - if (-not $sha) { $sha = "unknown" } + + + + - # Cumulative revision number (same calculation as windows-build.yml) - $count = git rev-list HEAD --count 2>$null - $rev = [int]$count + 473 + + + - $verDisplay = "${ver}-r${rev}-${sha}_x86_64-win64" + + + - echo "VERSION_MSI=$verMsi" >> $env:GITHUB_OUTPUT - echo "VERSION_DISPLAY=$verDisplay" >> $env:GITHUB_OUTPUT - Write-Host "Version MSI : $verMsi" - Write-Host "Version display : $verDisplay" + + + - # ---------------------------------------------------------------- - # 4. Installer WiX v7 via dotnet tool - # ---------------------------------------------------------------- - - name: Install WiX v7 - shell: pwsh - run: | - dotnet tool install --global wix --version 7.0.0 - $toolsPath = [System.IO.Path]::Combine($env:USERPROFILE, '.dotnet', 'tools') - echo $toolsPath >> $env:GITHUB_PATH - Write-Host "WiX v7 installé." + + + - # ---------------------------------------------------------------- - # 5. Accepter la licence OSMF WiX v7 - # Official CI/CD method: writes a sentinel file - # that authorises all subsequent wix commands in the job - # ---------------------------------------------------------------- - - name: Accept WiX EULA - shell: pwsh - run: | - wix eula accept wix7 - Write-Host "EULA WiX v7 acceptée." + + + - # ---------------------------------------------------------------- - # 6. Installer l'extension WixUI - # ---------------------------------------------------------------- - - name: Install WiX UI extension - shell: pwsh - run: | - wix extension add WixToolset.UI.wixext/7.0.0 - Write-Host "Extension UI installée." + + + + + + + + + + + - # ---------------------------------------------------------------- - # 7. Check that the WXS file exists in the repository - # ---------------------------------------------------------------- - - name: Check WXS file - shell: pwsh - run: | - $wxs = "build-aux\windows\QElectroTech.wxs" - if (-not (Test-Path $wxs)) { - Write-Error "Fichier WXS introuvable : $wxs" - Write-Host "Contenu de build-aux\windows\ :" - Get-ChildItem "build-aux\windows\" -ErrorAction SilentlyContinue - exit 1 - } - Write-Host "WXS trouvé : $wxs" + + + + + + + + + - # ---------------------------------------------------------------- - # 8. Check the artifact structure and locate files/ - # ---------------------------------------------------------------- - - name: Check artifact structure - shell: pwsh - run: | - Write-Host "=== Contenu de artifact\files (2 niveaux) ===" - Get-ChildItem -Path "artifact\files" -Depth 2 | - Select-Object FullName | Format-Table -AutoSize + + - # Search for qelectrotech.exe in the artifact - $exe = Get-ChildItem -Path "artifact\files" -Filter "qelectrotech.exe" -Recurse | Select-Object -First 1 - if (-not $exe) { - Write-Error "qelectrotech.exe introuvable dans l'artifact" - exit 1 - } - Write-Host "Executable : $($exe.FullName) ($([math]::Round($exe.Length/1MB,1)) MB)" + + + + + + + + + + + + + - # FilesDir = folder containing bin\ - $binDir = $exe.Directory.FullName - $filesDir = Split-Path $binDir -Parent + + - echo "FILES_DIR=$filesDir" >> $env:GITHUB_ENV - Write-Host "FILES_DIR : $filesDir" + + + + + - # ---------------------------------------------------------------- - # 9. Construire le MSI - # ---------------------------------------------------------------- - - name: Build MSI - shell: pwsh - run: | - $version = "${{ steps.version.outputs.VERSION_MSI }}" - $verDisplay = "${{ steps.version.outputs.VERSION_DISPLAY }}" - $filesDir = $env:FILES_DIR - $wxs = "build-aux\windows\QElectroTech.wxs" - $outputName = "QElectroTech-${verDisplay}.msi" - - New-Item -ItemType Directory -Force -Path "dist" | Out-Null - - Write-Host "=== wix build ===" - Write-Host " WXS : $wxs" - Write-Host " Version : $version" - Write-Host " FilesDir : $filesDir" - Write-Host " Output : dist\$outputName" - - wix build $wxs ` - -arch x64 ` - -d "Version=$version" ` - -d "ProductVersion=$verDisplay" ` - -d "FilesDir=$filesDir" ` - -ext WixToolset.UI.wixext ` - -o "dist\$outputName" - - if (-not (Test-Path "dist\$outputName")) { - Write-Error "MSI non généré : dist\$outputName" - exit 1 - } - - $size = [math]::Round((Get-Item "dist\$outputName").Length / 1MB, 1) - Write-Host "MSI généré : dist\$outputName ($size MB) ✓" - echo "MSI_NAME=$outputName" >> $env:GITHUB_ENV - - # ---------------------------------------------------------------- - # 10. Upload de l'artifact MSI - # ---------------------------------------------------------------- - - name: Upload MSI artifact - uses: actions/upload-artifact@v4 - with: - name: qelectrotech-windows-msi - path: dist\*.msi - retention-days: 14 - if-no-files-found: error - - # ---------------------------------------------------------------- - # 11. Summary - # ---------------------------------------------------------------- - - name: Summary - if: always() - shell: pwsh - run: | - Write-Host "=== Résumé build MSI ===" - Write-Host "Version : ${{ steps.version.outputs.VERSION_DISPLAY }}" - Write-Host "WiX : v7.0.0" - Write-Host "Image runner : ${{ runner.os }} / ${{ runner.arch }}" - if (Test-Path "dist\$env:MSI_NAME") { - $size = [math]::Round((Get-Item "dist\$env:MSI_NAME").Length / 1MB, 1) - Write-Host "MSI : $env:MSI_NAME ($size MB) ✓" - } else { - Write-Host "MSI : ÉCHEC ✗" - } + + From efa74dd0f53a184c8210595f40e9ab7f9bd0a89a Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 22:12:42 +0200 Subject: [PATCH 26/82] Update QElectroTech.wxs --- build-aux/windows/QElectroTech.wxs | 64 +++++++++++++++--------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index 4200870e3..56f04d805 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -1,79 +1,79 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -105,7 +105,7 @@ @@ -119,12 +119,12 @@ - + @@ -139,14 +139,14 @@ - - + + - + - + From 31f946426b3b054a9abaf73fe0443976732eeeac Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 22:18:58 +0200 Subject: [PATCH 27/82] Update QElectroTech.wxs --- build-aux/windows/QElectroTech.wxs | 52 ++++-------------------------- 1 file changed, 6 insertions(+), 46 deletions(-) diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index 56f04d805..29d78542c 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -32,44 +32,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - + - + From 48fec1db980d41acb9c43a034296cdde9381a97e Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 22:30:23 +0200 Subject: [PATCH 28/82] Update QElectroTech.wxs --- build-aux/windows/QElectroTech.wxs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index 29d78542c..1d39e34eb 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -1,7 +1,7 @@ + + Date: Tue, 12 May 2026 22:44:12 +0200 Subject: [PATCH 29/82] Update windows-msi.yml --- .github/workflows/windows-msi.yml | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 3de1856a6..8ecef3f50 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -136,7 +136,23 @@ jobs: Write-Host "FILES_DIR: $filesDir" # ---------------------------------------------------------------- - # 7. Build the MSI + # 7. Replace Lancer QET.bat with the MSI-specific version + # The portable version uses relative paths suited for the zip. + # The MSI version uses %~dp0 to resolve paths relative to + # the installation directory in Program Files. + # ---------------------------------------------------------------- + - name: Replace Lancer QET.bat for MSI + shell: pwsh + run: | + $bat = "$env:FILES_DIR\Lancer QET.bat" + $content = "@echo off`r`nstart `"`" `"%~dp0bin\qelectrotech.exe`" --common-elements-dir=`"%~dp0elements/`" --common-tbt-dir=`"%~dp0titleblocks/`" --lang-dir=`"%~dp0lang/`" -style windowsvista`r`n" + [System.IO.File]::WriteAllText($bat, $content, [System.Text.Encoding]::ASCII) + Write-Host "Lancer QET.bat replaced for MSI installation." + Write-Host "=== Content of new Lancer QET.bat ===" + Get-Content $bat + + # ---------------------------------------------------------------- + # 8. Build the MSI # ---------------------------------------------------------------- - name: Build MSI shell: pwsh @@ -173,7 +189,7 @@ jobs: echo "MSI_NAME=$outputName" >> $env:GITHUB_ENV # ---------------------------------------------------------------- - # 8. Upload the MSI artifact + # 9. Upload the MSI artifact # ---------------------------------------------------------------- - name: Upload MSI artifact uses: actions/upload-artifact@v4 @@ -184,7 +200,7 @@ jobs: if-no-files-found: error # ---------------------------------------------------------------- - # 9. Summary + # 10. Summary # ---------------------------------------------------------------- - name: Summary if: always() From e542a05d3f9d8d8a309f6bfe0df0ddf645430d10 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 22:53:33 +0200 Subject: [PATCH 30/82] Update QElectroTech.wxs --- build-aux/windows/QElectroTech.wxs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index 1d39e34eb..c0cbaec82 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -7,6 +7,7 @@ -d FilesDir= -d Version= -d ProductVersion= + -d LicenseRtf= --> @@ -36,7 +37,6 @@ @@ -102,8 +102,10 @@ - - + + + + From 82b8e7947e5ed9ecfb07521007b7af67982c7a3e Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 22:54:20 +0200 Subject: [PATCH 31/82] Update windows-msi.yml --- .github/workflows/windows-msi.yml | 51 ++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 8ecef3f50..c9d1ca66d 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -136,7 +136,47 @@ jobs: Write-Host "FILES_DIR: $filesDir" # ---------------------------------------------------------------- - # 7. Replace Lancer QET.bat with the MSI-specific version + # 7. Convert LICENSE (GPL-2) to RTF for the WixUI licence screen + # RTF is the only format accepted by Windows Installer. + # The conversion wraps plain text lines in basic RTF markup. + # ---------------------------------------------------------------- + - name: Convert LICENSE to RTF + shell: pwsh + run: | + $licSrc = "LICENSE" + $licRtf = "$env:TEMP\License.rtf" + + if (-not (Test-Path $licSrc)) { + Write-Error "LICENSE file not found in repository root" + exit 1 + } + + $lines = Get-Content $licSrc -Encoding UTF8 + + # RTF header — Courier New, 9pt, black + $rtf = New-Object System.Text.StringBuilder + [void]$rtf.AppendLine('{\rtf1\ansi\ansicpg1252\deff0') + [void]$rtf.AppendLine('{\fonttbl{\f0\fmodern\fprq1\fcharset0 Courier New;}}') + [void]$rtf.AppendLine('{\colortbl;\red0\green0\blue0;}') + [void]$rtf.AppendLine('\f0\fs18\cf1') + + foreach ($line in $lines) { + # Escape RTF special characters + $escaped = $line ` + -replace '\\', '\\\\' ` + -replace '\{', '\{' ` + -replace '\}', '\}' + [void]$rtf.AppendLine("$escaped\par") + } + + [void]$rtf.AppendLine('}') + + [System.IO.File]::WriteAllText($licRtf, $rtf.ToString(), [System.Text.Encoding]::ASCII) + echo "LICENSE_RTF=$licRtf" >> $env:GITHUB_ENV + Write-Host "License.rtf generated: $licRtf ($([math]::Round((Get-Item $licRtf).Length/1KB,1)) KB)" + + # ---------------------------------------------------------------- + # 8. Replace Lancer QET.bat with the MSI-specific version # The portable version uses relative paths suited for the zip. # The MSI version uses %~dp0 to resolve paths relative to # the installation directory in Program Files. @@ -152,7 +192,7 @@ jobs: Get-Content $bat # ---------------------------------------------------------------- - # 8. Build the MSI + # 9. Build the MSI # ---------------------------------------------------------------- - name: Build MSI shell: pwsh @@ -160,6 +200,7 @@ jobs: $version = "${{ steps.version.outputs.VERSION_MSI }}" $verDisplay = "${{ steps.version.outputs.VERSION_DISPLAY }}" $filesDir = $env:FILES_DIR + $licRtf = $env:LICENSE_RTF $wxs = "build-aux\windows\QElectroTech.wxs" $outputName = "QElectroTech-${verDisplay}.msi" @@ -169,6 +210,7 @@ jobs: Write-Host " WXS : $wxs" Write-Host " Version : $version" Write-Host " FilesDir : $filesDir" + Write-Host " LicenseRtf : $licRtf" Write-Host " Output : dist\$outputName" wix build $wxs ` @@ -176,6 +218,7 @@ jobs: -d "Version=$version" ` -d "ProductVersion=$verDisplay" ` -d "FilesDir=$filesDir" ` + -d "LicenseRtf=$licRtf" ` -ext WixToolset.UI.wixext ` -o "dist\$outputName" @@ -189,7 +232,7 @@ jobs: echo "MSI_NAME=$outputName" >> $env:GITHUB_ENV # ---------------------------------------------------------------- - # 9. Upload the MSI artifact + # 10. Upload the MSI artifact # ---------------------------------------------------------------- - name: Upload MSI artifact uses: actions/upload-artifact@v4 @@ -200,7 +243,7 @@ jobs: if-no-files-found: error # ---------------------------------------------------------------- - # 10. Summary + # 11. Summary # ---------------------------------------------------------------- - name: Summary if: always() From 7a8cee0ce6ca3e906fb9cce6a4f55377a5ee65e1 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 22:58:00 +0200 Subject: [PATCH 32/82] Update QElectroTech.wxs --- build-aux/windows/QElectroTech.wxs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index c0cbaec82..4f6f62c22 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -103,9 +103,10 @@ - - - + + + + From 8e327448ccf1112ac24c714fa6ac0f28fe351ca7 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 23:01:54 +0200 Subject: [PATCH 33/82] Update QElectroTech.wxs --- build-aux/windows/QElectroTech.wxs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index 4f6f62c22..3ffc62269 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -105,8 +105,8 @@ - - + + From acfdab77fad7427ff656379d461d9db10e3568dc Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 23:33:27 +0200 Subject: [PATCH 34/82] Update windows-msi.yml --- .github/workflows/windows-msi.yml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index c9d1ca66d..15131bcf5 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -243,7 +243,21 @@ jobs: if-no-files-found: error # ---------------------------------------------------------------- - # 11. Summary + # 11. Upload MSI to nightly release + # The nightly release is created/updated by windows-build.yml. + # The MSI is added here so the GitHub Pages can link to it. + # ---------------------------------------------------------------- + - name: Upload MSI to nightly release + uses: softprops/action-gh-release@v2 + with: + tag_name: nightly + files: dist/*.msi + fail_on_unmatched_files: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # ---------------------------------------------------------------- + # 12. Summary # ---------------------------------------------------------------- - name: Summary if: always() From 1b522c251bcb84e9f0bf373145b604a4fd391ec4 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Tue, 12 May 2026 23:34:10 +0200 Subject: [PATCH 35/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index a09da6230..080a61260 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -421,6 +421,21 @@ jobs: INSTALLER_URL="https://github.com/$REPO/releases/download/nightly/$EXE_NAME" ZIP_NAME=$(ls downloaded/portable/*.zip | xargs -I{} basename {}) PORTABLE_URL="https://github.com/$REPO/releases/download/nightly/$ZIP_NAME" + # MSI — may not exist if windows-msi.yml has not been run yet + MSI_NAME=$(gh release view nightly --json assets --jq '.assets[].name' 2>/dev/null \ + | grep '\.msi$' | head -1 || echo "") + if [ -n "$MSI_NAME" ]; then + MSI_URL="https://github.com/$REPO/releases/download/nightly/$MSI_NAME" + MSI_BLOCK=' + + + Windows Installer + .msi — for enterprise / GPO deployment + + ' + else + MSI_BLOCK='' + fi mkdir -p gh-pages cat > gh-pages/index.html << HTMLEOF @@ -512,6 +527,7 @@ jobs: box-shadow: 0 4px 12px rgba(0,0,0,0.15); } .btn-primary { background: #2b6cb0; color: white; } + .btn-msi { background: #6b46c1; color: white; } .btn-secondary { background: #edf2f7; color: #2d3748; } .btn-icon { font-size: 1.3em; } .btn-text small { @@ -563,6 +579,7 @@ jobs: .exe — recommended, includes all dependencies + $MSI_BLOCK 📦 From 61319bbbd6993eb1a61d9274cb08a22748075a6d Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Wed, 13 May 2026 00:08:18 +0200 Subject: [PATCH 36/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 080a61260..305c8db21 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -610,9 +610,11 @@ jobs: - name: Commit and push to gh-pages run: | cd gh-pages + # Disable Jekyll so GitHub Pages serves index.html as-is + touch .nojekyll git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - git add index.html + git add .nojekyll index.html git diff --staged --quiet \ || git commit -m "nightly: build #${{ github.run_number }} (${{ github.sha }})" git push origin gh-pages From f6b93c6b717d6172519246aa9d8e5b695b3d7166 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Wed, 13 May 2026 00:40:17 +0200 Subject: [PATCH 37/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 305c8db21..ddb3fe8e4 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -366,14 +366,10 @@ jobs: if: github.event_name != 'pull_request' permissions: contents: write + pages: write + id-token: write steps: - - name: Checkout gh-pages branch - uses: actions/checkout@v4 - with: - ref: gh-pages - path: gh-pages - - name: Download installer artifact uses: actions/download-artifact@v4 with: @@ -607,14 +603,13 @@ jobs: HTMLEOF - - name: Commit and push to gh-pages - run: | - cd gh-pages - # Disable Jekyll so GitHub Pages serves index.html as-is - touch .nojekyll - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git add .nojekyll index.html - git diff --staged --quiet \ - || git commit -m "nightly: build #${{ github.run_number }} (${{ github.sha }})" - git push origin gh-pages + - name: Add .nojekyll to disable Jekyll processing + run: touch gh-pages/.nojekyll + + - name: Upload GitHub Pages artifact + uses: actions/upload-pages-artifact@v3 + with: + path: gh-pages/ + + - name: Deploy to GitHub Pages + uses: actions/deploy-pages@v4 From d781105dfd9e6bbee147337f136e15906c46fa0a Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Wed, 13 May 2026 01:02:32 +0200 Subject: [PATCH 38/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 226 ++++++---------------------- 1 file changed, 48 insertions(+), 178 deletions(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index ddb3fe8e4..103feb64e 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -407,6 +407,8 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Generate download page (index.html) + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | DATE=$(date -u '+%Y-%m-%d %H:%M UTC') SHORT="${{ github.sha }}" @@ -417,191 +419,59 @@ jobs: INSTALLER_URL="https://github.com/$REPO/releases/download/nightly/$EXE_NAME" ZIP_NAME=$(ls downloaded/portable/*.zip | xargs -I{} basename {}) PORTABLE_URL="https://github.com/$REPO/releases/download/nightly/$ZIP_NAME" - # MSI — may not exist if windows-msi.yml has not been run yet MSI_NAME=$(gh release view nightly --json assets --jq '.assets[].name' 2>/dev/null \ | grep '\.msi$' | head -1 || echo "") if [ -n "$MSI_NAME" ]; then MSI_URL="https://github.com/$REPO/releases/download/nightly/$MSI_NAME" - MSI_BLOCK=' - - - Windows Installer - .msi — for enterprise / GPO deployment - - ' else - MSI_BLOCK='' + MSI_URL="" fi - mkdir -p gh-pages - cat > gh-pages/index.html << HTMLEOF - - - - - - QElectroTech – Nightly Builds - - - -
-

⚡ QElectroTech

-

Nightly Windows Builds

-
- -
-
-

Build info

-
- 📅  $DATE
- 🔀  Commit $SHORT
- 🔧  CI Run #${{ github.run_number }} - nightly -
-
- ⚠️ This is a development version; it introduces new features you want, - but may cause bugs that have not yet been identified yet in master. - For production use, download a - stable release. -
-
- - -
- - - - - HTMLEOF + python3 -c " +import os, sys +date=os.environ['DATE']; short=os.environ['SHORT']; repo=os.environ['REPO'] +run_url=os.environ['RUN_URL']; run_num='${{ github.run_number }}'; sha='${{ github.sha }}' +inst=os.environ['INSTALLER_URL']; port=os.environ['PORTABLE_URL']; msi_url=os.environ.get('MSI_URL','') +msi_block=f'''Windows Installer .msi.msi - for enterprise/GPO deployment''' if msi_url else '' +html=f''' + +QElectroTech - Nightly Builds + +

⚡ QElectroTech

Nightly Windows Builds

+
+

Build info

+
📅  {date}
+🔀  Commit {short}
+🔧  CI Run #{run_num} nightly
+
⚠ This is a development version. For production use, download a stable release.
+
+ +''' +open('gh-pages/index.html','w',encoding='utf-8').write(html) +print('index.html written OK') +" - name: Add .nojekyll to disable Jekyll processing run: touch gh-pages/.nojekyll From 526e39e9095223acbda87bd239d377257bea25b0 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Wed, 13 May 2026 01:05:31 +0200 Subject: [PATCH 39/82] Add files via upload --- build-aux/windows/generate-page.py | 112 +++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 build-aux/windows/generate-page.py diff --git a/build-aux/windows/generate-page.py b/build-aux/windows/generate-page.py new file mode 100644 index 000000000..df58664d4 --- /dev/null +++ b/build-aux/windows/generate-page.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 +""" +generate-page.py — Generates gh-pages/index.html for QElectroTech nightly builds. +Called from windows-build.yml deploy-pages job. +Environment variables required: + DATE, SHORT, REPO, SHA, RUN_URL, RUN_NUMBER, + INSTALLER_URL, PORTABLE_URL, MSI_URL (optional) +""" +import os + +date = os.environ.get("DATE", "") +short = os.environ.get("SHORT", "") +repo = os.environ.get("REPO", "") +sha = os.environ.get("SHA", "") +run_url = os.environ.get("RUN_URL", "") +run_number = os.environ.get("RUN_NUMBER", "") +installer_url = os.environ.get("INSTALLER_URL", "") +portable_url = os.environ.get("PORTABLE_URL", "") +msi_url = os.environ.get("MSI_URL", "") + +msi_block = "" +if msi_url: + msi_block = f""" + + +Windows Installer .msi.msi — for enterprise / GPO deployment +""" + +html = f""" + + + + +QElectroTech – Nightly Builds + + + +
+

⚡ QElectroTech

+

Nightly Windows Builds

+
+
+
+

Build info

+
+📅  {date}
+🔀  Commit {short}
+🔧  CI Run #{run_number} +nightly +
+
+⚠️ This is a development version; it introduces new features you want, +but may cause bugs that have not yet been identified yet in master. +For production use, download a stable release. +
+
+ +
+ + +""" + +os.makedirs("gh-pages", exist_ok=True) +with open("gh-pages/index.html", "w", encoding="utf-8") as f: + f.write(html) +print("index.html written OK") From b016cc9f54155f4c056c1121cd2cd53f614832c1 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Wed, 13 May 2026 01:06:17 +0200 Subject: [PATCH 40/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 59 ++++------------------------- 1 file changed, 8 insertions(+), 51 deletions(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 103feb64e..307f210f4 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -409,6 +409,7 @@ jobs: - name: Generate download page (index.html) env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DATE: "placeholder" run: | DATE=$(date -u '+%Y-%m-%d %H:%M UTC') SHORT="${{ github.sha }}" @@ -421,57 +422,13 @@ jobs: PORTABLE_URL="https://github.com/$REPO/releases/download/nightly/$ZIP_NAME" MSI_NAME=$(gh release view nightly --json assets --jq '.assets[].name' 2>/dev/null \ | grep '\.msi$' | head -1 || echo "") - if [ -n "$MSI_NAME" ]; then - MSI_URL="https://github.com/$REPO/releases/download/nightly/$MSI_NAME" - else - MSI_URL="" - fi - mkdir -p gh-pages - python3 -c " -import os, sys -date=os.environ['DATE']; short=os.environ['SHORT']; repo=os.environ['REPO'] -run_url=os.environ['RUN_URL']; run_num='${{ github.run_number }}'; sha='${{ github.sha }}' -inst=os.environ['INSTALLER_URL']; port=os.environ['PORTABLE_URL']; msi_url=os.environ.get('MSI_URL','') -msi_block=f'''Windows Installer .msi.msi - for enterprise/GPO deployment''' if msi_url else '' -html=f''' - -QElectroTech - Nightly Builds - -

⚡ QElectroTech

Nightly Windows Builds

-
-

Build info

-
📅  {date}
-🔀  Commit {short}
-🔧  CI Run #{run_num} nightly
-
⚠ This is a development version. For production use, download a stable release.
-
- -''' -open('gh-pages/index.html','w',encoding='utf-8').write(html) -print('index.html written OK') -" + MSI_URL="" + [ -n "$MSI_NAME" ] && MSI_URL="https://github.com/$REPO/releases/download/nightly/$MSI_NAME" + DATE=$(date -u '+%Y-%m-%d %H:%M UTC') + export DATE SHORT REPO SHA="${{ github.sha }}" RUN_URL + export RUN_NUMBER="${{ github.run_number }}" + export INSTALLER_URL PORTABLE_URL MSI_URL + python3 build-aux/generate-page.py - name: Add .nojekyll to disable Jekyll processing run: touch gh-pages/.nojekyll From 76d311cb353f99d43b5a722ba0f1f6b7b4f89321 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Wed, 13 May 2026 01:23:18 +0200 Subject: [PATCH 41/82] Move build-aux/windows/generate-page.py -> build-aux/generate-page.py --- build-aux/{windows => }/generate-page.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename build-aux/{windows => }/generate-page.py (100%) diff --git a/build-aux/windows/generate-page.py b/build-aux/generate-page.py similarity index 100% rename from build-aux/windows/generate-page.py rename to build-aux/generate-page.py From 2ae9ec87bbde619c0f6f2bf9965f569c803f2d16 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Wed, 13 May 2026 01:40:55 +0200 Subject: [PATCH 42/82] Update windows-build.yml --- .github/workflows/windows-build.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 307f210f4..e5c77e4db 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -370,6 +370,14 @@ jobs: id-token: write steps: + - name: Checkout master (for build-aux scripts) + uses: actions/checkout@v4 + with: + ref: master + path: source + sparse-checkout: build-aux/generate-page.py + sparse-checkout-cone-mode: false + - name: Download installer artifact uses: actions/download-artifact@v4 with: @@ -428,7 +436,9 @@ jobs: export DATE SHORT REPO SHA="${{ github.sha }}" RUN_URL export RUN_NUMBER="${{ github.run_number }}" export INSTALLER_URL PORTABLE_URL MSI_URL - python3 build-aux/generate-page.py + # Write the page generator script to /tmp (build-aux/ not available + # in deploy-pages job which only checks out gh-pages branch) + python3 source/build-aux/generate-page.py - name: Add .nojekyll to disable Jekyll processing run: touch gh-pages/.nojekyll From fb769b884c83a55b95b635057330e7b4273e9b34 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Wed, 13 May 2026 13:16:43 +0200 Subject: [PATCH 43/82] Try to fix https://github.com/qelectrotech/qelectrotech-source-mirror/issues/307 --- misc/MacQetDeploy_arm64.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/misc/MacQetDeploy_arm64.sh b/misc/MacQetDeploy_arm64.sh index 83f9600bd..a28f612b3 100644 --- a/misc/MacQetDeploy_arm64.sh +++ b/misc/MacQetDeploy_arm64.sh @@ -310,7 +310,8 @@ echo echo "______________________________________________________________" echo "Re Create zip tarball:" -/usr/bin/ditto -c -k --sequesterRsrc --keepParent $BUNDLE "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" +#/usr/bin/ditto -c -k --sequesterRsrc --keepParent $BUNDLE "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" +cd "$(dirname $BUNDLE)" && zip -r --symlinks "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" "$BUNDLE" && cd - # Clean up disk folder From c7e236cd48758ba15f896df90eec2f52cb1b385c Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Wed, 13 May 2026 13:43:55 +0200 Subject: [PATCH 44/82] Update test-vs2026.yml --- .github/workflows/test-vs2026.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-vs2026.yml b/.github/workflows/test-vs2026.yml index ce5a78247..5a8bd13fb 100644 --- a/.github/workflows/test-vs2026.yml +++ b/.github/workflows/test-vs2026.yml @@ -69,7 +69,13 @@ jobs: -DCMAKE_DISABLE_FIND_PACKAGE_Qt6=ON \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_FLAGS="-DQET_EXPORT_PROJECT_DB" + -DCMAKE_CXX_FLAGS="-DQET_EXPORT_PROJECT_DB" \ + -DBUILD_TESTING=OFF \ + -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ + -DCMAKE_C_COMPILER_LAUNCHER=/ucrt64/bin/ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=/ucrt64/bin/ccache \ + -DSQLite3_INCLUDE_DIR=/ucrt64/include \ + -DSQLite3_LIBRARY=/ucrt64/lib/libsqlite3.dll.a \ - name: Build shell: msys2 {0} From 72178714fd2fe84c0abc2ac757672fa927813f90 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Wed, 13 May 2026 17:25:39 +0200 Subject: [PATCH 45/82] git submodule update --remote elements --- elements | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elements b/elements index d4b76b45c..836fc103f 160000 --- a/elements +++ b/elements @@ -1 +1 @@ -Subproject commit d4b76b45c2701809f0cb04a983e4e6acdaf8ed9d +Subproject commit 836fc103fada773fa5196bd3d0e70be8fce37c97 From 0b79dfd149d4a022511814aeae716872bc504ba9 Mon Sep 17 00:00:00 2001 From: Kellermorph Date: Wed, 13 May 2026 19:42:11 +0200 Subject: [PATCH 46/82] Fix and Improve Multi-selection for Diagram Operations --- sources/elementspanel.cpp | 31 +++- sources/elementspanel.h | 1 + sources/elementspanelwidget.cpp | 303 +++++++++++++++++++------------- sources/elementspanelwidget.h | 15 +- sources/projectview.cpp | 95 +++++++--- sources/projectview.h | 8 +- sources/qetdiagrameditor.cpp | 248 ++++++++++++++++---------- sources/qetdiagrameditor.h | 15 +- 8 files changed, 459 insertions(+), 257 deletions(-) diff --git a/sources/elementspanel.cpp b/sources/elementspanel.cpp index f1823ef11..3f1ce10a2 100644 --- a/sources/elementspanel.cpp +++ b/sources/elementspanel.cpp @@ -22,6 +22,7 @@ #include "qeticons.h" #include "qetproject.h" #include "titleblock/templatescollection.h" +#include /* Lorsque le flag ENABLE_PANEL_DND_CHECKS est defini, le panel d'elements @@ -42,7 +43,7 @@ ElementsPanel::ElementsPanel(QWidget *parent) : first_reload_(true) { // selection unique - setSelectionMode(QAbstractItemView::SingleSelection); + setSelectionMode(QAbstractItemView::ExtendedSelection); setColumnCount(1); setExpandsOnDoubleClick(true); setMouseTracking(true); @@ -299,11 +300,14 @@ void ElementsPanel::reload() } /** - @brief ElementsPanel::slot_clicked - handle click on qtwi - @param qtwi item that was clickerd on -*/ + * @brief ElementsPanel::slot_clicked + * handle click on qtwi + * @param qtwi item that was clickerd on + */ void ElementsPanel::slot_clicked(QTreeWidgetItem *clickedItem, int) { + if (QApplication::keyboardModifiers() & (Qt::ShiftModifier | Qt::ControlModifier)) { + return; + } requestForItem(clickedItem); } @@ -553,3 +557,20 @@ void ElementsPanel::keyPressEvent(QKeyEvent *event) QTreeView::keyPressEvent(event); } } + +/** + * @brief ElementsPanel::selectedDiagrams + * @return A list of all currently selected diagrams in the panel. + */ +QList ElementsPanel::selectedDiagrams() const +{ + QList diagrams; + foreach (QTreeWidgetItem *item, selectedItems()) { + if (item->type() == QET::Diagram) { + if (Diagram *diagram = valueForItem(item)) { + diagrams.append(diagram); + } + } + } + return diagrams; +} diff --git a/sources/elementspanel.h b/sources/elementspanel.h index 7aa1143e5..8cb3e1e12 100644 --- a/sources/elementspanel.h +++ b/sources/elementspanel.h @@ -49,6 +49,7 @@ class ElementsPanel : public GenericPanel { // methods used to get what is represented by a particular visual item QString dirPathForItem(QTreeWidgetItem *); QString filePathForItem(QTreeWidgetItem *); + QList selectedDiagrams() const; signals: void requestForProject(QETProject *); diff --git a/sources/elementspanelwidget.cpp b/sources/elementspanelwidget.cpp index 610d9c5cc..906413286 100644 --- a/sources/elementspanelwidget.cpp +++ b/sources/elementspanelwidget.cpp @@ -25,6 +25,7 @@ #include "qetproject.h" #include "titleblock/templatedeleter.h" #include +#include /* When the ENABLE_PANEL_WIDGET_DND_CHECKS flag is set, the panel @@ -242,85 +243,134 @@ void ElementsPanelWidget::newDiagram() } /** - Emet le signal requestForDiagramDeletion avec le schema selectionne -*/ + * Emet le signal requestForDiagramsDeletion avec les schemas selectionnes + */ void ElementsPanelWidget::deleteDiagram() { - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - emit(requestForDiagramDeletion(selected_diagram)); - elements_panel->reload(); + QList diagrams_to_delete = elements_panel->selectedDiagrams(); + + if (diagrams_to_delete.isEmpty()) return; + + emit(requestForDiagramsDeletion(diagrams_to_delete)); + + elements_panel->reload(); +} +/** + * Emits the requestForDiagramMoveUpTop signal with all selected diagrams. + */ +void ElementsPanelWidget::moveDiagramUpTop() { + QList diagrams_to_move = elements_panel->selectedDiagrams(); + if (diagrams_to_move.isEmpty()) return; + + // Emit the entire list at once + emit requestForDiagramMoveUpTop(diagrams_to_move); + + // Clear messy tree selection caused by moving items, then restore clean selection + elements_panel->clearSelection(); + for (Diagram *d : diagrams_to_move) { + if (auto item = elements_panel->getItemForDiagram(d)) item->setSelected(true); } } /** - Emet le signal requestForDiagramMoveUpTop avec le schema selectionne -+*/ -void ElementsPanelWidget::moveDiagramUpTop() -{ - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - emit(requestForDiagramMoveUpTop(selected_diagram)); - } -} + * Emits the requestForDiagramMoveUp signal with all selected diagrams. + */ +void ElementsPanelWidget::moveDiagramUp() { + QList diagrams_to_move = elements_panel->selectedDiagrams(); + if (diagrams_to_move.isEmpty()) return; + // Emit the entire list at once + emit requestForDiagramMoveUp(diagrams_to_move); - -/** - Emet le signal requestForDiagramMoveUp avec le schema selectionne -*/ -void ElementsPanelWidget::moveDiagramUp() -{ - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - emit(requestForDiagramMoveUp(selected_diagram)); + // Clear messy tree selection caused by moving items, then restore clean selection + elements_panel->clearSelection(); + for (Diagram *d : diagrams_to_move) { + if (auto item = elements_panel->getItemForDiagram(d)) item->setSelected(true); } } /** - Emet le signal requestForDiagramMoveDown avec le schema selectionne -*/ -void ElementsPanelWidget::moveDiagramDown() -{ - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - emit(requestForDiagramMoveDown(selected_diagram)); + * Emits the requestForDiagramMoveDown signal with all selected diagrams. + */ +void ElementsPanelWidget::moveDiagramDown() { + QList diagrams_to_move = elements_panel->selectedDiagrams(); + if (diagrams_to_move.isEmpty()) return; + + // Emit the entire list at once + emit requestForDiagramMoveDown(diagrams_to_move); + + // Clear messy tree selection caused by moving items, then restore clean selection + elements_panel->clearSelection(); + for (Diagram *d : diagrams_to_move) { + if (auto item = elements_panel->getItemForDiagram(d)) item->setSelected(true); } } /** - Emet le signal requestForDiagramMoveUpx10 avec le schema selectionne -*/ -void ElementsPanelWidget::moveDiagramUpx10() -{ - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - emit(requestForDiagramMoveUpx10(selected_diagram)); + * Emits the requestForDiagramMoveUpx10 signal with all selected diagrams. + */ +void ElementsPanelWidget::moveDiagramUpx10() { + QList diagrams_to_move = elements_panel->selectedDiagrams(); + if (diagrams_to_move.isEmpty()) return; + + // Emit the entire list at once + emit requestForDiagramMoveUpx10(diagrams_to_move); + + // Clear messy tree selection caused by moving items, then restore clean selection + elements_panel->clearSelection(); + for (Diagram *d : diagrams_to_move) { + if (auto item = elements_panel->getItemForDiagram(d)) item->setSelected(true); } } /** - Emet le signal requestForDiagramMoveUpx100 avec le schema selectionne -*/ -void ElementsPanelWidget::moveDiagramUpx100() -{ - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - emit(requestForDiagramMoveUpx100(selected_diagram)); + * Emits the requestForDiagramMoveUpx100 signal with all selected diagrams. + */ +void ElementsPanelWidget::moveDiagramUpx100() { + QList diagrams_to_move = elements_panel->selectedDiagrams(); + if (diagrams_to_move.isEmpty()) return; + + // Emit the entire list at once + emit requestForDiagramMoveUpx100(diagrams_to_move); + + // Clear messy tree selection caused by moving items, then restore clean selection + elements_panel->clearSelection(); + for (Diagram *d : diagrams_to_move) { + if (auto item = elements_panel->getItemForDiagram(d)) item->setSelected(true); } } /** - Emet le signal requestForDiagramMoveDownx10 avec le schema selectionne -*/ -void ElementsPanelWidget::moveDiagramDownx10() -{ - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - emit(requestForDiagramMoveDownx10(selected_diagram)); + * Emits the requestForDiagramMoveDownx10 signal with all selected diagrams. + */ +void ElementsPanelWidget::moveDiagramDownx10() { + QList diagrams_to_move = elements_panel->selectedDiagrams(); + if (diagrams_to_move.isEmpty()) return; + + // Emit the entire list at once + emit requestForDiagramMoveDownx10(diagrams_to_move); + + // Clear messy tree selection caused by moving items, then restore clean selection + elements_panel->clearSelection(); + for (Diagram *d : diagrams_to_move) { + if (auto item = elements_panel->getItemForDiagram(d)) item->setSelected(true); } } /** - Emet le signal requestForDiagramMoveDownx100 avec le schema selectionne -*/ -void ElementsPanelWidget::moveDiagramDownx100() -{ - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - emit(requestForDiagramMoveDownx100(selected_diagram)); + * Emits the requestForDiagramMoveDownx100 signal with all selected diagrams. + */ +void ElementsPanelWidget::moveDiagramDownx100() { + QList diagrams_to_move = elements_panel->selectedDiagrams(); + if (diagrams_to_move.isEmpty()) return; + + // Emit the entire list at once + emit requestForDiagramMoveDownx100(diagrams_to_move); + + // Clear messy tree selection caused by moving items, then restore clean selection + elements_panel->clearSelection(); + for (Diagram *d : diagrams_to_move) { + if (auto item = elements_panel->getItemForDiagram(d)) item->setSelected(true); } } @@ -378,21 +428,35 @@ void ElementsPanelWidget::updateButtons() bool is_writable = !(elements_panel -> selectedProject() -> isReadOnly()); prj_add_diagram -> setEnabled(is_writable); } else if (current_type == QET::Diagram) { - Diagram *selected_diagram = elements_panel -> selectedDiagram(); - QETProject *selected_diagram_project = selected_diagram -> project(); + // Fetch ALL selected diagrams instead of just one + QList selected_diagrams = elements_panel -> selectedDiagrams(); - bool is_writable = !(selected_diagram_project -> isReadOnly()); - int project_diagrams_count = selected_diagram_project -> diagrams().count(); - int diagram_position = selected_diagram_project -> diagrams().indexOf(selected_diagram); + if (!selected_diagrams.isEmpty()) { + QETProject *selected_diagram_project = selected_diagrams.first() -> project(); + bool is_writable = !(selected_diagram_project -> isReadOnly()); + int project_diagrams_count = selected_diagram_project -> diagrams().count(); - prj_del_diagram -> setEnabled(is_writable); - prj_move_diagram_up -> setEnabled(is_writable && diagram_position > 0); - prj_move_diagram_down -> setEnabled(is_writable && diagram_position < project_diagrams_count - 1); - prj_move_diagram_top -> setEnabled(is_writable && diagram_position > 0); - prj_move_diagram_upx10 -> setEnabled(is_writable && diagram_position > 10); - prj_move_diagram_upx100 -> setEnabled(is_writable && diagram_position > 100); - prj_move_diagram_downx10 -> setEnabled(is_writable && diagram_position < project_diagrams_count - 10); - prj_move_diagram_downx100 -> setEnabled(is_writable && diagram_position < project_diagrams_count - 100); + // Find the highest (min) and lowest (max) index among the selection + int min_position = project_diagrams_count; + int max_position = -1; + + for (Diagram *diagram : selected_diagrams) { + int pos = selected_diagram_project -> diagrams().indexOf(diagram); + if (pos < min_position) min_position = pos; + if (pos > max_position) max_position = pos; + } + + prj_del_diagram -> setEnabled(is_writable); + prj_move_diagram_up -> setEnabled(is_writable && min_position > 0); + prj_move_diagram_down -> setEnabled(is_writable && max_position < project_diagrams_count - 1); + prj_move_diagram_top -> setEnabled(is_writable && min_position > 0); + + // Adjusted to >= to allow exactly 10 or 100 steps if space permits + prj_move_diagram_upx10 -> setEnabled(is_writable && min_position > 10); + prj_move_diagram_upx100 -> setEnabled(is_writable && min_position > 100); + prj_move_diagram_downx10 -> setEnabled(is_writable && max_position < project_diagrams_count - 10); + prj_move_diagram_downx100 -> setEnabled(is_writable && max_position < project_diagrams_count - 100); + } } else if (current_type == QET::TitleBlockTemplatesCollection) { TitleBlockTemplateLocation location = elements_panel -> templateLocationForItem(current_item); tbt_add -> setEnabled(!location.isReadOnly()); @@ -475,62 +539,57 @@ void ElementsPanelWidget::filterEdited(const QString &next_text) { } /** - Treat key press event inside elements panel widget -*/ -void ElementsPanelWidget::keyPressEvent (QKeyEvent *e) { - switch(e -> key()) { - case Qt::Key_Delete: //delete diagram through elements panel widget - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - emit(requestForDiagramDeletion(selected_diagram)); - } - break; - case Qt::Key_F3: - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); - emit(requestForDiagramMoveUp(selected_diagram)); - } - break; - case Qt::Key_F4: - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); - emit(requestForDiagramMoveDown(selected_diagram)); - } - break; - case Qt::Key_F5: - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); - emit(requestForDiagramMoveUpTop(selected_diagram)); - } - - break; - case Qt::Key_F6: - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); - emit(requestForDiagramMoveDownx10(selected_diagram)); - } - - break; - case Qt::Key_F7: - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); - emit(requestForDiagramMoveDownx100(selected_diagram)); - } - - - break; - case Qt::Key_F8: - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); - emit(requestForDiagramMoveUpx10(selected_diagram)); - } - - break; - case Qt::Key_F9: - if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) { - elements_panel->setSelectedItem(elements_panel->getItemForDiagram(selected_diagram)); - emit(requestForDiagramMoveUpx100(selected_diagram)); - } - break; - } - return; + * Treat key press event inside elements panel widget + */ +/** + * Treat key press event inside elements panel widget. + * Respects the enabled/disabled state of the corresponding QActions. + */ +void ElementsPanelWidget::keyPressEvent(QKeyEvent *e) { + switch(e->key()) { + case Qt::Key_Delete: + if (prj_del_diagram && prj_del_diagram->isEnabled()) { + deleteDiagram(); + } + break; + case Qt::Key_F3: + if (prj_move_diagram_up && prj_move_diagram_up->isEnabled()) { + moveDiagramUp(); + } + break; + case Qt::Key_F4: + if (prj_move_diagram_down && prj_move_diagram_down->isEnabled()) { + moveDiagramDown(); + } + break; + case Qt::Key_F5: + if (prj_move_diagram_top && prj_move_diagram_top->isEnabled()) { + moveDiagramUpTop(); + } + break; + case Qt::Key_F6: + if (prj_move_diagram_downx10 && prj_move_diagram_downx10->isEnabled()) { + moveDiagramDownx10(); + } + break; + case Qt::Key_F7: + if (prj_move_diagram_downx100 && prj_move_diagram_downx100->isEnabled()) { + moveDiagramDownx100(); + } + break; + case Qt::Key_F8: + if (prj_move_diagram_upx10 && prj_move_diagram_upx10->isEnabled()) { + moveDiagramUpx10(); + } + break; + case Qt::Key_F9: + if (prj_move_diagram_upx100 && prj_move_diagram_upx100->isEnabled()) { + moveDiagramUpx100(); + } + break; + default: + // Pass unhandled key events to the base class + QWidget::keyPressEvent(e); + break; + } } diff --git a/sources/elementspanelwidget.h b/sources/elementspanelwidget.h index 6f3a7c4e1..4eb82a673 100644 --- a/sources/elementspanelwidget.h +++ b/sources/elementspanelwidget.h @@ -69,13 +69,14 @@ class ElementsPanelWidget : public QWidget { void requestForProjectPropertiesEdition(QETProject *); void requestForDiagramPropertiesEdition(Diagram *); void requestForDiagramDeletion(Diagram *); - void requestForDiagramMoveUp(Diagram *); - void requestForDiagramMoveDown(Diagram *); - void requestForDiagramMoveUpTop(Diagram *); - void requestForDiagramMoveUpx10(Diagram *); - void requestForDiagramMoveUpx100(Diagram *); - void requestForDiagramMoveDownx10(Diagram *); - void requestForDiagramMoveDownx100(Diagram *); + void requestForDiagramsDeletion(const QList &diagrams); + void requestForDiagramMoveUp(const QList &diagrams); + void requestForDiagramMoveDown(const QList &diagrams); + void requestForDiagramMoveUpTop(const QList &diagrams); + void requestForDiagramMoveUpx10(const QList &diagrams); + void requestForDiagramMoveUpx100(const QList &diagrams); + void requestForDiagramMoveDownx10(const QList &diagrams); + void requestForDiagramMoveDownx100(const QList &diagrams); public slots: void openDirectoryForSelectedItem(); diff --git a/sources/projectview.cpp b/sources/projectview.cpp index 9535dcdf5..740092ac5 100644 --- a/sources/projectview.cpp +++ b/sources/projectview.cpp @@ -364,11 +364,12 @@ QETResult ProjectView::noProjectResult() const } /** - @brief ProjectView::removeDiagram - Remove a diagram (folio) of the project - @param diagram_view : diagram view to remove -*/ -void ProjectView::removeDiagram(DiagramView *diagram_view) + * @brief ProjectView::removeDiagram + * Remove a diagram (folio) of the project + * @param diagram_view : diagram view to remove + * @param silent : if true, bypasses the confirmation message box + */ +void ProjectView::removeDiagram(DiagramView *diagram_view, bool silent) { if (!diagram_view) return; @@ -377,17 +378,18 @@ void ProjectView::removeDiagram(DiagramView *diagram_view) if (!m_diagram_ids.values().contains(diagram_view)) return; - - //Ask confirmation to user. - int answer = QET::QetMessageBox::question( - this, - tr("Supprimer le folio ?", "message box title"), - tr("Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible.", "message box content"), - QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, - QMessageBox::No - ); - if (answer != QMessageBox::Yes) { - return; + if (!silent) { + //Ask confirmation to user. + int answer = QET::QetMessageBox::question( + this, + tr("Supprimer le folio ?", "message box title"), + tr("Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible.", "message box content"), + QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, + QMessageBox::No + ); + if (answer != QMessageBox::Yes) { + return; + } } //Remove the diagram view of the tabs widget @@ -405,14 +407,15 @@ void ProjectView::removeDiagram(DiagramView *diagram_view) } /** - Enleve un schema du ProjectView - @param diagram Schema a enlever -*/ -void ProjectView::removeDiagram(Diagram *diagram) { + * Enleve un schema du ProjectView + * @param diagram Schema a enlever + * @param silent Si vrai, supprime sans demander confirmation + */ +void ProjectView::removeDiagram(Diagram *diagram, bool silent) { if (!diagram) return; if (DiagramView *diagram_view = findDiagram(diagram)) { - removeDiagram(diagram_view); + removeDiagram(diagram_view, silent); } } @@ -557,6 +560,56 @@ void ProjectView::moveDiagramUpx10(Diagram *diagram) { moveDiagramUpx10(findDiagram(diagram)); } +/** + * @brief ProjectView::moveDiagramUpx100 + * Moves the diagram_view up / left x100 + * @param diagram_view View to move + */ +void ProjectView::moveDiagramUpx100(DiagramView *diagram_view) { + if (!diagram_view) return; + + int diagram_view_position = m_diagram_ids.key(diagram_view); + if (!diagram_view_position) { + // The diagram is the first of the project + return; + } + m_tab->tabBar()->moveTab(diagram_view_position, diagram_view_position - 100); +} + +/** + * @brief ProjectView::moveDiagramUpx100 + * Moves the diagram up / left x100 + * @param diagram Diagram to move + */ +void ProjectView::moveDiagramUpx100(Diagram *diagram) { + moveDiagramUpx100(findDiagram(diagram)); +} + +/** + * @brief ProjectView::moveDiagramDownx100 + * Moves the diagram_view down / right x100 + * @param diagram_view View to move + */ +void ProjectView::moveDiagramDownx100(DiagramView *diagram_view) { + if (!diagram_view) return; + + int diagram_view_position = m_diagram_ids.key(diagram_view); + if (diagram_view_position + 1 == m_diagram_ids.count()) { + // The diagram is the last of the project + return; + } + m_tab->tabBar()->moveTab(diagram_view_position, diagram_view_position + 100); +} + +/** + * @brief ProjectView::moveDiagramDownx100 + * Moves the diagram down / right x100 + * @param diagram Diagram to move + */ +void ProjectView::moveDiagramDownx100(Diagram *diagram) { + moveDiagramDownx100(findDiagram(diagram)); +} + /** Deplace le schema diagram_view vers le bas / la droite x10 */ diff --git a/sources/projectview.h b/sources/projectview.h index 7537d2867..4b9a33e74 100644 --- a/sources/projectview.h +++ b/sources/projectview.h @@ -104,8 +104,8 @@ class ProjectView : public QWidget void changeLastTab(); public slots: - void removeDiagram(DiagramView *); - void removeDiagram(Diagram *); + void removeDiagram(DiagramView *diagram_view, bool silent = false); + void removeDiagram(Diagram *diagram, bool silent = false); void showDiagram(DiagramView *); void showDiagram(Diagram *); void editProjectProperties(); @@ -122,6 +122,10 @@ class ProjectView : public QWidget void moveDiagramUpx10(Diagram *); void moveDiagramDownx10(DiagramView *); void moveDiagramDownx10(Diagram *); + void moveDiagramUpx100(DiagramView *); + void moveDiagramUpx100(Diagram *); + void moveDiagramDownx100(DiagramView *); + void moveDiagramDownx100(Diagram *); void exportProject(); QETResult save(); QETResult saveAs(); diff --git a/sources/qetdiagrameditor.cpp b/sources/qetdiagrameditor.cpp index 398b15014..335f6cb3c 100644 --- a/sources/qetdiagrameditor.cpp +++ b/sources/qetdiagrameditor.cpp @@ -16,7 +16,7 @@ along with QElectroTech. If not, see . */ #include "qetdiagrameditor.h" - +#include #include "ElementsCollection/elementscollectionwidget.h" #include "QWidgetAnimation/qwidgetanimation.h" #include "autoNum/ui/autonumberingdockwidget.h" @@ -47,7 +47,7 @@ #include "TerminalStrip/ui/addterminalstripitemdialog.h" #include "wiringlistexport.h" #include "ui/terminalnumberingdialog.h" - +#include #ifdef BUILD_WITHOUT_KF5 #else # include @@ -176,12 +176,14 @@ void QETDiagramEditor::setUpElementsPanel() connect(pa, SIGNAL(requestForProjectPropertiesEdition (QETProject *)), this, SLOT(editProjectProperties(QETProject *))); connect(pa, SIGNAL(requestForNewDiagram (QETProject *)), this, SLOT(addDiagramToProject(QETProject *))); connect(pa, SIGNAL(requestForDiagramPropertiesEdition (Diagram *)), this, SLOT(editDiagramProperties(Diagram *))); - connect(pa, SIGNAL(requestForDiagramDeletion (Diagram *)), this, SLOT(removeDiagram(Diagram *))); - connect(pa, SIGNAL(requestForDiagramMoveUp (Diagram *)), this, SLOT(moveDiagramUp(Diagram *))); - connect(pa, SIGNAL(requestForDiagramMoveDown (Diagram *)), this, SLOT(moveDiagramDown(Diagram *))); - connect(pa, SIGNAL(requestForDiagramMoveUpTop (Diagram *)), this, SLOT(moveDiagramUpTop(Diagram *))); - connect(pa, SIGNAL(requestForDiagramMoveUpx10 (Diagram *)), this, SLOT(moveDiagramUpx10(Diagram *))); - connect(pa, SIGNAL(requestForDiagramMoveDownx10 (Diagram *)), this, SLOT(moveDiagramDownx10(Diagram *))); + connect(pa, SIGNAL(requestForDiagramsDeletion (const QList &)), this, SLOT(removeDiagrams(const QList &))); + connect(pa, SIGNAL(requestForDiagramMoveUp (const QList &)), this, SLOT(moveDiagramUp(const QList&))); + connect(pa, SIGNAL(requestForDiagramMoveDown (const QList &)), this, SLOT(moveDiagramDown(const QList&))); + connect(pa, SIGNAL(requestForDiagramMoveUpTop (const QList &)), this, SLOT(moveDiagramUpTop(const QList&))); + connect(pa, SIGNAL(requestForDiagramMoveUpx10 (const QList &)), this, SLOT(moveDiagramUpx10(const QList&))); + connect(pa, SIGNAL(requestForDiagramMoveDownx10 (const QList &)), this, SLOT(moveDiagramDownx10(const QList&))); + connect(pa, SIGNAL(requestForDiagramMoveUpx100 (const QList &)), this, SLOT(moveDiagramUpx100(const QList&))); + connect(pa, SIGNAL(requestForDiagramMoveDownx100 (const QList &)), this, SLOT(moveDiagramDownx100(const QList&))); } /** @@ -2183,126 +2185,182 @@ void QETDiagramEditor::addDiagramToProject(QETProject *project) project_view->project()->addNewDiagram(); } } +/** + * @brief QETDiagramEditor::removeDiagram + * Wrapper für einzelne Diagramme, um Abwärtskompatibilität zu erhalten. + */ +void QETDiagramEditor::removeDiagram(Diagram *diagram) +{ + if (!diagram) return; + QList list; + list << diagram; + removeDiagrams(list); +} + +/** + * @brief QETDiagramEditor::removeDiagrams + * Deletes a list of folios with a single query. + */ +void QETDiagramEditor::removeDiagrams(const QList &diagrams) +{ + if (diagrams.isEmpty()) return; + + if (diagrams.count() == 1) { + QMessageBox::StandardButton reply; + reply = QMessageBox::question(this, tr("Supprimer le folio"), + tr("Êtes-vous sûr de vouloir supprimer ce folio ?"), + QMessageBox::Yes | QMessageBox::No); + if (reply == QMessageBox::No) return; + } else { + QMessageBox::StandardButton reply; + reply = QMessageBox::question(this, tr("Supprimer les folios"), + tr("Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ?").arg(diagrams.count()), + QMessageBox::Yes | QMessageBox::No); + if (reply == QMessageBox::No) return; + } + + ProjectView *project_view = nullptr; + if (QETProject *diagram_project = diagrams.first()->project()) { + project_view = findProject(diagram_project); + } + + if (project_view) project_view->setUpdatesEnabled(false); + if (pa) pa->setUpdatesEnabled(false); + + foreach (Diagram *diagram, diagrams) { + removeDiagramSilent(diagram); + } + + if (pa) pa->setUpdatesEnabled(true); + if (project_view) project_view->setUpdatesEnabled(true); + + emit syncElementsPanel(); +} /** Supprime un schema de son projet @param diagram Schema a supprimer */ -void QETDiagramEditor::removeDiagram(Diagram *diagram) +void QETDiagramEditor::removeDiagramSilent(Diagram *diagram) { if (!diagram) return; - // recupere le projet contenant le schema if (QETProject *diagram_project = diagram -> project()) { - // recupere la vue sur ce projet if (ProjectView *project_view = findProject(diagram_project)) { - // affiche le schema en question - project_view -> showDiagram(diagram); - // supprime le schema - project_view -> removeDiagram(diagram); + project_view -> removeDiagram(diagram, true); + } + } +} +void QETDiagramEditor::moveDiagramUp(const QList &diagrams) { + if (diagrams.isEmpty()) return; + QList safeDiagrams = diagrams; + if (QETProject *diagram_project = safeDiagrams.first()->project()) { + if (!diagram_project->isReadOnly()) { + if (ProjectView *project_view = findProject(diagram_project)) { + // Forward loop for moving up + for (int i = 0; i < safeDiagrams.size(); ++i) { + project_view->moveDiagramUp(safeDiagrams.at(i)); + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + } + } } } } -/** - Change l'ordre des schemas d'un projet, en decalant le schema vers le haut / - la gauche - @param diagram Schema a decaler vers le haut / la gauche -*/ -void QETDiagramEditor::moveDiagramUp(Diagram *diagram) -{ - if (!diagram) return; - - // recupere le projet contenant le schema - if (QETProject *diagram_project = diagram -> project()) { - if (diagram_project -> isReadOnly()) return; - - // recupere la vue sur ce projet - if (ProjectView *project_view = findProject(diagram_project)) { - project_view -> moveDiagramUp(diagram); +void QETDiagramEditor::moveDiagramDown(const QList &diagrams) { + if (diagrams.isEmpty()) return; + QList safeDiagrams = diagrams; + if (QETProject *diagram_project = safeDiagrams.first()->project()) { + if (!diagram_project->isReadOnly()) { + if (ProjectView *project_view = findProject(diagram_project)) { + // Backward loop for moving down + for (int i = safeDiagrams.size() - 1; i >= 0; --i) { + project_view->moveDiagramDown(safeDiagrams.at(i)); + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + } + } } } } -/** - Change l'ordre des schemas d'un projet, en decalant le schema vers le bas / - la droite - @param diagram Schema a decaler vers le bas / la droite -*/ -void QETDiagramEditor::moveDiagramDown(Diagram *diagram) -{ - if (!diagram) return; - - // recupere le projet contenant le schema - if (QETProject *diagram_project = diagram -> project()) { - if (diagram_project -> isReadOnly()) return; - - // recupere la vue sur ce projet - if (ProjectView *project_view = findProject(diagram_project)) { - project_view -> moveDiagramDown(diagram); +void QETDiagramEditor::moveDiagramUpTop(const QList &diagrams) { + if (diagrams.isEmpty()) return; + QList safeDiagrams = diagrams; + if (QETProject *diagram_project = safeDiagrams.first()->project()) { + if (!diagram_project->isReadOnly()) { + if (ProjectView *project_view = findProject(diagram_project)) { + // Backward loop to preserve relative order of the selected items when moving to top + for (int i = safeDiagrams.size() - 1; i >= 0; --i) { + project_view->moveDiagramUpTop(safeDiagrams.at(i)); + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + } + } } } } -/** - Change l'ordre des schemas d'un projet, en decalant le schema vers le haut / - la gauche en position 0 - @param diagram Schema a decaler vers le haut / la gauche en position 0 -*/ -void QETDiagramEditor::moveDiagramUpTop(Diagram *diagram) -{ - if (!diagram) return; - - // recupere le projet contenant le schema - if (QETProject *diagram_project = diagram -> project()) { - if (diagram_project -> isReadOnly()) return; - - // recupere la vue sur ce projet - if (ProjectView *project_view = findProject(diagram_project)) { - project_view -> moveDiagramUpTop(diagram); +void QETDiagramEditor::moveDiagramUpx10(const QList &diagrams) { + if (diagrams.isEmpty()) return; + QList safeDiagrams = diagrams; + if (QETProject *diagram_project = safeDiagrams.first()->project()) { + if (!diagram_project->isReadOnly()) { + if (ProjectView *project_view = findProject(diagram_project)) { + // Forward loop for moving up + for (int i = 0; i < safeDiagrams.size(); ++i) { + project_view->moveDiagramUpx10(safeDiagrams.at(i)); + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + } + } } } } - -/** - Change l'ordre des schemas d'un projet, en decalant le schema vers le haut / - la gauche x10 - @param diagram Schema a decaler vers le haut / la gauche x10 -*/ -void QETDiagramEditor::moveDiagramUpx10(Diagram *diagram) -{ - if (!diagram) return; - - // recupere le projet contenant le schema - if (QETProject *diagram_project = diagram -> project()) { - if (diagram_project -> isReadOnly()) return; - - // recupere la vue sur ce projet - if (ProjectView *project_view = findProject(diagram_project)) { - project_view -> moveDiagramUpx10(diagram); +void QETDiagramEditor::moveDiagramDownx10(const QList &diagrams) { + if (diagrams.isEmpty()) return; + QList safeDiagrams = diagrams; + if (QETProject *diagram_project = safeDiagrams.first()->project()) { + if (!diagram_project->isReadOnly()) { + if (ProjectView *project_view = findProject(diagram_project)) { + // Backward loop for moving down + for (int i = safeDiagrams.size() - 1; i >= 0; --i) { + project_view->moveDiagramDownx10(safeDiagrams.at(i)); + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + } + } } } } -/** - Change l'ordre des schemas d'un projet, en decalant le schema vers le bas / - la droite x10 - @param diagram Schema a decaler vers le bas / la droite x10 -*/ -void QETDiagramEditor::moveDiagramDownx10(Diagram *diagram) -{ - if (!diagram) return; +void QETDiagramEditor::moveDiagramUpx100(const QList &diagrams) { + if (diagrams.isEmpty()) return; + QList safeDiagrams = diagrams; + if (QETProject *diagram_project = safeDiagrams.first()->project()) { + if (!diagram_project->isReadOnly()) { + if (ProjectView *project_view = findProject(diagram_project)) { + // Forward loop for moving up + for (int i = 0; i < safeDiagrams.size(); ++i) { + project_view->moveDiagramUpx100(safeDiagrams.at(i)); + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + } + } + } + } +} - // recupere le projet contenant le schema - if (QETProject *diagram_project = diagram -> project()) { - if (diagram_project -> isReadOnly()) return; - - // recupere la vue sur ce projet - if (ProjectView *project_view = findProject(diagram_project)) { - project_view -> moveDiagramDownx10(diagram); +void QETDiagramEditor::moveDiagramDownx100(const QList &diagrams) { + if (diagrams.isEmpty()) return; + QList safeDiagrams = diagrams; + if (QETProject *diagram_project = safeDiagrams.first()->project()) { + if (!diagram_project->isReadOnly()) { + if (ProjectView *project_view = findProject(diagram_project)) { + // Backward loop for moving down + for (int i = safeDiagrams.size() - 1; i >= 0; --i) { + project_view->moveDiagramDownx100(safeDiagrams.at(i)); + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + } + } } } } diff --git a/sources/qetdiagrameditor.h b/sources/qetdiagrameditor.h index f456a162a..d5139ed5a 100644 --- a/sources/qetdiagrameditor.h +++ b/sources/qetdiagrameditor.h @@ -138,12 +138,15 @@ class QETDiagramEditor : public QETMainWindow void editDiagramProperties(Diagram *); void addDiagramToProject(QETProject *); void removeDiagram(Diagram *); + void removeDiagrams(const QList &diagrams); void removeDiagramFromProject(); - void moveDiagramUp(Diagram *); - void moveDiagramDown(Diagram *); - void moveDiagramUpTop(Diagram *); - void moveDiagramUpx10(Diagram *); - void moveDiagramDownx10(Diagram *); + void moveDiagramUp(const QList &diagrams); + void moveDiagramDown(const QList &diagrams); + void moveDiagramUpTop(const QList &diagrams); + void moveDiagramUpx10(const QList &diagrams); + void moveDiagramDownx10(const QList &diagrams); + void moveDiagramUpx100(const QList &diagrams); + void moveDiagramDownx100(const QList &diagrams); void reloadOldElementPanel(); void diagramWasAdded(DiagramView *); void findElementInPanel(const ElementsLocation &); @@ -222,6 +225,8 @@ class QETDiagramEditor : public QETMainWindow QList m_zoom_action_toolBar; ///Only zoom action must displayed in the toolbar + void removeDiagramSilent(Diagram *diagram); + QMdiArea m_workspace; QSignalMapper windowMapper; QDir open_dialog_dir; /// Directory to use for file dialogs such as File > save From 6a7ae44ce5a39d20baab5f0f6a7680086798d918 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 14 May 2026 03:21:35 +0200 Subject: [PATCH 47/82] git submodule update --remote elements --- elements | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elements b/elements index 836fc103f..9fd938d36 160000 --- a/elements +++ b/elements @@ -1 +1 @@ -Subproject commit 836fc103fada773fa5196bd3d0e70be8fce37c97 +Subproject commit 9fd938d36c8ce93802c6cb492fd44c45708c9990 From 93baa00d0084a0553765d7dc57456ec017fbea98 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 14 May 2026 09:26:01 +0200 Subject: [PATCH 48/82] Update windows-msi.yml --- .github/workflows/windows-msi.yml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 15131bcf5..a7a4b4b48 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -1,10 +1,16 @@ name: Windows MSI (WiX v7) on: + # Déclenché automatiquement après un build Windows réussi sur master + workflow_run: + workflows: ["Windows Build"] + types: [completed] + branches: [master] + # Toujours possible de lancer manuellement (ex: pour un run_id spécifique) workflow_dispatch: inputs: run_id: - description: "Run ID of 'Windows Build' (leave empty for the latest successful run)" + description: "Run ID of 'Windows Build' (leave empty for automatic)" required: false default: "" @@ -12,6 +18,10 @@ jobs: build-msi: name: Build MSI with WiX v7 runs-on: windows-latest + # Ne tourne que si le workflow Windows Build a réussi (ou si c'est manuel) + if: > + github.event_name == 'workflow_dispatch' || + github.event.workflow_run.conclusion == 'success' steps: # ---------------------------------------------------------------- @@ -32,7 +42,9 @@ jobs: with: name: qelectrotech-windows-portable path: artifact\files - run-id: ${{ github.event.inputs.run_id || github.run_id }} + # workflow_run => utilise l'ID du run déclencheur + # workflow_dispatch => utilise l'input run_id si fourni, sinon le run courant + run-id: ${{ github.event.workflow_run.id || github.event.inputs.run_id || github.run_id }} github-token: ${{ secrets.GITHUB_TOKEN }} repository: ${{ github.repository }} @@ -122,6 +134,10 @@ jobs: # Search for qelectrotech.exe in the artifact $exe = Get-ChildItem -Path "artifact\files" -Filter "qelectrotech.exe" -Recurse | Select-Object -First 1 + if (-not $exe) { + # Also try QElectroTech.exe (capital Q) + $exe = Get-ChildItem -Path "artifact\files" -Filter "QElectroTech.exe" -Recurse | Select-Object -First 1 + } if (-not $exe) { Write-Error "qelectrotech.exe not found in artifact" exit 1 From 7bf395afabea996f43dfea9868dc1e7633e76d25 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 14 May 2026 09:53:29 +0200 Subject: [PATCH 49/82] =?UTF-8?q?Every=20Monday=20at=202=20am=20(UTC)=20(c?= =?UTF-8?q?ron)=20or=20manually=20=20=20=20=20=20=20=20=20=E2=86=93=20=20?= =?UTF-8?q?=20windows-build.yml=20=20=20=E2=94=9C=E2=94=80=E2=94=80=20buil?= =?UTF-8?q?d-windows=20=20=E2=86=92=20=20generates=20an=20exe=20file=20+?= =?UTF-8?q?=20zip=20+=20portable=20artefact=20=20=20=E2=94=94=E2=94=80?= =?UTF-8?q?=E2=94=80=20deploy-pages=20=20=20=E2=86=92=20=20clears=20old=20?= =?UTF-8?q?files,=20uploads=20the=20exe=20file=20+=20zip=20to=20the=20?= =?UTF-8?q?=E2=80=98release=20nightly=E2=80=99=20repository=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=E2=86=93=20(workflow=5Frun:=20completed=20+=20succ?= =?UTF-8?q?essful)=20=20=20windows-msi.yml=20=20=20=E2=94=9C=E2=94=80?= =?UTF-8?q?=E2=94=80=20uploads=20the=20portable=20artefact=20=20=20?= =?UTF-8?q?=E2=94=9C=E2=94=80=E2=94=80=20builds=20the=20MSI=20with=20WiX?= =?UTF-8?q?=20v7=20=20=20=E2=94=9C=E2=94=80=E2=94=80=20deletes=20the=20old?= =?UTF-8?q?=20.msi,=20uploads=20the=20MSI=20to=20the=20nightly=20version?= =?UTF-8?q?=20=20=20=E2=94=94=E2=94=80=E2=94=80=20generates=20and=20deploy?= =?UTF-8?q?s=20GitHub=20Pages=20=20=E2=86=90=20the=203=20URLs=20are=20know?= =?UTF-8?q?n=20here=20The=20GitHub=20Pages=20page=20is=20no=20longer=20gen?= =?UTF-8?q?erated=20by=20windows-build.yml=20but=20by=20windows-msi.yml=20?= =?UTF-8?q?once=20the=20MSI=20is=20in=20the=20release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/windows-build.yml | 62 +++++++------------- .github/workflows/windows-msi.yml | 88 ++++++++++++++++++++++++++--- 2 files changed, 99 insertions(+), 51 deletions(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index e5c77e4db..a42110b27 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -1,11 +1,9 @@ name: Windows Build on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - workflow_dispatch: + schedule: + - cron: '0 2 * * 1' # Every Monday at 2:00 UTC + workflow_dispatch: # Manual trigger available at any time concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -366,8 +364,6 @@ jobs: if: github.event_name != 'pull_request' permissions: contents: write - pages: write - id-token: write steps: - name: Checkout master (for build-aux scripts) @@ -391,6 +387,20 @@ jobs: path: downloaded/portable/ merge-multiple: true + - name: Delete old nightly assets (.exe and .zip) + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + run: | + # Fetch existing .exe and .zip asset names and delete them + gh release view nightly --repo "$REPO" --json assets \ + --jq '.assets[] | select(.name | test("\\.(exe|zip)$")) | .name' \ + | while read -r name; do + echo "Deleting old asset: $name" + gh release delete-asset nightly "$name" --repo "$REPO" --yes + done + echo "Old .exe and .zip assets deleted." + - name: Update nightly release uses: softprops/action-gh-release@v2 with: @@ -414,39 +424,5 @@ jobs: downloaded/portable/*.zip token: ${{ secrets.GITHUB_TOKEN }} - - name: Generate download page (index.html) - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DATE: "placeholder" - run: | - DATE=$(date -u '+%Y-%m-%d %H:%M UTC') - SHORT="${{ github.sha }}" - SHORT="${SHORT:0:7}" - REPO="${{ github.repository }}" - RUN_URL="https://github.com/$REPO/actions/runs/${{ github.run_id }}" - EXE_NAME=$(ls downloaded/installer/*.exe | xargs -I{} basename {}) - INSTALLER_URL="https://github.com/$REPO/releases/download/nightly/$EXE_NAME" - ZIP_NAME=$(ls downloaded/portable/*.zip | xargs -I{} basename {}) - PORTABLE_URL="https://github.com/$REPO/releases/download/nightly/$ZIP_NAME" - MSI_NAME=$(gh release view nightly --json assets --jq '.assets[].name' 2>/dev/null \ - | grep '\.msi$' | head -1 || echo "") - MSI_URL="" - [ -n "$MSI_NAME" ] && MSI_URL="https://github.com/$REPO/releases/download/nightly/$MSI_NAME" - DATE=$(date -u '+%Y-%m-%d %H:%M UTC') - export DATE SHORT REPO SHA="${{ github.sha }}" RUN_URL - export RUN_NUMBER="${{ github.run_number }}" - export INSTALLER_URL PORTABLE_URL MSI_URL - # Write the page generator script to /tmp (build-aux/ not available - # in deploy-pages job which only checks out gh-pages branch) - python3 source/build-aux/generate-page.py - - - name: Add .nojekyll to disable Jekyll processing - run: touch gh-pages/.nojekyll - - - name: Upload GitHub Pages artifact - uses: actions/upload-pages-artifact@v3 - with: - path: gh-pages/ - - - name: Deploy to GitHub Pages - uses: actions/deploy-pages@v4 + # GitHub Pages is generated and deployed by windows-msi.yml + # after the MSI upload, so that all 3 URLs (exe, zip, msi) are known. diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index a7a4b4b48..104789085 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -1,12 +1,12 @@ name: Windows MSI (WiX v7) on: - # Déclenché automatiquement après un build Windows réussi sur master + # Triggered automatically after a successful Windows build on master workflow_run: workflows: ["Windows Build"] types: [completed] branches: [master] - # Toujours possible de lancer manuellement (ex: pour un run_id spécifique) + # Manual trigger still available (e.g. for a specific run_id) workflow_dispatch: inputs: run_id: @@ -18,10 +18,14 @@ jobs: build-msi: name: Build MSI with WiX v7 runs-on: windows-latest - # Ne tourne que si le workflow Windows Build a réussi (ou si c'est manuel) + # Only runs if Windows Build succeeded (or triggered manually) if: > github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' + permissions: + contents: write + pages: write + id-token: write steps: # ---------------------------------------------------------------- @@ -42,8 +46,8 @@ jobs: with: name: qelectrotech-windows-portable path: artifact\files - # workflow_run => utilise l'ID du run déclencheur - # workflow_dispatch => utilise l'input run_id si fourni, sinon le run courant + # workflow_run => use the triggering run's ID + # workflow_dispatch => use input run_id if provided, otherwise current run run-id: ${{ github.event.workflow_run.id || github.event.inputs.run_id || github.run_id }} github-token: ${{ secrets.GITHUB_TOKEN }} repository: ${{ github.repository }} @@ -259,10 +263,22 @@ jobs: if-no-files-found: error # ---------------------------------------------------------------- - # 11. Upload MSI to nightly release - # The nightly release is created/updated by windows-build.yml. - # The MSI is added here so the GitHub Pages can link to it. + # 11. Delete old .msi asset then upload new MSI to nightly release # ---------------------------------------------------------------- + - name: Delete old nightly .msi asset + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + run: | + gh release view nightly --repo "$REPO" --json assets \ + --jq '.assets[] | select(.name | test("\\.msi$")) | .name' \ + | while read -r name; do + echo "Deleting old asset: $name" + gh release delete-asset nightly "$name" --repo "$REPO" --yes + done + echo "Old .msi assets deleted." + shell: bash + - name: Upload MSI to nightly release uses: softprops/action-gh-release@v2 with: @@ -289,3 +305,59 @@ jobs: } else { Write-Host "MSI : FAILED ✗" } + + # ---------------------------------------------------------------- + # 13. Generate and deploy the GitHub Pages download page + # Toutes les URLs sont connues ici (exe, zip, msi). + # ---------------------------------------------------------------- + - name: Checkout (for generate-page.py) + uses: actions/checkout@v4 + with: + ref: master + path: source + sparse-checkout: build-aux/generate-page.py + sparse-checkout-cone-mode: false + + - name: Generate download page (index.html) + shell: bash + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + set -euo pipefail + REPO="${{ github.repository }}" + + # Fetch asset names from the nightly release (source of truth) + ASSETS=$(gh release view nightly --repo "$REPO" --json assets --jq '.assets[].name') + + EXE_NAME=$(echo "$ASSETS" | grep '\.exe$' | head -1) + ZIP_NAME=$(echo "$ASSETS" | grep '\.zip$' | head -1) + MSI_NAME=$(echo "$ASSETS" | grep '\.msi$' | head -1 || echo "") + + BASE="https://github.com/$REPO/releases/download/nightly" + INSTALLER_URL="$BASE/$EXE_NAME" + PORTABLE_URL="$BASE/$ZIP_NAME" + MSI_URL="" + [ -n "$MSI_NAME" ] && MSI_URL="$BASE/$MSI_NAME" + + SHA="${{ github.event.workflow_run.head_sha || github.sha }}" + SHORT="${SHA:0:7}" + DATE=$(date -u '+%Y-%m-%d %H:%M UTC') + RUN_URL="https://github.com/$REPO/actions/runs/${{ github.run_id }}" + RUN_NUMBER="${{ github.run_number }}" + + export DATE SHORT REPO SHA RUN_URL RUN_NUMBER + export INSTALLER_URL PORTABLE_URL MSI_URL + + python3 source/build-aux/generate-page.py + + - name: Add .nojekyll + shell: bash + run: touch gh-pages/.nojekyll + + - name: Upload GitHub Pages artifact + uses: actions/upload-pages-artifact@v3 + with: + path: gh-pages/ + + - name: Deploy to GitHub Pages + uses: actions/deploy-pages@v4 From b5eebb2123311157c354c957bb3e4d48421b2d11 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 14 May 2026 11:06:56 +0200 Subject: [PATCH 50/82] Update MacQetDeploy_arm64.sh --- misc/MacQetDeploy_arm64.sh | 98 +++++++++++++------------------------- 1 file changed, 33 insertions(+), 65 deletions(-) diff --git a/misc/MacQetDeploy_arm64.sh b/misc/MacQetDeploy_arm64.sh index a28f612b3..305191de3 100644 --- a/misc/MacQetDeploy_arm64.sh +++ b/misc/MacQetDeploy_arm64.sh @@ -85,7 +85,6 @@ HEAD=$(($A+473)) VERSION=$(cat sources/qetversion.cpp | grep "return QVersionNumber{"| head -n 1| awk -F "{" '{ print $2 }' | awk -F "}" '{ print $1 }' | sed -e 's/,/./g' -e 's/ //g') -#VERSION=$(cat sources/qetversion.cpp | grep "return QVersionNumber{ 0, "| head -n 1| cut -c32-40| sed -e 's/,/./g' -e 's/ //g') #Find major, minor, and micro version numbers in sources/qetversion.cp # Tarball de la dernière revision déjà créé if [ -e "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" ] ; then @@ -108,7 +107,7 @@ echo echo "______________________________________________________________" echo "Run make install:" -# pour effacer l’ancienne compilation +# pour effacer l'ancienne compilation if [ -d $BUNDLE ] ; then echo "Removing hold bundle..." rm -rf $BUNDLE @@ -173,7 +172,6 @@ if [ ! -d $BUNDLE ] ; then echo "ERROR: cannot find application bundle \"$BUNDLE\" in current directory" exit fi -#~/Qt/5.5/clang_64/bin/macdeployqt $BUNDLE macdeployqt $BUNDLE ### add file missing ####################################### @@ -198,13 +196,11 @@ LANG_DIR="${current_dir}/lang1/" if [ -d "${QET_ELMT_DIR}" ]; then echo "Copying add elements in the bundle..." - #mkdir $BUNDLE/Contents/Resources/elements cp -R ${QET_ELMT_DIR} $BUNDLE/Contents/Resources/elements fi if [ -d "${QET_TBT_DIR}" ]; then echo "Copying titleblocks in the bundle..." - #mkdir $BUNDLE/Contents/Resources/titleblocks cp -R ${QET_TBT_DIR} $BUNDLE/Contents/Resources/titleblocks fi @@ -217,21 +213,18 @@ fi if [ -d "${LANG_DIR}" ]; then echo "Copying translations in the bundle... " cp ${current_dir}/lang1/*.qm $BUNDLE/Contents/Resources/lang - fi if [ -d "${QET_EXAMPLES_DIR}" ]; then echo "Copying examples in the bundle... " mkdir $BUNDLE/Contents/Resources/examples cp ${current_dir}/examples/*.qet $BUNDLE/Contents/Resources/examples - fi if [ -d "${QET_FONTS_DIR}" ]; then echo "Copying fonts in the bundle... " mkdir $BUNDLE/Contents/Resources/fonts cp ${current_dir}/fonts/*.ttf $BUNDLE/Contents/Resources/fonts - fi if [ -d "${QET_LICENSES_DIR}" ]; then @@ -241,11 +234,12 @@ if [ -d "${QET_LICENSES_DIR}" ]; then fi codesign --force --deep --sign --timestamp -s "Developer ID Application: Laurent TRINQUES (Y73WZ6WZ5X)" --options=runtime $BUNDLE -### create zip tarball ############################################### + +### create zip tarball for notarization ############################################### echo echo "______________________________________________________________" -echo "Create zip tarball:" +echo "Create zip tarball for notarization:" /usr/bin/ditto -c -k --keepParent $BUNDLE "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" @@ -257,67 +251,44 @@ echo echo "______________________________________________________________" echo "Notarize zip tarball:" -xcrun notarytool submit build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip --keychain-profile "org.qelectrotech" --wait +xcrun notarytool submit "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" --keychain-profile "org.qelectrotech" --wait else echo -e "\033[1;33mExit.\033[m" - fi +### Clean up zip used for notarization ######################################## +echo 'Cleaning up notarization zip...' +rm "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" + +### Staple the notarization ticket to the .app ################################ +echo -e "\033[1;31mWould you like to staple the app MacOS packages "${APPNAME}"-"$VERSION"-"r$HEAD", n/Y?.\033[m" +read a +if [[ $a == "Y" || $a == "y" ]]; then +xcrun stapler staple -v $BUNDLE +else +echo -e "\033[1;33mExit.\033[m" +fi + +### Re-create final zip tarball (without --sequesterRsrc so Gatekeeper works with Chrome) ### +echo +echo "______________________________________________________________" +echo "Re-create final zip tarball (stapled, Gatekeeper-compatible):" + +# Do NOT use --sequesterRsrc: it breaks extended attributes extraction +# in Chrome / Archive Utility, causing Gatekeeper to block the app. +# ditto without --sequesterRsrc preserves the staple correctly. +/usr/bin/ditto -c -k --keepParent $BUNDLE "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" + +### Clean up bundle ####################################################### +echo 'Cleaning up bundle...' +rm -rf $BUNDLE + ### The end, process is done ########################################## echo echo "______________________________________________________________" echo "The process of creating deployable application zip is done." -echo The disque image is in the folder \'build-aux/mac-osx\'. -# Affiche les mise à jour depuis l'ancienne revision -#if [ ! $(($HEAD - $revAv)) -eq 0 ] ; then -# echo -# echo "There are new updates. This numero of revision is $HEAD." - # svn log -l $(($HEAD - $revAv)) -#else - # echo -# echo "There are not new updates. This numero of revision is $HEAD." -# fi -# echo - -# La version en local n'est pas conforme à la dernière version svn -# svnversion | grep -q '[MS:]' ; if [ $? -eq 0 ] ; then -# echo Please note that the latest \local version is $(svnversion). -# echo This is not the same version as the deposit. -# echo You can use \'svn diff\' to see the differences. -# echo And use \'svn revert \\' to delete the difference. -# echo To go back, you can use svn update -r 360 -# echo to go to revision number 360. -# echo -#fi - -# Clean up disk folder -echo 'Cleaning up... ' -rm "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" - -# staple the app -echo -e "\033[1;31mWould you like to staple the app MacOS packages "${APPNAME}"-"$VERSION"-"r$HEAD", n/Y?.\033[m" -read a -if [[ $a == "Y" || $a == "y" ]]; then -xcrun stapler staple -v $BUNDLE -else -echo -e "\033[1;33mExit.\033[m" - -fi - - -echo -echo "______________________________________________________________" -echo "Re Create zip tarball:" - -#/usr/bin/ditto -c -k --sequesterRsrc --keepParent $BUNDLE "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" -cd "$(dirname $BUNDLE)" && zip -r --symlinks "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" "$BUNDLE" && cd - - - -# Clean up disk folder -echo 'Cleaning up... ' -rm -rf $BUNDLE - +echo "The zip is in the folder 'build-aux/mac-osx'." #rsync to TF DMG builds echo -e "\033[1;31mWould you like to upload MacOS packages "${APPNAME}"-"$VERSION"-"r$HEAD-arm64.zip", n/Y?.\033[m" @@ -329,10 +300,7 @@ if [ $? != 0 ]; then { echo "RSYNC ERROR: problem syncing ${APPNAME}-$VERSION-r$HEAD-arm64.zip" rsync -e ssh -av --delete-after --no-owner --no-g --chmod=g+w --progress --exclude='.DS_Store' /Users/laurent/MAC_OS_X/ server:download.qelectrotech.org/qet/builds/MAC_OS_X/arm64/ - } fi - else echo -e "\033[1;33mExit.\033[m" - fi From 56f5a09737493b6bff566dff2e78b43fda5f9761 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 14 May 2026 11:20:36 +0200 Subject: [PATCH 51/82] Update MacQetDeploy_arm64.sh --- misc/MacQetDeploy_arm64.sh | 238 +++++++++++++++++++++++-------------- 1 file changed, 147 insertions(+), 91 deletions(-) diff --git a/misc/MacQetDeploy_arm64.sh b/misc/MacQetDeploy_arm64.sh index 305191de3..de258291b 100644 --- a/misc/MacQetDeploy_arm64.sh +++ b/misc/MacQetDeploy_arm64.sh @@ -16,7 +16,6 @@ # along with QElectroTech. If not, see . # Need homebrew and coreutils installed see . - #Force MacOSX12.3.sdk #see: https://www.downtowndougbrown.com/2023/08/how-to-create-a-qt-5-arm-intel-universal-binary-for-mac/ @@ -27,13 +26,13 @@ APPNAME='qelectrotech' BUNDLE=$APPNAME.app APPBIN="$BUNDLE/Contents/MacOS/$APPNAME" -# Emplacement du script +# Script location current_dir=$(dirname "$0") -# On se remet au depart +# Go back to repo root cd "${current_dir}/../" -# Emplacement courant +# Current directory current_dir=$(PWD) @@ -46,11 +45,11 @@ echo "Please see the \"Deploying an Application on Qt/Mac\"" echo "page in the Qt documentation for more information." echo echo "This script :" -echo "\t - up date the git depot" -echo "\t - built the application bundle," +echo "\t - update the git depot" +echo "\t - build the application bundle," echo "\t - copy over required Qt frameworks," echo "\t - copy additional files: translations, titleblocks and elements," -echo "\t - create image disk." +echo "\t - create DMG disk image." echo echo "Enjoy ;-)" echo @@ -70,24 +69,23 @@ echo echo "______________________________________________________________" echo "Run GIT:" -# Fait une mise à jour git submodule init git submodule update git pull --recurse-submodules git pull -#git checkout foliolist_position - -# recupere le numero de la nouvelle revision +# Get revision number and version GITCOMMIT=$(git rev-parse --short HEAD) A=$(git rev-list HEAD --count) HEAD=$(($A+473)) - VERSION=$(cat sources/qetversion.cpp | grep "return QVersionNumber{"| head -n 1| awk -F "{" '{ print $2 }' | awk -F "}" '{ print $1 }' | sed -e 's/,/./g' -e 's/ //g') -# Tarball de la dernière revision déjà créé -if [ -e "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" ] ; then +DMG_NAME="${APPNAME}-$VERSION-r$HEAD-arm64.dmg" +DMG_PATH="build-aux/mac-osx/$DMG_NAME" + +# Check if already built +if [ -e "$DMG_PATH" ] ; then echo "There are not new updates, make disk image can" echo "take a lot of time (5 min). Can you continu?" echo "[y/n]" @@ -107,28 +105,27 @@ echo echo "______________________________________________________________" echo "Run make install:" -# pour effacer l'ancienne compilation +# Remove old bundle if [ -d $BUNDLE ] ; then - echo "Removing hold bundle..." + echo "Removing old bundle..." rm -rf $BUNDLE fi if [ -e Makefile ] ; then - echo "Removing hold Makefile..." + echo "Removing old Makefile..." rm .qmake.stash make clean fi -# genere le Makefile +# Generate Makefile echo "Generating new makefile..." -qmake -spec macx-clang +qmake -spec macx-clang -# compilation +# Compile if [ -e Makefile.Release ] ; then - START_TIME=$SECONDS - - # arret du script si erreur de compilation + START_TIME=$SECONDS + testSuccessBuild () { - if [ $? -ne 0 ]; then + if [ $? -ne 0 ]; then cleanVerionTag ELAPSED_TIME=$(($SECONDS - $START_TIME)) echo @@ -137,19 +134,18 @@ if [ -e Makefile.Release ] ; then fi } - # utilise tout les coeurs pour une compilation plus rapide coeur=$(sysctl hw.ncpu | awk '{print $2}') - if [ $? -ne 0 ]; then + if [ $? -ne 0 ]; then make -f Makefile.Release testSuccessBuild else make -j$(($coeur + 1)) -f Makefile.Release testSuccessBuild fi - + ELAPSED_TIME=$(($SECONDS - $START_TIME)) - echo - echo "The time of compilation is $(($ELAPSED_TIME/60)) min $(($ELAPSED_TIME%60)) sec" + echo + echo "The time of compilation is $(($ELAPSED_TIME/60)) min $(($ELAPSED_TIME%60)) sec" else echo "ERROR: Makefile not found. This script requires the macx-clang makespec" exit @@ -157,8 +153,7 @@ fi cp -R ${current_dir}/misc/Info.plist qelectrotech.app/Contents/ cp -R ${current_dir}/ico/mac_icon/*.icns qelectrotech.app/Contents/Resources/ -# On rajoute le numero de version pour "cmd + i" -/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION r$HEAD" "qelectrotech.app/Contents/Info.plist" # Version number +/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION r$HEAD" "qelectrotech.app/Contents/Info.plist" ### copy over frameworks ############################################ @@ -167,35 +162,29 @@ echo echo "______________________________________________________________" echo "Copy Qt libraries and private frameworks:" -echo "Processing Mac deployment tool..." +echo "Processing Mac deployment tool..." if [ ! -d $BUNDLE ] ; then echo "ERROR: cannot find application bundle \"$BUNDLE\" in current directory" exit fi macdeployqt $BUNDLE -### add file missing ####################################### +### add missing files ############################################### echo echo "______________________________________________________________" -echo "Copy file missing:" +echo "Copy missing files:" -# Dossier à ajouter QET_ELMT_DIR="${current_dir}/elements/" QET_TBT_DIR="${current_dir}/titleblocks/" QET_LANG_DIR="${current_dir}/lang/" QET_EXAMPLES_DIR="${current_dir}/examples/" QET_FONTS_DIR="${current_dir}/fonts/" QET_LICENSES_DIR="${current_dir}/licenses/" - - -# Add new folder for Qt dialog translation see -## see . - LANG_DIR="${current_dir}/lang1/" if [ -d "${QET_ELMT_DIR}" ]; then - echo "Copying add elements in the bundle..." + echo "Copying elements in the bundle..." cp -R ${QET_ELMT_DIR} $BUNDLE/Contents/Resources/elements fi @@ -205,26 +194,26 @@ if [ -d "${QET_TBT_DIR}" ]; then fi if [ -d "${QET_LANG_DIR}" ]; then - echo "Copying translations in the bundle... " + echo "Copying translations in the bundle..." mkdir $BUNDLE/Contents/Resources/lang cp ${current_dir}/lang/*.qm $BUNDLE/Contents/Resources/lang fi if [ -d "${LANG_DIR}" ]; then - echo "Copying translations in the bundle... " - cp ${current_dir}/lang1/*.qm $BUNDLE/Contents/Resources/lang + echo "Copying extra translations in the bundle..." + cp ${current_dir}/lang1/*.qm $BUNDLE/Contents/Resources/lang fi if [ -d "${QET_EXAMPLES_DIR}" ]; then - echo "Copying examples in the bundle... " - mkdir $BUNDLE/Contents/Resources/examples - cp ${current_dir}/examples/*.qet $BUNDLE/Contents/Resources/examples + echo "Copying examples in the bundle..." + mkdir $BUNDLE/Contents/Resources/examples + cp ${current_dir}/examples/*.qet $BUNDLE/Contents/Resources/examples fi if [ -d "${QET_FONTS_DIR}" ]; then - echo "Copying fonts in the bundle... " - mkdir $BUNDLE/Contents/Resources/fonts - cp ${current_dir}/fonts/*.ttf $BUNDLE/Contents/Resources/fonts + echo "Copying fonts in the bundle..." + mkdir $BUNDLE/Contents/Resources/fonts + cp ${current_dir}/fonts/*.ttf $BUNDLE/Contents/Resources/fonts fi if [ -d "${QET_LICENSES_DIR}" ]; then @@ -233,74 +222,141 @@ if [ -d "${QET_LICENSES_DIR}" ]; then cp -R -L ${QET_LICENSES_DIR} $BUNDLE/Contents/Resources/licenses fi -codesign --force --deep --sign --timestamp -s "Developer ID Application: Laurent TRINQUES (Y73WZ6WZ5X)" --options=runtime $BUNDLE - -### create zip tarball for notarization ############################################### +### Sign the bundle ################################################# echo echo "______________________________________________________________" -echo "Create zip tarball for notarization:" +echo "Code signing bundle:" -/usr/bin/ditto -c -k --keepParent $BUNDLE "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" +codesign --force --deep --sign --timestamp \ + -s "Developer ID Application: Laurent TRINQUES (Y73WZ6WZ5X)" \ + --options=runtime $BUNDLE -### notarize zip tarball ############################################### -echo -e "\033[1;31mWould you like to upload for Notarize packages "${APPNAME}"-"$VERSION"-"r$HEAD-arm64.zip", n/Y?.\033[m" +### Create zip for notarization only ################################ +# This ZIP is temporary — used only to submit to notarytool. +# The final deliverable will be a DMG (see below). + +echo +echo "______________________________________________________________" +echo "Create temporary zip for notarization:" + +NOTARIZE_ZIP="/tmp/${APPNAME}-$VERSION-r$HEAD-arm64-notarize.zip" +/usr/bin/ditto -c -k --keepParent $BUNDLE "$NOTARIZE_ZIP" + +### Notarize ######################################################## + +echo -e "\033[1;31mWould you like to upload for notarization \"${APPNAME}-${VERSION}-r${HEAD}-arm64\", n/Y?\033[m" read a if [[ $a == "Y" || $a == "y" ]]; then -echo -echo "______________________________________________________________" -echo "Notarize zip tarball:" - -xcrun notarytool submit "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" --keychain-profile "org.qelectrotech" --wait + echo + echo "______________________________________________________________" + echo "Notarizing:" + xcrun notarytool submit "$NOTARIZE_ZIP" --keychain-profile "org.qelectrotech" --wait else -echo -e "\033[1;33mExit.\033[m" + echo -e "\033[1;33mExit.\033[m" fi -### Clean up zip used for notarization ######################################## -echo 'Cleaning up notarization zip...' -rm "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" +# Clean up temporary notarization zip +echo "Cleaning up temporary notarization zip..." +rm -f "$NOTARIZE_ZIP" -### Staple the notarization ticket to the .app ################################ -echo -e "\033[1;31mWould you like to staple the app MacOS packages "${APPNAME}"-"$VERSION"-"r$HEAD", n/Y?.\033[m" +### Staple ########################################################## + +echo -e "\033[1;31mWould you like to staple the app \"${APPNAME}-${VERSION}-r${HEAD}\", n/Y?\033[m" read a if [[ $a == "Y" || $a == "y" ]]; then -xcrun stapler staple -v $BUNDLE + xcrun stapler staple -v $BUNDLE + # Verify staple is correctly applied + echo "Verifying staple..." + xcrun stapler validate -v $BUNDLE + spctl -a -vv $BUNDLE else -echo -e "\033[1;33mExit.\033[m" + echo -e "\033[1;33mExit.\033[m" fi -### Re-create final zip tarball (without --sequesterRsrc so Gatekeeper works with Chrome) ### +### Create final DMG ################################################ +# A DMG is used instead of a ZIP because it correctly preserves the +# Gatekeeper staple when downloaded via Chrome or any other browser. +# ZIP extraction via Archive Utility can strip extended attributes, +# causing Gatekeeper to block the app with an "unverified developer" +# warning. A signed and notarized DMG does not have this issue. + echo echo "______________________________________________________________" -echo "Re-create final zip tarball (stapled, Gatekeeper-compatible):" +echo "Create final DMG (Gatekeeper-compatible with Chrome and Safari):" -# Do NOT use --sequesterRsrc: it breaks extended attributes extraction -# in Chrome / Archive Utility, causing Gatekeeper to block the app. -# ditto without --sequesterRsrc preserves the staple correctly. -/usr/bin/ditto -c -k --keepParent $BUNDLE "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" +mkdir -p "build-aux/mac-osx" -### Clean up bundle ####################################################### -echo 'Cleaning up bundle...' +# Create a temporary writable DMG from the stapled .app bundle +hdiutil create \ + -volname "QElectroTech $VERSION" \ + -srcfolder "$BUNDLE" \ + -ov \ + -format UDRW \ + -fs HFS+ \ + "/tmp/qet_tmp.dmg" + +# Convert to compressed read-only DMG +hdiutil convert "/tmp/qet_tmp.dmg" \ + -format UDZO \ + -o "$DMG_PATH" + +rm -f "/tmp/qet_tmp.dmg" + +# Sign the DMG itself +codesign \ + --sign "Developer ID Application: Laurent TRINQUES (Y73WZ6WZ5X)" \ + --timestamp \ + "$DMG_PATH" + +echo "DMG created and signed: $DMG_PATH" + +### Notarize the DMG ################################################ + +echo -e "\033[1;31mWould you like to notarize the DMG \"${DMG_NAME}\", n/Y?\033[m" +read a +if [[ $a == "Y" || $a == "y" ]]; then + echo + echo "______________________________________________________________" + echo "Notarizing DMG:" + xcrun notarytool submit "$DMG_PATH" --keychain-profile "org.qelectrotech" --wait + + echo "Stapling notarization ticket to DMG..." + xcrun stapler staple "$DMG_PATH" + echo "DMG notarized and stapled OK." +else + echo -e "\033[1;33mExit.\033[m" +fi + +### Clean up bundle ################################################# + +echo "Cleaning up bundle..." rm -rf $BUNDLE -### The end, process is done ########################################## +### The end ######################################################### echo echo "______________________________________________________________" -echo "The process of creating deployable application zip is done." -echo "The zip is in the folder 'build-aux/mac-osx'." +echo "The process is done." +echo "DMG is in the folder 'build-aux/mac-osx'." -#rsync to TF DMG builds -echo -e "\033[1;31mWould you like to upload MacOS packages "${APPNAME}"-"$VERSION"-"r$HEAD-arm64.zip", n/Y?.\033[m" +### Upload via rsync ################################################ + +echo -e "\033[1;31mWould you like to upload MacOS package \"${DMG_NAME}\", n/Y?\033[m" read a if [[ $a == "Y" || $a == "y" ]]; then -cp -Rf "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" /Users/laurent/MAC_OS_X/ -rsync -e ssh -av --delete-after --no-owner --no-g --chmod=g+w --progress --exclude='.DS_Store' /Users/laurent/MAC_OS_X/ server:download.qelectrotech.org/qet/builds/MAC_OS_X/arm64/ -if [ $? != 0 ]; then -{ -echo "RSYNC ERROR: problem syncing ${APPNAME}-$VERSION-r$HEAD-arm64.zip" -rsync -e ssh -av --delete-after --no-owner --no-g --chmod=g+w --progress --exclude='.DS_Store' /Users/laurent/MAC_OS_X/ server:download.qelectrotech.org/qet/builds/MAC_OS_X/arm64/ -} fi + cp -Rf "$DMG_PATH" /Users/laurent/MAC_OS_X/ + rsync -e ssh -av --delete-after --no-owner --no-g --chmod=g+w \ + --progress --exclude='.DS_Store' \ + /Users/laurent/MAC_OS_X/ \ + server:download.qelectrotech.org/qet/builds/MAC_OS_X/arm64/ + if [ $? != 0 ]; then + echo "RSYNC ERROR: problem syncing ${DMG_NAME}, retrying..." + rsync -e ssh -av --delete-after --no-owner --no-g --chmod=g+w \ + --progress --exclude='.DS_Store' \ + /Users/laurent/MAC_OS_X/ \ + server:download.qelectrotech.org/qet/builds/MAC_OS_X/arm64/ + fi else -echo -e "\033[1;33mExit.\033[m" + echo -e "\033[1;33mExit.\033[m" fi From c0ba961fb3aa4825ffd2d22303c7ef2a99c666e1 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 14 May 2026 11:45:11 +0200 Subject: [PATCH 52/82] Update MacQetDeploy_arm64.sh --- misc/MacQetDeploy_arm64.sh | 87 +++++++++++++++++++++++++++----------- 1 file changed, 63 insertions(+), 24 deletions(-) diff --git a/misc/MacQetDeploy_arm64.sh b/misc/MacQetDeploy_arm64.sh index de258291b..6e5e38cdd 100644 --- a/misc/MacQetDeploy_arm64.sh +++ b/misc/MacQetDeploy_arm64.sh @@ -25,6 +25,7 @@ export DEVELOPER_DIR=/Applications/Xcode_14.01.app/Contents/Developer APPNAME='qelectrotech' BUNDLE=$APPNAME.app APPBIN="$BUNDLE/Contents/MacOS/$APPNAME" +IDENTITY="Developer ID Application: Laurent TRINQUES (Y73WZ6WZ5X)" # Script location current_dir=$(dirname "$0") @@ -222,15 +223,41 @@ if [ -d "${QET_LICENSES_DIR}" ]; then cp -R -L ${QET_LICENSES_DIR} $BUNDLE/Contents/Resources/licenses fi -### Sign the bundle ################################################# +### Sign the bundle (without --deep, component by component) ######## +# --deep is deprecated and can produce invalid signatures on nested +# binaries. We sign frameworks and plugins first, then the bundle. echo echo "______________________________________________________________" -echo "Code signing bundle:" +echo "Code signing bundle (component by component):" -codesign --force --deep --sign --timestamp \ - -s "Developer ID Application: Laurent TRINQUES (Y73WZ6WZ5X)" \ - --options=runtime $BUNDLE +# Sign frameworks +find "$BUNDLE/Contents/Frameworks" -name "*.framework" -prune | while read fw; do + codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$fw" +done + +# Sign plugins (.dylib and .so) +find "$BUNDLE/Contents/PlugIns" \( -name "*.dylib" -o -name "*.so" \) | while read lib; do + codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$lib" +done + +# Sign remaining dylibs at bundle root level +find "$BUNDLE/Contents/MacOS" -name "*.dylib" | while read lib; do + codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$lib" +done + +# Sign the bundle itself last +codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$BUNDLE" + +# Verify signature before proceeding +echo +echo "Verifying bundle signature..." +codesign --verify --deep --strict --verbose=2 "$BUNDLE" +if [ $? -ne 0 ]; then + echo "ERROR: bundle signature verification failed, aborting." + exit 1 +fi +echo "Bundle signature OK." ### Create zip for notarization only ################################ # This ZIP is temporary — used only to submit to notarytool. @@ -241,7 +268,7 @@ echo "______________________________________________________________" echo "Create temporary zip for notarization:" NOTARIZE_ZIP="/tmp/${APPNAME}-$VERSION-r$HEAD-arm64-notarize.zip" -/usr/bin/ditto -c -k --keepParent $BUNDLE "$NOTARIZE_ZIP" +/usr/bin/ditto -c -k --keepParent "$BUNDLE" "$NOTARIZE_ZIP" ### Notarize ######################################################## @@ -252,6 +279,11 @@ if [[ $a == "Y" || $a == "y" ]]; then echo "______________________________________________________________" echo "Notarizing:" xcrun notarytool submit "$NOTARIZE_ZIP" --keychain-profile "org.qelectrotech" --wait + if [ $? -ne 0 ]; then + echo "ERROR: notarization failed. Check the log with:" + echo " xcrun notarytool log --keychain-profile org.qelectrotech" + exit 1 + fi else echo -e "\033[1;33mExit.\033[m" fi @@ -265,11 +297,10 @@ rm -f "$NOTARIZE_ZIP" echo -e "\033[1;31mWould you like to staple the app \"${APPNAME}-${VERSION}-r${HEAD}\", n/Y?\033[m" read a if [[ $a == "Y" || $a == "y" ]]; then - xcrun stapler staple -v $BUNDLE - # Verify staple is correctly applied + xcrun stapler staple -v "$BUNDLE" echo "Verifying staple..." - xcrun stapler validate -v $BUNDLE - spctl -a -vv $BUNDLE + xcrun stapler validate -v "$BUNDLE" + spctl -a -vv "$BUNDLE" else echo -e "\033[1;33mExit.\033[m" fi @@ -277,9 +308,10 @@ fi ### Create final DMG ################################################ # A DMG is used instead of a ZIP because it correctly preserves the # Gatekeeper staple when downloaded via Chrome or any other browser. -# ZIP extraction via Archive Utility can strip extended attributes, -# causing Gatekeeper to block the app with an "unverified developer" -# warning. A signed and notarized DMG does not have this issue. +# +# We create the DMG directly in UDZO (compressed read-only) format +# to avoid the UDRW -> UDZO conversion step, which can alter file +# signatures and cause notarization to fail. echo echo "______________________________________________________________" @@ -287,25 +319,23 @@ echo "Create final DMG (Gatekeeper-compatible with Chrome and Safari):" mkdir -p "build-aux/mac-osx" -# Create a temporary writable DMG from the stapled .app bundle +# Create compressed read-only DMG directly from the stapled .app bundle hdiutil create \ -volname "QElectroTech $VERSION" \ -srcfolder "$BUNDLE" \ -ov \ - -format UDRW \ - -fs HFS+ \ - "/tmp/qet_tmp.dmg" - -# Convert to compressed read-only DMG -hdiutil convert "/tmp/qet_tmp.dmg" \ -format UDZO \ - -o "$DMG_PATH" + -fs HFS+ \ + "$DMG_PATH" -rm -f "/tmp/qet_tmp.dmg" +if [ $? -ne 0 ]; then + echo "ERROR: hdiutil failed to create DMG." + exit 1 +fi # Sign the DMG itself codesign \ - --sign "Developer ID Application: Laurent TRINQUES (Y73WZ6WZ5X)" \ + --sign "$IDENTITY" \ --timestamp \ "$DMG_PATH" @@ -320,9 +350,18 @@ if [[ $a == "Y" || $a == "y" ]]; then echo "______________________________________________________________" echo "Notarizing DMG:" xcrun notarytool submit "$DMG_PATH" --keychain-profile "org.qelectrotech" --wait + if [ $? -ne 0 ]; then + echo "ERROR: DMG notarization failed. Check the log with:" + echo " xcrun notarytool log --keychain-profile org.qelectrotech" + exit 1 + fi echo "Stapling notarization ticket to DMG..." xcrun stapler staple "$DMG_PATH" + if [ $? -ne 0 ]; then + echo "ERROR: stapling DMG failed." + exit 1 + fi echo "DMG notarized and stapled OK." else echo -e "\033[1;33mExit.\033[m" @@ -331,7 +370,7 @@ fi ### Clean up bundle ################################################# echo "Cleaning up bundle..." -rm -rf $BUNDLE +rm -rf "$BUNDLE" ### The end ######################################################### From d6251c901e48c4ca357b8a3de06e7c3d31b1ec4c Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 14 May 2026 12:11:21 +0200 Subject: [PATCH 53/82] Update MacQetDeploy_arm64.sh --- misc/MacQetDeploy_arm64.sh | 50 ++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/misc/MacQetDeploy_arm64.sh b/misc/MacQetDeploy_arm64.sh index 6e5e38cdd..131f2a85f 100644 --- a/misc/MacQetDeploy_arm64.sh +++ b/misc/MacQetDeploy_arm64.sh @@ -223,33 +223,50 @@ if [ -d "${QET_LICENSES_DIR}" ]; then cp -R -L ${QET_LICENSES_DIR} $BUNDLE/Contents/Resources/licenses fi -### Sign the bundle (without --deep, component by component) ######## -# --deep is deprecated and can produce invalid signatures on nested -# binaries. We sign frameworks and plugins first, then the bundle. +### Sign the bundle ################################################# +# Sign in the correct order: deepest binaries first, bundle last. +# We sign ALL .dylib files individually (including flat libs copied +# by macdeployqt into Contents/Frameworks/) before signing the bundle. +# Using --deep is deprecated and misses flat dylibs, causing notarization +# to fail with "not signed with a valid Developer ID certificate". echo echo "______________________________________________________________" -echo "Code signing bundle (component by component):" +echo "Code signing (all dylibs, plugins, frameworks, then bundle):" -# Sign frameworks -find "$BUNDLE/Contents/Frameworks" -name "*.framework" -prune | while read fw; do +# 1. Sign all flat .dylib files in Frameworks (copied by macdeployqt from Homebrew) +echo "-- Signing dylibs in Frameworks..." +find "$BUNDLE/Contents/Frameworks" -name "*.dylib" | while read lib; do + echo " $(basename $lib)" + codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$lib" +done + +# 2. Sign .framework bundles +echo "-- Signing .framework bundles..." +find "$BUNDLE/Contents/Frameworks" -maxdepth 1 -name "*.framework" | while read fw; do + echo " $(basename $fw)" codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$fw" done -# Sign plugins (.dylib and .so) +# 3. Sign plugins (.dylib and .so in PlugIns/) +echo "-- Signing plugins..." find "$BUNDLE/Contents/PlugIns" \( -name "*.dylib" -o -name "*.so" \) | while read lib; do + echo " $(basename $lib)" codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$lib" done -# Sign remaining dylibs at bundle root level +# 4. Sign any remaining dylibs in MacOS/ +echo "-- Signing dylibs in MacOS/..." find "$BUNDLE/Contents/MacOS" -name "*.dylib" | while read lib; do + echo " $(basename $lib)" codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$lib" done -# Sign the bundle itself last +# 5. Sign the bundle itself last +echo "-- Signing bundle..." codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$BUNDLE" -# Verify signature before proceeding +# 6. Verify the whole bundle signature before proceeding echo echo "Verifying bundle signature..." codesign --verify --deep --strict --verbose=2 "$BUNDLE" @@ -260,8 +277,8 @@ fi echo "Bundle signature OK." ### Create zip for notarization only ################################ -# This ZIP is temporary — used only to submit to notarytool. -# The final deliverable will be a DMG (see below). +# Temporary ZIP used only for notarytool submission. +# The final deliverable is a DMG (see below). echo echo "______________________________________________________________" @@ -282,6 +299,7 @@ if [[ $a == "Y" || $a == "y" ]]; then if [ $? -ne 0 ]; then echo "ERROR: notarization failed. Check the log with:" echo " xcrun notarytool log --keychain-profile org.qelectrotech" + rm -f "$NOTARIZE_ZIP" exit 1 fi else @@ -308,10 +326,11 @@ fi ### Create final DMG ################################################ # A DMG is used instead of a ZIP because it correctly preserves the # Gatekeeper staple when downloaded via Chrome or any other browser. +# ZIP extraction via Archive Utility can strip extended attributes, +# causing Gatekeeper to block the app. # -# We create the DMG directly in UDZO (compressed read-only) format -# to avoid the UDRW -> UDZO conversion step, which can alter file -# signatures and cause notarization to fail. +# The DMG is created directly in UDZO (compressed read-only) format +# to avoid a UDRW -> UDZO conversion step that can alter file signatures. echo echo "______________________________________________________________" @@ -319,7 +338,6 @@ echo "Create final DMG (Gatekeeper-compatible with Chrome and Safari):" mkdir -p "build-aux/mac-osx" -# Create compressed read-only DMG directly from the stapled .app bundle hdiutil create \ -volname "QElectroTech $VERSION" \ -srcfolder "$BUNDLE" \ From 43fb34f852e392a0602b705ac6795aed8dfcefd0 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 14 May 2026 12:44:45 +0200 Subject: [PATCH 54/82] Update MacQetDeploy_arm64.sh --- misc/MacQetDeploy_arm64.sh | 120 ++++++++++++++++++------------------- 1 file changed, 58 insertions(+), 62 deletions(-) diff --git a/misc/MacQetDeploy_arm64.sh b/misc/MacQetDeploy_arm64.sh index 131f2a85f..8dec8f3b3 100644 --- a/misc/MacQetDeploy_arm64.sh +++ b/misc/MacQetDeploy_arm64.sh @@ -50,7 +50,7 @@ echo "\t - update the git depot" echo "\t - build the application bundle," echo "\t - copy over required Qt frameworks," echo "\t - copy additional files: translations, titleblocks and elements," -echo "\t - create DMG disk image." +echo "\t - notarize the .app, then create a signed DMG." echo echo "Enjoy ;-)" echo @@ -224,18 +224,16 @@ if [ -d "${QET_LICENSES_DIR}" ]; then fi ### Sign the bundle ################################################# -# Sign in the correct order: deepest binaries first, bundle last. -# We sign ALL .dylib files individually (including flat libs copied -# by macdeployqt into Contents/Frameworks/) before signing the bundle. -# Using --deep is deprecated and misses flat dylibs, causing notarization -# to fail with "not signed with a valid Developer ID certificate". +# Sign in correct order: all dylibs first (including flat libs copied +# by macdeployqt from Homebrew), then frameworks, plugins, bundle last. +# --deep is deprecated and misses flat dylibs in Frameworks/. echo echo "______________________________________________________________" -echo "Code signing (all dylibs, plugins, frameworks, then bundle):" +echo "Code signing (dylibs → frameworks → plugins → bundle):" -# 1. Sign all flat .dylib files in Frameworks (copied by macdeployqt from Homebrew) -echo "-- Signing dylibs in Frameworks..." +# 1. Sign all flat .dylib files in Frameworks/ +echo "-- Signing dylibs in Frameworks/..." find "$BUNDLE/Contents/Frameworks" -name "*.dylib" | while read lib; do echo " $(basename $lib)" codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$lib" @@ -248,25 +246,30 @@ find "$BUNDLE/Contents/Frameworks" -maxdepth 1 -name "*.framework" | while read codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$fw" done -# 3. Sign plugins (.dylib and .so in PlugIns/) +# 3. Sign plugins echo "-- Signing plugins..." find "$BUNDLE/Contents/PlugIns" \( -name "*.dylib" -o -name "*.so" \) | while read lib; do echo " $(basename $lib)" codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$lib" done -# 4. Sign any remaining dylibs in MacOS/ +# 4. Sign any dylibs in MacOS/ echo "-- Signing dylibs in MacOS/..." find "$BUNDLE/Contents/MacOS" -name "*.dylib" | while read lib; do echo " $(basename $lib)" codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$lib" done -# 5. Sign the bundle itself last +# 5. Sign the main executable explicitly +echo "-- Signing main executable..." +codesign --force --sign "$IDENTITY" --timestamp --options=runtime \ + "$BUNDLE/Contents/MacOS/$APPNAME" + +# 6. Sign the bundle itself last echo "-- Signing bundle..." codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$BUNDLE" -# 6. Verify the whole bundle signature before proceeding +# 7. Verify echo echo "Verifying bundle signature..." codesign --verify --deep --strict --verbose=2 "$BUNDLE" @@ -274,27 +277,35 @@ if [ $? -ne 0 ]; then echo "ERROR: bundle signature verification failed, aborting." exit 1 fi +spctl -a -vv "$BUNDLE" echo "Bundle signature OK." -### Create zip for notarization only ################################ -# Temporary ZIP used only for notarytool submission. -# The final deliverable is a DMG (see below). +### Notarize the .app (via temporary ZIP) ########################### +# Strategy: +# 1. Submit the .app as a ZIP to Apple notarytool → get ticket +# 2. Staple the ticket onto the .app +# 3. Create the DMG from the stapled .app +# 4. Sign the DMG +# 5. Staple the DMG directly (no re-submission needed: Apple +# recognises the ticket already registered for the .app bundle) +# +# This avoids submitting the DMG to notarytool, which would fail +# because hdiutil copies the .app and can invalidate its Sealed +# Resources signature during DMG creation. echo echo "______________________________________________________________" -echo "Create temporary zip for notarization:" +echo "Create temporary ZIP for notarization:" NOTARIZE_ZIP="/tmp/${APPNAME}-$VERSION-r$HEAD-arm64-notarize.zip" /usr/bin/ditto -c -k --keepParent "$BUNDLE" "$NOTARIZE_ZIP" -### Notarize ######################################################## - -echo -e "\033[1;31mWould you like to upload for notarization \"${APPNAME}-${VERSION}-r${HEAD}-arm64\", n/Y?\033[m" +echo -e "\033[1;31mWould you like to notarize the .app \"${APPNAME}-${VERSION}-r${HEAD}\", n/Y?\033[m" read a if [[ $a == "Y" || $a == "y" ]]; then echo echo "______________________________________________________________" - echo "Notarizing:" + echo "Notarizing .app:" xcrun notarytool submit "$NOTARIZE_ZIP" --keychain-profile "org.qelectrotech" --wait if [ $? -ne 0 ]; then echo "ERROR: notarization failed. Check the log with:" @@ -306,35 +317,36 @@ else echo -e "\033[1;33mExit.\033[m" fi -# Clean up temporary notarization zip -echo "Cleaning up temporary notarization zip..." +echo "Cleaning up temporary notarization ZIP..." rm -f "$NOTARIZE_ZIP" -### Staple ########################################################## +### Staple the .app ################################################# -echo -e "\033[1;31mWould you like to staple the app \"${APPNAME}-${VERSION}-r${HEAD}\", n/Y?\033[m" +echo -e "\033[1;31mWould you like to staple the .app \"${APPNAME}-${VERSION}-r${HEAD}\", n/Y?\033[m" read a if [[ $a == "Y" || $a == "y" ]]; then xcrun stapler staple -v "$BUNDLE" - echo "Verifying staple..." + if [ $? -ne 0 ]; then + echo "ERROR: stapling .app failed." + exit 1 + fi + echo "Verifying staple on .app..." xcrun stapler validate -v "$BUNDLE" spctl -a -vv "$BUNDLE" + echo ".app stapled OK." else echo -e "\033[1;33mExit.\033[m" fi -### Create final DMG ################################################ -# A DMG is used instead of a ZIP because it correctly preserves the -# Gatekeeper staple when downloaded via Chrome or any other browser. -# ZIP extraction via Archive Utility can strip extended attributes, -# causing Gatekeeper to block the app. -# -# The DMG is created directly in UDZO (compressed read-only) format -# to avoid a UDRW -> UDZO conversion step that can alter file signatures. +### Create DMG from the stapled .app ################################ +# The .app is already notarized and stapled at this point. +# We create the DMG directly from it — no need to re-submit to +# notarytool. Stapling the DMG directly retrieves the already- +# registered ticket from Apple's CDN. echo echo "______________________________________________________________" -echo "Create final DMG (Gatekeeper-compatible with Chrome and Safari):" +echo "Create DMG from stapled .app:" mkdir -p "build-aux/mac-osx" @@ -351,40 +363,24 @@ if [ $? -ne 0 ]; then exit 1 fi -# Sign the DMG itself +# Sign the DMG +echo "Signing DMG..." codesign \ --sign "$IDENTITY" \ --timestamp \ "$DMG_PATH" -echo "DMG created and signed: $DMG_PATH" - -### Notarize the DMG ################################################ - -echo -e "\033[1;31mWould you like to notarize the DMG \"${DMG_NAME}\", n/Y?\033[m" -read a -if [[ $a == "Y" || $a == "y" ]]; then - echo - echo "______________________________________________________________" - echo "Notarizing DMG:" - xcrun notarytool submit "$DMG_PATH" --keychain-profile "org.qelectrotech" --wait - if [ $? -ne 0 ]; then - echo "ERROR: DMG notarization failed. Check the log with:" - echo " xcrun notarytool log --keychain-profile org.qelectrotech" - exit 1 - fi - - echo "Stapling notarization ticket to DMG..." - xcrun stapler staple "$DMG_PATH" - if [ $? -ne 0 ]; then - echo "ERROR: stapling DMG failed." - exit 1 - fi - echo "DMG notarized and stapled OK." -else - echo -e "\033[1;33mExit.\033[m" +# Staple the DMG — retrieves the ticket already registered for the +# .app bundle, no new notarytool submission required +echo "Stapling DMG..." +xcrun stapler staple "$DMG_PATH" +if [ $? -ne 0 ]; then + echo "WARNING: stapling DMG failed. The DMG is still usable but" + echo "will require an internet connection for Gatekeeper validation." fi +echo "DMG ready: $DMG_PATH" + ### Clean up bundle ################################################# echo "Cleaning up bundle..." From 87f9f40e91288cd2c29ba188d38ac259c9963c85 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 14 May 2026 13:12:43 +0200 Subject: [PATCH 55/82] Update MacQetDeploy_arm64.sh --- misc/MacQetDeploy_arm64.sh | 168 +++++++++++++++++++++++++++++-------- 1 file changed, 131 insertions(+), 37 deletions(-) diff --git a/misc/MacQetDeploy_arm64.sh b/misc/MacQetDeploy_arm64.sh index 8dec8f3b3..99e7b9846 100644 --- a/misc/MacQetDeploy_arm64.sh +++ b/misc/MacQetDeploy_arm64.sh @@ -27,6 +27,11 @@ BUNDLE=$APPNAME.app APPBIN="$BUNDLE/Contents/MacOS/$APPNAME" IDENTITY="Developer ID Application: Laurent TRINQUES (Y73WZ6WZ5X)" +# Temp paths +RW_DMG="/tmp/qet_rw.dmg" +MOUNT_POINT="/tmp/qet_dmg_mount" +STAGING="/tmp/qet_dmg_staging" + # Script location current_dir=$(dirname "$0") @@ -226,11 +231,10 @@ fi ### Sign the bundle ################################################# # Sign in correct order: all dylibs first (including flat libs copied # by macdeployqt from Homebrew), then frameworks, plugins, bundle last. -# --deep is deprecated and misses flat dylibs in Frameworks/. echo echo "______________________________________________________________" -echo "Code signing (dylibs → frameworks → plugins → bundle):" +echo "Code signing (dylibs -> frameworks -> plugins -> bundle):" # 1. Sign all flat .dylib files in Frameworks/ echo "-- Signing dylibs in Frameworks/..." @@ -281,17 +285,6 @@ spctl -a -vv "$BUNDLE" echo "Bundle signature OK." ### Notarize the .app (via temporary ZIP) ########################### -# Strategy: -# 1. Submit the .app as a ZIP to Apple notarytool → get ticket -# 2. Staple the ticket onto the .app -# 3. Create the DMG from the stapled .app -# 4. Sign the DMG -# 5. Staple the DMG directly (no re-submission needed: Apple -# recognises the ticket already registered for the .app bundle) -# -# This avoids submitting the DMG to notarytool, which would fail -# because hdiutil copies the .app and can invalidate its Sealed -# Resources signature during DMG creation. echo echo "______________________________________________________________" @@ -338,48 +331,149 @@ else echo -e "\033[1;33mExit.\033[m" fi -### Create DMG from the stapled .app ################################ -# The .app is already notarized and stapled at this point. -# We create the DMG directly from it — no need to re-submit to -# notarytool. Stapling the DMG directly retrieves the already- -# registered ticket from Apple's CDN. +### Create staging folder with Applications symlink ################# +# The staging folder contains the .app and a symlink to /Applications +# so the user can drag-and-drop to install directly from the DMG. echo echo "______________________________________________________________" -echo "Create DMG from stapled .app:" +echo "Preparing DMG staging folder:" -mkdir -p "build-aux/mac-osx" +rm -rf "$STAGING" +mkdir -p "$STAGING" +cp -R "$BUNDLE" "$STAGING/" +ln -s /Applications "$STAGING/Applications" +echo "Staging folder ready: $STAGING" +### Create writable DMG (UDRW) ###################################### +# We use a writable DMG first so we can re-sign the .app inside +# after hdiutil copies it (hdiutil can invalidate Sealed Resources +# during the copy, so we must re-sign inside the mounted volume). + +echo +echo "______________________________________________________________" +echo "Create writable DMG (UDRW) and re-sign .app inside:" + +rm -f "$RW_DMG" hdiutil create \ -volname "QElectroTech $VERSION" \ - -srcfolder "$BUNDLE" \ + -srcfolder "$STAGING" \ -ov \ - -format UDZO \ + -format UDRW \ -fs HFS+ \ - "$DMG_PATH" + "$RW_DMG" if [ $? -ne 0 ]; then - echo "ERROR: hdiutil failed to create DMG." + echo "ERROR: hdiutil failed to create writable DMG." + rm -rf "$STAGING" exit 1 fi -# Sign the DMG -echo "Signing DMG..." -codesign \ - --sign "$IDENTITY" \ - --timestamp \ - "$DMG_PATH" +# Mount the writable DMG +rm -rf "$MOUNT_POINT" +mkdir -p "$MOUNT_POINT" +hdiutil attach "$RW_DMG" -mountpoint "$MOUNT_POINT" -nobrowse -noverify -# Staple the DMG — retrieves the ticket already registered for the -# .app bundle, no new notarytool submission required -echo "Stapling DMG..." -xcrun stapler staple "$DMG_PATH" if [ $? -ne 0 ]; then - echo "WARNING: stapling DMG failed. The DMG is still usable but" - echo "will require an internet connection for Gatekeeper validation." + echo "ERROR: failed to mount writable DMG." + rm -f "$RW_DMG" + rm -rf "$STAGING" + exit 1 fi -echo "DMG ready: $DMG_PATH" +# Re-sign all binaries inside the mounted DMG +echo "-- Re-signing dylibs inside DMG..." +find "$MOUNT_POINT/$BUNDLE/Contents/Frameworks" -name "*.dylib" | while read lib; do + codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$lib" +done + +find "$MOUNT_POINT/$BUNDLE/Contents/Frameworks" -maxdepth 1 -name "*.framework" | while read fw; do + codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$fw" +done + +find "$MOUNT_POINT/$BUNDLE/Contents/PlugIns" \( -name "*.dylib" -o -name "*.so" \) | while read lib; do + codesign --force --sign "$IDENTITY" --timestamp --options=runtime "$lib" +done + +echo "-- Re-signing main executable inside DMG..." +codesign --force --sign "$IDENTITY" --timestamp --options=runtime \ + "$MOUNT_POINT/$BUNDLE/Contents/MacOS/$APPNAME" + +echo "-- Re-signing bundle inside DMG..." +codesign --force --sign "$IDENTITY" --timestamp --options=runtime \ + "$MOUNT_POINT/$BUNDLE" + +# Verify signature inside the mounted DMG +echo "Verifying bundle signature inside DMG..." +codesign --verify --deep --strict --verbose=2 "$MOUNT_POINT/$BUNDLE" +if [ $? -ne 0 ]; then + echo "ERROR: bundle signature invalid inside DMG, aborting." + hdiutil detach "$MOUNT_POINT" + rm -f "$RW_DMG" + rm -rf "$STAGING" "$MOUNT_POINT" + exit 1 +fi +echo "Bundle signature inside DMG OK." + +# Detach the writable DMG +hdiutil detach "$MOUNT_POINT" + +### Convert UDRW to final compressed UDZO ########################### + +echo +echo "______________________________________________________________" +echo "Convert to final compressed DMG (UDZO):" + +mkdir -p "build-aux/mac-osx" +rm -f "$DMG_PATH" + +hdiutil convert "$RW_DMG" \ + -format UDZO \ + -o "$DMG_PATH" + +if [ $? -ne 0 ]; then + echo "ERROR: hdiutil convert failed." + rm -f "$RW_DMG" + rm -rf "$STAGING" "$MOUNT_POINT" + exit 1 +fi + +rm -f "$RW_DMG" +rm -rf "$STAGING" "$MOUNT_POINT" + +### Sign the final DMG ############################################## + +echo "Signing final DMG..." +codesign --sign "$IDENTITY" --timestamp "$DMG_PATH" + +### Notarize and staple the final DMG ############################### + +echo -e "\033[1;31mWould you like to notarize the DMG \"${DMG_NAME}\", n/Y?\033[m" +read a +if [[ $a == "Y" || $a == "y" ]]; then + echo + echo "______________________________________________________________" + echo "Notarizing DMG:" + xcrun notarytool submit "$DMG_PATH" --keychain-profile "org.qelectrotech" --wait + if [ $? -ne 0 ]; then + echo "ERROR: DMG notarization failed. Check the log with:" + echo " xcrun notarytool log --keychain-profile org.qelectrotech" + exit 1 + fi + + echo "Stapling DMG..." + xcrun stapler staple "$DMG_PATH" + if [ $? -ne 0 ]; then + echo "ERROR: stapling DMG failed." + exit 1 + fi + echo "DMG notarized and stapled OK." + + echo "Verifying final DMG..." + spctl -a -vv "$DMG_PATH" +else + echo -e "\033[1;33mExit.\033[m" +fi ### Clean up bundle ################################################# From 413e13a38c4f8c334365f7db14990a8be34db01d Mon Sep 17 00:00:00 2001 From: zakb120 Date: Mon, 18 May 2026 09:29:46 +0300 Subject: [PATCH 56/82] Tr Translate Zekeriya AKBABA --- lang/qet_tr.qm | Bin 217092 -> 369618 bytes lang/qet_tr.ts | 6609 +++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 5641 insertions(+), 968 deletions(-) diff --git a/lang/qet_tr.qm b/lang/qet_tr.qm index 587985f957906d0f5320cc744ce5f71921ae6e53..949b8e1c7d60bc3352a059b5c66d602a0b3e0c0f 100644 GIT binary patch literal 369618 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

Mk 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�sP8LG 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 diff --git a/lang/qet_tr.ts b/lang/qet_tr.ts index fb1aed817..88beb5880 100644 --- a/lang/qet_tr.ts +++ b/lang/qet_tr.ts @@ -5,53 +5,63 @@ AboutQETDialog + À propos de QElectrotech QElectotech hakkında + À propos - + Hakkında + Auteurs - + Yazarlar + Traducteurs - + Çevirmenler + Contributeurs - + Katkıda Bulunanlar + Version - + Sürüm + Projet annexe - + Yan proje + Bibliothèques - + Kütüphaneler + Licenses - + Lisanslar + log - + log @@ -63,7 +73,7 @@ Les développeurs de QElectroTech about tab, developers line - + QElectroTech geliştiricileri @@ -178,7 +188,7 @@ Traduction en flamand - + Flamanca çeviri @@ -204,22 +214,22 @@ Traduction en serbe - + Sırpça çeviri Traduction en japonais - + Japonca çeviri Traduction en coréen - + Korece çeviri Traduction en mongol - + Moğolca çeviri @@ -284,63 +294,66 @@ Redimensionneur d'éléments Element scaler - + Öğe yeniden boyutlandırıcı Convertisseur d'élément DXF Dxf2elmt - + DXF öğe dönüştürücüsü Outil de traduction d'éléments Qet_translate - + Öğe çeviri aracı Paquets Snap - + Snap paketleri Traduction en ukrainien - + Ukraynaca çeviri Traduction en norvégien - + Norveççe çeviri Traduction en slovène - + Slovence çeviri Générateur d'élément lambda Lambda element generator - + Lambda öğe üreteci AddLinkDialog + Insert Link Link Ekle + Title: Başlık: + URL: URL: @@ -350,119 +363,144 @@ AddTableDialog + Ajouter un tableau - + Tablo ekle + Affichage Görünüm + Ajuster la taille du tableau au folio - + Tablo boyutunu sayfaya uydur + Ajouter de nouveau folio et tableau si nécessaire. - + Gerekirse yeni sayfa ve tablo ekleyin. + Nom du tableau - + Tablo adı + Texte des en-têtes - + Başlık metni + + Gauche Sol + + Centre Orta + + Droite Sağ + + Police : - + Yazı tipi : + + Éditer Düzenleme + + Marges : - + Kenar boşlukları : + + Alignement : Hizalama : + Texte du tableau - + Tablo metni + Configuration - + Yapılandırma Contenu - + İçerik Sélectionner la police des en tête du tableau - + Tablo başlığı yazı tipini seç Sélectionner la police des cellules du tableau - + Tablo hücreleri yazı tipini seç AddTerminalStripItemDialog + Dialog Diyalog + Ajouter le plan de bornes suivant : - + Aşağıdaki klemens planını ekle : AlignmentTextDialog + Alignement du texte Metin hizalama @@ -504,32 +542,38 @@ AutoNumberingDockWidget + Sélection numérotation auto Otomatik Numaralandırma Seçimi + Folio Sayfa + Element I am not sure about this It should be checked Element + Conducteur İletken + Configurer les règles d'auto numérotation Otomatik numaralandırma kurallarını yapılandır + Configurer Yapılandır @@ -538,51 +582,61 @@ AutoNumberingManagementW + Form Form + Range Aralık + Apply to Selected Locations Seçili Yerlere Uygula + Apply to Selected Folios Seçili Sayfalara Uygula + Apply to Entire Project Bütün Projeye Uygula + From Başlangıç + To Bitiş + Project Status: Proje Durumu: + Update Policy Güncelleme Kuralları + Conductor İletken @@ -590,6 +644,9 @@ + + + Both Hepsi @@ -597,12 +654,17 @@ + + + Only New Sadece Yeni + + Only Existent Sadece Var Olan @@ -610,22 +672,28 @@ + + + Disable Devre Dışı + Element I am not sure about this It should be checked Element + Folio Sayfa + Existent Var Olan @@ -671,23 +739,27 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi BOMExportDialog + Dialog Diyalog + Mise en page Düzen + inclure les en-têtes - + başlıkları dahil et + Formater en tant que liste de materiel - + Malzeme listesi olarak formatla @@ -732,24 +804,28 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Quantité numéro d'article Special field with name : designation quantity - + Miktar makale numarası BorderPropertiesWidget + Form Form + Dimensions du folio Sayfa boyutları + + px pixel pixel @@ -758,35 +834,129 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi + + x x + Lignes : Satırlar : + + Afficher les en-têtes Başlıkları göster + Colonnes : Sütunlar : + + ColumnResizerTestWidget + + + ColumnResizer Test + ColumnResizer Test + + + + GridLayout + GridLayout + + + + A line edit: + Satır düzenleyici: + + + + Spin me: + Beni döndür: + + + + A check box + Bir onay kutusu + + + + FormLayout + FormLayout + + + + One line: + Tek satır: + + + + A much bigger text area: + Çok daha büyük metin alanı: + + + + FormLayout2 + FormLayout2 + + + + Time: + Saat: + + + + Show seconds + Saniyeleri göster + + + + Details: + Ayrıntılar: + + + + Option &1 + Seçenek &1 + + + + Option &2 + Seçenek &2 + + + + Crazy QGridLayout + Crazy QGridLayout + + + + + + + PushButton + Buton + + CompositeTextEditDialog + Texte composé Metin oluşturma + Ajouter une variable : Bir değişken ekleyin : @@ -816,11 +986,13 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ConductorPropertiesDialog + Éditer les propriétés d'un conducteur İletken özelliklerini düzenleme + Appliquer les propriétés à l'ensemble des conducteurs de ce potentiel Bu gerilim hattındaki bütün iletkenlerine bu özellikleri uygula @@ -841,228 +1013,278 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ConductorPropertiesWidget + Form Form + Type Tip + Taille du texte : Metin boyutu : + Texte visible Görünür metin + activer l'option un texte par potentiel I am not sure about this.It should be checked. Sayfa potansiyeli başına birmetin göster + Afficher un texte de potentiel par folio. Sayfa potansiyeli başına bir metin göster. + Taille du texte Metin boyutu + Texte Metin + Texte : Metin : + Fonction : Fonksiyon : + Formule du texte : Metin Formülü : + Tension / Protocole : Gerilim / Protokol : + Autonumérotation Otomatik numaralandırma + éditer les numérotations Numaralandırmayı düzenle + Section du conducteur - + İletken kesiti + Horizontal en haut Üst yatay + Horizontal en bas Aşağı yatay + Vertical à gauche Dikey Sol + Vertical à droite Dikey sağ + Position et rotation du texte de conducteur : İletken metninin yeri ve yönü : + cable - + kablo + bus - + bus + + Unifilaire Tek Hatlı + + Nombre de phase Faz sayısı + Neutre Nötr + neutre nötr + Phase Faz + phase faz + Protective Earth Neutral Koruma ve Nötr İletkeni + PEN PEN + Terre Toprak + terre toprak + TextLabel EtiketMetni + Couleur du texte: - + Metin rengi: + Apparence Görünüm + Couleur secondaire : İkincil renk : + px + + Couleur : Renk : + Taille de trait : Çizgi boyutu : + + Couleur du conducteur İletken rengi + + &Multifilaire &Çoklu Hatlı + Taille : Boyut : + + Style du conducteur İletken Şekli + Style : Şekil : @@ -1089,13 +1311,15 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ConfigSaveLoaderWidget + GroupBox - + GroupBox + Configuration - + Yapılandırma @@ -1119,22 +1343,26 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi DiagramContextWidget + Form Form + Les noms ne peuvent contenir que des lettres minuscules, des chiffres et des tirets. Etiketler yalnızca küçük harfler, sayılar ve kısa çizgiler içerebilir. + Nom İsim + Valeur Değer @@ -1143,28 +1371,33 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi DiagramEditorHandlerSizeWidget + Form Form + Poignées : - + Tutamaçlar : + x 1 - + x 1 + x 2 - + x 2 + x 3 - + x 3 @@ -1204,7 +1437,8 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi <Shift> to move - + +<Shift> ile taşı @@ -1231,12 +1465,12 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Créer un template context menu action - + Şablon oluştur X: %1 Y: %2 - + X: %1 Y: %2 @@ -1252,13 +1486,14 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Modèle enregistré - + Şablon kaydedildi Le modèle a été enregistré avec succès sous : %1 - + Şablon başarıyla şu adla kaydedildi: +%1 @@ -1268,7 +1503,7 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Le fichier n'a pas pu être écrit. - + Dosya yazılamadı. @@ -1286,16 +1521,19 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi DialogWaiting + Merci de patienter Lütfen bekleyiniz + Titre Başlık + TextLabel MetinEtiketi @@ -1317,11 +1555,13 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi DynamicElementTextItemEditor + Form Form + Exporter l'actuelle configuration des textes Metin yapılandırmasını dışa aktar @@ -1331,27 +1571,36 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi + + + + + ... ... + Importer une configuration de texte Metin yapılandırması içe aktar + Ajouter un texte Metin ekle + Ajouter un groupe de textes I am not sure about this. It should be checked. Grup metin ekle + Supprimer la sélection Seçimi sil @@ -1493,7 +1742,7 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Conserver la rotation visuel - + Görsel dönmeyi koru @@ -1551,7 +1800,7 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Modifier le maintient de la rotation d'un texte d'élément - + Öğe metni dönme korumasını değiştir @@ -1604,72 +1853,87 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi DynamicTextFieldEditor + Form Form + Conserver la rotation visuel - + Görsel dönmeyi koru + Texte utilisateur Kullanıcı metni + Information de l'élément Öğe bilgisi + Encadrer le texte - + Metni çerçevele + + Texte composé Oluşturulan metin + Couleur Renk + Police Font + Source du texte Metin Kaynağı + Rotation Döndürme + X X + Largeur Genişlik + Y Y + Alignement Hizalama @@ -1703,7 +1967,7 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Modifier la conservation de l'angle - + Açı korumasını değiştir @@ -1813,13 +2077,13 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Enregistrer un template dialog title - + Şablonu kaydet Choisissez l'emplacement dans lequel vous souhaitez enregistrer votre template. dialog content - + Şablonunuzu kaydetmek istediğiniz konumu seçin. @@ -1839,7 +2103,7 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Nom du nouveau template - + Yeni şablon adı @@ -1881,7 +2145,7 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Écraser le template ? message box title - + Şablon üzerine yazılsın mı? @@ -1894,7 +2158,7 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Le template existe déjà. Voulez-vous l'écraser ? message box content - + Şablon zaten mevcut. Üzerine yazmak istiyor musunuz? @@ -1907,16 +2171,19 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ElementInfoPartWidget + Form Form + TextLabel Metin etiketi + Supprimer ce texte Bu metni sil @@ -1925,13 +2192,15 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ElementInfoWidget + Form Form + Exclure de la numérotation auto - + Otomatik numaralandırmadan hariç tut @@ -1943,78 +2212,94 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ElementPropertiesEditorWidget + Propriété de l'élément Öğe Özellikleri + + Type Tür + Type de base : I am not sure about this. It should be checked. Varsayılan tür : + Élément esclave Bağımlı Öğe + Nombre de contact représenté Temsil Edilen Switch Sayısı + Type de contact Kontak Tipi + État du contact Kontak Durumu + Élément maître Ana Öğe + Type concret Kullanım Şekli + Définir le nombre maximal d'esclaves - + Maksimum slave sayısını ayarla + Élément bornier - + Klemens öğesi + Fonction Fonksiyon + Informations Bilgiler + Nom İsim + Valeurs Değerler @@ -2072,7 +2357,7 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Other - + Diğer @@ -2114,22 +2399,22 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Générique - + Genel Fusible - + Sigorta Séctionnable - + Ayrılabilir Diode - + Diyot @@ -2186,7 +2471,8 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Sous-type : %1 - + Alt tip : %1 + @@ -2220,13 +2506,15 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Nombre maximum de contacts esclaves définis : %1 - + Tanımlı maksimum slave kontak sayısı : %1 + Nombre de contacts esclaves utilisés : %1 - + Kullanılan slave kontak sayısı : %1 + @@ -2251,143 +2539,171 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ElementQueryWidget + Form Form + Informations disponibles - + Mevcut bilgiler + Informations à exporter - + Export edilecek bilgiler + Monter la sélection - + Seçimi yukarı taşı + Ajouter la sélection - + Seçim ekle + Supprimer la sélection Seçimi sil + Descendre la sélection - + Seçimi aşağı taşı + Pas de filtre - + Filtre yok + N'est pas vide - + Boş değil + Est vide - + Boş + Contient - + İçeriyor + Ne contient pas - + İçermiyor + Est égal à - + Eşittir + N'est pas égale à - + Eşit değil + Filtre : - + Filtre : + Type d'éléments - + Öğe türü + Simples - + Basit + Tous - + Tümü + Vignettes - + Küçük resimler + Contacteurs et relais - + Kontaktörler ve röleler + Boutons et commutateurs - + Düğmeler ve anahtarlar + Borniers - + Klemensler + Organes de protection - + Koruma elemanları + Configuration - + Yapılandırma + Ouvrir la configuration sélectionné - + Seçili yapılandırmayı aç + Sauvegarder la configuration actuelle - + Mevcut yapılandırmayı kaydet + Requête SQL personnalisée - + Özel SQL sorgusu + Requête SQL : - + SQL sorgusu : @@ -2407,7 +2723,7 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Numéro du folio - + Sayfa numarası @@ -2685,17 +3001,17 @@ Bu klasördeki tüm öğeler ve klasörler silinecek. Rechercher... - + Ara... Collections - + Koleksiyonlar Modèles - + Şablonlar @@ -2706,60 +3022,60 @@ Bu klasördeki tüm öğeler ve klasörler silinecek. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip Bu projeyi daraltmak veya genişletmek için çift tıklayın - + Cartouches embarqués Dahili çizim - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Bu dahili kütüphaneyi genişletmek veya daraltmak için çift tıklayınız - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Uygulamak için bu antet şablonunu sayfaya sürükleyip bırakınız. - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip QElectroTech Antet koleksiyonunu genişletmek veya daraltmak için çift tıklayınız - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip QElectroTech ile birlikte gelen antet koleksiyonu budur. Bir sistem bileşeni olarak yüklendiği için normal olarak onu özelleştiremezsiniz. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Antet bloğu company koleksiyonunu daraltmak veya genişletmek için çift tıklayın - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Bu, antet bloklarının company koleksiyonudur -- kendi antet bloklarınızı oluşturmak, saklamak ve düzenlemek için kullanın. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Kişisel antet koleksiyonunuzu genişletmek veya daraltmak için çift tıklayınız - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Bu sizin kişisel antet koleksiyonunuz - kendi kütüphanenizi oluşturmak, saklamak ve düzenlemek için kullanın. @@ -2768,97 +3084,97 @@ Bu klasördeki tüm öğeler ve klasörler silinecek. ElementsPanelWidget - + Ouvrir le dossier correspondant İlgili klasörü aç - + Copier le chemin Yolu kopyala - + Basculer vers ce projet Bu projeye geç - + Fermer ce projet Bu projeyi kapat - + Propriétés du projet Proje Özellikleri - + Propriétés du folio Sayfa özellikleri - + Ajouter un folio Bir sayfa ekle - + Supprimer ce folio Bu sayfayı sil - + Remonter ce folio Bu sayfayı yukarı taşı - + Abaisser ce folio Bu sayfayı aşağı taşı - + Remonter ce folio x10 Bu sayfayı yukarı taşı x10 - + Remonter ce folio x100 Bu sayfayı yukarı taşı x100 - + Remonter ce folio au debut Bu sayfayı en başa geri koy - + Abaisser ce folio x10 Bu sayfayı aşağı taşı x10 - + Abaisser ce folio x100 Bu sayfayı aşağı taşı x100 - + Nouveau modèle Yeni şablon - + Éditer ce modèle Bu şablonu düzenle - + Supprimer ce modèle Bu şablonu sil - + Filtrer Filtre @@ -2867,38 +3183,45 @@ Bu klasördeki tüm öğeler ve klasörler silinecek. EllipseEditor + Form Form + Centre : - + Merkez : + Y Y + X X + Vertical : - + Dikey : + Horizontal : - + Yatay : + Diamètres : - + Çaplar : @@ -3093,53 +3416,62 @@ Bu klasördeki tüm öğeler ve klasörler silinecek. SVG: fond transparent - + SVG: şeffaf arka plan FolioAutonumberingW + Form Form + Numérotation automatique de Folio : Sayfanın otomatik numaralandırılması : + Sélection: Seçim: + C&réer de nouveaux folios Y&eni sayfa oluştur + Numérotation automatique des folios sélectionnés Otomatik sayfa numaralandırma + Nouveaux folios Yeni Sayfalar + Options de numérotation Numaralandırma Seçenekleri + À Belirli sayfa + De Arasında @@ -3177,20 +3509,59 @@ Bir numaralandırma değişkeni şunları içerir: bir tür, bir değer ve bir a -"Artış" alanı kullanılmaz. + + FontHelpers + + + Sans Serif + @item Font name + Generic sans serif font presented in font choosers. When selected, the system will choose a real font, mandated by distro settings. + Sans Serif + + + + Serif + @item Font name + Generic serif font presented in font choosers. When selected, the system will choose a real font, mandated by distro settings. + Serif + + + + Monospace + @item Font name + Generic monospace font presented in font choosers. When selected, the system will choose a real font, mandated by distro settings. + Monospace + + + + %1 + @item Font name + %1% {1?} + + + + %1 [%2] + @item Font name [foundry] + %1 [%2] + + FormulaAssistantDialog + Assistant de formule Formül Sihirbazı + TextLabel Metin Etiketi + Formule Formül @@ -3199,26 +3570,31 @@ Bir numaralandırma değişkeni şunları içerir: bir tür, bir değer ve bir a FormulaAutonumberingW + Form Form + Dénomination automatique : Otomatik Adlandırma: + Formule Formül + Insert Formula Here e.g.: %prefix%l%c Buraya Formül Ekle Örn.:%prefix%l%c + You can use the following variables to your formula: -%prefix: Default Element Prefix -%l: Element Line @@ -3244,84 +3620,100 @@ atayabilirsiz. Metin ve sayı girişleri ayrıca mevcut. FreeTerminalEditor + Form Form + Déplacer dans : - + Taşı : + Type : Type : + Fonction : Fonksiyon : + LED : - + LED : + Appliquer le déplacement - + Hareketi uygula + + Générique - + Genel + Fusible - + Sigorta + Sectionnable - + Ayrılabilir + Diode - + Diyot + Terre Toprak + Phase Faz + Neutre Nötr + Sans - + Olmadan + Avec - + İle Modifier des propriétés de borniers - + Klemens özelliklerini değiştir @@ -3334,12 +3726,12 @@ atayabilirsiz. Metin ve sayı girişleri ayrıca mevcut. Référence croisé - + Çapraz referans Type - + Tip @@ -3349,23 +3741,26 @@ atayabilirsiz. Metin ve sayı girişleri ayrıca mevcut. led - + led GeneralConfigurationPage + Form Form + Apparence Görünüm + Utiliser les couleurs du système Sistem renklerini kullan @@ -3386,6 +3781,12 @@ atayabilirsiz. Metin ve sayı girişleri ayrıca mevcut. + + + + + + Par defaut Varsayılan @@ -3396,58 +3797,74 @@ atayabilirsiz. Metin ve sayı girişleri ayrıca mevcut. + + + + + + Parcourir... Göz Atın... + (Recharger les collections d'éléments pour appliquer les changements) (Değişiklikleri uygulamak için öğe kütüphanelerini yeniden yüklemelisiniz) + Projets Projeler + Sauvegarde automatique des projets (appliqué au prochain lancement de QElectroTech) Projelerin otomatik olarak yedeklenmesi (QElectroTech'in bir sonraki açılışında uygulanır) + Ne pas conserver les labels des éléments lors des copier coller #Kopyala-Yapıştır yaparken öğelerin etiketlerinden tutmayın + Utiliser les gestes du pavé tactile Touchpad hareketlerini kullan + Utiliser les numéros de folio à la place de leur position dans le projet Projedeki pozisyonlarının yerine sayfa numaralandırmasını kullan + Numéroter les colonnes de cartouche à partir de 0 (1 sinon) Choix de l'increment de depart 1 ou 0 Başlık bloğunun 0'dan başlayarak sütunlarını numaralandır(Aksi takdirde "1") + Désactivé Devredışı + min minute dk + Autoriser le dézoom au delà du folio #Yakınlaştırmanın sayfanın ötesine geçmesine izin ver @@ -3459,41 +3876,49 @@ atayabilirsiz. Metin ve sayı girişleri ayrıca mevcut. + Collections Koleksiyonlar + Accès aux collections Koleksiyonlara Erişim + Répertoire de la collection commune Ortak koleksiyon dizini + Répertoire de la collection utilisateur Kullanıcı koleksiyon dizini + Répertoire des cartouches utilisateur Kullanıcı başlık blokları dizini + Gestion des éléments Öğe Yönetimi + Mettre en valeur dans le panel les éléments fraîchement intégrés #Yeni entegre edilen öğeleri panelde vurgulayın + Chaque élément embarque des informations sur ses auteurs, sa licence, ou tout autre renseignement que vous jugerez utile dans un champ libre. Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments que vous créerez : #Her öğe,boş bi alanda "Yazarları, Lisansı veya başka bir alanda yararlı bulduğunuz veriler" hakkında bilgiler içerir. @@ -3501,76 +3926,91 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments + Appliqué au prochain lancement de QElectroTech QElectroTech'in bir sonraki başlatma işleminde uygulanır + Vous pouvez définir ici l'apparence par defaut des differents textes de QElectroTech Burada çeşitli metinlerin QElectroTech içinde varsayılan görünümünü tanımlayabilirsiniz + Grille + Clavier Izgara + Klavye + Grille : 1 - 30 Izgara: 1 - 30 + DiagramEditor xGrid Diyagram Editörü xIzgarası + DiagramEditor yGrid Diyagram Editörü yIzgarası + Utiliser des fen&êtres (appliqué au prochain lancement de QElectroTech) &Windows'u kullan (QElectroTech'in bir sonraki başlatılmasında uygulanır) + Utiliser des onglets (appliqué au prochain lance&ment de QElectroTech) &Sekmeleri kullan (QElectroTech'in bir sonraki başlatılmasında uygulanır) + Méthode de mise à l'echelle des écrans à haute densité de pixels (hdpi) (appliqué au prochain lancement de QElectroTech) : - + Yüksek piksel yoğunluklu ekran (hdpi) ölçeklendirme yöntemi (QElectroTech bir sonraki başlatıldığında uygulanır): + Répertoire de la collection company - + Company koleksiyon dizini + Répertoire des cartouches company - + Company antet blokları dizini + Répertoire des Macros utilisateur - + Kullanıcı Makroları dizini + Langues - + Diller + Textes Metinler + Textes d'éléments Öğelerin Metinleri @@ -3578,132 +4018,158 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments + + + Police : Yazı Tipi : + + ° ° + Longueur : Uzunluk : + + Rotation : Dönüş: + Textes indépendants Bağımsız Metinler + Autres textes Diğer Metinler + La Grille doite etre active pour pouvoir voir les modifications. Değişiklikleri görebilmek için Izgara'nın etkin olması gerekir. + Déplacement au clavier : 1 - 30 Klavye hareketi: 1 - 30 + DiagramEditor (touche : gauche / droite) xGrid Diyagram Editörü (Tuş : Sol / Sağ) xIzgara + DiagramEditor (touche : haut / bas) yGrid Diyagram Editörü (Tuş : Yukarı / Aşağı) yIzgarası + Déplacement au clavier avec la touche ALT : 1 - 9 ALT tuşuyla Klavye hareketi : 1 - 9 + DiagramEditor (touche : gauche / droite ) xGrid Diyagram Editörü (Tuş : Sol / Sağ) xIzgara + DiagramEditor (touche : haut / bas) yGrid Diyagram Editörü (Tuş : Yukarı / Aşağı) yIzgarası + Affichage Grille - + Izgara Görünümü + + max: - + maks: + Taille des points de la grille de Diagram-Editor : 1 - 5 - + Diagram-Editor ızgara nokta boyutu : 1 - 5 + + min: - + min: + Taille des points de la grille de l'éditeur d'éléments : 1 - 5 - + Öğe editörü ızgara nokta boyutu : 1 - 5 + Editor - + Editor + Max. parts in Element Editor List - + Öğe Editör Listesindeki maks. parça sayısı Arrondi supérieur pour 0.5 et plus - + 0.5 ve üzeri için yukarı yuvarla Toujours arrondi supérieur - + Her zaman yukarı yuvarla Toujours arrondi inférieur - + Her zaman aşağı yuvarla Arrondi supérieur pour 0.75 et plus - + 0.75 ve üzeri için yukarı yuvarla Pas d'arrondi - + Yuvarlama yok @@ -3779,12 +4245,12 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments Japonais - + Japonca Coréen - + Korece @@ -3819,7 +4285,7 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments Norvege - + Norveç @@ -3839,47 +4305,47 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments Mongol - + Moğolca Ukrainien - + Ukraynaca Chinois - + Çince Suédois - + İsveççe Chemin de la collection company - + Company koleksiyon yolu Chemin des cartouches company - + Company antet blokları yolu Chemin des macros utilisateur - + Kullanıcı makroları yolu To high values might lead to crashes of the application. - + Çok yüksek değerler uygulamanın çökmesine neden olabilir. Fonctionnalité expérimental - + Deneysel özellik @@ -3889,7 +4355,12 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu 1 - la valeur sélectionnée 2 - du dpi de l'écran 3 - Modifier le projet sur un autre ordinateur et/ou écran n'ayant pas les mêmes paramètres des points 1 et 2. - + UYARI: +'Yuvarlama yok' dışındaki tüm değerler aşağıdakilere bağlı olarak proje render hatalarına neden olabilir: + +1 - Seçilen değer +2 - Ekran dpi'si +3 - Projeyi 1 ve 2. maddelerde aynı parametrelere sahip olmayan başka bir bilgisayar ve/veya ekranda değiştirme. @@ -3946,207 +4417,242 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu GraphicsTablePropertiesEditor + Form Form + Affichage Görünüm + Nom du tableau - + Tablo adı + Aucun Yok + Toutes - + Tümü + Lignes à afficher : - + Görüntülenecek satırlar : + Y : Y : + Tableau suivant - + Sonraki tablo + X : X : + Tableau précédent - + Önceki tablo + Tableau précédent : - + Önceki tablo : + Géometrie et lignes - + Geometri ve satırlar + Appliquer la géometrie à tous les tableaux liée à celui-ci - + Geometriyi buna bağlı tüm tablolara uygula + Ajuster le tableau au folio - + Tabloyu sayfaya uydur + TextLabel - + TextLabel + En tête - + Başlık + + Marge - + Kenar boşluğu + Aligement : - + Hizalama : + + Gauche Sol + + Centré Orta + + Droite Sağ + + Police - + Yazı tipi + Tableau - + Tablo + Alignement : Hizalama : + Contenu - + İçerik Déplacer un tableau - + Bir tabloyu taşı Modifier le nombre de ligne affiché par un tableau - + Tabloda görüntülenen satır sayısını değiştir Modifier les marges d'une en tête de tableau - + Tablo başlığı kenar boşluklarını değiştir Modifier les marges d'un tableau - + Tablo kenar boşluklarını değiştir Modifier l'alignement d'une en tête de tableau - + Tablo başlığı hizalamasını değiştir Modifier l'alignement des textes d'un tableau - + Tablo metinleri hizalamasını değiştir Modifier la police d'une en tête de tableau - + Tablo başlığı yazı tipini değiştir Changer la police d'un tableau - + Tablo yazı tipini değiştir <center>ATTENTION :</center> il manque %1 lignes afin d'afficher l'intégralité des informations - + <center>DİKKAT :</center> + Tüm bilgileri görüntülemek için %1 satır eksik Appliquer la géometrie d'un tableau aux tableau liée à celui-ci - + Bir tablonun geometrisini buna bağlı tablolara uygula ImagePropertiesWidget + Form Form + Verrouiller la position Pozisyonu Kilitle + Dimension de l'image Görüntünün Boyutu + % % @@ -4160,33 +4666,39 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu ImportElementDialog + Intégration d'un élément Bir Öğenin Entegre Edilmesi + L'élément a déjà été intégré dans le projet. Toutefois, la version que vous tentez de poser semble différente. Que souhaitez-vous faire ? Öğe zaten projeye entegre edilmiştir. Ancak, entegre etmeye çalıştığınız sürüm farklı görünüyor. Ne yapmak istiyorsunuz ? + Utiliser l'élément déjà integré #Mevcut Öğeyi Kullan + Intégrer l'élément déposé I am not sure about this. It should be checked. #Yeni çizimi entegre edin + Écraser l'élément déjà intégé I am not sure about this. It should be checked. #Mevcut öğenin üzerine yaz + Faire cohabiter les deux éléments I am not sure about this. It should be checked. #İki öğe birden varolsun @@ -4196,16 +4708,19 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu ImportElementTextPatternDialog + Dialog Diyalog + TextLabel Metin Etiketi + Écraser les textes existants Varolan metinleri sil @@ -4214,47 +4729,57 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu IndiTextPropertiesWidget + Form Form + X : X : + Éditeur avancé Gelişmiş Editör + Taille : Boyut : + Angle : Açı : + + px px + ° ° + Y : Y : + Le contenu, la taille et la police du texte ne peuvent être modifié car formaté en html. Veuillez utiliser l'éditeur avancé pour cela. Metin içeriği, boyutu ve yazı tipi html'deki biçimlendirmeler nedeniyle değiştirilemez. @@ -4262,11 +4787,13 @@ Lütfen bunun için gelişmiş editörü kullanın. + Texte Metin + @@ -4275,6 +4802,7 @@ Lütfen bunun için gelişmiş editörü kullanın. + Cliquez ici pour annuler le formatage html HTML biçimlendirmeyi iptal et @@ -4383,6 +4911,3562 @@ Lütfen bunun için gelişmiş editörü kullanın. İki şablonu birden varolsun + + KAboutData + + + <p>KDE is translated into many languages thanks to the work of the translation teams all over the world.</p><p>For more information on KDE internationalization visit <a href="https://l10n.kde.org">https://l10n.kde.org</a></p> + replace this with information about your translation team + <p>KDE, dünyanın her yerindeki çeviri ekiplerinin çalışmaları sayesinde birçok dile çevrilmektedir.</p><p>KDE uluslararasılaştırması hakkında daha fazla bilgi için <a href="https://l10n.kde.org">https://l10n.kde.org</a> adresini ziyaret edin</p> + + + + KAboutData CLI + + + Show author information. + Yazar bilgilerini göster. + + + + Show license information. + Lisans bilgilerini göster. + + + + The base file name of the desktop entry for this application. + Bu uygulamanın masaüstü girişinin temel dosya adı. + + + + file name + dosya adı + + + + This application was written by somebody who wants to remain anonymous. + Bu uygulama anonim kalmak isteyen biri tarafından yazılmıştır. + + + + %1 was written by: + %1 şu kişi tarafından yazıldı: + + + + Please use https://bugs.kde.org to report bugs. + Hataları bildirmek için lütfen https://bugs.kde.org adresini kullanın. + + + + Please report bugs to %1. + Lütfen hataları %1 adresine bildirin. + + + + KAboutLicense + + + No licensing terms for this program have been specified. +Please check the documentation or the source for any +licensing terms. + + Bu program için lisanslama koşulları belirtilmemiştir. +Lisanslama koşulları için lütfen belgelere veya kaynağa bakın. + + + + + This program is distributed under the terms of the %1. + Bu program %1 koşulları altında dağıtılmaktadır. + + + + GPL v2 + @item license (short name) + GPL v2 + + + + GNU General Public License Version 2 + @item license + GNU General Public License Version 2 + + + + LGPL v2 + @item license (short name) + LGPL v2 + + + + GNU Lesser General Public License Version 2 + @item license + GNU Lesser General Public License Version 2 + + + + BSD License + @item license (short name) + BSD Lisansı + + + + BSD License + @item license + BSD Lisansı + + + + Artistic License + @item license (short name) + Artistic Lisansı + + + + Artistic License + @item license + Artistic Lisansı + + + + QPL v1.0 + @item license (short name) + QPL v1.0 + + + + Q Public License + @item license + Q Public License + + + + GPL v3 + @item license (short name) + GPL v3 + + + + GNU General Public License Version 3 + @item license + GNU General Public License Version 3 + + + + LGPL v3 + @item license (short name) + LGPL v3 + + + + GNU Lesser General Public License Version 3 + @item license + GNU Lesser General Public License Version 3 + + + + LGPL v2.1 + @item license (short name) + LGPL v2.1 + + + + GNU Lesser General Public License Version 2.1 + @item license + GNU Lesser General Public License Version 2.1 + + + + Custom + @item license + Özel + + + + Not specified + @item license + Belirtilmemiş + + + + KActionSelector + + + &Available: + @label:listbox + &Mevcut: + + + + &Selected: + @label:listbox + &Seçili: + + + + KAssistantDialog + + + &Back + @action:button go back + &Geri + + + + Go back one step + @info:tooltip + Bir adım geri git + + + + Next + @action:button Opposite to Back + İleri + + + + Finish + @action:button + Bitir + + + + KCharSelect + + + Enter a search term or character... + @info:placeholder + Bir arama terimi veya karakter girin... + + + + Enter a search term or character here + @info:tooltip + Buraya bir arama terimi veya karakter girin + + + + &Find... + @action + &Bul... + + + + Previous in History + @action:button Goes to previous character + Geçmişte Önceki + + + + Go to previous character in history + @info:tooltip + Geçmişteki önceki karaktere git + + + + Next in History + @action:button Goes to next character + Geçmişte Sonraki + + + + Go to next character in history + info:tooltip + Geçmişteki sonraki karaktere git + + + + &Back + @action go back + &Geri + + + + &Forward + @action go forward + &İleri + + + + Select a category + @info:tooltip + Bir kategori seçin + + + + Select a block to be displayed + @info:tooltip + Görüntülenecek bir blok seçin + + + + Set font + @info:tooltip + Yazı tipini ayarla + + + + Set font size + @info:tooltip + Yazı tipi boyutunu ayarla + + + + Character: + Karakter: + + + + Name: + Ad: + + + + Annotations and Cross References + Açıklamalar ve Çapraz Referanslar + + + + Alias names: + Takma adlar: + + + + Notes: + Notlar: + + + + See also: + Ayrıca bakın: + + + + Equivalents: + Eşdeğerler: + + + + Approximate equivalents: + Yaklaşık eşdeğerler: + + + + Decomposition: + Ayrıştırma: + + + + CJK Ideograph Information + CJK İdeografi Bilgisi + + + + Definition in English: + İngilizce tanım: + + + + Mandarin Pronunciation: + Mandarin Telaffuzu: + + + + Cantonese Pronunciation: + Kantonca Telaffuzu: + + + + Japanese On Pronunciation: + Japonca On Telaffuzu: + + + + Japanese Kun Pronunciation: + Japonca Kun Telaffuzu: + + + + Tang Pronunciation: + Tang Telaffuzu: + + + + Korean Pronunciation: + Korece Telaffuz: + + + + General Character Properties + Genel Karakter Özellikleri + + + + Block: + Blok: + + + + Unicode category: + Unicode kategorisi: + + + + Various Useful Representations + Çeşitli Yararlı Temsiller + + + + UTF-8: + UTF-8: + + + + UTF-16: + UTF-16: + + + + C octal escaped UTF-8: + C oktal escape UTF-8: + + + + XML decimal entity: + XML ondalık varlığı: + + + + KCharSelectData + + + European Scripts + KCharSelect section name + Avrupa Yazıları + + + + African Scripts + KCharSelect section name + Afrika Yazıları + + + + Middle Eastern Scripts + KCharSelect section name + Orta Doğu Yazıları + + + + Central Asian Scripts + KCharSelect section name + Orta Asya Yazıları + + + + South Asian Scripts + KCharSelect section name + Güney Asya Yazıları + + + + Southeast Asian Scripts + KCharSelect section name + Güneydoğu Asya Yazıları + + + + Indonesia and Oceania Scripts + KCharSelect section name + Endonezya ve Okyanusya Yazıları + + + + East Asian Scripts + KCharSelect section name + Doğu Asya Yazıları + + + + American Scripts + KCharSelect section name + Amerikan Yazıları + + + + Symbols + KCharSelect section name + Semboller + + + + Mathematical Symbols + KCharSelect section name + Matematiksel Semboller + + + + Phonetic Symbols + KCharSelect section name + Fonetik Semboller + + + + + Combining Diacritics + KCharSelect section name + Birleştirici Aksanlar + + + + Other + KCharSelect section name + Diğer + + + + Basic Latin + KCharselect unicode block name + Temel Latin + + + + Latin-1 Supplement + KCharselect unicode block name + Latin-1 Eki + + + + Latin Extended-A + KCharselect unicode block name + Latin Genişletilmiş-A + + + + Latin Extended-B + KCharselect unicode block name + Latin Genişletilmiş-B + + + + IPA Extensions + KCharselect unicode block name + IPA Eklemeleri + + + + Spacing Modifier Letters + KCharselect unicode block name + Boşluk Değiştirici Harfler + + + + Combining Diacritical Marks + KCharselect unicode block name + Birleştirici Aksan İşaretleri + + + + Greek and Coptic + KCharselect unicode block name + Yunanca ve Kıptice + + + + Cyrillic + KCharselect unicode block name + Kiril + + + + Cyrillic Supplement + KCharselect unicode block name + Kiril Eki + + + + Armenian + KCharselect unicode block name + Ermenice + + + + Hebrew + KCharselect unicode block name + İbranice + + + + Arabic + KCharselect unicode block name + Arapça + + + + Syriac + KCharselect unicode block name + Süryanice + + + + Arabic Supplement + KCharselect unicode block name + Arapça Eki + + + + Thaana + KCharselect unicode block name + Thaana + + + + NKo + KCharselect unicode block name + NKo + + + + Samaritan + KCharselect unicode block name + Samiri + + + + Mandaic + KCharselect unicode block name + Mandai + + + + Syriac Supplement + KCharselect unicode block name + Süryanice Eki + + + + Arabic Extended-A + KCharselect unicode block name + Arapça Genişletilmiş-A + + + + Devanagari + KCharselect unicode block name + Devanagari + + + + Bengali + KCharselect unicode block name + Bengalce + + + + Gurmukhi + KCharselect unicode block name + Gurmukhi + + + + Gujarati + KCharselect unicode block name + Guceratça + + + + Oriya + KCharselect unicode block name + Oriya + + + + Tamil + KCharselect unicode block name + Tamilce + + + + Telugu + KCharselect unicode block name + Telugu + + + + Kannada + KCharselect unicode block name + Kannada + + + + Malayalam + KCharselect unicode block name + Malayalam + + + + Sinhala + KCharselect unicode block name + Sinhala + + + + Thai + KCharselect unicode block name + Tayca + + + + Lao + KCharselect unicode block name + Laoca + + + + Tibetan + KCharselect unicode block name + Tibetçe + + + + Myanmar + KCharselect unicode block name + Myanmar + + + + Georgian + KCharselect unicode block name + Gürcüce + + + + Hangul Jamo + KCharselect unicode block name + Hangul Jamo + + + + Ethiopic + KCharselect unicode block name + Etiyopik + + + + Ethiopic Supplement + KCharselect unicode block name + Etiyopik Eki + + + + Cherokee + KCharselect unicode block name + Çeroki + + + + Unified Canadian Aboriginal Syllabics + KCharselect unicode block name + Birleşik Kanada Yerli Hece Yazısı + + + + Ogham + KCharselect unicode block name + Ogham + + + + Runic + KCharselect unicode block name + Runik + + + + Tagalog + KCharselect unicode block name + Tagalog + + + + Hanunoo + KCharselect unicode block name + Hanunoo + + + + Buhid + KCharselect unicode block name + Buhid + + + + Tagbanwa + KCharselect unicode block name + Tagbanwa + + + + Khmer + KCharselect unicode block name + Kmerce + + + + Mongolian + KCharselect unicode block name + Moğolca + + + + Unified Canadian Aboriginal Syllabics Extended + KCharselect unicode block name + Birleşik Kanada Yerli Hece Yazısı Genişletilmiş + + + + Limbu + KCharselect unicode block name + Limbu + + + + Tai Le + KCharselect unicode block name + Tai Le + + + + New Tai Lue + KCharselect unicode block name + Yeni Tai Lue + + + + Khmer Symbols + KCharselect unicode block name + Kmer Sembolleri + + + + Buginese + KCharselect unicode block name + Buginese + + + + Tai Tham + KCharselect unicode block name + Tai Tham + + + + Combining Diacritical Marks Extended + KCharselect unicode block name + Birleştirici Aksan İşaretleri Genişletilmiş + + + + Balinese + KCharselect unicode block name + Balice + + + + Sundanese + KCharselect unicode block name + Sunda + + + + Batak + KCharselect unicode block name + Batak + + + + Lepcha + KCharselect unicode block name + Lepça + + + + Ol Chiki + KCharselect unicode block name + Ol Chiki + + + + Cyrillic Extended-C + KCharselect unicode block name + Kiril Genişletilmiş-C + + + + Georgian Extended + KCharselect unicode block name + Gürcüce Genişletilmiş + + + + Sundanese Supplement + KCharselect unicode block name + Sunda Eki + + + + Vedic Extensions + KCharselect unicode block name + Vedik Eklemeler + + + + Phonetic Extensions + KCharselect unicode block name + Fonetik Eklemeler + + + + Phonetic Extensions Supplement + KCharselect unicode block name + Fonetik Eklemeler Eki + + + + Combining Diacritical Marks Supplement + KCharselect unicode block name + Birleştirici Aksan İşaretleri Eki + + + + Latin Extended Additional + KCharselect unicode block name + Latin Ek Genişletilmiş + + + + Greek Extended + KCharselect unicode block name + Yunanca Genişletilmiş + + + + General Punctuation + KCharselect unicode block name + Genel Noktalama + + + + Superscripts and Subscripts + KCharselect unicode block name + Üst ve Alt İndisler + + + + Currency Symbols + KCharselect unicode block name + Para Birimi Sembolleri + + + + Combining Diacritical Marks for Symbols + KCharselect unicode block name + Semboller için Birleştirici Aksan İşaretleri + + + + Letterlike Symbols + KCharselect unicode block name + Harf Benzeri Semboller + + + + Number Forms + KCharselect unicode block name + Sayı Formları + + + + Arrows + KCharselect unicode block name + Oklar + + + + Mathematical Operators + KCharselect unicode block name + Matematiksel Operatörler + + + + Miscellaneous Technical + KCharselect unicode block name + Çeşitli Teknik + + + + Control Pictures + KCharselect unicode block name + Kontrol Resimleri + + + + Optical Character Recognition + KCharselect unicode block name + Optik Karakter Tanıma + + + + Enclosed Alphanumerics + KCharselect unicode block name + Çevrelenmiş Alfanümerikler + + + + Box Drawing + KCharselect unicode block name + Kutu Çizimi + + + + Block Elements + KCharselect unicode block name + Blok Öğeleri + + + + Geometric Shapes + KCharselect unicode block name + Geometrik Şekiller + + + + Miscellaneous Symbols + KCharselect unicode block name + Çeşitli Semboller + + + + Dingbats + KCharselect unicode block name + Dingbats + + + + Miscellaneous Mathematical Symbols-A + KCharselect unicode block name + Çeşitli Matematiksel Semboller-A + + + + Supplemental Arrows-A + KCharselect unicode block name + Ek Oklar-A + + + + Braille Patterns + KCharselect unicode block name + Braille Desenleri + + + + Supplemental Arrows-B + KCharselect unicode block name + Ek Oklar-B + + + + Miscellaneous Mathematical Symbols-B + KCharselect unicode block name + Çeşitli Matematiksel Semboller-B + + + + Supplemental Mathematical Operators + KCharselect unicode block name + Ek Matematiksel Operatörler + + + + Miscellaneous Symbols and Arrows + KCharselect unicode block name + Çeşitli Semboller ve Oklar + + + + Glagolitic + KCharselect unicode block name + Glagolitik + + + + Latin Extended-C + KCharselect unicode block name + Latin Genişletilmiş-C + + + + Coptic + KCharselect unicode block name + Kıptice + + + + Georgian Supplement + KCharselect unicode block name + Gürcüce Eki + + + + Tifinagh + KCharselect unicode block name + Tifinag + + + + Ethiopic Extended + KCharselect unicode block name + Etiyopik Genişletilmiş + + + + Cyrillic Extended-A + KCharselect unicode block name + Kiril Genişletilmiş-A + + + + Supplemental Punctuation + KCharselect unicode block name + Ek Noktalama + + + + CJK Radicals Supplement + KCharselect unicode block name + CJK Radikalleri Eki + + + + Kangxi Radicals + KCharselect unicode block name + Kangxi Radikalleri + + + + Ideographic Description Characters + KCharselect unicode block name + İdeografik Açıklama Karakterleri + + + + CJK Symbols and Punctuation + KCharselect unicode block name + CJK Sembolleri ve Noktalama + + + + Hiragana + KCharselect unicode block name + Hiragana + + + + Katakana + KCharselect unicode block name + Katakana + + + + Bopomofo + KCharselect unicode block name + Bopomofo + + + + Hangul Compatibility Jamo + KCharselect unicode block name + Hangul Uyumluluk Jamo + + + + Kanbun + KCharselect unicode block name + Kanbun + + + + Bopomofo Extended + KCharselect unicode block name + Bopomofo Genişletilmiş + + + + CJK Strokes + KCharselect unicode block name + CJK Vuruşları + + + + Katakana Phonetic Extensions + KCharselect unicode block name + Katakana Fonetik Eklemeleri + + + + Enclosed CJK Letters and Months + KCharselect unicode block name + Çevrelenmiş CJK Harfleri ve Aylar + + + + CJK Compatibility + KCharselect unicode block name + CJK Uyumluluğu + + + + CJK Unified Ideographs Extension A + KCharselect unicode block name + CJK Birleşik İdeografları Eklenti A + + + + Yijing Hexagram Symbols + KCharselect unicode block name + Yijing Heksagram Sembolleri + + + + CJK Unified Ideographs + KCharselect unicode block name + CJK Birleşik İdeografları + + + + Yi Syllables + KCharselect unicode block name + Yi Heceleri + + + + Yi Radicals + KCharselect unicode block name + Yi Radikalleri + + + + Lisu + KCharselect unicode block name + Lisu + + + + Vai + KCharselect unicode block name + Vai + + + + Cyrillic Extended-B + KCharselect unicode block name + Kiril Genişletilmiş-B + + + + Bamum + KCharselect unicode block name + Bamum + + + + Modifier Tone Letters + KCharselect unicode block name + Değiştirici Ton Harfleri + + + + Latin Extended-D + KCharselect unicode block name + Latin Genişletilmiş-D + + + + Syloti Nagri + KCharselect unicode block name + Syloti Nagri + + + + Common Indic Number Forms + KCharselect unicode block name + Yaygın Hint Sayı Formları + + + + Phags-pa + KCharselect unicode block name + Phags-pa + + + + Saurashtra + KCharselect unicode block name + Saurashtra + + + + Devanagari Extended + KCharselect unicode block name + Devanagari Genişletilmiş + + + + Kayah Li + KCharselect unicode block name + Kayah Li + + + + Rejang + KCharselect unicode block name + Rejang + + + + Hangul Jamo Extended-A + KCharselect unicode block name + Hangul Jamo Genişletilmiş-A + + + + Javanese + KCharselect unicode block name + Cava + + + + Myanmar Extended-B + KCharselect unicode block name + Myanmar Genişletilmiş-B + + + + Cham + KCharselect unicode block name + Cham + + + + Myanmar Extended-A + KCharselect unicode block name + Myanmar Genişletilmiş-A + + + + Tai Viet + KCharselect unicode block name + Tai Viet + + + + Meetei Mayek Extensions + KCharselect unicode block name + Meetei Mayek Eklemeleri + + + + Ethiopic Extended-A + KCharselect unicode block name + Etiyopik Genişletilmiş-A + + + + Latin Extended-E + KCharselect unicode block name + Latin Genişletilmiş-E + + + + Cherokee Supplement + KCharselect unicode block name + Çeroki Eki + + + + Meetei Mayek + KCharselect unicode block name + Meetei Mayek + + + + Hangul Syllables + KCharselect unicode block name + Hangul Heceleri + + + + Hangul Jamo Extended-B + KCharselect unicode block name + Hangul Jamo Genişletilmiş-B + + + + High Surrogates + KCharselect unicode block name + Yüksek Vekiller + + + + High Private Use Surrogates + KCharselect unicode block name + Yüksek Özel Kullanım Vekilleri + + + + Low Surrogates + KCharselect unicode block name + Düşük Vekiller + + + + Private Use Area + KCharselect unicode block name + Özel Kullanım Alanı + + + + CJK Compatibility Ideographs + KCharselect unicode block name + CJK Uyumluluk İdeografları + + + + Alphabetic Presentation Forms + KCharselect unicode block name + Alfabetik Sunum Formları + + + + Arabic Presentation Forms-A + KCharselect unicode block name + Arapça Sunum Formları-A + + + + Variation Selectors + KCharselect unicode block name + Varyasyon Seçicileri + + + + Vertical Forms + KCharselect unicode block name + Dikey Formlar + + + + Combining Half Marks + KCharselect unicode block name + Birleştirici Yarım İşaretler + + + + CJK Compatibility Forms + KCharselect unicode block name + CJK Uyumluluk Formları + + + + Small Form Variants + KCharselect unicode block name + Küçük Form Varyantları + + + + Arabic Presentation Forms-B + KCharselect unicode block name + Arapça Sunum Formları-B + + + + Halfwidth and Fullwidth Forms + KCharselect unicode block name + Yarım Genişlik ve Tam Genişlik Formları + + + + Specials + KCharselect unicode block name + Özel + + + + Mahjong Tiles + KCharselect unicode block name + Mahjong Taşları + + + + Domino Tiles + KCharselect unicode block name + Domino Taşları + + + + Playing Cards + KCharselect unicode block name + Oyun Kartları + + + + Enclosed Alphanumeric Supplement + KCharselect unicode block name + Çevrelenmiş Alfanümerik Ek + + + + Enclosed Ideographic Supplement + KCharselect unicode block name + Çevrelenmiş İdeografik Ek + + + + Miscellaneous Symbols and Pictographs + KCharselect unicode block name + Çeşitli Semboller ve Piktograflar + + + + Emoticons + KCharselect unicode block name + Emojiler + + + + Ornamental Dingbats + KCharselect unicode block name + Süslemeli Dingbatlar + + + + Transport and Map Symbols + KCharselect unicode block name + Ulaşım ve Harita Sembolleri + + + + Alchemical Symbols + KCharselect unicode block name + Simyasal Semboller + + + + Geometric Shapes Extended + KCharselect unicode block name + Geometrik Şekiller Genişletilmiş + + + + Supplemental Arrows-C + KCharselect unicode block name + Ek Oklar-C + + + + Supplemental Symbols and Pictographs + KCharselect unicode block name + Ek Semboller ve Piktograflar + + + + Chess Symbols + KCharselect unicode block name + Satranç Sembolleri + + + + Symbols and Pictographs Extended-A + KCharselect unicode block name + Semboller ve Piktograflar Genişletilmiş-A + + + + Symbols for Legacy Computing + KCharselect unicode block name + Eski Bilgisayar Sembolleri + + + + <noncharacter> + <karakter değil> + + + + <Non Private Use High Surrogate> + <Özel Kullanım Olmayan Yüksek Vekil> + + + + <Private Use High Surrogate> + <Özel Kullanım Yüksek Vekili> + + + + <Low Surrogate> + <Düşük Vekil> + + + + <Private Use> + <Özel Kullanım> + + + + <not assigned> + <atanmamış> + + + + Non-printable + Yazdırılamaz + + + + Other, Control + Diğer, Kontrol + + + + Other, Format + Diğer, Format + + + + Other, Not Assigned + Diğer, Atanmamış + + + + Other, Private Use + Diğer, Özel Kullanım + + + + Other, Surrogate + Diğer, Vekil + + + + Letter, Lowercase + Harf, Küçük + + + + Letter, Modifier + Harf, Değiştirici + + + + Letter, Other + Harf, Diğer + + + + Letter, Titlecase + Harf, Başlık Hali + + + + Letter, Uppercase + Harf, Büyük + + + + Mark, Spacing Combining + İşaret, Boşluk Birleştirme + + + + Mark, Enclosing + İşaret, Çevreleme + + + + Mark, Non-Spacing + İşaret, Boşluksuz + + + + Number, Decimal Digit + Sayı, Ondalık Basamak + + + + Number, Letter + Sayı, Harf + + + + Number, Other + Sayı, Diğer + + + + Punctuation, Connector + Noktalama, Bağlayıcı + + + + Punctuation, Dash + Noktalama, Tire + + + + Punctuation, Close + Noktalama, Kapanış + + + + Punctuation, Final Quote + Noktalama, Son Tırnak + + + + Punctuation, Initial Quote + Noktalama, İlk Tırnak + + + + Punctuation, Other + Noktalama, Diğer + + + + Punctuation, Open + Noktalama, Açılış + + + + Symbol, Currency + Sembol, Para Birimi + + + + Symbol, Modifier + Sembol, Değiştirici + + + + Symbol, Math + Sembol, Matematik + + + + Symbol, Other + Sembol, Diğer + + + + Separator, Line + Ayırıcı, Satır + + + + Separator, Paragraph + Ayırıcı, Paragraf + + + + Separator, Space + Ayırıcı, Boşluk + + + + Unknown + Bilinmeyen + + + + KCharSelectItemModel + + + Unicode code point: + Unicode kod noktası: + + + + In decimal + Character + Ondalık olarak + + + + KColorCombo + + + Custom... + @item:inlistbox Custom color + Özel... + + + + KColumnResizerTestForms + + + Form + Form + + + + + GroupBox + GroupBox + + + + Short: + Kısa: + + + + Some long label: + Uzun etiket: + + + + KColumnResizerTestGridAndForms + + + Form + Form + + + + + GroupBox + GroupBox + + + + Short: + Kısa: + + + + CheckBox + CheckBox + + + + PushButton + Buton + + + + Some long label: + Uzun etiket: + + + + KColumnResizerTestGrids + + + Form + Form + + + + + GroupBox + GroupBox + + + + Short: + Kısa: + + + + Some long label: + Uzun etiket: + + + + KDateComboBox + + + + Next Month + @option next month + Sonraki Ay + + + + Next Year + @option next year + Sonraki Yıl + + + + Next Week + @option next week + Sonraki Hafta + + + + Tomorrow + @option tomorrow + Yarın + + + + Today + @option today + Bugün + + + + Yesterday + @option yesterday + Dün + + + + Last Week + @option last week + Geçen Hafta + + + + Last Month + @option last month + Geçen Ay + + + + Last Year + @option last year + Geçen Yıl + + + + No Date + @option do not specify a date + Tarih Yok + + + + The date you entered is invalid + @info + Girdiğiniz tarih geçersiz + + + + Date cannot be earlier than %1 + @info + Tarih %1 tarihinden önce olamaz + + + + Date cannot be later than %1 + @info + Tarih %1 tarihinden sonra olamaz + + + + KDatePicker + + + Week %1 + Hafta %1 + + + + Next year + @info:tooltip + Sonraki yıl + + + + Previous year + @info:tooltip + Önceki yıl + + + + Next month + @info:tooltip + Sonraki ay + + + + Previous month + @info:tooltip + Önceki ay + + + + Select a week + @info:tooltip + Bir hafta seçin + + + + Select a month + @info:tooltip + Bir ay seçin + + + + Select a year + @info:tooltip + Bir yıl seçin + + + + Select the current day + @info:tooltip + Bugünü seçin + + + + Close + @action:button + Kapat + + + + KDateTimeEdit + + + UTC + @item:inlistbox UTC time zone + UTC + + + + Floating + @item:inlistbox No specific time zone + Kayan + + + + The entered date and time is before the minimum allowed date and time. + @info + Girilen tarih ve saat, izin verilen minimum tarih ve saatten önce. + + + + The entered date and time is after the maximum allowed date and time. + @info + Girilen tarih ve saat, izin verilen maksimum tarih ve saatten sonra. + + + + KEditListWidget + + + &Add + @action:button + &Ekle + + + + &Remove + @action:button + &Kaldır + + + + Move &Up + @action:button + &Yukarı Taşı + + + + Move &Down + @action:button + &Aşağı Taşı + + + + KFontChooser + + + Requested Font + @title:group + İstenen Yazı Tipi + + + + Font + @option:check + Yazı Tipi + + + + Font: + @label + Yazı Tipi: + + + + Font style + @option:check + Yazı tipi stili + + + + Font style: + @label + Yazı tipi stili: + + + + Normal + @item font + Normal + + + + + Italic + @item font + İtalik + + + + + Oblique + @item font + Eğik + + + + Bold + @item font + Kalın + + + + Bold Italic + @item font + Kalın İtalik + + + + Size + @option:check + Boyut + + + + Size: + @label:listbox Font size + Boyut: + + + + Relative + @item font size + Göreceli + + + + Font size<br /><i>fixed</i> or <i>relative</i><br />to environment + @info:tooltip + Yazı tipi boyutu<br />ortama göre <i>sabit</i> veya <i>göreceli</i> + + + + Here you can switch between fixed font size and font size to be calculated dynamically and adjusted to changing environment (e.g. widget dimensions, paper size). + @info:whatsthis + Burada sabit yazı tipi boyutu ile değişen ortama (örn. widget boyutları, kağıt boyutu) göre dinamik olarak hesaplanan yazı tipi boyutu arasında geçiş yapabilirsiniz. + + + + The Quick Brown Fox Jumps Over The Lazy Dog + Hızlı Kahverengi Tilki Tembel Köpeğin Üzerinden Atlar + + + + This sample text illustrates the current settings. You may edit it to test special characters. + @info:whatsthis + Bu örnek metin mevcut ayarları gösterir. Özel karakterleri test etmek için düzenleyebilirsiniz. + + + + Show only monospaced fonts + @option:check + Yalnızca tek aralıklı yazı tiplerini göster + + + + %1 + @item Font style + %1% {1?} + + + + KFontChooserDialog + + + Select Font + @title:window + Yazı Tipi Seç + + + + KFontRequester + + + Choose font... + @info:tooltip + Yazı tipi seç... + + + + Preview of the selected font + @info:tooltip + Seçilen yazı tipinin önizlemesi + + + + This is a preview of the selected font. You can change it by clicking the "Choose Font..." button. + @info:whatsthis + Bu, seçilen yazı tipinin önizlemesidir. "Yazı tipi seç..." düğmesine tıklayarak değiştirebilirsiniz. + + + + Preview of the "%1" font + @info:tooltip + "%1" yazı tipi önizlemesi + + + + This is a preview of the "%1" font. You can change it by clicking the "Choose Font..." button. + @info:whatsthis + Bu, "%1" yazı tipinin önizlemesidir. "Yazı tipi seç..." düğmesine tıklayarak değiştirebilirsiniz. + + + + KFormat + + + y + SI prefix for 10^⁻24 + y + + + + z + SI prefix for 10^⁻21 + z + + + + a + SI prefix for 10^⁻18 + a + + + + f + SI prefix for 10^⁻15 + f + + + + p + SI prefix for 10^⁻12 + p + + + + n + SI prefix for 10^⁻9 + n + + + + µ + SI prefix for 10^⁻6 + µ + + + + m + SI prefix for 10^⁻3 + m + + + + k + SI prefix for 10^3 + k + + + + Ki + IEC binary prefix for 2^10 + Ki + + + + M + SI prefix for 10^6 + M + + + + Mi + IEC binary prefix for 2^20 + Mi + + + + G + SI prefix for 10^9 + G + + + + Gi + IEC binary prefix for 2^30 + Gi + + + + T + SI prefix for 10^12 + T + + + + Ti + IEC binary prefix for 2^40 + Ti + + + + P + SI prefix for 10^15 + P + + + + Pi + IEC binary prefix for 2^50 + Pi + + + + E + SI prefix for 10^18 + E + + + + Ei + IEC binary prefix for 2^60 + Ei + + + + Z + SI prefix for 10^21 + Z + + + + Zi + IEC binary prefix for 2^70 + Zi + + + + Y + SI prefix for 10^24 + Y + + + + Yi + IEC binary prefix for 2^80 + Yi + + + + bit + Symbol of binary digit + bit + + + + B + Symbol of byte + B + + + + m + Symbol of meter + m + + + + Hz + Symbol of hertz + Hz + + + + %1 %2 + no Prefix + value without prefix, format "<val> <unit>" + %1 %2 + + + + %1 %2%3 + MetricBinaryDialect + value with prefix, format "<val> <prefix><unit>" + %1% {1 %2%3?} + + + + %1 B + MetricBinaryDialect + MetricBinaryDialect size in bytes + %1 B + + + + %1 kB + MetricBinaryDialect + MetricBinaryDialect size in 1000 bytes + %1 kB + + + + %1 MB + MetricBinaryDialect + MetricBinaryDialect size in 10^6 bytes + %1 MB + + + + %1 GB + MetricBinaryDialect + MetricBinaryDialect size in 10^9 bytes + %1 GB + + + + %1 TB + MetricBinaryDialect + MetricBinaryDialect size in 10^12 bytes + %1 TB + + + + %1 PB + MetricBinaryDialect + MetricBinaryDialect size in 10^15 bytes + %1 PB + + + + %1 EB + MetricBinaryDialect + MetricBinaryDialect size in 10^18 byte + %1 EB + + + + %1 ZB + MetricBinaryDialect + MetricBinaryDialect size in 10^21 bytes + %1 ZB + + + + %1 YB + MetricBinaryDialect + MetricBinaryDialect size in 10^24 bytes + %1 YB + + + + %1 B + JEDECBinaryDialect + JEDECBinaryDialect memory size in bytes + %1 B + + + + %1 KB + JEDECBinaryDialect + JEDECBinaryDialect memory size in 1024 bytes + %1 KB + + + + %1 MB + JEDECBinaryDialect + JEDECBinaryDialect memory size in 10^20 bytes + %1 MB + + + + %1 GB + JEDECBinaryDialect + JEDECBinaryDialect memory size in 10^30 bytes + %1 GB + + + + %1 TB + JEDECBinaryDialect + JEDECBinaryDialect memory size in 10^40 bytes + %1 TB + + + + %1 PB + JEDECBinaryDialect + JEDECBinaryDialect memory size in 10^50 bytes + %1 PB + + + + %1 EB + JEDECBinaryDialect + JEDECBinaryDialect memory size in 10^60 bytes + %1 EB + + + + %1 ZB + JEDECBinaryDialect + JEDECBinaryDialect memory size in 10^70 bytes + %1 ZB + + + + %1 YB + JEDECBinaryDialect + JEDECBinaryDialect memory size in 10^80 bytes + %1 YB + + + + %1 B + IECBinaryDialect + IECBinaryDialect size in bytes + %1 B + + + + %1 KiB + IECBinaryDialect + IECBinaryDialect size in 1024 bytes + %1 KiB + + + + %1 MiB + IECBinaryDialect + IECBinaryDialect size in 10^20 bytes + %1 MiB + + + + %1 GiB + IECBinaryDialect + IECBinaryDialect size in 10^30 bytes + %1 GiB + + + + %1 TiB + IECBinaryDialect + IECBinaryDialect size in 10^40 bytes + %1 TiB + + + + %1 PiB + IECBinaryDialect + IECBinaryDialect size in 10^50 bytes + %1 PiB + + + + %1 EiB + IECBinaryDialect + IECBinaryDialect size in 10^60 bytes + %1 EiB + + + + %1 ZiB + IECBinaryDialect + IECBinaryDialect size in 10^70 bytes + %1 ZiB + + + + %1 YiB + IECBinaryDialect + IECBinaryDialect size in 10^80 bytes + %1 YiB + + + + %1m%2.%3s + @item:intext Duration format minutes, seconds and milliseconds + %1d%2.%3s + + + + %1m%2s + @item:intext Duration format minutes and seconds + %1d%2s + + + + %1h%2m + @item:intext Duration format hours and minutes + %1s%2d + + + + %1h%2m%3.%4s + @item:intext Duration format hours, minutes, seconds, milliseconds + %1s%2d%3.%4s + + + + %1h%2m%3s + @item:intext Duration format hours, minutes, seconds + %1s%2d%3s + + + + %1:%2.%3 + @item:intext Duration format minutes, seconds and milliseconds + %1% {1:%2.%3?} + + + + + %1:%2 + @item:intext Duration format minutes and seconds +---------- +@item:intext Duration format hours and minutes + %1% {1:%2?} + + + + %1:%2:%3.%4 + @item:intext Duration format hours, minutes, seconds, milliseconds + %1% {1:%2:%3.%4?} + + + + %1:%2:%3 + @item:intext Duration format hours, minutes, seconds + %1% {1:%2:%3?} + + + + %1 days + @item:intext %1 is a real number, e.g. 1.23 days + %1 gün + + + + %1 hours + @item:intext %1 is a real number, e.g. 1.23 hours + %1 saat + + + + %1 minutes + @item:intext %1 is a real number, e.g. 1.23 minutes + %1 dakika + + + + %1 seconds + @item:intext %1 is a real number, e.g. 1.23 seconds + %1 saniye + + + + %n millisecond(s) + @item:intext %1 is a whole number + + + + %n milliseconds + %n millisecond + + + + %n day(s) + @item:intext %n is a whole number + + + + %n days + %n day + + + + %n hour(s) + @item:intext %n is a whole number + + + + %n hours + %n hour + + + + %n minute(s) + @item:intext %n is a whole number + + + + %n minutes + %n minute + + + + %n second(s) + @item:intext %n is a whole number + + + + %n seconds + %n second + + + + + + %1 and %2 + @item:intext days and hours. This uses the previous item:intext messages. If this does not fit the grammar of your language please contact the i18n team to solve the problem +---------- +@item:intext hours and minutes. This uses the previous item:intext messages. If this does not fit the grammar of your language please contact the i18n team to solve the problem +---------- +@item:intext minutes and seconds. This uses the previous item:intext messages. If this does not fit the grammar of your language please contact the i18n team to solve the problem + %1 ve %2 + + + + Invalid date + used when a relative date string can't be generated because the date is invalid + Geçersiz tarih + + + + In two days + İki gün içinde + + + + Tomorrow + Yarın + + + + Today + Bugün + + + + Yesterday + Dün + + + + Two days ago + İki gün önce + + + + Just now + Az önce + + + + %1 minutes ago + %1 dakika önce + + + + %1, %2 + relative datetime with %1 result of formatReleativeDate() and %2 the formatted time If this does not fit the grammar of your language please contact the i18n team to solve the problem + %1, %2 + + + + KLed + + + LED on + Accessible name of a Led whose state is on + LED açık + + + + LED off + Accessible name of a Led whose state is off + LED kapalı + + + + KMessageBox + + + . + @action:button post-filter + . + + + + Details + Ayrıntılar + + + + + Question + Soru + + + + + + + + Do not ask again + Tekrar sorma + + + + + + Warning + Uyarı + + + + + Error + Hata + + + + + + Sorry + Üzgünüm + + + + Information + Bilgi + + + + Do not show this message again + Bu mesajı tekrar gösterme + + + + KMessageDialog + + + Details + Ayrıntılar + + + + Question + Soru + + + + Warning + Uyarı + + + + Information + Bilgi + + + + Sorry + Üzgünüm + + + + Error + Hata + + + + KMessageWidget + + + &Close + @action:button + &Kapat + + + + Close message + @info:tooltip + Mesajı kapat + + + + KMimeTypeChooser + + + Search for file type or filename pattern... + @info:placeholder + Dosya türü veya dosya adı kalıbı ara... + + + + &Filter: + @label:textbox + &Filtre: + + + + MIME Type + @title:column + MIME Türü + + + + Comment + @title:column + Yorum + + + + Patterns + @title:column + Desenler + + + + &Edit... + @action:button + &Düzenle... + + + + Launch the MIME type editor + @info:tooltip + MIME türü editörünü başlat + + + + KNewPasswordDialog + + + Password must be at least %n character(s) long. + @info + + + + Password must be at least %n characters long + Password must be at least %n character long + + + + Password is empty. + @info + Parola boş. + + + + Passwords do not match. + @info + Parolalar eşleşmiyor. + + + + Passwords match. + @info + Parolalar eşleşiyor. + + + + Low Password Strength + @title:window + Düşük Parola Gücü + + + + The password you have entered has a low strength. To improve the strength of the password, try: + - using a longer password; + - using a mixture of upper- and lower-case letters; + - using numbers or symbols as well as letters. + +Would you like to use this password anyway? + Girdiğiniz parolanın gücü düşük. Parola gücünü artırmak için şunları deneyin: + - daha uzun bir parola kullanın; + - büyük ve küçük harf karışımı kullanın; + - harflerin yanı sıra rakam veya sembol kullanın. + +Yine de bu parolayı kullanmak ister misiniz? + + + + KNewPasswordWidget + + + + Password: + @label:textbox + Parola: + + + + + &Verify: + @label:textbox + &Doğrula: + + + + + Password strength &meter: + @label + Parola gücü &ölçer: + + + + The password strength meter gives an indication of the security of the password you have entered. To improve the strength of the password, try:<ul><li>using a longer password;</li><li>using a mixture of upper- and lower-case letters;</li><li>using numbers or symbols, such as #, as well as letters.</li></ul> + @info:whatsthis + Parola gücü ölçer, girdiğiniz parolanın güvenliği hakkında bir gösterge sağlar. Parola gücünü artırmak için şunları deneyin:<ul><li>daha uzun bir parola kullanın;</li><li>büyük ve küçük harf karışımı kullanın;</li><li>harflerin yanı sıra # gibi rakam veya sembol kullanın.</li></ul> + + + + KPasswordDialog + + + + Supply a username and password below. + Aşağıya bir kullanıcı adı ve parola girin. + + + + + No password, use anonymous (or &guest) login + @option:radio + Parola yok, anonim (veya &misafir) giriş kullan + + + + + Use this password: + @option:radio + Bu parolayı kullan: + + + + + Username: + @label:textbox + Kullanıcı adı: + + + + + Domain: + @label:textbox + Etki alanı: + + + + + Password: + @label:textbox + Parola: + + + + + Remember password + @option:check + Parolayı hatırla + + + + Password + @title:window + Parola + + + + Show Contextual Help + Bağlamsal Yardımı Göster + + + + Supply a password below. + Aşağıya bir parola girin. + + + + KPixmapRegionSelectorDialog + + + Select Region of Image + @title:window + Resim Bölgesi Seç + + + + Please click and drag on the image to select the region of interest: + @label:chooser + İlgilenilen bölgeyi seçmek için lütfen resim üzerinde tıklayıp sürükleyin: + + + + KPixmapRegionSelectorWidget + + + Image Operations + @title:menu + Resim İşlemleri + + + + &Rotate Clockwise + @action:inmenu + Saat Yönünde &Döndür + + + + Rotate &Counterclockwise + @action:inmenu + Saat Yönünün &Tersine Döndür + + + + KPluginLoader + + + The library %1 does not offer a KPluginFactory. + %1 kütüphanesi bir KPluginFactory sunmuyor. + + + + KRecentFilesMenu + + + No Entries + Giriş Yok + + + + Clear List + Listeyi Temizle + + + + Recent Files + Son Kullanılan Dosyalar + + + + KSqueezedTextLabel + + + &Copy Full Text + @action:inmenu + Tam Metni &Kopyala + + + + KStandardGuiItem + + + &OK + &Tamam + + + + &Cancel + &Vazgeç + + + + &Yes + &Evet + + + + Yes + Evet + + + + &No + &Hayır + + + + No + Hayır + + + + &Discard + &Vazgeç + + + + Discard changes + Değişiklikleri vazgeç + + + + Pressing this button will discard all recent changes made in this dialog. + Bu düğmeye basıldığında bu diyalogda yapılan tüm son değişiklikler iptal edilir. + + + + &Save + &Kaydet + + + + Save data + Veriyi kaydet + + + + &Do Not Save + &Kaydetme + + + + Do not save data + Veriyi kaydetme + + + + Save &As... + &Farklı Kaydet... + + + + Save file with another name + Dosyayı başka bir adla kaydet + + + + &Apply + &Uygula + + + + Apply changes + Değişiklikleri uygula + + + + When you click <b>Apply</b>, the settings will be handed over to the program, but the dialog will not be closed. +Use this to try different settings. + <b>Uygula</b> düğmesine tıkladığınızda ayarlar programa aktarılır, ancak diyalog kapatılmaz. +Farklı ayarları denemek için bunu kullanın. + + + + Administrator &Mode... + Yönetici &Modu... + + + + Enter Administrator Mode + Yönetici Moduna Gir + + + + When you click <b>Administrator Mode</b> you will be prompted for the administrator (root) password in order to make changes which require root privileges. + <b>Yönetici Modu</b> düğmesine tıkladığınızda, root ayrıcalıkları gerektiren değişiklikler yapmak için yönetici (root) parolası istenir. + + + + C&lear + &Temizle + + + + Clear input + Girişi temizle + + + + Clear the input in the edit field + Düzenleme alanındaki girişi temizle + + + + &Help + show help + &Yardım + + + + Show help + Yardımı göster + + + + &Close + &Kapat + + + + Close the current window or document + Geçerli pencereyi veya belgeyi kapat + + + + &Close Window + Pencereyi &Kapat + + + + Close the current window. + Geçerli pencereyi kapat. + + + + &Close Document + Belgeyi &Kapat + + + + Close the current document. + Geçerli belgeyi kapat. + + + + &Defaults + &Varsayılanlar + + + + Reset all items to their default values + Tüm öğeleri varsayılan değerlerine sıfırla + + + + &Back + go back + &Geri + + + + Go back one step + Bir adım geri git + + + + &Forward + go forward + &İleri + + + + Go forward one step + Bir adım ileri git + + + + &Print... + &Yazdır... + + + + Opens the print dialog to print the current document + Geçerli belgeyi yazdırmak için yazdırma diyaloğunu açar + + + + C&ontinue + &Devam + + + + Continue operation + İşlemi sürdür + + + + &Delete + &Sil + + + + Delete item(s) + Öğe(leri) sil + + + + &Open... + &Aç... + + + + Open file + Dosyayı aç + + + + &Quit + &Çıkış + + + + Quit application + Uygulamadan çık + + + + &Reset + &Sıfırla + + + + Reset configuration + Yapılandırmayı sıfırla + + + + &Insert + Verb + &Ekle + + + + Confi&gure... + &Yapılandır... + + + + &Find + &Bul + + + + Stop + Durdur + + + + Add + Ekle + + + + Remove + Kaldır + + + + Test + Test + + + + Properties + Özellikler + + + + &Overwrite + Üzerine &Yaz + + + + KTimeComboBox + + + The time you entered is invalid + @info + Girdiğiniz saat geçersiz + + + + Time cannot be earlier than %1 + @info + Saat %1 saatinden önce olamaz + + + + Time cannot be later than %1 + @info + Saat %1 saatinden sonra olamaz + + + + KToggleFullScreenAction + + + Exit F&ull Screen Mode + @action:inmenu + &Tam Ekran Modundan Çık + + + + Exit Full Screen + @action:intoolbar + Tam Ekrandan Çık + + + + Exit full screen mode + @info:tooltip + Tam ekran modundan çık + + + + F&ull Screen Mode + @action:inmenu + &Tam Ekran Modu + + + + Full Screen + @action:intoolbar + Tam Ekran + + + + Display the window in full screen + @info:tooltip + Pencereyi tam ekranda göster + + LineEditor @@ -4428,42 +8512,51 @@ Lütfen bunun için gelişmiş editörü kullanın. + Form Form + X1 : - + X1 : + Y1 : - + Y1 : + X2 : - + X2 : + Fin 1 : - + Uç 1 : + Y2 : - + Y2 : + Fin 2 : - + Uç 2 : + + Longueur : Uzunluk : @@ -4472,38 +8565,45 @@ Lütfen bunun için gelişmiş editörü kullanın. LinkSingleElementWidget + Form Form + Voir cet élément Bu öğeyi gör + Délier Bağı Çöz + Voir l'élément lié Bağlı öğeye bakın + Cet élément est déjà lié Bu öğe zaten bağlı + Recherche #Arama + Remarque : les éléments maîtres ayant atteint leur nombre maximal d'esclaves sont masqués. - + Not : maksimum slave sayısına ulaşmış master öğeler gizlenir. @@ -4603,61 +8703,71 @@ Lütfen bunun için gelişmiş editörü kullanın. Section du conducteur - + İletken kesiti MarginsEditDialog + Editer les marges - + Kenar boşluklarını düzenle + Haut : - + Üst : + Gauche : - + Sol : + Droit : - + Sağ : + Bas : - + Alt : MasterPropertiesWidget + Form Form + Éléments liés Bağlantılı öğeler + Éléments disponibles Mevcut öğeler + <html><head/><body><p>Délier l'élément sélectionné</p></body></html> <html><head/><body><p>Seçili öğenin bağlantısını kopar</p></body></html> + <html><head/><body><p>Lier l'élément sélectionné</p></body></html> <html><head/><body><p>Seçili öğenin bağlantısını yap</p></body></html> @@ -4717,12 +8827,12 @@ Lütfen bunun için gelişmiş editörü kullanın. Nombre maximal d'esclaves atteint. - + Maksimum slave sayısına ulaşıldı. Cet élément maître ne peut plus accepter aucun nouveau contact esclave, la limite fixée a été atteinte (Limite: %1). - + Bu master öğe artık yeni slave kontak kabul edemez, belirlenen limite ulaşıldı (Limit: %1). @@ -4734,47 +8844,57 @@ Lütfen bunun için gelişmiş editörü kullanın. MultiPasteDialog + Collage multiple Çoklu Yapıştır + Décalage Konumlandır + + px px + x: x: + y: y: + Nombre de copie Kopya Sayısı + Auto-connexion Otomatik Bağlantı + Auto-numérotation des éléments Öğelerin otomatik numaralandırılması + Auto-numérotation des conducteurs İletkenlerin Otomatik Numaralandırılması @@ -4788,6 +8908,7 @@ Lütfen bunun için gelişmiş editörü kullanın. NameListDialog + Dialog Diyalog @@ -4801,26 +8922,31 @@ Lütfen bunun için gelişmiş editörü kullanın. NameListWidget + Form Form + Langue Dil + Texte Metin + Ajouter une ligne Bir çizgi ekle + Copier dans le presse papier Pano'ya kopyala @@ -4955,6 +9081,7 @@ Lütfen bunun için gelişmiş editörü kullanın. NumPartEditorW + Form Form @@ -5159,36 +9286,43 @@ Lütfen bunun için gelişmiş editörü kullanın. PolygonEditor + Form Form + X X + Y Y + Polygone fermé Kapalı çokgen + Ajouter un point Bir nokta ekle + Supprimer ce point Bu noktayı sil + Points du polygone : Poligonun noktaları : @@ -5225,11 +9359,13 @@ Lütfen bunun için gelişmiş editörü kullanın. PotentialSelectorDialog + Sélectionner le potentiel éléctrique Elektrik potansiyelini seç + Vous tentez de lier deux potentiels différents ensemble. Veuillez choisir les propriétées à appliquer au nouveau potentiel. İki farklı potansiyeli birbirine bağlamaya çalışıyorsunuz. @@ -5283,7 +9419,8 @@ Voltaj/protokol : %1 Couleur du conducteur : %1 - + +İletken rengi : %1 @@ -5291,17 +9428,18 @@ Couleur du conducteur : %1 Section du conducteur : %1 - + +İletken kesiti : %1 Ajouter au câble: %1 - + Kabloya ekle: %1 Ajouter au bus: %1 - + Bus'a ekle: %1 @@ -5406,16 +9544,19 @@ Aşağıdaki değişkenler uyumsuz : ProjectDBModelPropertiesWidget + Form Form + Requête - + Sorgu + Recharger Yeniden yükle @@ -5451,163 +9592,195 @@ Aşağıdaki değişkenler uyumsuz : ProjectPrintWindow + MainWindow - + MainWindow + Folios à imprimer : Yazdırılacak sayfakar : + Tout cocher Tümünü işaretle + Tout décocher Tümünü Kaldır + Toutes les dates - + Tüm tarihler + À partir de la date du : - + Şu tarihten itibaren : + À la date du : - + Şu tarihe kadar : + Option de rendu - + Render seçeneği + Dessiner le cadre Çerçeveyi çiz + Dessiner le cartouche Anteti çiz + Conserver les couleurs des conducteurs İletkenlerin renklerini koru + Dessiner les bornes Terminalleri çiz + Option d'impression - + Yazdırma seçeneği + Adapter le folio à la page Sayfaya sığdırın + Utiliser toute la feuille Tüm sayfayı kullan + Si cette option est cochée, le folio sera agrandi ou rétréci de façon à remplir toute la surface imprimable d'une et une seule page." - + Bu seçenek işaretlenirse, sayfa yalnızca bir sayfanın yazdırılabilir alanını dolduracak şekilde büyütülür veya küçültülür." + Si cette option est cochée, les marges de la feuille seront ignorées et toute sa surface sera utilisée pour l'impression. Cela peut ne pas être supporté par votre imprimante. - + Bu seçenek işaretlenirse, sayfanın kenar boşlukları yok sayılır ve tüm yüzeyi yazdırma için kullanılır. Bu, yazıcınız tarafından desteklenmeyebilir. + toolBar - + toolBar + Ajuster la largeur Genişliği Ayarla + Ajuster la page Sayfayı Ayarla + Zoom arrière Uzaklaştır + Zoom avant Yakınlaştır + Paysage Sayfa boyunca + Portrait Portre + Première page İlk sayfa + Page précédente Önceki sayfa + Page suivante Sonraki sayfa + Dernière page Son sayfa + Afficher une seule page - + Tek sayfa göster + Afficher deux pages İki sayfa göster + Afficher un aperçu de toutes les pages Tüm sayfaları önizle + mise en page - + sayfa düzeni @@ -5629,27 +9802,27 @@ Aşağıdaki değişkenler uyumsuz : Exporter en pdf - + PDF olarak export et Mise en page (non disponible sous Windows pour l'export PDF) - + Sayfa düzeni (Windows'ta PDF export için kullanılamaz) Folio sans titre - + Başlıksız sayfa Exporter sous : - + Şu şekilde export et : Fichier (*.pdf) - + Dosya (*.pdf) @@ -5670,7 +9843,7 @@ Değişiklikleri kaydetmek ister misiniz ? sansnom - + isimsiz @@ -5685,88 +9858,93 @@ Değişiklikleri kaydetmek ister misiniz ? hiçbir proje yayınlanmadı - + Supprimer le folio ? message box title Sayfa silinsin mi ? - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - Bu sayfayı projeden silmek istediğinizden emin misiniz? Bu değişiklik geri çevrilemez. + Bu sayfayı projeden silmek istediğinizden emin misiniz? Bu değişiklik geri çevrilemez. - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + Bu sayfayı projeden silmek istediğinizden emin misiniz? Bu değişiklik geri alınamaz. + + + Projet en lecture seule message box title Salt okunur proje - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Bu proje salt okunur. Temizlemek mümkün değildir. - + Supprimer les modèles de cartouche inutilisés dans le projet Projede kullanılmayan şablonları sil - + Supprimer les éléments inutilisés dans le projet Projede kullanılmayan öğeleri sil - + Supprimer les catégories vides Boş kategorileri sil - + Nettoyer le projet window title Projeyi temizle - + Ajouter un folio Sayfa ekle - + Revenir au debut du projet - + Projenin başına dön - + Aller à la fin du projet - + Projenin sonuna git - + go one page left - + bir sayfa sola git - + go one page right - + bir sayfa sağa git - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Bu proje herhangi bir sayfa içermiyor - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Projenin açılışı devam ediyor ....</b><br/>Sayfa sekmeleri oluşturuluyor :</p> - + Projet window title for a project-less ProjectView Proje @@ -5776,6 +9954,7 @@ Değişiklikleri kaydetmek ister misiniz ? PropertiesEditorDockWidget + Propriétés de la sélection Seçim ayarları @@ -5816,7 +9995,7 @@ Değişiklikleri kaydetmek ister misiniz ? Cartouches company title of the company's title block templates collection - + Company antet blokları @@ -6043,7 +10222,8 @@ Mevcut seçenekler: --data-dir=DIR Definir le dossier de data - + --data-dir=DIR Veri klasörünü tanımla + @@ -6074,867 +10254,884 @@ Mevcut seçenekler: Projeler - + Collections Kolleksiyonlar - + Aucune modification Değişiklik yok - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Şema üzerinde çalışmak için bir işleme tıklayın - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip I am not sure about this. It should be checked. Bu panel, geçerli sayfada gerçekleştirilen farklı eylemleri listeler. Bir eylemi tıklamak, şemanın uygulamadan sonraki haline dönmesini sağlar. - + Annulations dock title İptal edilenler - + E&xporter D&ışa aktar - + Exporte le folio courant dans un autre format status bar tip Mevcut sayfayı başka bir formatta dışa aktarır - + Imprimer Yazdır - + Imprime un ou plusieurs folios du projet courant status bar tip Mevcut projeden bir veya daha fazla sayfa yazdır - + &Quitter &Çıkış - + Ferme l'application QElectroTech status bar tip QElectroTech uygulamasını kapatır - + Annuler İptal - + Annule l'action précédente status bar tip Önceki eylemi iptal eder - + Refaire Yeniden yapma - + Restaure l'action annulée status bar tip İptal edilen eylemi geri yükle - + Co&uper Ke&s - + Cop&ier Kop&yala - + C&oller Y&apıştır - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Seçili öğeleri panoya aktar - + Copie les éléments sélectionnés dans le presse-papier status bar tip Seçilen öğeleri panoya kopyala - + Place les éléments du presse-papier sur le folio status bar tip Panodaki öğeleri sayfaya yerleştirin - + Réinitialiser les conducteurs İletkenleri sıfırla - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Modifikasyonları dikkate almadan iletken yollarını yeniden hesaplar - + Création automatique de conducteur(s) Tool tip of auto conductor Otomatik iletken (ler) oluşturma - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Mümkün olduğunda otomatik oluşturulan iletken(ler) kullanın - + Couleur de fond blanc/gris Tool tip of white/grey background button Beyaz / gri arka plan rengi - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Sayfa'nın arka plan rengini beyaz veya gri olarak görüntüler - + Afficher la grille Izgarayı göster - + Affiche ou masque la grille des folios Sayfaların ızgarasını göster veya gizle - + Propriétés du folio Sayfa Özelikkleri - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Sayfa özelliklerini düzenleyin (boyutlar, antet bilgileri, iletken özellikleri ...) - + Propriétés du projet Proje Özellikleri - + Ajouter un folio Bir Sayfa Ekle - + + Supprimer le folio Sayfayı sil - + Nettoyer le projet Projeyi temizle - + Ajouter un sommaire Bir özet ekle - + Ajouter une nomenclature - + Bir nomenklatür ekle - + Lancer le plugin de création de borniers Terminal bloğu yaratma eklentisini başlatın - + Grouper les textes sélectionnés Seçilen metinleri gruplandır - + Chercher/remplacer Bul / Değiştir - + en utilisant des onglets Sekmeleri kullan - + Exporter en pdf - + PDF olarak export et - + Exporte un ou plusieurs folios du projet courant status bar tip - + Geçerli projeden bir veya daha fazla sayfa export et - + Exporter au format CSV - + CSV formatında export et - + Gestionnaire de borniers (DEV) - + Klemens yöneticisi (DEV) - + Exporter la liste des noms de conducteurs - + İletken adları listesini export et - + Exporter le plan de câblage - + Kablolama planını export et - + Numérotation automatique des bornes - + Klemenslerin otomatik numaralandırılması - + Exporter la base de donnée interne du projet - + Projenin dahili veritabanını export et - + Présente les différents projets ouverts des onglets status bar tip Farklı projeleri açık sekmelerde sunar - + en utilisant des fenêtres Pencereleri kullan - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Farklı projeleri alt alta açılan pencerelerde sunar - + &Mosaïque &Yan yana - + Dispose les fenêtres en mosaïque status bar tip Döşenmiş pencereleri düzenle - + &Cascade &Basamak - + Dispose les fenêtres en cascade status bar tip Basamaklı pencereleri düzenleme - + Mode Selection Seçim Modu - + Permet de sélectionner les éléments status bar tip Öğeleri seçmeye izin ver - + Mode Visualisation Görüntüleme modu - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Sayfayı değiştirmeden görüntüleyebilirsiniz - + Projet suivant Sonraki proje - + Active le projet suivant status bar tip Bir sonraki projeyi aktifleştir - + Projet précédent Önceki proje - + Active le projet précédent status bar tip Önceki projeyi aktifleştir - + &Nouveau &Yeni - + &Ouvrir &Aç - + &Enregistrer &Kaydet - + Enregistrer sous Farklı kaydet - + &Fermer &Kapat - + Crée un nouveau projet status bar tip Yeni bir proje oluştur - + Ouvre un projet existant status bar tip Mevcut bir projeyi aç - + Ferme le projet courant status bar tip Mevcut projeyi kapat - + Enregistre le projet courant et tous ses folios status bar tip Mevcut projeyi ve tüm sayfaları kaydeder - + Enregistre le projet courant avec un autre nom de fichier status bar tip Mevcut projeyi başka bir dosya adıyla kaydet - + Ajouter une colonne Bir Sütun ekle - + Enlever une colonne Bir sütunu kaldır - + Ajouter une ligne Add row Bir çizgi ekle - + Enlever une ligne Remove row Bir çizgi kaldır - + Ajoute une colonne au folio status bar tip Sayfaya bir sutun ekle - + Enlève une colonne au folio status bar tip Sayfadan bir sutun kaldır - + Agrandit le folio en hauteur status bar tip Sayfa yüksekliğini büyütür - + Rétrécit le folio en hauteur status bar tip Sayfayı Küçült - + Supprimer Sil - + Pivoter Döndür - + Orienter les textes Metni düzelt - + Retrouver dans le panel Panelde bul - + Éditer l'item sélectionné Seçilen öğeyi düzenle - + Enlève les éléments sélectionnés du folio status bar tip Seçilen öğeleri sayfadan kaldırır - + Pivote les éléments et textes sélectionnés status bar tip Seçili öğeleri ve metinleri döndür - + Pivote les textes sélectionnés à un angle précis status bar tip Seçilen metinleri hassas bir açıyla döndürün - + Retrouve l'élément sélectionné dans le panel status bar tip Panelde seçilen öğeyi bul - + Tout sélectionner Tümünü seç - + Désélectionner tout Hiçbirini seçme - + Inverser la sélection Seçimi ters çevir - + Sélectionne tous les éléments du folio status bar tip Sayfadaki tüm unsurları seç - + Désélectionne tous les éléments du folio status bar tip Sayfadaki tüm öğelerin seçimini kaldırın - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Seçili öğelerin seçimini kaldırın ve seçilmemiş öğeleri seçin - + Zoom avant Yakınlaştır - + Zoom arrière Uzaklaştır - + Zoom sur le contenu İçeriğe odaklan - + Zoom adapté Uyarlanmış yakınlaştırma - + Pas de zoom Yakınlaştırma yok - + Agrandit le folio status bar tip Sayfayı görüntüle - + Rétrécit le folio status bar tip Sayfayı Küçült - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Çerçevenin tüm içeriğini çerçeveden bağımsız olarak gösterecek şekilde yakınlaştırır - + Adapte le zoom exactement sur le cadre du folio status bar tip Yakınlaştırmayı tam olarak sayfa çerçevesine uyarlar - + Restaure le zoom par défaut status bar tip Varsayılan yakınlaştırmayı geri yükle - + Ajouter un champ de texte Bir metin alanı ekle - + Ajouter une image Bir resim ekle - + Ajouter une ligne Draw line Bir çizgi ekle - + Ajouter un rectangle Bir dikdörtgen ekle - + Ajouter une ellipse Bir elips ekle - + Ajouter une polyligne Bir çokgen ekle - + Ajouter un plan de bornes - + Klemens planı ekle - + Ajoute un champ de texte sur le folio actuel Geçerli sayfaya metin alanı ekle - + Ajoute une image sur le folio actuel Geçerli sayfaya resim ekle - + Ajoute une ligne sur le folio actuel Geçerli sayfaya çizgi ekle - + Ajoute un rectangle sur le folio actuel Geçerli sayfaya dikdörtgen ekler - + Ajoute une ellipse sur le folio actuel Geçerli sayfaya elips ekle - + Ajoute une polyligne sur le folio actuel Geçerli sayfaya devamlı çizgi ekle - + Ajoute un plan de bornier sur le folio actuel - + Geçerli sayfaya bir klemens planı ekler - + Outils Araçlar - + Affichage Görünüm - + Schéma Şema - + Ajouter Ekle - + Profondeur toolbar title Derinlik - + &Fichier &Dosya - + &Édition &Düzenle - + &Projet &Proje - + Afficha&ge Gö&rünüm - + Fe&nêtres Pe&ncere - + &Récemment ouverts &Son Açılan - + Affiche ou non la barre d'outils principale Ana araç çubuğunu göster veya göster - + Affiche ou non la barre d'outils Affichage Görünüm araç çubuğunu göster veya göster - + Affiche ou non la barre d'outils Schéma Şema araç çubuğunu göster veya göster - + Affiche ou non le panel d'appareils Cihazların paneli görüntülensin veya görüntülenmesin - + Affiche ou non la liste des modifications Değişiklikler listesi görüntüleniyor veya görüntülenmiyor - + Afficher les projets Projeleri görüntüle - - + + Projet %1 enregistré dans le repertoire: %2. %1 projesi şu dizine kaydedildi : %2. - + Ouvrir un fichier Bir dosya aç - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech Projeleri (*.qet);;XML Dosyaları (*.xml);;Tüm Dosyalar (*) - - + + Impossible d'ouvrir le fichier message box title Dosya açılamadı - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Açmaya çalıştığınız %1 dosyası mevcut değil gibi görünüyor. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Açmaya çalıştığınız dosya okunabilir değil gibi görünüyor. Dosya açılamıyor. Lütfen dosyanın izinlerini kontrol edin. - + Ouverture du projet en lecture seule message box title Projeyi salt okunur açma - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Açmaya çalıştığınız proje yazılabilir değil gibi görünüyor. Salt okunur modda açılacaktır. - - + + Échec de l'ouverture du projet message box title Proje açılamadı - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content %1 dosyasının bir QElectroTech proje dosyası olmadığı anlaşılıyor. Bu açılamaz. - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Şekli bitirmek için çift tıkla, sağ tık ile son noktayı iptal et - + Suppression de borne impossible - + Klemens silinemiyor - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Seçim, köprülenmiş ve/veya çok seviyeli bir klemense ait olan bir veya daha fazla klemens içerdiğinden silme yapılamıyor. +Silmek için ilgili klemenslerin köprülerini kaldırın ve/veya seviyelerini silin - + Groupe Grup - + Éditer l'élement edit element Öğeyi düzenle - + Éditer le champ de texte edit text field Metin alanını düzenle - + Éditer l'image edit image Resmi Düzenle - + Éditer le conducteur edit conductor İletkeni düzenle - + Éditer l'objet sélectionné edit selected item Seçilen nesneyi düzenle - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Dosyayı açarken bir sorun oluştu %1. - + Active le projet « %1 » « %1 » projesini etkinleştir - + + Êtes-vous sûr de vouloir supprimer ce folio ? + Bu sayfayı silmek istediğinizden emin misiniz? + + + + Supprimer les folios + Sayfaları sil + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + Seçili %1 sayfayı silmek istediğinizden emin misiniz? + + + Erreur message box title Hata @@ -6944,236 +11141,283 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s QETElementEditor + &Nouveau &Yeni + &Ouvrir &Aç + &Ouvrir depuis un fichier &Dosyadan Aç + &Enregistrer &Kaydet + Enregistrer sous Farklı kaydet + Enregistrer dans un fichier Bir dosyaya kaydet + Recharger Yeniden yükle + Tout sélectionner Tümünü seç + QElectroTech - Éditeur d'élément QElectroTech - Öğe Editörü + &Aide &Yardım + Annulations İptal edilenler + Parties Parçalar + Informations Bilgiler + Outils Araçlar + Affichage Görünüm + Élément Öğe + Annulation - + İptal + &Fermer cet éditeur - + Bu editörü &kapat + Fermer cet éditeur - + Bu editörü kapat + Désélectionner tout Hiçbirini Seçme + Co&uper &Kes + Cop&ier Kop&yala + C&oller &Yapıştır + C&oller dans la zone - + Alana &yapıştır + Un fichier - + Bir dosya + Un élément - + Bir öğe + À &propos de QElectroTech QElectroTech &Hakkında + Affiche des informations sur QElectroTech QElectroTech ile ilgili bilgileri görüntüle + Manuel en ligne Çevrimiçi kullanım kılavuzu + Lance le navigateur par défaut vers le manuel en ligne de QElectroTech QElectroTech Çevrim içi Klavuzunu varsayılan tarayıcı ile başlat + Chaine Youtube Youtube kanalı + Lance le navigateur par défaut vers la chaine Youtube de QElectroTech QElectroTech’in Youtube kanalını varsayılan tarayıcıda başlatın + Soutenir le projet par un don Projeye bağış yaparak destek olun + Soutenir le projet QElectroTech par un don QElectroTech projesine bağış yaparak destek olun + À propos de &Qt &Qt Hakkında + Affiche des informations sur la bibliothèque Qt Qt kütüphanesi bilgilerini görüntüler + Rotation Döndürme + Fine-Rotation - + İnce-Döndürme + Mirror - + Ayna + Flip - + Çevir + Importer un dxf - + DXF import et + importer un élément à redimensionner - + yeniden boyutlandırılacak öğe import et + Inverser la sélection Seçimi ters çevir + &Supprimer &Sil + Éditer le nom et les traductions de l'élément Öğenin adını ve çevirilerini düzenle + Éditer les informations sur l'auteur Yazar bilgilerini düzenle + Éditer les propriétés de l'élément Öğenin özelliklerini düzenleme @@ -7195,21 +11439,25 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s + Zoom avant Yakınlaştır + Zoom arrière Uzaklaştır + Zoom adapté Uyarlanmış zum + Pas de zoom Yakınlaştırma yok @@ -7283,25 +11531,30 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... - + Büyük bir DXF import etmek zaman alabilir +lütfen import sırasında bekleyin... + &Fichier &Dosya + &Édition &Baskı + Afficha&ge &Görünüm + Coller depuis... Yapıştır ... @@ -7470,7 +11723,7 @@ veuillez patienter durant l'import... Trop de primitives, liste non générée: %1 - + Çok fazla ilkel, liste oluşturulmadı: %1 @@ -7498,7 +11751,7 @@ veuillez patienter durant l'import... Importer un élément à redimensionner - + Yeniden boyutlandırılacak bir öğe import et @@ -7754,32 +12007,37 @@ les conditions requises ne sont pas valides Ce document semble avoir été enregistré avec une version %1 qui est ultérieure à votre version ! Vous utilisez actuellement QElectroTech en version %2 - + Bu belge sizin sürümünüzden daha sonraki bir %1 sürümüyle kaydedilmiş gibi görünüyor! +Şu anda QElectroTech sürüm %2 kullanıyorsunuz . Il est alors possible que l'ouverture de tout ou partie de ce document échoue. Que désirez vous faire ? - + . + Bu belgenin tamamının veya bir kısmının açılması başarısız olabilir. +Ne yapmak istersiniz? Avertissement message box title - + Uyarı Le projet que vous tentez d'ouvrir est partiellement compatible avec votre version %1 de QElectroTech. - + Açmaya çalıştığınız proje, QElectroTech sürüm %1 ile kısmen uyumludur. + Afin de le rendre totalement compatible veuillez ouvrir ce même projet avec la version 0.8, ou 0.80 de QElectroTech et sauvegarder le projet et l'ouvrir à nouveau avec cette version. Que désirez vous faire ? - + Tamamen uyumlu hale getirmek için lütfen bu projeyi QElectroTech sürüm 0.8 veya 0.80 ile açın, projeyi kaydedin ve bu sürümle tekrar açın. +Ne yapmak istersiniz? @@ -8109,7 +12367,7 @@ Que désirez vous faire ? Collection Company - + Company Koleksiyonu @@ -8119,7 +12377,7 @@ Que désirez vous faire ? Makros - + Makrolar @@ -8161,7 +12419,7 @@ Que désirez vous faire ? un element graphique - + bir grafik öğe @@ -8323,7 +12581,7 @@ Que désirez vous faire ? Modifier les propriétées de l'élément - + Öğe özelliklerini değiştir @@ -8336,13 +12594,13 @@ Que désirez vous faire ? Miroir de sélection undo caption - + Seçim aynası Retourner la sélection undo caption - + Seçimi çevir @@ -8548,7 +12806,7 @@ Değiştirmek ister misiniz? numero_de_fileries_ - + kablolama_numarası_ @@ -8912,7 +13170,7 @@ Değiştirmek ister misiniz? Modifier les informations de plusieurs éléments - + Birden çok öğenin bilgilerini değiştir @@ -9042,12 +13300,12 @@ Değiştirmek ister misiniz? Date d'enregistrement du fichier format local - + Dosya kayıt tarihi yerel format Date d'enregistrement du fichier format yyyy-MM-dd - + Dosya kayıt tarihi format yyyy-MM-dd @@ -9078,42 +13336,42 @@ Değiştirmek ister misiniz? Description textuelle auxiliaire 1 - + Yardımcı metinsel açıklama 1 Numéro d'article auxiliaire 1 - + Yardımcı makale numarası 1 Fabricant auxiliaire 1 - + Yardımcı üretici 1 Numéro de commande auxiliaire 1 - + Yardımcı sipariş numarası 1 Numéro interne auxiliaire 1 - + Yardımcı dahili numara 1 Fournisseur auxiliaire 1 - + Yardımcı tedarikçi 1 Quantité auxiliaire 1 - + Yardımcı miktar 1 Unité auxiliaire 1 - + Yardımcı birim 1 @@ -9123,132 +13381,132 @@ Değiştirmek ister misiniz? Description textuelle auxiliaire 2 - + Yardımcı metinsel açıklama 2 Numéro d'article auxiliaire 2 - + Yardımcı makale numarası 2 Fabricant auxiliaire 2 - + Yardımcı üretici 2 Numéro de commande auxiliaire 2 - + Yardımcı sipariş numarası 2 Numéro interne auxiliaire 2 - + Yardımcı dahili numara 2 Fournisseur auxiliaire 2 - + Yardımcı tedarikçi 2 Quantité auxiliaire 2 - + Yardımcı miktar 2 Unité auxiliaire 2 - + Yardımcı birim 2 Bloc auxiliaire 3 - + Yardımcı blok 3 Description textuelle auxiliaire 3 - + Yardımcı metinsel açıklama 3 Numéro d'article auxiliaire 3 - + Yardımcı makale numarası 3 Fabricant auxiliaire 3 - + Yardımcı üretici 3 Numéro de commande auxiliaire 3 - + Yardımcı sipariş numarası 3 Numéro interne auxiliaire 3 - + Yardımcı dahili numara 3 Fournisseur auxiliaire 3 - + Yardımcı tedarikçi 3 Quantité auxiliaire 3 - + Yardımcı miktar 3 Unité auxiliaire 3 - + Yardımcı birim 3 Bloc auxiliaire 4 - + Yardımcı blok 4 Description textuelle auxiliaire 4 - + Yardımcı metinsel açıklama 4 Numéro d'article auxiliaire 4 - + Yardımcı makale numarası 4 Fabricant auxiliaire 4 - + Yardımcı üretici 4 Numéro de commande auxiliaire 4 - + Yardımcı sipariş numarası 4 Numéro interne auxiliaire 4 - + Yardımcı dahili numara 4 Fournisseur auxiliaire 4 - + Yardımcı tedarikçi 4 Quantité auxiliaire 4 - + Yardımcı miktar 4 Unité auxiliaire 4 - + Yardımcı birim 4 @@ -9298,12 +13556,12 @@ Değiştirmek ister misiniz? Couleur du fil - + Tel rengi Section du fil - + Tel kesiti @@ -9313,7 +13571,7 @@ Değiştirmek ister misiniz? Date d'enregistrement du fichier format dd-MM-yyyy - + Dosya kayıt tarihi format dd-MM-yyyy @@ -9336,29 +13594,29 @@ Değiştirmek ister misiniz? İletkenlerin oluşturulması - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Qet_tb_generator eklentisini yüklemek için <br> Ziyaret Et: <br> <a href='https://pypi.python.org/pypi/qet-tb-generator'> qet-tb-generator </a> <br> python 3.5 veya üzeri. <br> <B> <U> İlk önce Windows'a yükleyin </B> </U> <br> 1. Gerekirse, python 3.5 veya üstü bir sürüm yükleyin. <br> Ziyaret: <br> <a href='https://www.python.org/downloads/'> python.org </a> <br> 2. pip install qet_tb_generator <br> <B> <U> Windows'ta Güncelleme </B> </U> <br> python -m pip install --upgrade qet_tb_generator <br> >> kullanıcı bu script'in terminalde bu dizinde başlatılmasını sağlayabilir <br> C: \ users \ XXXX \ AppData \ Local \ Programs \ Python \ Python36-32 \ Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + qet_tb_generator eklentisini kurmak için<br>Şu adresi ziyaret edin :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> macOSX'te ilk kurulum</B></U><br>1. Gerekirse yalnızca python 3.11 paketini kurun, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Profile.command betiğini çalıştırın<br>çünkü program qet-tb-generator eklentisini bulmak için hardcoded PATH kullanır <br> Şu adresi ziyaret edin :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> macOSX'te güncelleme</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + qet_tb_generator eklentisini kurmak için<br>Şu adresi ziyaret edin :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Python 3.5 veya üzeri gerektirir.<br><br><B><U> Linux'ta ilk kurulum</B></U><br>1. pip3'ün kurulu olduğunu kontrol edin: pip3 --version<br>Kurulu değilse şu komutla kurun: sudo apt-get install python3-pip<br>2. Programı kurun: sudo pip3 install qet_tb_generator<br>3. Programı çalıştırın: qet_tb_generator<br><br><B><U> Linux'ta güncelleme</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin qet_tb_generator eklentisi başlatılırken hata oluştu Ajouter une nomenclature - + Bir nomenklatür ekle @@ -9368,21 +13626,21 @@ Değiştirmek ister misiniz? Coller - + Yapıştır + + + - - - this is an error in the code - + bu kodda bir hatadır @@ -9392,17 +13650,17 @@ Değiştirmek ister misiniz? Compilation : - + Derleme : Ajouter un groupe de bornes - + Klemens grubu ekle Supprimer un groupe de bornes - + Klemens grubunu sil @@ -9413,29 +13671,29 @@ Değiştirmek ister misiniz? Ajouter la borne %1 - + %1 klemensini ekle à un groupe de bornes - + bir klemens grubuna au groupe de bornes %1 - + %1 klemens grubuna Ajouter %1 bornes - + %1 klemens ekle Enlever %1 bornes - + %1 klemens kaldır @@ -9446,86 +13704,86 @@ Değiştirmek ister misiniz? Déplacer la borne %1 - + %1 klemensini taşı d'un groupe de bornes - + bir klemens grubundan du groupe de bornes %1 - + %1 klemens grubundan vers un groupe de bornes - + bir klemens grubuna vers le groupe de bornes %1 - + %1 klemens grubuna Déplacer des bornes - + Klemensleri taşı d'un groupe de bornes - + bir klemens grubundan du groupe de bornes %1 - + %1 klemens grubundan Enlever une borne - + Bir klemensi kaldır Modifier les proriétés d'un groupe de bornes - + Bir klemens grubunun özelliklerini değiştir Trier le bornier %1 - + %1 klemens bloğunu sırala Générique generic terminal element type - + Genel Fusible fuse terminal element type - + Sigorta Sectionable sectional terminal element type - + Ayrılabilir Diode diode terminal element type - + Diyot @@ -9538,7 +13796,7 @@ Değiştirmek ister misiniz? Générique generic terminal element function - + Genel @@ -9555,118 +13813,143 @@ Değiştirmek ister misiniz? Modifier les propriétés d'un élement - + Bir öğenin özelliklerini değiştir Ponter des bornes entre-elles - + Klemensleri birbirine köprüle Supprimer des ponts de bornes - + Klemens köprülerini sil Modifier la couleur d'un pont de bornes - + Klemens köprüsünün rengini değiştir Ouvrir un element - + Bir öğe aç Importer un fichier dxf - + DXF dosyası import et Disposition par défaut - + Varsayılan düzen Entrer le facteur d'échelle - + Ölçek faktörü gir Facteur X: - + X faktörü: Facteur Y: - + Y faktörü: sans - + olmadan horizontal - + yatay vertical - + dikey horizontal + vertical - + yatay + dikey Retourner l'élément : - + Öğeyi çevir : direction - + yön QET_ElementScaler: additional information about %1 import / scaling - + QET_ElementScaler: +%1 import / ölçeklendirme hakkında ek bilgi Le logiciel QET_ElementScaler est nécessaire pour mettre les éléments à l'échelle. Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper dans le dossier d'installation - + Öğeleri ölçeklendirmek için QET_ElementScaler yazılımı gereklidir. +Lütfen aşağıdaki bağlantıyı takip ederek indirin ve kurulum klasörüne çıkartın Dxf2elmt: Error: Make sure the file %1 is a valid .dxf file - + Dxf2elmt: +Hata: %1 dosyasının geçerli bir .dxf dosyası olduğundan emin olun See details here: - + Ayrıntıları burada görün: L'import dxf nécessite le logiciel dxf2elmt. Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper dans le dossier d'installation - + DXF import etmek için dxf2elmt yazılımı gereklidir. +Lütfen aşağıdaki bağlantıyı takip ederek indirin ve kurulum klasörüne çıkartın Automatic terminal numbering - + Otomatik klemens numaralandırma + + + + Path %1 doesn't exist + %1 yolu mevcut değil + + + + Failed to execute `lsof' error code %1 + `lsof' çalıştırılamadı hata kodu %1 + + + + KListOpenFilesJob is not supported on Windows + KListOpenFilesJob Windows'ta desteklenmez + + + + Change the visibility of the password + @info:tooltip + Parola görünürlüğünü değiştir @@ -9681,7 +13964,7 @@ Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper da Example Longer example string - + Örnek @@ -9690,23 +13973,25 @@ Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper da Les information à afficher sont supérieurs à la quantité maximal pouvant être affiché par les tableaux. Veuillez ajouter un nouveau tableau ou regler les tableaux existant afin d'afficher l'integralité des informations. - + Görüntülenecek bilgiler, tablolar tarafından görüntülenebilecek maksimum miktarın üzerindedir. +Lütfen tüm bilgileri görüntülemek için yeni bir tablo ekleyin veya mevcut tabloları ayarlayın. Les information à afficher sont supérieurs à la quantité maximal pouvant être affiché par le tableau. Veuillez ajouter un nouveau tableau ou regler le tableau existant afin d'afficher l'integralité des informations. - + Görüntülenecek bilgiler, tablo tarafından görüntülenebilecek maksimum miktarın üzerindedir. +Lütfen tüm bilgileri görüntülemek için yeni bir tablo ekleyin veya mevcut tabloyu ayarlayın. Limitation de tableau - + Tablo sınırlaması Modifier la géometrie d'un tableau - + Bir tablonun geometrisini değiştir @@ -9766,37 +14051,45 @@ Veuillez ajouter un nouveau tableau ou regler le tableau existant afin d'af RectangleEditor + Hauteur : Yükseklik: + Dimensions : Boyutlar : + y y + Coin supérieur gauche : Sol üst köşe : + Largeur : Genişlik: + + Arrondi : Round : + x x @@ -9810,31 +14103,37 @@ Veuillez ajouter un nouveau tableau ou regler le tableau existant afin d'af RenameDialog + Dialog Diyalog + Nouveau nom : Yeni isim : + Écraser Üzerine yaz + Renommer Yeniden Adlndır + Annuler Vazgeç + TextLabel Metin Etiketi @@ -9848,11 +14147,13 @@ Veuillez ajouter un nouveau tableau ou regler le tableau existant afin d'af ReplaceConductorDialog + Type Tür + &Multifilaire &Çoklu Hatlı @@ -9869,27 +14170,43 @@ Veuillez ajouter un nouveau tableau ou regler le tableau existant afin d'af + + + + + + + + + + + + Ne pas modifier Değiştirme + En haut Yukarı + En bas Aşağı + Texte sur conducteur horizontal : Metin veya yatay iletken : + Tension / protocol : Gerilim / Protokol : @@ -9898,171 +14215,212 @@ Veuillez ajouter un nouveau tableau ou regler le tableau existant afin d'af + + + + Supprimer ce texte Bu metni sil + Fonction : Fonksiyon : + Formule du texte : Metin Formülü : + Texte visible Görünür metin + + Angle : Açı : + Texte sur conducteur vertical : Metin veya dikey iletken : + Taille du texte : Metin boyutu : + Texte : Metin : + À gauche Sola doğru + À droite Sağa doğru + Couleur du conducteur İletken rengi + + ° ° + Section du conducteur - + İletken kesiti + Unifilaire Tek Hatlı + Protective Earth Neutral Koruyucu Topraklama Nötr + PEN PEN + Phase Faz + phase faz + + Nombre de phase Faz sayısı + Neutre Nötr + neutre nötr + Terre Toprak + terre toprak + TextLabel MetinEtiketi + PushButton Buton + Apparence Görünüm + Taille : Boyut : + + Couleur : Renk : + Style : Stil : + + Modifier Düzenleme + Couleur secondaire : İkincil renk : + Taille de trait : Çizgi boyutu : + px px @@ -10097,31 +14455,37 @@ Veuillez ajouter un nouveau tableau ou regler le tableau existant afin d'af ReplaceFolioWidget + Form Form + Principales Ana + Indice Rev Rev Endeksi + Localisation Konum + Fichier : Dosya : + Disponible en tant que %title pour les modèles de cartouches Antet şablonları için %title değişkeni olarak mevcuttur @@ -10134,71 +14498,92 @@ Veuillez ajouter un nouveau tableau ou regler le tableau existant afin d'af + + + + + + + + Ne pas modifier Değiştirmeyin + Disponible en tant que %author pour les modèles de cartouches Antet şablonları için %author değişkeni olarak mevcuttur + Auteur : Yazar : + Date : Tarih : + Installation : Kurulum : + Disponible en tant que %indexrev pour les modèles de cartouches Antet şablonları için %indexrev değişkeni olarak mevcuttur + Disponible en tant que %filename pour les modèles de cartouches Antet şablonları için %filenameı değişkeni olarak mevcuttur + Folio : Sayfa : + Pas de date Tarih yok + Disponible en tant que %date pour les modèles de cartouches Antet şablonları için %date değişkeni olarak mevcuttur + Date fixe : Sabit tarih: + Appliquer la date actuelle Geçerli tarihi uygula + <html><head/><body><p>Disponible en tant que %plant pour les modèles de cartouches</p></body></html> <html><head/><body><p>Antet şablonları için %plant olarak mevcut</p></body></html> + Disponible en tant que %folio pour les modèles de cartouches Les variables suivantes sont utilisables : - %id : numéro du folio courant dans le projet @@ -10212,11 +14597,13 @@ Aşağıdaki değişkenler kullanılabilir: + Disponible en tant que %locmach pour les modèles de cartouches Antet şablonları için %lochmach olarak mevcuttur + Titre : Başlık : @@ -10228,16 +14615,25 @@ Aşağıdaki değişkenler kullanılabilir: + + + + + + + Supprimer ce texte Bu metni sil + Personnalisées Özelleştir + Vous pouvez définir ici vos propres associations noms/valeurs pour que le cartouche en tienne compte. Exemple : associer le nom "volta" et la valeur "1745" remplacera %{volta} par 1745 dans le cartouche. Burada, antete işlemek için kendi ad / değer ilişkilerinizi tanımlayabilirsiniz. örnek: @@ -10248,16 +14644,19 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol ReportPropertieWidget + Form Form + Label de report de folio #Sayfa Raporu Etiketi + Vous pouvez définir un label personnalisé pour les reports de folio. Créer votre propre texte en vous aidant des variables suivantes : %f : la position du folio dans le projet @@ -10281,121 +14680,145 @@ Créer votre propre texte en vous aidant des variables suivantes : SearchAndReplaceWidget + Form Form + Aller à la correspondance suivante Bir sonraki eşleşmeye git + <html><head/><body><p>Afficher les options avancées</p></body></html> <html><head/><body><p>Gelişmiş ayarları göster</p></body></html> + Aller à la correspondance précédente Bir önceki eşleşmeye git + Quitter Çıkış + <html><head/><body><p>Définir les propriétés à remplacer dans les éléments</p></body></html> <html><head/><body><p>Öğelerde değiştirilecek özellikleri tanımla</p></body></html> + Champ texte de folio Sayfa metin alanı + <html><head/><body><p>Définir les propriétés à remplacer dans les conducteurs</p></body></html> <html><head/><body><p>İletkenlerde değiştirilecek özellikleri tanımla</p></body></html> + <html><head/><body><p>Définir les propriétés à remplacer dans les folios</p></body></html> <html><head/><body><p>Sayfalarda değiştirilecek özellikleri tanımla</p></body></html> + Folio Sayfa + Texte brut Sade Metin + Mode Mod + Mots entiers Bütün kelime + Sensible à la casse Büyük küçük harf duyarlı + <html><head/><body><p>Remplacer la correspondance sélectionnée</p></body></html> <html><head/><body>Seçilen eşlenmişi değiştir<p></p></body></html> + <html><head/><body><p>Remplacer les correspondances cochées</p></body></html> <html><head/><body><p>İşaretli seçilenleri değiştir</p></body></html> + avancé gelişmiş + Élément Öğe + Conducteur İletken + Remplacer : Değiştir : + Remplacer Değiştir + Tout remplacer Tümünü değiştir + Chercher : Bul : + Actualiser Gerçekleştir @@ -10447,17 +14870,17 @@ Créer votre propre texte en vous aidant des variables suivantes : Sélectionner les éléments de ce folio - + Bu sayfanın öğelerini seç Sélectionner les conducteurs de ce folio - + Bu sayfanın iletkenlerini seç Sélectionner les textes de ce folio - + Bu sayfanın metinlerini seç @@ -10502,61 +14925,73 @@ Créer votre propre texte en vous aidant des variables suivantes : SelectAutonumW + Form Form + Numérotations disponibles : Mevcut numaralandırma : + Nom de la nouvelle numérotation #Yeni numaralandırmanın adı + Supprimer la numérotation Numaralandırmayı sil + Définition Tanım + <html><head/><body><p>Supprimer une variable de numérotation</p></body></html> <html><head/><body><p>Numaralandırma değişkenini sil</p></body></html> + <html><head/><body><p>Ajouter une variable de numérotation</p></body></html> <html><head/><body><p>Numaralandırma değişkeni ekle</p></body></html> + Précédent Önceki + Suivant Sonraki + Type Tür + Valeur #Değer + Incrémentation #Artış @@ -10637,7 +15072,7 @@ Diğer alanlar kullanılmaz. Element Autonumérotation title window - + Öğe Otomatik Numaralandırma @@ -10659,7 +15094,23 @@ Les autres champs ne sont pas utilisés. -Le type "Folio" représente le nom du folio en cours. Les autres champs ne sont pas utilisés. help dialog about the element autonumerotation - + Yeni öğelerin nasıl numaralandırılacağını burada tanımlayabilirsiniz. +-Bir numaralandırma en az bir değişkenden oluşur. +-+ ve - düğmeleri ile numaralandırma değişkeni ekleyebilir veya silebilirsiniz. +-Bir numaralandırma değişkeni şunlardan oluşur: bir tip, bir değer ve bir artış. + +-"Rakam 1", "Rakam 01" ve "Rakam 001" tipleri, "Değer" alanında tanımlanan ve her yeni iletkende "Artış" alanı değeri kadar artan sayısal bir tipi temsil eder. +-"Rakam 01" ve "Rakam 001", şema üzerinde sırasıyla en az iki ve üç haneyle temsil edilir. +Değer alanında tanımlanan rakam seçilen tipten daha az haneye sahipse, tipine uymak için önüne bir veya iki 0 eklenir. + +-"Metin" tipi, sabit bir metni temsil eder. +"Artış" alanı kullanılmaz. + +-"N° sayfa" tipi, geçerli sayfa numarasını temsil eder. +Diğer alanlar kullanılmaz. + +-"Sayfa" tipi, geçerli sayfa adını temsil eder. +Diğer alanlar kullanılmaz. @@ -10672,152 +15123,183 @@ Les autres champs ne sont pas utilisés. ShapeGraphicsItemPropertiesWidget + Form Form + Trait Özellik + Épaisseur Kalınlık + Normal Normal + Tiret Kesik Çizgili + Pointillé Noktalı + Traits et points Özellikler ve Noktalar + Traits points points Nokta Nokta + Tiret custom Özel Çizgi + Type Tür + + Couleur Renk + Remplissage Dolgu + Style Stil + Aucun Yok + Plein Tam + Densité 1 Yoğunluk 1 + Densité 2 Yoğunluk 2 + Densité 3 Yoğunluk 3 + Densité 4 Yoğunluk 4 + Densité 5 Yoğunluk 5 + Densité 6 Yoğunluk 6 + Densité 7 Yoğunluk 7 + Horizontal Yatay + Vertical Dikey + Croix Çapraz + Diagonal arrière Arka çapraz + Diagonal avant Ön çapraz + Diagonal en croix Çaprazlama + Verrouiller la position #Pozisyonu Kilitle + Polygone fermé #Kapalı Çokgen @@ -10937,841 +15419,841 @@ Les autres champs ne sont pas utilisés. Pink : Pink element part color - + Pembe : Pink Pink : LightPink element part color - + Pembe : LightPink Pink : HotPink element part color - + Pembe : HotPink Pink : DeepPink element part color - + Pembe : DeepPink Pink : PaleVioletRed element part color - + Pembe : PaleVioletRed Pink : MediumVioletRed element part color - + Pembe : MediumVioletRed Red : LightSalmon element part color - + Kırmızı : LightSalmon Red : Salmon element part color - + Kırmızı : Salmon Red : DarkSalmon element part color - + Kırmızı : DarkSalmon Red : LightCoral element part color - + Kırmızı : LightCoral Red : IndianRed element part color - + Kırmızı : IndianRed Red : Crimson element part color - + Kırmızı : Crimson Red : Firebrick element part color - + Kırmızı : Firebrick Red : DarkRed element part color - + Kırmızı : DarkRed Red : Red element part color - + Kırmızı : Red Orange : OrangeRed element part color - + Turuncu : OrangeRed Orange : Tomato element part color - + Turuncu : Tomato Orange : Coral element part color - + Turuncu : Coral Orange : DarkOrange element part color - + Turuncu : DarkOrange Orange : Orange element part color - + Turuncu : Orange Yellow : Yellow element part color - + Sarı : Yellow Yellow : LightYellow element part color - + Sarı : LightYellow Yellow : LemonChiffon element part color - + Sarı : LemonChiffon Yellow : LightGoldenrodYellow element part color - + Sarı : LightGoldenrodYellow Yellow : PapayaWhip element part color - + Sarı : PapayaWhip Yellow : Moccasin element part color - + Sarı : Moccasin Yellow : PeachPuff element part color - + Sarı : PeachPuff Yellow : PaleGoldenrod element part color - + Sarı : PaleGoldenrod Yellow : Khaki element part color - + Sarı : Khaki Yellow : DarkKhaki element part color - + Sarı : DarkKhaki Yellow : Gold element part color - + Sarı : Gold Brown : Cornsilk element part color - + Kahverengi : Cornsilk Brown : BlanchedAlmond element part color - + Kahverengi : BlanchedAlmond Brown : Bisque element part color - + Kahverengi : Bisque Brown : NavajoWhite element part color - + Kahverengi : NavajoWhite Brown : Wheat element part color - + Kahverengi : Wheat Brown : Burlywood element part color - + Kahverengi : Burlywood Brown : Tan element part color - + Kahverengi : Tan Brown : RosyBrown element part color - + Kahverengi : RosyBrown Brown : SandyBrown element part color - + Kahverengi : SandyBrown Brown : Goldenrod element part color - + Kahverengi : Goldenrod Brown : DarkGoldenrod element part color - + Kahverengi : DarkGoldenrod Brown : Peru element part color - + Kahverengi : Peru Brown : Chocolate element part color - + Kahverengi : Chocolate Brown : SaddleBrown element part color - + Kahverengi : SaddleBrown Brown : Sienna element part color - + Kahverengi : Sienna Brown : Brown element part color - + Kahverengi : Brown Brown : Maroon element part color - + Kahverengi : Maroon Green : DarkOliveGreen element part color - + Yeşil : DarkOliveGreen Green : Olive element part color - + Yeşil : Olive Green : OliveDrab element part color - + Yeşil : OliveDrab Green : YellowGreen element part color - + Yeşil : YellowGreen Green : LimeGreen element part color - + Yeşil : LimeGreen Green : Lime element part color - + Yeşil : Lime Green : LawnGreen element part color - + Yeşil : LawnGreen Green : Chartreuse element part color - + Yeşil : Chartreuse Green : GreenYellow element part color - + Yeşil : GreenYellow Green : SpringGreen element part color - + Yeşil : SpringGreen Green : MediumSpringGreen element part color - + Yeşil : MediumSpringGreen Green : LightGreen element part color - + Yeşil : LightGreen Green : PaleGreen element part color - + Yeşil : PaleGreen Green : DarkSeaGreen element part color - + Yeşil : DarkSeaGreen Green : MediumAquamarine element part color - + Yeşil : MediumAquamarine Green : MediumSeaGreen element part color - + Yeşil : MediumSeaGreen Green : SeaGreen element part color - + Yeşil : SeaGreen Green : ForestGreen element part color - + Yeşil : ForestGreen Green : Green element part color - + Yeşil : Green Green : DarkGreen element part color - + Yeşil : DarkGreen Cyan : Aqua element part color - + Camgöbeği : Aqua Cyan : Cyan element part color - + Camgöbeği : Cyan Cyan : LightCyan element part color - + Camgöbeği : LightCyan Cyan : PaleTurquoise element part color - + Camgöbeği : PaleTurquoise Cyan : Aquamarine element part color - + Camgöbeği : Aquamarine Cyan : Turquoise element part color - + Camgöbeği : Turquoise Cyan : MediumTurquoise element part color - + Camgöbeği : MediumTurquoise Cyan : DarkTurquoise element part color - + Camgöbeği : DarkTurquoise Cyan : LightSeaGreen element part color - + Camgöbeği : LightSeaGreen Cyan : CadetBlue element part color - + Camgöbeği : CadetBlue Cyan : DarkCyan element part color - + Camgöbeği : DarkCyan Cyan : Teal element part color - + Camgöbeği : Teal Blue : LightSteelBlue element part color - + Mavi : LightSteelBlue Blue : PowderBlue element part color - + Mavi : PowderBlue Blue : LightBlue element part color - + Mavi : LightBlue Blue : SkyBlue element part color - + Mavi : SkyBlue Blue : LightSkyBlue element part color - + Mavi : LightSkyBlue Blue : DeepSkyBlue element part color - + Mavi : DeepSkyBlue Blue : DodgerBlue element part color - + Mavi : DodgerBlue Blue : CornflowerBlue element part color - + Mavi : CornflowerBlue Blue : SteelBlue element part color - + Mavi : SteelBlue Blue : RoyalBlue element part color - + Mavi : RoyalBlue Blue : Blue element part color - + Mavi : Blue Blue : MediumBlue element part color - + Mavi : MediumBlue Blue : DarkBlue element part color - + Mavi : DarkBlue Blue : Navy element part color - + Mavi : Navy Blue : MidnightBlue element part color - + Mavi : MidnightBlue Purple : Lavender element part color - + Mor : Lavender Purple : Thistle element part color - + Mor : Thistle Purple : Plum element part color - + Mor : Plum Purple : Violet element part color - + Mor : Violet Purple : Orchid element part color - + Mor : Orchid Purple : Fuchsia element part color - + Mor : Fuchsia Purple : Magenta element part color - + Mor : Magenta Purple : MediumOrchid element part color - + Mor : MediumOrchid Purple : MediumPurple element part color - + Mor : MediumPurple Purple : BlueViolet element part color - + Mor : BlueViolet Purple : DarkViolet element part color - + Mor : DarkViolet Purple : DarkOrchid element part color - + Mor : DarkOrchid Purple : DarkMagenta element part color - + Mor : DarkMagenta Purple : Purple element part color - + Mor : Purple Purple : Indigo element part color - + Mor : Indigo Purple : DarkSlateBlue element part color - + Mor : DarkSlateBlue Purple : SlateBlue element part color - + Mor : SlateBlue Purple : MediumSlateBlue element part color - + Mor : MediumSlateBlue White : White element part color - + Beyaz : White White : Snow element part color - + Beyaz : Snow White : Honeydew element part color - + Beyaz : Honeydew White : MintCream element part color - + Beyaz : MintCream White : Azure element part color - + Beyaz : Azure White : AliceBlue element part color - + Beyaz : AliceBlue White : GhostWhite element part color - + Beyaz : GhostWhite White : WhiteSmoke element part color - + Beyaz : WhiteSmoke White : Seashell element part color - + Beyaz : Seashell White : Beige element part color - + Beyaz : Beige White : OldLace element part color - + Beyaz : OldLace White : FloralWhite element part color - + Beyaz : FloralWhite White : Ivory element part color - + Beyaz : Ivory White : AntiqueWhite element part color - + Beyaz : AntiqueWhite White : Linen element part color - + Beyaz : Linen White : LavenderBlush element part color - + Beyaz : LavenderBlush White : MistyRose element part color - + Beyaz : MistyRose Gray : Gainsboro element part color - + Gri : Gainsboro Gray : LightGray element part color - + Gri : LightGray Gray : Silver element part color - + Gri : Silver Gray : DarkGray element part color - + Gri : DarkGray Gray : Gray element part color - + Gri : Gray Gray : DimGray element part color - + Gri : DimGray Gray : LightSlateGray element part color - + Gri : LightSlateGray Gray : SlateGray element part color - + Gri : SlateGray Gray : DarkSlateGray element part color - + Gri : DarkSlateGray Gray : Black element part color - + Gri : Black @@ -11921,841 +16403,841 @@ Les autres champs ne sont pas utilisés. Pink : Pink element part filling - + Pembe : Pink Pink : LightPink element part filling - + Pembe : LightPink Pink : HotPink element part filling - + Pembe : HotPink Pink : DeepPink element part filling - + Pembe : DeepPink Pink : PaleVioletRed element part filling - + Pembe : PaleVioletRed Pink : MediumVioletRed element part filling - + Pembe : MediumVioletRed Red : LightSalmon element part filling - + Kırmızı : LightSalmon Red : Salmon element part filling - + Kırmızı : Salmon Red : DarkSalmon element part filling - + Kırmızı : DarkSalmon Red : LightCoral element part filling - + Kırmızı : LightCoral Red : IndianRed element part filling - + Kırmızı : IndianRed Red : Crimson element part filling - + Kırmızı : Crimson Red : Firebrick element part filling - + Kırmızı : Firebrick Red : DarkRed element part filling - + Kırmızı : DarkRed Red : Red element part filling - + Kırmızı : Red Orange : OrangeRed element part filling - + Turuncu : OrangeRed Orange : Tomato element part filling - + Turuncu : Tomato Orange : Coral element part filling - + Turuncu : Coral Orange : DarkOrange element part filling - + Turuncu : DarkOrange Orange : Orange element part filling - + Turuncu : Orange Yellow : Yellow element part filling - + Sarı : Yellow Yellow : LightYellow element part filling - + Sarı : LightYellow Yellow : LemonChiffon element part filling - + Sarı : LemonChiffon Yellow : LightGoldenrodYellow element part filling - + Sarı : LightGoldenrodYellow Yellow : PapayaWhip element part filling - + Sarı : PapayaWhip Yellow : Moccasin element part filling - + Sarı : Moccasin Yellow : PeachPuff element part filling - + Sarı : PeachPuff Yellow : PaleGoldenrod element part filling - + Sarı : PaleGoldenrod Yellow : Khaki element part filling - + Sarı : Khaki Yellow : DarkKhaki element part filling - + Sarı : DarkKhaki Yellow : Gold element part filling - + Sarı : Gold Brown : Cornsilk element part filling - + Kahverengi : Cornsilk Brown : BlanchedAlmond element part filling - + Kahverengi : BlanchedAlmond Brown : Bisque element part filling - + Kahverengi : Bisque Brown : NavajoWhite element part filling - + Kahverengi : NavajoWhite Brown : Wheat element part filling - + Kahverengi : Wheat Brown : Burlywood element part filling - + Kahverengi : Burlywood Brown : Tan element part filling - + Kahverengi : Tan Brown : RosyBrown element part filling - + Kahverengi : RosyBrown Brown : SandyBrown element part filling - + Kahverengi : SandyBrown Brown : Goldenrod element part filling - + Kahverengi : Goldenrod Brown : DarkGoldenrod element part filling - + Kahverengi : DarkGoldenrod Brown : Peru element part filling - + Kahverengi : Peru Brown : Chocolate element part filling - + Kahverengi : Chocolate Brown : SaddleBrown element part filling - + Kahverengi : SaddleBrown Brown : Sienna element part filling - + Kahverengi : Sienna Brown : Brown element part filling - + Kahverengi : Brown Brown : Maroon element part filling - + Kahverengi : Maroon Green : DarkOliveGreen element part filling - + Yeşil : DarkOliveGreen Green : Olive element part filling - + Yeşil : Olive Green : OliveDrab element part filling - + Yeşil : OliveDrab Green : YellowGreen element part filling - + Yeşil : YellowGreen Green : LimeGreen element part filling - + Yeşil : LimeGreen Green : Lime element part filling - + Yeşil : Lime Green : LawnGreen element part filling - + Yeşil : LawnGreen Green : Chartreuse element part filling - + Yeşil : Chartreuse Green : GreenYellow element part filling - + Yeşil : GreenYellow Green : SpringGreen element part filling - + Yeşil : SpringGreen Green : MediumSpringGreen element part filling - + Yeşil : MediumSpringGreen Green : LightGreen element part filling - + Yeşil : LightGreen Green : PaleGreen element part filling - + Yeşil : PaleGreen Green : DarkSeaGreen element part filling - + Yeşil : DarkSeaGreen Green : MediumAquamarine element part filling - + Yeşil : MediumAquamarine Green : MediumSeaGreen element part filling - + Yeşil : MediumSeaGreen Green : SeaGreen element part filling - + Yeşil : SeaGreen Green : ForestGreen element part filling - + Yeşil : ForestGreen Green : Green element part filling - + Yeşil : Green Green : DarkGreen element part filling - + Yeşil : DarkGreen Cyan : Aqua element part filling - + Camgöbeği : Aqua Cyan : Cyan element part filling - + Camgöbeği : Cyan Cyan : LightCyan element part filling - + Camgöbeği : LightCyan Cyan : PaleTurquoise element part filling - + Camgöbeği : PaleTurquoise Cyan : Aquamarine element part filling - + Camgöbeği : Aquamarine Cyan : Turquoise element part filling - + Camgöbeği : Turquoise Cyan : MediumTurquoise element part filling - + Camgöbeği : MediumTurquoise Cyan : DarkTurquoise element part filling - + Camgöbeği : DarkTurquoise Cyan : LightSeaGreen element part filling - + Camgöbeği : LightSeaGreen Cyan : CadetBlue element part filling - + Camgöbeği : CadetBlue Cyan : DarkCyan element part filling - + Camgöbeği : DarkCyan Cyan : Teal element part filling - + Camgöbeği : Teal Blue : LightSteelBlue element part filling - + Mavi : LightSteelBlue Blue : PowderBlue element part filling - + Mavi : PowderBlue Blue : LightBlue element part filling - + Mavi : LightBlue Blue : SkyBlue element part filling - + Mavi : SkyBlue Blue : LightSkyBlue element part filling - + Mavi : LightSkyBlue Blue : DeepSkyBlue element part filling - + Mavi : DeepSkyBlue Blue : DodgerBlue element part filling - + Mavi : DodgerBlue Blue : CornflowerBlue element part filling - + Mavi : CornflowerBlue Blue : SteelBlue element part filling - + Mavi : SteelBlue Blue : RoyalBlue element part filling - + Mavi : RoyalBlue Blue : Blue element part filling - + Mavi : Blue Blue : MediumBlue element part filling - + Mavi : MediumBlue Blue : DarkBlue element part filling - + Mavi : DarkBlue Blue : Navy element part filling - + Mavi : Navy Blue : MidnightBlue element part filling - + Mavi : MidnightBlue Purple : Lavender element part filling - + Mor : Lavender Purple : Thistle element part filling - + Mor : Thistle Purple : Plum element part filling - + Mor : Plum Purple : Violet element part filling - + Mor : Violet Purple : Orchid element part filling - + Mor : Orchid Purple : Fuchsia element part filling - + Mor : Fuchsia Purple : Magenta element part filling - + Mor : Magenta Purple : MediumOrchid element part filling - + Mor : MediumOrchid Purple : MediumPurple element part filling - + Mor : MediumPurple Purple : BlueViolet element part filling - + Mor : BlueViolet Purple : DarkViolet element part filling - + Mor : DarkViolet Purple : DarkOrchid element part filling - + Mor : DarkOrchid Purple : DarkMagenta element part filling - + Mor : DarkMagenta Purple : Purple element part filling - + Mor : Purple Purple : Indigo element part filling - + Mor : Indigo Purple : DarkSlateBlue element part filling - + Mor : DarkSlateBlue Purple : SlateBlue element part filling - + Mor : SlateBlue Purple : MediumSlateBlue element part filling - + Mor : MediumSlateBlue White : White element part filling - + Beyaz : White White : Snow element part filling - + Beyaz : Snow White : Honeydew element part filling - + Beyaz : Honeydew White : MintCream element part filling - + Beyaz : MintCream White : Azure element part filling - + Beyaz : Azure White : AliceBlue element part filling - + Beyaz : AliceBlue White : GhostWhite element part filling - + Beyaz : GhostWhite White : WhiteSmoke element part filling - + Beyaz : WhiteSmoke White : Seashell element part filling - + Beyaz : Seashell White : Beige element part filling - + Beyaz : Beige White : OldLace element part filling - + Beyaz : OldLace White : FloralWhite element part filling - + Beyaz : FloralWhite White : Ivory element part filling - + Beyaz : Ivory White : AntiqueWhite element part filling - + Beyaz : AntiqueWhite White : Linen element part filling - + Beyaz : Linen White : LavenderBlush element part filling - + Beyaz : LavenderBlush White : MistyRose element part filling - + Beyaz : MistyRose Gray : Gainsboro element part filling - + Gri : Gainsboro Gray : LightGray element part filling - + Gri : LightGray Gray : Silver element part filling - + Gri : Silver Gray : DarkGray element part filling - + Gri : DarkGray Gray : Gray element part filling - + Gri : Gray Gray : DimGray element part filling - + Gri : DimGray Gray : LightSlateGray element part filling - + Gri : LightSlateGray Gray : SlateGray element part filling - + Gri : SlateGray Gray : DarkSlateGray element part filling - + Gri : DarkSlateGray Gray : Black element part filling - + Gri : Black @@ -12804,12 +17286,12 @@ Les autres champs ne sont pas utilisés. Style : - + Stil : Épaisseur : - + Kalınlık : @@ -12846,28 +17328,33 @@ Les autres champs ne sont pas utilisés. SummaryQueryWidget + Form Form + Informations disponibles - + Mevcut bilgiler + Information à afficher - + Görüntülenecek bilgi + Configuration - + Yapılandırma + Requête SQL : - + SQL sorgusu : @@ -12910,55 +17397,61 @@ Les autres champs ne sont pas utilisés. Générique - + Genel Bornier intérieur - + İç klemens bloğu Bornier extérieur - + Dış klemens bloğu Modifier le nom du terminal - + Klemens adını değiştir Modifier le type d'une borne - + Bir klemensin tipini değiştir + Form Form + y : - + y : + Orientation : - + Yönlendirme : + x : - + x : + Nom : İsim : + Type : Type : @@ -12967,278 +17460,330 @@ Les autres champs ne sont pas utilisés. TerminalNumberingDialog + Numérotation automatique des bornes - + Klemenslerin otomatik numaralandırılması + Cette fonction numérote les bornes du projet selon leur position. Les bornes vides ou verrouillées sont ignorées.Le marquage des bornes doit être configuré au préalable comme suit : '-X:AB'. La partie avant les deux-points (le bornier) peut être nommée au choix. 'AB' peut être composé de chiffres ou de lettres." - + Bu fonksiyon, projenin klemenslerini konumlarına göre numaralandırır. Boş veya kilitli klemensler yok sayılır. Klemens işaretlemesi önceden şu şekilde yapılandırılmalıdır: '-X:AB'. İki nokta üst üste işaretinden önceki kısım (klemens bloğu) istenildiği gibi adlandırılabilir. 'AB' rakamlardan veya harflerden oluşabilir." + Priorité des axes - + Eksen önceliği + Priorité à l'axe X (horizontal) - + X eksenine öncelik (yatay) + Priorité à l'axe Y (vertical) - + Y eksenine öncelik (dikey) + Type de numérotation - + Numaralandırma tipi + Numérique uniquement (1, 2, 3...) - + Yalnızca sayısal (1, 2, 3...) + Alphanumérique (A, B, C... 1, 2...) - + Alfanümerik (A, B, C... 1, 2...) TerminalStripCreatorDialog + Création groupe de bornes - + Klemens grubu oluşturma + Localisation : - + Konum : + Nom : İsim : + Installation : - + Kurulum : + Description : - + Açıklama : + Commentaire : - + Yorum : TerminalStripEditor + Disposition - + Düzen + Ponter les bornes - + Klemensleri köprüle + Déponter les bornes - + Klemens köprülerini kaldır + Propriétés Özellikler + Nom : İsim : + Commentaire : - + Yorum : + Description - + Açıklama + Installation : - + Kurulum : + Localisation : - + Konum : + Type : Type : + Degrouper les bornes - + Klemensleri gruptan ayır + + Générique - + Genel + Form Form + Effectuer le déplacement - + Hareketi gerçekleştir + Couleur pont : - + Köprü rengi : + Fusible - + Sigorta + Sectionnable - + Ayrılabilir + Diode - + Diyot + Terre Toprak + Déplacer dans : - + Taşı : + Phase Faz + Neutre Nötr + Position automatique - + Otomatik konum + Étage : - + Kat : + Grouper les bornes - + Klemensleri grupla + Fonction : Fonksiyon : + Sans - + Olmadan + Avec - + İle + LED : - + LED : Bornes indépendantes - + Bağımsız klemensler Modifier des propriétés de borniers - + Klemens özelliklerini değiştir TerminalStripEditorWindow + Gestionnaire de borniers - + Klemens yöneticisi + toolBar - + toolBar + Ajouter un bornier - + Klemens bloğu ekle + Ajouter un bornier au projet - + Projeye klemens bloğu ekle + Supprimer le bornier - + Klemens bloğunu sil + Supprimer le bornier du projet - + Klemens bloğunu projeden sil + Recharger Yeniden yükle + Recharger les borniers - + Klemens bloklarını yeniden yükle @@ -13246,105 +17791,126 @@ Les autres champs ne sont pas utilisés. plan de bornes - + klemens planı TerminalStripLayoutEditor + Form Form + Borne niveau 0 : - + Klemens seviye 0 : + En tête : - + Başlık : + Point de pont - + Köprü noktası + Décalage vertical - + Dikey kayma + Afficher l'aide - + Yardımı göster + Largeur Genişlik + Orientation - + Yönlendirme + Alignement Hizalama + Police : - + Yazı tipi : + Taille : Boyut : + Texte d'en tête - + Başlık metni + Origine vertical - + Dikey orijin + Longueur maximal - + Maksimum uzunluk + Texte borne - + Klemens metni + Référence croisée - + Çapraz referans + Hauteur - + Yükseklik + Prévisualisation : - + Önizleme : + + + Gauche Sol @@ -13352,6 +17918,9 @@ Les autres champs ne sont pas utilisés. + + + Centre Orta @@ -13359,6 +17928,9 @@ Les autres champs ne sont pas utilisés. + + + Droite Sağ @@ -13366,6 +17938,9 @@ Les autres champs ne sont pas utilisés. + + + Horizontal Yatay @@ -13373,28 +17948,35 @@ Les autres champs ne sont pas utilisés. + + + Vertical Dikey + Borne niveau 2 : - + Klemens seviye 2 : + Espace : - + Boşluk : + Borne niveau 3 : - + Klemens seviye 3 : + Borne niveau 1 : - + Klemens seviye 1 : @@ -13407,7 +17989,7 @@ Les autres champs ne sont pas utilisés. Étage - + Kat @@ -13417,22 +17999,22 @@ Les autres champs ne sont pas utilisés. Référence croisé - + Çapraz referans Câble - + Kablo Couleur / numéro de fil câble - + Kablo tel rengi / numarası Type - + Tip @@ -13442,12 +18024,12 @@ Les autres champs ne sont pas utilisés. led - + led Numéro de conducteur - + İletken numarası @@ -13455,15 +18037,16 @@ Les autres champs ne sont pas utilisés. Plan de bornes - + Klemens planı TerminalStripTreeDockWidget + Explorateur de bornier - + Klemens bloğu gezgini @@ -13473,7 +18056,7 @@ Les autres champs ne sont pas utilisés. Bornes indépendante - + Bağımsız klemens @@ -13550,18 +18133,21 @@ Les autres champs ne sont pas utilisés. ThirdPartyBinaryInstallDialog + Logiciel tiers requis - + Üçüncü taraf yazılım gerekli + Télechargement - + İndirme + Dossier installation - + Kurulum klasörü @@ -13607,106 +18193,127 @@ Les autres champs ne sont pas utilisés. TitleBlockPropertiesWidget + Form Form + Informations des cartouches Antet Bilgileri + Modèle : #Şablon : + <html><head/><body><p>Affiche le cartouche en bas (horizontalement) ou à droite (verticalement) du folio.</p></body></html> <html><head/><body><p>Anteti, sayfanın altında (yatay) veya sağda (dikey) olarak görüntüler.</p></body></html> + Principales Ana + Date : #Tarih : + Auteur : #Yazar : + Disponible en tant que %locmach pour les modèles de cartouches Antet şablonları için %lochmach olarak mevcuttur + Indice Rev: Rev İndeksi: + <html><head/><body><p>Disponible en tant que %plant pour les modèles de cartouches</p></body></html> <html><head/><body><p>Antet şablonları için %plant olarak mevcut</p></body></html> + Disponible en tant que %title pour les modèles de cartouches Antet şablonları için %başlık olarak mevcuttur + Folio : #Sayfa : + Fichier : #Dosya : + Disponible en tant que %author pour les modèles de cartouches Antet şablonları için %author olarak mevcuttur + Disponible en tant que %filename pour les modèles de cartouches Antet şablonları için %filename olarak mevcuttur + Pas de date #Tarih yok + Date courante #Güncel tarih + Appliquer la date actuelle Geçerli tarihi uygula + Disponible en tant que %date pour les modèles de cartouches Antet şablonları için %date olarak mevcuttur + Date fixe : #Sabit tarih: + Disponible en tant que %folio pour les modèles de cartouches Les variables suivantes sont utilisables : - %id : numéro du folio courant dans le projet @@ -13720,37 +18327,44 @@ Aşağıdaki değişkenler kullanılabilir: + Titre : Başlık : + Page Num: Sayfa No : + Disponible en tant que %indexrev pour les modèles de cartouches Antet şablonları için %indexrev olarak mevcuttur + Installation : #Kurulum : + Localisation: Konum: + Personnalisées I am not sure about this. It should be checked. Özelleştir + Vous pouvez définir ici vos propres associations noms/valeurs pour que le cartouche en tienne compte. Exemple : associer le nom "volta" et la valeur "1745" remplacera %{volta} par 1745 dans le cartouche. Burada, antete işlemek için kendi ad / değer ilişkilerinizi tanımlayabilirsiniz. örnek: @@ -13938,7 +18552,7 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol Par défaut, les variables suivantes sont disponibles :<ul><li>%{author} : auteur du folio</li><li>%{date} : date du folio</li><li>%{title} : titre du folio</li><li>%{filename} : nom de fichier du projet</li><li>%{plant} : nom de l'installation (=) dans laquelle se trouve le folio</li><li>%{locmach} : nom de la localisation (+) dans laquelle se trouve le folio</li><li>%{indexrev} : indice de révision du folio</li><li>%{version} : version du logiciel</li><li>%{folio} : numéro du folio</li><li>%{folio-id} : position du folio dans le projet</li><li>%{folio-total} : nombre total de folios dans le projet</li><li>%{previous-folio-num} : numéro du folio précédent</li><li>%{next-folio-num} : numéro du folio suivant</li><li>%{projecttitle} : titre du projet</li><li>%{projectpath} : chemin du projet</li><li>%{projectfilename} : nom du fichier</li><li>%{saveddate} : date d'enregistrement du fichier format local</li><li>%{saveddate-eu} : date d'enregistrement du fichier format dd-MM-yyyy</li><li>%{saveddate-us} : date d'enregistrement du fichier format yyyy-MM-dd</li><li>%{savedtime} : heure d'enregistrement du fichier</li><li>%{savedfilename} : nom du fichier enregistré</li><li>%{savedfilepath} : chemin du fichier enregistré</li></ul> - + Varsayılan olarak aşağıdaki değişkenler kullanılabilir:<ul><li>%{author} : sayfa yazarı</li><li>%{date} : sayfa tarihi</li><li>%{title} : sayfa başlığı</li><li>%{filename} : proje dosya adı</li><li>%{plant} : sayfanın bulunduğu kurulum adı (=)</li><li>%{locmach} : sayfanın bulunduğu konum adı (+)</li><li>%{indexrev} : sayfa revizyon indeksi</li><li>%{version} : yazılım sürümü</li><li>%{folio} : sayfa numarası</li><li>%{folio-id} : sayfanın projedeki konumu</li><li>%{folio-total} : projedeki toplam sayfa sayısı</li><li>%{previous-folio-num} : önceki sayfa numarası</li><li>%{next-folio-num} : sonraki sayfa numarası</li><li>%{projecttitle} : proje başlığı</li><li>%{projectpath} : proje yolu</li><li>%{projectfilename} : dosya adı</li><li>%{saveddate} : dosya kayıt tarihi yerel format</li><li>%{saveddate-eu} : dosya kayıt tarihi format dd-MM-yyyy</li><li>%{saveddate-us} : dosya kayıt tarihi format yyyy-MM-dd</li><li>%{savedtime} : dosya kayıt saati</li><li>%{savedfilename} : kaydedilen dosya adı</li><li>%{savedfilepath} : kaydedilen dosya yolu</li></ul> @@ -14283,52 +18897,52 @@ Maksimum uzunluk :%2px Impossible de lire la structure en mémoire du projet. - + Projenin bellek yapısı okunamıyor. Exporter le plan de câblage - + Kablolama planını export et Fichiers CSV (*.csv) - + CSV Dosyaları (*.csv) Impossible d'ouvrir le fichier pour l'écriture. - + Dosya yazmak için açılamıyor. Page Wiring list CSV header - + Sayfa Composant 1 Wiring list CSV header - + Bileşen 1 Borne 1 Wiring list CSV header - + Klemens 1 Composant 2 Wiring list CSV header - + Bileşen 2 Borne 2 Wiring list CSV header - + Klemens 2 @@ -14340,13 +18954,13 @@ Maksimum uzunluk :%2px Couleur du fil Wiring list CSV header - + Tel rengi Section du fil Wiring list CSV header - + Tel kesiti @@ -14357,98 +18971,115 @@ Maksimum uzunluk :%2px Export réussi - + Export başarılı Le plan de câblage a été exporté avec succès ! - + Kablolama planı başarıyla export edildi! XRefPropertiesWidget + Form Form + Type : Type : + Représentation: Gösterim: + Positionner : Yer : + XRef Vertical Offset: XRef Dikey Ofset: + 10px corresponds to 1 tile displacement 1 kare alanına 10 piksel karşılık gelir + Set Vertical Offset for the Cross References. 10px corresponds to 1 tile displacement. Çapraz Referanslar için Dikey Ofset Seti. 10px, 1 kare alanına karşılık gelir. + Default - Fit to XRef height Varsayılan - XRef yüksekliğine sığdır + XRef slave position Xref slave pozisyonu + Affiche&r en contacts Kontakla&rı görüntüle + Afficher en croix Çapraz görüntüle + Label des références croisées Çapraz referans etiketi + Maitre Master + %f-%l%c %f-%l%c + Esclave Bağımlı + (%f-%l%c) (%f-%l%c) + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14466,26 +19097,31 @@ Maksimum uzunluk :%2px + Option d'affichage en croix Çapraz ekran seçeneği + Afficher les contacts de puissance dans la croix Güç kontaklarını çapraz göster + Préfixe des contacts de puissance : Güç kontaklarının ön eki: + Préfixe des contacts temporisés : Zamanlı kontakların öneki : + Préfixe des contacts inverseurs : İnvertör kontaklarının öneki : @@ -14532,7 +19168,7 @@ Maksimum uzunluk :%2px Right - + Sağ @@ -14544,11 +19180,13 @@ Maksimum uzunluk :%2px diagramselection + Form Form + TextLabel MetinEtiketi @@ -14588,17 +19226,25 @@ Maksimum uzunluk :%2px Tümünü seç + + main + + + Enter a password for the test + Test için bir parola girin + + projectDataBase Exporter la base de données interne du projet - + Projenin dahili veritabanını export et sans_nom - + isimsiz @@ -14712,53 +19358,80 @@ Maksimum uzunluk :%2px replaceAdvancedDialog + Rechercher/Remplacer avancé Gelişmiş Bul / Değiştir + par : ile : + Remplacer : Değiştir : + Qui : Neyi : + Texte ou expression régulière Metin veya normal ifade + Folio Sayfa + Élément Öğe + Conducteur İletken + Texte indépendant Bağımsız Metin + Quoi : Ne ile: + + testcontext + + + + test string + test dizesi + + + + + test plural %n + + + + + From 8c557a7f2946c5946660cdb87caa6c841e7abf7a Mon Sep 17 00:00:00 2001 From: Kellermorph Date: Mon, 18 May 2026 21:31:11 +0200 Subject: [PATCH 57/82] follow up: wiring list --- sources/wiringlistexport.cpp | 276 ++++++++++++++++++++--------------- sources/wiringlistexport.h | 12 +- 2 files changed, 163 insertions(+), 125 deletions(-) diff --git a/sources/wiringlistexport.cpp b/sources/wiringlistexport.cpp index 48f53866d..f84538887 100644 --- a/sources/wiringlistexport.cpp +++ b/sources/wiringlistexport.cpp @@ -5,9 +5,7 @@ #include #include #include -#include -#include -#include +#include WiringListExport::WiringListExport(QETProject *project, QWidget *parent) : QObject(parent), @@ -45,8 +43,27 @@ QDomElement WiringListExport::climbToDiagram(QDomNode node) const QMap WiringListExport::collectElementsInfo(const QDomElement &root) const { QMap infoMap; - QDomNodeList elements = root.elementsByTagName("element"); + QSet placeholderTypes; + QDomElement collection = root.firstChildElement("collection"); + if (!collection.isNull()) { + QDomNodeList defs = collection.elementsByTagName("definition"); + for (int i = 0; i < defs.size(); ++i) { + QDomElement def = defs.at(i).toElement(); + QString ltype = def.attribute("link_type"); + if (ltype == "next_report" || ltype == "previous_report") { + QDomElement parentEl = def.parentNode().toElement(); + if (parentEl.tagName().toLower() == "element") { + QString name = parentEl.attribute("name"); + if (!name.isEmpty()) { + placeholderTypes.insert(name); + } + } + } + } + } + + QDomNodeList elements = root.elementsByTagName("element"); for (int i = 0; i < elements.size(); ++i) { QDomElement el = elements.at(i).toElement(); QString uuid = normalizeUuid(el.attribute("uuid", el.attribute("id", ""))); @@ -75,13 +92,16 @@ QMap WiringListExport::collectElementsInfo(const QDomEleme } } - QString typeVal = el.attribute("type").toLower(); - if (typeVal.contains("naechste") || typeVal.contains("vorherige") || - typeVal.contains("next") || typeVal.contains("previous")) { - info.isPlaceholder = true; + QString typeVal = el.attribute("type"); + info.isPlaceholder = false; + for (const QString &ptype : placeholderTypes) { + if (typeVal.endsWith(ptype)) { + info.isPlaceholder = true; + break; } + } - infoMap.insert(uuid, info); + infoMap.insert(uuid, info); } return infoMap; } @@ -102,7 +122,15 @@ QList WiringListExport::collectConductors(const QDomElement &root data.el2_uuid = normalizeUuid(cond.attribute("element2", cond.attribute("element2id", ""))); data.element1_label = cond.attribute("element1_label"); + if (data.element1_label.isEmpty()) { + data.element1_label = cond.attribute("element1_linked"); + } + data.element2_label = cond.attribute("element2_label"); + if (data.element2_label.isEmpty()) { + data.element2_label = cond.attribute("element2_linked"); + } + data.terminalname1 = cond.attribute("terminalname1"); data.terminalname2 = cond.attribute("terminalname2"); data.tension_protocol = cond.attribute("tension_protocol"); @@ -119,101 +147,6 @@ QList WiringListExport::collectConductors(const QDomElement &root return conductors; } -void WiringListExport::resolveEndpoints(QList &conductors, const QMap &elementsInfo) const -{ - QRegularExpression numericLabelRe("^\\d+(\\.\\d+)?$"); - - QMap> el_to_cons; - for (const ConductorData &c : conductors) { - if (!c.el1_uuid.isEmpty()) el_to_cons[c.el1_uuid].append(c); - if (!c.el2_uuid.isEmpty()) el_to_cons[c.el2_uuid].append(c); - } - - for (int i = 0; i < conductors.size(); ++i) { - ConductorData &c = conductors[i]; - - auto resolveSide = [&](const QString &startUuid, QString &outLabel, QString &outTerminal) { - if (startUuid.isEmpty() || !elementsInfo.contains(startUuid)) return; - - const ElementInfo &startInfo = elementsInfo[startUuid]; - if (!startInfo.links.isEmpty() || startInfo.isPlaceholder) { - QQueue q; - QSet visited; - q.enqueue(startUuid); - visited.insert(startUuid); - - int depth = 0; - while (!q.isEmpty() && depth < 3) { - int levelSize = q.size(); - for (int k = 0; k < levelSize; ++k) { - QString curr = q.dequeue(); - - if (elementsInfo.contains(curr)) { - const ElementInfo &currInfo = elementsInfo[curr]; - - if (!currInfo.isPlaceholder && !currInfo.label.isEmpty() && !numericLabelRe.match(currInfo.label).hasMatch()) { - outLabel = currInfo.label; - return; - } - - for (const QString &lnk : currInfo.links) { - if (!visited.contains(lnk)) { - visited.insert(lnk); - q.enqueue(lnk); - } - } - } - - for (const ConductorData &cond : el_to_cons.value(curr)) { - if (cond.index == c.index) continue; - - QString other; - QString terminalHint; - if (cond.el1_uuid == curr) { - other = cond.el2_uuid; - terminalHint = cond.terminalname2; - } else { - other = cond.el1_uuid; - terminalHint = cond.terminalname1; - } - - if (!other.isEmpty() && !visited.contains(other)) { - if (elementsInfo.contains(other)) { - const ElementInfo &oInfo = elementsInfo[other]; - if (!oInfo.isPlaceholder && !oInfo.label.isEmpty() && !numericLabelRe.match(oInfo.label).hasMatch()) { - outLabel = oInfo.label; - if (outTerminal.isEmpty()) outTerminal = terminalHint; - return; - } - } - visited.insert(other); - q.enqueue(other); - } - } - } - depth++; - } - } else { - if (outLabel.isEmpty()) { - outLabel = startInfo.label.isEmpty() ? startInfo.name : startInfo.label; - } - } - }; - - bool p1 = elementsInfo.value(c.el1_uuid).isPlaceholder; - bool p2 = elementsInfo.value(c.el2_uuid).isPlaceholder; - - if (c.element1_label.isEmpty() || p1) { - if (p1) c.element1_label = ""; - resolveSide(c.el1_uuid, c.element1_label, c.terminalname1); - } - if (c.element2_label.isEmpty() || p2) { - if (p2) c.element2_label = ""; - resolveSide(c.el2_uuid, c.element2_label, c.terminalname2); - } - } -} - void WiringListExport::toCsv() { if (!m_project) return; @@ -243,25 +176,140 @@ void WiringListExport::toCsv() QMap elementsInfo = collectElementsInfo(doc.documentElement()); QList conductors = collectConductors(doc.documentElement()); - resolveEndpoints(conductors, elementsInfo); - QList uniqueConductors; - QSet seenConnections; + QMap partialWires; - for (const ConductorData &c : conductors) { - if (c.element1_label.isEmpty() && c.element2_label.isEmpty()) continue; + auto normalizePartial = [](ConductorData c, const QString &ph_uuid) { + if (c.el1_uuid == ph_uuid) { + std::swap(c.el1_uuid, c.el2_uuid); + std::swap(c.element1_label, c.element2_label); + std::swap(c.terminalname1, c.terminalname2); + } + return c; + }; - QString sideA = c.element1_label + ":" + c.terminalname1; - QString sideB = c.element2_label + ":" + c.terminalname2; + auto mergeField = [](const QString &a, const QString &b) { + QString at = a.trimmed(); + QString bt = b.trimmed(); + if (at.isEmpty()) return bt; + if (bt.isEmpty()) return at; + if (at == bt) return at; + return at + ", " + bt; + }; - QString key = (sideA < sideB) ? (sideA + "||" + sideB) : (sideB + "||" + sideA); + for (int i = 0; i < conductors.size(); ++i) { + ConductorData c = conductors[i]; - if (!seenConnections.contains(key)) { - seenConnections.insert(key); + if (c.element1_label.isEmpty() && elementsInfo.contains(c.el1_uuid)) { + c.element1_label = elementsInfo[c.el1_uuid].label; + if (c.element1_label.isEmpty()) c.element1_label = elementsInfo[c.el1_uuid].name; + } + if (c.element2_label.isEmpty() && elementsInfo.contains(c.el2_uuid)) { + c.element2_label = elementsInfo[c.el2_uuid].label; + if (c.element2_label.isEmpty()) c.element2_label = elementsInfo[c.el2_uuid].name; + } + + bool el1_ph = elementsInfo.value(c.el1_uuid).isPlaceholder; + bool el2_ph = elementsInfo.value(c.el2_uuid).isPlaceholder; + + if (!el1_ph && !el2_ph) { uniqueConductors.append(c); + continue; + } + + if (el1_ph && el2_ph) { + uniqueConductors.append(c); + continue; + } + + QString ph_uuid = el1_ph ? c.el1_uuid : c.el2_uuid; + ConductorData normC = normalizePartial(c, ph_uuid); + + QString matching_ph_uuid; + if (!elementsInfo[ph_uuid].links.isEmpty()) { + matching_ph_uuid = elementsInfo[ph_uuid].links.first(); + } + + if (!matching_ph_uuid.isEmpty() && partialWires.contains(matching_ph_uuid)) { + ConductorData otherHalf = partialWires.take(matching_ph_uuid); + + ConductorData merged; + merged.folio = mergeField(otherHalf.folio, normC.folio); + + merged.el1_uuid = otherHalf.el1_uuid; + merged.element1_label = otherHalf.element1_label; + merged.terminalname1 = otherHalf.terminalname1; + + merged.el2_uuid = normC.el1_uuid; + merged.element2_label = normC.element1_label; + merged.terminalname2 = normC.terminalname1; + + merged.tension_protocol = mergeField(otherHalf.tension_protocol, normC.tension_protocol); + merged.conductor_color = mergeField(otherHalf.conductor_color, normC.conductor_color); + merged.conductor_section = mergeField(otherHalf.conductor_section, normC.conductor_section); + merged.function = mergeField(otherHalf.function, normC.function); + + uniqueConductors.append(merged); + } else { + partialWires.insert(ph_uuid, normC); } } + for (const ConductorData &leftover : partialWires.values()) { + uniqueConductors.append(leftover); + } + + for (ConductorData &c : uniqueConductors) { + if (!c.element2_label.isEmpty() && (c.element1_label.isEmpty() || c.element2_label.toLower() < c.element1_label.toLower())) { + std::swap(c.element1_label, c.element2_label); + std::swap(c.terminalname1, c.terminalname2); + std::swap(c.el1_uuid, c.el2_uuid); + } + } + + std::sort(uniqueConductors.begin(), uniqueConductors.end(), [](const ConductorData &a, const ConductorData &b) { + QStringList partsA = a.folio.split(','); + QStringList partsB = b.folio.split(','); + int minLen = std::min(partsA.size(), partsB.size()); + int folioCmp = 0; + + for (int i = 0; i < minLen; ++i) { + bool okA, okB; + int numA = partsA[i].trimmed().toInt(&okA); + int numB = partsB[i].trimmed().toInt(&okB); + + if (okA && okB) { + if (numA != numB) { + folioCmp = (numA < numB) ? -1 : 1; + break; + } + } else { + int strCmp = partsA[i].trimmed().compare(partsB[i].trimmed(), Qt::CaseInsensitive); + if (strCmp != 0) { + folioCmp = strCmp; + break; + } + } + } + + if (folioCmp == 0 && partsA.size() != partsB.size()) { + folioCmp = (partsA.size() < partsB.size()) ? -1 : 1; + } + + if (folioCmp != 0) return folioCmp < 0; + + int el1Cmp = a.element1_label.toLower().compare(b.element1_label.toLower()); + if (el1Cmp != 0) return el1Cmp < 0; + + int el2Cmp = a.element2_label.toLower().compare(b.element2_label.toLower()); + if (el2Cmp != 0) return el2Cmp < 0; + + int term1Cmp = a.terminalname1.compare(b.terminalname1); + if (term1Cmp != 0) return term1Cmp < 0; + + return a.terminalname2 < b.terminalname2; + }); + QTextStream out(&file); out << tr("Page", "Wiring list CSV header") << ";" << tr("Composant 1", "Wiring list CSV header") << ";" diff --git a/sources/wiringlistexport.h b/sources/wiringlistexport.h index e865c58e2..b2766f394 100644 --- a/sources/wiringlistexport.h +++ b/sources/wiringlistexport.h @@ -12,7 +12,6 @@ class QWidget; class QDomElement; class QDomNode; -// Internal data structures for parsing the XML graph struct ElementInfo { QString folio; QStringList links; @@ -34,18 +33,11 @@ struct ConductorData { QString conductor_section; QString function; QString folio; - - // Resolved endpoints - QString chosen_a_uuid; - QString chosen_a_label; - QString chosen_b_uuid; - QString chosen_b_label; }; /** * @brief The WiringListExport class - * Handles the export of the wiring list (Verdrahtungsplan) to a CSV file. - * Automatically resolves links and placeholders to find physical endpoints. + * Exports the wiring diagram from QElectroTech as a CSV file. */ class WiringListExport : public QObject { @@ -64,8 +56,6 @@ private: QMap collectElementsInfo(const QDomElement &root) const; QList collectConductors(const QDomElement &root) const; - - void resolveEndpoints(QList &conductors, const QMap &elementsInfo) const; }; #endif // WIRINGLISTEXPORT_H From fa334d34a4cc520b0ee4ba64fdb366a96c455bd9 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Wed, 20 May 2026 22:14:43 +0200 Subject: [PATCH 58/82] git submodule update --remote elements --- elements | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elements b/elements index 9fd938d36..f6a422ab0 160000 --- a/elements +++ b/elements @@ -1 +1 @@ -Subproject commit 9fd938d36c8ce93802c6cb492fd44c45708c9990 +Subproject commit f6a422ab00770e9b37128ad9cfc20d997b3804ea From eeaa059a773b266c73364936a0d60f75bba46060 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 21 May 2026 02:34:38 +0200 Subject: [PATCH 59/82] This PR improves the MSI installer by removing the `Lancer QET.bat` wrapper and handling everything natively in `QElectroTech.wxs`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **`build-aux/windows/QElectroTech.wxs`** - Desktop and Start Menu shortcuts now point directly to `bin\qelectrotech.exe` with all required arguments (`--common-elements-dir`, `--common-tbt-dir`, `--lang-dir`, `-style windowsvista`) — no `.bat` wrapper needed - Added a deferred `CustomAction` that runs after `InstallFiles` and recursively sets all files in `elements\` to read-only using an inline PowerShell command **`.github/workflows/windows-msi.yml`** - Replaced the step that created `Lancer QET.bat` with a step that removes it from the artifact before the WiX build, so it is not embedded in the MSI - The `.bat` file remains untouched in the ZIP portable build (managed by `windows-build.yml`) - No console window flashing when launching QElectroTech from the MSI shortcuts - The `elements\` directory is properly set to read-only after installation, as required - Cleaner MSI package — no `.bat` file shipped to end users installing via MSI --- .github/workflows/windows-msi.yml | 97 +++++++++--------------------- build-aux/windows/QElectroTech.wxs | 48 ++++++++++++--- 2 files changed, 67 insertions(+), 78 deletions(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 104789085..1b7761b2b 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -18,16 +18,19 @@ jobs: build-msi: name: Build MSI with WiX v7 runs-on: windows-latest + # Only runs if Windows Build succeeded (or triggered manually) if: > github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' + permissions: contents: write pages: write id-token: write steps: + # ---------------------------------------------------------------- # 1. Checkout (to retrieve QElectroTech.wxs and sources) # ---------------------------------------------------------------- @@ -38,16 +41,12 @@ jobs: # ---------------------------------------------------------------- # 2. Download the portable artifact from the main build - # Requires windows-build.yml to upload an artifact named - # "qelectrotech-windows-portable" (fixed name) # ---------------------------------------------------------------- - name: Download portable artifact uses: actions/download-artifact@v4 with: name: qelectrotech-windows-portable path: artifact\files - # workflow_run => use the triggering run's ID - # workflow_dispatch => use input run_id if provided, otherwise current run run-id: ${{ github.event.workflow_run.id || github.event.inputs.run_id || github.run_id }} github-token: ${{ secrets.GITHUB_TOKEN }} repository: ${{ github.repository }} @@ -59,12 +58,10 @@ jobs: id: version shell: pwsh run: | - # Version from qetversion.cpp (same logic as windows-build.yml) $src = Get-Content "sources\qetversion.cpp" -Raw -ErrorAction SilentlyContinue if ($src -match 'return QVersionNumber\{([^}]+)\}') { $ver = $Matches[1] -replace '\s','' -replace ',','.' } else { - # Fallback: CMakeLists.txt $cmake = Get-Content "CMakeLists.txt" -Raw if ($cmake -match 'project\s*\([^)]*VERSION\s+([\d]+\.[\d]+\.[\d]+)') { $ver = $Matches[1] @@ -72,42 +69,28 @@ jobs: $ver = "0.0.0" } } - - # Numeric MSI version: 4 digits required (e.g. 0.100.1.0) $verMsi = "$ver.0" - - # Short SHA for the display version $sha = git rev-parse --short HEAD 2>$null if (-not $sha) { $sha = "unknown" } - - # Cumulative revision number (same calculation as windows-build.yml) $count = git rev-list HEAD --count 2>$null $rev = [int]$count + 473 - $verDisplay = "${ver}-r${rev}-${sha}_x86_64-win64" - - echo "VERSION_MSI=$verMsi" >> $env:GITHUB_OUTPUT - echo "VERSION_DISPLAY=$verDisplay" >> $env:GITHUB_OUTPUT + echo "VERSION_MSI=$verMsi" >> $env:GITHUB_OUTPUT + echo "VERSION_DISPLAY=$verDisplay" >> $env:GITHUB_OUTPUT Write-Host "Version MSI : $verMsi" Write-Host "Version display : $verDisplay" # ---------------------------------------------------------------- # 4. Install WiX v7, accept EULA and install WixUI extension - # All done in one step: PATH is updated within the same step - # so wix is immediately available for eula and extension commands # ---------------------------------------------------------------- - name: Install WiX v7 shell: pwsh run: | dotnet tool install --global wix --version 7.0.0 - # Update PATH immediately for the rest of this step $toolsPath = [System.IO.Path]::Combine($env:USERPROFILE, '.dotnet', 'tools') $env:PATH = "$toolsPath;$env:PATH" - # Also export for subsequent steps echo $toolsPath >> $env:GITHUB_PATH - # Accept OSMF EULA (official CI/CD method: writes a sentinel file) wix eula accept wix7 - # Install WixUI extension wix extension add WixToolset.UI.wixext/7.0.0 Write-Host "WiX v7 installed, EULA accepted, UI extension added." @@ -120,8 +103,6 @@ jobs: $wxs = "build-aux\windows\QElectroTech.wxs" if (-not (Test-Path $wxs)) { Write-Error "WXS file not found: $wxs" - Write-Host "Contents of build-aux\windows\ :" - Get-ChildItem "build-aux\windows\" -ErrorAction SilentlyContinue exit 1 } Write-Host "WXS found: $wxs" @@ -136,10 +117,8 @@ jobs: Get-ChildItem -Path "artifact\files" -Depth 2 | Select-Object FullName | Format-Table -AutoSize - # Search for qelectrotech.exe in the artifact $exe = Get-ChildItem -Path "artifact\files" -Filter "qelectrotech.exe" -Recurse | Select-Object -First 1 if (-not $exe) { - # Also try QElectroTech.exe (capital Q) $exe = Get-ChildItem -Path "artifact\files" -Filter "QElectroTech.exe" -Recurse | Select-Object -First 1 } if (-not $exe) { @@ -147,69 +126,58 @@ jobs: exit 1 } Write-Host "Executable: $($exe.FullName) ($([math]::Round($exe.Length/1MB,1)) MB)" - - # FilesDir = folder containing bin\ $binDir = $exe.Directory.FullName $filesDir = Split-Path $binDir -Parent - echo "FILES_DIR=$filesDir" >> $env:GITHUB_ENV Write-Host "FILES_DIR: $filesDir" # ---------------------------------------------------------------- # 7. Convert LICENSE (GPL-2) to RTF for the WixUI licence screen - # RTF is the only format accepted by Windows Installer. - # The conversion wraps plain text lines in basic RTF markup. # ---------------------------------------------------------------- - name: Convert LICENSE to RTF shell: pwsh run: | - $licSrc = "LICENSE" - $licRtf = "$env:TEMP\License.rtf" - + $licSrc = "LICENSE" + $licRtf = "$env:TEMP\License.rtf" if (-not (Test-Path $licSrc)) { Write-Error "LICENSE file not found in repository root" exit 1 } - $lines = Get-Content $licSrc -Encoding UTF8 - - # RTF header — Courier New, 9pt, black $rtf = New-Object System.Text.StringBuilder [void]$rtf.AppendLine('{\rtf1\ansi\ansicpg1252\deff0') [void]$rtf.AppendLine('{\fonttbl{\f0\fmodern\fprq1\fcharset0 Courier New;}}') [void]$rtf.AppendLine('{\colortbl;\red0\green0\blue0;}') [void]$rtf.AppendLine('\f0\fs18\cf1') - foreach ($line in $lines) { - # Escape RTF special characters $escaped = $line ` -replace '\\', '\\\\' ` -replace '\{', '\{' ` -replace '\}', '\}' [void]$rtf.AppendLine("$escaped\par") } - [void]$rtf.AppendLine('}') - [System.IO.File]::WriteAllText($licRtf, $rtf.ToString(), [System.Text.Encoding]::ASCII) echo "LICENSE_RTF=$licRtf" >> $env:GITHUB_ENV Write-Host "License.rtf generated: $licRtf ($([math]::Round((Get-Item $licRtf).Length/1KB,1)) KB)" # ---------------------------------------------------------------- - # 8. Replace Lancer QET.bat with the MSI-specific version - # The portable version uses relative paths suited for the zip. - # The MSI version uses %~dp0 to resolve paths relative to - # the installation directory in Program Files. + # 8. Remove Lancer QET.bat from the artifact + # The MSI does not use the .bat: shortcuts point directly to + # qelectrotech.exe, and elements\ is set read-only via a + # CustomAction in QElectroTech.wxs. + # The .bat is kept as-is in the ZIP portable build. # ---------------------------------------------------------------- - - name: Replace Lancer QET.bat for MSI + - name: Remove Lancer QET.bat from artifact shell: pwsh run: | $bat = "$env:FILES_DIR\Lancer QET.bat" - $content = "@echo off`r`nstart `"`" `"%~dp0bin\qelectrotech.exe`" --common-elements-dir=`"%~dp0elements/`" --common-tbt-dir=`"%~dp0titleblocks/`" --lang-dir=`"%~dp0lang/`" -style windowsvista`r`n" - [System.IO.File]::WriteAllText($bat, $content, [System.Text.Encoding]::ASCII) - Write-Host "Lancer QET.bat replaced for MSI installation." - Write-Host "=== Content of new Lancer QET.bat ===" - Get-Content $bat + if (Test-Path $bat) { + Remove-Item $bat -Force + Write-Host "Lancer QET.bat removed from artifact (MSI uses direct exe shortcut)." + } else { + Write-Host "Lancer QET.bat not found in artifact (already absent)." + } # ---------------------------------------------------------------- # 9. Build the MSI @@ -227,11 +195,11 @@ jobs: New-Item -ItemType Directory -Force -Path "dist" | Out-Null Write-Host "=== wix build ===" - Write-Host " WXS : $wxs" - Write-Host " Version : $version" - Write-Host " FilesDir : $filesDir" - Write-Host " LicenseRtf : $licRtf" - Write-Host " Output : dist\$outputName" + Write-Host " WXS : $wxs" + Write-Host " Version : $version" + Write-Host " FilesDir : $filesDir" + Write-Host " LicenseRtf : $licRtf" + Write-Host " Output : dist\$outputName" wix build $wxs ` -arch x64 ` @@ -246,7 +214,6 @@ jobs: Write-Error "MSI not generated: dist\$outputName" exit 1 } - $size = [math]::Round((Get-Item "dist\$outputName").Length / 1MB, 1) Write-Host "MSI generated: dist\$outputName ($size MB) ✓" echo "MSI_NAME=$outputName" >> $env:GITHUB_ENV @@ -272,7 +239,7 @@ jobs: run: | gh release view nightly --repo "$REPO" --json assets \ --jq '.assets[] | select(.name | test("\\.msi$")) | .name' \ - | while read -r name; do + | while read -r name; do echo "Deleting old asset: $name" gh release delete-asset nightly "$name" --repo "$REPO" --yes done @@ -308,7 +275,6 @@ jobs: # ---------------------------------------------------------------- # 13. Generate and deploy the GitHub Pages download page - # Toutes les URLs sont connues ici (exe, zip, msi). # ---------------------------------------------------------------- - name: Checkout (for generate-page.py) uses: actions/checkout@v4 @@ -325,29 +291,22 @@ jobs: run: | set -euo pipefail REPO="${{ github.repository }}" - - # Fetch asset names from the nightly release (source of truth) ASSETS=$(gh release view nightly --repo "$REPO" --json assets --jq '.assets[].name') - - EXE_NAME=$(echo "$ASSETS" | grep '\.exe$' | head -1) - ZIP_NAME=$(echo "$ASSETS" | grep '\.zip$' | head -1) - MSI_NAME=$(echo "$ASSETS" | grep '\.msi$' | head -1 || echo "") - + EXE_NAME=$(echo "$ASSETS" | grep '\.exe$' | head -1) + ZIP_NAME=$(echo "$ASSETS" | grep '\.zip$' | head -1) + MSI_NAME=$(echo "$ASSETS" | grep '\.msi$' | head -1 || echo "") BASE="https://github.com/$REPO/releases/download/nightly" INSTALLER_URL="$BASE/$EXE_NAME" PORTABLE_URL="$BASE/$ZIP_NAME" MSI_URL="" [ -n "$MSI_NAME" ] && MSI_URL="$BASE/$MSI_NAME" - SHA="${{ github.event.workflow_run.head_sha || github.sha }}" SHORT="${SHA:0:7}" DATE=$(date -u '+%Y-%m-%d %H:%M UTC') RUN_URL="https://github.com/$REPO/actions/runs/${{ github.run_id }}" RUN_NUMBER="${{ github.run_number }}" - export DATE SHORT REPO SHA RUN_URL RUN_NUMBER export INSTALLER_URL PORTABLE_URL MSI_URL - python3 source/build-aux/generate-page.py - name: Add .nojekyll diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index 3ffc62269..29be0f2f8 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -37,20 +37,26 @@ + (Lancer QET.bat has been removed from the artifact before + this build — see windows-msi.yml step "Remove Lancer QET.bat") + ============================================================ --> + Point directly to qelectrotech.exe with all required arguments. + No .bat wrapper needed. + ============================================================ --> + + + + ============================================================ --> @@ -90,12 +99,33 @@ + ============================================================ --> + + + + + + + + NOT Installed AND NOT REMOVE + + + + ============================================================ --> @@ -110,9 +140,9 @@ - + - + From 9760288db6c18377aec0b7cf40bb83a87378a049 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 21 May 2026 02:55:28 +0200 Subject: [PATCH 60/82] fix(msi): correct CustomAction pattern for elements\ read-only - Use SetProperty + WixQuietExec two-step pattern to pass runtime INSTALLDIR to a deferred CustomAction (fixes WIX1077 and WIX0400) - Add WixToolset.Util.wixext/7.0.0 extension (required for WixQuietExec) - Fix condition syntax: collapse multi-line conditions to single line - Add -ext WixToolset.Util.wixext to wix build command in windows-msi.yml --- .github/workflows/windows-msi.yml | 2 ++ build-aux/windows/QElectroTech.wxs | 31 ++++++++++++++++++++---------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 1b7761b2b..d06fb257d 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -92,6 +92,7 @@ jobs: echo $toolsPath >> $env:GITHUB_PATH wix eula accept wix7 wix extension add WixToolset.UI.wixext/7.0.0 + wix extension add WixToolset.Util.wixext/7.0.0 Write-Host "WiX v7 installed, EULA accepted, UI extension added." # ---------------------------------------------------------------- @@ -208,6 +209,7 @@ jobs: -d "FilesDir=$filesDir" ` -d "LicenseRtf=$licRtf" ` -ext WixToolset.UI.wixext ` + -ext WixToolset.Util.wixext ` -o "dist\$outputName" if (-not (Test-Path "dist\$outputName")) { diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index 29be0f2f8..a14a73435 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -104,23 +104,34 @@ - + Pattern used: two-step SetProperty + Exec + 1. CA_ResolveElementsPath (immediate, SetProperty): + copies the runtime value of INSTALLDIR into the property + ELEMENTS_READONLY_CMD, building the full powershell command. + 2. CA_SetElementsReadOnly (deferred, Execute="deferred"): + runs the command stored in ELEMENTS_READONLY_CMD. + + This is the correct WiX v4/v7 pattern for passing a + directory path (resolved at runtime) to a deferred CA. + ============================================================ --> + + + + + - - NOT Installed AND NOT REMOVE - + NOT Installed AND NOT REMOVE + NOT Installed AND NOT REMOVE From fc948ad9632977076a84242b173d5ba6db22099c Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 21 May 2026 14:10:17 +0200 Subject: [PATCH 69/82] =?UTF-8?q?QElectroTech.wxs=20=E2=80=94=20add=20Prod?= =?UTF-8?q?uctCode=3D"$(var.ProductCode)"=20to=20=20+=20AllowSame?= =?UTF-8?q?VersionUpgrades=3D"yes"=20to=20=20windows-msi.yml?= =?UTF-8?q?=20=E2=80=94=20in=20the=20=E2=80=98Extract=20version=E2=80=99?= =?UTF-8?q?=20step,=20calculate=20a=20unique=20GUID=20based=20on=20the=20c?= =?UTF-8?q?ommit=E2=80=99s=20SHA,=20then=20pass=20-d=20=E2=80=98ProductCod?= =?UTF-8?q?e=3D$productGuid=E2=80=99=20to=20the=20WIX=20build=20This=20ens?= =?UTF-8?q?ures=20that=20each=20build=20will=20have=20a=20different=20Prod?= =?UTF-8?q?uctCode=20=E2=86=92=20MajorUpgrade=20will=20always=20be=20trigg?= =?UTF-8?q?ered?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/windows-msi.yml | 13 +++++++++++++ build-aux/windows/QElectroTech.wxs | 1 + 2 files changed, 14 insertions(+) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index cef22e7af..205043692 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -75,10 +75,20 @@ jobs: $count = git rev-list HEAD --count 2>$null $rev = [int]$count + 473 $verDisplay = "${ver}-r${rev}-${sha}_x86_64-win64" + # Generate a unique ProductCode GUID from the commit SHA + # This ensures MajorUpgrade always triggers, even for same-version builds + $fullSha = git rev-parse HEAD 2>$null + if (-not $fullSha) { $fullSha = [System.Guid]::NewGuid().ToString() } + $bytes = [System.Text.Encoding]::UTF8.GetBytes($fullSha) + $md5 = [System.Security.Cryptography.MD5]::Create().ComputeHash($bytes) + $productGuid = [System.Guid]::new($md5[0..15]).ToString().ToUpper() + echo "VERSION_MSI=$verMsi" >> $env:GITHUB_OUTPUT echo "VERSION_DISPLAY=$verDisplay" >> $env:GITHUB_OUTPUT + echo "PRODUCT_GUID=$productGuid" >> $env:GITHUB_OUTPUT Write-Host "Version MSI : $verMsi" Write-Host "Version display : $verDisplay" + Write-Host "Product GUID : $productGuid" # ---------------------------------------------------------------- # 4. Install WiX v7, accept EULA and install WixUI extension @@ -202,10 +212,13 @@ jobs: Write-Host " LicenseRtf : $licRtf" Write-Host " Output : dist\$outputName" + $productGuid = "${{ steps.version.outputs.PRODUCT_GUID }}" + wix build $wxs ` -arch x64 ` -d "Version=$version" ` -d "ProductVersion=$verDisplay" ` + -d "ProductCode=$productGuid" ` -d "FilesDir=$filesDir" ` -d "LicenseRtf=$licRtf" ` -ext WixToolset.UI.wixext ` diff --git a/build-aux/windows/QElectroTech.wxs b/build-aux/windows/QElectroTech.wxs index e2666bd93..f2e2bad63 100644 --- a/build-aux/windows/QElectroTech.wxs +++ b/build-aux/windows/QElectroTech.wxs @@ -16,6 +16,7 @@ Name="QElectroTech" Manufacturer="QElectroTech Team" Version="$(var.Version)" + ProductCode="$(var.ProductCode)" UpgradeCode="A1B2C3D4-E5F6-7890-ABCD-EF1234567890" Language="1033" Codepage="1252" From 027050c7e71c7755984a848ce364da6ce7a7dd48 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 21 May 2026 14:32:07 +0200 Subject: [PATCH 70/82] Update windows-msi.yml --- .github/workflows/windows-msi.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/windows-msi.yml b/.github/workflows/windows-msi.yml index 205043692..e82279a9c 100644 --- a/.github/workflows/windows-msi.yml +++ b/.github/workflows/windows-msi.yml @@ -81,7 +81,8 @@ jobs: if (-not $fullSha) { $fullSha = [System.Guid]::NewGuid().ToString() } $bytes = [System.Text.Encoding]::UTF8.GetBytes($fullSha) $md5 = [System.Security.Cryptography.MD5]::Create().ComputeHash($bytes) - $productGuid = [System.Guid]::new($md5[0..15]).ToString().ToUpper() + $guidBytes = [byte[]]$md5[0..15] + $productGuid = [System.Guid]::new($guidBytes).ToString().ToUpper() echo "VERSION_MSI=$verMsi" >> $env:GITHUB_OUTPUT echo "VERSION_DISPLAY=$verDisplay" >> $env:GITHUB_OUTPUT From 7426fedba3399f44795b61f03d37d086b0ce2636 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Thu, 21 May 2026 17:10:44 +0200 Subject: [PATCH 71/82] crossrefitem: display terminal names on contact symbols in Xref When a slave element has named terminals in its element definition (.elmt), the terminal names (e.g. 13/14 for NO, 11/12 for NC, 12/13/14 for SW) are now displayed on each side of the contact symbol in the cross-reference view. - NO/NC contacts: name[0] on the left, name[1] on the right - SW contacts: name[0] (NO) top-left, name[1] (common) top-right, name[2] (NC) bottom-left Terminal names are read from Terminal::name() which is populated from TerminalData::m_name during element parsing. If terminals are not named, nothing is displayed (fully backward compatible). Users are expected to name their own terminals in the element editor to avoid duplicating elements in the official collection. --- sources/qetgraphicsitem/crossrefitem.cpp | 55 ++++++++++++++++++++---- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/sources/qetgraphicsitem/crossrefitem.cpp b/sources/qetgraphicsitem/crossrefitem.cpp index bf03614ea..9e39ea545 100644 --- a/sources/qetgraphicsitem/crossrefitem.cpp +++ b/sources/qetgraphicsitem/crossrefitem.cpp @@ -25,6 +25,7 @@ #include "element.h" #include "elementtextitemgroup.h" #include "qgraphicsitemutility.h" +#include "terminal.h" //define the height of the header. static int header = 5; @@ -627,6 +628,16 @@ void CrossRefItem::drawAsContacts(QPainter &painter) QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt) { QString str = elementPositionText(elmt); + + // Collect terminal names from the element definition (.elmt) + // e.g. name="13" and name="14" on each terminal + QStringList terminal_names; + for (Terminal *t : elmt->terminals()) { + const QString tname = t->name(); + if (!tname.isEmpty()) + terminal_names << tname; + } + int offset = m_drawed_contacts*10; QRectF bounding_rect = QRectF(0, offset, 24, 10); @@ -643,15 +654,19 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt) painter.drawLine(0, offset+6, 8, offset+6); painter.drawLine(16, offset+6, 24, offset+6); - ///take example of this code for display the terminal text - /*QFont font = QETApp::diagramTextsFont(4); - font.setBold(true); - painter.setFont(font); - QRectF bt(0, offset, 24, 10); - int txt = 10 + m_drawed_contacts; - painter.drawText(bt, Qt::AlignLeft|Qt::AlignTop, QString::number(txt)); - painter.drawText(bt, Qt::AlignRight|Qt::AlignTop, QString::number(txt)); - painter.setFont(QETApp::diagramTextsFont(5));*/ + // Draw terminal names on each side of the contact symbol + // terminal_names[0] on the left, terminal_names[1] on the right + if (!terminal_names.isEmpty()) { + QFont font = QETApp::diagramTextsFont(4); + font.setBold(true); + painter.setFont(font); + QRectF bt(0, offset, 24, 10); + if (terminal_names.size() >= 1) + painter.drawText(bt, Qt::AlignLeft|Qt::AlignTop, terminal_names[0]); + if (terminal_names.size() >= 2) + painter.drawText(bt, Qt::AlignRight|Qt::AlignTop, terminal_names[1]); + painter.setFont(QETApp::diagramTextsFont(5)); + } //draw open contact if (flags &NO) { @@ -768,6 +783,28 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt) }; painter.drawPolyline(p2, 3); + // Draw terminal names for switch contact (3 terminals) + // terminal_names[0] = NO side (top left) + // terminal_names[1] = NC side (bottom left) + // terminal_names[2] = common side (right) + if (!terminal_names.isEmpty()) { + QFont font = QETApp::diagramTextsFont(4); + font.setBold(true); + painter.setFont(font); + // Sort order from parseTerminal (top->bottom, left->right): + // [0]=12 (NO, top-left), [1]=14 (common, top-center), [2]=13 (NC, bottom-center) + if (terminal_names.size() >= 1) + painter.drawText(QRectF(0, offset, 8, 8), + Qt::AlignLeft|Qt::AlignTop, terminal_names[0]); // 12 NO left + if (terminal_names.size() >= 2) + painter.drawText(QRectF(16, offset+4, 8, 6), + Qt::AlignRight|Qt::AlignTop, terminal_names[1]); // 14 common right + if (terminal_names.size() >= 3) + painter.drawText(QRectF(0, offset+9, 8, 6), + Qt::AlignLeft|Qt::AlignTop, terminal_names[2]); // 13 NC left-bottom + painter.setFont(QETApp::diagramTextsFont(5)); + } + //Draw the half ellipse off delay if (flags &Delay) { From f416c2a97eb30c0f154bb965578d5b4b0b8c59da Mon Sep 17 00:00:00 2001 From: Kellermorph Date: Thu, 21 May 2026 20:47:44 +0200 Subject: [PATCH 72/82] New element: Line definition --- lang/qet_de.ts | 704 +++++++++--------- sources/editor/ui/dynamictextfieldeditor.cpp | 5 +- .../ui/elementpropertieseditorwidget.cpp | 4 + sources/editor/ui/qetelementeditor.cpp | 72 +- sources/properties/elementdata.cpp | 24 +- sources/properties/elementdata.h | 3 +- .../dynamicelementtextitem.cpp | 44 +- sources/qetgraphicsitem/element.cpp | 33 + sources/qetgraphicsitem/element.h | 19 +- sources/ui/elementpropertieswidget.cpp | 3 + 10 files changed, 520 insertions(+), 391 deletions(-) diff --git a/lang/qet_de.ts b/lang/qet_de.ts index 42686df96..eb36ed652 100644 --- a/lang/qet_de.ts +++ b/lang/qet_de.ts @@ -1947,17 +1947,17 @@ Bemerkung: diese Optionen verhindern NICHT das automatische Nummerieren. - + Modifier la police d'un champ texte Schriftart eines Textfelds ändern - + Modifier la couleur d'un champ texte Farbe eines Textfelds ändern - + Modifier la conservation de l'angle Beibehaltung des Winkels ändern @@ -1982,7 +1982,7 @@ Bemerkung: diese Optionen verhindern NICHT das automatische Nummerieren.Quelle eines Texts ändern - + Modifier l'alignement d'un champ texte Ausrichtung eines Textfelds ändern @@ -2295,7 +2295,7 @@ Bemerkung: diese Optionen verhindern NICHT das automatische Nummerieren. - + Simple Einzelbauteil @@ -2330,93 +2330,98 @@ Bemerkung: diese Optionen verhindern NICHT das automatische Nummerieren.(Miniatur-)Ansicht - + + Définition de conducteur + Leitungsdefinition + + + Normalement ouvert Schliesser - + Normalement fermé Öffner - + Inverseur Wechsler - + Other Andere - + Puissance Leistung - + Temporisé travail anzugverzögert - + Temporisé repos abfallverzögert - + Temporisé travail & repos Anzug- und Abfallverzögert - + Bobine Spule - + Organe de protection Schutzeinrichtung - + Commutateur / bouton Druck-/Drehschalter - - + + Générique Generisch - + Fusible Sicherung - + Séctionnable Trennklemme - + Diode Diode - + Phase Phase - + Neutre Neutralleiter - + Terre Erde @@ -2424,101 +2429,101 @@ Bemerkung: diese Optionen verhindern NICHT das automatische Nummerieren. ElementPropertiesWidget - + Général Allgemein - + Élement Bauteil - + Nom : %1 Name: %1 - + Folio : %1 Seitennummer: %1 - + Type : %1 Typ: %1 - + Sous-type : %1 Subtyp: %1 - + Position : %1 Position: %1 - + Rotation : %1° Drehung: %1° - + Dimensions : %1*%2 Abmessungen: %1*%2 - + Bornes : %1 Anschlüsse: %1 - + Nombre maximum de contacts esclaves définis : %1 Maximale Anzahl definierter Slave-Kontakte: %1 - + Nombre de contacts esclaves utilisés : %1 Anzahl der verwendeten Slave-Kontakte: %1 - + Emplacement : %1 Dateipfad: %1 - + Retrouver dans le panel Bauteil in Sammlung suchen - + Éditer l'élément Bauteil bearbeiten @@ -3015,60 +3020,60 @@ Alle Bauteile und Unterordner von diesem Ordner werden ebenso gelöscht. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip Doppelklick zum Öffnen oder Schließen des Projekts - + Cartouches embarqués eingebettete Schriftfelder - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Doppelklick zum Öffnen oder Schließen dieser Sammlung - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Ziehen/Ablegen, um das Schriftfeld auf der Folie anzuwenden. - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Doppelklick zum Öffnen oder Schließen der Sammlung "QElectroTech-Schriftfelder" - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Diese Sammlung von Schriftfeldern kommt standardmäßig mit QElectroTech. Sie ist fester Bestandteil vom System und kann nicht verändert werden. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip Doppelklicken, um die Firmensammlung der Schriftfelder zu verkleinern oder zu erweitern. - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Dies ist die Firmensammlung von Schriftfeldern -- verwenden Sie sie, um die Schriftfelder Ihrer Firma zu erstellen, zu speichern und zu bearbeiten. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Doppelklick zum Öffnen oder Schließen Ihrer persönlichen Schriftfeld-Sammlung - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Dies ist Ihre persönliche Schriftfeld-Sammlung. Benutzen Sie sie, um Ihre eigenen Schriftfelder zu erstellen, ablegen und bearbeiten. @@ -3077,97 +3082,97 @@ Alle Bauteile und Unterordner von diesem Ordner werden ebenso gelöscht. ElementsPanelWidget - + Ouvrir le dossier correspondant Ordner öffnen - + Copier le chemin Pfad in Zwischenablage kopieren - + Basculer vers ce projet zu diesem Projekt wechseln - + Fermer ce projet Projekt schließen - + Propriétés du projet Projekteigenschaften - + Propriétés du folio Folieneigenschaften - + Ajouter un folio Neue Folie hinzufügen - + Supprimer ce folio Folie löschen - + Remonter ce folio Folie 1 Position nach oben verschieben - + Abaisser ce folio Folie 1 Position nach unten verschieben - + Remonter ce folio x10 Folie 10 Positionen nach oben verschieben - + Remonter ce folio x100 Folie 100 Positionen nach oben verschieben - + Remonter ce folio au debut Folie an den Anfang verschieben - + Abaisser ce folio x10 Folie 10 Positionen nach unten verschieben - + Abaisser ce folio x100 Folie 100 Positionen nach unten verschieben - + Filtrer Filter - + Nouveau modèle Neues Schriftfeld - + Éditer ce modèle Schriftfeld bearbeiten - + Supprimer ce modèle Schriftfeld löschen @@ -9841,88 +9846,93 @@ Voulez-vous enregistrer les modifications ? ohne Namen - + Supprimer le folio ? message box title Folie löschen? - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - Möchten Sie wirklich diese Folie vom Projekt löschen? Dies kann nicht rückgängig gemacht werden. + Möchten Sie wirklich diese Folie vom Projekt löschen? Dies kann nicht rückgängig gemacht werden. - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + Projet en lecture seule message box title Schreibgeschütztes Projekt - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Dieses projekt ist schreibgeschützt. Es ist nicht möglich es zu reinigen. - + Supprimer les modèles de cartouche inutilisés dans le projet Im Projekt unbenutzte Schriftfeld-Vorlagen löschen - + Supprimer les éléments inutilisés dans le projet Im Projekt nicht benutzte Bauteile löschen - + Supprimer les catégories vides Leere Kategorien löschen - + Nettoyer le projet window title Projekt bereinigen - + Ajouter un folio Neue Folie hinzufügen - + Revenir au debut du projet Zurück zum Anfang des Projekts - + Aller à la fin du projet Zum Projektende springen - + go one page left eine Seite nach links - + go one page right eine Seite nach rechts - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Dieses Projekt beinhaltet keine Folie - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Öffnen des Projekts...</b><br/>Folienreiter werden erstellt:</p> - + Projet window title for a project-less ProjectView Projekt @@ -10226,441 +10236,442 @@ Verfügbare Optionen: QElectroTech - + Annulations dock title Rückgängig Arbeitsschritte - + Aucune modification Keine Änderungen - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Klicken Sie auf eine Aktion, um die Bearbeitung rückgängig zu machen - + &Nouveau &Neu - + &Ouvrir &Öffnen - + &Fermer &Schließen - + &Enregistrer &Speichern - + Enregistrer sous Speichern unter - + E&xporter &Exportieren - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Diese Liste protokolliert alle auf der aktuellen Folie ausgeführten Änderungen. Die Auswahl eines Eintrags führt die Änderungen bis zu diesem Eintrag zurück. - + Imprimer Drucken - + &Quitter &Beenden - + Annuler Rückgängig - + Refaire Wiederholen - + Co&uper &Ausschneiden - + Cop&ier Kop&ieren - + C&oller E&infügen - + Propriétés du folio Folieneigenschaften - + Ajouter un folio Neue Folie hinzufügen - + + Supprimer le folio Folie löschen - + Ajouter une nomenclature Betriebsmittelverzeichnis einfügen - + Lancer le plugin de création de borniers Klemmenplan-Plugin starten - + Crée un nouveau projet status bar tip Erstellt ein neues Projekt - + Ouvre un projet existant status bar tip Öffnet ein existierendes Projekt - + Ferme le projet courant status bar tip Schliesst das aktuelle Projekt - + Enregistre le projet courant et tous ses folios status bar tip Speichert das aktuelle Projekt und alle seine Folien - + Enregistre le projet courant avec un autre nom de fichier status bar tip Speichert das aktuelle Projekt unter einem anderen Dateinamen - + Ajoute une colonne au folio status bar tip Fügt eine neue Spalte zur Folie hinzu - + Enlève une colonne au folio status bar tip Löscht eine Spalte der Folie - + Agrandit le folio en hauteur status bar tip Vergrössert die Höhe der Folie - + Rétrécit le folio en hauteur status bar tip Verkleinert die Höhe der Folie - + Grouper les textes sélectionnés Ausgewählte Texte gruppieren - + Enlève les éléments sélectionnés du folio status bar tip Entfernt die ausgewählten Bauteile von der Folie - + Tout sélectionner Alles auswählen - + Désélectionner tout Auswahl aufheben - + Inverser la sélection Auswahl umkehren - + Supprimer Löschen - + Pivoter Drehen - + Orienter les textes Texte drehen - + Retrouver dans le panel Bauteil in Sammlung suchen - + Réinitialiser les conducteurs Leiter zurücksetzen - + Ajouter un champ de texte Textfeld einfügen - + Éditer l'item sélectionné Auswahl bearbeiten - + Ajouter une colonne Spalte einfügen - + Ajouter une image Bild einfügen - + Enlever une colonne Spalte entfernen - + Propriétés du projet Projekteigenschaften - + Nettoyer le projet Projekt bereinigen - + Ajouter un sommaire Inhaltsverzeichnis einfügen - + Zoom avant Vergrößern - + Zoom arrière Verkleinern - + Zoom sur le contenu Auf Inhalt einpassen - + Zoom adapté Folie einpassen - + Pas de zoom Kein Zoom - + en utilisant des onglets mittels Reiter - + en utilisant des fenêtres mittels Fenster - + Mode Selection Auswahlmodus - + Mode Visualisation Ansichtmodus - + &Mosaïque &Kacheln - + &Cascade &Überlappende Fenster - + Projet suivant Nächstes Projekt - + Projet précédent Vorheriges Projekt - + Sélectionne tous les éléments du folio status bar tip Wählt alle Bauteile der Folie aus - + Désélectionne tous les éléments du folio status bar tip Wählt alle Bauteile der Folie ab - + Agrandit le folio status bar tip Vergrössert die Folie - + Rétrécit le folio status bar tip Verkleinert die Folie - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Passt die Ansicht auf den Inhalt der Folie an, unabhängig vom Folienrahmen - + Adapte le zoom exactement sur le cadre du folio status bar tip Passt die Ansicht genau auf den Folienrahmen an - + Ajouter un rectangle Rechteck einfügen - + Ajouter une ellipse Ellipse einfügen - + Ajouter une polyligne Polylinie einfügen - + Ferme l'application QElectroTech status bar tip schließt QElectroTech - + Annule l'action précédente status bar tip bricht die letzte Aktion ab - + Restaure l'action annulée status bar tip stellt die abgebrochene Aktion wieder her - + Transfère les éléments sélectionnés dans le presse-papier status bar tip verschiebt die Auswahl in die Zwischenablage - + Copie les éléments sélectionnés dans le presse-papier status bar tip kopiert die Auswahl in die Zwischenablage - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip kehrt die Auswahl um - + Pivote les éléments et textes sélectionnés status bar tip dreht die Auswahl - + Pivote les textes sélectionnés à un angle précis status bar tip dreht die ausgewählten Texte in einem bestimmten Winkel - + Retrouve l'élément sélectionné dans le panel status bar tip Sucht das Bauteil in der Sammlung - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip zeichnet die Leiter neu, ohne die Änderungen zu berücksichtigen - + Création automatique de conducteur(s) Tool tip of auto conductor Automatische Leiterverbindung aktivieren @@ -10672,428 +10683,443 @@ Verfügbare Optionen: Projektdaten - + Collections Bauteilsammlungen - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Wenn möglich, automatische Leiterverbindung benutzen - + Afficher la grille Raster anzeigen - + Affiche ou masque la grille des folios Zeige den Hintergrundsraster der Folien an - + Ajouter une ligne Add row Zeile einfügen - + Enlever une ligne Remove row Zeile entfernen - + Restaure le zoom par défaut status bar tip Standardansicht wiederherstellen - + Ajouter une ligne Draw line Linie einfügen - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip zeige die geöffneten Projekte in Fenstern an - + Présente les différents projets ouverts des onglets status bar tip zeige die geöffneten Projekte in Reitern an - + Permet de sélectionner les éléments status bar tip wählt Bauteile aus - + Dispose les fenêtres en mosaïque status bar tip ordnet die Fenster in Kacheln an - + Exporter en pdf Als PDF speichern - + Exporte un ou plusieurs folios du projet courant status bar tip Eine oder mehrere Folien des aktuellen Projekts exportieren - + Exporter au format CSV Als CSV-Datei exportieren - + Gestionnaire de borniers (DEV) Klemmleisten-Manager (DEV) - + Exporter la liste des noms de conducteurs Leiterbeschriftungen exportieren - + Exporter le plan de câblage Verdrahtungsplan erstellen - + Numérotation automatique des bornes Automatische Nummerierung der Klemmen - + Exporter la base de donnée interne du projet Interne Datenbank exportieren - + Dispose les fenêtres en cascade status bar tip ordnet die Fenster überlappend an - + Active le projet suivant status bar tip wechselt zum nächsten Projekt - + Active le projet précédent status bar tip wechselt zum vorherigen Projekt - + Ajouter un plan de bornes Klemmenplan hinzufügen - + Ajoute un champ de texte sur le folio actuel Fügt ein Textfeld auf die aktuelle Folie ein - + Ajoute une image sur le folio actuel Fügt ein Bild auf die aktuelle Folie ein - + Ajoute une ligne sur le folio actuel Fügt eine Linie auf die aktuelle Folie ein - + Ajoute un rectangle sur le folio actuel Fügt ein Rechteck auf die aktuelle Folie ein - + Ajoute une ellipse sur le folio actuel Fügt eine Ellipse auf die aktuelle Folie ein - + Ajoute une polyligne sur le folio actuel Fügt eine Polylinie auf die aktuelle Folie ein - + Ajoute un plan de bornier sur le folio actuel Klemmenplan auf aktueller Folie einfügen - + Chercher/remplacer Suchen/ersetzen - + Profondeur toolbar title Tiefe/Ebene - + &Fichier &Datei - + &Édition B&earbeiten - + &Projet &Projekt - + Afficha&ge &Anzeige - + Fe&nêtres Fe&nster - + &Récemment ouverts &Zuletzt geöffnet - + Affiche ou non la barre d'outils principale Zeigt oder versteckt die Hauptwerkzeugsleiste - + Affiche ou non la barre d'outils Affichage Zeigt oder versteckt die Anzeigeleiste - + Affiche ou non la barre d'outils Schéma Zeigt oder versteckt die Schaltplan-Werkzeugsleiste - + Affiche ou non le panel d'appareils Zeigt oder versteckt die Bauteilsammlung - + Affiche ou non la liste des modifications Zeigt oder versteckt die Änderungsliste - + Afficher les projets Projekte anzeigen - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech-Projekte (*.qet);;XML-Dateien (*.xml);;Alle Dateien (*) - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Doppelclick, um die Form zu beenden / Rechtsklick, um den letzten Punkt zu entfernen - + Suppression de borne impossible Klemme kann nicht gelöscht werden - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer Die Löschung kann nicht durchgeführt werden, da die Auswahl eine oder mehrere Klemmen enthält, die überbrückt sind und/oder zu einer Klemme mit mehreren Ebenen gehören. Entfernen Sie die Überbrückung und/oder löschen Sie die Ebenen der betroffenen Klemmen, um sie löschen zu können - + Groupe Gruppe - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Ein Fehler ist beim Öffnen der Datei %1 aufgetreten. - + Active le projet « %1 » Aktiviert das Projekt "%1" - + Outils Werkzeuge - + Couleur de fond blanc/gris Tool tip of white/grey background button Hintergrundfarbe weiß/grau - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Schalte die Hintergrundfarbe der Folien in weiß oder grau um - + Exporte le folio courant dans un autre format status bar tip Aktuelle Folie in ein anderes Format exportieren - + Imprime un ou plusieurs folios du projet courant status bar tip Druckt eine oder mehrere Folien des aktuellen Projekts - + Place les éléments du presse-papier sur le folio status bar tip Inhalt der Zwischenablage auf Folie einfügen - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Bearbeitet die Folieneigenschaften (Maße, Schriftfeld-Daten, Leitereigenschaften...) - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Wechselt in das Ansichtsmodus, in dem die Folie nicht bearbeitet werden kann - + Affichage Anzeige - + Schéma Schaltplan - + Ajouter Einfügen - - + + Projet %1 enregistré dans le repertoire: %2. Projekt %1 gespeichert im Pfad: %2. - + Ouvrir un fichier Datei öffnen - - + + Impossible d'ouvrir le fichier message box title Öffnen der Datei nicht möglich - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Die zu öffnende Datei %1 existiert nicht. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Die zu öffnende Datei kann zum Lesen nicht zugegriffen werden. Prüfen Sie die Zugriffsrechte der Datei. - + Ouverture du projet en lecture seule message box title Projekt wird schreibgeschützt geöffnet - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Es sind keine Schreibrechte für das zu öffnende Projekt vorhanden. Es wird trotzdem schreibgeschützt geöffnet. - - + + Échec de l'ouverture du projet message box title Öffnen des Projekts gescheitert - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Die Datei %1 ist vermutlich keine QElectroTech-Projektdatei. Sie kann nicht geöffnet werden. - + Éditer l'élement edit element Bauteil bearbeiten - + Éditer le champ de texte edit text field Textfeld bearbeiten - + Éditer l'image edit image Bild bearbeiten - + Éditer le conducteur edit conductor Leitereigenschaften bearbeiten - + Éditer l'objet sélectionné edit selected item Auswahl bearbeiten - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Fehler @@ -11396,42 +11422,42 @@ Entfernen Sie die Überbrückung und/oder löschen Sie die Ebenen der betroffene Informationen über Autoren bearbeiten - + Ajouter une ligne Linie einfügen - + Ajouter un rectangle Rechteck einfügen - + Ajouter une ellipse Ellipse einfügen - + Ajouter un polygone Polygon einfügen - + Ajouter du texte Text einfügen - + Ajouter un arc de cercle Bogen einfügen - + Ajouter une borne Anschluss einfügen - + Annuler Rückgängig @@ -11447,29 +11473,29 @@ Entfernen Sie die Überbrückung und/oder löschen Sie die Ebenen der betroffene Zu viele Einzelteile, Liste nicht generiert: %1 - + Refaire Wiederholen - + Avertissement Warnung - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Das Importieren einer großen DXF-Datei kann einige Zeit in Anspruch nehmen. - + Parties toolbar title Teile - + Profondeur toolbar title Tiefe @@ -11487,7 +11513,7 @@ veuillez patienter durant l'import... Bauteileigenschaften bearbeiten - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Doppelclick, um die Form zu beenden / Rechtsclick, um den letzten Punkt zu entfernen @@ -11528,12 +11554,12 @@ veuillez patienter durant l'import... [schreibgeschützt] - + Aucune modification Keine Änderung - + Éditeur d'éléments status bar message Bauteileditor @@ -11548,50 +11574,50 @@ veuillez patienter durant l'import... - + Absence de borne warning title Anschluss nicht vorhanden - + Absence de borne Anschluss nicht vorhanden - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>Ohne Anschlüsse kann das Bauteil nicht mit anderen Bauteilen mittels Leiter verbunden werden. - + Ajouter un champ texte dynamique Dynamisches Textfeld einfügen - + Ajouter un texte d'élément non éditable dans les schémas Fügt einen Bauteiltext ein, der im Schaltplaneditor NICHT bearbeitet werden kann - + Ajouter un texte d'élément pouvant être édité dans les schémas Fügt einen Bauteiltext ein, der im Schaltplaneditor bearbeitet werden kann - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Fehler</b>: <br>Folienverweise dürfen nur einen Anschluss haben.<br><b>Lösung</b>: <br>Prüfen, dass das Bauteil nur einen Anschluss hat - + La vérification de cet élément a généré message box content Die Überprüfung dieses Bauteils generierte - + %n erreur(s) errors @@ -11600,23 +11626,23 @@ veuillez patienter durant l'import... - + et und - + <b>%1</b> : %2 warning title: warning description <b>%1</b>: %2 - + Erreurs Fehler - + Avertissements Warnungen @@ -11628,21 +11654,21 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier %1. message box content Öffnen der Datei %1 nicht möglich. - + Ce fichier n'est pas un document XML valide message box content Diese Datei ist kein gültiges XML-Dokument - + Erreur toolbar title Fehler @@ -11680,8 +11706,18 @@ veuillez patienter durant l'import... message box content Dieses Bauteil kann nicht gespeichert werden - + + + Nombre de bornes incorrect + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + %n avertissement(s) warnings @@ -11690,73 +11726,73 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier message box title Öffnen der Datei nicht möglich - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Die zu öffnende Datei %1 existiert nicht. - + Recharger l'élément dialog title Bauteil neu laden - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Das Bauteil wurde verändert. Beim neu Laden gehen die Änderungen verloren. Möchten Sie wirklich das Bauteil neu laden? - + Importer un élément à redimensionner Importiere Element zum Skalieren - + Éléments QElectroTech (*.elmt) QElectroTech-Bauteil (*.elmt) - - - + + + Echec de l'enregistrement Speichervorgang gescheitert - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Speichervorgang gescheitert\nDie erforderlichen Bedingungen wurden nicht erfüllt - + Enregistrer sous dialog title Speichern unter - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech-Bauteil (*.elmt) - + Enregistrer l'élément en cours ? dialog title Aktuelles Bauteil speichern? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Bauteil %1 speichern? @@ -11776,22 +11812,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title Bauteil nicht vorhanden. - + L'élément n'existe pas. message box content Bauteil existiert nicht. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Der gewählte virtuelle Pfad passt nicht zu einem Bauteil. @@ -12315,7 +12351,7 @@ Was möchten Sie tun? QObject - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Warnung: das Bauteil wurde mit einer neueren Version von QElectroTech gespeichert. @@ -13557,22 +13593,22 @@ Möchten Sie sie ersetzen? Leiter erstellen - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Installation des Plugins qet_tb_generator:<br>Besuche <br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Erfordert Python 3.5 oder höher.<br><B><U> Erstinstallation unter Windows</B></U><br>1. Falls erforderlich, installiere Python 3.5 oder höher<br> Besuche :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Aktualisierung unter Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>Der Benutzer kann in einem Terminal dieses Skript in folgendem Verzeichnis ausführen:<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> Installation des Plugins qet_tb_generator:<br>Besuche <br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> Erstinstallation unter macOSX</B></U><br>1. Falls erforderlich, installiere das Python 3.11-Bundle: <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2. Führe das Skript Profile.command aus<br>da das Programm einen festgelegten PATH zur Lokalisierung des Plugins qet-tb-generator verwendet.<br>Besuche :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>Anleitung</a><br>3. pip3 install qet_tb_generator<br><B><U> Aktualisierung unter macOS</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Installation des Plugins qet_tb_generator:<br>Besuche <br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Erfordert Python 3.5 oder höher.<br><br><B><U> Erstinstallation unter Linux</B></U><br>1. Überprüfe, ob pip3 installiert ist: pip3 --version<br>Falls nicht, installiere es mit: sudo apt-get install python3-pip<br>2. Installiere das Programm: sudo pip3 install qet_tb_generator<br>3. Starte das Programm: qet_tb_generator<br><br><B><U> Aktualisierung unter Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Fehler beim Ausführen vom Plugin qet_tb_generator @@ -13724,51 +13760,51 @@ Möchten Sie sie ersetzen? Klemme entfernen - - + + Générique generic terminal element type Generisch - + Fusible fuse terminal element type Sicherungsklemme - + Sectionable sectional terminal element type Trennklemme - + Diode diode terminal element type Diode - + Terre ground terminal element type Erde - - + + Générique generic terminal element function Generisch - + Phase phase terminal element function Aussenleiter - + Neutre neutral terminal element function Neutralleiter @@ -13799,7 +13835,7 @@ Möchten Sie sie ersetzen? Element öffnen - + Importer un fichier dxf DXF-Datei importieren @@ -18849,92 +18885,92 @@ Maximale Länge: %2px WiringListExport - - + + Erreur Fehler - + Impossible de lire la structure en mémoire du projet. Die Speicherstruktur des Projekts kann nicht gelesen werden. - + Exporter le plan de câblage Verdrahtungsplan erstellen - + Fichiers CSV (*.csv) CSV-Dateien (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. Die Datei kann nicht zum Schreiben geöffnet werden. - + Page Wiring list CSV header Seite - + Composant 1 Wiring list CSV header Bauteil 1 - + Borne 1 Wiring list CSV header Anschluss 1 - + Composant 2 Wiring list CSV header Bauteil 2 - + Borne 2 Wiring list CSV header Anschluss 2 - + Tension / Protocole Wiring list CSV header Spannung / Protokoll - + Couleur du fil Wiring list CSV header Leiterfarbe - + Section du fil Wiring list CSV header Leiterquerschnitt - + Fonction Wiring list CSV header Funktion - + Export réussi Export erfolgreich - + Le plan de câblage a été exporté avec succès ! Der Verdrahtungsplan wurde erfolgreich exportiert! diff --git a/sources/editor/ui/dynamictextfieldeditor.cpp b/sources/editor/ui/dynamictextfieldeditor.cpp index e432dd1f1..84f4db772 100644 --- a/sources/editor/ui/dynamictextfieldeditor.cpp +++ b/sources/editor/ui/dynamictextfieldeditor.cpp @@ -220,7 +220,7 @@ void DynamicTextFieldEditor::fillInfoComboBox() QStringList strl; auto type = elementEditor()->elementScene()->elementData().m_type; - if(type & ElementData::AllReport) { + if((type & ElementData::AllReport) || (type == ElementData::ConductorDefinition)) { strl = QETInformation::folioReportInfoKeys(); } else { @@ -365,7 +365,8 @@ void DynamicTextFieldEditor::on_m_text_from_cb_activated(int index) { void DynamicTextFieldEditor::on_m_composite_text_pb_clicked() { bool isReport = false; - if (elementEditor()->elementScene()->elementData().m_type & ElementData::AllReport) { + auto type = elementEditor()->elementScene()->elementData().m_type; + if ((type & ElementData::AllReport) || (type == ElementData::ConductorDefinition)) { isReport = true; } diff --git a/sources/editor/ui/elementpropertieseditorwidget.cpp b/sources/editor/ui/elementpropertieseditorwidget.cpp index 54bb447ba..397eadb64 100644 --- a/sources/editor/ui/elementpropertieseditorwidget.cpp +++ b/sources/editor/ui/elementpropertieseditorwidget.cpp @@ -133,6 +133,7 @@ void ElementPropertiesEditorWidget::setUpInterface() ui->m_base_type_cb->addItem (tr("Renvoi de folio précédent"), ElementData::PreviousReport); ui->m_base_type_cb->addItem (tr("Bornier"), ElementData::Terminal); ui->m_base_type_cb->addItem (tr("Vignette"), ElementData::Thumbnail); + ui->m_base_type_cb->addItem (tr("Définition de conducteur"), ElementData::ConductorDefinition); // Slave option ui->m_state_cb->addItem(tr("Normalement ouvert"), ElementData::NO); @@ -188,6 +189,9 @@ void ElementPropertiesEditorWidget::updateTree() case ElementData::PreviousReport: ui->m_tree->setDisabled(true); break; + case ElementData::ConductorDefinition: + ui->m_tree->setDisabled(true); + break; case ElementData::Master: ui->m_tree->setEnabled(true); break; diff --git a/sources/editor/ui/qetelementeditor.cpp b/sources/editor/ui/qetelementeditor.cpp index b8681b19b..45530dc98 100644 --- a/sources/editor/ui/qetelementeditor.cpp +++ b/sources/editor/ui/qetelementeditor.cpp @@ -736,40 +736,62 @@ bool QETElementEditor::checkElement() QList warnings; QList errors; - // Warning #1: Element haven't got terminal - // (except for report, because report must have one terminal and this checking is do below) + // Warning #1: Element haven't got terminal + // (except for report and conductor definition, because they must have one terminal and this checking is done below) if (!m_elmt_scene -> containsTerminals() && - !(m_elmt_scene->elementData().m_type & ElementData::AllReport)) { + !(m_elmt_scene->elementData().m_type & ElementData::AllReport) && + m_elmt_scene->elementData().m_type != ElementData::ConductorDefinition) { warnings << qMakePair( - tr("Absence de borne", "warning title"), - tr( - "
En l'absence de borne, l'élément ne pourra être" - " relié à d'autres éléments par l'intermédiaire de conducteurs.", - "warning description" - ) - ); - } + tr("Absence de borne", "warning title"), + tr( + "
En l'absence de borne, l'élément ne pourra être" + " relié à d'autres éléments par l'intermédiaire de conducteurs.", + "warning description" + ) + ); + } // Check folio report element - if (m_elmt_scene->elementData().m_type & ElementData::AllReport) - { - int terminal =0; + if (m_elmt_scene->elementData().m_type & ElementData::AllReport) + { + int terminal =0; - for(auto qgi : m_elmt_scene -> items()) { - if (qgraphicsitem_cast(qgi)) { - terminal ++; + for(auto qgi : m_elmt_scene -> items()) { + if (qgraphicsitem_cast(qgi)) { + terminal ++; + } + } + + //Error folio report must have only one terminal + if (terminal != 1) { + errors << qMakePair (tr("Absence de borne"), + tr("
Erreur :" + "
Les reports de folio doivent posséder une seul borne." + "
Solution :" + "
Verifier que l'élément ne possède qu'une seul borne")); } } - //Error folio report must have only one terminal - if (terminal != 1) { - errors << qMakePair (tr("Absence de borne"), - tr("
Erreur :" - "
Les reports de folio doivent posséder une seul borne." - "
Solution :" - "
Verifier que l'élément ne possède qu'une seul borne")); + // Check conductor definition element + if (m_elmt_scene->elementData().m_type == ElementData::ConductorDefinition) + { + int terminal =0; + + for(auto qgi : m_elmt_scene -> items()) { + if (qgraphicsitem_cast(qgi)) { + terminal ++; + } + } + + // Error: Conductor definition must have exactly one terminal + if (terminal != 1) { + errors << qMakePair (tr("Nombre de bornes incorrect"), + tr("
Erreur :" + "
Les définitions de conducteur ne peuvent posséder qu'une seule borne." + "
Solution :" + "
Vérifier que l'élément ne possède qu'une seule borne")); + } } - } if (!errors.count() && !warnings.count()) { return(true); diff --git a/sources/properties/elementdata.cpp b/sources/properties/elementdata.cpp index 6620afc65..7930ff1cc 100644 --- a/sources/properties/elementdata.cpp +++ b/sources/properties/elementdata.cpp @@ -45,14 +45,26 @@ QDomElement ElementData::toXml(QDomDocument &xml_element) const { bool ElementData::fromXml(const QDomElement &xml_element) { if(xml_element.tagName() != QLatin1String("definition") || - xml_element.attribute(QStringLiteral("type")) != QLatin1String("element")) { + xml_element.attribute(QStringLiteral("type")) != QLatin1String("element")) { return false; - } + } + + // --- HIER STARTET UNSER DEBUG-BLOCK --- + // Wir holen den String aus der XML und speichern ihn kurz zwischen + QString raw_type_string = xml_element.attribute(QStringLiteral("link_type"), QStringLiteral("simple")); + + qDebug() << "\n=== NEUES BAUTEIL WIRD GELADEN ==="; + qDebug() << "[XML Parser] Roher 'link_type' String aus der .elmt Datei:" << raw_type_string; + + // Jetzt übergeben wir ihn an deine Übersetzungs-Funktion + m_type = typeFromString(raw_type_string); + + qDebug() << "[XML Parser] Übersetzter ElementData-Typ:" << typeToString(m_type); + // --- HIER ENDET UNSER DEBUG-BLOCK --- - m_type = typeFromString(xml_element.attribute(QStringLiteral("link_type"), QStringLiteral("simple"))); kindInfoFromXml(xml_element); m_informations.fromXml(xml_element.firstChildElement(QStringLiteral("elementInformations")), - QStringLiteral("elementInformation")); + QStringLiteral("elementInformation")); m_names_list.fromXml(xml_element); auto xml_draw_info = xml_element.firstChildElement(QStringLiteral("informations")); @@ -323,6 +335,8 @@ QString ElementData::typeToString(ElementData::Type type) return QStringLiteral("terminal"); case ElementData::Thumbnail: return QStringLiteral("thumbnail"); + case ElementData::ConductorDefinition: + return QStringLiteral("conductor_definition"); default: qDebug() << "ElementData::typeToString : type don't exist" << "return failsafe value 'simple'"; @@ -346,6 +360,8 @@ ElementData::Type ElementData::typeFromString(const QString &string) return ElementData::Terminal; } else if (string == QLatin1String("thumbnail")) { return ElementData::Thumbnail; + } else if (string == QLatin1String("conductor_definition")) { + return ElementData::ConductorDefinition; } //Return simple if nothing match diff --git a/sources/properties/elementdata.h b/sources/properties/elementdata.h index 9596970b8..565253874 100644 --- a/sources/properties/elementdata.h +++ b/sources/properties/elementdata.h @@ -41,7 +41,8 @@ class ElementData : public PropertiesInterface Master = 8, Slave = 16, Terminal = 32, - Thumbnail = 64}; + Thumbnail = 64, + ConductorDefinition = 128}; Q_ENUM(Type) Q_DECLARE_FLAGS(Types, Type) diff --git a/sources/qetgraphicsitem/dynamicelementtextitem.cpp b/sources/qetgraphicsitem/dynamicelementtextitem.cpp index 7efff4811..4c23cb2a4 100644 --- a/sources/qetgraphicsitem/dynamicelementtextitem.cpp +++ b/sources/qetgraphicsitem/dynamicelementtextitem.cpp @@ -302,7 +302,8 @@ void DynamicElementTextItem::refreshLabelConnection() if ((m_text_from == ElementInfo && m_info_name == "label") || (m_text_from == CompositeText && m_composite_text.contains("%{label}"))) { - if(m_parent_element.data()->linkType() & Element::AllReport) + if((m_parent_element.data()->linkType() & Element::AllReport) || + m_parent_element.data()->linkType() == Element::ConductorDefinition) { updateReportFormulaConnection(); updateReportText(); @@ -418,7 +419,8 @@ void DynamicElementTextItem::setInfoName(const QString &info_name) updateXref(); } - if (m_parent_element && (m_parent_element.data()->linkType() & Element::AllReport)) //special treatment for report + if (m_parent_element && ((m_parent_element.data()->linkType() & Element::AllReport) || + m_parent_element.data()->linkType() == Element::ConductorDefinition)) //special treatment for report { if(old_info_name != info_name) { @@ -472,7 +474,8 @@ void DynamicElementTextItem::setCompositeText(const QString &text) updateXref(); } - if (m_parent_element && (m_parent_element.data()->linkType() & Element::AllReport)) //special treatment for report + if (m_parent_element && ((m_parent_element.data()->linkType() & Element::AllReport) || + m_parent_element.data()->linkType() == Element::ConductorDefinition)) //special treatment for report { /* * May be in some case the old and new composite text both have the var %{label}, @@ -726,28 +729,29 @@ QVariant DynamicElementTextItem::itemChange(QGraphicsItem::GraphicsItemChange ch if(!m_parent_element.data()->linkedElements().isEmpty()) masterChanged(); } - else if(m_parent_element.data()->linkType() & Element::AllReport) + else if((m_parent_element.data()->linkType() & Element::AllReport) || + m_parent_element.data()->linkType() == Element::ConductorDefinition) { - //Get the report formula, and add connection to keep up to date the formula. + //Get the report formula, and add connection to keep up to date the formula. if (m_parent_element.data()->diagram() && m_parent_element.data()->diagram()->project()) { m_report_formula = m_parent_element.data()->diagram()->project()->defaultReportProperties(); m_report_formula_con = connect(m_parent_element.data()->diagram()->project(), &QETProject::reportPropertiesChanged, this, &DynamicElementTextItem::reportFormulaChanged); } - - //Add connection to keep up to date the status of the element linked to the parent folio report of this text. + + //Add connection to keep up to date the status of the element linked to the parent folio report of this text. connect(m_parent_element.data(), &Element::linkedElementChanged, this, &DynamicElementTextItem::reportChanged); - //The parent is already linked, we call reportChanged for init the connection + //The parent is already linked, we call reportChanged for init the connection if(!m_parent_element.data()->linkedElements().isEmpty()) reportChanged(); - + if(m_parent_element.data()->terminals().size()) { - //Add connection to keep up date the conductors added or removed to the parent folio report element + //Add connection to keep up date the conductors added or removed to the parent folio report element connect(m_parent_element.data()->terminals().first(), &Terminal::conductorWasAdded, this, &DynamicElementTextItem::conductorWasAdded); connect(m_parent_element.data()->terminals().first(), &Terminal::conductorWasRemoved, this, &DynamicElementTextItem::conductorWasRemoved); } - //Get a conductor in the potential + //Get a conductor in the potential setPotentialConductor(); } else if(m_parent_element.data()->linkType() == Element::Master) @@ -1027,7 +1031,8 @@ void DynamicElementTextItem::clearFormulaConnection() void DynamicElementTextItem::updateReportFormulaConnection() { - if(!(m_parent_element.data()->linkType() & Element::AllReport)) + if(!(m_parent_element.data()->linkType() & Element::AllReport) && + m_parent_element.data()->linkType() != Element::ConductorDefinition) return; removeConnectionForReportFormula(m_report_formula); @@ -1041,7 +1046,8 @@ void DynamicElementTextItem::updateReportFormulaConnection() */ void DynamicElementTextItem::updateReportText() { - if(!(m_parent_element.data()->linkType() & Element::AllReport)) + if(!(m_parent_element.data()->linkType() & Element::AllReport) && + m_parent_element.data()->linkType() != Element::ConductorDefinition) return; if (m_text_from == ElementInfo && m_info_name == "label") @@ -1123,7 +1129,8 @@ void DynamicElementTextItem::conductorWasRemoved(Conductor *conductor) */ void DynamicElementTextItem::setPotentialConductor() { - if(parentElement() && (parentElement()->linkType() & Element::AllReport)) + if(parentElement() && ((parentElement()->linkType() & Element::AllReport) || (parentElement()->linkType() == Element::ConductorDefinition) || + parentElement()->linkType() == Element::ConductorDefinition)) { if(parentElement()->terminals().isEmpty()) return; @@ -1156,6 +1163,7 @@ void DynamicElementTextItem::setPotentialConductor() connect(m_watched_conductor.data(), &Conductor::propertiesChange, this, &DynamicElementTextItem::conductorPropertiesChanged); } } + conductorPropertiesChanged(); } else //This text haven't got a parent element, then ther isn't a conductor in the potential { @@ -1172,7 +1180,8 @@ void DynamicElementTextItem::setPotentialConductor() */ void DynamicElementTextItem::conductorPropertiesChanged() { - if(m_parent_element && (m_parent_element.data()->linkType() & Element::AllReport)) + if(m_parent_element && ((m_parent_element.data()->linkType() & Element::AllReport) || (m_parent_element.data()->linkType() == Element::ConductorDefinition) || + m_parent_element.data()->linkType() == Element::ConductorDefinition)) { if(m_text_from == ElementInfo) { @@ -1200,8 +1209,9 @@ void DynamicElementTextItem::conductorPropertiesChanged() QString DynamicElementTextItem::reportReplacedCompositeText() const { QString string; - - if(m_parent_element.data()->linkType() & Element::AllReport) + + if((m_parent_element.data()->linkType() & Element::AllReport) || (m_parent_element.data()->linkType() == Element::ConductorDefinition) || + m_parent_element.data()->linkType() == Element::ConductorDefinition) { string = m_composite_text; diff --git a/sources/qetgraphicsitem/element.cpp b/sources/qetgraphicsitem/element.cpp index 4204aed1b..408e89e4d 100644 --- a/sources/qetgraphicsitem/element.cpp +++ b/sources/qetgraphicsitem/element.cpp @@ -36,6 +36,7 @@ #include "../qetxml.h" #include "../qetversion.h" #include "qgraphicsitemutility.h" +#include #include #include @@ -431,6 +432,11 @@ bool Element::buildFromXml(const QDomElement &xml_def_elmt, int *state) m_data.fromXml(xml_def_elmt); setToolTip(name()); + QString my_type_str = xml_def_elmt.attribute(QStringLiteral("link_type"), QStringLiteral("simple")); + if (my_type_str == QLatin1String("conductor_definition")) { + m_link_type = Element::ConductorDefinition; + } + //load kind informations m_kind_informations.fromXml( xml_def_elmt.firstChildElement(QStringLiteral("kindInformations")), @@ -627,6 +633,9 @@ Terminal *Element::parseTerminal(const QDomElement &dom_element) Terminal *new_terminal = new Terminal(data, this); m_terminals << new_terminal; + connect(new_terminal, &Terminal::conductorWasAdded, this, &Element::updateConductorTexts); + connect(new_terminal, &Terminal::conductorWasRemoved, this, &Element::updateConductorTexts); + //Sort from top to bottom and left to right std::sort(m_terminals.begin(), m_terminals.end(), @@ -1288,6 +1297,8 @@ QString Element::linkTypeToString() const return QStringLiteral("Terminale"); case Thumbnail: return QStringLiteral("Thumbnail"); + case ConductorDefinition: + return QStringLiteral("ConductorDefinition"); default: return QStringLiteral("Unknown"); } @@ -1555,3 +1566,25 @@ ElementsLocation Element::location() const { return m_location; } + +/** + * @brief Element::updateConductorTexts + *Slot that is triggered when a cable is * + *connected to or disconnected from a terminal on this component. + */ +/** + * @brief Element::updateConductorTexts + */ +void Element::updateConductorTexts() +{ + if (m_link_type != Element::ConductorDefinition) { + return; + } + + for (DynamicElementTextItem *deti : m_dynamic_text_list) { + if (deti) { + deti->setPotentialConductor(); + deti->updateLabel(); + } + } +} diff --git a/sources/qetgraphicsitem/element.h b/sources/qetgraphicsitem/element.h index 16e821744..2c3ea5b6a 100644 --- a/sources/qetgraphicsitem/element.h +++ b/sources/qetgraphicsitem/element.h @@ -52,14 +52,15 @@ class Element : public QetGraphicsItem (master, slave, report ect...) */ enum kind { - Simple = 1, - NextReport = 2, - PreviousReport = 4, - AllReport = 6, - Master = 8, - Slave = 16, - Terminale = 32, - Thumbnail = 64}; + Simple = 1, + NextReport = 2, + PreviousReport = 4, + AllReport = 6, + Master = 8, + Slave = 16, + Terminale = 32, + Thumbnail = 64, + ConductorDefinition = 128}; Element(const ElementsLocation &location, QGraphicsItem * = nullptr, @@ -95,6 +96,8 @@ class Element : public QetGraphicsItem DynamicElementTextItem *text, ElementTextItemGroup *group); + public slots: + void updateConductorTexts(); public: QList terminals() const; diff --git a/sources/ui/elementpropertieswidget.cpp b/sources/ui/elementpropertieswidget.cpp index 5bb302163..10cc84ea7 100644 --- a/sources/ui/elementpropertieswidget.cpp +++ b/sources/ui/elementpropertieswidget.cpp @@ -308,6 +308,9 @@ void ElementPropertiesWidget::updateUi() case Element::Terminale: m_list_editor << new ElementInfoWidget(m_element, this); break; + case Element::ConductorDefinition: + break; + default: break; } From d69148916574b637327fce20ff57d88f31d59ff4 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Fri, 22 May 2026 10:16:24 +0200 Subject: [PATCH 73/82] Update translations files --- lang/qet_ar.ts | 707 +++---- lang/qet_ca.ts | 707 +++---- lang/qet_cs.ts | 707 +++---- lang/qet_da.ts | 708 +++---- lang/qet_de.qm | Bin 325838 -> 323721 bytes lang/qet_de.ts | 25 +- lang/qet_el.ts | 707 +++---- lang/qet_en.qm | Bin 282845 -> 284101 bytes lang/qet_en.ts | 707 +++---- lang/qet_es.ts | 707 +++---- lang/qet_fr.qm | Bin 184948 -> 185590 bytes lang/qet_fr.ts | 699 +++---- lang/qet_hr.ts | 699 +++---- lang/qet_hu.ts | 701 +++---- lang/qet_it.ts | 707 +++---- lang/qet_ja.ts | 701 +++---- lang/qet_ko.ts | 707 +++---- lang/qet_mn.ts | 699 +++---- lang/qet_nb.ts | 701 +++---- lang/qet_nl_BE.ts | 707 +++---- lang/qet_nl_NL.ts | 699 +++---- lang/qet_pl.ts | 707 +++---- lang/qet_pt.ts | 707 +++---- lang/qet_pt_BR.ts | 701 +++---- lang/qet_ro.ts | 707 +++---- lang/qet_rs.ts | 699 +++---- lang/qet_ru.ts | 707 +++---- lang/qet_sk.ts | 699 +++---- lang/qet_sl.ts | 699 +++---- lang/qet_sr.ts | 699 +++---- lang/qet_sv.ts | 701 +++---- lang/qet_tr.ts | 4891 ++------------------------------------------- lang/qet_uk.ts | 701 +++---- lang/qet_zh.ts | 701 +++---- 34 files changed, 10804 insertions(+), 14510 deletions(-) diff --git a/lang/qet_ar.ts b/lang/qet_ar.ts index f00bc230d..910766968 100644 --- a/lang/qet_ar.ts +++ b/lang/qet_ar.ts @@ -1681,7 +1681,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol تعديل محتوى حقل نصّي
- + Modifier la couleur d'un champ texte تعديل لون حقل نصّي @@ -1692,7 +1692,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte @@ -1712,12 +1712,12 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol تغيير مصدر نصّ, لنصّ - + Modifier l'alignement d'un champ texte تعديل مُحاذاة حقل نصّي - + Modifier la conservation de l'angle @@ -2022,7 +2022,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple مفردة @@ -2057,93 +2057,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + + Définition de conducteur + + + + Normalement ouvert عادة مفتوح - + Normalement fermé عادة مُغلق - + Inverseur عاكس - + Other - + Puissance قدرة - + Temporisé travail مُؤقت للتشغيل - + Temporisé repos مُؤقت للتوقف - + Temporisé travail & repos - + Bobine ملف - + Organe de protection عضو حماية - + Commutateur / bouton مُبدّل / زر - - + + Générique - + Fusible - + Séctionnable - + Diode - + Phase طور - + Neutre محايد - + Terre أرضي @@ -2151,90 +2156,90 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général عام - + Élement - + Nom : %1 إسم : %1 - + Folio : %1 صفحة %1 - + Type : %1 طراز : %1 - + Sous-type : %1 - + Position : %1 موضع : %1 - + Rotation : %1° دوران : %1 - + Dimensions : %1*%2 مقاس : %1*%2 - + Bornes : %1 طرف توصيل : : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 موضع : %1 - + Retrouver dans le panel إيجاد في اللوحة - + Éditer l'élément تحرير العنصر @@ -2708,60 +2713,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Cartouches embarqués إطارات تعريف مضمنة - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip انقر نقرا مزدوجا لإختزال أو لتطوير هذه المجموعة من إطارات التعريف المُضمّنة - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template اسحب واسقط نموذج إطار التعريف هذا في الصفحة لتطبيقه . - + Double-cliquez pour réduire ou développer ce projet Status tip انقر نقرا مزدوجا لإختزال أو تطوير هذا المشروع - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip انقر نقرا مزدوجا لإختزال أو تطوير هذا الصنف من إطارات تعريف QElectrotech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip هذا الصنف من إطارات التعريف مُزود من QElectrotech ز تمّ تنصيبه كمكونات نظام , لا يُمكن لكم شخصنته. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip انقر نقرا مزدوجا لإختزال أو لتطوير صنفكم الشخصي من إطارات التعريف - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip هذا صنفكم الشخصي من إطارات التعريف -- استعمله لإحداث , تخزين أو تحرير إطارات التعريف الخاصة بكم. @@ -2770,97 +2775,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant فتح المجلد المتناضر - + Copier le chemin نسخ المسار - + Basculer vers ce projet الإنتقال إلى هذا المشروع - + Fermer ce projet اغلق هذا المشروع - + Propriétés du projet حصائص المشروع - + Propriétés du folio خصائص الصفحة - + Ajouter un folio إضافة صفحة - + Supprimer ce folio حذف هذه الصفحة - + Remonter ce folio رفع هذه الصفحة - + Abaisser ce folio خفض هذه الصفحة - + Remonter ce folio x10 رفع هذه الصفحة X 10 - + Remonter ce folio x100 رفع هذه الصفحة X 100 - + Remonter ce folio au debut رفع هذه الصفحة إلى البداية - + Abaisser ce folio x10 خفض هذه الصفحة X 10 - + Abaisser ce folio x100 خفض هذه الصفحة X 100 - + Nouveau modèle نموذج جديد - + Éditer ce modèle تحرير هذا النموذج - + Supprimer ce modèle احذف هذا النموذج - + Filtrer @@ -5654,77 +5659,71 @@ Voulez-vous enregistrer les modifications ? مشروع QElectroTech (*.qet) - + Supprimer le folio ? message box title حذف الصفحة ؟ - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - هل أنت مُتأكّد من حذف هذه الصفحة من المشروع ؟ هذا الإجراء غير قابل للإسترجاع . - - - + Projet en lecture seule message box title مشروع للقراءة فقط - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content هذا المشروع للقراءة فقط. ولا يُمكن بالتالي مسحه . - + Supprimer les modèles de cartouche inutilisés dans le projet حذف نماذج اطارات التعريفالغير مستعملة في المشروع - + Supprimer les éléments inutilisés dans le projet احذف العناصر غير المستعملة في المشروع - + Supprimer les catégories vides حذف الأصناف الفارغة - + Nettoyer le projet window title تنقية المشروع - + Ajouter un folio إضافة صفحة - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram هذا المشروع لا يحتوي على أيّة صفحة @@ -5742,12 +5741,18 @@ Voulez-vous enregistrer les modifications ? لا وجود لمشروع معروض - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>جاري فتح المشروع ...</b><br/>إمشاء علامات التبويب :</p> - + Projet window title for a project-less ProjectView مشروع @@ -6043,49 +6048,49 @@ Options disponibles : QElectrotech - + Annulations dock title إلغاءات - + Aucune modification لا تغيير - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip انقر على فعل للرجوع إلى الخلف في تحرير مخططتكم - + &Nouveau &جديد - + &Ouvrir &فتح - + &Fermer &غلق - + &Enregistrer &حفظ - + Enregistrer sous حفظ باسم - + E&xporter &تصدير @@ -6096,819 +6101,835 @@ Options disponibles : مشاريع - + Collections مجموعات - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip هذه اللافتة تُعدّد مُختلف الاجراءات المتّخذة على الصفحة الحالية . الظغط على إجراء يسمح بالرجوع إلى حالة المُخطط مُباشرة قبل تنفيذه . - + Imprimer طباعة - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + &Quitter إ&نهاء - + Annuler إلغاء - + Refaire إعادة - + Co&uper &قص - + Cop&ier &نسخ - + C&oller &لصق - + Afficher la grille عرض الشبكة - + Affiche ou masque la grille des folios عرض أو إخفاء شبكة الصفخات - + Propriétés du folio خصائص الصفحة - + Ajouter un folio إضافة صفحة - + + Supprimer le folio حذف الصفحة - + Exporter au format CSV - + Ajouter une nomenclature - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers - + Exporter la liste des noms de conducteurs - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet - + Crée un nouveau projet status bar tip إحداث مشروع جديد - + Ouvre un projet existant status bar tip فتح مشروع قائم - + Ferme le projet courant status bar tip غلق المشروع الحالي - + Enregistre le projet courant et tous ses folios status bar tip حفظ المشروع الحالي بكلّ صفحاته - + Enregistre le projet courant avec un autre nom de fichier status bar tip حفظ المشروع الحالي باسم ملف آخر - + Ajouter une ligne Add row اضافة سطر - + Enlever une ligne Remove row إزالة صف - + Ajoute une colonne au folio status bar tip إضافة عمود للصفحة - + Enlève une colonne au folio status bar tip نزع عمود من الصفحة - + Agrandit le folio en hauteur status bar tip تكبير ارتفاع الصفحة - + Rétrécit le folio en hauteur status bar tip تقليص ارتفاع الصفحة - + Grouper les textes sélectionnés - + Enlève les éléments sélectionnés du folio status bar tip نزع العناصر المُحدّدة في الصفحة - + Tout sélectionner تحديد الكل - + Désélectionner tout إلغاء تحديد الكل - + Inverser la sélection اعكس التحديد - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel - + Ajoute une image sur le folio actuel - + Ajoute une ligne sur le folio actuel - + Ajoute un rectangle sur le folio actuel - + Ajoute une ellipse sur le folio actuel - + Ajoute une polyligne sur le folio actuel - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer - + Profondeur toolbar title العمق - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe مجموعة - + Supprimer حذف - + Pivoter دوران محوري - + Orienter les textes توجيه النصوص - + Retrouver dans le panel إيجاد في اللوحة - + Réinitialiser les conducteurs إعادة تهيئة الموصلات - + Ajouter un champ de texte إضافة حقل نصي - + Ajouter une colonne إضافة عمود - + Ajouter une image إضافة صورة - + Enlever une colonne إزالة عمود - + Propriétés du projet خصائص المشروع - + Nettoyer le projet تنظيف المشروع - + Ajouter un sommaire إضافة مُلخص - + Zoom avant تكبير - + Zoom arrière تصغير - + Zoom sur le contenu تكبير المحتوى - + Zoom adapté تهيئة تكبير/تصغير - + Pas de zoom بدون تكبير/تصغير - + en utilisant des onglets باستعمال الزوايا الطرفية - + en utilisant des fenêtres باستعمال النوافذ - + Mode Selection أسلوب التحديد - + Mode Visualisation أسلوب العرض - + &Mosaïque &فسيفساء - + &Cascade &تتالي - + Projet suivant المشروع التالي - + Projet précédent المشروع السابق - + Sélectionne tous les éléments du folio status bar tip تحديد كلّ عناصر الصفحة - + Désélectionne tous les éléments du folio status bar tip إلغاء تحديد كلّ عناصر الصفحة - + Agrandit le folio status bar tip تكبير الصفحة - + Rétrécit le folio status bar tip تقليص الصفحة - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre مُوائمة التكبير لعرض كلّ مُحتوى الصفحة بغضّ النظر عن الاطار - + Adapte le zoom exactement sur le cadre du folio status bar tip موائمة التكبير بالظبط على إطار الصفحة - + Ajouter un rectangle اضافة مستطيل - + Ajouter une ellipse اضافة اهليج - + Ajouter une polyligne إضافة مُتعدد أضلع - + Retrouve l'élément sélectionné dans le panel status bar tip إيجاد العنصر المُحدّد في اللوحة - + Exporte le folio courant dans un autre format status bar tip تصدير الصفحة الحالية في شكل آخر - + Imprime un ou plusieurs folios du projet courant status bar tip طباعة صفحة أو صفحات من المشروع الحالي - + Place les éléments du presse-papier sur le folio status bar tip وضع العناصر المخزنة بالحافظة على الصفحة - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip تحرير خاصيات الصفحة (مقاسات, معلومات إطار التعريف, خاصيات المُوصلات ...) - + Permet de visualiser le folio sans pouvoir le modifier status bar tip يسمح بعرض الصفحة دون القدرة على تغييرها - - + + Projet %1 enregistré dans le repertoire: %2. مشروع %1 محفوظ في الدليل: %2. - - + + Impossible d'ouvrir le fichier message box title إستحالة فتح الملف - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. يبدو أنّ الملف %1 الذي تُحاول فتحه غير موجود . - + Ouverture du projet en lecture seule message box title فتح المشروع للقراءة فقط - + Éditer l'item sélectionné تحرير العنصر المُحدّد - + Ferme l'application QElectroTech status bar tip غلق تطبيق QElectrotech - + Annule l'action précédente status bar tip إلغاء الفعل السابق - + Restaure l'action annulée status bar tip استرجاع الفعل الملغى - + Transfère les éléments sélectionnés dans le presse-papier status bar tip نقل العناصر المحددة داخل الحافظة - + Copie les éléments sélectionnés dans le presse-papier status bar tip نسخ التحديد ووضعه في الحافظة - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip الغاء تحديد العناصر المحددة و تحديد العناصر الغير محددة - + Pivote les éléments et textes sélectionnés status bar tip تدوير العناصر والنصوص المُحدّدة - + Pivote les textes sélectionnés à un angle précis status bar tip تدوير النصوص المُحدّدة بزاوية مُعيّنة - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip إعادة حساب مسارات الأسلاك الموصلة دون الأخذ في الإعتبار التغييرات - + Création automatique de conducteur(s) Tool tip of auto conductor إحداث آلي لموصلات - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor استخدم الاحداث الآلي للموصلات كلّما كان ذلك مُمكنا - + Couleur de fond blanc/gris Tool tip of white/grey background button لون الخلفية أبيض / رمادي - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button عرض لون الخلفية للصفحة أبيض أو رمادي - + Restaure le zoom par défaut status bar tip استرجاع تكبير / تصغير الإفتراضي - + Ajouter une ligne Draw line اضافة سطر - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip يُقدّم مختلف المشاريع المفتوحة في النوافذ الثانوية - + Présente les différents projets ouverts des onglets status bar tip تقديم مختلف المشاريع المفتوحة في علامات - + Permet de sélectionner les éléments status bar tip يسمح بتحديد العناصر - + Dispose les fenêtres en mosaïque status bar tip يُنظم النوافذ على هيئة فسيفساء - + Dispose les fenêtres en cascade status bar tip يُنظم النوافذ على التتالي - + Active le projet suivant status bar tip تفعيل المشروع التالي - + Active le projet précédent status bar tip تفعيل المشروع السابق - + &Fichier &ملف - + &Édition &تحرير - + &Projet &مشروع - + Afficha&ge عر&ض - + Fe&nêtres نوا&فذ - + &Récemment ouverts &مفتوح حديثا - + Affiche ou non la barre d'outils principale عرض أو لا لشريط الأدوات الرئيسي - + Affiche ou non la barre d'outils Affichage عرض أو لا لشريط أدوات العرض - + Affiche ou non la barre d'outils Schéma عرض أو لا شريط أدوات المخطط - + Affiche ou non le panel d'appareils عرض أو لا للوحة الأجهزة - + Affiche ou non la liste des modifications عرض أو لا لقائمة التحويرات - + Afficher les projets عرض المشاريع - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) مشاريع QElectroTech (*.qet);ملفات XML (*.xml);;كلّ الملفات (*) - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content - + Active le projet « %1 » تنشيط المشروع « %1 » - + Outils أدوات - + Affichage عرض - + Schéma مخطط - + Ajouter إضافة - + Ouvrir un fichier فتح ملف - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. يبدو أنّ الملف التي تُحاول فتحه لا يُمكن الوصول إليه للقراءة وبالتالي يستحيل فتحه. الرجاء التثبت من تراخيص الملف. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. يبدو أنّ المشروع التي تحاول فتحه, غير قابل للوصول إليه للكتابة. وبالتالي لايُمكن فتحه إلا للقراءة فقط. - - + + Échec de l'ouverture du projet message box title فشل فتح المشروع - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content يبدو أنّ الملف %1 ليس بملف مشروع QElectrotech. ;وبالتالي لا يمكن فتحه. - + Éditer l'élement edit element تحرير العنصر - + Éditer le champ de texte edit text field تحرير الحقل النصّي - + Éditer l'image edit image تحرير الصورة - + Éditer le conducteur edit conductor تحرير الموصل - + Éditer l'objet sélectionné edit selected item تحرير الكائن المُحدّد - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title خطأ @@ -7162,42 +7183,42 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s تحرير المعلومات عن المُؤلف - + Ajouter une ligne اضافة سطر - + Ajouter un rectangle اضافة مستطيل - + Ajouter une ellipse اضافة اهليج - + Ajouter un polygone اضافة متعدد الأضلع - + Ajouter du texte اضافة نص - + Ajouter un arc de cercle اضافة قوس دائري - + Ajouter une borne اضافة طرف توصيل - + Annuler الغاء @@ -7213,7 +7234,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + %n avertissement(s) warnings @@ -7226,44 +7247,44 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Refaire إعادة - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Ajouter un texte d'élément non éditable dans les schémas - + Ajouter un texte d'élément pouvant être édité dans les schémas - + Avertissement تنبيه - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... - + Parties toolbar title أجزاء - + Profondeur toolbar title العمق @@ -7311,12 +7332,12 @@ veuillez patienter durant l'import... [للقراءة فقط] - + Aucune modification لا تغيير - + Éditeur d'éléments status bar message محرر العناصر @@ -7335,40 +7356,40 @@ veuillez patienter durant l'import... - + Absence de borne warning title غياب طرف توصيل - + Absence de borne غياب طرف توصيل - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>في غياب نُقطة توصيل , لا يُمكن ربط العنصر بعناصر أخرى عبر موصلات . - + Ajouter un champ texte dynamique إضافة حقل نصّي ديناميكي - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>خطأ</b> :<br>لا تحمل إحالات الصفحة سوى نقطة توصيل واحدة.<br><b>حلّ</b> :<br>تأكد من أنّ العنصر لا يحمل سوى نقطة توصيل واحدة - + La vérification de cet élément a généré message box content التحقّق من هذا العنصر ولّد - + %n erreur(s) errors @@ -7381,23 +7402,23 @@ veuillez patienter durant l'import... - + et و - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 - + Erreurs أخطاء - + Avertissements تنبيهات @@ -7409,21 +7430,21 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier %1. message box content إستحالة فتح الملف %1. - + Ce fichier n'est pas un document XML valide message box content هذا الملف وثيقة XML غير سليمة - + Erreur toolbar title خطأ @@ -7462,74 +7483,84 @@ veuillez patienter durant l'import... لا يمكن حفظ العنصر - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Impossible d'ouvrir le fichier message box title إستحالة فتح الملف - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. يبدو أنّ الملف %1 الذي تُحاول فتحه غير موجود . - + Recharger l'élément dialog title إعادة تحميل العنصر - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content لقد قُمت بتعديلات على هذا العنصر. إذا قمت بإعادة تحميله فإنك ستفقد هذه التعديلات . هل ترغب فعلا في إعادة تحميل العنصر ؟ - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) عتاصر QElectrotech (*.elmt) - - - + + + Echec de l'enregistrement فشل الحفظ - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides فشل الحفظ. الشروط الطلوبة غير صالحة - + Enregistrer sous dialog title حفظ باسم - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file عتاصر QElectrotech (*.elmt) - + Enregistrer l'élément en cours ? dialog title حفظ العنصر الحالي ؟ - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name هل تريد حفظ العنصر %1 ؟ @@ -7549,22 +7580,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title لا وجود للعنصر. - + L'élément n'existe pas. message box content العنصر غير موجود. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content المسار الإفتراضي المختار لا يُطابق عنصر. @@ -8082,7 +8113,7 @@ Que désirez vous faire ? QObject - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. : تحذير حّفظ العنصر بإصدار لاحق من QElectrotech. @@ -9325,22 +9356,22 @@ Voulez-vous la remplacer ? - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin حدث خطأ أثناء تشغيل المكون الإضافي qet_tb_generator @@ -9453,51 +9484,51 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type أرضي - - + + Générique generic terminal element function - + Phase phase terminal element function طور - + Neutre neutral terminal element function محايد @@ -9522,7 +9553,7 @@ Voulez-vous la remplacer ? - + Importer un fichier dxf @@ -14265,92 +14296,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur خطأ - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header جهد / بروتوكول - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header وظيفة - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_ca.ts b/lang/qet_ca.ts index e2bcace12..d6a1410c4 100644 --- a/lang/qet_ca.ts +++ b/lang/qet_ca.ts @@ -1681,7 +1681,7 @@ Nota: Aquestes opcions NO permeten ni bloquegen les numeracions automàtiques, n - + Modifier la police d'un champ texte Canvia la font d'un camp de text @@ -1706,17 +1706,17 @@ Nota: Aquestes opcions NO permeten ni bloquegen les numeracions automàtiques, n Canvia la font del text d'un text - + Modifier l'alignement d'un champ texte Canvia l'alineació d'un camp de text - + Modifier la couleur d'un champ texte Canvia el color d'un camp de text - + Modifier la conservation de l'angle Canvia la conservació de l'angle @@ -2008,7 +2008,7 @@ Nota: Aquestes opcions NO permeten ni bloquegen les numeracions automàtiques, n - + Simple Unifilar @@ -2043,93 +2043,98 @@ Nota: Aquestes opcions NO permeten ni bloquegen les numeracions automàtiques, n Miniatura - + + Définition de conducteur + + + + Normalement ouvert Normalment obert - + Normalement fermé Normalment tancat - + Inverseur Inversor - + Other Altres - + Puissance Potència - + Temporisé travail Temporitzador a la connexió - + Temporisé repos Temporitzador a la desconnexió - + Temporisé travail & repos Temporitzador a la connexió i a la desconnexió - + Bobine Bobina - + Organe de protection Unitat de protecció - + Commutateur / bouton Commutador / botó - - + + Générique Genèric - + Fusible Fusible - + Séctionnable Seleccionable - + Diode Díode - + Phase Fase - + Neutre Neutre - + Terre Terra @@ -2137,99 +2142,99 @@ Nota: Aquestes opcions NO permeten ni bloquegen les numeracions automàtiques, n ElementPropertiesWidget - + Général General - + Élement Element - + Nom : %1 Nom : %1 - + Folio : %1 Full : %1 - + Type : %1 Tipus: %1 - + Sous-type : %1 Subtipus: %1 - + Position : %1 Posició : %1 - + Rotation : %1° Rotació : %1° - + Dimensions : %1*%2 Mida: %1*%2 - + Bornes : %1 Borns : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Ubicació: %1 - + Retrouver dans le panel Cerca al panel - + Éditer l'élément Modifica l'element @@ -2694,61 +2699,61 @@ S'eliminaran tots els elements i carpetes contingudes en aquesta carpeta. ElementsPanel - + Cartouches embarqués Caixetins importats - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Faci doble clic per reduir o expandir aquesta col·lecció importada de caixetins - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Arrossega i deixa anar aquest model de caixetí sobre el full per aplicar-lo. - + Double-cliquez pour réduire ou développer ce projet Status tip Fes doble clic per reduir o expandir aquest projecte - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Fes doble clic per reduir o expandir aquesta col·lecció de caixetins QElectroTech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip "Què és això?" Aquesta és la col·lecció de caixetins inclosa a QElectroTech. S'instal·la com a component del sistema i normalment no es pot personalitzar. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip Fes doble clic per reduir o ampliar la col·lecció de caixetins de l'empresa - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Aquesta és la col·lecció de caixetins de l'empresa: feu-la servir per crear, emmagatzemar i editar els vostres propis caixetins. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Feu doble clic per reduir o expandir la vostra col·lecció personal de caixetins - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip "Què és això?" @@ -2758,97 +2763,97 @@ S'eliminaran tots els elements i carpetes contingudes en aquesta carpeta. ElementsPanelWidget - + Ouvrir le dossier correspondant Obre la carpeta corresponent - + Copier le chemin Copia la ruta - + Basculer vers ce projet Trasllada cap a aquest projecte - + Fermer ce projet Tanca aquest projecte - + Propriétés du projet Propietats del projecte - + Propriétés du folio Propietats del full - + Ajouter un folio Afegeix un full - + Supprimer ce folio Suprimeix aquest full - + Remonter ce folio Avança la posició del full - + Abaisser ce folio Retrocedeix la posició del full - + Remonter ce folio x10 Avança el full 10 posicions - + Remonter ce folio x100 Avança el full 100 posicions - + Remonter ce folio au debut Avança la posició del full a l'inici del projecte - + Abaisser ce folio x10 Retrocedeix 10 posicions el full - + Abaisser ce folio x100 Retrocedeix 100 posicions el full - + Filtrer Filtre - + Nouveau modèle Model nou - + Éditer ce modèle Modifica aquest model - + Supprimer ce modèle Suprimeix aquest model @@ -5666,77 +5671,71 @@ Vol desar els canvis? Projecte QElectroTech (*.qet) - + Supprimer le folio ? message box title Suprimeix el full? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - Vols eliminar el full del projecte? El canvi és irreversible. - - - + Projet en lecture seule message box title Projecte només de lectura - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Aquest projecte és només de lectura. Per tant no pot ésser netejat. - + Supprimer les modèles de cartouche inutilisés dans le projet Elimina els models de caixetins que no es facin servir al projecte - + Supprimer les éléments inutilisés dans le projet Suprimeix els elements que no es facin servir al projecte - + Supprimer les catégories vides Suprimeix les categories buides - + Nettoyer le projet window title Neteja el projecte - + Ajouter un folio Afegeix un full - + Revenir au debut du projet Torna a l'inici del projecte - + Aller à la fin du projet Vés al final del projecte - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram El projecte no conté cap full @@ -5754,12 +5753,18 @@ Vol desar els canvis? cap projecte en pantalla - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Obrint el projecte actual...</b><br/>Creant pestanyes de fulls:</p> - + Projet window title for a project-less ProjectView Projecte @@ -6062,642 +6067,658 @@ Opcions disponibles: QElectroTech - + Annulations dock title Desfés - + Aucune modification Cap canvi - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Trieu una acció per retrocedir en l'edició de l'esquema - + &Nouveau &Nou - + &Ouvrir &Obre - + &Fermer &Tanca - + &Enregistrer &Desa - + Enregistrer sous Desa com a - + E&xporter E&xporta - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Aquest panell mostra les diferents accions realitzades en el full actual. Faci clic en una acció per tornar a l'estat del full just després de l'acció. - + Imprimer Imprimeix - + Exporter en pdf Exporta com a pdf - + Exporte un ou plusieurs folios du projet courant status bar tip Exporta un o més fulls del projecte actual - + &Quitter &Surt - + Annuler Desfés - + Refaire Refés - + Co&uper Re&talla - + Cop&ier Cop&ia - + C&oller En&ganxa - + Couleur de fond blanc/gris Tool tip of white/grey background button Color de fons blanc / gris - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Mostra el color de fons del full en blanc o gris - + Afficher la grille Mostra la quadrícula - + Affiche ou masque la grille des folios Mostra o oculta la quadrícula - + Propriétés du folio Propietats del full - + Ajouter un folio Afegeix un full - + + Supprimer le folio Suprimeix un full - + Exporter au format CSV Exporta en format CSV - + Ajouter une nomenclature Afegeix una nomenclatura - + Gestionnaire de borniers (DEV) Gestor de blocs de borns (DEV) - + Lancer le plugin de création de borniers Inicieu el connector de creació de blocs de borns - + Exporter la liste des noms de conducteurs Exporta la llista de noms de conductors - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet Exporta la base de dades interna del projecte - + Crée un nouveau projet status bar tip Crea un nou projecte - + Ouvre un projet existant status bar tip Obre un projecte existent - + Ferme le projet courant status bar tip Tanca el projecte actual - + Enregistre le projet courant et tous ses folios status bar tip Desa el projecte actual i tots els seus fulls - + Enregistre le projet courant avec un autre nom de fichier status bar tip Desa el projecte actual amb un altre nom de fitxer - + Ajouter une ligne Add row Afegeix una línia - + Enlever une ligne Remove row Suprimeix una línia - + Ajoute une colonne au folio status bar tip Afegeix una columna al full - + Enlève une colonne au folio status bar tip Suprimeix una columna al full - + Agrandit le folio en hauteur status bar tip Augmenta l'altura del full - + Rétrécit le folio en hauteur status bar tip Disminueix l'altura del full - + Grouper les textes sélectionnés Agrupa els textos seleccionats - + Enlève les éléments sélectionnés du folio status bar tip Suprimeix els elements seleccionats del full - + Tout sélectionner Selecciona-ho tot - + Désélectionner tout Desselecciona-ho tot - + Inverser la sélection Inverteix la selecció - + Ajouter un plan de bornes Afegeix un pla de borns - + Ajoute un champ de texte sur le folio actuel Afegeix un camp de text al full actual - + Ajoute une image sur le folio actuel Afegeix una imatge al full actual - + Ajoute une ligne sur le folio actuel Afegeix una fila al full actual - + Ajoute un rectangle sur le folio actuel Afegeix un rectangle al full actual - + Ajoute une ellipse sur le folio actuel Afegeix una el·lipse al full actual - + Ajoute une polyligne sur le folio actuel Afegeix un polígon al full actual - + Ajoute un plan de bornier sur le folio actuel Afegeix un pla de borns al full actual - + Chercher/remplacer Cerca i reemplaça - + Profondeur toolbar title Profunditat - + Supprimer Suprimeix - + Pivoter Gira - + Orienter les textes Orienta els textos - + Retrouver dans le panel Cerca al panell - + Réinitialiser les conducteurs Reinicia els conductors - + Ajouter un champ de texte Afegeix un camp de text - + Ajouter une colonne Afegeix una columna - + Ajouter une image Afegeix una imatge - + Enlever une colonne Suprimeix una columna - + Propriétés du projet Propietats del projecte - + Nettoyer le projet Neteja el projecte - + Ajouter un sommaire Afegeix un resum - + Zoom avant Apropa - + Zoom arrière Allunya - + Zoom sur le contenu Amplia el contingut - + Zoom adapté Zoom adaptat - + Pas de zoom Sense zoom - + en utilisant des onglets En pestanyes - + en utilisant des fenêtres En finestres - + Mode Selection Mode Selecció - + Mode Visualisation Mode Visualització - + &Mosaïque &Mosaic - + &Cascade &Cascada - + Projet suivant Projecte següent - + Projet précédent Projecte anterior - + Sélectionne tous les éléments du folio status bar tip Selecciona tots els elements del full - + Désélectionne tous les éléments du folio status bar tip Deselecciona tots els elements del full - + Agrandit le folio status bar tip Augmenta la mida del full - + Rétrécit le folio status bar tip Disminueix la mida del full - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Ajusta el zoom per mostrar tot el contingut del full independentment del marc - + Adapte le zoom exactement sur le cadre du folio status bar tip Ajusta el zoom exactament al marc del full - + Ajouter un rectangle Afegeix un rectangle - + Ajouter une ellipse Afegeix una el·lipse - + Ajouter une polyligne Afegeix un polígon - + Retrouve l'élément sélectionné dans le panel status bar tip Troba l'element seleccionat en el panell - + Exporte le folio courant dans un autre format status bar tip Exporta el full actual a un altre format - + Imprime un ou plusieurs folios du projet courant status bar tip Imprimeix un o més fulls del projecte actual - + Place les éléments du presse-papier sur le folio status bar tip Enganxa els elements del porta-retalls al full - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Edita les propietats del full (dimensions, informació del caixetí, propietats dels conductors, etc.) - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Permet veure el full sense poder modificar-lo - - + + Projet %1 enregistré dans le repertoire: %2. Projecte %1 desat al directori: %2. - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) Projectes QElectroTech (* .qet);; Arxius XML (* .xml);; Tots els fitxers (*) - - + + Impossible d'ouvrir le fichier message box title Impossible obrir el fitxer - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Sembla que el fitxer %1 que estàs intentant obrir no existeix. - + Ouverture du projet en lecture seule message box title Obertura del projecte en mode de només lectura - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content S'ha produït un error en obrir el fitxer %1. - + Active le projet « %1 » Activa el projecte « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Error - + Ferme l'application QElectroTech status bar tip Tanca el programa QElectroTech - + Annule l'action précédente status bar tip Desfer l'acció anterior - + Restaure l'action annulée status bar tip Restaura l'acció desfeta - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Transfereix els elements seleccionats al porta-retalls - + Copie les éléments sélectionnés dans le presse-papier status bar tip Copia els elements seleccionats al porta-retalls - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Desselecciona els elements seleccionats i selecciona els elements no seleccionats - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Recalcula les rutes dels conductors sense tenir en compte els canvis - + Pivote les éléments et textes sélectionnés status bar tip Gira els elements i textos seleccionats - + Éditer l'item sélectionné Edita l'element seleccionat - + Pivote les textes sélectionnés à un angle précis status bar tip Gira els textos seleccionats a un angle específic - + Création automatique de conducteur(s) Tool tip of auto conductor Creació automàtica de conductors @@ -6709,225 +6730,225 @@ Opcions disponibles: Projectes - + Collections Col·leccions - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Utilitza la creació automàtica de conductor (s) sempre que sigui possible - + Restaure le zoom par défaut status bar tip Restaura el nivell de zoom per defecte - + Ajouter une ligne Draw line Afegeix una línia - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Mostra els projectes oberts en subfinestres - + Présente les différents projets ouverts des onglets status bar tip Mostra els projectes oberts en pestanyes - + Permet de sélectionner les éléments status bar tip Permet seleccionar els elements - + Dispose les fenêtres en mosaïque status bar tip Disposa les finestres en mosaic - + Dispose les fenêtres en cascade status bar tip Disposa les finestres en cascada - + Active le projet suivant status bar tip Activa el projecte següent - + Active le projet précédent status bar tip Activa el projecte anterior - + &Fichier &Fitxer - + &Édition &Edita - + &Projet &Projecte - + Afficha&ge &Visualitza - + Fe&nêtres Fi&nestres - + &Récemment ouverts &Obre'n un de recent - + Affiche ou non la barre d'outils principale Mostra o amaga la barra d'eines principal - + Affiche ou non la barre d'outils Affichage Mostra o amaga la barra d'eines de visualització - + Affiche ou non la barre d'outils Schéma Mostra o amaga la barra d'eines d'esquema - + Affiche ou non le panel d'appareils Mostra o amaga el panell d'elements - + Affiche ou non la liste des modifications Mostra o amaga la llista de canvis - + Afficher les projets Mostra els projectes - + Outils Eines - + Affichage Visualitza - + Schéma Esquema - + Ajouter Afegeix - + Ouvrir un fichier Obre un fitxer - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Sembla que el fitxer que intentes obrir no és llegible. Per tant, no es pot obrir. Si us plau, comprova els permisos del fitxer. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Sembla que el projecte que intentes obrir no és accessible en mode d'escriptura. Per tant serà obert en mode de només lectura. - - + + Échec de l'ouverture du projet message box title Impossible obrir el projecte - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Sembla que el fitxer %1 no és un fitxer de projecte QElectroTech. Per tant no es pot obrir. - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Feu doble clic per completar la forma, feu clic amb el botó dret per desfer l'últim punt - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe Grup - + Éditer l'élement edit element Edita l'element - + Éditer le champ de texte edit text field Edita el camp de text - + Éditer l'image edit image Edita la imatge - + Éditer le conducteur edit conductor Edita el conductor - + Éditer l'objet sélectionné edit selected item Edita l'objecte seleccionat @@ -7181,42 +7202,42 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Edita les dades de l'autor - + Ajouter une ligne Afegeix una línia - + Ajouter un rectangle Afegeix un rectangle - + Ajouter une ellipse Afegeix una el·lipse - + Ajouter un polygone Afegeix un polígon - + Ajouter du texte Afegeix text - + Ajouter un arc de cercle Afegeix un arc - + Ajouter une borne Afegeix un born - + Annuler Cancel·la @@ -7231,8 +7252,18 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Trop de primitives, liste non générée: %1 Massa primitives, no s'ha generat la llista: %1 - + + + Nombre de bornes incorrect + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + %n avertissement(s) warnings @@ -7241,60 +7272,60 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Refaire Refès - + Ajouter un champ texte dynamique Afegeix un camp de text dinàmic - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Feu doble clic per completar la forma, feu clic amb el botó dret per desfer l'últim punt - + Ajouter un texte d'élément non éditable dans les schémas Afegeix text d'elements no editables als esquemes - + Ajouter un texte d'élément pouvant être édité dans les schémas Afegeix text d'elements editables als esquemes - + Avertissement Avís - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Importar un fitxer DXF gran pot trigar una estona. Si us plau, tingueu paciència mentre es completa el procés d'importació... - + Importer un élément à redimensionner Importa un element per canviar-ne la mida - + Éléments QElectroTech (*.elmt) Elements QElectroTech (*.elmt) - + Parties toolbar title Parts - + Profondeur toolbar title Profunditat @@ -7342,12 +7373,12 @@ Si us plau, tingueu paciència mentre es completa el procés d'importació. [només lectura] - + Aucune modification Cap canvi - + Éditeur d'éléments status bar message Editor d'elements @@ -7362,35 +7393,35 @@ Si us plau, tingueu paciència mentre es completa el procés d'importació. - + Absence de borne warning title No hi ha borns - + Absence de borne No hi ha borns - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>En absència de born, l'element no es pot connectar amb altres elements mitjançant conductors. - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Error</b> :<br>Les connexions del full han de tenir un sol born.<br><b>Solució</b> :<br>Comproveu que l'element té un sol born - + La vérification de cet élément a généré message box content La verificació de l'element ha generat - + %n erreur(s) errors @@ -7399,23 +7430,23 @@ Si us plau, tingueu paciència mentre es completa el procés d'importació. - + et i - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 - + Erreurs Errors - + Avertissements Avisos @@ -7427,21 +7458,21 @@ Si us plau, tingueu paciència mentre es completa el procés d'importació. - + Impossible d'ouvrir le fichier %1. message box content No es pot obrir el fitxer %1. - + Ce fichier n'est pas un document XML valide message box content El fitxer no conté un document XML vàlid - + Erreur toolbar title Error @@ -7480,64 +7511,64 @@ Si us plau, tingueu paciència mentre es completa el procés d'importació. Impossible desar l'element - + Impossible d'ouvrir le fichier message box title Impossible obrir el fitxer - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Sembla que el fitxer %1 que estàs intentant obrir no existeix. - + Recharger l'élément dialog title Recarrega l'element - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content l'element ha estat modificat. Si fos recarregat es perdrien els canvis. Segur que vol recarregar l'element? - - - + + + Echec de l'enregistrement Ha fallat el desament - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Ha fallat el desament, Les condicions requerides no són vàlides - + Enregistrer sous dialog title Desa com a - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file Elements QElectroTech (*.elmt) - + Enregistrer l'élément en cours ? dialog title Desa l'element actual? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Vols desar l'element %1? @@ -7557,22 +7588,22 @@ Les condicions requerides no són vàlides - - + + Élément inexistant. message box title No existeix l'element. - + L'élément n'existe pas. message box content L'element no existeix. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content El camí virtual escollit no correspon a cap element. @@ -8098,7 +8129,7 @@ Què voleu fer? QObject - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Avís: l'element ha estat desat amb una versió posterior del QElectroTech. @@ -9318,51 +9349,51 @@ Què voleu fer? Moure els borns - - + + Générique generic terminal element type Genèric - + Fusible fuse terminal element type Fusible - + Sectionable sectional terminal element type Seccionable - + Diode diode terminal element type Díode - + Terre ground terminal element type Terra - - + + Générique generic terminal element function Genèric - + Phase phase terminal element function Fase - + Neutre neutral terminal element function Neutre @@ -9392,7 +9423,7 @@ Què voleu fer? Camp de text dinàmic - + Importer un fichier dxf Importa un fitxer dxf @@ -9456,22 +9487,22 @@ Voleu substituir-la? Importa la configuració de text : %1 - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Per instal·lar el connector qet_tb_generator<br>Visiteu:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requereix python 3.5 o superior.<br><B><U> Primera instal·lació a Windows</B></U><br>1. Instal·leu, si cal, python 3.5 o superior<br> Visiteu:<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Actualització a Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>L'usuari podria iniciar aquest script en un terminal en aquest directori<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> Per instal·lar el connector qet_tb_generator<br>Visiteu:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> Primera instal·lació a macOSX</B></U><br>1. Instal·leu, si cal, només el paquet python 3.11, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Executeu l'script Profile.command<br>perquè el programa utilitza el PATH codificat per localitzar el connector qet-tb-generator <br> Visiteu:<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>com fer-ho</a><br>2. instal·lació de qet_tb_generator amb pip3<br><B><U> Actualització a macOSX</B></U><br> instal·lació de pip3 --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Per instal·lar el connector qet_tb_generator<br>Visiteu:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requereix python 3.5 o superior.<br><br><B><U> Primera instal·lació a Linux</B></U><br>1. comproveu que teniu pip3 instal·lat: pip3 --version<br>Si no, instal·leu-lo amb: sudo apt-get install python3-pip<br>2. Instal·leu el programa: sudo pip3 install qet_tb_generator<br>3. Executeu el programa: qet_tb_generator<br><br><B><U> Actualització a Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Error en iniciar el connector qet_tb_generator @@ -14306,92 +14337,92 @@ Longitud màxima : %2px WiringListExport - - + + Erreur Error - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Tensió / Protocol - + Couleur du fil Wiring list CSV header Color del fil - + Section du fil Wiring list CSV header Secció de fil - + Fonction Wiring list CSV header Funció - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_cs.ts b/lang/qet_cs.ts index 658fb6329..85c11202c 100644 --- a/lang/qet_cs.ts +++ b/lang/qet_cs.ts @@ -1680,17 +1680,17 @@ Poznámka: tyto volby automatické číslování ani NEPOVOLÍ ani nezakáží, - + Modifier la police d'un champ texte Změnit písmo textového pole - + Modifier la couleur d'un champ texte Upravit barvu textového pole - + Modifier la conservation de l'angle Upravit zachování úhlu @@ -1715,7 +1715,7 @@ Poznámka: tyto volby automatické číslování ani NEPOVOLÍ ani nezakáží, Upravit zdroj textu, text - + Modifier l'alignement d'un champ texte Upravit zarovnání textového pole @@ -2007,7 +2007,7 @@ Poznámka: tyto volby automatické číslování ani NEPOVOLÍ ani nezakáží, - + Simple Jednoduchý @@ -2042,93 +2042,98 @@ Poznámka: tyto volby automatické číslování ani NEPOVOLÍ ani nezakáží, Stručný popis - + + Définition de conducteur + + + + Normalement ouvert Přepínač normálně otevřený - + Normalement fermé Přepínač normálně zavřený - + Inverseur Přepínač - + Other Jiné - + Puissance Příkon - + Temporisé travail Zpoždění při zapnutí - + Temporisé repos Zpoždění při vypnutí - + Temporisé travail & repos Zpoždění při zapnutí a při vypnutí - + Bobine Cívka - + Organe de protection Ochrana - + Commutateur / bouton Přepínač/Tlačítko - - + + Générique Obecný - + Fusible Pojistka - + Séctionnable Oddílový - + Diode Dioda - + Phase Fáze - + Neutre Nulový - + Terre Země @@ -2136,99 +2141,99 @@ Poznámka: tyto volby automatické číslování ani NEPOVOLÍ ani nezakáží, ElementPropertiesWidget - + Général Obecné - + Élement Prvek - + Nom : %1 Název: %1 - + Folio : %1 List: %1 - + Type : %1 Typ: %1 - + Sous-type : %1 Podtyp: %1 - + Position : %1 Poloha: %1 - + Rotation : %1° Natočení: %1° - + Dimensions : %1*%2 Rozměry: %1*%2 - + Bornes : %1 Svorky: %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Umístění: %1 - + Retrouver dans le panel Najít v panelu - + Éditer l'élément Upravit prvek @@ -2694,60 +2699,60 @@ Všechny prvky a složky obsažené v této složce budou smazány. ElementsPanel - + Cartouches embarqués Vložená záhlaví výkresu - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Dvakrát klepněte pro sbalení nebo rozbalení této sbírky vložených záhlaví výkresů - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Táhněte a pusťte tento vzor záhlaví výkresů na list, aby se tam použil. - + Double-cliquez pour réduire ou développer ce projet Status tip Dvakrát klepněte pro sbalení nebo rozbalení tohoto projektu - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Dvakrát klepněte pro sbalení nebo rozbalení sbírky záhlaví výkresů programu QElectrotech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Toto je sbírka záhlaví výkresů poskytovaná s programem QElectrotech. Je nainstalována jako součást systému a obvykle ji nemůžete upravit. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip Dvakrát klepněte pro sbalení nebo rozbalení podnikové sbírky záhlaví výkresů - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Toto je podniková sbírka záhlaví výkresů. Používejte ji na vytváření, ukládání a úpravy vašich vlastních záhlaví výkresů. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Dvakrát klepněte pro sbalení nebo rozbalení vaší osobní sbírky záhlaví výkresů - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Toto je vaše osobní sbírka záhlaví výkresů. Používejte ji na vytváření, ukládání a úpravy vašich vlastních záhlaví výkresů. @@ -2756,97 +2761,97 @@ Všechny prvky a složky obsažené v této složce budou smazány. ElementsPanelWidget - + Ouvrir le dossier correspondant Otevřít základní adresář - + Copier le chemin Kopírovat cestu - + Basculer vers ce projet Zapnout tento projekt - + Éditer ce modèle Upravit tento vzor - + Supprimer ce modèle Smazat tento vzor - + Fermer ce projet Zavřít tento projekt - + Propriétés du projet Vlastnosti projektu - + Propriétés du folio Vlastnosti listu - + Ajouter un folio Přidat list - + Supprimer ce folio Smazat list - + Remonter ce folio Posunout list nahoru - + Abaisser ce folio Posunout list dolů - + Remonter ce folio x10 Posunout list nahoru x10 - + Remonter ce folio x100 Posunout list nahoru x100 - + Remonter ce folio au debut Posunout list na začátek - + Abaisser ce folio x10 Posunout list dolů x10 - + Abaisser ce folio x100 Posunout list dolů x100 - + Nouveau modèle Nový vzor - + Filtrer Filtrovat @@ -5641,12 +5646,12 @@ Následující proměnné jsou neslučitelné: ProjectView - + Supprimer les éléments inutilisés dans le projet Smazat v projektu nepoužívané prvky - + Supprimer les catégories vides Smazat prázdné skupiny @@ -5669,67 +5674,61 @@ Chcete uložit změny? Projekt QElectroTech (*.qet) - + Supprimer le folio ? message box title Smazat list? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - Jste si jistý, že chcete tento list smazat z projektu? Tato změna je nevratná. - - - + Projet en lecture seule message box title Projekt pouze pro čtení - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Tento projekt je pouze pro čtení. Proto jej nelze vyčistit. - + Supprimer les modèles de cartouche inutilisés dans le projet Smazat v projektu nepoužívané vzory - + Nettoyer le projet window title Vyčistit projekt - + Ajouter un folio Přidat list - + Revenir au debut du projet Jít zpět na začátek projektu - + Aller à la fin du projet Jít na konec projektu - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Tento projekt neobsahuje žádný list @@ -5747,12 +5746,18 @@ Chcete uložit změny? Źádný činný projekt - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Otevírá se projekt ...</b><br/>Vytváří se karty listů:</p> - + Projet window title for a project-less ProjectView Projekt @@ -6042,570 +6047,571 @@ Dostupné volby: QETDiagramEditor - + Afficha&ge Po&hled - + Affiche ou non le panel d'appareils Zobrazit/Nezobrazit panel s prvky - + Ajouter une colonne Přidat sloupec - + &Cascade &Překrývat - + C&oller &Vložit - + Cop&ier &Kopírovat - + Co&uper &Vyjmout - + Désélectionner tout Zrušit výběr - + &Édition Úp&ravy - + Enlever une colonne Odstranit sloupec - + &Enregistrer &Uložit - + Enregistrer sous Uložit jako - + E&xporter &Vyvést - + Fe&nêtres &Okna - + &Fermer &Zavřít - + &Fichier &Soubor - + Imprimer Tisk - + Inverser la sélection Obrátit výběr - + Mode Selection Výběrový režim - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Tento panel uvádí různé změny použité na nynější list. Klepnutí na změnu dovolí vrácení listu do stavu hned po jejím použití. - + Couleur de fond blanc/gris Tool tip of white/grey background button Barva pozadí bílá/šedá - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Zobrazí barvu pozadí listu bílé nebo šedé - + Afficher la grille Zobrazit mřížku - + Affiche ou masque la grille des folios Zobrazit/Skrýt mřížku listů - + Propriétés du folio Vlastnosti listu - + Ajouter un folio Přidat list - + + Supprimer le folio Smazat list - + Mode Visualisation Pohledový režim - + &Mosaïque Klást &vedle sebe - + Exporter en pdf Vyvést do PDF - + Exporte un ou plusieurs folios du projet courant status bar tip Vyvést jeden nebo několik listů nynějšího projektu - + Exporter au format CSV Vyvést do formátu CSV - + Gestionnaire de borniers (DEV) Správce svorkovnic (DEV) - + Lancer le plugin de création de borniers Spustit přídavný modul na vytváření svorkovnic - + Exporter la liste des noms de conducteurs Vyvést seznam názvů vodičů - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet Vyvést vnitřní projektovou databázi - + &Nouveau &Nový - + Crée un nouveau projet status bar tip Vytvořit nový projekt - + Ouvre un projet existant status bar tip Otevřít stávající projekt - + Ferme le projet courant status bar tip Zavřít nynější projekt - + Enregistre le projet courant et tous ses folios status bar tip Uloží nynější projekt a všechny jeho listy - + Enregistre le projet courant avec un autre nom de fichier status bar tip Uloží nynější projekt pod jiným souborovým názvem - + Ajouter une ligne Add row Přidat řádek - + Enlever une ligne Remove row Odstranit řádek - + Ajoute une colonne au folio status bar tip Přidat do listu sloupec - + Enlève une colonne au folio status bar tip Odstranit z listu sloupec - + Agrandit le folio en hauteur status bar tip Zvětšit výšku listu - + Rétrécit le folio en hauteur status bar tip Zmenšit výšku listu - + Enlève les éléments sélectionnés du folio status bar tip Odstraní vybrané prvky z listu - + Sélectionne tous les éléments du folio status bar tip Vybere všechny prvky na listu - + Désélectionne tous les éléments du folio status bar tip Zruší výběr všech prvků na listu - + Agrandit le folio status bar tip Zvětší list - + Rétrécit le folio status bar tip Zmenší list - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Přizpůsobí zvětšení tak, že je zobrazován obsah bez ohledu na rámec - + Adapte le zoom exactement sur le cadre du folio status bar tip Upraví zvětšení tak, že je zobrazena přesně určitá část listu - + Ajouter une ligne Draw line Přidat čáru - + Ajouter un rectangle Přidat obdélník - + Ajouter une ellipse Přidat elipsu - + Ajouter une polyligne Přidat mnohoúhelník - + Exporte le folio courant dans un autre format status bar tip Vyvede nynější list do jiného formátu - + Imprime un ou plusieurs folios du projet courant status bar tip Vytiskne jeden nebo více listů nynějšího projektu - + Profondeur toolbar title Hloubka - + Groupe Skupina - + Place les éléments du presse-papier sur le folio status bar tip Vloží prvky ze schránky do listu - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Upraví vlastnosti listu (rozměry, údaje v záhlaví výkresu, vlastnosti vodičů...) - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Dovolí zobrazení listu, aniž by jej bylo možné upravovat - + Outils Nástroje - + &Ouvrir &Otevřít - + Ouvrir un fichier Otevřít soubor - + Pas de zoom Obnovit výchozí zvětšení - + Pivoter Otočit - + &Quitter &Ukončit - + Supprimer Smazat - + Tout sélectionner Vybrat vše - + Zoom adapté Přizpůsobit přiblížení - + Zoom arrière Oddálit - + Zoom avant Přiblížit - + Annuler Zpět - + Refaire Znovu - + Réinitialiser les conducteurs Obnovit výchozí vodiče - + Affiche ou non la barre d'outils principale Zobrazit/Skrýt hlavní pruh s nástroji - + Affiche ou non la barre d'outils Affichage Zobrazit/Skrýt pruh s nástroji pro zobrazení - + Affiche ou non la barre d'outils Schéma Zobrazit/Skrýt pruh s nástroji pro výkres - + Affichage Zobrazení - + Schéma Výkres - + Ajouter un champ de texte Přidat textové pole - + Aucune modification Žádná úprava - + Affiche ou non la liste des modifications Zobrazit/Skrýt seznam kroků zpět - + Éditer l'item sélectionné Upravit vybranou položku - + Grouper les textes sélectionnés Seskupit vybrané texty - + Pivote les éléments et textes sélectionnés status bar tip Otáčí vybrané prvky a texty - + Pivote les textes sélectionnés à un angle précis status bar tip Otáčí vybrané texty v přesném úhlu - + Chercher/remplacer Hledat/Nahradit - + &Projet &Projekt - + &Récemment ouverts &Nedávno otevřené - - + + Projet %1 enregistré dans le repertoire: %2. Projekt 1% uložený v adresáři: %2. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Nezdá se, že by byl soubor, který se pokoušíte otevřít, čitelný. A nelze jej otevřít. Zkontrolujte, prosím, oprávnění k souboru. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Zdá se, že projekt, který se pokoušíte otevřít, není zapisovatelný. Bude tedy otevřen pouze pro čtení. - + en utilisant des onglets Používat karty - + en utilisant des fenêtres Používat okna - + Afficher les projets Zobrazení projektů - + Propriétés du projet Vlastnosti projektu - + Nettoyer le projet Vyčistit projekt - - + + Échec de l'ouverture du projet message box title Projekt nelze otevřít - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Zdá se, že soubor %1 není souborem projektu QElectroTech. Nemůže být tedy otevřen. @@ -6623,92 +6629,92 @@ Dostupné volby: QElectroTech - + Annulations dock title Zpět - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Klepněte na některý z kroků pro návrat zpět ve změnách udělaných ve vašem výkresu - + Orienter les textes Natočit texty - + Retrouver dans le panel Najít v panelu - + Ajouter une image Přidat obrázek - + Ajouter un sommaire Přidat souhrn - + Zoom sur le contenu Přiblížit obsah - + Ferme l'application QElectroTech status bar tip Zavře aplikaci QElectroTech - + Annule l'action précédente status bar tip Vrátí předchozí krok zpět - + Restaure l'action annulée status bar tip Znovu zavede krok vrácený zpět - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Přenese vybrané prvky do schránky - + Copie les éléments sélectionnés dans le presse-papier status bar tip Zkopíruje vybrané prvky do schránky - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Zruší výběr vybraných prvků a vybere nevybrané prvky - + Retrouve l'élément sélectionné dans le panel status bar tip Najde prvek vybraný v panelu - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Nastaví znovu cesty vodičů bez ohledu na uživatelem provedené změny - + Création automatique de conducteur(s) Tool tip of auto conductor Automatické vytvoření vodiče(ů) @@ -6720,206 +6726,221 @@ Dostupné volby: Projekty - + Collections Sbírky - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Použít automatické vytvoření vodiče(ů), když je to možné - + Restaure le zoom par défaut status bar tip Obnoví výchozí úroveň přiblížení - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Ukáže různé otevřené projekty v podoknech - + Ajouter une nomenclature Přidat seznam součástí - + Présente les différents projets ouverts des onglets status bar tip Ukáže různé otevřené projekty v kartách - + Permet de sélectionner les éléments status bar tip Dovolí výběr prvků - + Ajouter un plan de bornes Přidat plán svorek - + Ajoute un champ de texte sur le folio actuel Přidat textové pole do nynějšího listu - + Ajoute une image sur le folio actuel Přidat obrázek do nynějšího listu - + Ajoute une ligne sur le folio actuel Přidat čáru do nynějšího listu - + Ajoute un rectangle sur le folio actuel Přidat obdélník do nynějšího listu - + Ajoute une ellipse sur le folio actuel Přidat elipsu do nynějšího listu - + Ajoute une polyligne sur le folio actuel Přidat lomenou čáru do nynějšího listu - + Ajoute un plan de bornier sur le folio actuel Přidat plán svorek do nynějšího listu - + Ajouter Přidání - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) Projekty QElectroTech (*.qet);;Soubory XML (*.xml);;Všechny soubory (*) - - + + Impossible d'ouvrir le fichier message box title Soubor nelze otevřít - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Zdá se, že soubor %1, který se pokoušíte otevřít, už neexistuje. - + Ouverture du projet en lecture seule message box title Otevření souboru pouze pro čtení - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dvakrát klepnout pro dokončení tvaru, klepnutí pravým tlačítkem myši pro zrušení posledního bodu - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Éditer l'élement edit element Upravit prvek - + Éditer le champ de texte edit text field Upravit textové pole - + Éditer l'image edit image Upravit obrázek - + Éditer le conducteur edit conductor Upravit vodič - + Éditer l'objet sélectionné edit selected item Upravit vybraný předmět - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Během otevírání souboru %1 se vyskytla chyba. - + Active le projet « %1 » Spustí projekt « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Chyba - + Dispose les fenêtres en mosaïque status bar tip Uspořádá okna tím způsobem, že je položí vedle sebe - + Dispose les fenêtres en cascade status bar tip Uspořádá okna tím způsobem, že je položí v kaskádě pod sebe - + Projet suivant Další projekt - + Projet précédent Předchozí projekt - + Active le projet suivant status bar tip Spustí další projekt - + Active le projet précédent status bar tip Spustí předchozí projekt @@ -7121,53 +7142,53 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Zavést prvek pro změnu velikosti - + Ajouter une ligne Přidat čáru - + Ajouter une ellipse Přidat elipsu - + Ajouter un polygone Přidat mnohoúhelník - + Ajouter du texte Přidat text - + Ajouter un arc de cercle Přidat oblouk kruhu - + Ajouter une borne Přidat svorku - + Annuler Zpět - + Refaire Znovu - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>V nepřítomnosti svorky může být prvek spojen s jinými prvky prostřednictvím vodičů. - + Aucune modification Žádná úprava @@ -7212,13 +7233,13 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Upravit údaje o autorovi - + Parties toolbar title Části - + Profondeur toolbar title Hloubka @@ -7234,12 +7255,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Upravit vlastnosti prvku - + Ajouter un champ texte dynamique Přidat dynamické textové pole - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dvakrát klepnout pro dokončení tvaru, klepnutí pravým tlačítkem myši pro zrušení posledního bodu @@ -7276,7 +7297,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [Pouze pro čtení] - + Éditeur d'éléments status bar message Editor prvků @@ -7292,24 +7313,24 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title Chybí svorka - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br> <b>Chyba</b > :<br>Odkazy na listy musí mít jednoduchou svorku.<br><b>Řešení</b> :<br> Ověřte, že prvek má jen jednu svorku - + La vérification de cet élément a généré message box content Ověření tohoto prvku vytvořilo - + %n erreur(s) errors @@ -7319,32 +7340,32 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et a - + Erreurs Chyby - + Absence de borne Chybí svorka - + Ajouter un texte d'élément non éditable dans les schémas Přidat neupravitelný text prvku do výkresů - + Ajouter un texte d'élément pouvant être édité dans les schémas Přidat upravitelný text prvku do výkresů - + %n avertissement(s) warnings @@ -7354,7 +7375,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description <b>%1</b>: %2 @@ -7373,21 +7394,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Soubor nelze otevřít %1. - + Ce fichier n'est pas un document XML valide message box content Tento soubor není platným dokumentem XML - + Erreur toolbar title Chyba @@ -7431,49 +7452,59 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Příliš mnoho primitiv, seznam nebyl vytvořen: %1 - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Avertissement Varování - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Zavedení velkého souboru DXF může trvat dlouho. Při zavádění, prosím, vyčkejte... - + Importer un élément à redimensionner Zavést prvek pro změnu velikosti - + Éléments QElectroTech (*.elmt) Prvky QElectroTech (*.elmt) - + Impossible d'ouvrir le fichier message box title Soubor nelze otevřít - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Zdá se, že soubor %1, který se pokoušíte otevřít, už neexistuje. - - - + + + Echec de l'enregistrement Registrace se nezdařila - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Registrace se nezdařila, @@ -7492,42 +7523,42 @@ podmínky nejsou platné Prvky QElectroTech (*.elmt);;Soubory XML (*.xml);;Všechny soubory (*) - + Recharger l'élément dialog title Nahrát znovu prvek - + Avertissements Varování - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Tento prvek byl od posledního uložení změněn. Pokud jej znovu nahrajete, tyto změny budou ztraceny. Opravdu chcete tento prvek nahrát znovu? - + Enregistrer sous dialog title Uložit jako - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file Prvky QElectroTech (*.elmt) - + Enregistrer l'élément en cours ? dialog title Uložit nynější prvek? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Chcete uložit prvek %1? @@ -7535,22 +7566,22 @@ podmínky nejsou platné - - + + Élément inexistant. message box title Neexistující prvek. - + L'élément n'existe pas. message box content Prvek neexistuje. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Vybraná virtuální cesta neodpovídá prvku. @@ -7571,7 +7602,7 @@ podmínky nejsou platné &Vložit - + Ajouter un rectangle Přidat obdélník @@ -8111,7 +8142,7 @@ Co si přejete udělat? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Varování: prvek byl uložen se starší verzí QElectroTechu. @@ -9348,22 +9379,22 @@ Chcete je nahradit? Vytvoření vodičů - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Pro nainstalování přídavného modulu qet_tb_generator<br>navštivte :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>vyžaduje python 3.5 nebo novější.<br><B><U> Nejprve nainstalujte v OS Windows</B></U><br>1. V případě potřeby nainstalujte python 3.5 nebo novější<br> Navštivte:<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Aktualizace na OS Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>uživatel tento skript může spustit v terminálu v tomto adresáři<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> Pro nainstalování přídavného modulu qet_tb_generator<br>navštivte:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> Nejprve nainstalujte v macOSX</B></U><br>1. V případě potřeby nainstalujte python 3.11 nebo novější<br> Navštivte:<br><a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2. Spusťte skript Profile.command<br><B><U> Aktualizujte na macOSX</B></U><br>pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Pro nainstalování přídavného modulu qet_tb_generator<br>navštivte :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>vyžaduje python 3.5 nebo novější.<br><B><U> Nejprve instalace v OS Linux</B></U><br>1. Ověřte, že máte nainstalován pip3: pip3 --version<br>Pokud ne, nainstalujte pomocí: sudo apt-get install python3-pip<br>2. Nainstalujte program: sudo pip3 install qet_tb_generator<br>3. Spusťte program: qet_tb_generator<br><br><B><U> Aktualizace v OS Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Chyba při spouštění přídavného modulu qet_tb_generator @@ -9515,51 +9546,51 @@ Chcete je nahradit? Seřadit svorkovnici %1 - - + + Générique generic terminal element type Obecný - + Fusible fuse terminal element type Pojistka - + Sectionable sectional terminal element type Oddílový - + Diode diode terminal element type Dioda - + Terre ground terminal element type Země - - + + Générique generic terminal element function Obecný - + Phase phase terminal element function Fáze - + Neutre neutral terminal element function Nulový @@ -9590,7 +9621,7 @@ Chcete je nahradit? Otevřít prvek - + Importer un fichier dxf Zavést soubor DXF @@ -14304,92 +14335,92 @@ Největší délka: %2px WiringListExport - - + + Erreur Chyba - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Napětí/Protokol - + Couleur du fil Wiring list CSV header Barva drátu - + Section du fil Wiring list CSV header Úsek drátu - + Fonction Wiring list CSV header Funkce - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_da.ts b/lang/qet_da.ts index 3dcfb9a71..03865eef0 100644 --- a/lang/qet_da.ts +++ b/lang/qet_da.ts @@ -1680,17 +1680,17 @@ Bemærk: Disse muligheder VIL IKKE tillade eller blokere autonummereringer, kun - + Modifier la police d'un champ texte Ændre tekstfelt skrifttype - + Modifier la couleur d'un champ texte Ændre tekstfelt farve - + Modifier la conservation de l'angle Ændre vinkel bevarelse @@ -1715,7 +1715,7 @@ Bemærk: Disse muligheder VIL IKKE tillade eller blokere autonummereringer, kun Ændre tekstkilde tekst - + Modifier l'alignement d'un champ texte Ændre tekstfelt justering @@ -2007,7 +2007,7 @@ Bemærk: Disse muligheder VIL IKKE tillade eller blokere autonummereringer, kun - + Simple Enkel @@ -2042,93 +2042,98 @@ Bemærk: Disse muligheder VIL IKKE tillade eller blokere autonummereringer, kun Miniature - + + Définition de conducteur + + + + Normalement ouvert Normal åben - + Normalement fermé Normal lukket - + Inverseur Omskifter - + Other Andet - + Puissance Effektbryder - + Temporisé travail Forsinket tiltræk - + Temporisé repos Forsinket frafald - + Temporisé travail & repos Forsinket tiltræk & frafald - + Bobine Relæ - + Organe de protection Person beskyttelse - + Commutateur / bouton Omskifter / kontakt - - + + Générique Generisk - + Fusible Sikirn - + Séctionnable Valgbar - + Diode Diode - + Phase Fase - + Neutre Neutral - + Terre Jord @@ -2136,99 +2141,99 @@ Bemærk: Disse muligheder VIL IKKE tillade eller blokere autonummereringer, kun ElementPropertiesWidget - + Général Generelt - + Élement Symbol - + Nom : %1 Navn: %1 - + Folio : %1 Ark: %1 - + Type : %1 Type: %1 - + Sous-type : %1 Under type : %1 - + Position : %1 Placering: %1 - + Rotation : %1° Rotation: %1° - + Dimensions : %1*%2 Størrelse: %1*%2 - + Bornes : %1 Terminaler: %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Placering: %1 - + Retrouver dans le panel Find i panel - + Éditer l'élément Rediger symbol @@ -2693,60 +2698,60 @@ Alle symboler og fil indhold bliver slettet. ElementsPanel - + Cartouches embarqués Indlejrede titelblokke - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Dobbel klik for sammenfolde eller udfolde indlejret titelblokke samling - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Træk og slip titelblok skabelon på ark for at anvende den. - + Double-cliquez pour réduire ou développer ce projet Status tip Dobbel klik for sammenfolde eller udfolde projekt - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Dobbel klik for at sammenfolde eller udfolde QElectroTech titelblokke samling - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Dette er en samling af QElectroTech titelblokke. Installeret som system komponent kan de normalt ikke redigeres. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Dobbel klik for at sammenfolde eller udfolde brugertilpasset titelblokke samling - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Dette er en samling af brugertilpasset titelblokke. -- Opret, gem og rediger egne titelblokke. @@ -2755,97 +2760,97 @@ Alle symboler og fil indhold bliver slettet. ElementsPanelWidget - + Ouvrir le dossier correspondant Åbn mappe - + Copier le chemin Kopier stien - + Basculer vers ce projet Skift til projekt - + Éditer ce modèle Rediger skabelon - + Supprimer ce modèle Slet skabelon - + Fermer ce projet Luk projekt - + Propriétés du projet Projekt egenskab - + Propriétés du folio Ark egenskab - + Ajouter un folio Tilføj ark - + Supprimer ce folio Slet ark - + Remonter ce folio Flyt ark op - + Abaisser ce folio Flyt ark ned - + Remonter ce folio x10 Flyt ark op x10 - + Remonter ce folio x100 Flyt ark op x100 - + Remonter ce folio au debut Flyt ark til top - + Abaisser ce folio x10 Flyt ark ned x10 - + Abaisser ce folio x100 Flyt ark ned x100 - + Nouveau modèle Ny skabelon - + Filtrer Filter @@ -5639,12 +5644,12 @@ Følgende variabler er ikke kompatible: ProjectView - + Supprimer les éléments inutilisés dans le projet Slet ikke brugt symbol i projekt - + Supprimer les catégories vides Slet tom kategori @@ -5667,68 +5672,61 @@ Skal ændringer gemmes? Projekt QElectroTech (*.qet) - + Supprimer le folio ? message box title Slet ark? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - Skal ark slettes fra projekt? -Sletningen kan ikke fortrydes. - - - + Projet en lecture seule message box title Skrivebeskyttet projekt - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Projekt er skrivebeskyttet og er derfor ikke muligt at rydde op i. - + Supprimer les modèles de cartouche inutilisés dans le projet Slet ikke brugt titelblok skabelon i projekt - + Nettoyer le projet window title Ryd op i projekt - + Ajouter un folio Tilføj ark - + Revenir au debut du projet Gå til projekt start - + Aller à la fin du projet Gå til projekt slut - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Projekt indeholder ingen ark @@ -5746,12 +5744,18 @@ Sletningen kan ikke fortrydes. intet projekt vist - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Åbning af projekt...</b><br/>Oprettelse af ark faner:</p> - + Projet window title for a project-less ProjectView Projekt @@ -6042,570 +6046,571 @@ Kommandovalg: QETDiagramEditor - + Afficha&ge &Vis - + Affiche ou non le panel d'appareils Vis eller skjul symbol panel - + Ajouter une colonne Tilføj kolonne - + &Cascade &Overlappet - + C&oller &Indsæt - + Cop&ier K&opier - + Co&uper &Klip - + Désélectionner tout Vælg ingen - + &Édition &Redigere - + Enlever une colonne Slet kolonne - + &Enregistrer &Gem - + Enregistrer sous Gem som - + E&xporter &Eksport - + Fe&nêtres &Vinduer - + &Fermer &Luk - + &Fichier &Filer - + Imprimer Udskriv - + Inverser la sélection Vælg modsat - + Mode Selection Vælg - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Vinduet viser de forskellige ændringer, der udføres på nuværende ark. Klik på en ænding for at vende tilbage til tidligere tilstand. - + Couleur de fond blanc/gris Tool tip of white/grey background button Bagrundsfarve hvid / grå - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Viser ark baggrundsfarve i hvid eller grå - + Afficher la grille Vis gitter - + Affiche ou masque la grille des folios Vis eller skjul ark gitter - + Propriétés du folio Ark egenskab - + Ajouter un folio Tilføj ark - + + Supprimer le folio Slet ark - + Mode Visualisation Vise - + &Mosaïque &Side om side - + Exporter en pdf Eksportere som PDF - + Exporte un ou plusieurs folios du projet courant status bar tip Eksportere et eller flere ark fra nuværende projekt - + Exporter au format CSV Eksportere som CSV format - + Gestionnaire de borniers (DEV) Terminalrække håndtering (DEV) - + Lancer le plugin de création de borniers Starte udvidelsesmodul til opretning af terminalblokke - + Exporter la liste des noms de conducteurs Eksportere liste med navne på ledere - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet Eksportere intern projekt database - + &Nouveau &Ny - + Crée un nouveau projet status bar tip Opret nyt projekt - + Ouvre un projet existant status bar tip Åbn eksisterende projekt - + Ferme le projet courant status bar tip Luk nuværende projekt - + Enregistre le projet courant et tous ses folios status bar tip Gem nuværende projekt og alle ark - + Enregistre le projet courant avec un autre nom de fichier status bar tip Gem nuværende projekt under andet filnavn - + Ajouter une ligne Add row Tilføj linje - + Enlever une ligne Remove row Slet linje - + Ajoute une colonne au folio status bar tip Tilføj kolonne til ark - + Enlève une colonne au folio status bar tip Slet kolonne fra ark - + Agrandit le folio en hauteur status bar tip Udvid ark højde - + Rétrécit le folio en hauteur status bar tip Indskrænk ark højde - + Enlève les éléments sélectionnés du folio status bar tip Slet symbol fra ark - + Sélectionne tous les éléments du folio status bar tip Væg alle symboler på ark - + Désélectionne tous les éléments du folio status bar tip Vælg ingen symboler på ark - + Agrandit le folio status bar tip Udvid ark - + Rétrécit le folio status bar tip Indskrænk ark - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Tilpas visning til indhold uanset ark ramme - + Adapte le zoom exactement sur le cadre du folio status bar tip Tilpas visning til ark - + Ajouter une ligne Draw line Tilføj linje - + Ajouter un rectangle Tilføj rektangel - + Ajouter une ellipse Tilføj cirkel - + Ajouter une polyligne Tilføj flerkant - + Exporte le folio courant dans un autre format status bar tip Eksportere nuværende ark til andet format - + Imprime un ou plusieurs folios du projet courant status bar tip Udskriv et eller flere ark fra nuværende projekt - + Profondeur toolbar title Placeringsniveau - + Groupe Gruppe - + Place les éléments du presse-papier sur le folio status bar tip Indsæt symboler fra udklipsholder på ark - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Rediger ark egenskab (størrelse, titelblok information, leder egenskab etc.) - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Tillader skrivebeskyttet ark visning - + Outils Værktøjer - + &Ouvrir &Åbn - + Ouvrir un fichier Åbn fil - + Pas de zoom Nulstil - + Pivoter Roter - + &Quitter &Afslut - + Supprimer Slet - + Tout sélectionner Vælg alle - + Zoom adapté Tilpas ark - + Zoom arrière Formindsk - + Zoom avant Forstør - + Annuler Fortryd - + Refaire Gendan - + Réinitialiser les conducteurs Nulstil leder - + Affiche ou non la barre d'outils principale Vis eller skjul værktøjslinje - + Affiche ou non la barre d'outils Affichage Vis eller skjul værktøjslinjen Vis - + Affiche ou non la barre d'outils Schéma Vis eller skjul værktøjslinjen Diagram - + Affichage Vise - + Schéma Diagram - + Ajouter un champ de texte Tilføj tekstfelt - + Aucune modification Ingen ændring - + Affiche ou non la liste des modifications Vis eller skjul gendan liste - + Éditer l'item sélectionné Rediger emne - + Grouper les textes sélectionnés Gruppere valgte tekste - + Pivote les éléments et textes sélectionnés status bar tip Roter symbol og tekst - + Pivote les textes sélectionnés à un angle précis status bar tip Roter tekst til vinkel - + Chercher/remplacer Søg/erstat - + &Projet &Projekter - + &Récemment ouverts &Senest åbnet - - + + Projet %1 enregistré dans le repertoire: %2. Projekt %1 registreret i bibliotek: %2. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Skrivebeskyttet fil forsøgt åbnet. Kontroller fil rettigheder. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Projekt åbnes skrivebeskyttet. - + en utilisant des onglets faneblade - + en utilisant des fenêtres vinduer - + Afficher les projets Vis projekt - + Propriétés du projet Projekt egenskab - + Nettoyer le projet Ryd op i projekt - - + + Échec de l'ouverture du projet message box title Projekt kan ikke åbnes - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content %1 er ikke en QElectroTech projekt fil. @@ -6623,92 +6628,92 @@ Kommandovalg: QElectroTech - + Annulations dock title Annuleringer - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Klik på en ændring for at komme tilbage i diagram ændringer - + Orienter les textes Vælg tekst retning - + Retrouver dans le panel Find i panel - + Ajouter une image Tilføj billede - + Ajouter un sommaire Tilføj oversigt - + Zoom sur le contenu Tilpas indhold - + Ferme l'application QElectroTech status bar tip Luk QElectroTech - + Annule l'action précédente status bar tip Fortryd foregående handling - + Restaure l'action annulée status bar tip Gendan fortrudt handling - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Kopier symboler til udklipsholder - + Copie les éléments sélectionnés dans le presse-papier status bar tip Kopier symboler fra udklipsholder - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Vælger modsat - + Retrouve l'élément sélectionné dans le panel status bar tip Find symbol i panel - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Genberegn leder rute uanset ændringer - + Création automatique de conducteur(s) Tool tip of auto conductor Opret automatisk leder @@ -6720,206 +6725,221 @@ Kommandovalg: Projekter - + Collections Samlinger - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Brug automatisk opret af leder hvor det er muligt - + Restaure le zoom par défaut status bar tip Gendan standard visning - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Vis åbne projekter i vinduer - + Ajouter une nomenclature Tilføje en BOM - + Présente les différents projets ouverts des onglets status bar tip Vis åbne projekter i faneblade - + Permet de sélectionner les éléments status bar tip Tillader symbol valg - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel Tilføje tekstfelt til det aktuelle ark - + Ajoute une image sur le folio actuel Tilføje billede til det aktuelle ark - + Ajoute une ligne sur le folio actuel Tilføje linje til det aktuelle ark - + Ajoute un rectangle sur le folio actuel Tilføje rektangel til det aktuelle ark - + Ajoute une ellipse sur le folio actuel Tilføje elipse til det aktuelle ark - + Ajoute une polyligne sur le folio actuel Tilføje flerkant til det aktuelle ark - + Ajoute un plan de bornier sur le folio actuel - + Ajouter Tilføj - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech projekter (*.qet);; XML-filer (*.xml);; Alle filer (*) - - + + Impossible d'ouvrir le fichier message box title Kan ikke åbne filen - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Fil %1 findes ikke. - + Ouverture du projet en lecture seule message box title Projekt åbnes skrivebeskyttet - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dobbeltklik for at afslutte formular, højreklik for at fortryde det sidste punkt - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Éditer l'élement edit element Rediger symbol - + Éditer le champ de texte edit text field Rediger tekstfelt - + Éditer l'image edit image Rediger billede - + Éditer le conducteur edit conductor Rediger leder - + Éditer l'objet sélectionné edit selected item Rediger objekt - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Der opstod en fejl under åbning af fil %1. - + Active le projet « %1 » Aktiver projekt « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Fejl - + Dispose les fenêtres en mosaïque status bar tip Arranger vinduer side om side - + Dispose les fenêtres en cascade status bar tip Arranger vinduer overlappet - + Projet suivant Næste projekt - + Projet précédent Foregående projekt - + Active le projet suivant status bar tip Aktiver næste projekt - + Active le projet précédent status bar tip Aktiver foregående projekt @@ -7118,53 +7138,53 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Ajouter une ligne Tilføj streg - + Ajouter une ellipse Tilføj cirkel - + Ajouter un polygone Tilføj flerkant - + Ajouter du texte Tilføj tekst - + Ajouter un arc de cercle Tilføj cirkelbue - + Ajouter une borne Tilføj terminal - + Annuler Fortryd - + Refaire Gendan - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>Ved mangel af terminal kan symbol forbindes til andre symboler via leder. - + Aucune modification Ingen ændring @@ -7209,13 +7229,13 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Rediger forfatter informationer - + Parties toolbar title Dele - + Profondeur toolbar title Placeringsniveau @@ -7231,12 +7251,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Rediger symbol egenskab - + Ajouter un champ texte dynamique Tilføj dynamisk tekstfelt - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dobbeltklik for at afslutte formular, højreklik for at fortryde det sidste punkt @@ -7273,7 +7293,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [skrivebeskyttet] - + Éditeur d'éléments status bar message Symbol redigering @@ -7288,24 +7308,24 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title Mangler terminal - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br> <b>Fejl</ b>:<br>Ark rapport skal have én terminal<br> <b>Løsning</ b>:<br>Kontroller symbol kun har én terminal - + La vérification de cet élément a généré message box content Efterprøvning af symbol har genereret - + %n erreur(s) errors @@ -7314,32 +7334,32 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et og - + Erreurs Fejl - + Absence de borne Mangler terminal - + Ajouter un texte d'élément non éditable dans les schémas Tilføje ikke-redigerbar elementtekst i skema - + Ajouter un texte d'élément pouvant être édité dans les schémas Tilføje redigerbar elementtekst i skema - + %n avertissement(s) warnings @@ -7348,7 +7368,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description <b>%1</b>: %2 @@ -7367,21 +7387,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Kan ikke åbne fil %1. - + Ce fichier n'est pas un document XML valide message box content Fil er ikke gyldigt XML dokument - + Erreur toolbar title Fejl @@ -7425,49 +7445,59 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Avertissement Advarsel - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Import af stor dxf fil kan tage tid vent venligst... - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) QElectroTech symboler (*.elmt) - + Impossible d'ouvrir le fichier message box title Kan ikke åbne fil - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Fil %1 findes ikke. - - - + + + Echec de l'enregistrement Gem mislykkedes - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Gem mislykkedes, @@ -7486,42 +7516,42 @@ betingelser ikke gyldig QElectroTech symboler (*.elmt);;XML filer (*.xml);;Alle filer (*) - + Recharger l'élément dialog title Genindlæs symbol - + Avertissements Advarsler - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Symbol er ændret. Ved genindlæs vil ændringer gå tabt. Genindlæs symbol? - + Enregistrer sous dialog title Gem som - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech symboler (*.elmt) - + Enregistrer l'élément en cours ? dialog title Gem nuværende symbol? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Gem symbol %1? @@ -7529,22 +7559,22 @@ betingelser ikke gyldig - - + + Élément inexistant. message box title Ikke eksisterende symbol. - + L'élément n'existe pas. message box content Symbol findes ikke. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Valgt virtuel sti svarer ikke til et symbol. @@ -7565,7 +7595,7 @@ betingelser ikke gyldig &Indsæt - + Ajouter un rectangle Tilføj rektangel @@ -8100,7 +8130,7 @@ Que désirez vous faire ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Advarsel: symbol er gemt med nyere version af QElectroTech. @@ -9326,22 +9356,22 @@ Voulez-vous la remplacer ? Oprette ledere - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> For at installere udvidelsesmodul qet_tb_generator<br>Besøg: <a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Kræver python 3.5 eller over.<br><B><U>Første installering på Windows</B></U><br>1. Installere, hvis påkrævet, python 3.5 eller over<br>Besøg:<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip installere qet_tb_generator<br><B><U>Opdatere på Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>brugeren kan i en terminal udføre dette skript i følgende mappe<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> For at installere udvidelsesmodulet qet_tb_generator<br>Besøg:<br> <a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a> <br> <br>Kræver python 3.5 eller nyere.<br> <br> <B> <U>Første installation på Linux</B> </U> <br>1. kontrllere, at pip3 er installeret: pip3 --version<br>Hvis ikke, installere med: sudo apt-get install python3-pip<br>2. installere programmet: sudo pip3 install qet_tb_generator<br>3. kør programmet: qet_tb_generator<br> <br> <B> <U>Opdatering på Linux</B> </U> <br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Fejl ved opstart af qet_tb_generator udvidelsesmodul @@ -9493,51 +9523,51 @@ Voulez-vous la remplacer ? Sorter terminalrække %1 - - + + Générique generic terminal element type Generisk - + Fusible fuse terminal element type Sikring - + Sectionable sectional terminal element type Sektionsbar - + Diode diode terminal element type Diode - + Terre ground terminal element type Jord - - + + Générique generic terminal element function Generisk - + Phase phase terminal element function Fase - + Neutre neutral terminal element function Neutral @@ -9568,7 +9598,7 @@ Voulez-vous la remplacer ? Åbn symbol - + Importer un fichier dxf Importer dxf fil @@ -14267,92 +14297,92 @@ Maksimum længde: %2piksel WiringListExport - - + + Erreur Fejl - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Spænding / protokol - + Couleur du fil Wiring list CSV header Leder farve - + Section du fil Wiring list CSV header Leder sektion - + Fonction Wiring list CSV header Funktion - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_de.qm b/lang/qet_de.qm index 25842f2cd9b6d5919ece989238561ac5b4b19b84..bd9388ed851eaba40ce1b3c776d08117bac788b6 100644 GIT binary patch delta 20730 zcmXY(bzBr(7st;D*oj#BHPDxM zRw=L>(Rg2-w_a#uOAdqGaelha+g6Qi$s=$)k!KZ+qU2<70*R6vh-3oMhrdKhGEucA zM27L?B#&R(0ky`L;RHRz4S}p@37wOhX%y9-YLssGh^#w_J|6!^!YQfi$-GILy2p17H0ayW^El_alv zlSsCbOe5kgi^L@J0?sIsH!%rq59(|`MrW^qI!FHheB^KabyTp<`1d+**>rwP)cLiO z&fo7evO*hlHpAWFI;?GZon2n&bPk-O9}I4$bIdE9;Wc&6P0+dcna+)CG>Urv=xj1b zXU9`ICs)uJfyc%L#oyB!B|oe)FNOix^!$QI@xpaw6yZZjy2`hkr@A7)v7SB`H@hs{PKAI@!5~*s$Yd zz!L~FCqtbSIB#1rG${;DAp`DM*q@N$a7kj5hm!#}AaYG6!>Jv_KCRKn8$Z`M%|wQa zIq!=nV|f=6Mcl}gH-tosV6s+MhzbXi-LE={IgKgrH5FKUi^SsN zRPYK6F03aNDHuca_@qX*y*CwkfcdJ_n~HUcC-M9#6+5wn_>*KRnSUd3(S%BlnonZl zM=E75OX6-FDxKex#H$D@efI~+sSBv=p-LoeX*zTDq;j|H#5BJ}Zp^9;DN%)(ok`umEqleDGGURT4NaQv_Bj4Sg+~aJCYg<*g|5b!AVVi{vfJu)yNMt zrskP#iT&4)yfYCW{U(slejhk>4{8~SIUF&BT1G_@Ge%I$lq1BNbkQinf9srkh+0+f z!uzXIt6*>9Yi-nOQY2Bo>C`F}A+dCBYQ5A*!a0*#pF>zJ?)*k=lmwz#cXj?Qrjc(i zp;6}EKy5nV@9Pgxy8(ZRN-&*eW@=>4B0A@WY7`yYYm}=yQoCSyLvkHzpHQB}(OcAU zE~3ww&eU;fJ)%FyHA<(8q|W1!wx$l%$f%Ca!4oy|lWR0e*Z-)?taM_{o0IRgZzL`a zCOh6S1r52{{=a&#GHlJ^vy-2-(F3(?4W=;vAZa{cwZIU0FZsz%v&KJ_%7#D$0H%oi4kC%6&jh5mxy`Ms71)hdz#beilvF~SVp5U#lkd_M(-Iz{CO~q{?eZK`inH$ znGK^b#ZlPCqQp1P(kPu?6m}7QzTp>*oq?fUvzW%t`a;|#n#S&cF=dXWu{l%Lx~N7` zZ7WU88PeACGzvEtnurk-j%PGAP~b*K(bQ*w#F~YG_*^F!nik|uG~z2ca}HRSiP{M^ zKS-mjIG(1@y+h*bONuzVA9MMg=9a2PBJnoO4U8pPScK+IeoHK39WC(KM{J6u#op^k z7)wx$3f)%jGR55LO5(p+6gznaQExX|QmHPn@_@|Eoo`PF(eF+oV0XXHqoWt zwBpB6;wQ6dq6M93OXLos22*IO#|nrE=ONl=Q;4ozq;0jn z6AeiP5s-$OY1@za#1F5gq?jzonB$am6mHt|q()JGJ?-eZifGv|jjYHVotsi=XO&hY zhrXbl2lEgwcT{J$K-!ssz*YGT?P=^sZ1)e^w=Iy!84*M&Lt{u5n4)t;OG-%`LX>~8 zM%Jj5M%m&O9SWLG;@CS%t@ew=mDhCqy(`gx^>nh;KBD9lIvrPy*p<_C`ZYrM)a7(; z9E`0$(Yd)uW@p;bg*AS}o$u+=rBLDps?e2xyvWIm*QKj#F~=viQCjyK#H-b$w4E5L zZF}f}k0-=j70L|lL9+1(dgunL4(ddYkjbcECOsJqF_)1^&w^4&me@vF$DG6l-`5#d zie4^zPP|oN`qd|S9WL}Y03vVyaK7>FXz1R9?PHToIzsxFjiu28Dh`NvC=L}P$i_Y(#0B)XkLxE z_B{!OIfGR){UuSVHmiCY?l`{@t6mK8;d^CPV=Lxz7GpI>cPBX}i`Co=tAAaE)v1fH zxT7Phd!;VXyjHA1J*45)Us=N|NY{O*>l|re4V@W%i1#YN8da(eLGXk%o`|V9REo8@ z+J$7U&#Wyp0UfHx{2Y6TUPLp$!(WK?SOHF3oHb}leNlZ zBM!kWuKBZ3Z3^Q9dD-ZPktCXyW}&8o_&^;NTGNGii(f2sP7lQJxopg;aU_=SXJamp zBr1BFjq8U8SmwvZXF?$r-Nq)gz>Qo8XOnP)!VtwKjR%!+EZi7EtahxEMYe!Z6mYP} zW$^ESn>t6n*EwM(n|TJ6$nP#1Wgbs9^OloDlT|Ew@Bv~seAuGHC5X*F%wp?7C(M1t zVy7XZ9+|_Ie1P$W9%HMMp(RTmU~8ZBC3^CVtqaUc?0PY_zBnT32WNh^>Cg>gc~jZu zH}KCnm)O>M5DwAqZ0q5>L`(j%?Ojii`0UA&H*k`LINNzXjA+bVwyV!AsN8~V_h?A5 zS%28>dnk=;i`l+EPl-9Vvwyl(BwF8-ct zBRhEL8U9e8{hNZhp1qYFX^f$+I9zA%$vWqGu+&jMNW9&}jt4v-@xBy0pFEr7ikFjE)D)2W6^_d!Zv9auK+37IadFEOXZ$M5vAIX|+IN18cFTZIH*?-eXVw5RjIpuxGs$5*d;eB{1YE7bZ z8;vqPoR@vNkJ$O|yuz+{Vu!EriaY@whIhPLt7Rm9%;O##(GYktp4ZD&oY>eUyq9(3|EQP3DZIA42W`wH>kfs-LjT=?*U7}9w@JY-*P;GJNmw8pM;g@B{0R zPGdd!LH}mBUiZvw2Fx=EM*E=7-Z86Eh|9e|udfHhL*PVh+JnsT%o)PyA@- zJ|tsD@S|t^kpEo{@>CPbWH-iBmj#m8_LZle+kz&}5q@kyMMTDUetbq>Vnf#H9M^y! z--VI-xKbl;+)d}yz5K-N)Kko&rZugpBC=f=hN;Q6A!fN6p6Zxe{1Cd0Y@@pYukQ>JHdySFrzn_@xHVOP?^*|>v z?>hXymc2`5V`L; z8xud>SGZjBz?>wBf)g=UN&ccpczYuIEm5?5Llh2sM2T^eiM?DXN<2D;dLT-asTM%A z=$9xn9LBfYAj&B&aKmPzLeWHG=6#|h*qh_#7M*FyA22ugxt4tQDgFyynDCb`=BeZ$?k3xES=*1SK>^1Wh_eBF{-NII$ig zUIj5US1j?BUBuAz=0truilHw`6K&bz)DC#RVPbeRgvi*FVsr+EsB%v+rZ?ikzZb;# zbbLWmlbCcIY1O5jm~sj^;p`AGBlI%dCsIV0GLYCaP(=5u3%ZKv*=T5-Z!DtI@We?s z#hfy*5m8ypJ%V&z_@kJ2_7sWv1~I=YY%S4QOUxg+i^L{X%nwCJVo8FSpAO?{k|`E+ zK?K|$FBbJcz}fdnELttmP)HMthsBY&-b=)Eo=$w+KO*+!Hxl>##Ii~+iFIr(mcKx@ z%QHo++;*PW&97o*G76kTCRV+H8)uotYM&A$2Tc`g-TI>uk@i`v&u1svHBqeJ?jROD zTx_^-2L5|dY(`6subn6oJ8|MQZ;P!^JUno{*jB`sSnJkeM;i=zdS#J3rVPQ{#opVi zh#$-?_I`dq{OAjDz~GIczAFxoh{X9$;#hZgB1ctm>=WY5{5WwUr2|^sB^rp+l_H3> zD<{qv@g$$p#Tl1SG?!FyrVT{r`TXKs%v0$9{o*|8cz*u6xYz;4HY{9RI%p*pKSW$U zAC3-n9dSFC4~eB~#ht(Ii18M2FEof)@;>pPXFAcGC*r}LvLsiY6%Q3(;zeGHr@^J* z|7mx`>(1FE{=Fu?^zVTWxQK5?$n7pg#rK{L;$srT&peppU0=knCE)hz;&*XZ5(|RG z?=hIm*fjCy2qNXU%Tlyzir791YzDpny@;px1`(Rm)1>)Yj`q7QEweuocRwU8@y;~j zZ68W&snwXn6q&0gtom&mnSUVibK6rIMf41r{|6LHQD2$=7g&CiEc!SM*({eV?TH(j z-$IthYqq6{tom{pjB|~w{!d-vBXY|cH=hwb?xm3>{g58bJ<&dQlXa~7N&Ma{>p52< znOL^VhH>!I68u?D6+Ko?O@)#F36c?( zl|(D6IAz2__~)cUGV*gEG54}^?lK4v%-P(e<1ng!<-BfTBrHqiqGd3uJLBb&g|O@6d4SVb zt~vm}ZuL`c7=^jqe^G9#i3=z6k()XqyLJ366a59TJo{wg=6WP**3&3G+Q=>45^#Q` zOtL^9{P`v|-B7HUM%iDH$<1-2pZ}A|?Jz?1r^w_8EQb`Csng9%BXf3|s~=3hqEVER za#v_!VuHg^2Tj<^o$nBo7Dq|t-GL6bett`6?Q`NC3lgx4?e?C zr|S%8s&hgkjm)dCMp<&4&JG57uZ17U28ZOm|FVg%_mqztMG{MDCbLf0BQ`Qfz8n@v z-0)MrDxHQEtPJ_44RnQzkZ&*e5jAO|QIvZu-#e$RCGjgxe)RSvHtDncm>fd9O=0 z^@=c{k-6fSqI|6m??_M#Ul7WB3{Z>}a07)VDaKn7$c6=!AQOr}KL3VdGrc9on=5$> zj6lsdQ7Lc~p);bVQmD@u;(MDag~Bn%##p6TR2L%iOQm=k6p-CrDR$h4%Z1 zh4)t~_rwC=qBy1M#8$*|nU!iE;m(_T#JCmD?~Glc)Z7YL5H(csxP9?G%=n7As9w3?SZRm*O=9uL~4X zTD0$l;(D{<^B&>q;3B0}ML6*mH>K68C=w40O4|#OM2$acbkf`k`ibmljr{5)jiTH# zjWWMg=@5>Lu(`a_VJZ~d-N#CYLuW`l4Ny9|x)6I?T=f^0)D3n-WXN}@~ z9wiue%1TEnLs~r}R&Tb>9Y-|s1B*1um=em6o*zjPIO-Nwf|e=6rtK%Oc9$}2C*q?^ zJDpu#>x^oo3_AzQy1xi?dO}77YbW@WOeN$BBKoN}%BU_uB-Zs)#=0Ra44J5N>=})$ zd@6pubvCXK^|50_RZO)igyOIan{jtr94P?;K&4zXQDnYs-b zVB$k%>UQ`@v(3s>=P$hRc(yWa@)vaXe3S@x^e2uyRibk@fsmR2#-MhcsLbt&6twz? zGB*}axYJ)*y74W^(HE3u>u`euoyxM43n8pJD=S{tAa*xPSv@J8n145Abwnu9#Wu?7 z?Wc&=E>za~xS~}ZtE|Nele9KcoEvuJBhKe58y@Z>w(ye9CCxO7Vm4*d*(FFFwUk7G z4-TuTBv!tMGQ*~9oeZ1UbY0mNf}VJki_YtBm8731i2AP5$f{;2+v|jos6Rs40rAa3 zzA4G)r;~8~sqEa1;yquGQ`vJIm0PbS%0KgaU_m-S`DcAKqRd*#Kj%+C(S23+(-%n5 zMCAY^FBM&;{5ud@m)8eBg3G~A;1}>S3DH?OG9ez$7ptTO;RAn9X_U$)odp-_9NkRk zBIjJ?SW7G~_p>Xfa^Xq1MLDy4Bk@Z~%GoN2%T@KQ4pnX65MU2J zRdYAlfb4%<%@e%?xz3WN=4}aS=oX~r>wg16=(|SVyo*L`U{GDk{v=VUrCO*LB7DL5 zYN3fwNnFaO7EUezaXwouobE!r)C9GN+h!=Z0cvr#K19VUs>PSUTONCXDimCev7 zOTW=sC6~^=jn!ISp~PIvtF`kd5L?X6WWX~&(KRIi`#f^Wg9Pv!%nxMOO|71&~6FQc|R z6H6>}soH9mH?aea)z+ORk{owbZJjiqD7u%`~`w~^YX-bP|qU#WdQreJCNu122P z+o|^3Q5)8MULBC9B(WLm)B#u~;;TNXK?#FNOuw!M{fb8~Y`i)c1r=@1r4B8JtUe=C z9Uor`W_PZcj zRZLxKb0>bhfV%V~tiN`Wx-=sM9o|psvL#E<?g9F9h8%}|Zfk7b}4*F{a- zb{VUL>vWE@YUKX6)E#SQ5G%7zO?D3;p68RAyb5t<%`SE4l?}-M$Bw9b_-A7G+N=Mp z4?^Bn)q~p*P~0Y~DG$+T?R!l<)WQcf?I88&gxOGdxzwXeu-0|Cx|-S-e>(ra>F_2`%)myP}x3xvo z+oMn6Mh~mE=VQkZyQkh>o5Pvv-AypEV~f>{CIt|nDyt7_HYFK;6l_M)$R!1i}gGjn0i>djI!b4tZ)TzzChDe2**QPw)HW~o2$B)8Q6HX)Mbey_gnkAPJm zpUyUobgnw9QT!dRz78mkzKFm2CK5LiKT~}Z*B8C>U+TN>(L^!z)c1`Qv^DRm&M%{2 zM2ln9Z=g_rslT3WKrhRvW_QdBv01=iYK=&;Pt61#$gBhk?E36zr8D?@AP zi-=lC=TYZTL+he;v=vPTO%}JhtWi|!YiM^RnD`*0p;LTU2#R+G->G)urY|~M`WpPJ zG=fIFWbp6eLAOiqp(E1*RbSUbE2~o4NI+0ko{6L@}dn4IU-azEQXbH1#HI85LYw`g~xtFTt*-w z-yy@=oaM;Z5r%c`a%$a_iiV9w`0WvYjhsuJEpq9MxMA2>cNnqP!mx1~hS|P50-+I8X_Zr-{R6RpV)n{0+>2FAx zjlRh60)|83PV}bd7B?I=Lrms+Z8$vGh1iEf8hKoP!;wo^n;LG@Ii7S*^f#n-ev7tY zn&EUmOr7^PjiO4Z;mkew`-%X=g%Qn(-<)T-*yugcm2QTMnTQuN+88eP@IwpBRih}A z¥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 diff --git a/lang/qet_de.ts b/lang/qet_de.ts index 410e35653..dfffb0ab6 100644 --- a/lang/qet_de.ts +++ b/lang/qet_de.ts @@ -2705,60 +2705,60 @@ Alle Bauteile und Unterordner von diesem Ordner werden ebenso gelöscht. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip Doppelklick zum Öffnen oder Schließen des Projekts - + Cartouches embarqués eingebettete Schriftfelder - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Doppelklick zum Öffnen oder Schließen dieser Sammlung - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Ziehen/Ablegen, um das Schriftfeld auf der Folie anzuwenden. - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Doppelklick zum Öffnen oder Schließen der Sammlung "QElectroTech-Schriftfelder" - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Diese Sammlung von Schriftfeldern kommt standardmäßig mit QElectroTech. Sie ist fester Bestandteil vom System und kann nicht verändert werden. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip Doppelklicken, um die Firmensammlung der Schriftfelder zu verkleinern oder zu erweitern. - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Dies ist die Firmensammlung von Schriftfeldern -- verwenden Sie sie, um die Schriftfelder Ihrer Firma zu erstellen, zu speichern und zu bearbeiten. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Doppelklick zum Öffnen oder Schließen Ihrer persönlichen Schriftfeld-Sammlung - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Dies ist Ihre persönliche Schriftfeld-Sammlung. Benutzen Sie sie, um Ihre eigenen Schriftfelder zu erstellen, ablegen und bearbeiten. @@ -5689,11 +5689,6 @@ Voulez-vous enregistrer les modifications ? message box title Folie löschen? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - Möchten Sie wirklich diese Folie vom Projekt löschen? Dies kann nicht rückgängig gemacht werden. - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. diff --git a/lang/qet_el.ts b/lang/qet_el.ts index 680f38c25..6baba5b0c 100644 --- a/lang/qet_el.ts +++ b/lang/qet_el.ts @@ -1680,17 +1680,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte Επεξεργασία της γραμματοσειράς ενός πλαισίου κειμένου - + Modifier la couleur d'un champ texte Επεξεργασία του χρώματος ενός πεδίου κειμένου - + Modifier la conservation de l'angle @@ -1715,7 +1715,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol Επεξεργασία της πηγής του κειμένου - + Modifier l'alignement d'un champ texte Επεξεργασία της στοίχισης ενός πεδίου κειμένου @@ -2007,7 +2007,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple Απλό @@ -2042,93 +2042,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol Μικρογραφία - + + Définition de conducteur + + + + Normalement ouvert Κανονικά ανοικτή - + Normalement fermé Κανονικά κλειστή - + Inverseur Μεταγωγική - + Other Άλλο - + Puissance Ισχύος - + Temporisé travail Καθυστέρηση ενεργοποίησης - + Temporisé repos Καθυστέρηση απενεργοποίησης - + Temporisé travail & repos Καθυστέρηση ενεργοποίησης & απενεργοποίησης - + Bobine Πηνίο - + Organe de protection Συσκευή προστασίας - + Commutateur / bouton Διακόπτης / κουμπί - - + + Générique Γενικό - + Fusible Ασφάλεια - + Séctionnable - + Diode Δίοδος - + Phase Φάση - + Neutre Ουδέτερος - + Terre Γείωση @@ -2136,99 +2141,99 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général Γενικά - + Élement Στοιχείο - + Nom : %1 Όνομα: %1 - + Folio : %1 Σελίδα: %1 - + Type : %1 Τύπος: %1 - + Sous-type : %1 Υπο-τύπος:%1 - + Position : %1 Θέση: %1 - + Rotation : %1° Περιστροφή :%1° - + Dimensions : %1*%2 Διαστάσεις: %1*%2 - + Bornes : %1 Ακροδέκτες: %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Τοποθέτηση: %1 - + Retrouver dans le panel Εύρεση στο πλαίσιο - + Éditer l'élément Επεξεργασία του στοιχείου @@ -2693,60 +2698,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip Διπλό πάτημα για ανάπτυξη ή αναδίπλωση του έργου - + Cartouches embarqués Ενσωματωμένες πινακίδες - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Διπλό πάτημα για ανάπτυξη ή αναδίπλωση της ενσωματωμένης συλλογής πινακίδων - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Σύρετε το πρότυπο πινακίδας στη σελίδα για να το εφαρμόσετε. - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Διπλό πάτημα για ανάπτυξη ή αναδίπλωση αυτής της συλλογής πινακίδων του QElectroTech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Αυτή είναι η συλλογή πινακίδων που παρέχεται μαζί με το QElectroTech. Εγκατεστημένη σαν στοιχείο του συστήματος,και δεν μπορείτε να τη προσαρμόσετε. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Διπλό πάτημα για ανάπτυξη ή αναδίπλωση της προσωπικής σας συλλογής πινακίδων - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Αυτή είναι η προσωπική σας συλλογή από πινακίδες --χρησιμοποιήστε τη για να δημιουργήσετε, να αποθηκεύσετε και να επεξεργαστείτε τις δικές σας πινακίδες. @@ -2755,97 +2760,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Éditer ce modèle Επεξεργασία αυτού του προτύπου - + Supprimer ce modèle Διαγραφή αυτού του προτύπου - + Fermer ce projet Κλείσιμο του έργου - + Propriétés du projet Ιδιότητες του έργου - + Ouvrir le dossier correspondant Άνοιγμα του αντίστοιχου καταλόγου - + Copier le chemin Αντιγραφή της διαδρομής - + Basculer vers ce projet Ενεργοποίηση αυτού του έργου - + Propriétés du folio Ιδιότητες σελίδας - + Ajouter un folio Προσθήκη σελίδας - + Supprimer ce folio Διαγραφή σελίδας - + Remonter ce folio Μετακίνηση πάνω - + Abaisser ce folio Μετακίνηση κάτω - + Remonter ce folio x10 Μετακίνηση πάνω x10 - + Remonter ce folio x100 Μετακίνηση πάνω x100 - + Remonter ce folio au debut Μετακίνηση στην αρχή - + Abaisser ce folio x10 Μετακίνηση κάτω x10 - + Abaisser ce folio x100 Μετακίνηση κάτω x100 - + Nouveau modèle Νέο πρότυπο - + Filtrer Φιλτράρισμα @@ -5637,12 +5642,12 @@ Les variables suivantes sont incompatibles : ProjectView - + Supprimer les éléments inutilisés dans le projet Διαγραφή των αχρησιμοποίητων στοιχείων του έργου - + Supprimer les catégories vides Διαγραφή των άδειων κατηγοριών @@ -5665,67 +5670,61 @@ Voulez-vous enregistrer les modifications ? Έργο QElectroTech (*.qet) - + Supprimer le folio ? message box title Διαγραφή φύλλου; - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - Είστε σίγουρος ότι θέλετε να διαγράψετε αυτό το φύλλο του έργου; Οι διαγραφή είναι μη αναστρέψιμη. - - - + Projet en lecture seule message box title Έργο μόνο για ανάγνωση - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Αυτό το έργο είναι μόνο για ανάγνωση. Κατά συνέπεια, δεν μπορεί να καθαριστεί. - + Supprimer les modèles de cartouche inutilisés dans le projet Διαγραφή των μη χρησιμοποιούμενων προτύπων από το έργο - + Nettoyer le projet window title Καθαρισμός του έργου - + Ajouter un folio Προσθήκη φύλλου - + Revenir au debut du projet Επιστροφή στην αρχή του έργου - + Aller à la fin du projet Μετάβαση στο τέλος του έργου - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Το έργο δεν περιέχει φύλλα @@ -5743,12 +5742,18 @@ Voulez-vous enregistrer les modifications ? Χωρίς έργο προς εμφάνιση - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Άνοιγμα του έργου ...</b><br/>Δημιουργία καρτελών σελίδων :</p> - + Projet window title for a project-less ProjectView Έργο @@ -6036,317 +6041,317 @@ Options disponibles : QETDiagramEditor - + Afficha&ge Προβο&λή - + Affiche ou non le panel d'appareils Εμφανίζει (ή όχι) το πλαίσιο στοιχείων - + Ajouter une colonne Προσθήκη στήλης - + &Cascade &Κλιμάκωση - + C&oller Επι&κόλληση - + Cop&ier Αντι&γραφή - + Co&uper Α&ποκοπή - + Désélectionner tout Αποεπιλογή όλων - + &Édition Ε&πεξεργασία - + Enlever une colonne Απομάκρυνση στήλης - + &Enregistrer &Αποθήκευση - + Enregistrer sous Αποθήκευση ως - + E&xporter Ε&ξαγωγή - + Fe&nêtres Παρά&θυρα - + &Fermer &Κλείσιμο - + &Fichier &Αρχείο - + Imprimer Εκτύπωση - + Inverser la sélection Αντιστροφή της επιλογής - + Mode Selection Κατάσταση Λειτουργίας Επιλογής - + Mode Visualisation Κατάσταση Λειτουργίας Προβολής - + &Mosaïque &Μωσαϊκό - + &Nouveau &Νέο - + Outils Εργαλεία - + &Ouvrir Άν&οιγμα - + Ouvrir un fichier Άνοιγμα αρχείου - + Pas de zoom Επαναφορά της εστίασης - + Pivoter Περιστροφή - + &Quitter &Τερματισμός - + Supprimer Διαγραφή - + Tout sélectionner Επιλογή Όλων - + Zoom adapté Εστίαση ώστε να χωράει - + Zoom arrière Αποεστίαση - + Zoom avant Εστίαση - + Annuler Αναίρεση - + Refaire Επαναφορά - + Réinitialiser les conducteurs Επαναφορά των αγωγών - + Affiche ou non la barre d'outils principale Προβολή ή απόκρυψη της κύριας γραμμής εργαλείων - + Affiche ou non la barre d'outils Affichage Προβολή ή απόκρυψη της γραμμής εργαλείων Προβολής - + Affiche ou non la barre d'outils Schéma Προβολή ή απόκρυψη της γραμμής εργαλείων Διαγραμμάτων - + Affichage Προβολή - + Schéma Διάγραμμα - + Ajouter un champ de texte Προσθήκη πεδίου κειμένου - + Aucune modification Καμία αλλαγή - + Affiche ou non la liste des modifications Προβολή ή απόκρυψη του καταλόγου αναιρέσεων - + Éditer l'item sélectionné Επεξεργασία του επιλεγμένου αντικειμένου - + Lancer le plugin de création de borniers Έναρξη του προσθέτου δημιουργίας ακροδεκτών - + Grouper les textes sélectionnés Ομαδοποίηση επιλεγμένων κειμένων - + Pivote les éléments et textes sélectionnés status bar tip Περιστροφή των επιλεγμένων στοιχείων και των επιλεγμένων κειμένων - + Pivote les textes sélectionnés à un angle précis status bar tip Περιστροφή των επιλεγμένων κειμένων κατά μία συγκεκριμένη γωνία - + Chercher/remplacer Αναζήτηση / Αντικατάσταση - + &Projet Έρ&γο - + &Récemment ouverts Προσφάτως ανοιγμένα - - + + Projet %1 enregistré dans le repertoire: %2. Το έργο %1 αποθηκεύτηκε στον κατάλογο: %2. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Το αρχείο, το όποιο προσπαθείτε να ανοίξετε, δεν φαίνεται να είναι αναγνώσιμο και δεν μπορεί να ανοιχτεί. Παρακαλώ, ελέγξτε τα δικαιώματα του αρχείου. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Το έργο, το οποίο προσπαθείτε να ανοίξετε, δεν φαίνεται να είναι εγγράψιμο. Θα ανοιχτεί μόνο για ανάγνωση. - + en utilisant des onglets χρήση καρτελών - + en utilisant des fenêtres χρήση παραθύρων - + Afficher les projets Προβολή των έργων - + Propriétés du projet Ιδιότητες του έργου - + Nettoyer le projet Καθαρισμός του έργου - - + + Échec de l'ouverture du projet message box title Αδυναμία ανοίγματος του έργου - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Το αρχείο %1 δεν δείχνει να είναι αρχείο έργου QElectroTech. Κατά συνέπεια, δεν μπορεί να ανοιχτεί. @@ -6364,92 +6369,92 @@ Options disponibles : QElectroTech - + Annulations dock title Αναιρέσεις - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Επιλέξτε μια ενέργεια για να επαναφέρετε τις αλλαγές που κάνατε στο διάγραμμα σας - + Orienter les textes Προσανατολισμός των κειμένων - + Retrouver dans le panel Εύρεση στο πλαίσιο - + Ajouter une image Προσθήκη εικόνας - + Ajouter un sommaire Προσθήκη περίληψης - + Zoom sur le contenu Εστίαση στο περιεχόμενο - + Ferme l'application QElectroTech status bar tip Κλείνει το QElectroTech - + Annule l'action précédente status bar tip Αναιρεί την προηγούμενη πράξη - + Restaure l'action annulée status bar tip Επαναφέρει την προηγούμενη αναίρεση - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Τοποθετεί τα επιλεγμένα στοιχεία στο πρόχειρο αντιγραφής - + Copie les éléments sélectionnés dans le presse-papier status bar tip Αντιγράφει τα επιλεγμένα στοιχεία - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Αποεπιλέγει όσα στοιχεία είναι επιλεγμένα, και επιλέγει όσα δεν ήταν επιλεγμένα - + Retrouve l'élément sélectionné dans le panel status bar tip Εύρεση του επιλεγμένου στοιχείου στον πίνακα - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Επαναφορά της διαδρομής των αγωγών, αγνοώντας τις αλλαγές του χρήστη - + Création automatique de conducteur(s) Tool tip of auto conductor Αυτόματη δημιουργία αγωγών @@ -6461,459 +6466,475 @@ Options disponibles : Έργα - + Collections Συλλογές - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Χρήση της αυτόματης δημιουργίας αγωγών όταν αυτό είναι δυνατόν - + Restaure le zoom par défaut status bar tip Επαναφέρει το προκαθορισμένο μέγεθος εστίασης - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Εμφανίζει τα διάφορα ανοιγμένα έργα, σε παράθυρα - + Ajouter une nomenclature Προσθήκη ονοματολογίας - + Présente les différents projets ouverts des onglets status bar tip Εμφανίζει τα διάφορα ανοιγμένα έργα, σε καρτέλες - + Permet de sélectionner les éléments status bar tip Επιτρέπει την επιλογή στοιχείων - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel Προσθέτει ένα πεδίο κειμένου στην τρέχουσα σελίδα - + Ajoute une image sur le folio actuel Προσθήκη εικόνας στην τρέχουσα σελίδα - + Ajoute une ligne sur le folio actuel Προσθήκη γραμμής στην τρέχουσα σελίδα - + Ajoute un rectangle sur le folio actuel Προσθήκη ορθογώνιου στην τρέχουσα σελίδα - + Ajoute une ellipse sur le folio actuel Προσθήκη έλλειψης στην τρέχουσα σελίδα - + Ajoute une polyligne sur le folio actuel Προσθήκη πολυγραμμής στην τρέχουσα σελίδα - + Ajoute un plan de bornier sur le folio actuel - + Ajouter Προσθήκη - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Διπλό κλικ για τελείωμα του σχήματος, Δεξί κλικ για ακύρωση του τελευταίου σημείου - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Éditer l'élement edit element Επεξεργασία του στοιχείου - + Éditer le champ de texte edit text field Επεξεργασία του πεδίου κειμένου - + Éditer l'image edit image Επεξεργασία εικόνας - + Éditer le conducteur edit conductor Επεξεργασία αγωγού - + Éditer l'objet sélectionné edit selected item Επεξεργασία του επιλεγμένου αντικειμένου - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Παρουσιάστηκε σφάλμα κατά το άνοιγμα του αρχείου %1. - + Active le projet « %1 » Ενεργοποιεί το έργο « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Σφάλμα - + Dispose les fenêtres en mosaïque status bar tip Διαρρυθμίζει τα παράθυρα σαν πλακίδια - + Dispose les fenêtres en cascade status bar tip Διαρρύθμιση των παραθύρων σε κλιμακωτή διάταξη - + Projet suivant Επόμενο έργο - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Αυτό το παράθυρο εμφανίζει τις διάφορες δράσεις που γίνονται στην τρέχουσα σελίδα. Πατήστε σε μια δράση για να επιστρέψετε στην κατάσταση της σελίδας αμέσως μετά την εφαρμογή. - + Exporter en pdf Εξαγωγή ως pdf - + Exporte un ou plusieurs folios du projet courant status bar tip Εξάγει μία ή περισσότερες σελίδες του τρέχοντος έργου - + Couleur de fond blanc/gris Tool tip of white/grey background button Χρώμα παρασκηνίου λευκό/γκρι - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Εμφανίζει το χρώμα παρασκηνίου της σελίδας σε λευκό ή γκρι - + Afficher la grille Εμφάνιση του δικτυώματος - + Affiche ou masque la grille des folios Εμφάνιση ή απόκρυψη του δικτυώματος της σελίδας - + Propriétés du folio Ιδιότητες σελίδας - + Ajouter un folio Προσθήκη σελίδας - + + Supprimer le folio Διαγραφή σελίδας - + Exporter au format CSV Εξαγωγή ως CSV - + Gestionnaire de borniers (DEV) Διαχειριστής ακροδεκτών (DEV) - + Exporter la liste des noms de conducteurs Εξαγωγή της λίστας των ονομάτων των αγωγών - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet Εξαγωγή της εσωτερικής βάσης δεδομένων έργου - + Projet précédent Προηγούμενο έργο - + Crée un nouveau projet status bar tip Δημιουργία νέου έργου - + Ouvre un projet existant status bar tip Άνοιγμα υπάρχοντος έργου - + Ferme le projet courant status bar tip Κλείσιμο τρέχοντος έργου - + Enregistre le projet courant et tous ses folios status bar tip Αποθήκευση τρέχοντος έργου - + Enregistre le projet courant avec un autre nom de fichier status bar tip Αποθήκευση του τρέχοντος έργου με διαφορετικό όνομα αρχείου - + Ajouter une ligne Add row Προσθήκη γραμμής - + Enlever une ligne Remove row Αφαίρεση γραμμής - + Ajoute une colonne au folio status bar tip Προσθήκη στήλης στη σελίδα - + Enlève une colonne au folio status bar tip Απομάκρυνση στήλης από τη σελίδα - + Agrandit le folio en hauteur status bar tip Επεκτείνει το ύψος της σελίδας - + Rétrécit le folio en hauteur status bar tip Συρρικνώνει το ύψος της σελίδας - + Enlève les éléments sélectionnés du folio status bar tip Διαγράφει τα επιλεγμένα στοιχεία από τη σελίδα - + Sélectionne tous les éléments du folio status bar tip Επιλέγει όλα τα στοιχεία τις σελίδας - + Désélectionne tous les éléments du folio status bar tip Αποεπιλέγει όλα τα στοιχεία τις σελίδας - + Agrandit le folio status bar tip Επεκτείνει τη σελίδα - + Rétrécit le folio status bar tip Συρρικνώνει τη σελίδα - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Προσαρμογή της εστίασης έτσι ώστε να εμφανιστούν όλα τα περιεχόμενα της σελίδας ανεξάρτητα από το πλαίσιο - + Adapte le zoom exactement sur le cadre du folio status bar tip Προσαρμογή της εστίασης στο μέγεθος του πλαισίου της σελίδας - + Ajouter une ligne Draw line Προσθήκη γραμμής - + Ajouter un rectangle Προσθήκη παραλληλόγραμμου - + Ajouter une ellipse Προσθήκη έλλειψης - + Ajouter une polyligne Προσθήκη πολυγραμμής - + Exporte le folio courant dans un autre format status bar tip Εξάγει την τρέχουσα σελίδα σε διαφορετική μορφή - + Imprime un ou plusieurs folios du projet courant status bar tip Εκτυπώνει μία ή περισσότερες σελίδες του τρέχοντος έργου - + Profondeur toolbar title Βάθος - + Groupe Ομάδα - + Place les éléments du presse-papier sur le folio status bar tip Επικολλάει τα περιεχόμενα του προχείρου στη σελίδα - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Επεξεργαστείτε τις ιδιότητες της σελίδας (διαστάσεις, πληροφορίες πινακίδας, ιδιότητες αγωγών...) - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Επιτρέπει την προβολή της σελίδας χωρίς να είναι δυνατή η μετατροπή της - + Active le projet suivant status bar tip Ενεργοποιεί το επόμενο έργο - + Active le projet précédent status bar tip Ενεργοποιεί το προηγούμενο έργο - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) Έργα QElectroTech (*.qet);;Αρχεία XML (*.xml);;Όλα τα αρχεία (*) - - + + Impossible d'ouvrir le fichier message box title Αδυναμία ανοίγματος του αρχείου - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Φαίνεται ότι το αρχείο 1% που προσπαθείτε να ανοίξετε δεν υπάρχει. - + Ouverture du projet en lecture seule message box title Άνοιγμα του αρχείου μόνο για ανάγνωση @@ -7112,53 +7133,53 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Ajouter une ligne Προσθήκη γραμμής - + Ajouter une ellipse Προσθήκη έλλειψης - + Ajouter un polygone Προσθήκη πολυγώνου - + Ajouter du texte Προσθήκη κειμένου - + Ajouter un arc de cercle Προσθήκη τόξου - + Ajouter une borne Προσθήκη ακροδέκτη - + Annuler Αναίρεση - + Refaire Επαναφορά - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>Λόγω απουσίας ακροδέκτη, το στοιχείο δεν θα μπορεί να συνδεθεί με άλλα στοιχεία μέσω αγωγών. - + Aucune modification Καμία αλλαγή @@ -7203,13 +7224,13 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Επεξεργασία των πληροφοριών του συγγραφέα - + Parties toolbar title Τμήματα - + Profondeur toolbar title Βάθος @@ -7225,12 +7246,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Επεξεργασία των ιδιοτήτων του στοιχείου - + Ajouter un champ texte dynamique Προσθήκη πεδίου δυναμικού κειμένου - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Διπλό κλικ για τελείωμα του σχήματος, Δεξί κλικ για ακύρωση του τελευταίου σημείου @@ -7267,7 +7288,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [Μόνο για ανάγνωση] - + Éditeur d'éléments status bar message Επεξεργαστής στοιχείων @@ -7282,24 +7303,24 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title Απουσία ακροδέκτη - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Σφάλμα</b> :<br>Οι αναφορές σελίδας πρέπει να έχουν ένα μοναδικό ακροδέκτη.<br><b>Λύση</b> :<br>Βεβαιωθείτε ότι το στοιχείο έχει ένα μοναδικό ακροδέκτη - + La vérification de cet élément a généré message box content Ο έλεγχος του στοιχείου επέστρεψε - + %n erreur(s) errors @@ -7308,32 +7329,32 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et και - + Erreurs Σφάλματα - + Absence de borne Απουσία ακροδέκτη - + Ajouter un texte d'élément non éditable dans les schémas Προσθήκη μη επεξεργάσιμου κειμένου στοιχείου στα διαγράμματα - + Ajouter un texte d'élément pouvant être édité dans les schémas Προσθήκη επεξεργάσιμου κειμένου στοιχείου στα διαγράμματα - + %n avertissement(s) warnings @@ -7342,7 +7363,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 @@ -7361,21 +7382,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Αδυναμία ανοίγματος του αρχείου %1. - + Ce fichier n'est pas un document XML valide message box content Αυτό το αρχείο δεν είναι ένα έγκυρο έγγραφο XML - + Erreur toolbar title Σφάλμα @@ -7419,49 +7440,59 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Avertissement Προειδοποίηση - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Η εισαγωγή ενός μεγάλου dxf μπορεί να πάρει χρόνο περιμένετε κατά την εισαγωγή... - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) Στοιχεία του QElectroTech (*.elmt) - + Impossible d'ouvrir le fichier message box title Αδυναμία ανοίγματος του αρχείου - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Φαίνεται ότι το αρχείο %1 που προσπαθείτε να ανοίξετε δεν υπάρχει. - - - + + + Echec de l'enregistrement Αποτυχία αποθήκευσης - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Η αποθήκευση απέτυχε, οι συνθήκες δεν είναι έγκυρες @@ -7479,43 +7510,43 @@ les conditions requises ne sont pas valides Στοιχεία του QElectroTech (*.elmt);;Αρχεία XML (*.xml);;Όλα τα αρχεία (*) - + Recharger l'élément dialog title Επαναφόρτωση του στοιχείου - + Avertissements Προειδοποιήσεις - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Αυτό το στοιχείο έχει αλλαχθεί, μετά από την τελευταία αποθήκευσή του. Αν το επαναφορτώσετε, αυτές οι αλλαγές θα χαθούν. Θέλετε πραγματικά να επαναφορτωθεί αυτό το στοιχείο; - + Enregistrer sous dialog title Αποθήκευση ως - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file Στοιχεία του QElectroTech (*.elmt) - + Enregistrer l'élément en cours ? dialog title Αποθήκευση του παρόντος διαγράμματος; - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Θέλεις να γίνει αποθήκευση του στοιχείου %1; @@ -7523,22 +7554,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title Μη υπαρκτό στοιχείο. - + L'élément n'existe pas. message box content Το στοιχείο δεν υπάρχει. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Η επιλεγμένη εικονική διαδρομή δεν ταιριάζει σε κάποιο στοιχείο. @@ -7559,7 +7590,7 @@ les conditions requises ne sont pas valides Επι&κόλληση - + Ajouter un rectangle Προσθήκη παραλληλόγραμμου @@ -8093,7 +8124,7 @@ Que désirez vous faire ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Προσοχή: Το στοιχείο έχει αποθηκευτεί με μια νεότερη έκδοση του QElectroTech. @@ -9320,22 +9351,22 @@ Voulez-vous la remplacer ? Δημιουργία αγωγών - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Για να εγκαταστήσετε το πρόσθετο qet_tb_generator<br>Επισκεφθείτε το:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'> qet-tb-generator</a><br> Απαιτεί python 3.5 ή παραπάνω <br> <B> <U> Πρώτη εγκατάσταση στα Windows </B> </U> <br> 1. Εγκατάσταση, εάν απαιτείται, python 3.5 ή παραπάνω <br> Επισκεφθείτε το: <br> <a href='https://www.python.org/downloads/'> python.org </a> <br> 2. pip install qet_tb_generator <br> <B> <U> Ενημέρωση στα Windows </B> </U> <br> python -m pip install --upgrade qet_tb_generator <br>>> Ο χρήστης θα μπορούσε να ξεκινήσει σε ένα τερματικό αυτό το σενάριο σε αυτό τον κατάλογο <br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Για να εγκαταστήσετε το πρόσθετο qet_tb_generator<br>Επισκεφθείτε το:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'> qet-tb-generator</a><br><br> Απαιτεί python 3.5 ή παραπάνω <br><br> <B> <U> Πρώτη εγκατάσταση στο Linux </B> </U> <br> 1. ελέγχτε αν έχετε εγκατεστημένο το pip3: pip3 --version<br>αν οχι, εγκαταστήστε το με: sudo apt-get install python3-pip<br>2. Εγκαταστήστε την εφαρμογή: sudo pip3 install qet_tb_generator<br>3. Εκκινήστε την εφαρμογή: qet_tb_generator<br><br><B><U> Αναβάθμιση σε Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Σφάλμα εκκίνησης του προσθέτου qet_tb_generator @@ -9482,51 +9513,51 @@ Voulez-vous la remplacer ? Επεξεργασία των ιδιοτήτων μιας ομάδας ακροδεκτών - - + + Générique generic terminal element type Γενικό - + Fusible fuse terminal element type Ασφάλεια - + Sectionable sectional terminal element type - + Diode diode terminal element type Δίοδος - + Terre ground terminal element type Γείωση - - + + Générique generic terminal element function Γενικό - + Phase phase terminal element function Φάση - + Neutre neutral terminal element function Ουδέτερος @@ -9542,7 +9573,7 @@ Voulez-vous la remplacer ? Άνοιγμα ενός στοιχείου - + Importer un fichier dxf Εισαγωγή ενος αρχείου dxf @@ -14254,92 +14285,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur Σφάλμα - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Τάση / πρωτόκολλο - + Couleur du fil Wiring list CSV header Χρώμα αγωγού - + Section du fil Wiring list CSV header Τμήμα αγωγού - + Fonction Wiring list CSV header Λειτουργία - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_en.qm b/lang/qet_en.qm index 08d109d4fe430749be14a60104bb8d79bfec72f9..4c4f5ed9f9c274361a5d983b3f7555ed1b2e7328 100644 GIT binary patch delta 18303 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 delta 17671 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 diff --git a/lang/qet_en.ts b/lang/qet_en.ts index 5f6346156..f69560320 100644 --- a/lang/qet_en.ts +++ b/lang/qet_en.ts @@ -1682,17 +1682,17 @@ Note: these options DO NOT allow or block auto numberings, only their update pol - + Modifier la police d'un champ texte Change the font of a text field - + Modifier la couleur d'un champ texte Change the color of a text field - + Modifier la conservation de l'angle Modify the conservation of the angle @@ -1717,7 +1717,7 @@ Note: these options DO NOT allow or block auto numberings, only their update pol Change text source, text - + Modifier l'alignement d'un champ texte Modify the alignment of a text field @@ -2009,7 +2009,7 @@ Note: these options DO NOT allow or block auto numberings, only their update pol - + Simple Simple @@ -2044,93 +2044,98 @@ Note: these options DO NOT allow or block auto numberings, only their update pol Thumbnail - + + Définition de conducteur + Conductor definition + + + Normalement ouvert Switch normally open - + Normalement fermé Switch normally closed - + Inverseur switch - + Other Other - + Puissance Power switch - + Temporisé travail Switch-on delayed - + Temporisé repos Switch-off delayed - + Temporisé travail & repos Switch-on and off delayed - + Bobine coil - + Organe de protection Organ of protection - + Commutateur / bouton Switch / button - - + + Générique Generic - + Fusible Fuse - + Séctionnable Sectionable - + Diode Diode - + Phase Phase - + Neutre Neutral - + Terre Ground @@ -2138,101 +2143,101 @@ Note: these options DO NOT allow or block auto numberings, only their update pol ElementPropertiesWidget - + Général General - + Élement Element - + Nom : %1 Name : %1 - + Folio : %1 Folio : %1 - + Type : %1 Type: %1 - + Sous-type : %1 Sub-type : %1 - + Position : %1 Position : %1 - + Rotation : %1° Rotation : %1° - + Dimensions : %1*%2 Dimensions : %1*%2 - + Bornes : %1 Terminals : %1 - + Nombre maximum de contacts esclaves définis : %1 Maximum number of slave contacts defined: %1 - + Nombre de contacts esclaves utilisés : %1 Number of slave contacts used : %1 - + Emplacement : %1 Location : %1 - + Retrouver dans le panel Find in the panel - + Éditer l'élément Edit element @@ -2697,60 +2702,60 @@ All the elements and contents file in this folder will be deleted. ElementsPanel - + Cartouches embarqués Embedded title blocks - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Double-click to collapse or expand this embedded title blocks collection - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Drag and drop this title block template onto a folio to apply it. - + Double-cliquez pour réduire ou développer ce projet Status tip Double-click to collapse or expand this project - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Double-click to collapse or expand the QElectrotech title blocks collection - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip This is the title blocks collection provided along with QElectroTech. Installed as a system component, you normally cannot customize it. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip Double-click to collapse or expand the title block company collection - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip This is the title block company collection -- use it to create, store and edit your own title blocks. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Double-click to collapse or expand your own title blocks collection - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip This is your custom title blocks collection -- use it to create, store and edit your own title blocks. @@ -2759,97 +2764,97 @@ All the elements and contents file in this folder will be deleted. ElementsPanelWidget - + Ouvrir le dossier correspondant Open the underlying directory - + Copier le chemin Copy full path to clipboard - + Basculer vers ce projet Activate this project - + Éditer ce modèle Edit this template - + Supprimer ce modèle Delete this template - + Fermer ce projet Close this project - + Propriétés du projet Project properties - + Propriétés du folio Folio properties - + Ajouter un folio Add a folio - + Supprimer ce folio Delete this folio - + Remonter ce folio Move up this folio - + Abaisser ce folio Move down this folio - + Remonter ce folio x10 Move up this folio x10 - + Remonter ce folio x100 Move up this folio x100 - + Remonter ce folio au debut Move up this folio to the beginning - + Abaisser ce folio x10 Move down this folio x10 - + Abaisser ce folio x100 Move down this folio x100 - + Nouveau modèle New template - + Filtrer Filter @@ -5638,12 +5643,12 @@ The following variables are incompatible: ProjectView - + Supprimer les éléments inutilisés dans le projet Delete unused elements in the project - + Supprimer les catégories vides Delete empty categories @@ -5666,67 +5671,61 @@ Do you want to save changes? Project QElectroTech (*.qet) - + Supprimer le folio ? message box title Delete this folio ? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - Do you really want to delete this folio from the project? This change is irreversible. - - - + Projet en lecture seule message box title Read-only project - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content This project is read-only. Thus it can not be cleaned. - + Supprimer les modèles de cartouche inutilisés dans le projet delete unused templates in the project - + Nettoyer le projet window title Clean project - + Ajouter un folio Add a folio - + Revenir au debut du projet Go back to the start of the project - + Aller à la fin du projet Go to the end of the project - + go one page left go one page left - + go one page right go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram This project does not contain any folio @@ -5744,12 +5743,18 @@ Do you want to save changes? no active project - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + Are you sure you want to delete this folio from the project? This change is irreversible. + + + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Opening the project ...</b><br/>Creating folio tabs :</p> - + Projet window title for a project-less ProjectView Project @@ -6040,570 +6045,571 @@ Available options: QETDiagramEditor - + Afficha&ge Displ&ay - + Affiche ou non le panel d'appareils Show or hide the elements panel - + Ajouter une colonne Add a column - + &Cascade &Cascade - + C&oller &Paste - + Cop&ier &Copy - + Co&uper Cu&t - + Désélectionner tout Select none - + &Édition &Edit - + Enlever une colonne Remove a column - + &Enregistrer &Save - + Enregistrer sous Save as - + E&xporter &Export - + Fe&nêtres Wi&ndows - + &Fermer &Close - + &Fichier &File - + Imprimer Print - + Inverser la sélection Invert selection - + Mode Selection Select - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip This panel lists the various changes applied to the current folio. Clicking a change gets the folio back to its state right after it was applied. - + Couleur de fond blanc/gris Tool tip of white/grey background button Background color white / gray - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Displays the background color of the folio in white or gray - + Afficher la grille Display the grid - + Affiche ou masque la grille des folios Display or hide the grid of folio - + Propriétés du folio Folio properties - + Ajouter un folio Add a folio - + + Supprimer le folio Delete this folio - + Mode Visualisation Move - + &Mosaïque &Tile - + Exporter en pdf Export in pdf - + Exporte un ou plusieurs folios du projet courant status bar tip Export one or more folios of the current project - + Exporter au format CSV Export to CSV - + Gestionnaire de borniers (DEV) Terminal block manager (DEV) - + Lancer le plugin de création de borniers Launch the terminal block creation plugin - + Exporter la liste des noms de conducteurs Export the list of names of wires - + Exporter le plan de câblage Export the wiring diagram - + Numérotation automatique des bornes Automatic numbering of terminals - + Exporter la base de donnée interne du projet Export the internal project database - + &Nouveau &New - + Crée un nouveau projet status bar tip Creates a new project - + Ouvre un projet existant status bar tip Opens an existing project - + Ferme le projet courant status bar tip Closes the current project - + Enregistre le projet courant et tous ses folios status bar tip Saves the current project and all its folios - + Enregistre le projet courant avec un autre nom de fichier status bar tip Saves the current project with a different file name - + Ajouter une ligne Add row Add row - + Enlever une ligne Remove row Remove a row - + Ajoute une colonne au folio status bar tip Add a column to the folio - + Enlève une colonne au folio status bar tip Remove a column from the folio - + Agrandit le folio en hauteur status bar tip Expands the folio height - + Rétrécit le folio en hauteur status bar tip Shrinks the folio height - + Enlève les éléments sélectionnés du folio status bar tip Removes selected elements from the folio - + Sélectionne tous les éléments du folio status bar tip Selects all elements on the folio - + Désélectionne tous les éléments du folio status bar tip Deselect all elements on the folio - + Agrandit le folio status bar tip Expand the folio - + Rétrécit le folio status bar tip Shrinks the folio - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Adjusts the zoom to display all the contents of folio regardless of context - + Adapte le zoom exactement sur le cadre du folio status bar tip Adjusts the zoom on exactly the part of the folio - + Ajouter une ligne Draw line Add line - + Ajouter un rectangle Add a rectangle - + Ajouter une ellipse Add an ellipse - + Ajouter une polyligne Add a polygon - + Exporte le folio courant dans un autre format status bar tip Exports the current folio to another format - + Imprime un ou plusieurs folios du projet courant status bar tip Prints one or more folio of the current project - + Profondeur toolbar title Depth - + Groupe Group - + Place les éléments du presse-papier sur le folio status bar tip Pastes elements from the clipboard into the folio - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Edits the properties of the folio (size, title block informations, conductor properties...) - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Allows to view the folio without modifying it - + Outils Tools - + &Ouvrir &Open - + Ouvrir un fichier Open a file - + Pas de zoom Reset zoom - + Pivoter Rotate - + &Quitter &Quit - + Supprimer Delete - + Tout sélectionner Select All - + Zoom adapté Fit in view - + Zoom arrière Zoom Out - + Zoom avant Zoom In - + Annuler Undo - + Refaire Redo - + Réinitialiser les conducteurs Reset conductors - + Affiche ou non la barre d'outils principale Display or hide the main toolbar - + Affiche ou non la barre d'outils Affichage Display or hide the Display toolbar - + Affiche ou non la barre d'outils Schéma Display or hide the Diagram toolbar - + Affichage Display - + Schéma Diagram - + Ajouter un champ de texte Add a textfield - + Aucune modification No modification - + Affiche ou non la liste des modifications Display or hide the undo list - + Éditer l'item sélectionné Edit the selected item - + Grouper les textes sélectionnés Group selected texts - + Pivote les éléments et textes sélectionnés status bar tip Rotate selected elements and texts - + Pivote les textes sélectionnés à un angle précis status bar tip Rotate selected texts to a specific angle - + Chercher/remplacer Search / Replace - + &Projet &Project - + &Récemment ouverts &Latest files - - + + Projet %1 enregistré dans le repertoire: %2. Project %1 registered in the directory: %2. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. The file you try to open does not seem readable and can not be opened. Please check the file permissions. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. The project you try to open does not seem writable. It will be opened read-only. - + en utilisant des onglets using tabs - + en utilisant des fenêtres using windows - + Afficher les projets Display projects - + Propriétés du projet Project properties - + Nettoyer le projet Clean project - - + + Échec de l'ouverture du projet message box title Unable to open project - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content The file %1 does not appear to be a QElectroTech project file. Thus it cannot be opened. @@ -6621,92 +6627,92 @@ Available options: QElectroTech - + Annulations dock title Undo - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Click an action to get back in the changes you made to your diagram - + Orienter les textes Choose texts orientation - + Retrouver dans le panel Find in the panel - + Ajouter une image Add a picture - + Ajouter un sommaire Add a summary - + Zoom sur le contenu Zoom content - + Ferme l'application QElectroTech status bar tip Closes QElectroTech - + Annule l'action précédente status bar tip Undoes the previous action - + Restaure l'action annulée status bar tip Restores the undone action - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Puts selected elements into the clipboard - + Copie les éléments sélectionnés dans le presse-papier status bar tip Copies selected elements - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Inverts selection of elements - + Retrouve l'élément sélectionné dans le panel status bar tip Find the selected item in the panel - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Reset the conductors path ignoring the user changes - + Création automatique de conducteur(s) Tool tip of auto conductor Automatic creation conductor (s) @@ -6718,207 +6724,222 @@ Available options: Projects - + Collections Collections - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Using the automatic creation of conductor (s) when possible - + Restaure le zoom par défaut status bar tip Restores default zoom level - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Shows the various opened projects in windows - + Ajouter une nomenclature Add a nomenclature - + Présente les différents projets ouverts des onglets status bar tip Shows the various opened projects in tabs - + Permet de sélectionner les éléments status bar tip Allows to select elements - + Ajouter un plan de bornes Add a terminal plan - + Ajoute un champ de texte sur le folio actuel Adds a text field to the current folio - + Ajoute une image sur le folio actuel Add an image to the current folio - + Ajoute une ligne sur le folio actuel Add a line to the current folio - + Ajoute un rectangle sur le folio actuel Adds a rectangle on the current folio - + Ajoute une ellipse sur le folio actuel Add an ellipse to the current folio - + Ajoute une polyligne sur le folio actuel Adds a polyline to the current folio - + Ajoute un plan de bornier sur le folio actuel Add a terminal plan on the current sheet - + Ajouter Add - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech project(*.qet);;XML Files (*.xml);;All files (*) - - + + Impossible d'ouvrir le fichier message box title Unable to open file - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. It appears the %1 file which you are trying to open does not exist or does not exist anymore. - + Ouverture du projet en lecture seule message box title Opening the file read-only - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Double-click to finish the shape, Right click to cancel the last point - + Suppression de borne impossible Unable to delete the terminal - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer The deletion cannot be performed because the selection contains one or more terminals that are bridged and/or belong to a multi-level terminal. Unbridge and/or remove the levels from the affected terminals so that they can be deleted - + Éditer l'élement edit element Edit the element - + Éditer le champ de texte edit text field Edit the text field - + Éditer l'image edit image Edit the image - + Éditer le conducteur edit conductor Edit conductor - + Éditer l'objet sélectionné edit selected item Edit the selected object - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content An error occurred while opening file %1. - + Active le projet « %1 » Activates the project « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + Are you sure you want to delete this folio? + + + + Supprimer les folios + Delete the folios + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + Are you sure you want to delete the selected %1 folios ? + + + Erreur message box title Error - + Dispose les fenêtres en mosaïque status bar tip Arranges windows in a tile pattern - + Dispose les fenêtres en cascade status bar tip Arranges windows in a cascade pattern - + Projet suivant Next project - + Projet précédent Previous project - + Active le projet suivant status bar tip Activates the next project - + Active le projet précédent status bar tip Activates the previous project @@ -7117,53 +7138,53 @@ Unbridge and/or remove the levels from the affected terminals so that they can b Import an element to resize - + Ajouter une ligne Add a line - + Ajouter une ellipse Add an ellipse - + Ajouter un polygone Add a polygon - + Ajouter du texte Add text - + Ajouter un arc de cercle Add an arc - + Ajouter une borne Add a terminal - + Annuler Undo - + Refaire Redo - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>Without terminal, the element can not be connected to other elements via conductors. - + Aucune modification No modification @@ -7208,13 +7229,13 @@ Unbridge and/or remove the levels from the affected terminals so that they can b Edit author information - + Parties toolbar title Parts - + Profondeur toolbar title Depth @@ -7230,12 +7251,12 @@ Unbridge and/or remove the levels from the affected terminals so that they can b Edit element properties - + Ajouter un champ texte dynamique Add a dynamic text field - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Double-click to finish the shape, Right click to cancel the last point @@ -7272,7 +7293,7 @@ Unbridge and/or remove the levels from the affected terminals so that they can b [Read only] - + Éditeur d'éléments status bar message Elements Editor @@ -7292,24 +7313,24 @@ Unbridge and/or remove the levels from the affected terminals so that they can b Too many primitives, list not generated: %1 - + Absence de borne warning title Missing terminal - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br> <b> Error </ b>: <br> folio referencings must have a single terminal <br> <b> Solution </ b> :<br> Check that the element has only one terminal - + La vérification de cet élément a généré message box content The verification of this element generated - + %n erreur(s) errors @@ -7318,32 +7339,32 @@ Unbridge and/or remove the levels from the affected terminals so that they can b - + et and - + Erreurs Errors - + Absence de borne Missing terminal - + Ajouter un texte d'élément non éditable dans les schémas Add non-editable element text in diagrams - + Ajouter un texte d'élément pouvant être édité dans les schémas Add element text that can be edited in diagrams - + %n avertissement(s) warnings @@ -7352,7 +7373,7 @@ Unbridge and/or remove the levels from the affected terminals so that they can b - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 @@ -7371,21 +7392,21 @@ Unbridge and/or remove the levels from the affected terminals so that they can b - + Impossible d'ouvrir le fichier %1. message box content Unable to open the file %1. - + Ce fichier n'est pas un document XML valide message box content This file is not a valid XML document - + Erreur toolbar title Error @@ -7424,49 +7445,59 @@ Unbridge and/or remove the levels from the affected terminals so that they can b Unable to save the element - + + Nombre de bornes incorrect + Incorrect number of terminals + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + <br><b>Error</b>:<br>Conductor definitions can only have one terminal.<br><b>Solution</b>:<br>Verify that the element has only one terminal + + + Avertissement Warning - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Importing a large dxf can take time please wait while importing... - + Importer un élément à redimensionner Import an element to resize - + Éléments QElectroTech (*.elmt) QElectroTech elements (*.elmt) - + Impossible d'ouvrir le fichier message box title Unable to open file - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. It appears the %1 file which you are trying to open does not exist or does not exist anymore. - - - + + + Echec de l'enregistrement Registration failed - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides The recording failed, @@ -7485,42 +7516,42 @@ the conditions are not valid QElectroTech elements (*.elmt);;XML files (*.xml);;All files (*) - + Recharger l'élément dialog title Reload element - + Avertissements Warnings - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content This element has been modified since last save. If you reload it, these changes will be lost. Do you really want to reload this element? - + Enregistrer sous dialog title Save as - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech elements (*.elmt) - + Enregistrer l'élément en cours ? dialog title Save current element? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Do you wish to save the element %1? @@ -7528,22 +7559,22 @@ the conditions are not valid - - + + Élément inexistant. message box title Non-existent element. - + L'élément n'existe pas. message box content The element does not exist. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content The chosen virtual path does not match an element. @@ -7564,7 +7595,7 @@ the conditions are not valid &Paste - + Ajouter un rectangle Add a rectangle @@ -8104,7 +8135,7 @@ What do you wish to do ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Warning: the element has been saved with a more recent version of QElectroTech. @@ -9331,22 +9362,22 @@ Do you want to replace it ? Creation of conductors - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Error launching qet_tb_generator plugin @@ -9484,51 +9515,51 @@ Do you want to replace it ? Sort terminal block %1 - - + + Générique generic terminal element type Generic - + Fusible fuse terminal element type Fuse - + Sectionable sectional terminal element type Sectionable - + Diode diode terminal element type Diode - + Terre ground terminal element type Ground - - + + Générique generic terminal element function Generic - + Phase phase terminal element function Phase - + Neutre neutral terminal element function Neutral @@ -9559,7 +9590,7 @@ Do you want to replace it ? Open an item - + Importer un fichier dxf Import a dxf file @@ -14288,92 +14319,92 @@ Maximum length : %2px WiringListExport - - + + Erreur Error - + Impossible de lire la structure en mémoire du projet. Unable to read the project's in-memory structure. - + Exporter le plan de câblage Export the wiring diagram - + Fichiers CSV (*.csv) CSV files (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. Unable to open the file for writing. - + Page Wiring list CSV header Page - + Composant 1 Wiring list CSV header Composant 1 - + Borne 1 Wiring list CSV header Terminal 1 - + Composant 2 Wiring list CSV header Composant 2 - + Borne 2 Wiring list CSV header Terminal 2 - + Tension / Protocole Wiring list CSV header Voltage / Protocol - + Couleur du fil Wiring list CSV header Wire color - + Section du fil Wiring list CSV header Wire section - + Fonction Wiring list CSV header Function - + Export réussi Export successful - + Le plan de câblage a été exporté avec succès ! The wiring diagram has been successfully exported ! diff --git a/lang/qet_es.ts b/lang/qet_es.ts index 9326b7e84..7e33f54cb 100644 --- a/lang/qet_es.ts +++ b/lang/qet_es.ts @@ -1683,17 +1683,17 @@ Nota: Estas opciones NO permiten o bloquean las Numeraciones automáticas, solo - + Modifier la police d'un champ texte Cambia la fuente de un campo de texto - + Modifier la couleur d'un champ texte Modificar el color de un campo de texto - + Modifier la conservation de l'angle Modificar la conservación del ángulo @@ -1718,7 +1718,7 @@ Nota: Estas opciones NO permiten o bloquean las Numeraciones automáticas, solo Modificar la fuente de texto, de un texto - + Modifier l'alignement d'un champ texte Modificar la alineación de un campo de texto @@ -2010,7 +2010,7 @@ Nota: Estas opciones NO permiten o bloquean las Numeraciones automáticas, solo - + Simple Simple @@ -2046,96 +2046,101 @@ Nota: Estas opciones NO permiten o bloquean las Numeraciones automáticas, solo Viñeta - + + Définition de conducteur + + + + Normalement ouvert Normalmente abierto - + Normalement fermé Normalmente cerrado - + Inverseur Inversor - + Other Otro - + Puissance Potencia - + Temporisé travail Temporizador de trabajo Tiempo de trabajo - + Temporisé repos Tiempo de reposo Tiempo de apagado - + Temporisé travail & repos Tiempo de trabajo & reposo - + Bobine Bobina - + Organe de protection Protección del cuerpo Unidad de protección - + Commutateur / bouton Conmutador / botón - - + + Générique Genérico - + Fusible Fusible - + Séctionnable Seccionable - + Diode Diodo - + Phase Fase - + Neutre Neutro - + Terre Tierra @@ -2143,99 +2148,99 @@ Nota: Estas opciones NO permiten o bloquean las Numeraciones automáticas, solo ElementPropertiesWidget - + Général General - + Élement Elemento - + Nom : %1 Nombre : %1 - + Folio : %1 Folio : %1 - + Type : %1 Tipo : %1 - + Sous-type : %1 Subtipo:%1 - + Position : %1 Posición : %1 - + Rotation : %1° Rotación : %1° - + Dimensions : %1*%2 Tamaño : %1*%2 - + Bornes : %1 Bornes : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Ubicación : %1 - + Retrouver dans le panel Encuentra en el panel - + Éditer l'élément Edita el elemento @@ -2701,60 +2706,60 @@ Se eliminarán todos los elementos y carpetas contenidas en esta carpeta. ElementsPanel - + Cartouches embarqués Rótulos integrados - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Haga doble clic para contraer o expandir la colección de rótulos integrados - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Arrastre y coloque el rótulo sobre el folio para aplicarlo. - + Double-cliquez pour réduire ou développer ce projet Status tip Doble clic para contraer o expandir el proyecto - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Doble clic para reducir o expandir la colección de rótulos de QElectroTech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Esta es la colección de rótulos suministrados con QElectroTech. Se instala como un componente del sistema, simplemente no se puede personalizar. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip Haz doble-click para reducir o ampliar la colección de elementos de la biblioteca de la empresa - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Esta es la colección de componentes en la biblioteca de la empresa -- utilicela para crear, guardar o editar vuestros propios componentes. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Doble clic para contraer o expandir su colección personal de rótulos - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Esta es su colección personal de rótulos - se usa para crear, almacenar y editar sus propios rótulos. @@ -2763,98 +2768,98 @@ Se eliminarán todos los elementos y carpetas contenidas en esta carpeta. ElementsPanelWidget - + Basculer vers ce projet Cambia a este proyecto - + Fermer ce projet Cierra este proyecto - + Propriétés du projet Propiedades del proyecto - + Éditer ce modèle Edita este modelo - + Supprimer ce modèle Elimina este modelo - + Ouvrir le dossier correspondant Abrir la carpeta correspondiente - + Copier le chemin Copia la ruta Copiar la ruta - + Propriétés du folio Propiedades del folio - + Ajouter un folio Añadir un folio - + Supprimer ce folio Eliminar el folio - + Remonter ce folio Avanzar la posición del folio - + Abaisser ce folio Retrasar la posición del folio - + Remonter ce folio x10 Avanzar el folio 10 posiciones - + Remonter ce folio x100 Avanzar el folio 100 posiciones - + Remonter ce folio au debut Avanzar la posición del folio al inicio del proyecto - + Abaisser ce folio x10 Retrasar 10 posiciones el folio - + Abaisser ce folio x100 Retrasar 100 posiciones el folio - + Nouveau modèle Nuevo modelo - + Filtrer Filtro @@ -5651,12 +5656,12 @@ Las siguientes variables son incompatibles; ProjectView - + Supprimer les éléments inutilisés dans le projet Elimina los elementos no usados en el proyecto - + Supprimer les catégories vides Elimina las categorías vacias @@ -5679,67 +5684,61 @@ Voulez-vous enregistrer les modifications ? Proyecto QElectroTech (*.qet) - + Supprimer le folio ? message box title ¿Eliminar el folio? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - ¿Realmente quiere eliminar el folio del proyecto? El cambio es irreversible. - - - + Projet en lecture seule message box title Proyecto en sólo lectura - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Este proyecto es en sólo lectura. Por eso es imposible limpiarlo. - + Supprimer les modèles de cartouche inutilisés dans le projet Eliminar los rótulos no usados en el proyecto - + Nettoyer le projet window title Limpia el proyecto - + Ajouter un folio Añadir un folio - + Revenir au debut du projet Volver al inicio del proyecto - + Aller à la fin du projet Ir al final del proyecto - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram El proyecto no contiene ningún folio @@ -5757,12 +5756,18 @@ Voulez-vous enregistrer les modifications ? Ningún proyecto nuevo - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Apertura del proyecto en curso...</b><br/>Creando pestañas de folio :</p> - + Projet window title for a project-less ProjectView Proyecto @@ -6052,442 +6057,443 @@ Opciones disponibles: QETDiagramEditor - + Aucune modification Ninguna modificación - + &Nouveau &Nuevo - + &Ouvrir &Abrir - + &Fermer &Cerrar - + &Enregistrer &Guardar - + Enregistrer sous Guardar como - + E&xporter E&xportar - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Este panel muestra las diferentes acciones realizadas en el folio actual. Haga clic en una acción para volver al estado del folio justo después de la acción. - + Imprimer Imprimir - + Exporter en pdf Exportar a PDF - + Exporte un ou plusieurs folios du projet courant status bar tip - + &Quitter &Salir - + Annuler Deshacer - + Refaire Rehacer - + Co&uper C&ortar - + Cop&ier &Copiar - + C&oller &Pegar - + Couleur de fond blanc/gris Tool tip of white/grey background button Color de fondo blanco / gris - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Muestra el color de fondo de la hoja en blanco o gris - + Afficher la grille Mostrar cuadrícula - + Affiche ou masque la grille des folios Muestra u oculta la cuadrícula - + Propriétés du folio Propiedades del folio - + Ajouter un folio Añadir un folio - + + Supprimer le folio Eliminar el folio - + Exporter au format CSV - + Ajouter une nomenclature - + Gestionnaire de borniers (DEV) - + Exporter la liste des noms de conducteurs - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet - + Crée un nouveau projet status bar tip Crear un nuevo proyecto - + Ouvre un projet existant status bar tip Abrir un proyecto existente - + Ferme le projet courant status bar tip Cerrar el proyecto - + Enregistre le projet courant et tous ses folios status bar tip Guardar el proyecto - + Enregistre le projet courant avec un autre nom de fichier status bar tip Guardar el proyecto con otro nombre de archivo - + Ajouter une ligne Add row Añadir una fila - + Enlever une ligne Remove row Eliminar una fila - + Ajoute une colonne au folio status bar tip Añadir una columna - + Enlève une colonne au folio status bar tip Eliminar una columna - + Agrandit le folio en hauteur status bar tip Aumentar el tamaño vertical del folio - + Rétrécit le folio en hauteur status bar tip Disminuir el tamaño vertical del folio - + Enlève les éléments sélectionnés du folio status bar tip Eliminar los elementos seleccionados - + Tout sélectionner Seleccionar todo - + Désélectionner tout Deseleccionar todo - + Inverser la sélection Invertir la selección - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel Agrega un campo de texto en el folio actual - + Ajoute une image sur le folio actuel Agregar una imagen en el folio actual - + Ajoute une ligne sur le folio actuel Añadir una línea al folio actual - + Ajoute un rectangle sur le folio actuel Añadir un rectangulo al folio actual - + Ajoute une ellipse sur le folio actuel Agregar una elipse al folio actual - + Ajoute une polyligne sur le folio actuel Agregar una polilínea al folio actual - + Ajoute un plan de bornier sur le folio actuel - + Profondeur toolbar title Profundidad - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Doble clic para terminar la forma, Clic derecho para cancelar el último punto - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe Grupo - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Se produjo un error al abrir el archivo %1. - + Supprimer Eliminar - + Pivoter Girar - + Éditer l'item sélectionné Editar el elemento seleccionado - + Réinitialiser les conducteurs Reiniciar los conductores - + Ajouter un champ de texte Añadir un campo de texto - + Ajouter une colonne Añadir una columna - + Enlever une colonne Eliminar una columna - + Propriétés du projet Propiedades del proyecto - + Zoom avant Ampliar - + Zoom arrière Reducir - + Zoom adapté Ajustar - + Pas de zoom Normal - + en utilisant des onglets utilizando pestañas - + en utilisant des fenêtres utilizando ventanas - + Mode Selection Modo selección - + Mode Visualisation Modo visualización - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Haga clic en una acción para volver atras en la edición de su esquema - + Retrouver dans le panel Encontrar en el panel - + Ajouter une image Añadir una imagen - + Ajouter un sommaire Añadir un resumen - + Zoom sur le contenu Ampliar el contenido - + &Mosaïque &Mosaico - + &Cascade &Cascada - + Création automatique de conducteur(s) Tool tip of auto conductor Creación automática de un conductor (es) @@ -6499,201 +6505,216 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Proyectos - + Collections Colecciones - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Utilizar creación automática de un conductor(es) - + Lancer le plugin de création de borniers terminales o bornes Lanzar el plugin de creación de terminales - + Grouper les textes sélectionnés Agrupar los textos seleccionados - + Pivote les éléments et textes sélectionnés status bar tip Gira los elementos y textos seleccionados - + Pivote les textes sélectionnés à un angle précis status bar tip Gira los textos seleccionados a un ángulo determinado - + Retrouve l'élément sélectionné dans le panel status bar tip Encontrar el elemento seleccionado en el panel - + Ajouter une ligne Draw line Añadir una línea - + Chercher/remplacer Buscar/Reemplazar - + &Fichier &Archivo - + &Édition &Edición - + &Projet P&royecto - + Afficha&ge &Ver - + Fe&nêtres Venta&nas - + Affiche ou non la barre d'outils principale Mostrar u ocultar la barra de herramientas principal - + Affiche ou non la barre d'outils Affichage Mostrar u ocultar la barra de herramientas "Ver" - + Affiche ou non la barre d'outils Schéma Mostrar u ocultar la barra de herramientas "Esquema" - + Affiche ou non le panel d'appareils Mostrar u ocultar el panel de dispositivos - + Affiche ou non la liste des modifications Mostrar u ocultar la lista de modificaciones - + Afficher les projets Mostrar los proyectos - + Outils Herramientas - + Affichage Ver - + Schéma Esquema - + Ajouter Añadir - + Ouvrir un fichier Abrir un archivo - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Parece que el archivo que intenta abrir no es accesible en lectura. Por eso es imposible abrirlo. Por favor compruebe los permisos del archivo. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Parece que el proyecto que intenta abrir no es accesible en escritura. Por eso se abrira en sólo lectura. - + Éditer l'élement edit element Editar el elemento - + Éditer le champ de texte edit text field Editar el campo de texto - + Éditer l'image edit image Editar la imagen - + Éditer le conducteur edit conductor Editar el conductor - + Éditer l'objet sélectionné edit selected item Editar el objeto seleccionado - + Active le projet « %1 » Activar el proyecto « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Error - + Nettoyer le projet Limpiar el proyecto - - + + Échec de l'ouverture du projet message box title Fracaso al abrir el proyecto - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Parece que el archivo %1 no es un archivo de proyecto QElectroTech. Por eso no se puede abrir. @@ -6711,226 +6732,226 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s QElectroTech - + Annulations dock title Anulaciones - + Orienter les textes Orientar los textos - + Ferme l'application QElectroTech status bar tip Cierre el programa QElectroTech - + Annule l'action précédente status bar tip Deshacer la última acción - + Restaure l'action annulée status bar tip Restaurar la última acción deshecha - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Transferir los elementos seleccionados al portapapeles - + Copie les éléments sélectionnés dans le presse-papier status bar tip Copiar los elementos seleccionados al portapapeles - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Deseleccionar los elementos ya seleccionados y seleccionar los elementos no seleccionados - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Recalcule los caminos de los conductores sin tener en cuenta las modificaciones - + Restaure le zoom par défaut status bar tip Restaurar el zoom por defecto - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Mostrar los diferentes proyectos abiertos en sub ventanas - + Présente les différents projets ouverts des onglets status bar tip Mostrar los diferentes proyectos abiertos en pestañas - + Permet de sélectionner les éléments status bar tip Permite seleccionar los elementos - + Dispose les fenêtres en mosaïque status bar tip Poner las ventanas en mosaico - + Dispose les fenêtres en cascade status bar tip Poner las ventanas en cascada - + Projet suivant Proyecto siguiente - + Projet précédent Proyecto previo - + Sélectionne tous les éléments du folio status bar tip Selecciona todos los elementos - + Désélectionne tous les éléments du folio status bar tip Deselecciona todos los elementos - + Agrandit le folio status bar tip Aumenta el tamaño del folio - + Rétrécit le folio status bar tip Disminuye el tamaño del folio - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Ajusta el zoom para visualizar todos los contenidos del folio - + Adapte le zoom exactement sur le cadre du folio status bar tip Ajusta el zoom al folio - + Ajouter un rectangle Añadir un rectángulo - + Ajouter une ellipse Añadir una elipse - + Ajouter une polyligne Añadir un polígono - + Exporte le folio courant dans un autre format status bar tip Exportar el folio en otro formato - + Imprime un ou plusieurs folios du projet courant status bar tip Imprimir uno o más folios - + Place les éléments du presse-papier sur le folio status bar tip Pega los elementos del portapapeles en el folio - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Edita las propiedades del folio - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Permitir ver el folio sin modificarlo - + Active le projet suivant status bar tip Activar el proyecto siguiente - + Active le projet précédent status bar tip Activar el proyecto previo - + &Récemment ouverts &Recientemente abiertos - - + + Projet %1 enregistré dans le repertoire: %2. Proyecto %1 guardar en el directorio: %2. - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) Projectos QElectroTech (*.qet);;Archivos XML (*.xml);;Todos los archivos (*.") - - + + Impossible d'ouvrir le fichier message box title Imposible de abrir el archivo - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Parece que el archivo %1 que usted está intentando abrir no existe. - + Ouverture du projet en lecture seule message box title Abriendo el proyecto en sólo lectura @@ -7169,37 +7190,37 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Editar la información sobre el autor - + Ajouter une ligne Añadir una línea - + Ajouter une ellipse Añadir una elipse - + Ajouter un polygone Añadir un polígono - + Ajouter du texte Añadir texto - + Ajouter un arc de cercle Añadir un arco de círculo - + Ajouter une borne Añadir un conector - + Annuler Deshacer @@ -7210,12 +7231,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Mostrar - + Refaire Rehacer - + Avertissement Advertencia @@ -7225,23 +7246,23 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Pegar desde... - + Absence de borne Falta de conector - + Aucune modification Ninguna modificación - + Parties toolbar title Partes - + Profondeur toolbar title Profundidad @@ -7257,12 +7278,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Editar las propiedades de los elementos - + Ajouter un champ texte dynamique Añadir un campo de texto dinámico - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Doble clic para terminar la forma, Clic derecho para cancelar el último punto @@ -7294,7 +7315,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [sólo lectura] - + Éditeur d'éléments status bar message Editor de elementos @@ -7309,13 +7330,13 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title Falta de conector - + %n avertissement(s) warnings @@ -7324,7 +7345,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 @@ -7337,21 +7358,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Imposible abrir el archivo %1. - + Ce fichier n'est pas un document XML valide message box content Este archivo no es un documento XML válido - + Erreur toolbar title Error @@ -7395,45 +7416,55 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Impossible d'ouvrir le fichier message box title Imposible de abrir el archivo - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Parece que el archivo %1 que usted está intentando abrir no existe. - - - + + + Echec de l'enregistrement Fallo al guardar - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Fallo al guardar, Las condiciones requeridas no son validas - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) Elementos QElectroTech (*.elmt) @@ -7450,40 +7481,40 @@ veuillez patienter durant l'import... Elementos QElectroTech (*.elmt);;Archivos XML (*.xml);;Todos los archivos (*) - + Recharger l'élément dialog title Recargar el elemento - + Ajouter un texte d'élément non éditable dans les schémas Añadir un elemento de texto no editable en los esquemas - + Ajouter un texte d'élément pouvant être édité dans les schémas Añadir un elemento de texto que se pueda editar en los esquemas - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>En ausencia de Terminal, el elemento no puede relacionarse con otros componentes a través de conductores. - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Error</b> :<br>Las conexiones de folio deben tener un solo borne.<br><b>Solución</b> :<br>Verifique que el elemento tiene un solo borne - + La vérification de cet élément a généré message box content La verificación del elemento ha generado - + %n erreur(s) errors @@ -7492,46 +7523,46 @@ veuillez patienter durant l'import... - + et y - + Erreurs Errores - + Avertissements Advertencias - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Editó este elemento. Si recarga las edicciones se perderan. ¿Está seguro de recargar el elemento? - + Enregistrer sous dialog title Guardar como - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file Elementos QElectroTech (*.elmt) - + Enregistrer l'élément en cours ? dialog title Guardar el elemento corriente? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name ¿Quiere guardar el elemento %1? @@ -7539,22 +7570,22 @@ veuillez patienter durant l'import... - - + + Élément inexistant. message box title Elemento inexistente. - + L'élément n'existe pas. message box content El elemento no existe. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content El camino virtual elegido no corresponde a un elemento. @@ -7575,7 +7606,7 @@ veuillez patienter durant l'import... &Pegar - + Ajouter un rectangle Añadir un rectángulo @@ -8101,7 +8132,7 @@ Que désirez vous faire ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Aviso: el elemento fue guardado con una versión mas reciente de QElectroTech. @@ -9342,22 +9373,22 @@ Voulez-vous la remplacer ? Creación de conductores - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Para instalar el plugin qet_tb_generator<br>Visita :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requiere python 3.5 o superior.<br><B><U> Primera instalación en Windows</B></U><br>1. Instalar, si es necesario, python 3.5 o superior<br> Visita :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. instalación de pip qet_tb_generator<br><B><U> Update en Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>El usuario podría iniciar en un terminal este script en este directorio.<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Error al iniciar el complemento qet_tb generator @@ -9470,51 +9501,51 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type Genérico - + Fusible fuse terminal element type Fusible - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type Tierra - - + + Générique generic terminal element function Genérico - + Phase phase terminal element function Fase - + Neutre neutral terminal element function @@ -9534,7 +9565,7 @@ Voulez-vous la remplacer ? - + Importer un fichier dxf @@ -14281,92 +14312,92 @@ Ancho máximo : %2xp WiringListExport - - + + Erreur Error - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Tensión / Protocolo - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header Función - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_fr.qm b/lang/qet_fr.qm index dab02e2acb6f509f2b17ee5ed2d325591c11dea9..83325710dca5978aef7aef49985c255281ff61f2 100644 GIT binary patch delta 17992 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%0D@QuW~Ej2iOL-rDBZ>TYU3*1qjp?;Ha zY|^qZGz#!UPrr$w=~@`;?KTGYwszPnHOkPk96HrrrwktEm^H|+lm-tgTY4JW#UP8B zxXj>XL~Re@c@4xH{7N=>69iJ#nAcVVI%`KhA!1EqdFOB@ay;(4KgP~ zkLJ+PS?vsclKZ2LHCG}_uVd(g1d*q-HVgI z&aQ@01&M^ePs1EB7F^skgLSp&BFjg~-c=P#& zvDQqxxQ!vSdkC_jzB1Q)8A4-+V|VFpL-_LA=;};2Oq_sbN!3nf!z5RTuFZRyA&G{l z%72Mse;8tv$FQlQf+5C;8~5F0hDaT`OyZrn-_+uy`G_WP|q+;Ux=ML_J(+C zrMuC`uvjIaXUh#s<{Tt8r>(&<9!-nwk3f#~p>iPH$qrvo3AUPQSYf?zeU@QuQ#Ydh zX@+$CN`ivh8#4PqDN`OBGN)iJ{caczHOJg0Crji*R$E4R*_#`cGaTE60FV@JINkw~ zv)MGmi3+f0_YLP?^nohm7%r?VCCc7wxbPF7JC872{0RXK?=Ex8NQrF6 zZi&2wm*MKePY4|A4A&-Nyx-19iu44O(j`v^txN6hl#^#^^$IH5B#iMO3?3W`s^6(?`fWKG*Pkusmj4T#nsi`#blwh=eij7K*D>9|k z5;@yv)H^qUkFprcTYtmS@RhN`XcS&?!N!WLA-1=DGgkMmhXzSIqvL)JlH44l)09Y} zbGwZ-%E2d}3o+KnxJ10sMq|w~7>ap7O=G=^Pq3BU4txss0H1+L;B)YdvEh$7M4i7I zoAm#L)&Hi(*4Gh`WB)U@ZPFDPmdV&QyAl?7#~a%@c$om0??B zhsDUOQb!nl!cnp|ylLz>$RGWORmM)YK4bB|MYz%LUMV^uT4VPYu0)fx#vVZ~NMS}v zZJ+<=}dE8o&O6S7 z&;Zy~atHeZ;>!;QDMe}Nt8=@kgJj(9g5#; ztv7i;N<`fKZ1OoDj=ce?Cf};V@spN#lW$rgjQYCC_h|vL=klgb1_X_Mn@pXG+~A{b z$^4mYvPLtioow>!7e%aDGtpmd6^H%$iTsfIRD&=5%Z83dNIh#xz3~gu z`fge^S%4x>Gp)LcOuf<~)0+0sr^eATN4UsL+-_QPE*>4uWYgMR&xq9TP3wk&iYlfJ z3N5P8nWd(*dsf%A*_7VP9lvY%Wy(y9L``zSv?Dwh@^UlnoCr^2dTQFY;XU-`xXhuI zWhPEE?Zd`Lw#3b}e`_MK`YEP^VePOi+SPRM3I%3 zMcu8Y=T}2e%Xr8vy={8snU6NQr|DHX9Kz`4rdPkZLoc3~-p_$VXo*a&mH9lt^gh!c zdo*U7KEJ<*U>iKo^yLQ9sCG7{FE_31Y5H;tY@2HOQefo`)AtfQFe2OZhuw#STAKb; z#v9#PX!?670Va9cRA&8u<>yf13l#@XbY3^Ca;1*B+ee3nhen4+ggXU?I0Z$72gd|O zhr~o$mhNbFa8Sm99GfAzDbXQOjbbBWqMV{~k4LVw+0H8+bsNq8bzQk>7B{TC9LpLW zEnCg%2rDds$ z$ij2CN6A+@9Id^P6)6VoZ5tTr**4JAH!>1qZQCT!)2X%fqwcsv@c+CL{`ueUXO=LJsv}r4Ni|8`Ww=pkACi~n%Cin3r zs=0u8pYKF27l{psR=6UFsGbM06}yNUwk00jn5dbFs6$VpZqa06iTDBzc+gm)o=L>( z{{btN8Iim$&UzGMal;)6^c zmP6`U z%uqPri_{M>_Z63tx&UK$!T??*K41x{3sq#{)t8gd@GkLL?j(3TCq7V3f=@DWwwr{0 zoOrDf;361-3kjjQ#HU^&VSQhsq%Jafi|r)r{!L_TOTsZ2$(u|PQf+)m!U@>I2rk;04%&A*5-Q4!5(CrbA`$B5Clz>~T}loPiq`zatGEggvp4 zCffqHX}JOi;E3T07cC{tb)5Lkp0srxh`mT4oqag5KaI%H6fRLNn@mAXiB~;J_Aj9U z@gvB=1s2XysA5hU@d>r*e-*7nt5?Zn<=fEzo_P@WzDQLsBoaHDLDe1Mc3w}Yx@F38 z;&!8{=A&P*`2ke>bOYk9sS2AVkjs4&vGIqfu6G2{U;U}>fJ#L9hpFzRQewLHRIm9$ zVhbdyzv&Zk^$}`df&C8*R5;B@Zc-jmogp&WE*-fIzDqPJl3M+&Lp)w2OWSBD;P~6r z_9fo*X-(?z`xm~DA(QP+pw7>G5^H{me4az0CPq@%lW@*z4XIlUrsAUqb&HK5+S`Y^ zrDqV`xGR%axT?@Og?#II<9v~P$N3OjUypoeeoO zQSSsF;x(R9@3nZ|T~RW*dnWanafYb>TZPFD6&4iAWCwoAPGZ+ zA_WbDU^OU}Y2i&jD<61lQ8;k2LYuH&zzEltsNcc!M8i|5-x(-%!@1P2Ad#r4LE-TC z3X>|!WGC+_EX+UCprkmE_?*c!a6G)S_8S^# zsYL95{xt9!Zg6%71!v&_{uf5US25zvZzv2|qA)2*Cd)db@B@?{=kbwT7=1DpZ3x$+c34bA@hIivq-Zr0_^bznm<}abp9R9e?6Kgr-!wg z&e8JtGc5@9Au5|JlY7^o=qo3oNqR~cy@qJScS@M^iRjlXTH$^iQZkxW`|QB;Rw1j1 z7e0H3*34N%)TuuuHfT+hQJWGw{e)JPr?u_zKKF`g?S4eS#iwY)uS{ZpRice^;2%@f zv@v5VQh@NkK+C{5xQ@u{lAtI+gpwfSPQIf zlAWdSGaVeXnJBcX!V@QCGUEn1+{l;s7(Y6kW=E_~w8BY7I{YMt=v*5*<`smw%%bD_ zMWd8%B-eCBC_78tY%eDV!s=+I>Rm! z?YPex=*p1&#-1)cdu^ztkVI{OU&|IG$2f%)yWXM?)^i%hU48#1{)M)D1_3`@ZXWISfW z{(&-|-^W5C5y?VhSxAYAXx3&nAtj5LwKto%$N@2VEDN8C|KBNQlTO3VkGZiaJ&+uX zdBY;|Vu=0R#UgcS#8$s&kGwz}y5jPa95jWf_an_ps!?^|%25iEY}DPk@Q z*s3$ti2k#%HEj@3oo`sT8J#RW*^bfn#Oh39yH6udA6~}xe1yl8q_BOCci62K zImE{`Vz+n0?zZ-4_o|_2Xmd+p+<2L+mmhmndm-%QI(s~!4zU*P*t1o&5Jxra`4LR> zIf3OjfoHwWW%)f|=%qbbeoz>N(3rifaIGUeXR5*u6WF^B&cuZp?0uVDBJmgdbYTy| zT@d?x7g~@sMJ8`?oqgGJfp}OcD@yr9Y+oSz+5zVai`duot{8zR_Vqnx>Ct&>HM3KF zGb>qBOsq;cXM1h`t-$&3pTxpmDV)i;rZ)U?d8T!k+0pXhCAV*aw|KIRJ09^Sa(g6` zeH_IrKJg;C-<{iAIkUKBH&1bpu8q}RQk5Cww$ZO{xCst!OuXkiCu}Z1DK2Ij% zh1@-<50O>J+mv%A`nM17I`bH@-aEOk1vXeRk@rx?QxCG!@t%J8;@tAQR}PGuX}JHb zQADG^@V-f57>zVO01=UmSg&y2QXVYrB(}+(4^M&jEZfINxg12EnPc@T=j6Maj~g`y zqHu~&tcbTSJN- zbz3>d%7@eVf@SB4bs55=x5A`Ly!oQ{R(Q$}Yfd>wOZ%2Q?n^SU_JMqTJUqHp7~ha* zCW?E*H~gN8%%}n1^rk2A_OJNn_dAIWTKM)N40h^XzH^*EW~??(`kn(RGw}lfD%5rp z_<_$2h!ULn!BI%6J2l~{>f6YD?Re_MX2=YZ_^BNbfBufA_3MNv(eejR>pu{6=L4SJ zzB7{aL;Osx7euxWKRfs)(PtIUkl?tqT_)Suj%W56N_>7X&%7Ljy5<$n(m^}B+~!$V z_d=wr^K&EX!@+;>^NWTNz3Zv)-);Q-5i4xHNZ|;zjqv$Jz4?W>?kJ3t`6W$FV*OqD z@+ZW8}{<`!bJ-|!o=M= zDZKEXhWx`%A7UeqDxCh4e-l3woAizU5HJ;u2k{@JuZb_Z#7k`Pv{o$@-GrE*n57av zZW5b+Ska%4d@ev-Xek0J3Y2~0Auyr5mjXtX2mRI0fi!G{Q z4Dl_)Q#Gs}oa9*_)vyLO?p2Lg24k#xLNz8|hk&|46*?Pl{Pd}6Y)TuHjybCF<<<~O z)T+kkc1E7~T{Zq~O*B*5$z+k?s)_Nou=Yn4@dR(2bxSpMNHt=WomDe(@%^S=s@dnE z{6{Tzs=3+!60f;UwI~wS-akYY9~S{F>Zn>;3v=3_ohl&%A*Fmx)$-grL^nIDR&7zE zQroGr_E|`5UcPEwgF>Q*%T(*%;{W<}s*U@v5v$iqweb)l!juHn=8wZLWz|(%x>h3| z5~|u+!9+A|h-&9waP#i}y;SY#4Wn5JW@38`s?_3VQ1BC~QyL#4@6M_-lVb3BE32!6lVzsrvO^?F=s~K>JrGD1rKzr3 z^NII1sIH;xVTZC+*ZnbJWA>_Uq#1~5kE?E8n@4P|gX&?K8^ZQ9)#J!eVs@ug&j#fZ z4gI2ecC0q>#j&b9A&^+l1*-gUH4vYDRNqDf<2*mr4{aHw{H^NeATuK5+zqOd40wN$ zPOb9o2$^~Sb|QAX0tk^j-W$Zk9#2q9|G)|BTvzMkiii!;sr6g$5F7iS+Hn-L{$4AY zylP#w<1YlR)*IB0f546()m2`?=?8XF*9DpBhPrX#I?UfCb<-2Ak@(LlQ8&AX8DAYB zla(t~yLa{=>S$EA*;tuqf3Uj!renm`3{!Xdw>MFv8EWqt7@3XvYM%p<$X7hoT_y+O zh85NRHT}@eu~!EKz{%qr)B&lm)CcoYPW0*{%;U&l&0|7hxew9n}#vkeqN&g=3@C5t(=J25r?dMVP)_ zoI;;(>Y2MC;9Wx1^Y&CgGV`~3einwf-6nOkek1ycY3k^eu+YgB)G@`QiL(Ew6W00o zp<8LMPB?%ItqoQ$8-O8t*jl}6og3oRcy;1RSj=EwnS6SE_1e=zh)*A&UcdDrk_|ic z=HT;?v8mQrC+D!XZPc6N@w~5FsyCm4#fMH+?{1FEZt_v@?tPp%i&UrdgNhy6tWMd3 zQuIriOzyi~z|J|Cw(phw_wIjEKclHF37e0X*Bq0V@WO;^;1dYvb_HoZCTLr~g=E9}2ho%Z`12D6V$-siYFU8s$+ zY_U4MA}-!LRpHZS>U8HsWPqO(J`a(}JI`0ABbu_L@9NVM-nsun^=bV`qSWQ;(=Q;= zj-S<8mEnC|ebrfL+}2`m^VQkuaDX9a6;7X{zP#R<*pCh}c|f|gtfG^pz4~eb-sweK zg+B+$WSkUw4O2KeSYc8_nLH#_VMLnxY7)ls!&-IDv^5Cg8R}bKi-|s*P~UyvhBUcU zeXnT%ZPG#!*l@auJOjSQfdu@v-l`6K$$&vry?ba$BP)_~0OAzs11?tD|OVI-u zpnmBI#VEH*U2q9n__0V`IAJugPE)OKD>-*B?5{5Jfx{H9P!}Bvhewk7+X4iqW8>7{ zD_lee<(&G*BPims^6KC4OtvasT@qJ^cn42)$@(?W`Y(d;9o@g_x2^t_oh=D(1f%W~ zDwJ5k-f0q2S)<^T2_abQAXFMU6*E9WrFr1}P@!sUUu3XL1?M}6Y1%ZQp5Jk_Si*&d zgV22$`BP{-%NISqJwlTrSh-0fxcVMK6_O|Onb5&C8~xqZLWd0_iA|^_ zc!%Nd7EOgNeuGgIEE2kYfgkS~CG`9|28#z_3WwEKxa*@#b~IICp^J?W1dmCA|2#OG4P7 zBI5NL2@?)O5V}28IKfZhl77O3s~*G}#wrYUP`I#}5S|0Ys{YRERmI8TDNJ*POFiE$ zOkacXbBz>c4!7AwePN!dH9~`4m~YJ`^878#-w*wov_P2u7tAiCys%)-Hx%=8g=n|W zMDt>V`0^bPK~I8KBL6_SE1PJ-FJXJvI*TD*CBgYH7@{SXucM4T8 z3SXuOyRRfd@0tlIDtxcU93iFQW2AFcg?)2u^EFJ^AN~;YlBBTq3gN)-3$Q5fYw`h| zpDz5>3Lf(9o^TM^4}B;W4qaP_#5GMgd^8@Ju|_y{-U>Ca2q%^Y6R(yfoY)CdT^S{u zxOM@d{iJXT{zrDLg|nmnC3YtRL@d1X5&TN*ZWXW?>>*@@;>4s|Ho~GB{w;sNTQ*i0 zrc*dCTR7M49XkFagzRz;aiPt^<@HI#j`#~#8bOv?+bitZPbROhUAPi_1ld9pAt$g2 z>gN*S*2s&H>?*?DD7?tx55nDN2N6kr3-@e&^p=-F3l2tuikSMckiP>q(DJMBX2LvlAG!!{wn2hc8icob61o!4 zghF2djr`9FXNC#y>f5GlkwTs-eAt62YFl3TXc>-tB<`B4hc$7zm>>?UId7^+X zFB-R8CBAT!X#5e4sNPI0-(eSm(z7g6|wC^O`>Om4X) zI@JD6?EN{h(qO1!_l;uZTnA$Qt3+qlp+xq+V)ffikVrX;b$YlG8?{Ar`4Efs(|2N% zUC0yNtH@*@cZse&1fpjRMAy|Qip*IG&y0}CJqKHqgU-hl4ow$Zc*6_MtQA{2CL^O8 zDYjLkh-vs%Y+rFGvHi_NFK5jC%vz$?3lFHzG12Q4_^7Yg=^boi+h@^RZNdng5WRoH zIJcyWU7tTgHTF*IwgJ_a>ld-xWvEZ1JkfUvrrOC;UF;q(i}=KYV)p~fu@rGxVN!|0 zf*6@>cY#daVZ6e~RbsDqct8(N(a*dZLoJGatG}X3`XKfWfeqACi+#ovKtCQR?08rV zT#csTz8YfSRT$xb{bE0~%EkjTL4+VVUL_7b00F7HOdQ$^sp8yb zm(jEe5a)eI3OR7MXz{iu)}ct8-_`+Z93rOYxe~paBWBKwgTQ?? z4@Jw}s7g3toOt)@I25LR#N3@Q#zYtKo|~2U%=hB`HSmfF8RCP8Y&_69@xk)u#Orqw zA8fbLC_Zc65v@iSuoKu%d{(p*z4IiQ%yFUkyc~vp=v48A?hdgc7n!_=y;var!UJE_ zitl$rNSa%%IklWDR`J7#QrLW&_#wm@RinH3aTChT-mk^aKjVo;xrtxAASdVUir=PS zrk8&af7p0$g81h(#_!p5v9z~6@tWZpU3WZgNv6gawwhRvE(%Zn(3mgBppWgSDYpja zH+iM0n3znoriZ5Lb6m$RWuB($SIA7))0*l(bVS#`SS__3Ej21=>UoaFb4i+}_OPh% zISOY*XqrVHN2Bwa#x3PFajza4cOR(JHJzsQl`AN6S87@p%!2wf)wJD?`#p`(c<#s` zHZDx#HDCprCtWn%Y)izC&uO~7LUPdDr0K2>#Q9?sTKqJ&B! zau3|F%}&jfjJrg&12ho}1!Aup!Q%)tl@u=Cu9=a>EyMzDX=YZ(z}#`w$mx;OPtD9V zb?}97&CG+|*y<6inKh83-anv;#R3g|TCG_!sxPslVVb2H++c}Wvn&u|(eJiqrQ=Z; zoVRARjgO{l)*PFH4u7&H@keK(==YknhF7p?CX@9{)ol3Cs~Lu0UEU!y5HT$3J$V)Fe_&FOh)MU~vwoROeq zPp)dtjCDZwZ??k3iPp<5O@co*()>NCGui>gn(Lllh+;Qru0MzS1e-NCgM%P>?Panz zR!wd*B#j^DC@ks&mSOWmU4<*6G`T)nDC2ic?r=yeNml>5juz>pCa+=?md#T&dH0a& zQM~4Lv%ZM7K{DCLhcbDUAqwlP)Vv;wOlwS-roe#SW!=@9cM)rd`37h{1y>_Bxs&Gm z&DKQseKkM3nb0lTr}4=nRR_c8E7LdR5+s~gRXi{Ts>o_n+(0c!6hcFgh*(Udw$EG(>b=`%wSmWkjRNkI5*R3uUszJKBk3=5|B9w^ziY>$q+iItItI(GZ(#}qYBYxc}llR=Fo!8$1_3s+(yiLi(+78jqx8I8WI*+yU zA00=g7H!R`?_^PH7wpG4AFZNYcpt(yB1IcJY8&xUQQCMBSx!sRCT#nJ^lQ3ySr)P# z^C<1Ii?;DHYFF9gs%1B|iA`!@C%`W4hDvzas7=}p`%sL`pQqgzjJ&cmTDxg6LibvG zncOr_yIH_6&Do;eRWkxrQL}#9-P;yIna^l2a7xFA(MB0qWx=AG|_RZ z_VBEsKBc|lpN55p9@=Zy@1V@_(O!Ez4+{KN zo3j}YpexYc&8!X6U8(TPP3=S52=S5HCu`G*)-WK1WYxYQNMUjSP3V!oVsDr(9LI^t<-UF^ot+g7)7_?r3`d&=%*~;qR*2pDisu zu#Ae@Kj#XOIL2#B`XXuIDLSz#r1?xEowTqr*4s5Y{qDW!`QFnR>f!v39c1!IC!OI% zI-Gy5&fKdAxqwk;9s0F)jHyOuZncl;_(7~ z(sk9lB*!5rUDZ{8ABkS)5M7;1SoiX~uXCvbsb5xGSO4o>B%s@MjdXbP>8ZL#{W@ax zI9%79d7wnUt#d=sLNlIN4>fXXy+haPNHqEuHFZ84GO#LU)%DQfz32NWOdBDScRHnT zeul1BC~}bIZq~9!PL_(gfz>Z!<7SR-&?_W7t?ucDPXB~>=BFExjFOW=R=bx{Xnh*x^1n>!8R ztNuq_bR^bjqPFQ4Wg}q>UaX5rZcNO%k}fV$fL`v<#V^Ed_q*tpK1f79c0`xp-V%D+ zNtf{Z98&4^y5$~0*hte*w>mBi(@-u-;}lGTD1y-GM^~ zi558MQh$AffcMm$UJwGK`dfEqrVr62U)|Z|c)++4UFHx(#CfF4>X(Z91nRP$WFQmz zxmcG~l1+4bo9%PWi6B}7y_jTDBq6X=@uW!-i=mHr(medfm^*;V2T)bfsGo5sY1R zrME3`?5}Mkb%Yf$?X;vjx&~W=e@IdiGNh+|lHRs}=w2cjY9Rvj|0o$I9mUWOkj%5- z$D=<;<(5RFObU|9EnfxcYbx2(DERF+$-X+046j8}1xF11B9l~M`Uq^&n*)vn&wwG| ze^Ld@^ijke+u;KQ1xMQnV?f&pp&(AcDm`y~L#l-RygcZxROMO*v1xCls+Sf*nI0c8-v$y@^8c(O;_eV;9lJWm5IV7_skOQdipn@4Z;6 z>G>5cu`N=~csS8qcd6zoY!mUlsBmHhg>n6)IngXfmHZzpPLu#IkDT*kz{%GoK zIkHA_uh7p>EoizFYE^I1L zcyo;uYDF8VU1cfs@6l)>OqN1lY(_qpBZXadhL}iF*e4I{*KRLOXtdC3-`vjPpq3`y zNJc&)DqQnWnpkGSLRMEP{CO$ju7?!yJ_+eYx)j;?B^ES_rAQA%3)NF;X2V>pN>7t! z<<3ID-Y(6)iFU`#htiy8eTbUoDSZE*O!h8RS};2X+C5i_wSzmZswgdK_?E0m&C6RJ z8l+`yq3aLkO6wgXG5^b@^}d_YQh6wCnT7zfYNxb)NE&j1#ZuB!Hz@fJDS5a(S~V@D z#ZrG2kgV8x(VIjLYxz%>`rjVelx6@ZjP4SRi!Hn!_dd}mabc0 zLYvE^oISXVTbNAtVU$chtiE*XyaTcAHKl(J!QCp}l5W?ngLwHvx)a--xc_?TekKxu zuAij)k1=I`j!O>&m|tMA^r&(&VncoDQP+0pw?39$H*O9unJvAxpy9(hE|A`Mzarku zUn+R>2vu}t=@a1s|8CvgKW&>K{daU9a?+kssf~8W zW%A)eq_PGTu-1_!l^w(Ns!h?8&o68qOw@~AklI96(rf<1czs!6BT}1gnR;y*CML{9 zubT-wb!x4bs!c+*T~DvqBlw+Yuh++7gnrn`O}dcGrCdP4udgH7NU zCHktx1;4<{dY7@5D0GH4 z>6@0y}iCT~4TA9?{%tLAfkSl~f4E`I7KJgkZ6ld3Sd zlfs4L^b_N-b;2!JKiSikHdN6^suNMSRMyWNo{#hM^mF(1CARCNe(t+m*uotByoY$P zqB6Z@kue>639_LW%i9pK$m&@xUVe^2P&^OSRUo z$gmV60U)FEamtoc6o_<@D8Xc|c`t94+ z!4>XlnZ-_1x4xiUhqRpYrlSfRaotSv-kl+pj!l+z z^ndLsMa!f>f9&Nvv~Gs$Pc^{<4!fd1V-I0kabBMx!Dj59D*T=)la-#5$(KayGuwwC zIZV}GO~;6bTYkz1yxs%-)yzP+MTY*m#T&JEtp2tZwlUO8e`h)7O0!e{#0^6?;fVg3 z+Y&U0KkM`MM8eoi3J;dZWUbfh^HORdA9qw(`cePFI~ywYM4x}*CRPM{=?kk|MEi5Q z{@wI;NGRIw)PH)68>+hKzm)SpA}~__Z;x7VpCS69+jxM7Vb;$rohpsj|D1>*vv+|0 z=QSNs=4k!z2e@qe1Z%ZcPL@#y=GKHL@S}m>u7t+a7=tPUo)vh~peljuRjp7}9k8WXWDH5HCMXTU-?RzCI` z9GiO}wQgc?90P-HF!F?<@-;WqsZ$NrJNn^e&Kc@_T8_WT+2D2*W3uPI!J}RYy5oKZk0s~P zceEHbVENc$7%}u9V$dJMh)CoNAKJ@g zS<7t1%tX~RjGX3!#5v3mIs&R)@tR?RZ8OuoN`^^`;t`DY%VY&}3{z)9;rlv#l zhV3#$EvP_rYNTP#g*>#B1{>xTk46+&Y?vQ~fvy!}nEyBY<;63@!s{2%B26_URE7DD zZ*Ew55ssT3Ygm-!(UEtcNEavRo#g3I2D6 zc-5&2z0MmpmZAW8nr7J53vXO2-mqu!A#D9I8d55vbNABMkaFP#T8R@4drMTv(x%Ad zy|WAl;-NJ8Lk$NkIN%ez7!G9NgD(0Yc{ zXfR@+A^rI`BEPnVtUYkZj#-8aLLRZrIzx6+HH^r8nXFO|h3>(ID}&ac^|Hip)vyII|BH5mS> zI|?O1cWY)_XUnpj5m*47-PQwmi93SUMU3c6xOpZ#Yj7}*?I>~e(@W-45A*HD1fLJM_L8Qzt`SqIgY z$=*Fw`2C^b(<%&PT#8KAYl*_N<%Xi_CB#R@8;VX8;+I$bWb%&93_n(&vtZ|9_;KqF z^4o=mU)%BC#t{nt{wR|*8K`hbM;lT4M6WXZ`ZyBNrJ=%s1qv4&HT?R#5E;!l!|!m6 zfW5upKi8euA(&_=nLG@|VX2`c@-tEV6Z}F6!Q%B`Be~nS&`6UplIN-!Rj2U1B^gGc zTmYJE%Z*||WvoQ+kja}yftJd|-Q$!G{0A8|7o$+>WXoiqyp2wsQJHwwF#a#L7NpeK zSY;xbzGv6S7ud5(p`|DS;hvg;lv{|jEx6*B2#~DY`O_f zn)}7*(as*rqE5z^_4X^Vg%6C=pKgWRyfM!7e?>I^nQ@lkIXbBqjSFqn>E?fpD>MQ+=%bxMQ+J{x{f$ZZ?E!^+Go}QLB(@~M zm@)%%*>%1#wK?WCwxvuypsRI-m!qXYrt#DP2!CuXWjuRt)QdT zmKZO+2_QZ-+<19i5w@R#{7XnDA*1fUu&`vV4EpS>|lIzK3s~hJ@&W5s$5^yt7m*|xzt+#jKAf=% z%idVucBpIFYAjuY+j!(F9KOxOrrCz&sENmqLceCCNv(53_T#6pY^cdl(-j(JHC3?v zGNjQqlfxL4PIK%`6tui=@rC%*m{fdZ_$IgK-!9U?T+TbMN_-!rYM=8G^Zw1$ac&v$vF}VBSEQlVt6=gDN730} zfvNL=AoQ1dnY!Hlisfo)L!Ovv>J?H4sf$@AuRq=7KRFs3s_aa? z(_xRDJ1FecT_$fMnF9Ml{u`H>268-j<`>i80;uiKHVSun%Va5qGI;}&Lic{Akuz0L z-3@l8(fDB)pLWYM`Vc&*`C`+!L3o2qM^m^RW<0ZkX;Q^VEcSwV+prS0!ZgJW7E;00 zG-Vuez#)?qPH$$4ScTSHpo?j0Tp#3_cT6)nLt892Ommj_!eMTi=I-5!HQHq|d5?vr z_!T}7r=R6aOT|v;2{@V(4lG1_;hJgr2S`Ds*``%H>`|Ww$YkX@o7OBlj?DRyX>AqQ zOx-fmh8_^bgUzh|-cA;iY3EY>w|IzYPYNEtU6LtP@`ErmHKp28zS+l3X+;PMry44J z<7G-eZ~^VA%cj%r_};U-G8r3a%6tGFSas5L^+_!Z%K+0gk4KQ=MW!2RnTU4RP5%so z@cdqEx_##;QN}sb{ZoDLnwkHZp438%;_fWdGdl;YJzGsL{V=h+CYuW8x5DFYQRo+K zDk#Bg{|PdEnW2JKk2Mud7>ZVH71OtZ@~F*5n7;jn=f3Q2R?};&1scs_Ygm})WwREI zdAjn=EFE5hs`i4}sXZinQ#rHKyj`{&^sf1TV?y8)t<6<@(Y|82=4u;y66w~PtL6D4 zwa+)#+=e*)wuia)>}=vS4w~y%g=ZFJm>Y&8`S!eHcD;k~{*hvCuD^@j-q*}-HXdtZ zcKde&ekbf_c1Kj?;V;Y{CAfa8)#f%Y(X(!}(%f!t_rXM=eaxMn#vtydn7uEB6Fbn! z?1P_Uar>rbpPezdp~dX;G8a+nnz@S+L8EU~bC*1KXw+SWzdX&hXhtq^X5YS%$gba- z`_Gw&MO%NXmye@m^(u4dv^&_ZKf@e;`VR4cR_5?bC|=XC=J4B)aHlm21N{_E`J*tw z%{atCh9M9R7=FVED!UvtsFV_3-h$6b{HoY^R(w1kwV9t zXQ$OBcI2ViqWhN`l4pJMlCDX3pM3L@DLA2q(Y&Gp#OVk(uh@VYGp|s1yVP3dQ_a%a zyt*d31$XBteDpvjd(%PTho&<5f?)IN!DA3oC!5#Y{*9|Ao7YblV92iK^*52BJGC=! z>;QXe(m>%5JB88x%^NQ+#EP|-dDDSc*aG^=ym>IF`k#5LN@a*}&Yl4S{p4)UUK)i)(5nvS%O0Px zQEs>S#?61Qy6t5CXZRC@P&@P8Ls{4!;%k0<4wgL4*_@vRrKq>toPTpPYK)HxiF=(>5xx - + Modifier la police d'un champ texte - + Modifier la couleur d'un champ texte - + Modifier la conservation de l'angle @@ -1714,7 +1714,7 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s - + Modifier l'alignement d'un champ texte @@ -2006,7 +2006,7 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s - + Simple @@ -2041,93 +2041,98 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s - - Normalement ouvert + + Définition de conducteur - Normalement fermé + Normalement ouvert - Inverseur + Normalement fermé + Inverseur + + + + Other - + Puissance - + Temporisé travail - + Temporisé repos - + Temporisé travail & repos - + Bobine - + Organe de protection - + Commutateur / bouton - - + + Générique - + Fusible - + Séctionnable - + Diode - + Phase - + Neutre - + Terre @@ -2135,90 +2140,90 @@ Remarque: Ces options n'autorisent ou bloquent l'auto numérotation, s ElementPropertiesWidget - + Général - + Élement Élement - + Nom : %1 - + Folio : %1 - + Type : %1 - + Sous-type : %1 - + Position : %1 - + Rotation : %1° - + Dimensions : %1*%2 - + Bornes : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 - + Retrouver dans le panel - + Éditer l'élément @@ -2681,60 +2686,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip - + Cartouches embarqués - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip Double-cliquez pour réduire ou développer la collection de cartouches entreprise - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Ceci est la collection de cartouches entreprise -- utilisez-la pour créer, stocker et éditer vos propres cartouches. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip @@ -2743,97 +2748,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant - + Copier le chemin - + Basculer vers ce projet - + Fermer ce projet - + Propriétés du projet - + Propriétés du folio - + Ajouter un folio - + Supprimer ce folio - + Remonter ce folio - + Abaisser ce folio - + Remonter ce folio x10 - + Remonter ce folio x100 - + Remonter ce folio au debut - + Abaisser ce folio x10 - + Abaisser ce folio x100 - + Nouveau modèle - + Éditer ce modèle - + Supprimer ce modèle - + Filtrer @@ -5635,88 +5640,88 @@ Voulez-vous enregistrer les modifications ? - + Supprimer le folio ? message box title - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - + Projet en lecture seule message box title - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content - + Supprimer les modèles de cartouche inutilisés dans le projet - + Supprimer les éléments inutilisés dans le projet - + Supprimer les catégories vides - + Nettoyer le projet window title - + Ajouter un folio - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left passer à la page suivante - + go one page right passer à la page suivante - + Ce projet ne contient aucun folio label displayed when a project contains no diagram - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> - + Projet window title for a project-less ProjectView @@ -6012,866 +6017,882 @@ Options disponibles : - + Collections - + Aucune modification - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip - + Annulations dock title - + E&xporter - + Imprimer - + &Quitter - + Annuler - + Refaire - + Annule l'action précédente status bar tip - + Restaure l'action annulée status bar tip - + Co&uper - + Cop&ier - + C&oller - + Transfère les éléments sélectionnés dans le presse-papier status bar tip - + Copie les éléments sélectionnés dans le presse-papier status bar tip - + Place les éléments du presse-papier sur le folio status bar tip - + Réinitialiser les conducteurs - + Création automatique de conducteur(s) Tool tip of auto conductor - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor - + Couleur de fond blanc/gris Tool tip of white/grey background button - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button - + Afficher la grille - + Affiche ou masque la grille des folios - + Propriétés du folio - + Propriétés du projet - + Ajouter un folio - + + Supprimer le folio - + Nettoyer le projet - + Ajouter un sommaire - + en utilisant des onglets - + en utilisant des fenêtres - + Mode Selection - + Mode Visualisation - + &Mosaïque - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + Exporter au format CSV - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers - + Exporter la liste des noms de conducteurs - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet - + &Cascade - + Projet suivant - + Projet précédent - + &Nouveau - + &Ouvrir - + &Enregistrer - + Enregistrer sous - + &Fermer - + Crée un nouveau projet status bar tip - + Ouvre un projet existant status bar tip - + Ferme le projet courant status bar tip - + Enregistre le projet courant et tous ses folios status bar tip - + Enregistre le projet courant avec un autre nom de fichier status bar tip - + Ajouter une colonne - + Enlever une colonne - + Ajouter une ligne Add row Ajouter une ligne - + Enlever une ligne Remove row Enlever une ligne - + Ajoute une colonne au folio status bar tip - + Enlève une colonne au folio status bar tip - + Agrandit le folio en hauteur status bar tip - + Rétrécit le folio en hauteur status bar tip - + Supprimer - + Pivoter - + Orienter les textes - + Retrouver dans le panel - + Éditer l'item sélectionné - + Enlève les éléments sélectionnés du folio status bar tip - + Pivote les éléments et textes sélectionnés status bar tip - + Pivote les textes sélectionnés à un angle précis status bar tip - + Retrouve l'élément sélectionné dans le panel status bar tip - + Tout sélectionner - + Désélectionner tout - + Inverser la sélection - + Sélectionne tous les éléments du folio status bar tip - + Désélectionne tous les éléments du folio status bar tip - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip - + Zoom avant - + Zoom arrière - + Zoom sur le contenu - + Zoom adapté - + Pas de zoom - + Agrandit le folio status bar tip - + Rétrécit le folio status bar tip - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre - + Adapte le zoom exactement sur le cadre du folio status bar tip - + Restaure le zoom par défaut status bar tip - + Ajouter un champ de texte - + Ajouter une image - + Ajouter une ligne Draw line - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter une polyligne - + Exporte le folio courant dans un autre format status bar tip - + Imprime un ou plusieurs folios du projet courant status bar tip - + Ferme l'application QElectroTech status bar tip - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip - + Présente les différents projets ouverts des onglets status bar tip - + Permet de sélectionner les éléments status bar tip - + Permet de visualiser le folio sans pouvoir le modifier status bar tip - + Dispose les fenêtres en mosaïque status bar tip - + Ajouter une nomenclature - + Dispose les fenêtres en cascade status bar tip - + Active le projet suivant status bar tip - + Active le projet précédent status bar tip - + Grouper les textes sélectionnés - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel - + Ajoute une image sur le folio actuel - + Ajoute une ligne sur le folio actuel - + Ajoute un rectangle sur le folio actuel - + Ajoute une ellipse sur le folio actuel - + Ajoute une polyligne sur le folio actuel - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer - + Outils - + Affichage - + Schéma - + Ajouter - + Profondeur toolbar title - + &Fichier - + &Édition - + &Projet - + Afficha&ge - + Fe&nêtres - + &Récemment ouverts - + Affiche ou non la barre d'outils principale - + Affiche ou non la barre d'outils Affichage - + Affiche ou non la barre d'outils Schéma - + Affiche ou non le panel d'appareils - + Affiche ou non la liste des modifications - + Afficher les projets - - + + Projet %1 enregistré dans le repertoire: %2. - + Ouvrir un fichier - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) - - + + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. - + Ouverture du projet en lecture seule message box title - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. - - + + Échec de l'ouverture du projet message box title - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe - + Éditer l'élement edit element - + Éditer le champ de texte edit text field - + Éditer l'image edit image - + Éditer le conducteur edit conductor - + Éditer l'objet sélectionné edit selected item - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content - + Active le projet « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title @@ -7115,17 +7136,17 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Annuler - + Refaire - + Profondeur toolbar title @@ -7151,52 +7172,52 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Ajouter une ligne - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter un polygone - + Ajouter du texte - + Ajouter un arc de cercle - + Ajouter une borne - + Ajouter un champ texte dynamique - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Parties toolbar title @@ -7234,12 +7255,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Aucune modification - + Éditeur d'éléments status bar message @@ -7259,35 +7280,35 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description - + Absence de borne - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne - + La vérification de cet élément a généré message box content - + %n erreur(s) errors @@ -7296,23 +7317,23 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et - + <b>%1</b> : %2 warning title: warning description - + Erreurs - + Avertissements @@ -7330,21 +7351,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content - + Ce fichier n'est pas un document XML valide message box content - + Erreur toolbar title @@ -7383,38 +7404,48 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Ajouter un texte d'élément non éditable dans les schémas - + Ajouter un texte d'élément pouvant être édité dans les schémas - + Avertissement - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) - + %n avertissement(s) warnings @@ -7423,63 +7454,63 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Recharger l'élément dialog title - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content - - - + + + Echec de l'enregistrement - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides - + Enregistrer sous dialog title - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file - + Enregistrer l'élément en cours ? dialog title - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name @@ -7499,22 +7530,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title - + Le chemin virtuel choisi ne correspond pas à un élément. message box content - + L'élément n'existe pas. message box content @@ -8653,7 +8684,7 @@ Que désirez vous faire ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. @@ -9269,22 +9300,22 @@ Voulez-vous la remplacer ? - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Pour installer le plugin qet_tb_generator <br> : visitez le site: <br><a href='https://pypi.python.org/pypi/qet-tb-generator'> qet-tb-generateur </a><br> requiert Python version 3.5 ou supérieure. <br><B><U> Premièrement , installation sous Windows </B></U><br>1. Installez, si nécessaire, Python 3.5 ou version ultérieure <br><br><a href='https://www.python.org/downloads/'> python.org </a><br> 2. pip installer qet_tb_generator <br><B><U> Mise à jour sous Windows </B></U><br> python -m installation de pip --upgrade qet_tb_generator <br> >> l'utilisateur peut lancer dans un terminal ce script dans cette Répertoire <br> C: \ Utilisateurs \ XXXX \ AppData \ Local \ Programmes \ Python \ Python36-32 \ Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Pour installer le plugin qet_tb_generator<br>Visitez:<br><a.href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Nécessite python 3.5 ou supérieur.<br><br><B><U>Première installation sous Linux</B></U><br>1. vérifiez que pip3 est installé: pip3 --version <br>Si ce n'est pas le cas, installez avec: sudo apt-get install python3-pip <br>2. Installez le programme: sudo pip3 install qet_tb_generator <br> 3. Exécutez le programme: qet_tb_generator <br><br><B><U> Mise à jour sous Linux </B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Erreur lors du lancement du plugin qet_tb_generator @@ -9436,51 +9467,51 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type - - + + Générique generic terminal element function - + Phase phase terminal element function - + Neutre neutral terminal element function @@ -9511,7 +9542,7 @@ Voulez-vous la remplacer ? - + Importer un fichier dxf @@ -14159,92 +14190,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_hr.ts b/lang/qet_hr.ts index 2111edd1b..3e29c168d 100644 --- a/lang/qet_hr.ts +++ b/lang/qet_hr.ts @@ -1674,7 +1674,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte @@ -1699,17 +1699,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier l'alignement d'un champ texte - + Modifier la couleur d'un champ texte - + Modifier la conservation de l'angle @@ -2001,7 +2001,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple Jednostavno @@ -2036,93 +2036,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - - Normalement ouvert + + Définition de conducteur - Normalement fermé + Normalement ouvert - Inverseur + Normalement fermé + Inverseur + + + + Other - + Puissance - + Temporisé travail - + Temporisé repos - + Temporisé travail & repos - + Bobine - + Organe de protection - + Commutateur / bouton - - + + Générique - + Fusible - + Séctionnable - + Diode - + Terre - + Phase - + Neutre @@ -2130,90 +2135,90 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général Općenito - + Élement - + Nom : %1 - + Folio : %1 - + Type : %1 Vrsta: %1 - + Sous-type : %1 - + Position : %1 - + Rotation : %1° - + Dimensions : %1*%2 - + Bornes : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 - + Retrouver dans le panel Nađi na ploči - + Éditer l'élément Uredi element @@ -2678,60 +2683,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip Dvoklik za smanjenje ili povećanje projekta - + Cartouches embarqués Uloži naslov bloka - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Dvoklik za smanjivanje ili proširenje ugrađene kolekcije - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Dvoklik za smanjenje ili povećanje zbirke predložaka QElectroTech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Zbirka predložaka od QElectroTech-a. Instalirana je kao komponenta sustava, nije ju moguće prilagođavati. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Dvoklik za smanjenje ili povećanje osobne kolekcije predložaka - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Osobna zbirka predložaka - možete ju stvarati, spremati i uređivati kako želite. @@ -2740,97 +2745,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant - + Copier le chemin - + Basculer vers ce projet - + Fermer ce projet Zatvori projekt - + Propriétés du projet Svojstva projekta - + Propriétés du folio - + Ajouter un folio - + Supprimer ce folio - + Remonter ce folio - + Abaisser ce folio - + Remonter ce folio x10 - + Remonter ce folio x100 - + Remonter ce folio au debut - + Abaisser ce folio x10 - + Abaisser ce folio x100 - + Nouveau modèle Novi predložak - + Éditer ce modèle Uredi ovaj predložak - + Supprimer ce modèle Obriši ovaj predložak - + Filtrer @@ -5592,34 +5597,34 @@ Les variables suivantes sont incompatibles : ProjectView - + Projet en lecture seule message box title Projekt samo za pregled - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Projekt je samo za pregled. Ne može biti brisan. - + Supprimer les modèles de cartouche inutilisés dans le projet obriši nekorištene predloške u projektu - + Supprimer les éléments inutilisés dans le projet Obriši nekorištene elemente u projektu - + Supprimer les catégories vides Obriši prazne kategorije - + Nettoyer le projet window title Obriši projekt @@ -5654,55 +5659,55 @@ Voulez-vous enregistrer les modifications ? - + Supprimer le folio ? message box title - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - + Ajouter un folio - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> - + Projet window title for a project-less ProjectView Projekt @@ -5999,49 +6004,49 @@ Dostupne opcije: QElectroTech - + Annulations dock title Poništi - + Aucune modification Bez promjena - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Kliknite za uređivanje svoje sheme - + &Nouveau &Novo - + &Ouvrir &Otvori - + &Fermer &Zatvori - + &Enregistrer &Spremi - + Enregistrer sous Spremi kao - + E&xporter &Izvoz @@ -6052,819 +6057,835 @@ Dostupne opcije: Projekt - + Collections - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip - + Exporte le folio courant dans un autre format status bar tip - + Imprimer Ispiši - + Imprime un ou plusieurs folios du projet courant status bar tip - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + &Quitter &Kraj - + Annuler Poništi - + Refaire Vrati kako je bilo - + Co&uper I&zreži - + Cop&ier &Kopiraj - + C&oller &Zalijepi - + Place les éléments du presse-papier sur le folio status bar tip - + Création automatique de conducteur(s) Tool tip of auto conductor - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor - + Couleur de fond blanc/gris Tool tip of white/grey background button - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button - + Afficher la grille - + Affiche ou masque la grille des folios - + Propriétés du folio - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip - + Ajouter un folio - + + Supprimer le folio - + Exporter au format CSV - + Ajouter une nomenclature - + Ajouter un sommaire - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers - + Exporter la liste des noms de conducteurs - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet - + Permet de visualiser le folio sans pouvoir le modifier status bar tip - + Crée un nouveau projet status bar tip - + Ouvre un projet existant status bar tip - + Ferme le projet courant status bar tip - + Enregistre le projet courant et tous ses folios status bar tip - + Enregistre le projet courant avec un autre nom de fichier status bar tip - + Ajouter une ligne Add row Dodaj liniju - + Enlever une ligne Remove row Ukloni red - + Ajoute une colonne au folio status bar tip - + Enlève une colonne au folio status bar tip - + Agrandit le folio en hauteur status bar tip - + Rétrécit le folio en hauteur status bar tip - + Éditer l'item sélectionné - + Grouper les textes sélectionnés - + Enlève les éléments sélectionnés du folio status bar tip - + Retrouve l'élément sélectionné dans le panel status bar tip - + Tout sélectionner Odaberi sve - + Désélectionner tout Bez odabira - + Inverser la sélection Obrnuta (inverzna) selekcija - + Sélectionne tous les éléments du folio status bar tip - + Désélectionne tous les éléments du folio status bar tip - + Zoom sur le contenu - + Agrandit le folio status bar tip - + Rétrécit le folio status bar tip - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre - + Adapte le zoom exactement sur le cadre du folio status bar tip - + Ajouter une image - + Ajouter une polyligne - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel - + Ajoute une image sur le folio actuel - + Ajoute une ligne sur le folio actuel - + Ajoute un rectangle sur le folio actuel - + Ajoute une ellipse sur le folio actuel - + Ajoute une polyligne sur le folio actuel - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer - + Ajouter - + Profondeur toolbar title Dubina - + Supprimer Obriši - + Pivoter Okreni - + Orienter les textes Odaberi orijentaciju teksta - + Retrouver dans le panel Nađi na ploči - + Réinitialiser les conducteurs Resetiraj vodiče - + Ajouter un champ de texte Dodaj tekstualno polje - + Ajouter une colonne Dodaj stupac - + Enlever une colonne Ukloni stupac - + Propriétés du projet Svojstva projekta - + Nettoyer le projet Obriši projekt - + Zoom avant Povećaj - + Zoom arrière Smanji - + Zoom adapté Podesi povećanje - + Pas de zoom Poništi povećanje - + en utilisant des onglets koristi kartice - + en utilisant des fenêtres koristi prozore - + Mode Selection Način selekcije - + Mode Visualisation Vrsta pogleda - + &Mosaïque &Mozaik - + &Cascade &Kaskada - + Projet suivant Slijedeći projekt - + Projet précédent Prethodni projekt - + Ajouter un rectangle Dodaj pravokutnik - + Ajouter une ellipse Dodaj elipsu - - + + Projet %1 enregistré dans le repertoire: %2. - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) - - + + Impossible d'ouvrir le fichier message box title Nemoguće otvoriti datoteku - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Ouverture du projet en lecture seule message box title Otvori datoteku samo za čitanje - + Ferme l'application QElectroTech status bar tip Zatvori QElectroTech - + Annule l'action précédente status bar tip Poništi prethodne akcije - + Restaure l'action annulée status bar tip Vrati poništene akcije - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Stavi odabrane elemente u međuspremnik - + Copie les éléments sélectionnés dans le presse-papier status bar tip Kopiraj odabrane elemente - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Poništi odabir elemenata i odabei elemente koji nisu bili odabrani - + Pivote les éléments et textes sélectionnés status bar tip Okreni odabrani element i tekst - + Pivote les textes sélectionnés à un angle précis status bar tip Okreni odabrani tekst za određeni kut - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Vrati putanje vodiča ignorirajući korisničke promjene - + Restaure le zoom par défaut status bar tip Vrati nivo temeljnog povećanja - + Ajouter une ligne Draw line Dodaj liniju - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Prikaži otvorene projekte u prozorima - + Présente les différents projets ouverts des onglets status bar tip Prikaži otvorene projekte u karticama - + Permet de sélectionner les éléments status bar tip Dozvoli odabir elemenata - + Dispose les fenêtres en mosaïque status bar tip Složi prozore kao mozaik - + Dispose les fenêtres en cascade status bar tip Složi prozore u kaskadu - + Active le projet suivant status bar tip Aktiviraj slijedeći projekt - + Active le projet précédent status bar tip Aktiviraj prethodni projekt - + &Fichier &Datoteka - + &Édition &Uredi - + &Projet &Projekt - + Afficha&ge Ekr&an - + Fe&nêtres Pro&zor - + &Récemment ouverts - + Affiche ou non la barre d'outils principale Prikaži ili sakrij glavnu alatnu traku - + Affiche ou non la barre d'outils Affichage Prikaži ili sakrij alatnu traku ekrana - + Affiche ou non la barre d'outils Schéma Prikaži ili sakrij alatnu traku sheme - + Affiche ou non le panel d'appareils Ekran ili element van panela - + Affiche ou non la liste des modifications Prikaži ili sakrij listu vraćanja - + Afficher les projets Prikaži projekt - + Outils Alati - + Affichage Ekran - + Schéma Shema - + Ouvrir un fichier Otvori datoteku - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Datoteka koju pokušavate otvoriti nije čitljiva i ne može biti otvorena. Molim provjerite dozvole za datoteku. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Nije moguće upisivanje u projekt kojeg pokušavate otvoriti. Otvorit će se samo za čitanje. - - + + Échec de l'ouverture du projet message box title Nemoguće otvoriti projekt - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe - + Éditer l'élement edit element - + Éditer le champ de texte edit text field - + Éditer l'image edit image - + Éditer le conducteur edit conductor - + Éditer l'objet sélectionné edit selected item - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content - + Active le projet « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Greška @@ -7128,42 +7149,42 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Uredi informacije o autoru - + Ajouter une ligne Dodaj liniju - + Ajouter un rectangle Dodaj pravokutnik - + Ajouter une ellipse Dodaj elipsu - + Ajouter un polygone Dodaj poligon - + Ajouter du texte Dodaj tekst - + Ajouter un arc de cercle Dodaj luk - + Ajouter une borne Dodaj priključak - + Annuler Poništi @@ -7179,24 +7200,34 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + La vérification de cet élément a généré message box content - + %n erreur(s) errors @@ -7206,12 +7237,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et - + %n avertissement(s) warnings @@ -7221,90 +7252,90 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description - + Erreurs - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Refaire Vrati poništeno - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) QElectroTech elementi (*.elmt) - + Ajouter un champ texte dynamique - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Ajouter un texte d'élément non éditable dans les schémas - + Ajouter un texte d'élément pouvant être édité dans les schémas - - - + + + Echec de l'enregistrement - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides - + Avertissement Upozorenje - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... - + Parties toolbar title Dijelovi - + Profondeur toolbar title Dubina @@ -7342,12 +7373,12 @@ veuillez patienter durant l'import... [Samo za čitanje] - + Aucune modification Bez izmjena - + Éditeur d'éléments status bar message Uređivač elemenata @@ -7363,18 +7394,18 @@ veuillez patienter durant l'import... - + Absence de borne warning title Nedostaje priključak - + Absence de borne Nedostaje priključak - + Avertissements Upozorenje @@ -7386,21 +7417,21 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier %1. message box content Nemoguće otvoriti datoteku %1. - + Ce fichier n'est pas un document XML valide message box content Datoteka nije važeči XML dokument - + Erreur toolbar title Greška @@ -7439,43 +7470,43 @@ veuillez patienter durant l'import... Nemoguće spremiti element - + Impossible d'ouvrir le fichier message box title Nemoguće otvoriti datoteku - + Recharger l'élément dialog title Ponovo učitaj element - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Element je promijenjen od posljednjeg spremanja. Ako ga ponovo učitate, promjene će biti izgubljene. Želite li zaista ponovo učitati element? - + Enregistrer sous dialog title Spremi kao - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech elementi (*.elmt) - + Enregistrer l'élément en cours ? dialog title Spremi trenutni element? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Želite li spremiti element %1? @@ -7495,22 +7526,22 @@ veuillez patienter durant l'import... - - + + Élément inexistant. message box title Nepostojeći element. - + L'élément n'existe pas. message box content Element ne postoji. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Izabrana putanje ne poklapa se s elementom. @@ -8030,7 +8061,7 @@ Que désirez vous faire ? QObject - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Upozorenje: Element će biti spremljen sa više trenutnih verzija QElectroTech-a. @@ -8814,7 +8845,7 @@ Que désirez vous faire ? - + Importer un fichier dxf @@ -8933,72 +8964,72 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type - - + + Générique generic terminal element function - + Phase phase terminal element function - + Neutre neutral terminal element function - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin @@ -14168,92 +14199,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur Greška - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_hu.ts b/lang/qet_hu.ts index ee979ed24..1a1ad16a7 100644 --- a/lang/qet_hu.ts +++ b/lang/qet_hu.ts @@ -1689,17 +1689,17 @@ Megjegyzés: ezek a lehetőségek NEM engedélyezik, vagy blokkolják az Automat - + Modifier la police d'un champ texte Szövegmező betűtípusának megváltoztatása - + Modifier la couleur d'un champ texte Szövegmező színének változtatása - + Modifier la conservation de l'angle A szög módosításának megőrzése @@ -1724,7 +1724,7 @@ Megjegyzés: ezek a lehetőségek NEM engedélyezik, vagy blokkolják az Automat Szöveg forrásának változtatása - + Modifier l'alignement d'un champ texte Szövegmező elhelyezésének módosítása @@ -2016,7 +2016,7 @@ Megjegyzés: ezek a lehetőségek NEM engedélyezik, vagy blokkolják az Automat - + Simple Egyszerű @@ -2051,93 +2051,98 @@ Megjegyzés: ezek a lehetőségek NEM engedélyezik, vagy blokkolják az Automat Bélyegkép - + + Définition de conducteur + + + + Normalement ouvert Alaphelyzetben nyitott - + Normalement fermé Alaphelyzetben zárt - + Inverseur inverz - + Other egyéb - + Puissance Teljesítmény - + Temporisé travail késleltetve be kapcsoló - + Temporisé repos késleltetve ki kapcsoló - + Temporisé travail & repos késleltetve be és ki kapcsoló - + Bobine tekercs - + Organe de protection védelmi szerv - + Commutateur / bouton Kapcsoló / nyomógomb - - + + Générique Általános - + Fusible Biztosíték - + Séctionnable Választható - + Diode Dióda - + Phase Fázis - + Neutre Nulla - + Terre Föld @@ -2145,99 +2150,99 @@ Megjegyzés: ezek a lehetőségek NEM engedélyezik, vagy blokkolják az Automat ElementPropertiesWidget - + Général Általános - + Élement Elem - + Nom : %1 Név : %1 - + Folio : %1 Tervlap : %1 - + Type : %1 Típus : %1 - + Sous-type : %1 Altípus : %1 - + Position : %1 Pozíció : %1 - + Rotation : %1° Elforgatás : %1° - + Dimensions : %1*%2 Kiterjedés : %1×%2 - + Bornes : %1 Csatlakozók : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Elhelyezés : %1 - + Retrouver dans le panel Keresés a penelben - + Éditer l'élément Elem szerkesztése @@ -2700,60 +2705,60 @@ Az összes elem és fájl a mappában törölve lesz. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip Dupla kattintással összecsukható, vagy kinyitható ez a projekt - + Cartouches embarqués Beágyazott szövegmező - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Dupla kattintással összecsukható, vagy kinyitható ez a beágyazott tervjelgyűjtemény - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Húzd meg és ejtsd le ezt a tervjel sablont egy tervlapra, hogy alkalmazzuk. - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Dupla kattintással összecsukható, vagy kinyitható a QElectrotech tervjel gyűjtemény - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Ez a tervjelgyűjtemény alkalmazható a QElectrotech-kel együtt. Renszeralkalmazásként van telepítve. Normál esetben nem testreszabható. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Dupla kattintással összecsukható, vagy kinyitható a saját tervjelgyűjtemény - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Ez a saját tervjelgyűjteményed -- használhatod a létrehozást, tárolást és szerkesztést a saját tervjeleidhez. @@ -2762,97 +2767,97 @@ Az összes elem és fájl a mappában törölve lesz. ElementsPanelWidget - + Ouvrir le dossier correspondant Almappa megnyitása - + Copier le chemin Teljes elérési útvonal másolása a vágólapra - + Basculer vers ce projet Projekt aktiválása - + Fermer ce projet Projekt bezárása - + Propriétés du projet Projekt tulajdonságok - + Propriétés du folio Tervlap tulajdonságok - + Ajouter un folio Tervlap hozzáadása - + Supprimer ce folio Tervlap törlése - + Remonter ce folio Tervlap mozgatása fel - + Abaisser ce folio Tervlap mozgatása le - + Remonter ce folio x10 Tervlap mozgatása fel 10 lappal - + Remonter ce folio x100 Tervlap mozgatása fel 100 lappal - + Remonter ce folio au debut Tervlap mozgatása kezdőlapnak - + Abaisser ce folio x10 Tervlap mozgatása le 10 lappal - + Abaisser ce folio x100 Tervlap mozgatása le 100 lappal - + Nouveau modèle Új sablon - + Éditer ce modèle Sablon szerkesztése - + Supprimer ce modèle Sablon törlése - + Filtrer Szűrő @@ -5673,88 +5678,88 @@ Akarod menteni a változásokat? nincs aktív projekt - + Supprimer le folio ? message box title Töröljük ezt a tervlapot ? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - Valóban törölni akarod ezt a tervlapot a projektből? A változás visszafordíthatatlan. + - + Projet en lecture seule message box title Csak olvasható projekt - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Ez a profekt csak olvasható. Ezért, ez nem tisztítható. - + Supprimer les modèles de cartouche inutilisés dans le projet A nemhasznált sablonok törlése a projektben - + Supprimer les éléments inutilisés dans le projet A nemhasznált elemek törlése a projektben - + Supprimer les catégories vides Üres kategóriák törlése - + Nettoyer le projet window title Projekt tisztítása - + Ajouter un folio Tervlap hozzáadása - + Revenir au debut du projet Visszatérés a projekt kezdőpontjához - + Aller à la fin du projet Ugrás a projekt végéhez - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Ez a projekt nem tartalmaz tervlapokat - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Projekt megnyitása ...</b><br/>Tervlap fül létrehozása :</p> - + Projet window title for a project-less ProjectView Projekt @@ -6056,473 +6061,474 @@ Elérhető lehetőségek: QElectroTech - + Aucune modification Nincs módosístás - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Kattints egy műveletre, hogy visszaterjen a változtatásokban egy korábbi állapotra - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Ez a panel felsorolja a különböző végrehajtott változtatásokat a jelenlegi tervlapon. Egy változásra kattintva, a tervlap visszakapja azt az állapotot, ami közvetlenül utána volt alkalmazva. - + Annulations dock title Visszavonás - + E&xporter &Exportálás - + Imprimer Nyomtatás - + &Quitter &Kilépés - + Annuler Visszavonás - + Refaire Újrakészít - + Co&uper Ki&vágás - + Cop&ier M&ásolás - + C&oller &Beilleszt - + Réinitialiser les conducteurs Vezetékek visszaállítása - + Création automatique de conducteur(s) Tool tip of auto conductor Önműködően létrehozza a vezetőket - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Használja a vezetők automatikus létrehozását, amikor lehetséges - + Couleur de fond blanc/gris Tool tip of white/grey background button Háttér szín fehér / szürke - + Afficher la grille Rács megjelenítése - + Affiche ou masque la grille des folios Megjeleníti vagy elrejti a tervlap rácsát - + Propriétés du folio Tervlap tulajdonsága - + Propriétés du projet Projekt tulajdonságok - + Ajouter un folio Tervlap hozzáadása - + + Supprimer le folio Ennek a tervlapnak a törlése - + Nettoyer le projet Projekt tisztítása - + Ajouter un sommaire Összesítés hozzáadása - + Lancer le plugin de création de borniers Elindítja a sorkapocsterv generáló beépülő modult - + en utilisant des onglets fülek használata - + en utilisant des fenêtres ablakok használata - + Mode Selection Kiválasztás - + Mode Visualisation tervlap mozgatása keresgéléshez Keresgélési nézet mód - + &Mosaïque &Mozaik - + &Cascade &Lépcsőzetes - + Projet suivant Következő projekt - + Projet précédent Előző projekt - + &Nouveau &Új - + &Ouvrir &Megnyitás - + &Enregistrer &Mentés - + Enregistrer sous Mentés más néven - + &Fermer &Bezár - + Crée un nouveau projet status bar tip Új projekt létrehozás - + Ouvre un projet existant status bar tip Létező projekt megnyitása - + Ferme le projet courant status bar tip A jelenlegi projekt bezárása - + Enregistre le projet courant et tous ses folios status bar tip A jelenlegi projekt és összes tervlap mentése - + Enregistre le projet courant avec un autre nom de fichier status bar tip A jelenlegi projekt mentése más néven - + Ajouter une colonne Oszlop hozzáadása - + Enlever une colonne Oszlop eltávolítása - + Ajoute une colonne au folio status bar tip Egy oszlop hozzáadása a tervlaphoz - + Enlève une colonne au folio status bar tip Egy oszlop eltávolítása a tervlapról - + Agrandit le folio en hauteur status bar tip Tervlap magasság növelése - + Rétrécit le folio en hauteur status bar tip Tervlap magasság csökkentése - + Supprimer Törlés - + Pivoter Forgatás - + Orienter les textes Szöveg irányának megváltoztatása - + Retrouver dans le panel Keresés a panelban - + Éditer l'item sélectionné A kijelölt elem szerkesztése - + Chercher/remplacer Keresés / csere - + Profondeur toolbar title Rétegelrendezés - + Groupe Csoport - + Ajouter une nomenclature Osztályozási rendszer hozzáadása - + Grouper les textes sélectionnés Kiválasztott szövegek csoportosítása - + Enlève les éléments sélectionnés du folio status bar tip Kiválasztott elem eltávolítása a tervlapról - + Pivote les éléments et textes sélectionnés status bar tip A kiválasztott elemek és szövegek forgatása - + Pivote les textes sélectionnés à un angle précis status bar tip A kiválasztott szövegek forgatása egy meghatározott szögben - + Retrouve l'élément sélectionné dans le panel status bar tip A kiválasztott elem keresése a panelen - + Tout sélectionner Összes kiválasztása - + Désélectionner tout Kiválasztás megszüntetése - + Inverser la sélection Kiválasztás megfordítása - + Sélectionne tous les éléments du folio status bar tip Összes elem kiválasztása a tervlapon - + Désélectionne tous les éléments du folio status bar tip Összes elem kiválasztásának megszüntetése a tervlapon - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Elemek kiválasztásának megfordítása - + Zoom avant Nagyítás - + Zoom arrière Kicsinyítés - + Zoom sur le contenu Tartalom nagyítása - + Zoom adapté Legnagyobb nézetben - + Pas de zoom Nagyítás alaphelyzetbe állítása - + Agrandit le folio status bar tip Tervlap nagyítása - + Rétrécit le folio status bar tip Tervlap kicsinyítése - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Beállítja a nagyítást a teljes tartalom megjelenítéséhez, a tervlaptól függetlenül - + Adapte le zoom exactement sur le cadre du folio status bar tip Beállítja a nagyítást pontosan a tervlap részére - + Restaure le zoom par défaut status bar tip Visszaállítja az alapértelmezett nyagyítást - + Ajouter un champ de texte Szövegmező hozzáadása - + Ajouter une image Kép hozzáadása - + Ajouter un rectangle Négyzet hozzáadása - + Ajouter une ellipse Elipszis hozzáadása - + Ajouter une polyligne Sokszög hozzáadása - + Exporte le folio courant dans un autre format status bar tip A jelenlegi tervlapot más formátumba exportálja - + Imprime un ou plusieurs folios du projet courant status bar tip Egy, vagy több tervlapot kinyomtat a jelenlegi projektből - + Ferme l'application QElectroTech status bar tip QElectroTech bezárása - + Annule l'action précédente status bar tip Az előző művelet visszavonása @@ -6534,395 +6540,410 @@ Elérhető lehetőségek: Projektek - + Collections Gyűjtemény - + Restaure l'action annulée status bar tip Visszaállítja a visszavont műveletet - + Transfère les éléments sélectionnés dans le presse-papier status bar tip A kiválasztott elemek vágólapra helyezése - + Copie les éléments sélectionnés dans le presse-papier status bar tip A kiválasztott elemek másolása - + Place les éléments du presse-papier sur le folio status bar tip A vágólapon lévő elemeket beilleszti a tervlapba - + Ajouter une ligne Add row Sor hozzáadása - + Enlever une ligne Remove row Sor eltávolítása - + Ajouter une ligne Draw line Vonal rajzolása - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Visszaállítja a vezetékek útvonalát, figyelmen kívül hagyva a felhasználó változtatásait - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Tervlap tulajdonságainak szerkesztése (méret, szövegmező információk, vezeték tulajdoságok...) - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Ablakban jeleníti meg a különböző megnyitott projekteket - + Présente les différents projets ouverts des onglets status bar tip Füleken jeleníti meg a különböző megnyitott projekteket - + Permet de sélectionner les éléments status bar tip Engedélyezi az elemek kiválasztását - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Lehetővé teszi a tervlap megtekintését a módosítása nélkül - + Dispose les fenêtres en mosaïque status bar tip Ablakok elrendezése mozaik mintában - + Exporter en pdf Exportálás PDF-be - + Exporte un ou plusieurs folios du projet courant status bar tip Exportálja a jelenlegi projekt egy vagy több tervlapját - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button - + Exporter au format CSV Exportálás CSV formátumba - + Gestionnaire de borniers (DEV) Sorkapocs rendszerező (DEV) - + Exporter la liste des noms de conducteurs Vezetékek nevének exportálása listába - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet A belső projekt adatbázis exportálása - + Dispose les fenêtres en cascade status bar tip Ablakok elrendezése lépcsőzetesen - + Active le projet suivant status bar tip Következő projekt aktiválása - + Active le projet précédent status bar tip Előző projekt aktiválása - + Ajouter un plan de bornes Sorkapocsterv hozzáadása - + Ajoute un champ de texte sur le folio actuel Szövegmező hozzáadása a jelenlegi tervlaphoz - + Ajoute une image sur le folio actuel Kép hozzáadása a jelenlegi tervlaphoz - + Ajoute une ligne sur le folio actuel Vonal hozzáadása a jelenlegi tervlaphoz - + Ajoute un rectangle sur le folio actuel Négyszög hozzáadása a jelenlegi tervlaphoz - + Ajoute une ellipse sur le folio actuel Ellipszis hozzáadása a jelenlegi tervlaphoz - + Ajoute une polyligne sur le folio actuel Vonallánc hozzáadása a jelenlegi tervlaphoz - + Ajoute un plan de bornier sur le folio actuel Sorkapocsterv hozzáadása a jelenlegi tervlaphoz - + Outils Eszközök - + Affichage Megjelenítés - + Schéma Terv - + Ajouter Hozzáad - + &Fichier &Fájl - + &Édition S&zerkesztés - + &Projet &Projekt - + Afficha&ge &Megjelenítés - + Fe&nêtres Ab&lakok - + &Récemment ouverts &Utolsó fájlok - + Affiche ou non la barre d'outils principale Megjeleníti, vagy elrejti a fő eszköztárat - + Affiche ou non la barre d'outils Affichage Megjeleníti, vagy elrejti a eszköztárat - + Affiche ou non la barre d'outils Schéma Megjeleníti, vagy elrejti tervlap eszköztárat - + Affiche ou non le panel d'appareils Megmutatja, vagy elrejti az elemek panelt - + Affiche ou non la liste des modifications Megjeleníti, vagy elrejti a visszavonás listát - + Afficher les projets Projektek megjelenítése - - + + Projet %1 enregistré dans le repertoire: %2. A %1 projekt bejegyezve a: %2 könyvtárba. - + Ouvrir un fichier Fájl megnyitása - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech projekt(*.qet);;XML fájlok (*.xml);;minden fájl (*) - - + + Impossible d'ouvrir le fichier message box title Nem lehet a fájlt megnyitni - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Úgy tűnik %1 fájl amelyiket megpróbáltad megnyitni nem létezik, vagy nem létezik többé. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. A megnyitni próbált fájl sérültnek tűnik és nem lehet megnyitni. Kérlek ellenőrízd a fájlhoz szükséges engedélyeket. - + Ouverture du projet en lecture seule message box title Csak olvasható fájl megnyitása - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. A megnyitni próbált projekt írásvédetnek tűnik. Csak olvashatóként lesz megnyitva. - - + + Échec de l'ouverture du projet message box title Képtelen megnyitni a projektet - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dupla kattintás a forma befejezéséhez, Jobb kattintás az utolsó pont visszavonásához - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Éditer l'élement edit element Elem szerkesztése - + Éditer le champ de texte edit text field Szövegmező szerkesztése - + Éditer l'image edit image Kép szerkesztése - + Éditer le conducteur edit conductor Vezető szerkesztése - + Éditer l'objet sélectionné edit selected item Kijelölt objektum szerkesztése - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Hiba történt a fájl megnyitásakor %1. - + Active le projet « %1 » Projekt aktiválása « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Hiba @@ -7166,17 +7187,17 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Elem tulajdonságainak szerkesztése - + Annuler Visszavonás - + Refaire Újrakészít - + Profondeur toolbar title Rétegelrendezés @@ -7202,52 +7223,52 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Nagyítás alaphelyzetbe állítása - + Ajouter une ligne Vonal rajzolása - + Ajouter un rectangle Négyzet hozzáadása - + Ajouter une ellipse Elipszis hozzáadása - + Ajouter un polygone Sokszög hozzáadása - + Ajouter du texte Szöveg hozzáadása - + Ajouter un arc de cercle Ív hozzáadása - + Ajouter une borne Csatlakozó hozzáadása - + Ajouter un champ texte dynamique Dinamikus szövegmező hozzáadása - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dupla kattintás a forma befejezéséhez, Jobb kattintás az utolsó pont visszavonásához - + Parties toolbar title Alkatrészek @@ -7285,12 +7306,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [Csak olvasható] - + Aucune modification Nincs módosístás - + Éditeur d'éléments status bar message Elemek szerkesztése @@ -7304,35 +7325,35 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title Hiányzó csatlakozó - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>Csatlakozó nélkül,az elemet nem lehet csatlakoztatni másik elemhez vezetékkel. - + Absence de borne Hiányzó csatlakozó - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br> <b> Hiba </ b>: <br> a tervlap hivatkozásnak muszály rendelkeznie kell egy csatlakozással<br> <b> Megoldás </ b> :<br> Ellenőrízd, hogy az elem csak egy csatlakozással rendelkezik - + La vérification de cet élément a généré message box content Az elem generálásának megerősítése - + %n erreur(s) errors @@ -7340,23 +7361,23 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et és - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 - + Erreurs Hiba - + Avertissements Figyelmeztetés @@ -7374,21 +7395,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Nem lehet a fájlt megnyitni %1. - + Ce fichier n'est pas un document XML valide message box content Ez a fájl nem egy felhasználható XML dokumentum - + Erreur toolbar title Hiba @@ -7432,47 +7453,57 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Ajouter un texte d'élément non éditable dans les schémas Nem szerkeszthető elemszöveg hozzáadása a tervlapokon - + Ajouter un texte d'élément pouvant être édité dans les schémas Szerkeszthető elemszöveg hozzáadása a tervlapokon - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides - + Avertissement Figyelem - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Nagyméretű DXF file importálása eltarthat egy ideig kérlek várd meg a befejezését... - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) QElectroTech elemek (*.elmt) - + %n avertissement(s) warnings @@ -7480,55 +7511,55 @@ kérlek várd meg a befejezését... - + Impossible d'ouvrir le fichier message box title Nem lehet a fájlt megnyitni - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Úgy tűnik %1 fájl amelyiket megpróbáltad megnyitni nem létezik, vagy nem létezik többé. - + Recharger l'élément dialog title Elem újratöltése - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Az elem módosítva lett az utolsó mentés óta. Ha újratöltöd, ezek a változások elvesznek. Biztosan akarod az elem újratöltését? - - - + + + Echec de l'enregistrement Regisztráció sikertelen - + Enregistrer sous dialog title Mentés más néven - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech elemek (*.elmt) - + Enregistrer l'élément en cours ? dialog title Mented a jelenlegi elemet? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Szeretnéd menteni az elemet %1? @@ -7548,22 +7579,22 @@ kérlek várd meg a befejezését... - - + + Élément inexistant. message box title Nem létező elem. - + L'élément n'existe pas. message box content Az elem nem létezik. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content A kiválasztott virtuális elérési útvonal nem tartozik egy elemhez sem. @@ -8565,7 +8596,7 @@ Mit szeretnél csinálni? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Figyelem: a QElectrotech sokkal régebbi verziójával lett elmentve. @@ -9320,22 +9351,22 @@ Cserélni akarod? Vezetékek létrehozása - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> A qet_tb_generator beépülő modul telepítésehez<br>Látogass el:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Szükséges hozzá python 3.5 vagy, magasabb verziója.<br><B><U> Első telepítés Windowson</B></U><br>1. Python 3.5 vagy, magasabb verziójának telepítése, ha szükséges<br> Látogass el :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. parancssorba gépelve: pip install qet_tb_generator<br><B><U> Frissítés Windowson</B></U><br>parancssorba gépelve: python -m pip install --upgrade qet_tb_generator<br>>>a felhasználó ezt a script-et a terminálban indíthatja el és ebben a könyvtárban található <br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> (XXXX a felhasználó neve) - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> A qet_tb_generator beépülő modul telepítésehez<br>Látogass el :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Szükséges hozzá a python 3.5 vagy magasabb verzió.<br><br><B><U> Első telepítés Linuxon</B></U><br>1.Ellenőrízd, hogy telepítve van-e: pip3 --version<br>Ha nincs, akkor töltsd le ezzel: sudo apt-get install python3-pip<br>2. Telepítsd a programot ezzel: sudo pip3 install qet_tb_generator<br>3. Futtasd a programot ezzel: qet_tb_generator<br><br><B><U> Frissítés Linuxon</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Hiba a qet_tb_generator beépülő modul indítással @@ -9487,51 +9518,51 @@ Cserélni akarod? Sorkapocs tömb rendezése %1 - - + + Générique generic terminal element type Általános - + Fusible fuse terminal element type Biztosíték - + Sectionable sectional terminal element type Megosztható - + Diode diode terminal element type Dióda - + Terre ground terminal element type Földelő - - + + Générique generic terminal element function Általános - + Phase phase terminal element function Fázis - + Neutre neutral terminal element function Nulla @@ -9562,7 +9593,7 @@ Cserélni akarod? Egy elem megnyitása - + Importer un fichier dxf DXF fájl importálása @@ -14256,92 +14287,92 @@ Maximális hossz : %2px WiringListExport - - + + Erreur Hiba - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Feszültség / Protokol - + Couleur du fil Wiring list CSV header Vezető színe - + Section du fil Wiring list CSV header Vezető keresztmetszete - + Fonction Wiring list CSV header Funkció - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_it.ts b/lang/qet_it.ts index 9550fce71..068780213 100644 --- a/lang/qet_it.ts +++ b/lang/qet_it.ts @@ -1633,12 +1633,12 @@ Nota: queste opzioni non consentono attivare o disattivare la numerazione automa Modificare la sorgente di un testo - + Modifier la couleur d'un champ texte Modifica il colore di un campo di testo - + Modifier la conservation de l'angle @@ -1649,7 +1649,7 @@ Nota: queste opzioni non consentono attivare o disattivare la numerazione automa - + Modifier la police d'un champ texte Modificare il carattere di un campo di testo @@ -1684,7 +1684,7 @@ Nota: queste opzioni non consentono attivare o disattivare la numerazione automa Modifica la cornice di un campo di testo - + Modifier l'alignement d'un champ texte Modificare l'allineamento di un campo di testo @@ -1956,53 +1956,58 @@ Nota: queste opzioni non consentono attivare o disattivare la numerazione automa Miniature - + + Définition de conducteur + + + + Other - + Puissance Potenza - - + + Générique Generico - + Fusible Fusibile - + Séctionnable - + Diode Diodo - + Phase Fasi - + Neutre Neutro - + Terre Terra - + Normalement fermé Normalmente chiuso @@ -2012,12 +2017,12 @@ Nota: queste opzioni non consentono attivare o disattivare la numerazione automa Stato del contatto - + Normalement ouvert Normalmente aperto - + Temporisé travail & repos Ritardo all'eccitazione e diseccitazione @@ -2032,18 +2037,18 @@ Nota: queste opzioni non consentono attivare o disattivare la numerazione automa Master - + Bobine Bobina - + Temporisé travail Ritardo all'eccitazione - + Simple Semplice @@ -2078,7 +2083,7 @@ Nota: queste opzioni non consentono attivare o disattivare la numerazione automa Tipologia di base: - + Organe de protection Protezione @@ -2088,7 +2093,7 @@ Nota: queste opzioni non consentono attivare o disattivare la numerazione automa Morsettiera - + Commutateur / bouton Commutatore / Bottone @@ -2098,7 +2103,7 @@ Nota: queste opzioni non consentono attivare o disattivare la numerazione automa Riferimento alla pagina precedente - + Temporisé repos Ritardo alla diseccitazione @@ -2118,7 +2123,7 @@ Nota: queste opzioni non consentono attivare o disattivare la numerazione automa Slave - + Inverseur Contatto in scambio @@ -2136,92 +2141,92 @@ Nota: queste opzioni non consentono attivare o disattivare la numerazione automa ElementPropertiesWidget - + Général Generale - + Folio : %1 Pagina : %1 - + Bornes : %1 Terminali : %1 - + Emplacement : %1 Posizione : %1 - + Élement Elemento - + Rotation : %1° Rotazione: %1° - + Position : %1 Position : %1 - + Type : %1 Type : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Éditer l'élément Modifica l'elemento - + Dimensions : %1*%2 Dimensione : %1*%2 - + Sous-type : %1 Sottotipo : %1 - + Retrouver dans le panel Mostra nello schema - + Nom : %1 Nome : %1 @@ -2688,60 +2693,60 @@ Tutti gli elementi e le sotto-cartelle presenti in essa saranno cancellate. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip Fare doppio clic per minimizzare o espandere questo progetto - + Cartouches embarqués Cartigli integrati - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Fare doppio clic per minimizzare o espandere questa collezione di cartigli integrati - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Trascinare questo modello di cartiglio sulla pagina per applicarlo. - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Fare doppio clic per minimizzare o espandere la collezione dei cartigli di QElectroTech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Questa è la raccolta di cartigli forniti con QElectroTech. Installati come un componente di sistema, normalmente non è possibile personalizzarli. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Fare doppio clic per minimizzare o espandere la collezione personale di cartigli - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Questa è la collezione personale di cartigli -- utilizzarla per creare, memorizzare e modificare i propri cartigli. @@ -2750,97 +2755,97 @@ Tutti gli elementi e le sotto-cartelle presenti in essa saranno cancellate. ElementsPanelWidget - + Remonter ce folio x10 Porta in su la pagina di 10 - + Nouveau modèle Nuovo modello - + Propriétés du folio Proprietà della pagina - + Remonter ce folio Porta su questa pagina - + Supprimer ce modèle Cancellare questo modello - + Éditer ce modèle Modificare questo modello - + Fermer ce projet Chiudere questo progetto - + Ouvrir le dossier correspondant Aprire la cartella corrispondente - + Basculer vers ce projet Passare a questo progetto - + Copier le chemin Copiare il percorso - + Remonter ce folio au debut Sposta all'inizio questa pagina - + Abaisser ce folio x10 Sposta in giù la pagina di 10 - + Ajouter un folio Aggiungere una pagina - + Propriétés du projet Proprietà del progetto - + Supprimer ce folio Eliminare una pagina - + Remonter ce folio x100 Porta in su la pagina di 100 - + Abaisser ce folio x100 Sposta in giù la pagina di 100 - + Filtrer Filtrare - + Abaisser ce folio Sposta in giu questa pagina @@ -5633,17 +5638,17 @@ Funzione : %1 ProjectView - + Supprimer les modèles de cartouche inutilisés dans le projet Eliminare i modelli di cartiglio non utilizzati nel progetto - + Revenir au debut du projet Torna all'inizio del progetto - + Supprimer les catégories vides Delete empty categories @@ -5653,17 +5658,23 @@ Funzione : %1 senza nome - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + Supprimer les éléments inutilisés dans le projet Cancellare gli elementi non usati nel progetto - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Apertura progetto in corso...</b><br/>Creazione delle schede della pagina :</p> - + Ajouter un folio Aggiungi una pagina @@ -5693,58 +5704,52 @@ Do you want to save changes? nessun progetto inviato - + Supprimer le folio ? message box title Eliminare la pagina? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - Sicuro di voler eliminare la pagina? Questa operazione sarà irreversibile. - - - + Projet en lecture seule message box title Progetto in sola lettura - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Questo progetto è in sola lettura. Perciò non può essere pulito. - + Nettoyer le projet window title Pulisci il progetto - + Aller à la fin du projet Vai alla fine del progetto - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Questo progetto non contiene nessuna pagina - + Projet window title for a project-less ProjectView Progetto @@ -6032,185 +6037,185 @@ Opzioni disponibili: QETDiagramEditor - + Aucune modification Nessuna modifica - + Ajoute une ellipse sur le folio actuel Aggiunge un'ellisse sulla pagina corrente - + &Enregistrer Salva (&E) - + Tout sélectionner Seleziona tutto - + en utilisant des fenêtres Usando le finestre - + Affiche ou non la liste des modifications Mostra o nascondi lacronologia delle modifiche - + Zoom adapté Adatta alla pagina - + Propriétés du folio Proprietà della pagina - + Ajouter une ligne Draw line Aggiungere una riga - + Réinitialiser les conducteurs Resetta i conduttori - + Enlever une colonne Elimina una colonna - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Regola lo zoom per visualizzare l'intero contenuto della pagina - + Ajoute une polyligne sur le folio actuel Aggiunge un poligono sulla pagina corrente - + Projet suivant Progetto seguente - + Imprimer Stampa - + Groupe Gruppo - + Ajouter un champ de texte Aggiungi un campo di testo - + Outils Strumenti - + &Nouveau &Nuovo - + Zoom sur le contenu Zoom sul contenuto - + Active le projet « %1 » Attiva il progetto « %1 » - + C&oller Inc&olla - + Désélectionner tout Deseleziona tutto - + Ajouter une colonne Aggiungi una colonna - + Exporter la liste des noms de conducteurs Esportare la lista dei conduttori - + Affiche ou non la barre d'outils Schéma Mostra o nascondi gli strumenti dello schema - + Lancer le plugin de création de borniers Lancia il plugin di creazione delle morsettiere - + Pivoter Ruota - + Affiche ou masque la grille des folios Visualizzare o nasacondere la griglia delle pagina - + Mode Selection Modalità selezione - - + + Impossible d'ouvrir le fichier message box title Impossibile aprire il file - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Sembra che il file %1 che si è cercato di aprire non esista più. - + Supprimer Cancella - + Enregistrer sous Salva come - + Ajoute une image sur le folio actuel Aggiunge un'immagine sulla pagina corrente - + Ajouter une nomenclature Aggiungere una nomenclatura @@ -6221,174 +6226,174 @@ Opzioni disponibili: QElectroTech - + Ajouter Inserisci - + Annuler Annulla - + Ajouter une ellipse Aggiungi una ellisse - + Refaire Ripeti - + &Quitter Esci (&Q) - + Ouverture du projet en lecture seule message box title Apertura del progetto in sola lettura - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Il progetto che si cerca di aprire non è accessibile in scrittura. Verrà aperto in modalità sola lettura. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Il file che si cerca di aprire non è accessibile in lettura e non può essere aperto. Controllare i permessi sui file. - + Zoom arrière Riduci - + Exporter la base de donnée interne du projet Espora il database del progetto intero - + Ajoute un rectangle sur le folio actuel Aggiunge un rettangolo sulla pagina corrente - + &Cascade &Cascata - + Schéma Barra dello schema - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) Progetto QElectroTech (*.qet);;File XML (*.xml);;Tutti i file (*) - + &Mosaïque &Mosaico - + Co&uper Taglia (&U) - + Pas de zoom Resetta lo zoom - + Grouper les textes sélectionnés Raggruppare i testi selezionati - + Cop&ier Cop&ia - + Ajouter un sommaire Aggiungi un indice - + &Fermer Chiudi (&F) - + Mode Visualisation Modalità visualizzazione - + en utilisant des onglets Usando le linguette - + Fe&nêtres Fi&nestre - - + + Projet %1 enregistré dans le repertoire: %2. Progetto %1 registrato nella cartella: %2. - + &Ouvrir Apri (&O) - + Ajoute une ligne sur le folio actuel Aggiunge una linea sulla pagina corrente - + &Projet &Progetto - + Retrouver dans le panel Visualizzare nello schema - + Éditer l'item sélectionné Modifica l'oggetto selezionato - + Collections Collezioni - + Inverser la sélection Inverti la selezione - + Ajouter un rectangle Aggiungi un rettangolo - + Afficher la grille Mostra la griglia @@ -6405,512 +6410,528 @@ Opzioni disponibili: Progetti - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Fare clic su un'azione per annullare la modifica dello schema - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Questo pannello elenca le diverse azioni eseguite sulla pagina corrente. Selezionare un'azione per tornare allo stato dello schema appena dopo la sua l'applicazione. - + Annulations dock title Cancellazioni - + Exporte le folio courant dans un autre format status bar tip Esporta la pagina corrente in un altro formato - + Imprime un ou plusieurs folios du projet courant status bar tip Stampa una o più pagine del progetto corrente - + Exporter en pdf Esporta in pdf - + Exporte un ou plusieurs folios du projet courant status bar tip Esporta uno o tutti gli schemi del progetto corrente - + Ferme l'application QElectroTech status bar tip Chiudi QElectroTech - + Annule l'action précédente status bar tip Annulla l'azione precedente - + Restaure l'action annulée status bar tip Ripristina l'azione annullata - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Trasferisci gli elementi selezionati negli appunti - + Copie les éléments sélectionnés dans le presse-papier status bar tip Copia gli elementi selezionati negli appunti - + Place les éléments du presse-papier sur le folio status bar tip Posiziona sulla pagina gli elementi presenti negli appunti - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Ricalcola il percorso dei conduttori ignorando le modifiche - + Création automatique de conducteur(s) Tool tip of auto conductor Creazione automatica dei conduttori - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Utilizzare la creazione automatica dei conduttori, quando possibile - + Couleur de fond blanc/gris Tool tip of white/grey background button Colore di fondo del disegno bianco/grigio - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Imposta il colore di fondo della pagina bianco oppure grigio - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Modifica le proprietà della pagina (dimensioni, informazioni del cartiglio, proprietà dei conduttori, ecc.) - + Ajouter un folio Aggiungi una pagina - + Gestionnaire de borniers (DEV) - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Présente les différents projets ouverts des onglets status bar tip Mostra i vari progetti aperti con le linguette - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Mostra i vari progetti aperti nelle loro finestre - + Dispose les fenêtres en mosaïque status bar tip Disponi le finestre a mosaico - + Dispose les fenêtres en cascade status bar tip Disponi le finestre a cascata - + Permet de sélectionner les éléments status bar tip Permesso di selezionare gli elementi - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Permette di visualizzare la pagina senza poterla modificare - + Active le projet suivant status bar tip Attiva il progetto seguente - + Projet précédent Progetto precedente - + Active le projet précédent status bar tip Attiva il progetto precedente - + Crée un nouveau projet status bar tip Crea un nuovo progetto - + Ouvre un projet existant status bar tip Apre un progetto esistente - + Ferme le projet courant status bar tip Chiude il progetto corrente - + Enregistre le projet courant et tous ses folios status bar tip Salva il progetto corrente e tutte le sue pagine - + Enregistre le projet courant avec un autre nom de fichier status bar tip Salva il progetto corrente con un altro nome di file - + Ajouter une ligne Add row Aggiunge una riga - + Enlever une ligne Remove row Elimina una riga - + Ajoute une colonne au folio status bar tip Aggiunge una colonna alla pagina - + Enlève une colonne au folio status bar tip Elimina una colonna alla pagina - + Agrandit le folio en hauteur status bar tip Ingrandisce la pagina in altezza - + Rétrécit le folio en hauteur status bar tip Restringe la pagina in altezza - + Enlève les éléments sélectionnés du folio status bar tip Rimuove gli elementi selezionati dalla pagina - + Pivote les éléments et textes sélectionnés status bar tip Ruota gli elementi ed i testi selezionati - + Pivote les textes sélectionnés à un angle précis status bar tip Ruota il testo selezionato di un angolo preciso - + Retrouve l'élément sélectionné dans le panel status bar tip Visualizza l'elemento selezionato nello schema - + Sélectionne tous les éléments du folio status bar tip Seleziona tutti gli elementi della pagina - + Désélectionne tous les éléments du folio status bar tip Deseleziona tutti gli elementi della pagina - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Deseleziona gli elementi selezionati e seleziona i non selezionati - + Agrandit le folio status bar tip Ingrandisce la pagina - + Rétrécit le folio status bar tip Rimpicciolisce la pagina - + Adapte le zoom exactement sur le cadre du folio status bar tip Adatta lo zoom per visualizzare gli elementi - + Restaure le zoom par défaut status bar tip Ripristina il livello di zoom predefinito - + Ajouter un plan de bornes Aggiunge un piano di terminali - + Ajoute un plan de bornier sur le folio actuel - + Profondeur toolbar title Profondità - + Ouvrir un fichier Apri un file - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Éditer l'élement edit element Modifica l'elemento - + Éditer le champ de texte edit text field Modifica il campo di testo - + Éditer l'image edit image Modifica l'immagine - + Éditer le conducteur edit conductor Modificare il conduttore - + Éditer l'objet sélectionné edit selected item Modifica l'oggetto selezionato - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Si è verificato un errore all'apertura del file %1. - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Errore - + Propriétés du projet Proprietà del progetto - + Affichage Barra di visualizzazione - + &Fichier &File - + + Supprimer le folio Elimina una pagina - + Affiche ou non la barre d'outils Affichage Mostra o nascondi gli strumenti di visualizzazione - + Orienter les textes Orientare i testi - + Exporter au format CSV Esporta nel formato CSV - - + + Échec de l'ouverture du projet message box title Impossibile aprire il progetto - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Il file %1 non sembra essere un progetto di QElectroTech. Perciò non può essere aperto. - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Fare doppio clic per terminare la forma, clic destro per annullare l'ultimo punto - + Ajouter une polyligne Aggiungi un poligono - + Ajouter une image Aggiungi una immagine - + Nettoyer le projet Pulisci il progetto - + Chercher/remplacer Trova/sostituisci - + &Récemment ouverts Documenti &recenti - + Affiche ou non la barre d'outils principale Mostra o nascondi la barra degli strumenti - + Afficher les projets Visualizza il progetto - + Affiche ou non le panel d'appareils Mostra o no il pannello Elementi - + Zoom avant Ingrandisci - + E&xporter Esporta (&X) - + Afficha&ge Visualizza (&g) - + &Édition &Modifica - + Ajoute un champ de texte sur le folio actuel Aggiunge un campo di testo sulla pagina corrente @@ -6918,12 +6939,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s QETElementEditor - + et e - + Aucune modification Nessuna modifica @@ -7100,7 +7121,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Errore - + Profondeur toolbar title Profondità @@ -7111,7 +7132,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Adatta alla finestra - + Parties toolbar title Parti @@ -7129,25 +7150,25 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [sola lettura] - + Éditeur d'éléments status bar message Editor di Elementi - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>In assenza di terminale, l'elemento non potrà essere collegato ad altri per mezzo di conduttori. - + La vérification de cet élément a généré message box content La verifica di questo elemento ha generato - + %n erreur(s) errors @@ -7156,7 +7177,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + %n avertissement(s) warnings @@ -7165,7 +7186,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 @@ -7184,21 +7205,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Impossibile aprire il file %1. - + Ce fichier n'est pas un document XML valide message box content Questo file non è un documento XML valido - + Erreur toolbar title Errore @@ -7235,58 +7256,68 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Impossible d'ouvrir le fichier message box title Impossibile aprire il file - + Recharger l'élément dialog title Ricarica l'elemento - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Questo elemento è stato modificato dopo l'ultimo salvataggio. Ricaricandolo, le modifiche verranno perse. Ricaricare comunque? - + Avertissement Avviso - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) Elemento QElectroTech (*.elmt) - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file Elemento QElectroTech (*.elmt) - + Enregistrer l'élément en cours ? dialog title Salvare l'elemento corrente? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Vuoi salvare l'elemento %1? @@ -7306,28 +7337,28 @@ veuillez patienter durant l'import... - - + + Élément inexistant. message box title Elemento inesistente. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Il percorso non corrisponde ad un elemento. - + L'élément n'existe pas. message box content L'elemento non esiste. - + Ajouter un texte d'élément non éditable dans les schémas Aggiungere un testo di elemento non modificabile negli schemi @@ -7342,9 +7373,9 @@ veuillez patienter durant l'import... &Apri da un file - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides La registrazione non è riuscita, @@ -7361,7 +7392,7 @@ le condizioni richieste non sono validi Incolla da ... - + Avertissements Avvisi @@ -7385,23 +7416,23 @@ le condizioni richieste non sono validi - + Absence de borne warning title Terminale mancante - + Ajouter un arc de cercle Aggiungi un arco di cerchio - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Sembra che il file %1 che si è cercato di aprire non esista più. - + Enregistrer sous dialog title Salva come @@ -7417,17 +7448,17 @@ le condizioni richieste non sono validi Salva come - + Annuler Annulla - + Ajouter une ellipse Aggiungi un'ellisse - + Refaire Rifai @@ -7437,7 +7468,7 @@ le condizioni richieste non sono validi Zoom - - + Ajouter un champ texte dynamique Aggiungere un campo di testo dinamico @@ -7462,12 +7493,12 @@ le condizioni richieste non sono validi Resetta lo zoom - + Ajouter un polygone Aggiungi un poligono - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Errore</b> :<br>I riferimenti alla pagina devono avere un solo terminale.<br><b>Soluzione</b> :<br>Verificare che l'elemento ne possieda un solo @@ -7482,7 +7513,7 @@ le condizioni richieste non sono validi Modificara il nome e le traduzioni dell'elemento - + Absence de borne Terminale mancante @@ -7492,12 +7523,12 @@ le condizioni richieste non sono validi &Apri - + Ajouter un texte d'élément pouvant être édité dans les schémas Aggiungere un testo di elemento modificabile negli schemi - + Ajouter du texte Aggiungi testo @@ -7507,12 +7538,12 @@ le condizioni richieste non sono validi Inverti la selezione - + Ajouter un rectangle Aggiungere un rettangolo - + Erreurs Errori @@ -7522,17 +7553,17 @@ le condizioni richieste non sono validi &File - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Fare doppio clic per terminare la forma, Clic destro per annullare l'ultimo punto - + Ajouter une borne Aggiungi un terminale - + Ajouter une ligne Disegna una linea @@ -7552,9 +7583,9 @@ le condizioni richieste non sono validi Modifica (&E) - - - + + + Echec de l'enregistrement Registrazione fallita @@ -8140,17 +8171,17 @@ Que désirez vous faire ? Non trovo il file di testo che contiene la licenza GNU/GPL - comunque sia la conosci a menadito, o no? - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Per installare il plugin qet_tb_generator <br> Visita: <br> <a href='https://pypi.python.org/pypi/qet-tb-generator'> qet-tb-generator </a> <br> Richiede python 3.5 o successivo. <br> <B> <U> Prima installazione su Windows </B> </U> <br> 1. Installa, se richiesto, python 3.5 o successivo <br> Visita: <br> <a href='https://www.python.org/downloads/'> python.org </a> <br> 2. pip install qet_tb_generator <br> <B> <U> Aggiorna su Windows </B> </U> <br> python -m pip install --upgrade qet_tb_generator <br> >> l'utente può lanciare in un terminale questo script in questa cartella<br> C: \utenti\XXXX\AppData \Local\Programmi\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> @@ -8407,7 +8438,7 @@ Que désirez vous faire ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Attenzione: l'elemento è stato salvato con una versione più recente di QElectroTech. @@ -8778,7 +8809,7 @@ La si vuole sostituire ? Porta sullo sfondo la(e) selezione(i) - + Error launching qet_tb_generator plugin Errore durante l'uso del plugin qet_tb_generator @@ -9462,57 +9493,57 @@ La si vuole sostituire ? - - + + Générique generic terminal element type Generico - + Fusible fuse terminal element type Fusibile - + Sectionable sectional terminal element type - + Diode diode terminal element type Diodo - + Terre ground terminal element type Terra - - + + Générique generic terminal element function Generico - + Phase phase terminal element function Fasi - + Neutre neutral terminal element function Neutro - + Importer un fichier dxf @@ -14248,92 +14279,92 @@ Lunghezza massima : %2px WiringListExport - - + + Erreur Errore - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Tensione / Protocollo - + Couleur du fil Wiring list CSV header Colore del filo - + Section du fil Wiring list CSV header Sezione del filo - + Fonction Wiring list CSV header Funzione - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_ja.ts b/lang/qet_ja.ts index 1411fe0d2..93558996d 100644 --- a/lang/qet_ja.ts +++ b/lang/qet_ja.ts @@ -1680,7 +1680,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte テキスト領域のフォントを変更 @@ -1705,17 +1705,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol テキストのテキスト・ソースを変更 - + Modifier l'alignement d'un champ texte テキスト領域の文字揃えを変更 - + Modifier la couleur d'un champ texte テキスト領域の色を変更 - + Modifier la conservation de l'angle @@ -2007,7 +2007,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple 単純 @@ -2042,93 +2042,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol サムネイル - + + Définition de conducteur + + + + Normalement ouvert 常開接点 (a接点) - + Normalement fermé 常閉接点 (b接点) - + Inverseur 切替接点 - + Other - + Puissance 動力 - + Temporisé travail オン・ディレイ - + Temporisé repos オフ・ディレイ - + Temporisé travail & repos オン・オフ・ディレイ - + Bobine コイル - + Organe de protection 保護機構 - + Commutateur / bouton スイッチ / ボタン - - + + Générique - + Fusible - + Séctionnable - + Diode - + Phase - + Neutre 中性 - + Terre 接地 @@ -2136,99 +2141,99 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général 全般 - + Élement 要素 - + Nom : %1 名前 : %1 - + Folio : %1 フォリオ : %1 - + Type : %1 種類 : %1 - + Sous-type : %1 亜種 : %1 - + Position : %1 位置 : %1 - + Rotation : %1° 回転 : %1° - + Dimensions : %1*%2 大きさ : %1*%2 - + Bornes : %1 端子 : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 場所 : %1 - + Retrouver dans le panel パネル内を検索 - + Éditer l'élément 要素を編集 @@ -2691,60 +2696,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip ダブル・クリックでプロジェクトを折畳または展開 - + Cartouches embarqués 埋込まれた表題欄 - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip ダブル・クリックで埋込まれた表題欄を折畳または展開 - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template フォリオに表題欄をドラッグ・アンド・ドロップして適用できます。 - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip ダブル・クリックで QElectrotech 表題欄を折畳または展開 - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip これは QElectroTech で提供される表題欄コレクションです。システムの構成要素としてインストールされ、通常はカスタマイズできません。 - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip ダブル・クリックで個人の表題欄を折畳または展開 - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip これは個人の表題欄コレクションです -- 独自の表題欄の作成・保存・編集に利用できます。 @@ -2753,97 +2758,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant 対応するフォルダを開く - + Copier le chemin フル・パスをクリップボードにコピー - + Basculer vers ce projet プロジェクトを作業中に - + Fermer ce projet このプロジェクトを閉じる - + Propriétés du projet プロジェクトの属性 - + Propriétés du folio フォリオの属性 - + Ajouter un folio フォリオを追加 - + Supprimer ce folio このフォリオを削除 - + Remonter ce folio このフォリオを上に移動 - + Abaisser ce folio このフォリオを下に移動 - + Remonter ce folio x10 このフォリオを上に移動 x10 - + Remonter ce folio x100 このフォリオを上に移動 x100 - + Remonter ce folio au debut このフォリオを最初に移動 - + Abaisser ce folio x10 このフォリオを下に移動 x10 - + Abaisser ce folio x100 このフォリオを下に移動 x100 - + Nouveau modèle 新規テンプレート - + Éditer ce modèle このテンプレートを編集 - + Supprimer ce modèle このテンプレートを削除 - + Filtrer フィルタ @@ -5665,88 +5670,88 @@ Voulez-vous enregistrer les modifications ? 作業中のプロジェクトがありません - + Supprimer le folio ? message box title このフォリオを削除しますか? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - 本当にこのフォリオをプロジェクトから削除しますか? この変更は元に戻せません。 + - + Projet en lecture seule message box title 読み取り専用プロジェクト - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content このプロジェクトは読み取り専用です。このため整理できません。 - + Supprimer les modèles de cartouche inutilisés dans le projet プロジェクトで使用されていないテンプレートを削除 - + Supprimer les éléments inutilisés dans le projet プロジェクトで使用されていない要素を削除 - + Supprimer les catégories vides 空のカテゴリの削除 - + Nettoyer le projet window title プロジェクトを整理 - + Ajouter un folio フォリオを追加 - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram このプロジェクトにはフォリオがありません - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>プロジェクトを開きます ...</b><br/>フォリオのタブの作成 :</p> - + Projet window title for a project-less ProjectView プロジェクト @@ -6054,866 +6059,882 @@ Options disponibles : プロジェクト - + Collections コレクション - + Aucune modification 変更なし - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip 操作をクリックすることで図への変更を元に戻します - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip このパネルは現在のフォリオに適用された様々な変更のリストです。変更をクリックすると、それが適用された直後の状態にフォリオを戻します。 - + Annulations dock title 復元 - + E&xporter エクスポート (&E) - + Exporte le folio courant dans un autre format status bar tip 現在のフォリオを別の形式でエクスポート - + Imprimer 印刷 - + Imprime un ou plusieurs folios du projet courant status bar tip 現在のプロジェクトのフォリオを印刷 - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + &Quitter 終了 (&Q) - + Ferme l'application QElectroTech status bar tip QElectroTech を終了 - + Annuler 元に戻す - + Annule l'action précédente status bar tip 直前の操作を元に戻す - + Refaire やり直す - + Restaure l'action annulée status bar tip 元に戻した操作をやり直す - + Co&uper 切り取り (&T) - + Cop&ier コピー (&C) - + C&oller 貼り付け (&P) - + Transfère les éléments sélectionnés dans le presse-papier status bar tip 選択要素をクリップボードに移動 - + Copie les éléments sélectionnés dans le presse-papier status bar tip 選択要素をコピー - + Place les éléments du presse-papier sur le folio status bar tip クリップボードからフォリオに要素を貼り付け - + Réinitialiser les conducteurs 導体の整頓 - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip ユーザの変更を無視して導体の経路をリセット - + Création automatique de conducteur(s) Tool tip of auto conductor 導体の自動生成 - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor 可能であれば導体を自動生成 - + Couleur de fond blanc/gris Tool tip of white/grey background button 背景色 白/灰 - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button フォリオの背景色を白または灰で表示 - + Afficher la grille グリッド表示 - + Affiche ou masque la grille des folios フォリオのグリッドの表示/非表示 - + Propriétés du folio フォリオの属性 - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip フォリオの属性の編集 (大きさ, 表題欄の情報, 導体の属性, ...) - + Propriétés du projet プロジェクトの属性 - + Ajouter un folio フォリオを追加 - + + Supprimer le folio このフォリオを削除 - + Nettoyer le projet プロジェクトを整理 - + Exporter au format CSV CSV 形式でエクスポート - + Ajouter une nomenclature 部品表を追加 - + Ajouter un sommaire 概要を追加 - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers 端子台作成プラグインを起動 - + Exporter la liste des noms de conducteurs 線名リストをエクスポート - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet 内部のプロジェクト・データベースをエクスポート - + en utilisant des onglets タブを使用 - + Présente les différents projets ouverts des onglets status bar tip 開かれたプロジェクトをタブで表示 - + en utilisant des fenêtres ウィンドウを使用 - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip 開かれたプロジェクトをウィンドウで表示 - + &Mosaïque 並べて (&T) - + Dispose les fenêtres en mosaïque status bar tip ウィンドウを並べて表示 - + &Cascade 重ねて (&C) - + Dispose les fenêtres en cascade status bar tip ウィンドウを重ねて表示 - + Mode Selection 選択モード - + Permet de sélectionner les éléments status bar tip 要素の選択が可能 - + Mode Visualisation 閲覧モード - + Permet de visualiser le folio sans pouvoir le modifier status bar tip フォリオを修正せず閲覧だけを許可 - + Projet suivant 次のプロジェクト - + Active le projet suivant status bar tip 次のプロジェクトを作業中に - + Projet précédent 前のプロジェクト - + Active le projet précédent status bar tip 前のプロジェクトを作業中に - + &Nouveau 新規作成 (&N) - + &Ouvrir 開く (&O) - + &Enregistrer 保存 (&S) - + Enregistrer sous 名前を付けて保存 - + &Fermer 閉じる (&C) - + Crée un nouveau projet status bar tip 新規プロジェクトを作成 - + Ouvre un projet existant status bar tip 既存のプロジェクトを開く - + Ferme le projet courant status bar tip 現在のプロジェクトを閉じる - + Enregistre le projet courant et tous ses folios status bar tip 現在のプロジェクトとその全てのフォリオを保存 - + Enregistre le projet courant avec un autre nom de fichier status bar tip 現在のプロジェクトを別の名前で保存 - + Ajouter une colonne 列を追加 - + Enlever une colonne 列を削除 - + Ajouter une ligne Add row 行を追加 - + Enlever une ligne Remove row 行を削除 - + Ajoute une colonne au folio status bar tip フォリオに列を追加 - + Enlève une colonne au folio status bar tip フォリオから最終列を削除 - + Agrandit le folio en hauteur status bar tip フォリオに行を追加 - + Rétrécit le folio en hauteur status bar tip フォリオから最終行を削除 - + Supprimer 削除 - + Pivoter 回転 - + Orienter les textes テキストの向きを選択 - + Retrouver dans le panel パネル内を検索 - + Éditer l'item sélectionné 選択項目を編集 - + Grouper les textes sélectionnés 選択テキストをグループ化 - + Enlève les éléments sélectionnés du folio status bar tip 選択要素をフォリオから削除 - + Pivote les éléments et textes sélectionnés status bar tip 選択された要素とテキストを回転 - + Pivote les textes sélectionnés à un angle précis status bar tip 選択テキストを指定した角度に回転 - + Retrouve l'élément sélectionné dans le panel status bar tip 選択要素をパネル内で検索 - + Tout sélectionner 全て選択 - + Désélectionner tout 選択を解除 - + Inverser la sélection 選択を反転 - + Sélectionne tous les éléments du folio status bar tip フォリオの全ての要素を選択 - + Désélectionne tous les éléments du folio status bar tip フォリオの全ての要素の選択を解除 - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip 要素の選択を反転 - + Zoom avant ズームイン - + Zoom arrière ズームアウト - + Zoom sur le contenu 内容に合わせてズーム - + Zoom adapté 全体に合わせてズーム - + Pas de zoom ズームのリセット - + Agrandit le folio status bar tip フォリオを拡大 - + Rétrécit le folio status bar tip フォリオを縮小 - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre 図枠は無視してフォリオの内容に合わせてズーム - + Adapte le zoom exactement sur le cadre du folio status bar tip フォリオの領域に合わせてズーム - + Restaure le zoom par défaut status bar tip 既定のズームに戻す - + Ajouter un champ de texte テキスト領域を追加 - + Ajouter une image 画像を追加 - + Ajouter une ligne Draw line 線を追加 - + Ajouter un rectangle 矩形を追加 - + Ajouter une ellipse 楕円を追加 - + Ajouter une polyligne 折れ線を追加 - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel 現在のフォリオにテキスト領域を追加 - + Ajoute une image sur le folio actuel 現在のフォリオに画像を追加 - + Ajoute une ligne sur le folio actuel 現在のフォリオに線を追加 - + Ajoute un rectangle sur le folio actuel 現在のフォリオに矩形を追加 - + Ajoute une ellipse sur le folio actuel 現在のフォリオに楕円を追加 - + Ajoute une polyligne sur le folio actuel 現在のフォリオに折れ線を追加 - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer 検索 / 置換 - + Outils ツール - + Affichage 表示 - + Schéma - + Ajouter 追加 - + Profondeur toolbar title 重なり - + &Fichier ファイル (&F) - + &Édition 編集 (&E) - + &Projet プロジェクト (&P) - + Afficha&ge 表示 (&D) - + Fe&nêtres ウィンドウ (&W) - + &Récemment ouverts 最近のファイル (&L) - + Affiche ou non la barre d'outils principale メインツールバーの表示/非表示 - + Affiche ou non la barre d'outils Affichage 表示ツールバーの表示/非表示 - + Affiche ou non la barre d'outils Schéma 図ツールバーの表示/非表示 - + Affiche ou non le panel d'appareils 要素パネルの表示/非表示 - + Affiche ou non la liste des modifications 復元リストの表示/非表示 - + Afficher les projets プロジェクトを表示 - - + + Projet %1 enregistré dans le repertoire: %2. プロジェクト %1 はディレクトリ %2 に保存されています。 - + Ouvrir un fichier ファイルを開く - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech プロジェクト (*.qet);;XML ファイル (*.xml);;全てのファイル (*) - - + + Impossible d'ouvrir le fichier message box title ファイルを開けません - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. 開こうとしているファイル %1 は存在しないか、既に存在しないようです。 - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. 開こうとしているファイルは読めないため開けません。ファイルの許可を確認してください。 - + Ouverture du projet en lecture seule message box title ファイルを読み取り専用で開く - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. 開こうとしているプロジェクトに書き込めないようです。読み取り専用で開きます。 - - + + Échec de l'ouverture du projet message box title プロジェクトを開けません - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content ファイル %1 は QElectroTech のプロジェクト・ファイルではないようです。このため開けません。 - + Double-click pour terminer la forme, Click droit pour annuler le dernier point ダブルクリックで完了、右クリックで最後の点をキャンセル - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe グループ - + Éditer l'élement edit element 要素を編集 - + Éditer le champ de texte edit text field テキスト領域を編集 - + Éditer l'image edit image 画像を編集 - + Éditer le conducteur edit conductor 導体を編集 - + Éditer l'objet sélectionné edit selected item 選択対象を編集 - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content ファイル %1 を開く際にエラーが発生しました。 - + Active le projet « %1 » プロジェクト « %1 » を作業中に - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title エラー @@ -7157,17 +7178,17 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s 要素の属性を編集 - + Annuler 元に戻す - + Refaire やり直す - + Profondeur toolbar title 重なり @@ -7193,73 +7214,73 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s ズームのリセット - + Ajouter une ligne 線を追加 - + Ajouter un rectangle 矩形を追加 - + Ajouter une ellipse 楕円を追加 - + Ajouter un polygone 多角形を追加 - + Ajouter du texte テキストを追加 - + Ajouter un arc de cercle 弧を追加 - + Ajouter une borne 端子を追加 - + Ajouter un champ texte dynamique 動的なテキスト領域を追加 - + Double-click pour terminer la forme, Click droit pour annuler le dernier point ダブルクリックで完了、右クリックで最後の点をキャンセル - + Ajouter un texte d'élément non éditable dans les schémas 図に編集不可能な要素テキストを追加 - + Ajouter un texte d'élément pouvant être édité dans les schémas 図に編集可能な要素テキストを追加 - + Parties toolbar title 部品 - + Avertissement 警告 - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... @@ -7297,12 +7318,12 @@ veuillez patienter durant l'import... [読み取り専用] - + Aucune modification 変更なし - + Éditeur d'éléments status bar message 要素エディタ @@ -7316,35 +7337,35 @@ veuillez patienter durant l'import... - + Absence de borne warning title 端子がありません - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>端子がないと他の要素に導体で接続できません。 - + Absence de borne 端子がありません - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br> <b> エラー </ b>: <br> フォリオ参照は端子が1つでなければなりません <br> <b> 解決法 </ b> :<br> 要素の端子が1つだけであることを確認してください - + La vérification de cet élément a généré message box content この要素は検証されました - + %n erreur(s) errors @@ -7352,12 +7373,12 @@ veuillez patienter durant l'import... - + et - + %n avertissement(s) warnings @@ -7365,18 +7386,18 @@ veuillez patienter durant l'import... - + <b>%1</b> : %2 warning title: warning description - + Erreurs エラー - + Avertissements 警告 @@ -7394,21 +7415,21 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier %1. message box content ファイル %1 を開けません。 - + Ce fichier n'est pas un document XML valide message box content このファイルは有効な XML 文書ではありません - + Erreur toolbar title エラー @@ -7452,74 +7473,84 @@ veuillez patienter durant l'import... - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Impossible d'ouvrir le fichier message box title ファイルを開けません - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. 開こうとしているファイル %1 は存在しないか、既に存在しないようです。 - + Recharger l'élément dialog title 要素を再読込 - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content この要素は最後に保存されてから変更されました。再読込を行うと変更が失われます。本当にこの要素の再読込を行いますか? - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) QElectroTech 要素 (*.elmt) - - - + + + Echec de l'enregistrement 保存に失敗しました - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides 保存に失敗しました, 条件を満たしません - + Enregistrer sous dialog title 名前を付けて保存 - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech 要素 (*.elmt) - + Enregistrer l'élément en cours ? dialog title 現在の要素を保存しますか? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name 要素 %1 を保存しますか? @@ -7539,22 +7570,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title 存在しない要素。 - + Le chemin virtuel choisi ne correspond pas à un élément. message box content 選ばれたパスは要素に対応しません。 - + L'élément n'existe pas. message box content 要素が存在しません。 @@ -8541,7 +8572,7 @@ Voulez-vous la remplacer ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. 警告: より新しいバージョンの QElectroTech で要素が保存されています. @@ -8694,22 +8725,22 @@ Voulez-vous la remplacer ? 選択を最背面へ移動 - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> qet_tb_generator プラグインをインストールするには<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a>を参照してください。<br>python 3.5 以降が必要です。<br><B><U> Windows での最初のインストール</B></U><br>1. 必要であれば python 3.5 以降をインストール<br><a href='https://www.python.org/downloads/'>python.org</a> を参照してください。<br>2. pip install qet_tb_generator<br><B><U> Windows での更新</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>ユーザはターミナルで次のディレクトリの中でスクリプトを実行できます。<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin qet_tb_generator プラグインの起動でエラー @@ -9472,51 +9503,51 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type 接地 - - + + Générique generic terminal element function - + Phase phase terminal element function - + Neutre neutral terminal element function 中性 @@ -9547,7 +9578,7 @@ Voulez-vous la remplacer ? - + Importer un fichier dxf @@ -14243,92 +14274,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur エラー - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header 電圧 / プロトコル - + Couleur du fil Wiring list CSV header 導体色 - + Section du fil Wiring list CSV header 導体部 - + Fonction Wiring list CSV header 機能 - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_ko.ts b/lang/qet_ko.ts index 74c29bf71..3ae4559cb 100644 --- a/lang/qet_ko.ts +++ b/lang/qet_ko.ts @@ -1678,17 +1678,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte 텍스트 필드 글꼴 변경 - + Modifier la couleur d'un champ texte 텍스트 필드 색상 변경 - + Modifier la conservation de l'angle 각도 유지 설정 변경 @@ -1713,7 +1713,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol 텍스트 원본 변경 - + Modifier l'alignement d'un champ texte 텍스트 필드 정렬 변경 @@ -2005,7 +2005,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple 단순 @@ -2040,93 +2040,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol 미리보기 - + + Définition de conducteur + + + + Normalement ouvert 통상 개방 - + Normalement fermé 통상 폐쇄 - + Inverseur 전환 접점 - + Other 기타 - + Puissance 전력용 - + Temporisé travail 투입 지연 - + Temporisé repos 차단 지연 - + Temporisé travail & repos 투입/차단 지연 - + Bobine 코일 - + Organe de protection 보호기기 - + Commutateur / bouton 스위치 / 버튼 - - + + Générique 일반 - + Fusible 퓨즈 - + Séctionnable 단로기 - + Diode 다이오드 - + Phase 상(Phase) - + Neutre 중성선(N) - + Terre 접지(PE) @@ -2134,97 +2139,97 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général 일반 - + Élement - + Nom : %1 이름 : %1 - + Folio : %1 시트 : %1 - + Type : %1 유형: %1 - + Sous-type : %1 하위 종류 : %1 - + Position : %1 위치 : %1 - + Rotation : %1° - + Dimensions : %1*%2 크기 : %1*%2 - + Bornes : %1 단자 : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 설치 위치 : %1 - + Retrouver dans le panel 패널에서 찾기 - + Éditer l'élément 요소 편집 @@ -2685,60 +2690,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Cartouches embarqués 내장 표제란 - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip 더블 클릭하여 내장 표제란 컬렉션을 접거나 펼칩니다 - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template 이 표제란 템플릿을 시트에 끌어다 놓아 적용합니다. - + Double-cliquez pour réduire ou développer ce projet Status tip 더블 클릭하여 프로젝트를 접거나 펼칩니다 - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip 더블 클릭하여 QElectroTech 표제란 컬렉션을 접거나 펼칩니다 - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip 이것은 QElectroTech에 기본 제공되는 표제란 컬렉션입니다. 시스템 구성요소로 설치되어 일반적으로 사용자 지정할 수 없습니다. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip 더블 클릭하여 회사 표제란 컬렉션을 접거나 펼칩니다 - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip 이것은 회사 표제란 컬렉션입니다 — 사용자 표제란을 만들고 저장하고 편집할 때 사용하세요. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip 더블 클릭하여 개인 표제란 컬렉션을 접거나 펼칩니다 - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip 이것은 개인 표제란 컬렉션입니다 — 사용자 표제란을 만들고 저장하고 편집할 때 사용하세요. @@ -2747,97 +2752,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant 해당 폴더 열기 - + Copier le chemin 전체 경로 복사 - + Basculer vers ce projet 이 프로젝트로 전환 - + Éditer ce modèle 이 템플릿 편집 - + Supprimer ce modèle 이 템플릿 삭제 - + Fermer ce projet 이 프로젝트 닫기 - + Propriétés du projet 프로젝트 속성 - + Propriétés du folio 시트 속성 - + Ajouter un folio 시트 추가 - + Supprimer ce folio 이 시트 삭제 - + Remonter ce folio 이 시트 위로 - + Abaisser ce folio 이 시트 아래로 - + Remonter ce folio x10 이 시트 위로 x10 - + Remonter ce folio x100 이 시트 위로 x100 - + Remonter ce folio au debut 이 시트를 맨 앞으로 - + Abaisser ce folio x10 이 시트 아래로 x10 - + Abaisser ce folio x100 이 시트 아래로 x100 - + Nouveau modèle 새 템플릿 - + Filtrer 필터 @@ -5598,12 +5603,12 @@ Les variables suivantes sont incompatibles : ProjectView - + Supprimer les éléments inutilisés dans le projet 프로젝트에서 사용하지 않는 요소 삭제 - + Supprimer les catégories vides 빈 카테고리 삭제 @@ -5619,67 +5624,61 @@ Les variables suivantes sont incompatibles : QElectroTech 프로젝트 (*.qet) - + Supprimer le folio ? message box title 이 폴리오를 삭제할까요? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - 이 폴리오를 프로젝트에서 삭제하시겠습니까? 이 변경은 되돌릴 수 없습니다. - - - + Projet en lecture seule message box title 읽기 전용 프로젝트 - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content 이 프로젝트는 읽기 전용이므로 정리할 수 없습니다. - + Supprimer les modèles de cartouche inutilisés dans le projet 프로젝트에서 사용하지 않는 타이틀 블록 템플릿 삭제 - + Nettoyer le projet window title 프로젝트 정리 - + Ajouter un folio 폴리오 추가 - + Revenir au debut du projet 프로젝트 시작으로 이동 - + Aller à la fin du projet 프로젝트 끝으로 이동 - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram 이 프로젝트에는 폴리오가 없습니다 @@ -5703,12 +5702,18 @@ Voulez-vous enregistrer les modifications ? 표시된 프로젝트가 없습니다 - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>프로젝트를 여는 중...</b><br/>폴리오 탭 생성:</p> - + Projet window title for a project-less ProjectView 프로젝트 @@ -5986,570 +5991,571 @@ Options disponibles : QETDiagramEditor - + Afficha&ge 표시(&A) - + Affiche ou non le panel d'appareils 요소 패널 표시/숨김 - + Ajouter une colonne 열 추가 - + &Cascade 계단식 배열(&C) - + C&oller 붙여넣기(&P) - + Cop&ier 복사(&C) - + Co&uper 잘라내기(&T) - + Désélectionner tout 선택 해제 - + &Édition 편집(&E) - + Enlever une colonne 열 제거 - + &Enregistrer 저장(&S) - + Enregistrer sous 다른 이름으로 저장 - + E&xporter 내보내기(&X) - + Fe&nêtres 창(&N) - + &Fermer 닫기(&C) - + &Fichier 파일(&F) - + Imprimer 인쇄 - + Inverser la sélection 선택 반전 - + Mode Selection 선택 모드 - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip 이 패널은 현재 시트에서 수행된 다양한 변경 사항을 나열합니다. 변경 항목을 클릭하면 해당 변경이 적용된 직후의 상태로 되돌릴 수 있습니다. - + Couleur de fond blanc/gris Tool tip of white/grey background button 배경색 흰색/회색 - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button 시트 배경색을 흰색 또는 회색으로 표시합니다 - + Afficher la grille 격자 표시 - + Affiche ou masque la grille des folios 시트의 격자를 표시하거나 숨깁니다 - + Propriétés du folio 시트 속성 - + Ajouter un folio 시트 추가 - + + Supprimer le folio 시트 삭제 - + Mode Visualisation 보기 모드 - + &Mosaïque &바둑판식 배열 - + Exporter en pdf PDF로 내보내기 - + Exporte un ou plusieurs folios du projet courant status bar tip 현재 프로젝트의 시트를 하나 이상 내보냅니다 - + Exporter au format CSV CSV로 내보내기 - + Gestionnaire de borniers (DEV) 단자대 관리자(DEV) - + Lancer le plugin de création de borniers 단자대 생성 플러그인 실행 - + Exporter la liste des noms de conducteurs 도선(와이어) 이름 목록 내보내기 - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet 프로젝트 내부 데이터베이스 내보내기 - + &Nouveau &새로 만들기 - + Crée un nouveau projet status bar tip 새 프로젝트를 생성합니다 - + Ouvre un projet existant status bar tip 기존 프로젝트를 엽니다 - + Ferme le projet courant status bar tip 현재 프로젝트를 닫습니다 - + Enregistre le projet courant et tous ses folios status bar tip 현재 프로젝트와 모든 시트를 저장합니다 - + Enregistre le projet courant avec un autre nom de fichier status bar tip 현재 프로젝트를 다른 파일 이름으로 저장합니다 - + Ajouter une ligne Add row 행 추가 - + Enlever une ligne Remove row 행 제거 - + Ajoute une colonne au folio status bar tip 시트에 열을 추가합니다 - + Enlève une colonne au folio status bar tip 시트에서 열을 제거합니다 - + Agrandit le folio en hauteur status bar tip 시트 높이를 늘립니다 - + Rétrécit le folio en hauteur status bar tip 시트 높이를 줄입니다 - + Enlève les éléments sélectionnés du folio status bar tip 선택한 요소를 시트에서 제거합니다 - + Sélectionne tous les éléments du folio status bar tip 시트의 모든 요소를 선택합니다 - + Désélectionne tous les éléments du folio status bar tip 시트의 모든 선택을 해제합니다 - + Agrandit le folio status bar tip 시트를 확대합니다 - + Rétrécit le folio status bar tip 시트를 축소합니다 - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre 프레임과 무관하게 시트의 전체 내용을 표시하도록 확대/축소를 맞춥니다 - + Adapte le zoom exactement sur le cadre du folio status bar tip 시트 프레임에 정확히 맞도록 확대/축소를 맞춥니다 - + Ajouter une ligne Draw line 선 추가 - + Ajouter un rectangle 사각형 추가 - + Ajouter une ellipse 타원 추가 - + Ajouter une polyligne 폴리라인 추가 - + Exporte le folio courant dans un autre format status bar tip 현재 시트를 다른 형식으로 내보냅니다 - + Imprime un ou plusieurs folios du projet courant status bar tip 현재 프로젝트의 시트를 하나 이상 인쇄합니다 - + Profondeur toolbar title 깊이 - + Groupe 그룹 - + Place les éléments du presse-papier sur le folio status bar tip 클립보드의 요소를 시트에 붙여넣습니다 - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip 시트 속성(치수, 표제란 정보, 도선 속성 등)을 편집합니다 - + Permet de visualiser le folio sans pouvoir le modifier status bar tip 시트를 수정하지 않고 보기만 할 수 있습니다 - + Outils 도구 - + &Ouvrir &열기 - + Ouvrir un fichier 파일 열기 - + Pas de zoom 확대/축소 초기화 - + Pivoter 회전 - + &Quitter &종료 - + Supprimer 삭제 - + Tout sélectionner 모두 선택 - + Zoom adapté 화면에 맞춤 - + Zoom arrière 축소 - + Zoom avant 확대 - + Annuler 실행 취소 - + Refaire 다시 실행 - + Réinitialiser les conducteurs 도선 초기화 - + Affiche ou non la barre d'outils principale 주 도구 모음을 표시하거나 숨깁니다 - + Affiche ou non la barre d'outils Affichage 표시 도구 모음을 표시하거나 숨깁니다 - + Affiche ou non la barre d'outils Schéma 도면 도구 모음을 표시하거나 숨깁니다 - + Affichage 표시 - + Schéma 도면 - + Ajouter un champ de texte 텍스트 필드 추가 - + Aucune modification 변경 사항 없음 - + Affiche ou non la liste des modifications 변경(실행 취소) 목록을 표시하거나 숨깁니다 - + Éditer l'item sélectionné 선택한 항목 편집 - + Grouper les textes sélectionnés 선택한 텍스트 그룹화 - + Pivote les éléments et textes sélectionnés status bar tip 선택한 요소와 텍스트를 회전합니다 - + Pivote les textes sélectionnés à un angle précis status bar tip 선택한 텍스트를 지정한 각도로 회전합니다 - + Chercher/remplacer 찾기/바꾸기 - + &Projet &프로젝트 - + &Récemment ouverts &최근 열었던 파일 - - + + Projet %1 enregistré dans le repertoire: %2. 프로젝트 %1이(가) 다음 폴더에 저장되었습니다: %2. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. 열려는 파일에 읽기 권한이 없어 열 수 없습니다. 파일 권한을 확인하세요. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. 열려는 프로젝트에 쓰기 권한이 없어 읽기 전용으로 열립니다. - + en utilisant des onglets 탭으로 표시 - + en utilisant des fenêtres 창으로 표시 - + Afficher les projets 프로젝트 표시 - + Propriétés du projet 프로젝트 속성 - + Nettoyer le projet 프로젝트 정리 - - + + Échec de l'ouverture du projet message box title 프로젝트 열기 실패 - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content 파일 %1은(는) QElectroTech 프로젝트 파일이 아닌 것으로 보입니다. 따라서 열 수 없습니다. @@ -6567,92 +6573,92 @@ Options disponibles : QElectroTech - + Annulations dock title 실행 취소 - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip 작업을 클릭하면 도면 편집 상태를 이전으로 되돌릴 수 있습니다 - + Orienter les textes 텍스트 방향 설정 - + Retrouver dans le panel 패널에서 찾기 - + Ajouter une image 이미지 추가 - + Ajouter un sommaire 목차 추가 - + Zoom sur le contenu 내용에 맞게 확대/축소 - + Ferme l'application QElectroTech status bar tip QElectroTech를 종료합니다 - + Annule l'action précédente status bar tip 이전 작업을 취소합니다 - + Restaure l'action annulée status bar tip 취소한 작업을 다시 실행합니다 - + Transfère les éléments sélectionnés dans le presse-papier status bar tip 선택한 요소를 클립보드로 잘라냅니다 - + Copie les éléments sélectionnés dans le presse-papier status bar tip 선택한 요소를 클립보드에 복사합니다 - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip 선택을 반전합니다 - + Retrouve l'élément sélectionné dans le panel status bar tip 패널에서 선택한 항목을 찾습니다 - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip 사용자 변경을 무시하고 도선 경로를 다시 계산합니다 - + Création automatique de conducteur(s) Tool tip of auto conductor 도선 자동 생성 @@ -6664,206 +6670,221 @@ Options disponibles : 프로젝트 - + Collections 컬렉션 - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor 가능한 경우 도선 자동 생성을 사용합니다 - + Restaure le zoom par défaut status bar tip 기본 확대/축소로 복원합니다 - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip 열려 있는 프로젝트를 하위 창으로 표시합니다 - + Ajouter une nomenclature 부품표(BOM) 추가 - + Présente les différents projets ouverts des onglets status bar tip 열려 있는 프로젝트를 탭으로 표시합니다 - + Permet de sélectionner les éléments status bar tip 요소를 선택할 수 있습니다 - + Ajouter un plan de bornes 단자 배치도 추가 - + Ajoute un champ de texte sur le folio actuel 현재 시트에 텍스트 필드를 추가합니다 - + Ajoute une image sur le folio actuel 현재 시트에 이미지를 추가합니다 - + Ajoute une ligne sur le folio actuel 현재 시트에 선을 추가합니다 - + Ajoute un rectangle sur le folio actuel 현재 시트에 사각형을 추가합니다 - + Ajoute une ellipse sur le folio actuel 현재 시트에 타원을 추가합니다 - + Ajoute une polyligne sur le folio actuel 현재 시트에 폴리라인을 추가합니다 - + Ajoute un plan de bornier sur le folio actuel 현재 시트에 단자대 배치도를 추가합니다 - + Ajouter 추가 - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech 프로젝트 (*.qet);;XML 파일 (*.xml);;모든 파일 (*) - - + + Impossible d'ouvrir le fichier message box title 파일을 열 수 없음 - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. 열려는 파일 %1이(가) 존재하지 않거나 더 이상 존재하지 않습니다. - + Ouverture du projet en lecture seule message box title 읽기 전용으로 프로젝트 열기 - + Double-click pour terminer la forme, Click droit pour annuler le dernier point 더블 클릭으로 도형을 완료하고, 오른쪽 클릭으로 마지막 점을 취소합니다 - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Éditer l'élement edit element 요소 편집 - + Éditer le champ de texte edit text field 텍스트 필드 편집 - + Éditer l'image edit image 이미지 편집 - + Éditer le conducteur edit conductor 도선 편집 - + Éditer l'objet sélectionné edit selected item 선택한 개체 편집 - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content 파일 %1을(를) 여는 동안 오류가 발생했습니다. - + Active le projet « %1 » 프로젝트 « %1 »을(를) 활성화합니다 - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title 오류 - + Dispose les fenêtres en mosaïque status bar tip 창을 바둑판식으로 배열합니다 - + Dispose les fenêtres en cascade status bar tip 창을 계단식으로 배열합니다 - + Projet suivant 다음 프로젝트 - + Projet précédent 이전 프로젝트 - + Active le projet suivant status bar tip 다음 프로젝트를 활성화합니다 - + Active le projet précédent status bar tip 이전 프로젝트를 활성화합니다 @@ -7062,53 +7083,53 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s 크기 조정할 요소 가져오기 - + Ajouter une ligne 선 추가 - + Ajouter une ellipse 타원 추가 - + Ajouter un polygone 다각형 추가 - + Ajouter du texte 텍스트 추가 - + Ajouter un arc de cercle 호 추가 - + Ajouter une borne 단자 추가 - + Annuler 실행 취소 - + Refaire 다시 실행 - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>단자가 없으면, 이 요소는 도체를 통해 다른 요소에 연결할 수 없습니다. - + Aucune modification 변경 없음 @@ -7153,13 +7174,13 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s 작성자 정보 편집 - + Parties toolbar title 부품 - + Profondeur toolbar title 깊이 @@ -7175,12 +7196,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s 요소 속성 편집 - + Ajouter un champ texte dynamique 동적 텍스트 필드 추가 - + Double-click pour terminer la forme, Click droit pour annuler le dernier point 더블클릭하여 도형 종료, 오른쪽 클릭으로 마지막 점 취소 @@ -7217,7 +7238,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [읽기 전용] - + Éditeur d'éléments status bar message 요소 편집기 @@ -7236,24 +7257,24 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s 프리미티브가 너무 많아 목록을 생성하지 못했습니다: %1 - + Absence de borne warning title 단자 없음 - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>오류</b> :<br>폴리오 참조 요소는 단자를 1개만 가져야 합니다.<br><b>해결</b> :<br>요소에 단자가 1개만 있는지 확인하십시오 - + La vérification de cet élément a généré message box content 이 요소 검사 결과 - + %n erreur(s) errors @@ -7261,32 +7282,32 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et 그리고 - + Erreurs 오류 - + Absence de borne 단자 없음 - + Ajouter un texte d'élément non éditable dans les schémas 도면에서 편집할 수 없는 요소 텍스트 추가 - + Ajouter un texte d'élément pouvant être édité dans les schémas 도면에서 편집할 수 있는 요소 텍스트 추가 - + %n avertissement(s) warnings @@ -7294,7 +7315,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 @@ -7313,21 +7334,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content 파일 %1을(를) 열 수 없습니다. - + Ce fichier n'est pas un document XML valide message box content 이 파일은 유효한 XML 문서가 아닙니다 - + Erreur toolbar title 오류 @@ -7366,49 +7387,59 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s 요소를 저장할 수 없습니다 - - - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + + + L'enregistrement à échoué, les conditions requises ne sont pas valides - + Avertissement 경고 - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... - + Importer un élément à redimensionner 크기 조정할 요소 가져오기 - + Éléments QElectroTech (*.elmt) QElectroTech 요소 (*.elmt) - + Impossible d'ouvrir le fichier message box title 파일을 열 수 없습니다 - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. 열려고 하는 파일 %1이(가) 존재하지 않거나 더 이상 존재하지 않는 것 같습니다. - - - + + + Echec de l'enregistrement 저장 실패 @@ -7425,42 +7456,42 @@ veuillez patienter durant l'import... QElectroTech 요소 (*.elmt);;XML 파일 (*.xml);;모든 파일 (*) - + Recharger l'élément dialog title 요소 다시 불러오기 - + Avertissements 경고 - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content 이 요소는 마지막 저장 이후 수정되었습니다. 다시 불러오면 수정 내용이 사라집니다. 정말로 이 요소를 다시 불러오시겠습니까? - + Enregistrer sous dialog title 다른 이름으로 저장 - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech 요소 (*.elmt) - + Enregistrer l'élément en cours ? dialog title 현재 요소를 저장하시겠습니까? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name 요소 %1을(를) 저장하시겠습니까? @@ -7468,22 +7499,22 @@ veuillez patienter durant l'import... - - + + Élément inexistant. message box title 존재하지 않는 요소. - + L'élément n'existe pas. message box content 요소가 존재하지 않습니다. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content 선택한 가상 경로는 요소와 일치하지 않습니다. @@ -7504,7 +7535,7 @@ veuillez patienter durant l'import... &붙여넣기 - + Ajouter un rectangle 사각형 추가 @@ -8035,7 +8066,7 @@ Que désirez vous faire ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. 경고: 이 요소는 더 최신 버전의 QElectroTech에서 저장되었습니다. @@ -9248,22 +9279,22 @@ Voulez-vous la remplacer ? 도체 생성 - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> qet_tb_generator 플러그인을 설치하려면<br>방문 :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Python 3.5 이상이 필요합니다.<br><B><U> Windows에서 최초 설치</B></U><br>1. 필요 시 Python 3.5 이상을 설치합니다<br> 방문 :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Windows에서 업데이트</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>사용자는 터미널에서 이 디렉터리에 있는 이 스크립트를 실행할 수 있습니다<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> qet_tb_generator 플러그인을 설치하려면<br>방문 :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> macOS에서 최초 설치</B></U><br>1. 필요 시 Python 3.11 번들만 설치합니다, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Profile.command 스크립트를 실행합니다<br>프로그램이 qet-tb-generator 플러그인을 찾기 위해 하드코딩된 PATH를 사용하기 때문입니다 <br> 방문 :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>설치 방법</a><br>2. pip3 install qet_tb_generator<br><B><U> macOS에서 업데이트</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> qet_tb_generator 플러그인을 설치하려면<br>방문 :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Python 3.5 이상이 필요합니다.<br><br><B><U> Linux에서 최초 설치</B></U><br>1. pip3가 설치되어 있는지 확인합니다: pip3 --version<br>설치되어 있지 않다면 다음 명령으로 설치하세요: sudo apt-get install python3-pip<br>2. 프로그램 설치: sudo pip3 install qet_tb_generator<br>3. 프로그램 실행: qet_tb_generator<br><br><B><U> Linux에서 업데이트</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin qet_tb_generator 플러그인 실행 오류 @@ -9401,51 +9432,51 @@ Voulez-vous la remplacer ? 단자대 %1 정렬 - - + + Générique generic terminal element type 일반 - + Fusible fuse terminal element type 퓨즈 - + Sectionable sectional terminal element type 단로형 - + Diode diode terminal element type 다이오드 - + Terre ground terminal element type 접지 - - + + Générique generic terminal element function 일반 - + Phase phase terminal element function - + Neutre neutral terminal element function 중성선 @@ -9476,7 +9507,7 @@ Voulez-vous la remplacer ? 요소 열기 - + Importer un fichier dxf DXF 파일 가져오기 @@ -14137,92 +14168,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur 오류 - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header 전압 / 프로토콜 - + Couleur du fil Wiring list CSV header 전선 색상 - + Section du fil Wiring list CSV header 전선 단면적 - + Fonction Wiring list CSV header 기능 - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_mn.ts b/lang/qet_mn.ts index a92eb5761..c639d4a0c 100644 --- a/lang/qet_mn.ts +++ b/lang/qet_mn.ts @@ -1680,7 +1680,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte Текстийн талбайн фонтыг өөрчлөх @@ -1705,17 +1705,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol Текстийн эх үүсвэрийг өөрчлөх, текст - + Modifier l'alignement d'un champ texte Текстийн талбайн эгнээг тохируулах - + Modifier la couleur d'un champ texte Текстийн талбайн өнгийг өөрчлөх - + Modifier la conservation de l'angle @@ -2007,7 +2007,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple Энгийн @@ -2042,93 +2042,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol Thumbnail - + + Définition de conducteur + + + + Normalement ouvert Хэвийн тамархай унтраалга - + Normalement fermé Хэвийн залгаатай унтраалга - + Inverseur Унтраалга - + Other - + Puissance Тэжээлийн унтраалга - + Temporisé travail Хугацааны барилттай асаах - + Temporisé repos Хугацааны барилттай унтраах - + Temporisé travail & repos Хугацааны барилттай асааж унтраах - + Bobine Ороомог - + Organe de protection Хамгаалалтын эрхтэн - + Commutateur / bouton Унтраалга / кноп - - + + Générique - + Fusible - + Séctionnable - + Diode - + Phase Фаз - + Neutre - + Terre Газардлага @@ -2136,98 +2141,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général Ерөнхий - + Élement Элемент - + Nom : %1 Нэр : %1 - + Folio : %1 Хуудас : %1 - + Type : %1 Төрөл: %1 - + Sous-type : %1 - + Position : %1 Байрлал : %1 - + Rotation : %1° Эргэлт : %1° - + Dimensions : %1*%2 Хэмжээсүүд : %1*%2 - + Bornes : %1 Холболтууд : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Байршил : %1 - + Retrouver dans le panel Хайх - + Éditer l'élément Элементийг өөрчлөх @@ -2692,60 +2697,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip - + Cartouches embarqués - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip @@ -2754,97 +2759,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant Үндсэн лавлахыг нээх - + Copier le chemin Түр санах ойн замыг хуулах - + Basculer vers ce projet Энэ төслийг идэвхжүүл - + Fermer ce projet Энэ төслийг хаах - + Propriétés du projet Төслийн тохиргоонууд - + Propriétés du folio Хуудасны тохиргоонууд - + Ajouter un folio Хуудас нэмэх - + Supprimer ce folio Энэ хуудсыг устгах - + Remonter ce folio Энэ хуудсыг дээш зөөх - + Abaisser ce folio Энэ хуудсыг доош зөөх - + Remonter ce folio x10 Энэ хуудсыг дээш зөөх 10х - + Remonter ce folio x100 Энэ хуудсыг дээш зөөх 100х - + Remonter ce folio au debut Энэ хуудсыг эхлэл хэсэг рүү зөөх - + Abaisser ce folio x10 Энэ хуудсыг доош зөөх 10х - + Abaisser ce folio x100 Энэ хуудсыг доош зөөх 100х - + Nouveau modèle Шинэ загвар - + Éditer ce modèle Энэ заварыг засварлах - + Supprimer ce modèle Энэ загварыг устгах - + Filtrer Шүүлтүүр @@ -5636,88 +5641,88 @@ Voulez-vous enregistrer les modifications ? - + Supprimer le folio ? message box title - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - + Projet en lecture seule message box title - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content - + Supprimer les modèles de cartouche inutilisés dans le projet - + Supprimer les éléments inutilisés dans le projet - + Supprimer les catégories vides - + Nettoyer le projet window title Төслийг арилгах - + Ajouter un folio Хуудас нэмэх - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> - + Projet window title for a project-less ProjectView @@ -6019,866 +6024,882 @@ Options disponibles : Төслүүд - + Collections Цуглуулгууд - + Aucune modification Тохиргоо байхгүй - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip - + Annulations dock title Буцаах - + E&xporter &Гаргах - + Exporte le folio courant dans un autre format status bar tip Одоогийн хуудсыг өөр форматаар гаргах - + Imprimer Хэвлэх - + Imprime un ou plusieurs folios du projet courant status bar tip Одоогийн төслийн нэг болон түүнээс дээш хуудсыг хэвлэх - + &Quitter &Гарах - + Ferme l'application QElectroTech status bar tip QElectroTech-г хаах - + Annuler Буцаах - + Annule l'action précédente status bar tip Өмнөх үйлдлүүдээ буцаах - + Refaire Буцаах - + Restaure l'action annulée status bar tip хийгдээгүй үйлдлийг сэргээх - + Co&uper &Арилгаж хуулах - + Cop&ier &Хуулах - + C&oller &Хуулж тавих - + Transfère les éléments sélectionnés dans le presse-papier status bar tip - + Copie les éléments sélectionnés dans le presse-papier status bar tip Сонгосон элементүүдийг хуулах - + Place les éléments du presse-papier sur le folio status bar tip - + Réinitialiser les conducteurs Дамжуулагчдыг хуучин төлөвт оруулах - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Дамжуулагчийн замыг хэвийн болгох - + Création automatique de conducteur(s) Tool tip of auto conductor Дамжуулагчийг автоматаар үүсгэх - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Боломжтой үед дамжуулагчийг автоматаар үүсгэгчийг хэрэглэх - + Couleur de fond blanc/gris Tool tip of white/grey background button Арын өнгө цагаан / саарал - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Хуудасны арын өнгийг цагаан эсвэл саарлаар харуулах - + Afficher la grille Хэрээсийг харуулах - + Affiche ou masque la grille des folios Хуудасны хэрээсийг харуулах эсвэл нуух - + Propriétés du folio Хуудасны тохиргоо - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip - + Propriétés du projet Төслийн тохиргоо - + Ajouter un folio Хуудас нэмэх - + + Supprimer le folio Энэ хуудсыг устгах - + Nettoyer le projet Төслийг арилгах - + Ajouter un sommaire Товч тайлбар нэмэх - + Exporter au format CSV CSV-руу гаргах - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + Ajouter une nomenclature Нэршил нэмэх - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers Холболтын блок үүсгэх Plugin-г ажиллуулах - + Exporter la liste des noms de conducteurs Утаснуудын нэрсийн жагсаалтыг гаргах - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet Төслийн дотоод мэдээллийн санг гаргах - + en utilisant des onglets - + Présente les différents projets ouverts des onglets status bar tip Бүх нээгдсэн төслүүдийг харуулах - + en utilisant des fenêtres - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Бүх нээгдсэн төслүүдийг цонхнуудад харуулах - + &Mosaïque &Tile - + Dispose les fenêtres en mosaïque status bar tip Цонхнуудыг баганан маягаар зохицууулах - + &Cascade &Үргэлжилсэн - + Dispose les fenêtres en cascade status bar tip Цонхнуудыг давхарласан маягаар зохицуулах - + Mode Selection Сонгох - + Permet de sélectionner les éléments status bar tip Элементүүдийг сонгохыг зөвшөөрөх - + Mode Visualisation Зөөх - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Хуудсыг засварлахгүйгээр харахыг зөвшөөрөх - + Projet suivant Дараагийн төсөл - + Active le projet suivant status bar tip Дараагийн төслийг идэвхжүүлэх - + Projet précédent Өмнөх төсөл - + Active le projet précédent status bar tip Өмнөх төслийг идэвхжүүлэх - + &Nouveau &Шинэ - + &Ouvrir &Нээх - + &Enregistrer &Хадгалах - + Enregistrer sous Өөрчилт хийж хадгалах - + &Fermer &Хаах - + Crée un nouveau projet status bar tip Шинэ төсөл үүсгэх - + Ouvre un projet existant status bar tip Байгаа файлыг нээх - + Ferme le projet courant status bar tip Одоогийн төслийг хаах - + Enregistre le projet courant et tous ses folios status bar tip Одоогийн төсөл болон түүний бүх хуудаснуудыг хадгалах - + Enregistre le projet courant avec un autre nom de fichier status bar tip Одоогийн файлыг өөр нэрээр хадгалах - + Ajouter une colonne Багана нэмэх - + Enlever une colonne Баганыг арилгах - + Ajouter une ligne Add row Эгнээ нэмэх - + Enlever une ligne Remove row Эгнээг арилгах - + Ajoute une colonne au folio status bar tip Хуудсанд багана нэмэх - + Enlève une colonne au folio status bar tip Хуудаснаас баганыг арилгах - + Agrandit le folio en hauteur status bar tip Хуудасны өндрийг ихэсгэх - + Rétrécit le folio en hauteur status bar tip Хуудасны өндрийг багасгах - + Supprimer Устгах - + Pivoter Эргүүлэх - + Orienter les textes Текстийн чигийг сонгох - + Retrouver dans le panel - + Éditer l'item sélectionné Сонгосон нэгжийг засварлах - + Grouper les textes sélectionnés Сонгосон текстүүдийг нэгтгэх - + Enlève les éléments sélectionnés du folio status bar tip Хуудаснаас сонгосон элементүүдийг арилгах - + Pivote les éléments et textes sélectionnés status bar tip Сонгосон элементүүд болон текстүүдийг эргүүлэх - + Pivote les textes sélectionnés à un angle précis status bar tip Сонгосон текстийг тодорхой өнцгөөр эргүүлэх - + Retrouve l'élément sélectionné dans le panel status bar tip Сонолтыг олох - + Tout sélectionner Бүгдийг сонгох - + Désélectionner tout Юу ч сонгохгүй байх - + Inverser la sélection Эсрэгээр сонгох - + Sélectionne tous les éléments du folio status bar tip Хуудсан дээрх бүх элементийг сонгох - + Désélectionne tous les éléments du folio status bar tip Хуудсан дээрх бүх элементийг сонгохгүй байх - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Элементийн сонголтуудыг урвуу болгох - + Zoom avant Ойртуулах - + Zoom arrière Холдуулах - + Zoom sur le contenu Таталт - + Zoom adapté - + Pas de zoom Таталтыг хэвийн болгох - + Agrandit le folio status bar tip Хуудсыг томсгох - + Rétrécit le folio status bar tip Хуудсыг жижгэсгэх - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre - + Adapte le zoom exactement sur le cadre du folio status bar tip - + Restaure le zoom par défaut status bar tip Хэвийн татаж харах түвшинг сэргээх - + Ajouter un champ de texte Текстийн талбайг нэмэх - + Ajouter une image Зураг нэмэх - + Ajouter une ligne Draw line Зураас нэмэх - + Ajouter un rectangle Дөрвөн өнцөгт нэмэх - + Ajouter une ellipse Зууван дүрс нэмэх - + Ajouter une polyligne Олон өнцөгт нэмэх - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel Одоогийн хуудсанд текстийн талбай нэмэх - + Ajoute une image sur le folio actuel Одоогийн хуудсанд зураг нэмэх - + Ajoute une ligne sur le folio actuel Одоогийн хуудсанд зураас нэмэх - + Ajoute un rectangle sur le folio actuel Одоогийн хуудсанд дөрвөн өнцөгт нэмэх - + Ajoute une ellipse sur le folio actuel Одоогийн хуудсанд зууван дүрс нэмэх - + Ajoute une polyligne sur le folio actuel Одоогийн хуудсанд олон зураас нэмэх - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer Хайх / Солих - + Outils Багажнууд - + Affichage Харуулах - + Schéma Схем - + Ajouter Нэмэх - + Profondeur toolbar title Гүн - + &Fichier &Файл - + &Édition &Засах - + &Projet &Төсөл - + Afficha&ge Харуу&лах - + Fe&nêtres Цо&нхнууд - + &Récemment ouverts &Сүүлийн файлууд - + Affiche ou non la barre d'outils principale Үндсэн цэсийг харуулах эсвэл нуух - + Affiche ou non la barre d'outils Affichage Дэлгэцийн цэсийг харуулах эсвэл нуух - + Affiche ou non la barre d'outils Schéma Схемийн цэсийг харуулах эсвэл нуух - + Affiche ou non le panel d'appareils Элементийн самбарыг харуулах эсвэл нуух - + Affiche ou non la liste des modifications Буцаалт хийгдсэн жагсаалтыг харуулах эсвэл нуух - + Afficher les projets Төслүүдийг харуулах - - + + Projet %1 enregistré dans le repertoire: %2. %1 төсөл нь %2 лавлахад бүртгэгдсэн аайна. - + Ouvrir un fichier Файлыг нээх - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech төсөл(*.qet);;XML Файлууд (*.xml);;Бүх файлууд (*) - - + + Impossible d'ouvrir le fichier message box title Файлыг нээх боломжгүй байна - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Таны нээхээр оролдож буй %1 файл нь устсан эсвэл байхгүй байна. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. - + Ouverture du projet en lecture seule message box title Файлыг зөвхөн харах тохиргоогоор нээж байна - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. - - + + Échec de l'ouverture du projet message box title Төслийг нээх боломжгүй байна - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Дүрсийг дуусгахын тулд 2 удаа дарна уу, Сүүлийн цэгийг арилгахын тулд баруун товчийг дарна уу - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe Груп - + Éditer l'élement edit element Элементийг засварлах - + Éditer le champ de texte edit text field Текстийн талбайг засварлах - + Éditer l'image edit image Зургийг засварлах - + Éditer le conducteur edit conductor Дамжуулагчийг засварлах - + Éditer l'objet sélectionné edit selected item Сонгосон биетийг засварлах - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Файлыг нээх үед алдаа гарлаа %1. - + Active le projet « %1 » Төслийг идэвхжүүлэх « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Алдаа @@ -7122,17 +7143,17 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Annuler Буцаах - + Refaire Б - + Profondeur toolbar title Гүн @@ -7158,73 +7179,73 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Таталтыг хэвийн болгох - + Ajouter une ligne Шулуун нэмэх - + Ajouter un rectangle Дөрвөн өнцөгт нэмэх - + Ajouter une ellipse Зууван нэмэх - + Ajouter un polygone Олон талт нэмэх - + Ajouter du texte Текст нэмэх - + Ajouter un arc de cercle Нум нэмэх - + Ajouter une borne Холболт нэмэх - + Ajouter un champ texte dynamique - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Дүрсийг дуусгахын тулд 2 удаа дарна уу, Сүүлийн цэгийг арилгахын тулд баруун товчийг дарна уу - + Ajouter un texte d'élément non éditable dans les schémas - + Ajouter un texte d'élément pouvant être édité dans les schémas - + Parties toolbar title Хэсгүүд - + Avertissement Анхааруулга - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... @@ -7262,12 +7283,12 @@ veuillez patienter durant l'import... - + Aucune modification Тохиргоогүй - + Éditeur d'éléments status bar message @@ -7282,35 +7303,35 @@ veuillez patienter durant l'import... - + Absence de borne warning title - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description - + Absence de borne - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne - + La vérification de cet élément a généré message box content - + %n erreur(s) errors @@ -7319,12 +7340,12 @@ veuillez patienter durant l'import... - + et ба - + %n avertissement(s) warnings @@ -7333,18 +7354,18 @@ veuillez patienter durant l'import... - + <b>%1</b> : %2 warning title: warning description - + Erreurs Алдаанууд - + Avertissements @@ -7362,21 +7383,21 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier %1. message box content %1 файлыг нээх боломжгүй байна. - + Ce fichier n'est pas un document XML valide message box content - + Erreur toolbar title Алдаа @@ -7420,73 +7441,83 @@ veuillez patienter durant l'import... - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Impossible d'ouvrir le fichier message box title Файлыг нээх боломжгүй байна - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Таны нээхээр оролдож буй %1 файл нь устсан эсвэл байхгүй байна. - + Recharger l'élément dialog title - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) - - - + + + Echec de l'enregistrement - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides - + Enregistrer sous dialog title - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file - + Enregistrer l'élément en cours ? dialog title - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name @@ -7506,22 +7537,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title - + Le chemin virtuel choisi ne correspond pas à un élément. message box content - + L'élément n'existe pas. message box content @@ -8521,7 +8552,7 @@ Voulez-vous la remplacer ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. @@ -8813,22 +8844,22 @@ Voulez-vous la remplacer ? - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin @@ -9447,51 +9478,51 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type Газардлага - - + + Générique generic terminal element function - + Phase phase terminal element function Фаз - + Neutre neutral terminal element function @@ -9522,7 +9553,7 @@ Voulez-vous la remplacer ? - + Importer un fichier dxf @@ -14209,92 +14240,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur Алдаа - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Хүчдэл / Протокол - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header Функц - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_nb.ts b/lang/qet_nb.ts index 87b108a4c..057bb1951 100644 --- a/lang/qet_nb.ts +++ b/lang/qet_nb.ts @@ -1681,7 +1681,7 @@ Anmerkning: Disse opsjonene endrer IKKE den automatiske nummereringen, bare dens - + Modifier la police d'un champ texte Endre tekstfeltenes skrifttype @@ -1706,17 +1706,17 @@ Anmerkning: Disse opsjonene endrer IKKE den automatiske nummereringen, bare dens Endre tekstkilden - + Modifier l'alignement d'un champ texte Endre teksfeltenes justering - + Modifier la couleur d'un champ texte Endre tekstfeltenes farge - + Modifier la conservation de l'angle @@ -2008,7 +2008,7 @@ Anmerkning: Disse opsjonene endrer IKKE den automatiske nummereringen, bare dens - + Simple Enkel @@ -2043,93 +2043,98 @@ Anmerkning: Disse opsjonene endrer IKKE den automatiske nummereringen, bare dens Ikon - + + Définition de conducteur + + + + Normalement ouvert NO/ubetjent åpen - + Normalement fermé NC/ubetjent lukket - + Inverseur Veksler - + Other - + Puissance Lastkontakt - + Temporisé travail forsinket på - + Temporisé repos forsinket av - + Temporisé travail & repos forsinket av og på - + Bobine Spole - + Organe de protection Vern - + Commutateur / bouton Bryter / knapp - - + + Générique - + Fusible - + Séctionnable - + Diode - + Phase Fase - + Neutre N-leder - + Terre Jordleder @@ -2137,97 +2142,97 @@ Anmerkning: Disse opsjonene endrer IKKE den automatiske nummereringen, bare dens ElementPropertiesWidget - + Général Felles - + Élement Komponent - + Nom : %1 Navn : %1 - + Folio : %1 Side : %1 - + Type : %1 Type: %1 - + Sous-type : %1 - + Position : %1 Posisjon : %1 - + Rotation : %1° Rotasjon : %1 - + Dimensions : %1*%2 Størrelse : %1*%2 - + Bornes : %1 Tilkoblinger : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Filbane : %1 - + Retrouver dans le panel Finn i katalogen - + Éditer l'élément Endre komponent @@ -2691,60 +2696,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip Dobbeltklikk for å utvikle og endre prosjektet - + Cartouches embarqués tilknyttede tegningsmaler - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Dobbeltklikk for å åpne eller lukke malsamlingen - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Dra og slipp tegningsmalen for å bruke den på denne siden - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Dobbeltklikk for å åpne eller lukke malsamlingen "QElectroTech-Tegningsmaler" - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Denne samling av tegingsmaler leveres som standard med QElectroTech. Den er en fast del av programmet og kan ikke endres - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Dobbeltklikk for å åpne eller lukke din egen samling av tegningsmaler - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Dette er din egen samling av tegingsmaler. Bruk den for å lage, endre og lagre dine egne tegningsmaler @@ -2753,97 +2758,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant Åpne katalog/perm - + Copier le chemin Kopier filbane i mellomlageret - + Basculer vers ce projet Gå til dette prosjektet - + Fermer ce projet Lukk prosjektet - + Propriétés du projet Prosjektegenskaper - + Propriétés du folio Sidenes egenskaper - + Ajouter un folio Tilføy en ny side - + Supprimer ce folio Slett side - + Remonter ce folio Flytt side opp - + Abaisser ce folio Flytt side ned - + Remonter ce folio x10 Flytt side 10 plasser opp - + Remonter ce folio x100 Flytt side 100 plasser opp - + Remonter ce folio au debut Flytt side til begynnelsen - + Abaisser ce folio x10 Flytt side 10 plasser ned - + Abaisser ce folio x100 Flytt side 100 plasser ned - + Nouveau modèle Nytt tegningsmal - + Éditer ce modèle Endre tegningsmal - + Supprimer ce modèle Slett tegningsmal - + Filtrer Filtrer @@ -5655,88 +5660,88 @@ Voulez-vous enregistrer les modifications ? Ingen prosjekt å vise - + Supprimer le folio ? message box title Slett siden - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - Er du sikker at du vil slette/fjerne siden fra prosjektet? Dette kan ikke reverseres. + - + Projet en lecture seule message box title Prosjektet er skrivebeskyttet - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Prosjektet er skrivebeskyttet, og kan derfor ikke renses. - + Supprimer les modèles de cartouche inutilisés dans le projet Fjern alle ubrukte tegningsmaler fra prosjektet - + Supprimer les éléments inutilisés dans le projet Fjern alle ubrukte komponenter fra prosjektet - + Supprimer les catégories vides Slett alle tomme kategorier - + Nettoyer le projet window title Rense prosjektet - + Ajouter un folio Tilføy en ny side - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Prosjektet inneholder ingen sider - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Åpner prosjektet....</b><br/>Lager sidefliker: </p> - + Projet window title for a project-less ProjectView Prosjekt @@ -6042,866 +6047,882 @@ Tilgjengelige opsjoner: Prosjekter - + Collections Samlinger - + Aucune modification Ingen endring - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Klikk på aksjonen som skal reverseres - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Denne listen inneholder all gjennomførte endringer på den aktuelle siden. Et utvalg reverserer alle endringer inntil selve utvalget. - + Annulations dock title Reverser - + E&xporter E&ksporter - + Exporte le folio courant dans un autre format status bar tip Eksporter aktuell side til et annet filformat - + Imprimer Utskrift - + Imprime un ou plusieurs folios du projet courant status bar tip Skriv ut en eller flere sider av prosjektet - + &Quitter &Bekreft - + Ferme l'application QElectroTech status bar tip Lukk QElectroTech - + Annuler Reverser - + Annule l'action précédente status bar tip Reverser siste handling - + Refaire Gjenta - + Restaure l'action annulée status bar tip Gjenopprett siste reversering - + Co&uper K&lipp - + Cop&ier Ko&pier - + C&oller L&im - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Flytter utvalgte komponenter til mellomlageret - + Copie les éléments sélectionnés dans le presse-papier status bar tip Kopierer utvalgte komponenter til mellomlageret - + Place les éléments du presse-papier sur le folio status bar tip Limer mellomlagerets innhold på siden - + Réinitialiser les conducteurs Resett ledere - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Tegner ledere på nytt uten at endringene brukes - + Création automatique de conducteur(s) Tool tip of auto conductor Aktiver automatisk kobling av ledere - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Koble automatisk der det er mulig - + Couleur de fond blanc/gris Tool tip of white/grey background button Bakgrunnsfarge - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Veksle sidenes bakgrunnsfarge mellom hvit og grått - + Afficher la grille Vis rasteret - + Affiche ou masque la grille des folios Vis rasteret på sidene - + Propriétés du folio Sideegenskaper - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Endre sideegenskaper (størrelse, tegningsmal, lederegenskaper...) - + Propriétés du projet Prosjektegenskaper - + Ajouter un folio Sett inn ny side - + + Supprimer le folio Slett siden - + Nettoyer le projet Rense prosjektet - + Ajouter un sommaire Sett inn innholdsfortegnelse - + Exporter au format CSV Eksporter som CSV-fil - + Lancer le plugin de création de borniers Starte klemmeplan-generator-plugin - + Exporter la liste des noms de conducteurs Eksporter listen av ledernavn - + Exporter la base de donnée interne du projet Eksporter den interne prosjektdatabasen - + en utilisant des onglets Bruk fliker - + Présente les différents projets ouverts des onglets status bar tip Viser projektene som fliker - + en utilisant des fenêtres eller i egne vinduer - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Viser åpne prosjekter i egne vinduer - + &Mosaïque &Fliser - + Dispose les fenêtres en mosaïque status bar tip Plasserer vinduene som fliser - + &Cascade s&tablet - + Dispose les fenêtres en cascade status bar tip Viser vinduene stablet - + Mode Selection Utvalgsmodus - + Permet de sélectionner les éléments status bar tip Tillater utvalg av komponenter - + Mode Visualisation Visningsmodus - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Tillater visning av sider uten mulighet for endring - + Projet suivant Neste prosjekt - + Active le projet suivant status bar tip Aktiverer det neste prosjektet - + Projet précédent Forrige prosjekt - + Active le projet précédent status bar tip Aktiverer det forrige prosjektet - + &Nouveau &Nytt - + &Ouvrir &Åpne - + &Enregistrer &Lagre - + Enregistrer sous Lagre som - + &Fermer L&ukk - + Crée un nouveau projet status bar tip Lager et nytt prosjekt - + Ouvre un projet existant status bar tip Åpner et eksisterende prosjekt - + Ferme le projet courant status bar tip Lukker prosjektet - + Enregistre le projet courant et tous ses folios status bar tip Lagrer prosjektet med alle prosjektsidene - + Enregistre le projet courant avec un autre nom de fichier status bar tip Lagrer prosjketet med et nytt filnavn - + Ajouter une colonne Sett inn rad - + Enlever une colonne Sletter en kolonne - + Ajouter une ligne Add row Setter inn råd - + Enlever une ligne Remove row Sletter rad - + Ajoute une colonne au folio status bar tip Tilføyer en kolonne på siden - + Enlève une colonne au folio status bar tip Sletter en kolonne på siden - + Agrandit le folio en hauteur status bar tip Øker sidenes høyde - + Rétrécit le folio en hauteur status bar tip Krymper til sidehøyden - + Supprimer Sletter - + Pivoter Roterer - + Orienter les textes Roterer tekstene - + Retrouver dans le panel Søk i skjemaet - + Éditer l'item sélectionné Endre utvalgt - + Grouper les textes sélectionnés Grupperer de utvalgte tekstene - + Ajouter une nomenclature Legg til en register - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + Gestionnaire de borniers (DEV) - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Enlève les éléments sélectionnés du folio status bar tip Sletter de utvalgte komponentene fra siden - + Pivote les éléments et textes sélectionnés status bar tip Roterer utvalgte komponenter og tekster - + Pivote les textes sélectionnés à un angle précis status bar tip Roterer de utvalgte tekstene i eksakt vinkel - + Retrouve l'élément sélectionné dans le panel status bar tip Finner de utvalgte komponeter i skjemaet - + Tout sélectionner Velg alle - + Désélectionner tout Forkast hele utvalget - + Inverser la sélection Inverter utvalget - + Sélectionne tous les éléments du folio status bar tip Velg alle komponeter på siden - + Désélectionne tous les éléments du folio status bar tip Forkast utvalg av komponenter på siden - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Velger alt som ikke var valgt hittil, og forkaster alt som hittil har vært valgt - + Zoom avant Forstørr - + Zoom arrière Forminsk - + Zoom sur le contenu Vis alt - + Zoom adapté Tilpass - + Pas de zoom Ingen zoom - + Agrandit le folio status bar tip Øker sidestørrelsen - + Rétrécit le folio status bar tip Forminsker sidestørrelsen - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Tilpasser størrelse slik at hele sideinnhold vises, uavhengig av tegningsmalen - + Adapte le zoom exactement sur le cadre du folio status bar tip Tilpasser størrelsen til tegningsmalen - + Restaure le zoom par défaut status bar tip Tilbakestiller til standardstørrelsen - + Ajouter un champ de texte Sett inn tekstfelt - + Ajouter une image Sett inn et bilde - + Ajouter une ligne Draw line Sett inn en linje - + Ajouter un rectangle Sett inn en rektangel - + Ajouter une ellipse Sett inn en ellipse - + Ajouter une polyligne Sett in et polygon - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel Setter inn et tekstfelt på den aktuelle siden - + Ajoute une image sur le folio actuel Setter in et bilde/grafikk på den aktuelle siden - + Ajoute une ligne sur le folio actuel Setter inn en linje på den aktuelle siden - + Ajoute un rectangle sur le folio actuel Setter inn en rektangel på den aktuelle siden - + Ajoute une ellipse sur le folio actuel Setter inn en ellipse på den aktuelle siden - + Ajoute une polyligne sur le folio actuel Setter inn et polygon på den aktuelle siden - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer Søk/erstatt - + Outils Verktøy - + Affichage Display - + Schéma Skjema - + Ajouter Sett inn - + Profondeur toolbar title Dybde/nivå - + &Fichier &Fil - + &Édition &Endre - + &Projet Prosjekt - + Afficha&ge Statusl&inje - + Fe&nêtres Vind&uer - + &Récemment ouverts Tidligere åpnet - + Affiche ou non la barre d'outils principale Viser/skjuler verktøylinjen - + Affiche ou non la barre d'outils Affichage Viser/skjuler statuslinjen - + Affiche ou non la barre d'outils Schéma Viser/skjuler skjema-verktøylinjen - + Affiche ou non le panel d'appareils Viser/skjuler komponentpanelet - + Affiche ou non la liste des modifications Viser/skjuler endringslisten - + Afficher les projets Vis prosjektene - - + + Projet %1 enregistré dans le repertoire: %2. Prosjekt %1 lagret i filbane %2. - + Ouvrir un fichier Åpne en fil - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech-prosjekter (*.qet);; XML-filer (*.xml);;Alle filer (*) - - + + Impossible d'ouvrir le fichier message box title Får ikke åpnet filen - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Det ser ut som om filen %1 du vil åpne ikke finnes - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Du har ikke tilstekkelig myndighet/tillatelse for å få adgang til filen - + Ouverture du projet en lecture seule message box title Åpner prosjekt i lesemodus - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Du har ikke tillatelse for å skrive prosjeket, den åpnes skrivebeskyttet isteden. - - + + Échec de l'ouverture du projet message box title Får ikke åpnet prosjektet - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Det ser ut som om filen %1 ikke er noe QElectroTech-prosjektfil. Den kan ikke åpnes. - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dobbeltklikk for å avslutte formen, høyreklikk for å slette det siste punktet - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe Gruppe - + Éditer l'élement edit element Endre komponent - + Éditer le champ de texte edit text field Endre tekstboks - + Éditer l'image edit image Endre bilde - + Éditer le conducteur edit conductor Endre leder - + Éditer l'objet sélectionné edit selected item Endre utvalg - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Huffda, får ikke åpnet filen %1 - + Active le projet « %1 » Aktiverer prosjekt "%1" - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Fy faen, en feil @@ -7145,17 +7166,17 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Endre komponentegenskaper - + Annuler Avbryt - + Refaire Gjenta - + Profondeur toolbar title Dybde @@ -7181,73 +7202,73 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Ingen forstørrelse - + Ajouter une ligne Sett inn linje - + Ajouter un rectangle Sett inn rektangel - + Ajouter une ellipse Sett inn ellipse - + Ajouter un polygone Sett inn polygon - + Ajouter du texte Sett inn tekst - + Ajouter un arc de cercle Sett inn en bue - + Ajouter une borne Sett inn klemme - + Ajouter un champ texte dynamique Sett inn dynamisk tekstboks - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dobbeltklikk for å avslutte formen, høyreklikk for å slette siste punktet - + Ajouter un texte d'élément non éditable dans les schémas Sett inn fast tekst i tegningen - + Ajouter un texte d'élément pouvant être édité dans les schémas Sett inn tekst som kan endres i tegningen - + Parties toolbar title Dele - + Avertissement Advarsel - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... @@ -7285,12 +7306,12 @@ veuillez patienter durant l'import... [skrivebeskyttet] - + Aucune modification Ikke endret - + Éditeur d'éléments status bar message Komponenteditor @@ -7305,35 +7326,35 @@ veuillez patienter durant l'import... - + Absence de borne warning title Ingen tilkoblingspunkt - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>Uten tilkoblingspunkter kan komponentet ikke kobles til andre komponenter gjennom ledere. - + Absence de borne Ingen tilkoblingspunkter - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Feil</b> :<br>Kryssreferanser til sider kan bare ha en (1) tilkoblingspunkt<br><b>Løsninglt;/b> :<br>Sjekk om komponentet bare har et eneste tilkoblingspunkt - + La vérification de cet élément a généré message box content Sjekk av komponenten viser - + %n erreur(s) errors @@ -7342,12 +7363,12 @@ veuillez patienter durant l'import... - + et og - + %n avertissement(s) warnings @@ -7356,18 +7377,18 @@ veuillez patienter durant l'import... - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 - + Erreurs Feil - + Avertissements Advarsler @@ -7385,21 +7406,21 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier %1. message box content Får ikke åpnet fil %q - + Ce fichier n'est pas un document XML valide message box content Denne filen er ikke en gyldig XML-fil - + Erreur toolbar title Feil @@ -7443,73 +7464,83 @@ veuillez patienter durant l'import... - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Impossible d'ouvrir le fichier message box title Får ikke åpnet filen - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Det ser ut som om filen %1 du vil åpne ikke finnes (lenger) - + Recharger l'élément dialog title Laster komponentet - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Komponenten ble endret. Om du laster på nytt, mister du endringene. Vil du virkelig laste komponenten på nytt? - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) QElectroTech-komponent (*.elmt) - - - + + + Echec de l'enregistrement Kunne ikke lagre - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Kunne ikke lagre. De nødvendige forutsetningene er ikke tilstede - + Enregistrer sous dialog title Lagre som - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech-komponent (*.elmt) - + Enregistrer l'élément en cours ? dialog title Lagre aktuell komponent? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Vil du lagre komponent %1? @@ -7529,22 +7560,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title Komponenten finnes ikke - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Den symboliske stien peker ikke til en komponent - + L'élément n'existe pas. message box content Komponenten finnes ikke @@ -8547,7 +8578,7 @@ Vil du erstatte den? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Advarsel: Komponenten ble lagret med en nyere versjon av QElectroTech. @@ -8698,22 +8729,22 @@ Vil du erstatte den? Flytter utvalget til det bakerste nivået - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Installasjon av plugin qet_tb_generator<br>Se:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Benötigt python 3.5 oder höher.<br><B><U> Erste Installation unter Windows</B></U><br>1. Python 3.5 oder höher installieren<br> Siehe:<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update under Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>Plug-in (Skript) flyttes i denne permen og kjøres så derifra:<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Feil ved start av qet_tb_generator-plugin @@ -9473,51 +9504,51 @@ Vil du erstatte den? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type Jordleder - - + + Générique generic terminal element function - + Phase phase terminal element function Fase - + Neutre neutral terminal element function N-leder @@ -9548,7 +9579,7 @@ Vil du erstatte den? - + Importer un fichier dxf @@ -14236,92 +14267,92 @@ Største lengde: %2px WiringListExport - - + + Erreur - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Spenning / Protokoll - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header Funksjon - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_nl_BE.ts b/lang/qet_nl_BE.ts index 17aad820c..8704b8bf6 100644 --- a/lang/qet_nl_BE.ts +++ b/lang/qet_nl_BE.ts @@ -1681,17 +1681,17 @@ Let op: Deze opties blokkeren NIET de Automatisch nummering, maar passen alleen - + Modifier la police d'un champ texte wijzig het beleid van een tekstveld - + Modifier la couleur d'un champ texte Wijzig de kleur van een tekstveld - + Modifier la conservation de l'angle Behoud de visuele rotatie @@ -1716,7 +1716,7 @@ Let op: Deze opties blokkeren NIET de Automatisch nummering, maar passen alleen Wijzig de born tekst van een tekst - + Modifier l'alignement d'un champ texte Wijzig de uitlijning van een tekstveld @@ -2008,7 +2008,7 @@ Let op: Deze opties blokkeren NIET de Automatisch nummering, maar passen alleen - + Simple Enkel @@ -2043,93 +2043,98 @@ Let op: Deze opties blokkeren NIET de Automatisch nummering, maar passen alleen Etiket - + + Définition de conducteur + + + + Normalement ouvert Normaal open - + Normalement fermé Normaal gesloten - + Inverseur Draairichtingsschakelaar - + Other Andere - + Puissance Vermogen - + Temporisé travail Vertraagd inschakelen - + Temporisé repos Vertraagd uitschakelen - + Temporisé travail & repos Vertraagd in- en uitschakelen - + Bobine Spoel - + Organe de protection Beveiliging - + Commutateur / bouton Schakelaar / drukknop - - + + Générique Algemeen - + Fusible Samenvoegen - + Séctionnable Selecteerbaar - + Diode Diode - + Phase Fase - + Neutre Nul geleider - + Terre Aarding @@ -2137,98 +2142,98 @@ Let op: Deze opties blokkeren NIET de Automatisch nummering, maar passen alleen ElementPropertiesWidget - + Général Algemeen - + Élement Element - + Nom : %1 Naam : %1 - + Folio : %1 Bladzijde : %1 - + Type : %1 Type: %1 - + Sous-type : %1 Subtype : %1 - + Position : %1 Positie : %1 - + Rotation : %1° Draaiing %1 - + Dimensions : %1*%2 Afmetingen : %1*%2 - + Bornes : %1 Klemmen : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Positie : %1 - + Retrouver dans le panel Vind terug in verzameliing - + Éditer l'élément Bewerken element @@ -2693,60 +2698,60 @@ Alle elementen in het dossier worden verwijderd. ElementsPanel - + Cartouches embarqués Meegeleverde titel blokken - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Dubbelklik om samen te vouwen of uit te vouwen van de meegeleverde titel blokken - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Selecteer en sleep het sjabloon van de etiket en plaats het in het gewenste schema. - + Double-cliquez pour réduire ou développer ce projet Status tip Dubbelklik om samen te vouwen of uit te vouwen van dit project - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Dubbelklik om samen te vouwen of uit te vouwen van QElectrotech titelblokken - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Deze collectie titel blokken zijn voorzien door QElectroTech. En zijn geïnstalleerd als systeem onderdeel , u kan deze niet aanpassen. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip Dubbelklik om de collectie etiketten van het bedrijf samen te vouwen of uit te vouwen - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Dit is de collectie etiketeten van het bedrijf. U kunt deze gebruiken om uw eigen etiketten te maken, op te slaan en te bewerken. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Dubbelklik om samen te vouwen of uit te vouwen van titelblok collectie - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Dit is uw persoonlijke collectie van titel blokken, gebruik deze om uw eigen titel blokken te maken, opslaan en bewerken. @@ -2755,97 +2760,97 @@ Alle elementen in het dossier worden verwijderd. ElementsPanelWidget - + Ouvrir le dossier correspondant Open de map van dit bestand - + Copier le chemin Copieer pad - + Basculer vers ce projet Activeer dit project - + Éditer ce modèle Bewerk dit sjabloon - + Supprimer ce modèle Verwijder dit sjabloon - + Fermer ce projet Dit project sluiten - + Propriétés du projet Project eigenschappen - + Propriétés du folio Schema eigenschappen - + Ajouter un folio Schema bladzijde toevoegen - + Supprimer ce folio Schema bladzijde verwijderen - + Remonter ce folio Herstel schema bladzijde - + Abaisser ce folio Plaats schema lager - + Remonter ce folio x10 Herstel het schema 10x - + Remonter ce folio x100 Herstel het schema 100x - + Remonter ce folio au debut Plaats schema bladzijde vooraan - + Abaisser ce folio x10 Verlaag schema baldzijde 10x - + Abaisser ce folio x100 Verlaag schema baldzijde 100x - + Nouveau modèle Nieuw sjabloon - + Filtrer Filter @@ -5645,12 +5650,12 @@ De volgende items zijn niet compatibel : ProjectView - + Supprimer les éléments inutilisés dans le projet Verwijder ongebruikte elementen uit project - + Supprimer les catégories vides Verwijder lege categorieen @@ -5673,67 +5678,61 @@ Wilt u wijzigingen bewaren? Project QElectroTech (*.qet) - + Supprimer le folio ? message box title Verijderen van schema bladzijde ? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - Bent u zeker dat u deze schema bladzijde wilt verwijderen? deze wijziging kan niet ongedaan gemaakt worden. - - - + Projet en lecture seule message box title Alleen lezen project - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Dit project is alleen lezen. en kan dus niet geschoond worden. - + Supprimer les modèles de cartouche inutilisés dans le projet Verwijder ongebruikte sjablonen uit project - + Nettoyer le projet window title Schoon project - + Ajouter un folio Een schema bladzijde toevoegen - + Revenir au debut du projet Ga terug naar het begin van het project - + Aller à la fin du projet Ga naar het einde van het project - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Dit project bevat geen enkele schem bladzijde @@ -5751,12 +5750,18 @@ Wilt u wijzigingen bewaren? Geen actief project - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Project open in uitvoering...</b><br/>Creatie van de schema bladzijden :</p> - + Projet window title for a project-less ProjectView venstertitel voor een projectloze projectweergave @@ -6048,571 +6053,572 @@ Beschikbare opties: QETDiagramEditor - + Afficha&ge Weer&gave - + Affiche ou non le panel d'appareils Weergeven of verbergen het elementen paneel - + Ajouter une colonne Kolom toevoegen - + &Cascade &Trapsgewijs - + C&oller &Plakken - + Cop&ier Kop&ieren - + Co&uper Kn&ippen - + Désélectionner tout Selecteer niets - + &Édition &Bewerken - + Enlever une colonne Kolom verwijderen - + &Enregistrer B&ewaren - + Enregistrer sous Bewaren als - + E&xporter E&xporteer - + Fe&nêtres Ve&nsters - + &Fermer &Sluiten - + &Fichier &Bestand - + Imprimer Afdrukken - + Inverser la sélection Selectie omkeren - + Mode Selection Selectie modus - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Dit paneel bevat de verschillende acties welke toegpast zij op de huidige schema bladzijde. Klikken op één van deze acties brengt het schema terug naar de inhoud juist na het toepassen van deze actie. - + Couleur de fond blanc/gris Tool tip of white/grey background button Achtergrond kleur wit of grijs - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Geef de achtergrond kleur van het schema weer in wit of grijs - + Afficher la grille Geef rooster weer - + Affiche ou masque la grille des folios Verbergen of weergeven raster op de bladzijden - + Propriétés du folio Schema eigenschappen - + Ajouter un folio Schema bladzijde toevoegen - + + Supprimer le folio Schema baldzijde verwijderen - + Mode Visualisation Verplaatsen modus - + &Mosaïque &Mozaïek - + Exporter en pdf Exporteer in pdf - + Exporte un ou plusieurs folios du projet courant status bar tip Exporteer een of meer folio's van het huidige project - + Exporter au format CSV Exporteren in CSV-indeling - + Gestionnaire de borniers (DEV) Klemmen beheerder (DEV) - + Lancer le plugin de création de borniers Start de creatie van klemmen - + Exporter la liste des noms de conducteurs Exporteer de lijst met bestuurdersnamen - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet Exporteer de interne projectdatabase - + &Nouveau &Nieuw - + Crée un nouveau projet status bar tip Nieuw project aanmaken - + Ouvre un projet existant status bar tip Bestaand project openen - + Ferme le projet courant status bar tip Het huidige project sluiten - + Enregistre le projet courant et tous ses folios status bar tip Bewaar het huidige project en al zijn schema bladzijden - + Enregistre le projet courant avec un autre nom de fichier status bar tip Bewaar het huidige project met een andere naam - + Ajouter une ligne Add row Een rij toevoegen - + Enlever une ligne Remove row Verwijderen van een rij - + Ajoute une colonne au folio status bar tip Voeg een kolom toe - + Enlève une colonne au folio status bar tip Verwijder een kolom - + Agrandit le folio en hauteur status bar tip Vergroot het schema in de hoogte - + Rétrécit le folio en hauteur status bar tip Verklein het schema in de hoogte - + Enlève les éléments sélectionnés du folio status bar tip Verwijder de geselecteerde elementen van het schema - + Sélectionne tous les éléments du folio status bar tip Selecteer alle elementen op deze schema bladzijde - + Désélectionne tous les éléments du folio status bar tip Selecteer niets op deze schema bladzijde - + Agrandit le folio status bar tip Vergroot deze schema bladzijde - + Rétrécit le folio status bar tip Verklein deze schema bladzijde - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Uitzomen toegestaan buiten het schema kader - + Adapte le zoom exactement sur le cadre du folio status bar tip Pas de zoom waarde aan aan de exacte afmetingen van het schema kader - + Ajouter une ligne Draw line Teken een lijn - + Ajouter un rectangle Rechthoek toevoegen - + Ajouter une ellipse Voeg ellipse toe - + Ajouter une polyligne Polylijn toevoegen - + Exporte le folio courant dans un autre format status bar tip Exporteer de huidige schemabladzijde naar een ander formaat - + Imprime un ou plusieurs folios du projet courant status bar tip Afdrukken van één of meerdere schema bladzijden van het huidige project - + Profondeur toolbar title Diepte - + Groupe Groep - + Place les éléments du presse-papier sur le folio status bar tip Plaat elementen op het klembord - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Bewerk de bladzijde eigenschappen (afmetingen, informatie op de etiket, eigenschappen van de geleiders...) - + Permet de visualiser le folio sans pouvoir le modifier status bar tip U kan deze bladzijde alleen lezen en niet wijzigen - + Outils Gereedschappen - + &Ouvrir &Open - + Ouvrir un fichier Bestand openen - + Pas de zoom Zoom 1:1 - + Pivoter Draaien - + &Quitter &Verlaten - + Supprimer Verwijderen - + Tout sélectionner Selecteer alles - + Zoom adapté Passend maken - + Zoom arrière Zoom Uit - + Zoom avant Zoom In - + Annuler Annuleer - + Refaire Herdoen - + Réinitialiser les conducteurs Reset geleiders - + Affiche ou non la barre d'outils principale Weergeven of verbergen van de hoofdwerkbalk - + Affiche ou non la barre d'outils Affichage Tonen of verbergen van de weergave werkbalk - + Affiche ou non la barre d'outils Schéma Tonen of verbergen van de schema werkbalk - + Affichage Weergave - + Schéma Schema - + Ajouter un champ de texte Toevoegen een tekstveld - + Aucune modification Geen wijzigingen - + Affiche ou non la liste des modifications Tonen of verbergen van de lijst met wijzigingen - + Éditer l'item sélectionné Bewerk het geselecteerde item - + Grouper les textes sélectionnés Groep van geslecteerde teksten - + Pivote les éléments et textes sélectionnés status bar tip Draai de geselecteerde elementen en teksten - + Pivote les textes sélectionnés à un angle précis status bar tip Draai de geselecteerde teksten met specifieke hoek - + Chercher/remplacer Zoeken/vervangen - + &Projet &Project - + &Récemment ouverts &Onlangs geopende projecten - - + + Projet %1 enregistré dans le repertoire: %2. Project %1 bewaard in map %2. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Het lijkt erop dat het bestand dat u probeert te openen niet leesbaar is. Het is dus onmogelijk om het te openen. Controleer de bestandsrechten. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Het lijkt erop dat het project dat u probeert te openen niet leesbaar is. Het zal geopend worden als alleen-lezen. - + en utilisant des onglets Gebruik tabs - + en utilisant des fenêtres Gebruik vensters - + Afficher les projets Weergeven projecten - + Propriétés du projet Project eigenschappen - + Nettoyer le projet Reinig het project - - + + Échec de l'ouverture du projet message box title Project openen mislukt - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Het lijkt erop dat het bestand %1 geen QElectroTech project is. Het kan niet worden geopend. @@ -6630,93 +6636,93 @@ Reinig het project QElectroTech - + Annulations dock title Annuleringen - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Klik op een actie om terug te gaan in de bewerkingen van uw schema - + Orienter les textes Kies tekst orientatie - + Retrouver dans le panel Zoeken in paneel - + Ajouter une image Afbeelding toevoegen - + Ajouter un sommaire Samenvatting toevoegen - + Zoom sur le contenu Zoom op de inhoud - + Ferme l'application QElectroTech status bar tip Afsluiten QElectroTech - + Annule l'action précédente status bar tip Annuleer de vorige actie - + Restaure l'action annulée status bar tip Herstel de geannuleerde actie - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Verplaats de geselecteerde elementen naar het klembord - + Copie les éléments sélectionnés dans le presse-papier status bar tip Kopieert de geselecteerde elementen naar het klembord - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Deselecteert alle geselecteerde elementen en selecteert de niet-geselecteerde elementen - + Retrouve l'élément sélectionné dans le panel status bar tip Vind het geselecteerde element in het paneel - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Herberekent de paden van geleiders, ongeacht de veranderingen - + Création automatique de conducteur(s) Tool tip of auto conductor Automatisch creatie van geleiders @@ -6728,209 +6734,224 @@ Deselecteert alle geselecteerde elementen en selecteert de niet-geselecteerde el Projecten - + Collections Collectie - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Maak gebruik van automatische creatie van geleider(s) indien mogelijk - + Restaure le zoom par défaut status bar tip Herstel naar de standaard zoom instelling - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Toont de verschillende geopende projecten in vensters - + Ajouter une nomenclature Nomenclatuur toevoegen - + Présente les différents projets ouverts des onglets status bar tip Toont de verschillende geopende projecten in tabs - + Permet de sélectionner les éléments status bar tip Selecteert elementen - + Ajouter un plan de bornes Voeg een klemmen plan toe - + Ajoute un champ de texte sur le folio actuel Voeg een tekstveld bij op de huidige schema bladzijde - + Ajoute une image sur le folio actuel Voeg een afbeelding bij op de huidige schema bladzijde - + Ajoute une ligne sur le folio actuel Voeg een lijn toe aan de huidige schema bladzijde - + Ajoute un rectangle sur le folio actuel Voeg een recthoek toe aan de huidige schema bladzijde - + Ajoute une ellipse sur le folio actuel Voeg een elpis toe aan de huidige schema bladzijde - + Ajoute une polyligne sur le folio actuel Voeg een polygoon toe aan de huidige schema bladzijde - + Ajoute un plan de bornier sur le folio actuel Voeg een klemmen plan toe op de huidige pagina - + Ajouter toevoegen - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) Project QElectroTech (*.qet);;Bestand XML (*.xml);;Alle bestanden (*) - - + + Impossible d'ouvrir le fichier message box title Kan het bestand niet openen - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Het lijkt erop dat het bestand %1 dat u probeert te openen niet bestaat. - + Ouverture du projet en lecture seule message box title Open het bestand als alleen lezen - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dubbelklik om het formulier te voltooien, klik met de rechtermuisknop om het laatste punt ongedaan te maken - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Éditer l'élement edit element Element bewerken - + Éditer le champ de texte edit text field Tekst veld bewerken - + Éditer l'image edit image Afbeelding bewerken - + Éditer le conducteur edit conductor Bewerk geleiders - + Éditer l'objet sélectionné edit selected item Het geselecteerde object bewerken - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Een fout heeft zich voorgedaan bij het open vanbestand %1. - + Active le projet « %1 » Activeer project " %1 " - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Fout - + Dispose les fenêtres en mosaïque status bar tip Zet vensters in tegelpatroon - + Dispose les fenêtres en cascade status bar tip Zet vensters achter elkaar - + Projet suivant Volgende project - + Projet précédent Vorige project - + Active le projet suivant status bar tip Activeert volgende project - + Active le projet précédent status bar tip Activeert vorige project @@ -7129,53 +7150,53 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s importeer een element om de grootte te wijzigen - + Ajouter une ligne Voeg lijn toe - + Ajouter une ellipse Voeg ellipse toe - + Ajouter un polygone Voeg polygoon toe - + Ajouter du texte Voeg tekst toe - + Ajouter un arc de cercle Voeg boog toe - + Ajouter une borne Voeg een klem toe - + Annuler Anuleer - + Refaire Herstel - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>Bij de afwezigheid van contact klem, is het niet mogelijk het element te verbinden met andere element door middel van geleiders. - + Aucune modification Geen wijzigingen @@ -7220,13 +7241,13 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Bewerk auteur informatie - + Parties toolbar title Delen - + Profondeur toolbar title Diepte @@ -7242,12 +7263,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Bewerk de eigenschappen van het element - + Ajouter un champ texte dynamique Voeg dynamisch tekstveld toe - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dubbelklik om het formulier te voltooien, klik met de rechtermuisknop om het laatste punt ongedaan te maken @@ -7284,7 +7305,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [Alleen lezen] - + Éditeur d'éléments status bar message Element bewerker @@ -7299,24 +7320,24 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title Geen verbindings punt aanwezig - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Fout</b>:<br>de schema bladzijde moet minstens 1 verbindingscontact bevatten.<br><b>Oplossing</b>:<br>Zie het element na of het minstens 1 verbindingscontact bevat - + La vérification de cet élément a généré message box content De controle van dit element is gebeurd - + %n erreur(s) errors foutmelding @@ -7326,32 +7347,32 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et en - + Erreurs Fouten - + Absence de borne Terminal object ontbreekt - + Ajouter un texte d'élément non éditable dans les schémas Voeg een niet-bewerkbare tekst element toe in de schema bladzijden - + Ajouter un texte d'élément pouvant être édité dans les schémas Voeg tekstveld toe die in schema's kan worden bewerkt - + %n avertissement(s) warnings waarschuwingen @@ -7361,7 +7382,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description <b>%1</b>: %2 @@ -7380,21 +7401,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Onmogelijk om bestand %1 te openen. - + Ce fichier n'est pas un document XML valide message box content Dit bestand is geen geldig XML document - + Erreur toolbar title Fout @@ -7438,49 +7459,59 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Te veel primitieven, lijst niet gegenereerd: %1 - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Avertissement Aankondiging - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Het importeren van een groot dxf-bestand kan tijd kosten Even geduld terwijl het importeren bezig is... - + Importer un élément à redimensionner Importeer een item om het formaat te wijzigen - + Éléments QElectroTech (*.elmt) QElectroTech elementen (*.elmt) - + Impossible d'ouvrir le fichier message box title Onmogelijk om bestand te openen - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Het lijkt erop dat het bestand %1 dat u probeert te openen niet bestaat. - - - + + + Echec de l'enregistrement Bewaren mislukt - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Bewaren mislukt, de benodigde voorwaarden zijn niet voldaan @@ -7498,42 +7529,42 @@ les conditions requises ne sont pas valides QElectroTech elementen (*.elmt);;XML files (*.xml);;All files (*) - + Recharger l'élément dialog title Herlaad elementen - + Avertissements Waarschuwingen - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Je hebt veranderingen op dit element gemaakt. Als u herlaadt, zullen deze wijzigingen verloren. Wil je echt herladen van het item? - + Enregistrer sous dialog title Bewaren als - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech elementen (*.elmt) - + Enregistrer l'élément en cours ? dialog title Bewaren actief element? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Wilt u het element %1 bewaren ? @@ -7541,22 +7572,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title Element bestaat niet. - + L'élément n'existe pas. message box content Het element bestaat niet. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Het gekozen virtuele pad correspondeert niet met een element. @@ -7577,7 +7608,7 @@ les conditions requises ne sont pas valides P&lakken - + Ajouter un rectangle Rechthoek toevoegen @@ -8116,7 +8147,7 @@ Wat wil je doen? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Waarschuwing: het element is bewaard in een nieuwere versie van QElectroTech. @@ -9344,22 +9375,22 @@ Wilt u deze vervangen? Creatie van geleiders - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> De plug-in qet_tb_generator installeren <br> Bezoek: <a href='https://pypi.python.org/pypi/qet-tb-generator'> qet-tb-generator </a> - vereist python 3.5 of hoger. <br> <B> <U> Eerste installatie op Windows </ U> <br> 1. Installeer, indien nodig, python 3.5 of hoger <br> Bezoek: <a href='https://www.python.org/downloads/'> python.org </a> <br> 2. pip install qet_tb_generator <br> <B> <U> Update voor Windows </ U> <br> python -m pip install - upgrade qet_tb_generator <br> directory <br> C: \ gebruikers \ XXXX \ AppData \ Local \ Programs \ Python \ Python36-32 \ Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> Om de plugin qet_tb_generator te installeren<br>Ga naar:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>< B><U>Eerste installatie op macOSX</B></U><br>1. Installeer, indien nodig, alleen de python 3.11-bundel, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2- macos11.pkg</a><br>2 Voer het script Profile.command uit<br>omdat het programma een hardgecodeerd PATH gebruikt om de qet-tb-generator-plug-in te lokaliseren <br> Bezoek:<br><a href='https://qelectrotech .org/forum/viewtopic.php?pid=5674#p5674'>hoe</a><br>2. pip3 installeer qet_tb_generator<br><B><U> Update op macOSX</B></U><br> pip3 installeer --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Om de plug-in qet_tb_generator te installeren <br> Bezoek: <br> <a href='https://pypi.python.org/pypi/qet-tb-generator'> qet-tb-generator </a> <br> < br> Python 3.5 of hoger vereist. <br> <br> <B> <U> Eerste installatie op Linux </B> </U> <br> 1. controleer of u pip3 hebt geïnstalleerd: pip3 --version <br> Indien niet installeren met: sudo apt-get install python3-pip <br> 2. Installeer het programma: sudo pip3 install qet_tb_generator <br> 3. Start het programma: qet_tb_generator <br> <br> <B> <U> Update op Linux </B> </U> <br> sudo pip3 install --upgrade qet_tb_generator <br> - + Error launching qet_tb_generator plugin Fout bij opstarten qet_tb_generator toepassing @@ -9491,57 +9522,57 @@ Wilt u deze vervangen? Verplaats een klem - - + + Générique generic terminal element type Algemeen - + Fusible fuse terminal element type Samenvoegbaar - + Sectionable sectional terminal element type Verdeelbaar - + Diode diode terminal element type Diode - + Terre ground terminal element type Aarding - - + + Générique generic terminal element function Algemeen - + Phase phase terminal element function Fase - + Neutre neutral terminal element function Nul geleider - + Importer un fichier dxf Importeer een dxf file @@ -14302,92 +14333,92 @@ Maximale lengte : %2px WiringListExport - - + + Erreur Fout - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Spanning / regels - + Couleur du fil Wiring list CSV header Kleur geleider - + Section du fil Wiring list CSV header Sectie van de geleider - + Fonction Wiring list CSV header Functie - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_nl_NL.ts b/lang/qet_nl_NL.ts index 85cd861c8..c1ad7844d 100644 --- a/lang/qet_nl_NL.ts +++ b/lang/qet_nl_NL.ts @@ -1673,7 +1673,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte @@ -1698,17 +1698,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier l'alignement d'un champ texte - + Modifier la couleur d'un champ texte - + Modifier la conservation de l'angle @@ -2000,7 +2000,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple @@ -2035,93 +2035,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - - Normalement ouvert + + Définition de conducteur - Normalement fermé + Normalement ouvert - Inverseur + Normalement fermé + Inverseur + + + + Other - + Puissance - + Temporisé travail - + Temporisé repos - + Temporisé travail & repos - + Bobine - + Organe de protection - + Commutateur / bouton - - + + Générique - + Fusible - + Séctionnable - + Diode - + Terre - + Phase - + Neutre @@ -2129,89 +2134,89 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général - + Élement - + Nom : %1 - + Folio : %1 - + Type : %1 - + Sous-type : %1 - + Position : %1 - + Rotation : %1° - + Dimensions : %1*%2 - + Bornes : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 - + Retrouver dans le panel - + Éditer l'élément @@ -2674,60 +2679,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip - + Cartouches embarqués - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip @@ -2736,97 +2741,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant - + Copier le chemin - + Basculer vers ce projet - + Fermer ce projet - + Propriétés du projet - + Propriétés du folio - + Ajouter un folio - + Supprimer ce folio - + Remonter ce folio - + Abaisser ce folio - + Remonter ce folio x10 - + Remonter ce folio x100 - + Remonter ce folio au debut - + Abaisser ce folio x10 - + Abaisser ce folio x100 - + Nouveau modèle - + Éditer ce modèle - + Supprimer ce modèle - + Filtrer @@ -5616,88 +5621,88 @@ Voulez-vous enregistrer les modifications ? - + Supprimer le folio ? message box title - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - + Projet en lecture seule message box title - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content - + Supprimer les modèles de cartouche inutilisés dans le projet - + Supprimer les éléments inutilisés dans le projet - + Supprimer les catégories vides - + Nettoyer le projet window title - + Ajouter un folio - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> - + Projet window title for a project-less ProjectView @@ -5993,866 +5998,882 @@ Options disponibles : - + Collections - + Aucune modification - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip - + Annulations dock title - + E&xporter - + Exporte le folio courant dans un autre format status bar tip - + Imprimer - + Imprime un ou plusieurs folios du projet courant status bar tip - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + &Quitter - + Ferme l'application QElectroTech status bar tip - + Annuler - + Annule l'action précédente status bar tip - + Refaire - + Restaure l'action annulée status bar tip - + Co&uper - + Cop&ier - + C&oller - + Transfère les éléments sélectionnés dans le presse-papier status bar tip - + Copie les éléments sélectionnés dans le presse-papier status bar tip - + Place les éléments du presse-papier sur le folio status bar tip - + Réinitialiser les conducteurs - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip - + Création automatique de conducteur(s) Tool tip of auto conductor - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor - + Couleur de fond blanc/gris Tool tip of white/grey background button - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button - + Afficher la grille - + Affiche ou masque la grille des folios - + Propriétés du folio - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip - + Propriétés du projet - + Ajouter un folio - + + Supprimer le folio - + Nettoyer le projet - + Exporter au format CSV - + Ajouter une nomenclature - + Ajouter un sommaire - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers - + Exporter la liste des noms de conducteurs - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet - + en utilisant des onglets - + Présente les différents projets ouverts des onglets status bar tip - + en utilisant des fenêtres - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip - + &Mosaïque - + Dispose les fenêtres en mosaïque status bar tip - + &Cascade - + Dispose les fenêtres en cascade status bar tip - + Mode Selection - + Permet de sélectionner les éléments status bar tip - + Mode Visualisation - + Permet de visualiser le folio sans pouvoir le modifier status bar tip - + Projet suivant - + Active le projet suivant status bar tip - + Projet précédent - + Active le projet précédent status bar tip - + &Nouveau - + &Ouvrir - + &Enregistrer - + Enregistrer sous - + &Fermer - + Crée un nouveau projet status bar tip - + Ouvre un projet existant status bar tip - + Ferme le projet courant status bar tip - + Enregistre le projet courant et tous ses folios status bar tip - + Enregistre le projet courant avec un autre nom de fichier status bar tip - + Ajouter une colonne - + Enlever une colonne - + Ajouter une ligne Add row - + Enlever une ligne Remove row - + Ajoute une colonne au folio status bar tip - + Enlève une colonne au folio status bar tip - + Agrandit le folio en hauteur status bar tip - + Rétrécit le folio en hauteur status bar tip - + Supprimer - + Pivoter - + Orienter les textes - + Retrouver dans le panel - + Éditer l'item sélectionné - + Grouper les textes sélectionnés - + Enlève les éléments sélectionnés du folio status bar tip - + Pivote les éléments et textes sélectionnés status bar tip - + Pivote les textes sélectionnés à un angle précis status bar tip - + Retrouve l'élément sélectionné dans le panel status bar tip - + Tout sélectionner - + Désélectionner tout - + Inverser la sélection - + Sélectionne tous les éléments du folio status bar tip - + Désélectionne tous les éléments du folio status bar tip - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip - + Zoom avant - + Zoom arrière - + Zoom sur le contenu - + Zoom adapté - + Pas de zoom - + Agrandit le folio status bar tip - + Rétrécit le folio status bar tip - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre - + Adapte le zoom exactement sur le cadre du folio status bar tip - + Restaure le zoom par défaut status bar tip - + Ajouter un champ de texte - + Ajouter une image - + Ajouter une ligne Draw line - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter une polyligne - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel - + Ajoute une image sur le folio actuel - + Ajoute une ligne sur le folio actuel - + Ajoute un rectangle sur le folio actuel - + Ajoute une ellipse sur le folio actuel - + Ajoute une polyligne sur le folio actuel - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer - + Outils - + Affichage - + Schéma - + Ajouter - + Profondeur toolbar title - + &Fichier - + &Édition - + &Projet - + Afficha&ge - + Fe&nêtres - + &Récemment ouverts - + Affiche ou non la barre d'outils principale - + Affiche ou non la barre d'outils Affichage - + Affiche ou non la barre d'outils Schéma - + Affiche ou non le panel d'appareils - + Affiche ou non la liste des modifications - + Afficher les projets - - + + Projet %1 enregistré dans le repertoire: %2. - + Ouvrir un fichier - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) - - + + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. - + Ouverture du projet en lecture seule message box title - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. - - + + Échec de l'ouverture du projet message box title - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe - + Éditer l'élement edit element - + Éditer le champ de texte edit text field - + Éditer l'image edit image - + Éditer le conducteur edit conductor - + Éditer l'objet sélectionné edit selected item - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content - + Active le projet « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title @@ -7149,21 +7170,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content - + Ce fichier n'est pas un document XML valide message box content - + Erreur toolbar title @@ -7198,22 +7219,22 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - - + + Élément inexistant. message box title - + Le chemin virtuel choisi ne correspond pas à un élément. message box content - + L'élément n'existe pas. message box content @@ -7263,35 +7284,45 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description - + Absence de borne - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + La vérification de cet élément a généré message box content - + %n erreur(s) errors @@ -7300,12 +7331,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et - + %n avertissement(s) warnings @@ -7314,189 +7345,189 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description - + Erreurs - + Avertissements - + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Enregistrer l'élément en cours ? dialog title - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name - + Annuler - + Refaire - + Profondeur toolbar title - + Ajouter une ligne - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter un polygone - + Ajouter du texte - + Ajouter un arc de cercle - + Ajouter une borne - + Ajouter un champ texte dynamique - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Ajouter un texte d'élément non éditable dans les schémas - + Ajouter un texte d'élément pouvant être édité dans les schémas - + Parties toolbar title - + Aucune modification - + Éditeur d'éléments status bar message - - - + + + Echec de l'enregistrement - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides - + Enregistrer sous dialog title - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file - + Recharger l'élément dialog title - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content - + Avertissement - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) @@ -8518,7 +8549,7 @@ Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper da - + Importer un fichier dxf @@ -8631,7 +8662,7 @@ Voulez-vous la remplacer ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. @@ -8656,51 +8687,51 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type - - + + Générique generic terminal element function - + Phase phase terminal element function - + Neutre neutral terminal element function @@ -8900,22 +8931,22 @@ Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper da - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin @@ -14138,92 +14169,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_pl.ts b/lang/qet_pl.ts index d51a06d5a..f8668cc0b 100644 --- a/lang/qet_pl.ts +++ b/lang/qet_pl.ts @@ -1684,17 +1684,17 @@ Uwaga: te opcje nie pozwalają na zablokowanie automatycznej numeracji tylko ust - + Modifier la police d'un champ texte Zmiana atrybutów pola tekstowego - + Modifier la couleur d'un champ texte Zmiana koloru pola tekstowego - + Modifier la conservation de l'angle niepewne Zmiana zachowania kąta @@ -1720,7 +1720,7 @@ Uwaga: te opcje nie pozwalają na zablokowanie automatycznej numeracji tylko ust Zmiana żródła tekstu dla tekstu - + Modifier l'alignement d'un champ texte Zmiana wyrównania pola tekstowego @@ -2013,7 +2013,7 @@ Uwaga: te opcje nie pozwalają na zablokowanie automatycznej numeracji tylko ust - + Simple Nieokreślona @@ -2048,94 +2048,99 @@ Uwaga: te opcje nie pozwalają na zablokowanie automatycznej numeracji tylko ust Etykieta - + + Définition de conducteur + + + + Normalement ouvert Zwierny - + Normalement fermé Rozwierny - + Inverseur Przełączny - + Other Inny - + Puissance Obwody główne - + Temporisé travail Opóźnienie przy wzbudzeniu - + Temporisé repos Opóźnienie przy odwzbudzeniu - + Temporisé travail & repos Opuźnienie przy wzbudzeniu & i odwzbudzeniu - + Bobine Cewka - + Organe de protection Zabezpieczenie - + Commutateur / bouton łącznik pokrętny/przyciskowy - - + + Générique Standardowy - + Fusible Bezpiecznikowy - + Séctionnable tłumaczenie niepewne Odłącznikowy - + Diode Diodowy - + Phase Fazowy - + Neutre Neutralny - + Terre Ochronny @@ -2143,99 +2148,99 @@ Uwaga: te opcje nie pozwalają na zablokowanie automatycznej numeracji tylko ust ElementPropertiesWidget - + Général Ogólne - + Élement Element - + Nom : %1 Nazwa: %1 - + Folio : %1 Arkusz: %1 - + Type : %1 Typ: %1 - + Sous-type : %1 Podtyp: %1 - + Position : %1 Pozycja: %1 - + Rotation : %1° Obrót: %1° - + Dimensions : %1*%2 Wymiary: %1*%2 - + Bornes : %1 Zacisk: %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Położenie: %1 - + Retrouver dans le panel Znajdź w panelu - + Éditer l'élément Edytuj element @@ -2704,61 +2709,61 @@ Wszystkie elementy i podkatalogi znajdujące się w tym katalogu zostaną usuni ElementsPanel - + Cartouches embarqués Tabliczki rysunkowe osadzone - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Podwójne kliknięcie zwija lub rozwija kolekcję tabliczek rysunkowych osadzonych - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Przecięgnij szablon tabliczki rysunkowej do schematu. - + Double-cliquez pour réduire ou développer ce projet Status tip Podwójne kliknięcie zwija lub rozwija projekt - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Podwójne kliknięcie zwija lub rozwija kolekcję tabliczek rysunkowych QElectroTech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Kolekcja tabliczek rysunkowych dostarczona z QElectroTech. Zainstalowana jest jako składnik oprogramowania i nie może być personalizowana. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip Podwójne kliknięcie zwija lub rozwija kolekcję tabliczek rysunkowych - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip niepewne To jest kolekcja firmowych tabliczek rysunkowych — użyj jej do tworzenia, przechowywania i edytowania własnych tabliczek. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Podwójne kliknięcie zwija lub rozwija kolekcję tabliczek rysunkowych użytkownika - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Kolekcja tabliczek rysunkowych użytkownika -- przeznaczona do tworzenia, przechowywania i edytowania własnych tabliczek rysunkowych. @@ -2767,97 +2772,97 @@ Wszystkie elementy i podkatalogi znajdujące się w tym katalogu zostaną usuni ElementsPanelWidget - + Ouvrir le dossier correspondant Otwórz odpowiedni katalog - + Copier le chemin Kopiuj ścieżkę - + Basculer vers ce projet Przejdź do tego projektu - + Éditer ce modèle Edytuj szablon - + Supprimer ce modèle Usuń szablon - + Fermer ce projet Zamknij projekt - + Propriétés du projet Właściwości projektu - + Propriétés du folio Właściwości arkusza - + Ajouter un folio Powiększ arkusz - + Supprimer ce folio Usuń arkusz - + Remonter ce folio Przenieś arkusz w górę - + Abaisser ce folio Przenieś arkusz w dół - + Remonter ce folio x10 Przenieś arkusz w górę o 10 - + Remonter ce folio x100 Przenieś arkusz w górę o 100 - + Remonter ce folio au debut Przenieś arkusz na początek - + Abaisser ce folio x10 Przenieś arkusz w dół o 10 - + Abaisser ce folio x100 Przenieś arkusz w dół o 100 - + Nouveau modèle Nowy szablon - + Filtrer Filtruj @@ -5666,12 +5671,12 @@ Poniższe zmienne są zgodne: ProjectView - + Supprimer les éléments inutilisés dans le projet Usuń nieużywane elementy projektu - + Supprimer les catégories vides Usuń puste kategorie @@ -5694,67 +5699,61 @@ Czy chcesz zapisać zmiany? Projekt QElectroTech (*.qet) - + Supprimer le folio ? message box title Usunąć arkusz? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - Czy na pewno chcesz usunąć ten arkusz z projektu? Zmiana będzie nieodwracalna. - - - + Projet en lecture seule message box title Projekt w trybie tylko do odczytu - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Ten projekt jest w trybie tylko do odczytu. Usunięcie jest niemożliwe. - + Supprimer les modèles de cartouche inutilisés dans le projet Usuń nieużywane szablony projektu - + Nettoyer le projet window title Wyczyść projekt - + Ajouter un folio Wstaw arkusz - + Revenir au debut du projet Wróć do początku projektu - + Aller à la fin du projet Przejdź do końca projektu - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Ten projekt nie zawiera arkuszy @@ -5772,12 +5771,18 @@ Czy chcesz zapisać zmiany? brak zapisanego projektu - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Otwieranie projektu trwa...</b><br/>Utwórz zaokrąglenia dla arkuszy:</p> - + Projet window title for a project-less ProjectView Projekt @@ -6068,570 +6073,571 @@ Dostępne opcje: QETDiagramEditor - + Afficha&ge &Widok - + Affiche ou non le panel d'appareils Pokazuje lub ukrywa panel elementów - + Ajouter une colonne Wstaw kolumnę - + &Cascade &Kaskada - + C&oller &Wklej - + Cop&ier &Kopiuj - + Co&uper &Wytnij - + Désélectionner tout Odznacz - + &Édition &Edycja - + Enlever une colonne Usuń kolumnę - + &Enregistrer &Zapisz - + Enregistrer sous Zapisz jako - + E&xporter &Eksportuj - + Fe&nêtres &Okna - + &Fermer &Zamknij - + &Fichier &Plik - + Imprimer Drukuj - + Inverser la sélection Odwróć zaznaczenie - + Mode Selection Tryb edycji - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Ten panel zawiera listę czynności wykonanych w bieżącym arkuszu. Kliknij wykonaną czynność z listy aby powrócić do etapu edycji schematu po jej zastosowaniu. - + Couleur de fond blanc/gris Tool tip of white/grey background button Kolor tła biały / szary - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Wyświetla tło arkusza w kolorze białym lub szarym - + Afficher la grille Wyświetl siatkę - + Affiche ou masque la grille des folios Pokaż lub ukryj sietkę arkuszy - + Propriétés du folio Właściwości arkusza - + Ajouter un folio Wstaw arkusz - + + Supprimer le folio Usuń arkusz - + Mode Visualisation Tryb podglądu - + &Mosaïque &Mozaika - + Exporter en pdf Eksportuj do pdf - + Exporte un ou plusieurs folios du projet courant status bar tip Eksportuj jeden lub kilka arkuszy bierzącego projektu - + Exporter au format CSV Eksportuj do farmatu CVS - + Gestionnaire de borniers (DEV) Menedżer listw zaciskowych (DEV) - + Lancer le plugin de création de borniers Wtyczka do tworzenia listw zaciskowych - + Exporter la liste des noms de conducteurs Wyeksportuj listę nazw przewodów - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet Wyeksportuj wewnętrzną bazę danych projektu - + &Nouveau &Nowy - + Crée un nouveau projet status bar tip Tworzy nowy projekt - + Ouvre un projet existant status bar tip Otwiera istniejący projekt - + Ferme le projet courant status bar tip Zamyka bieżący projekt - + Enregistre le projet courant et tous ses folios status bar tip Zapisuje bieżący projekt i wszystkie arkusze należące do projektu - + Enregistre le projet courant avec un autre nom de fichier status bar tip Zapisuje bieżący projekt z inną nazwą pliku - + Ajouter une ligne Add row Wstaw linię - + Enlever une ligne Remove row Usuń wiersz - + Ajoute une colonne au folio status bar tip Wstawia kolumnę do arkusza - + Enlève une colonne au folio status bar tip Usuwa kolumnę z arkusza - + Agrandit le folio en hauteur status bar tip Dodaje wiersz do arkusza - + Rétrécit le folio en hauteur status bar tip Usuwa wiersz z arkusza - + Enlève les éléments sélectionnés du folio status bar tip Usuwa zaznaczenie elementów w arkuszu - + Sélectionne tous les éléments du folio status bar tip Zaznacza wszystkie elementy w arkuszu - + Désélectionne tous les éléments du folio status bar tip Usuwa zaznaczenie wszystkich elementów w arkuszu - + Agrandit le folio status bar tip Powiększa arkusz - + Rétrécit le folio status bar tip Pomniejsza arkusz - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Dostosowuje powiększenie w celu pokazania całej zawartości bez obramowania - + Adapte le zoom exactement sur le cadre du folio status bar tip Dostosowuje powiększenie do obramowania arkusza - + Ajouter une ligne Draw line Wstaw linię - + Ajouter un rectangle Wstaw prostokąt - + Ajouter une ellipse Wstaw elipsę - + Ajouter une polyligne Wstaw wielokąt - + Exporte le folio courant dans un autre format status bar tip Eksportuje bieżącą arkusz do innego formatu - + Imprime un ou plusieurs folios du projet courant status bar tip Drukuje jeden lub więcej arkuszy bieżącego projektu - + Profondeur toolbar title Głębokość - + Groupe Grupa - + Place les éléments du presse-papier sur le folio status bar tip Wkleja elementy ze schowka do arkusza - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Edytuje właściwości arkusza (rozmiar, informacje w tabliczce rysunkowej, właściwości przewodu...) - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Podgląd arkusza bez możliwości edycji - + Outils Narzędzia - + &Ouvrir &Otwórz - + Ouvrir un fichier Otwórz plik - + Pas de zoom Bez powiększenia - + Pivoter Obróć - + &Quitter &Zakończ - + Supprimer Usuń - + Tout sélectionner Zaznacz wszystko - + Zoom adapté Dostosuj powiększenie - + Zoom arrière Pomniejsz - + Zoom avant Powiększ - + Annuler Cofnij - + Refaire Przywróć - + Réinitialiser les conducteurs Przywróć trasy przewodów - + Affiche ou non la barre d'outils principale Pokazuje lub ukrywa główny pasek narzędzi - + Affiche ou non la barre d'outils Affichage Pokazuje lub ukrywa pasek narzędzi Widok - + Affiche ou non la barre d'outils Schéma Pokazuje lub ukrywa pasek narzędzi Schemat - + Affichage Widok - + Schéma Schemat - + Ajouter un champ de texte Wstaw pole tekstowe - + Aucune modification Bez zmian - + Affiche ou non la liste des modifications Pokazuje lub ukrywa listę zmian - + Éditer l'item sélectionné Edycja zaznaczonej pozycji - + Grouper les textes sélectionnés Grupowanie zaznaczonych tekstów - + Pivote les éléments et textes sélectionnés status bar tip Obraca zaznaczone elementy i teksty - + Pivote les textes sélectionnés à un angle précis status bar tip Obraca zaznaczone teksty o dowolny kąt - + Chercher/remplacer Znajdź/zastąp - + &Projet &Projekt - + &Récemment ouverts &Ostatnio otwarte - - + + Projet %1 enregistré dans le repertoire: %2. Projekt %1 zapisany w kataligu: %2. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Wydaje się, że plik, który próbujesz otworzyć, nie jest do odczytu. Dlatego też nie można go otworzyć. Sprawdź uprawnienia do plików. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Wydaje się, że projektu, który próbujesz otworzyć, nie można zapisać. Będzie on otwarty w trybie tylko do odczytu. - + en utilisant des onglets za pomocą kart - + en utilisant des fenêtres za pomocą okien - + Afficher les projets Pokaż projekty - + Propriétés du projet Właściwości projektu - + Nettoyer le projet Wyczyść projekt - - + + Échec de l'ouverture du projet message box title Projektu nie można otworzyć - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Wydaje się, że plik %1 nie jest plikiem projektu QElectroTech. Dlatego też nie można go otworzyć. @@ -6649,92 +6655,92 @@ Dostępne opcje: QElectroTech - + Annulations dock title Cofnij - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Kliknij wykonaną czynność z listy, aby powrócić do etapu edycji schematu po jej zastosowaniu - + Orienter les textes Orientacja tekstów - + Retrouver dans le panel Znajdź w panelu - + Ajouter une image Wstaw obraz - + Ajouter un sommaire Wstaw spis arkuszy - + Zoom sur le contenu Powiększenie zawartości - + Ferme l'application QElectroTech status bar tip Zamyka QElectroTech - + Annule l'action précédente status bar tip Cofa poprzednią akcję - + Restaure l'action annulée status bar tip Przywraca cofniętą akcję - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Umieszcza zaznaczone elementy w schowku - + Copie les éléments sélectionnés dans le presse-papier status bar tip Kopiuje zaznaczone elementy do schowka - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Odznacza zaznaczone elementy i zaznacza odznaczone elementy - + Retrouve l'élément sélectionné dans le panel status bar tip Wyszukuje zaznaczony element w panelu - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Przywraca trasy przewodów, niezależnie od zmian wprowadzonych przez użytkownika - + Création automatique de conducteur(s) Tool tip of auto conductor Automatyczne wstawianie przewodu (ów) @@ -6746,206 +6752,221 @@ Dostępne opcje: Projekty - + Collections Kolekcje - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Wstawia automatycznie przewód (y), jeżeli jest to możliwe - + Restaure le zoom par défaut status bar tip Przywraca domyślny poziom powiększenia - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Pokazuje otwarte projekty w oknach - + Ajouter une nomenclature Wstaw spis elementów - + Présente les différents projets ouverts des onglets status bar tip Pokazuje otwarte projekty w kartach - + Permet de sélectionner les éléments status bar tip Pozwala zaznaczać elementy - + Ajouter un plan de bornes Wstaw plan listwy zaciskowej - + Ajoute un champ de texte sur le folio actuel Wstaw pole tekstowe do bieżącego arkusza - + Ajoute une image sur le folio actuel Wstaw obraz do bieżącego arkusza - + Ajoute une ligne sur le folio actuel Wstaw linię do bieżącego arkusza - + Ajoute un rectangle sur le folio actuel Wstaw prostokąt do bieżącego arkusza - + Ajoute une ellipse sur le folio actuel Wstaw elipsę do aktualnego arkusza - + Ajoute une polyligne sur le folio actuel Wstaw wielokąt do bieżącego arkusza - + Ajoute un plan de bornier sur le folio actuel Wstaw plan listwy zaciskowej w bieżącym arkuszu - + Ajouter Wstawienie - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) Projekty QElectroTech (*.qet);;Pliki XML (*.xml);;Wszystkie pliki (*) - - + + Impossible d'ouvrir le fichier message box title Nie można otworzyć pliku - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Wydaje się, że plik %1 który próbujesz otworzyć nie istnieje. - + Ouverture du projet en lecture seule message box title Otwórz plik tylko do odczytu - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Podwójne kliknięcie zamyka kształt, kliknięcie prawym przyciskiem myszki cofa ostatni punkt - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Éditer l'élement edit element Edycja elementu - + Éditer le champ de texte edit text field Edycja pola tekstowego - + Éditer l'image edit image Edycja obrazu - + Éditer le conducteur edit conductor Edycja właściwości przewodu - + Éditer l'objet sélectionné edit selected item Edycja zaznaczonego objektu - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Wystąpił błąd podczas otwierania pliku %1. - + Active le projet « %1 » Aktywny projekt « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Błąd - + Dispose les fenêtres en mosaïque status bar tip Prezentuje okna w postaci mozaiki - + Dispose les fenêtres en cascade status bar tip Prezentuje okna w postaci kaskady - + Projet suivant Następny projekt - + Projet précédent Poprzedni projekt - + Active le projet suivant status bar tip Uaktywnia następny projekt - + Active le projet précédent status bar tip Uaktywnia poprzedni projekt @@ -7145,53 +7166,53 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s importuj element i zmień jego rozmiar - + Ajouter une ligne Wstaw linię - + Ajouter une ellipse Wstaw elipsę - + Ajouter un polygone Wstaw wielokąt - + Ajouter du texte Wstaw tekst - + Ajouter un arc de cercle Wstaw łuk - + Ajouter une borne Wstaw terminal - + Annuler Cofnij - + Refaire Przywróć - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>W przypadku braku terminala element nie może być połączony z innymi elementami za pomocą przewodów. - + Aucune modification Bez zmian @@ -7236,13 +7257,13 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Edytuj informacje autora - + Parties toolbar title Części - + Profondeur toolbar title Głębokość @@ -7258,12 +7279,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Edytuj właściwiści elementu - + Ajouter un champ texte dynamique Wstaw dynamiczne pole tekstowe - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Kliknij dwukrotnie aby zamknąć kształt, kliknij prawym klawiszem aby cofnąć ostatni punkt @@ -7300,7 +7321,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [tylko do odczytu] - + Éditeur d'éléments status bar message Edytor elementów @@ -7316,24 +7337,24 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title Brak terminala - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Błąd</b>:<br>Odsyłacze do arkuszy muszą zawierać jeden terminal.<br><b>Rozwiązanie</b>:<br>Sprawdź czy element zawiera tylko jeden terminal - + La vérification de cet élément a généré message box content Weryfikacja elementu zakończona - + %n erreur(s) errors @@ -7343,32 +7364,32 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et i - + Erreurs Błędy - + Absence de borne Brak terminala - + Ajouter un texte d'élément non éditable dans les schémas Dodaj nieedytowalny tekst elementu w schematach - + Ajouter un texte d'élément pouvant être édité dans les schémas Dodaj edytowalny tekst elementu w schematach - + %n avertissement(s) warnings %n ostrzeżeń @@ -7379,7 +7400,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description <b>%1</b>: %2 @@ -7398,21 +7419,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Nie można otworzyć pliku %1. - + Ce fichier n'est pas un document XML valide message box content Ten plik nie jest poprawnym dokumentem XML - + Erreur toolbar title Błąd @@ -7456,49 +7477,59 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Zbyt dużo elementów podstawowych, lista nie zostanie wygenerowana: %1 - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Avertissement Uwaga - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Importowanie dużego pliku dxf może zająć trochę czasu proszę czekać podczas importowania... - + Importer un élément à redimensionner importuj element i zmień jego rozmiar - + Éléments QElectroTech (*.elmt) Elementy QElectroTech (*.elmt) - + Impossible d'ouvrir le fichier message box title Nie można otworzyć pliku - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Wydaje się, że plik %1 który próbujesz otworzyć nie istnieje. - - - + + + Echec de l'enregistrement Zapisanie nie powidło się - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Zapisanie nie powiodło się, @@ -7517,42 +7548,42 @@ wymagane warunki nie zostały spełnione Elementy QElectroTech (*.elmt);;Pliki XML (*.xml);;Wszystkie pliki (*) - + Recharger l'élément dialog title Odśwież element - + Avertissements Ostrzeżenia - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Ten element został zmodyfikowany od ostatniego zapisu. Jeśli go odświeżysz, zmiany zostaną utracone. Czy na pewno chcesz odświeżyć ten element? - + Enregistrer sous dialog title Zapisz jako - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file Elementy QElectroTech (*.elmt) - + Enregistrer l'élément en cours ? dialog title Zapisać bieżący element? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Chcesz zapisać element %1 ? @@ -7560,22 +7591,22 @@ wymagane warunki nie zostały spełnione - - + + Élément inexistant. message box title Nieistniejący element. - + L'élément n'existe pas. message box content Element nie istnieje. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Wybrana ścieżka dostępu, nie prowadzi do elementu. @@ -7596,7 +7627,7 @@ wymagane warunki nie zostały spełnione &Wklej - + Ajouter un rectangle Wstaw prostokąt @@ -8136,7 +8167,7 @@ Co chcesz zrobić? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Uwaga: element został zapisany w nowszej wersji QElectroTech. @@ -9403,23 +9434,23 @@ Czy chcesz ją zastąpić? Tworzenie przewodów - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Aby zainstalować wtyczkę qet_tb_generator<br>Odwiedź:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Wymagany python 3.5 or above.<br><B><U> Pierwsza instalacja w Windows</B></U><br>1. Instalacja, wymagany, python 3.5 lub nowszy<br> Odwiedź :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Aktualizacja w Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> niepewne Aby zainstalować wtyczkę qet_tb_generator<br>Odwiedź:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> Pierwsza instalacja na macOSX</B></U><br>1. Zailstaluj, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Uruchom Profile.command script<br>ponieważ program używa zakodowanego na stałe PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Aby zainstalować wtyczkę qet_tb_generator<br>Odwiedź:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Wymagany python 3.5 lub nowszy.<br><br><B><U> Pierwsza instalacja w systemie Linux</B></U><br>1. sprawdź czy zainstalowano pip3 installed: pip3 --version<br>Jeżeli nie zainstalij przez: sudo apt-get install python3-pip<br>2. Zainstaluj program: sudo pip3 install qet_tb_generator<br>3. Uruchom program: qet_tb_generator<br><br><B><U> Aktualizacja w systemie Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Błąd podczas uruchamiania wtyczki qet_tb_generator @@ -9576,51 +9607,51 @@ Czy chcesz ją zastąpić? Sortuj listwę zaciskową %1 - - + + Générique generic terminal element type Ogólne - + Fusible fuse terminal element type Bezpiecznikowy - + Sectionable sectional terminal element type Łączeniowy - + Diode diode terminal element type Diodowy - + Terre ground terminal element type Uziemiający - - + + Générique generic terminal element function Ogólny - + Phase phase terminal element function Fazowy - + Neutre neutral terminal element function Neutralny @@ -9651,7 +9682,7 @@ Czy chcesz ją zastąpić? Otwórz element - + Importer un fichier dxf Importuj plik dxf @@ -14378,92 +14409,92 @@ Długość maksymalna: %2px WiringListExport - - + + Erreur Błąd - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header - + Couleur du fil Wiring list CSV header Kolor przewodu - + Section du fil Wiring list CSV header Przekrój przewodu - + Fonction Wiring list CSV header Funkcja - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_pt.ts b/lang/qet_pt.ts index fd4b35ef1..db832e481 100644 --- a/lang/qet_pt.ts +++ b/lang/qet_pt.ts @@ -1696,7 +1696,7 @@ form - + Modifier la police d'un champ texte @@ -1721,17 +1721,17 @@ form - + Modifier l'alignement d'un champ texte - + Modifier la couleur d'un champ texte - + Modifier la conservation de l'angle @@ -2029,7 +2029,7 @@ form - + Simple Simples @@ -2064,93 +2064,98 @@ form - - Normalement ouvert + + Définition de conducteur - Normalement fermé + Normalement ouvert - Inverseur + Normalement fermé + Inverseur + + + + Other - + Puissance - + Temporisé travail - + Temporisé repos - + Temporisé travail & repos - + Bobine - + Organe de protection - + Commutateur / bouton - - + + Générique - + Fusible - + Séctionnable - + Diode - + Terre - + Phase - + Neutre @@ -2158,90 +2163,90 @@ form ElementPropertiesWidget - + Général Geral - + Élement - + Nom : %1 - + Folio : %1 - + Type : %1 Escreva : %1 - + Sous-type : %1 - + Position : %1 - + Rotation : %1° - + Dimensions : %1*%2 - + Bornes : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 - + Retrouver dans le panel Encontrar no painel - + Éditer l'élément Editar elemento @@ -2707,60 +2712,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Cartouches embarqués cartuchos fornecidos - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Faça duplo clique para reduzir ou expandir a colecção de molduras fornecidas - + Double-cliquez pour réduire ou développer ce projet Status tip Faça duplo clique para reduzir ou expandir o projecto - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Faça duplo clique para reduzir ou expandir a colecção de molduras QElectroTech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Esta é a colecção de molduras fornecida com o QElectroTech. É um componente do sistema, como tal não é personalizável. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Faça duplo clique para reduzir ou expandir a sua colecção pessoal de molduras - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Esta é a sua colecção pessoal de molduras -- use-a para criar, guardar e editar as suas próprias molduras. @@ -2769,97 +2774,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Éditer ce modèle Editar o modelo - + Supprimer ce modèle Apagar o modelo - + Fermer ce projet Fechar este projecto - + Ouvrir le dossier correspondant - + Copier le chemin - + Basculer vers ce projet - + Propriétés du projet Propriedades do projecto - + Propriétés du folio - + Ajouter un folio - + Supprimer ce folio - + Remonter ce folio - + Abaisser ce folio - + Remonter ce folio x10 - + Remonter ce folio x100 - + Remonter ce folio au debut - + Abaisser ce folio x10 - + Abaisser ce folio x100 - + Nouveau modèle Novo modelo - + Filtrer @@ -5665,17 +5670,17 @@ form ProjectView - + Supprimer les éléments inutilisés dans le projet Apagar os elementos não usados neste projecto - + Supprimer les catégories vides Apagar as categorias vazias - + Projet en lecture seule message box title Projecto em modo de leitura @@ -5704,30 +5709,24 @@ Voulez-vous enregistrer les modifications ? - + Supprimer le folio ? message box title - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - - - - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Este projecto está em modo de leitura. Não pode ser limpo. - + Supprimer les modèles de cartouche inutilisés dans le projet Remover os modelos de moldura não utilizados no projecto - + Nettoyer le projet window title Limpar o projecto @@ -5739,43 +5738,49 @@ Voulez-vous enregistrer les modifications ? Gravar como - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + Ajouter un folio - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> - + Projet window title for a project-less ProjectView Projecto @@ -6063,663 +6068,664 @@ Opções disponiveis: QETDiagramEditor - + Afficha&ge Ve&r - + Affiche ou non le panel d'appareils Mostra ou não o painel de elementos - + Ajouter une colonne Adicionar uma coluna - + &Cascade &Cascata - + C&oller &Colar - + Cop&ier &Copiar - + Co&uper Cort&ar - + Désélectionner tout Seleccionar nada - + &Édition &Editar - + Enlever une colonne Eliminar uma coluna - + &Enregistrer &Guardar - + Enregistrer sous Guardar como - + E&xporter &Exportar - + Fe&nêtres Ja&nelas - + &Fermer &Fechar - + &Fichier &Ficheiro - + Imprimer Imprimir - + Inverser la sélection Inverter a selecção - + Mode Selection Modo de selecção - + Mode Visualisation Modo de visualização - + &Mosaïque &Mosaico - + Collections - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip - + Exporte le folio courant dans un autre format status bar tip - + Imprime un ou plusieurs folios du projet courant status bar tip - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + Place les éléments du presse-papier sur le folio status bar tip - + Création automatique de conducteur(s) Tool tip of auto conductor - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor - + Couleur de fond blanc/gris Tool tip of white/grey background button - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button - + Afficher la grille - + Affiche ou masque la grille des folios - + Propriétés du folio - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip - + Ajouter un folio - + + Supprimer le folio - + Exporter au format CSV - + Ajouter une nomenclature - + Ajouter un sommaire - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers - + Exporter la liste des noms de conducteurs - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet - + Permet de visualiser le folio sans pouvoir le modifier status bar tip - + &Nouveau &Novo - + Crée un nouveau projet status bar tip - + Ouvre un projet existant status bar tip - + Ferme le projet courant status bar tip - + Enregistre le projet courant et tous ses folios status bar tip - + Enregistre le projet courant avec un autre nom de fichier status bar tip - + Ajouter une ligne Add row Adicionar uma linha - + Enlever une ligne Remove row Apagar uma linha - + Ajoute une colonne au folio status bar tip - + Enlève une colonne au folio status bar tip - + Agrandit le folio en hauteur status bar tip - + Rétrécit le folio en hauteur status bar tip - + Éditer l'item sélectionné - + Grouper les textes sélectionnés - + Enlève les éléments sélectionnés du folio status bar tip - + Retrouve l'élément sélectionné dans le panel status bar tip - + Sélectionne tous les éléments du folio status bar tip - + Désélectionne tous les éléments du folio status bar tip - + Zoom sur le contenu - + Agrandit le folio status bar tip - + Rétrécit le folio status bar tip - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre - + Adapte le zoom exactement sur le cadre du folio status bar tip - + Ajouter une image - + Ajouter une ligne Draw line Adicionar uma linha - + Ajouter un rectangle Adicionar um rectângulo - + Ajouter une ellipse Adicionar uma elipse - + Ajouter une polyligne - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel - + Ajoute une image sur le folio actuel - + Ajoute une ligne sur le folio actuel - + Ajoute un rectangle sur le folio actuel - + Ajoute une ellipse sur le folio actuel - + Ajoute une polyligne sur le folio actuel - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer - + Ajouter - + Profondeur toolbar title Profundidade - + Outils Ferramentas - + &Ouvrir &Abrir - + Ouvrir un fichier Abrir um ficheiro - + Pas de zoom Sem zoom - + Pivoter Rodar - + &Quitter &Sair - + Supprimer Apagar - + Tout sélectionner Seleccionar tudo - + Zoom adapté Ajustar à janela - + Zoom arrière Diminuir Zoom - + Zoom avant Aumentar Zoom - + Annuler Desfazer - + Refaire Refazer - + Réinitialiser les conducteurs Reinicializar os condutores - + &Récemment ouverts - + Affiche ou non la barre d'outils principale Mostra ou esconde a barra de ferramentas principal - + Affiche ou non la barre d'outils Affichage Mostra ou esconde a barra de ferramentas Mostrar - + Affiche ou non la barre d'outils Schéma Mostra ou esconde a barra de ferramentas Esquema - + Affichage mostra - + Schéma Esquema - + Ajouter un champ de texte Adicionar um campo de texto - + Aucune modification Sem modificações - + Affiche ou non la liste des modifications Mostra ou esconde a lista de acções modificadas - + Pivote les éléments et textes sélectionnés status bar tip Roda os elementos e textos seleccionados - + Pivote les textes sélectionnés à un angle précis status bar tip Roda os textos seleccionados com ângulo definido - + &Projet &Projecto - - + + Projet %1 enregistré dans le repertoire: %2. - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. A leitura do ficheiro que está a tentar abrir não parece ser possível e, por isso, não pode ser aberto. Por favor verifique as permissões do ficheiro. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. O projecto que está a tentar abrir não parece ter prmissões de escrita. Será aberto em modo só de leitura. - + en utilisant des onglets Usar separadores - + en utilisant des fenêtres usar janelas - + Afficher les projets Mostra os projectos - + Propriétés du projet Propriedades do projecto - + Nettoyer le projet Limpar o projecto - - + + Échec de l'ouverture du projet message box title Não é possível abrir o projecto - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content O ficheiro %1 não é um ficheiro de projecto QElectroTech. Por esse motivo não é possível abrir o ficheiro. @@ -6737,65 +6743,65 @@ Opções disponiveis: QElectroTech - + Annulations dock title Desfazer - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Clicar sobre uma acção para voltar atrás na edição do seu esquema - + Orienter les textes Orientar os textos - + Retrouver dans le panel Encontrar no painel - + Ferme l'application QElectroTech status bar tip Fecha QElectroTech - + Annule l'action précédente status bar tip Anula a acção anterior - + Restaure l'action annulée status bar tip Restaura a acção anulada - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Transfere os elementos seleccionados para a área de transferência - + Copie les éléments sélectionnés dans le presse-papier status bar tip Copia os elementos seleccionados para a área de transferência - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Anula a selecção dos elementos seleccionados e selecciona os elementos não seleccionados anteriormente - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Calcula novamente os caminhos dos condutores sem ter em conta as modificações @@ -6807,140 +6813,155 @@ Opções disponiveis: Projectos - + Restaure le zoom par défaut status bar tip Restaura o Zoom padrão - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Apresenta os projectos abertos em janelas - + Présente les différents projets ouverts des onglets status bar tip Apresenta os projectos abertos em separadores - + Permet de sélectionner les éléments status bar tip Permite seleccionar elementos - - + + Impossible d'ouvrir le fichier message box title Não é possível abrir o ficheiro - + Ouverture du projet en lecture seule message box title Abrir o ficheiro em modo só de leitura - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe - + Éditer l'élement edit element - + Éditer le champ de texte edit text field - + Éditer l'image edit image - + Éditer le conducteur edit conductor - + Éditer l'objet sélectionné edit selected item - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content - + Active le projet « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Erro - + Dispose les fenêtres en mosaïque status bar tip Dispôe as janelas em mosaico - + Dispose les fenêtres en cascade status bar tip Dispôe as janelas em cascata - + Projet suivant Projecto seguinte - + Projet précédent Projecto anterior - + Active le projet suivant status bar tip Activa o projecto seguinte - + Active le projet précédent status bar tip Activa o projecto anterior @@ -7149,47 +7170,47 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Ajouter une ligne Adicionar uma linha - + Ajouter une ellipse Adicionar uma elipse - + Ajouter un polygone Adicionar um polígono - + Ajouter du texte Adicionar texto - + Ajouter un arc de cercle Adicionar um arco - + Ajouter une borne Adicionar um terminal - + Annuler Desfazer - + Refaire Refazer - + Aucune modification No modification @@ -7234,13 +7255,13 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Editar as informações sobre o autor - + Parties toolbar title Partes - + Profondeur toolbar title Profundidade @@ -7278,7 +7299,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [só leitura] - + Éditeur d'éléments status bar message Editor de elementos @@ -7293,13 +7314,13 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title Borne em falta - + Absence de borne Borne em falta @@ -7317,21 +7338,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Não é possível abrir o ficheiro %1. - + Ce fichier n'est pas un document XML valide message box content Este ficheiro não é um documento XML válido - + Erreur toolbar title Erro @@ -7375,24 +7396,34 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + La vérification de cet élément a généré message box content - + %n erreur(s) errors @@ -7401,12 +7432,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et - + %n avertissement(s) warnings @@ -7415,79 +7446,79 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description - + Erreurs - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Ajouter un champ texte dynamique - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Ajouter un texte d'élément non éditable dans les schémas - + Ajouter un texte d'élément pouvant être édité dans les schémas - - - + + + Echec de l'enregistrement - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides - + Avertissement Aviso - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) Elementos QElectroTech (*.elmt) - + Impossible d'ouvrir le fichier message box title Não é possível abrir o ficheiro @@ -7505,42 +7536,42 @@ veuillez patienter durant l'import... Elementos QElectroTech (*.elmt);;XML files (*.xml);;All files (*) - + Recharger l'élément dialog title Recarregar o elemento - + Avertissements Avisos - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Este elemento foi modificado desde a última vez que o guardou. Se o recarregar as alterações serão perdidas. Tem a certeza que deseja recarregar este elemento? - + Enregistrer sous dialog title Gravar como - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file Elementos QElectroTech (*.elmt) - + Enregistrer l'élément en cours ? dialog title Guardar o elemento actual? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Deseja gravar o elemento %1? @@ -7548,22 +7579,22 @@ veuillez patienter durant l'import... - - + + Élément inexistant. message box title Elemento não existente. - + L'élément n'existe pas. message box content O elemento não existe. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content O caminho virtual escolhido não corresponde a um elemento. @@ -7584,7 +7615,7 @@ veuillez patienter durant l'import... &Colar - + Ajouter un rectangle Adicionar um rectângulo @@ -8119,7 +8150,7 @@ Que désirez vous faire ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Aviso: o elemento foi guardado usando uma versão mais recente de QElectroTech. @@ -8888,7 +8919,7 @@ Que désirez vous faire ? - + Importer un fichier dxf @@ -8996,72 +9027,72 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type - - + + Générique generic terminal element function - + Phase phase terminal element function - + Neutre neutral terminal element function - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin @@ -14264,92 +14295,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur Erro - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_pt_BR.ts b/lang/qet_pt_BR.ts index 0f0f1ebf4..75541fb38 100644 --- a/lang/qet_pt_BR.ts +++ b/lang/qet_pt_BR.ts @@ -1681,17 +1681,17 @@ Nota: Estas opções NÃO permitem ou bloqueiam a autonumeração, apenas a sua - + Modifier la police d'un champ texte Alterar a fonte de um campo de texto - + Modifier la couleur d'un champ texte Editar a cor de um campo do texto - + Modifier la conservation de l'angle Alterar conservação de ângulo @@ -1716,7 +1716,7 @@ Nota: Estas opções NÃO permitem ou bloqueiam a autonumeração, apenas a sua Alterar fonte do texto - + Modifier l'alignement d'un champ texte Alterar o alinhamento de um campo de texto @@ -2008,7 +2008,7 @@ Nota: Estas opções NÃO permitem ou bloqueiam a autonumeração, apenas a sua - + Simple Simples @@ -2043,93 +2043,98 @@ Nota: Estas opções NÃO permitem ou bloqueiam a autonumeração, apenas a sua Miniatura - + + Définition de conducteur + + + + Normalement ouvert Normalmente aberto - + Normalement fermé Normalmente fechado - + Inverseur Inversor - + Other Outro - + Puissance Contato de Potência - + Temporisé travail Temporizado ao trabalho - + Temporisé repos Temporizado ao repouso - + Temporisé travail & repos Temporizado ao trabalho - + Bobine Bobina - + Organe de protection Elemento de proteção - + Commutateur / bouton Comutador / botão - - + + Générique Genérico - + Fusible Fusível - + Séctionnable Selecionável - + Diode Diodo - + Phase Fase - + Neutre Neutro - + Terre Terra @@ -2137,99 +2142,99 @@ Nota: Estas opções NÃO permitem ou bloqueiam a autonumeração, apenas a sua ElementPropertiesWidget - + Général Geral - + Élement Elemento - + Nom : %1 Nome: %1 - + Folio : %1 Página: %1 - + Type : %1 Tipo: %1 - + Sous-type : %1 Subtipo: %1 - + Position : %1 Posição: %1 - + Rotation : %1° Rotação: %1° - + Dimensions : %1*%2 Dimensões: %1*%2 - + Bornes : %1 Terminais: %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Localização: %1 - + Retrouver dans le panel Procurar no painel - + Éditer l'élément Editar o elemento @@ -2694,60 +2699,60 @@ Todos os elementos e as sub pastas contidas nesta pasta serão excluídos. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip Dê um duplo clique para reduzir ou expandir o projeto - + Cartouches embarqués Blocos de legenda incorporados - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Dê um duplo clique para reduzir ou expandir a coleção de blocos de legenda - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Arraste e solte este modelo de bloco de legenda sobre uma página para aplicá-lo. - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Dê um duplo clique para reduzir ou expandir a coleção de blocos de legenda do QElectroTech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Esta é a coleção de blocos de legenda fornecidos com o QElectroTech. Instalado como um componente do sistema, você normalmente não pode personalizá-lo. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip Clique em ambos os lados para recolher ou expandir a coleção de blocos da empresa - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Esta é a coleção de blocos da empresa – use para criar, armazenar e editar seus próprios blocos. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Dê um duplo clique para reduzir ou expandir a sua coleção pessoal de blocos de legenda - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Esta é a sua coleção pessoal de blocos de legenda, utilize-a para criar, guardar e editar os seus próprios blocos de legenda. @@ -2756,97 +2761,97 @@ Todos os elementos e as sub pastas contidas nesta pasta serão excluídos. ElementsPanelWidget - + Ouvrir le dossier correspondant Abrir a pasta correspondente - + Copier le chemin Copiar o caminho - + Basculer vers ce projet Alternar para este projeto - + Fermer ce projet Fechar este projeto - + Propriétés du projet Propriedades do projeto - + Propriétés du folio Propriedades da página - + Ajouter un folio Acrescentar uma página - + Supprimer ce folio Excluir esta página - + Remonter ce folio Mover esta página acima - + Abaisser ce folio Mover esta página abaixo - + Remonter ce folio x10 Mover esta página acima x10 - + Remonter ce folio x100 Mover esta página acima x100 - + Remonter ce folio au debut Mover esta página ao início - + Abaisser ce folio x10 Mover esta página abaixo x10 - + Abaisser ce folio x100 Mover esta página abaixo x100 - + Nouveau modèle Novo modelo - + Éditer ce modèle Editar o modelo - + Supprimer ce modèle Excluir o modelo - + Filtrer Filtro @@ -5670,88 +5675,88 @@ Você deseja salvar as alterações? Nenhum projeto ativo - + Supprimer le folio ? message box title Excluir esta página? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - Você tem certeza de que deseja excluir esta página do projeto? Esta mudança é irreversível. + - + Projet en lecture seule message box title Projeto em modo somente de leitura - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Este projeto está em modo somente de leitura. Portanto, não é possível limpá-lo. - + Supprimer les modèles de cartouche inutilisés dans le projet Excluir os modelos de blocos de legenda não utilizados no projeto - + Supprimer les éléments inutilisés dans le projet Excluir elementos não utilizados dentro deste projeto - + Supprimer les catégories vides Excluir as categorias vazias - + Nettoyer le projet window title Limpar o projeto - + Ajouter un folio Acrescentar uma página - + Revenir au debut du projet Volte para o início do projeto - + Aller à la fin du projet Ir para o final do projeto - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Este projeto não contém nenhuma página - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Abra o projeto atual...</b><br/>Crie as guias da página:</p> - + Projet window title for a project-less ProjectView Projeto @@ -6060,866 +6065,882 @@ Opções disponíveis: Projetos - + Collections Coleções - + Aucune modification Sem modificações - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Clique sobre uma ação para desfazer as alterações que você efetuou no seu esquema - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Este painel lista as diferentes ações efetuadas sobre a página atual. Clicar sobre uma ação permite retornar ao estado do esquema logo após sua aplicação. - + Annulations dock title Desfazer - + E&xporter E&xportar - + Imprimer Imprimir - + &Quitter Sai&r - + Annuler Desfazer - + Refaire Refazer - + Annule l'action précédente status bar tip Desfaz a ação anterior - + Restaure l'action annulée status bar tip Refaz a ação anulada - + Co&uper Cor&tar - + Cop&ier Co&piar - + C&oller C&olar - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Transfere os elementos selecionados para a área de transferência - + Copie les éléments sélectionnés dans le presse-papier status bar tip Copia os elementos selecionados para a área de transferência - + Place les éléments du presse-papier sur le folio status bar tip Cola os elementos da área de transferência na página - + Réinitialiser les conducteurs Reinicializar os condutores - + Création automatique de conducteur(s) Tool tip of auto conductor Criação automática de fio(s) - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Utilizar a criação automática de fios quando possível - + Couleur de fond blanc/gris Tool tip of white/grey background button Cor de fundo branco/cinza - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Exibe a cor de fundo da páginas em branco ou cinza - + Afficher la grille Exibir a grade - + Affiche ou masque la grille des folios Mostrar ou ocultar a grade das páginas - + Propriétés du folio Propriedades da página - + Propriétés du projet Propriedades do projeto - + Ajouter un folio Acrescentar uma página - + + Supprimer le folio Excluir esta página - + Nettoyer le projet Limpar o projeto - + Ajouter un sommaire Adicionar um resumo - + en utilisant des onglets Usando abas - + en utilisant des fenêtres Usando janelas - + Mode Selection Modo de seleção - + Mode Visualisation Modo de visualização - + &Mosaïque &Mosaico - + Exporter en pdf Exportar em pdf - + Exporte un ou plusieurs folios du projet courant status bar tip Exportar uma ou mais páginas do projeto atual - + Exporter au format CSV Exportar em formato CSV - + Gestionnaire de borniers (DEV) Gerenciador de régua de terminais (DEV) - + Lancer le plugin de création de borniers Iniciar o plugin de criação de terminal - + Exporter la liste des noms de conducteurs Exportar a lista de nomes dos condutores - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet Exportar o banco de dados interno do projeto - + &Cascade &Cascata - + Projet suivant Projeto seguinte - + Projet précédent Projeto anterior - + &Nouveau &Novo - + &Ouvrir &Abrir - + &Enregistrer &Salvar - + Enregistrer sous Salvar como - + &Fermer &Fechar - + Crée un nouveau projet status bar tip Cria um novo projeto - + Ouvre un projet existant status bar tip Abre um projeto existente - + Ferme le projet courant status bar tip Fecha o projeto atual - + Enregistre le projet courant et tous ses folios status bar tip Salva o projeto atual e todas as suas páginas - + Enregistre le projet courant avec un autre nom de fichier status bar tip Salva o projeto atual com outro nome de arquivo - + Ajouter une colonne Adicionar uma coluna - + Enlever une colonne Eliminar uma coluna - + Ajouter une ligne Add row Adicionar uma linha - + Enlever une ligne Remove row Excluir uma linha - + Ajoute une colonne au folio status bar tip Adiciona uma coluna à página - + Enlève une colonne au folio status bar tip Elimina uma coluna da página - + Agrandit le folio en hauteur status bar tip Aumenta a altura da página - + Rétrécit le folio en hauteur status bar tip Diminui a altura da página - + Supprimer Excluir - + Pivoter Girar - + Orienter les textes Escolha a orientação dos textos - + Retrouver dans le panel Procurar no painel - + Éditer l'item sélectionné Editar o item selecionado - + Enlève les éléments sélectionnés du folio status bar tip Remove os elementos selecionados da página - + Pivote les éléments et textes sélectionnés status bar tip Gira os elementos e textos selecionados - + Pivote les textes sélectionnés à un angle précis status bar tip Gira os textos selecionados para um ângulo definido - + Retrouve l'élément sélectionné dans le panel status bar tip Procurar o elemento selecionado no painel - + Tout sélectionner Selecionar tudo - + Désélectionner tout Desmarcar todos - + Inverser la sélection Inverter a seleção - + Sélectionne tous les éléments du folio status bar tip Seleciona todos os elementos da página - + Désélectionne tous les éléments du folio status bar tip Desmarca todos os elementos da página - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Alterna a seleção dos elementos - + Zoom avant Aumentar Zoom - + Zoom arrière Diminuir Zoom - + Zoom sur le contenu Zoom sobre o conteúdo - + Zoom adapté Ajustar à janela - + Pas de zoom Resetar o zoom - + Agrandit le folio status bar tip Aumenta a página - + Rétrécit le folio status bar tip Diminui a página - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Ajusta o zoom para exibir toda a página independentemente das bordas - + Adapte le zoom exactement sur le cadre du folio status bar tip Ajusta o zoom exatamente sobre as bordas da página - + Restaure le zoom par défaut status bar tip Restaura o zoom padrão - + Ajouter un champ de texte Adicionar um campo de texto - + Ajouter une image Adicionar uma imagem - + Ajouter une ligne Draw line Adicionar uma linha - + Ajouter un rectangle Adicionar um retângulo - + Ajouter une ellipse Adicionar uma elipse - + Ajouter une polyligne Adicionar uma linha poligonal - + Exporte le folio courant dans un autre format status bar tip Exportar a página atual em outro formato - + Imprime un ou plusieurs folios du projet courant status bar tip Imprimir uma ou mais páginas do projeto atual - + Ferme l'application QElectroTech status bar tip Fechar o aplicativo QElectroTech - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Resetar os caminhos dos condutores ignorando as modificações do usuário - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Edite as propriedades da página (dimensões, informações do bloco de legenda, propriedades dos condutores...) - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Exibe os vários projetos abertos em janelas - + Présente les différents projets ouverts des onglets status bar tip Exibe os vários projetos abertos em abas - + Permet de sélectionner les éléments status bar tip Permite selecionar elementos - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Permite visualizar a página, porém sem poder editá-la - + Dispose les fenêtres en mosaïque status bar tip Dispõe as janelas lado a lado - + Ajouter une nomenclature Adicionar lista de nomes - + Dispose les fenêtres en cascade status bar tip Dispõe as janelas em cascata - + Active le projet suivant status bar tip Ativa o próximo projeto - + Active le projet précédent status bar tip Ativa o projeto anterior - + Grouper les textes sélectionnés Agrupar textos selecionados - + Ajouter un plan de bornes Adicionar um plano de terminal - + Ajoute un champ de texte sur le folio actuel Adiciona um campo de texto a página atual - + Ajoute une image sur le folio actuel Adiciona uma imagem a página atual - + Ajoute une ligne sur le folio actuel Adiciona uma linha a página atual - + Ajoute un rectangle sur le folio actuel Adiciona um retângulo a página atual - + Ajoute une ellipse sur le folio actuel Adiciona uma elipse a página atual - + Ajoute une polyligne sur le folio actuel Adiciona uma polilinha na página atual - + Ajoute un plan de bornier sur le folio actuel Adiciona um plano de bloco terminal na folha atual - + Chercher/remplacer Localizar / substituir - + Outils Ferramentas - + Affichage Exibir - + Schéma Esquema - + Ajouter Adicionar - + Profondeur toolbar title Profundidade - + &Fichier Ar&quivo - + &Édition &Editar - + &Projet &Projeto - + Afficha&ge E&xibir - + Fe&nêtres Ja&nelas - + &Récemment ouverts Abertos &recentemente - + Affiche ou non la barre d'outils principale Alterna a exibição da barra de ferramentas "Principal" - + Affiche ou non la barre d'outils Affichage Alterna a exibição da barra de ferramentas "Exibir" - + Affiche ou non la barre d'outils Schéma Alterna a exibição da barra de ferramentas "Esquema" - + Affiche ou non le panel d'appareils Alterna a exibição do painel de elementos - + Affiche ou non la liste des modifications Alterna a exibição da lista de alterações - + Afficher les projets Exibir os projetos - - + + Projet %1 enregistré dans le repertoire: %2. Projeto %1 salvo na pasta: %2. - + Ouvrir un fichier Abrir um arquivo - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) Projetos QElectroTech (*.qet);;Arquivos XML (*.xml);;Todos os arquivos (*) - - + + Impossible d'ouvrir le fichier message box title Não é possível abrir o arquivo - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Aparentemente o arquivo %1 que você está tentando abrir não existe. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Aparentemente o arquivo que você está tentando abrir não é acessível para leitura. Portanto, é impossível abri-lo. Por favor, verifique as permissões do arquivo. - + Ouverture du projet en lecture seule message box title Abrir o projeto em modo somente de leitura - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Aparentemente o projeto que você está tentando abrir não é acessível para escrita. Portanto ele será aberto em modo somente de leitura. - - + + Échec de l'ouverture du projet message box title Não é possível abrir o projeto - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Parece que o arquivo %1 não é um arquivo de projeto QElectroTech. Portanto, ele não pode ser aberto. - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Clique duas vezes para completar a forma, clique com o botão direito para cancelar o último ponto - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe Grupo - + Éditer l'élement edit element Editar o elemento - + Éditer le champ de texte edit text field Editar o campo de texto - + Éditer l'image edit image Editar a imagem - + Éditer le conducteur edit conductor Editar o fio - + Éditer l'objet sélectionné edit selected item Editar o objeto selecionado - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Ocorreu um erro ao abrir o arquivo %1. - + Active le projet « %1 » Ativar o projeto « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Erro @@ -7163,17 +7184,17 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Editar as propriedades do elemento - + Annuler Desfazer - + Refaire Refazer - + Profondeur toolbar title Profundidade @@ -7199,52 +7220,52 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Resetar o zoom - + Ajouter une ligne Adicionar uma linha - + Ajouter un rectangle Adicionar um retângulo - + Ajouter une ellipse Adicionar uma elipse - + Ajouter un polygone Adicionar um polígono - + Ajouter du texte Adicionar texto - + Ajouter un arc de cercle Adicionar um arco - + Ajouter une borne Adicionar um terminal - + Ajouter un champ texte dynamique Adicione um campo de texto dinâmico - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Clique duas vezes para completar a forma, clique com o botão direito para cancelar o último ponto - + Parties toolbar title Partes @@ -7282,12 +7303,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [somente leitura] - + Aucune modification Sem modificações - + Éditeur d'éléments status bar message Editor de elementos @@ -7302,35 +7323,35 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title Sem terminais - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>Na ausência de terminais, o elemento não poderá ser conectado a outros elementos por meio de fios. - + Absence de borne Sem terminais - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Erro</b>:<br>Os relatórios de página devem ter um único terminal.<br><b>Solução</b>:<br>Verifique se o elemento tem somente um único terminal - + La vérification de cet élément a généré message box content Verificação deste elemento gerado - + %n erreur(s) errors @@ -7339,23 +7360,23 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et e - + <b>%1</b> : %2 warning title: warning description <b>%1</b>: %2 - + Erreurs Erros - + Avertissements Avisos @@ -7373,21 +7394,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Não é possível abrir o arquivo %1. - + Ce fichier n'est pas un document XML valide message box content Este arquivo não é um documento XML válido - + Erreur toolbar title Erro @@ -7431,39 +7452,49 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Ajouter un texte d'élément non éditable dans les schémas Adicionar texto de elemento não editável em diagramas - + Ajouter un texte d'élément pouvant être édité dans les schémas Adicione texto do elemento que pode ser editado em diagramas - + Avertissement Aviso - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... A importação de um dxf grande pode levar tempo aguarde enquanto importa... - + Importer un élément à redimensionner Importar um elemento para redimensionar - + Éléments QElectroTech (*.elmt) Elementos QElectroTech (*.elmt) - + %n avertissement(s) warnings @@ -7472,64 +7503,64 @@ aguarde enquanto importa... - + Impossible d'ouvrir le fichier message box title Não é possível abrir o arquivo - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Aparentemente o arquivo %1 que você está tentando abrir não existe. - + Recharger l'élément dialog title Recarregar o elemento - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Este elemento foi alterado desde que foi salvo pela última vez. Se você recarregar, essas alterações serão perdidas. Você realmente quer recarregar o elemento? - - - + + + Echec de l'enregistrement Falha ao salvar - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Falha ao salvar, as condições não são válidas - + Enregistrer sous dialog title Salvar como - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file Elementos QElectroTech (*.elmt) - + Enregistrer l'élément en cours ? dialog title Salvar o elemento atual? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Deseja salvar o elemento %1? @@ -7549,22 +7580,22 @@ as condições não são válidas - - + + Élément inexistant. message box title Elemento inexistente. - + L'élément n'existe pas. message box content Este elemento não existe. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content O caminho virtual escolhido não corresponde a um elemento. @@ -8608,7 +8639,7 @@ O que você deseja fazer? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Aviso: o elemento foi salvo por uma versão mais recente do QElectroTech. @@ -9332,22 +9363,22 @@ Deseja substituí-lo? Criação do condutor - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Para instalar o plugin qet_tb_generator - Visite :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requer python 3.5 ou superior.<br><B><U> Primeira instalação no Windows</B></U><br>1. Instale, se necessário, python 3.5 ou superior<br>Visite :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U>Atualização no Windows</B></U> <br>python -m pip install --upgrade qet_tb_generator<br>>> o usuário pode iniciar em um terminal esse script neste diretório <br>C: \ users \ XXXX \ AppData \ Local \ Programas \ Python \ Python36-32 \ Scripts<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> Para instalar o plug-in qet_tb_generator<br>Acesse :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> Primeira instalação no macOSX</B></U><br>1. Instale, se necessário, apenas o pacote python 3.11, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2- macos11.pkg</a><br>2 Execute o script Profile.command<br>porque o programa usa PATH codificado para localização Plug-in qet-tb-generator <br> Visite:<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>como fazer</a><br>2. pip3 install qet_tb_generator<br><B><U> Atualização no macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Para instalar o plugin qet_tb_generator<br>Visite :<br><a> href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requer python 3.5 ou superior.<br><br><B><U> Primeira instalação no Linux</B></U><br>1. verifique se o pip3 está instalado: pip3 --version<br>Se não for instalado com: sudo apt-get install python3-pip<br>2. Instale o programa: sudo pip3 install qet_tb_generator<br>3. Execute o programa: qet_tb_generator<br><br><B><U>Atualizar no Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Erro ao abrir qet_tb_generator plugin @@ -9499,51 +9530,51 @@ Deseja substituí-lo? Ordenar bloco terminal %1 - - + + Générique generic terminal element type Genérico - + Fusible fuse terminal element type Fusível - + Sectionable sectional terminal element type Secionável - + Diode diode terminal element type Diodo - + Terre ground terminal element type Terra - - + + Générique generic terminal element function Genérico - + Phase phase terminal element function Fase - + Neutre neutral terminal element function Neutro @@ -9574,7 +9605,7 @@ Deseja substituí-lo? Abra um elemento - + Importer un fichier dxf Importar um arquivo dxf @@ -14293,92 +14324,92 @@ Comprimento máximo: %2px WiringListExport - - + + Erreur Erro - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header - + Couleur du fil Wiring list CSV header Cor do cabo - + Section du fil Wiring list CSV header Seção do cabo - + Fonction Wiring list CSV header Função - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_ro.ts b/lang/qet_ro.ts index 3cae46cc2..8779d085b 100644 --- a/lang/qet_ro.ts +++ b/lang/qet_ro.ts @@ -1675,7 +1675,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte @@ -1700,17 +1700,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier l'alignement d'un champ texte - + Modifier la couleur d'un champ texte - + Modifier la conservation de l'angle @@ -2002,7 +2002,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple Simplu @@ -2037,93 +2037,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + + Définition de conducteur + + + + Normalement ouvert Normal deschis - + Normalement fermé Normal închis - + Inverseur Inversor - + Other - + Puissance Putere - + Temporisé travail Comutare temporizată - + Temporisé repos Temporizare pauză - + Temporisé travail & repos - + Bobine Bobină - + Organe de protection Organ de protecție - + Commutateur / bouton - - + + Générique - + Fusible - + Séctionnable - + Diode - + Phase Faze - + Neutre Neutru - + Terre Împământare @@ -2131,90 +2136,90 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général General - + Élement - + Nom : %1 - + Folio : %1 - + Type : %1 Tip : %1 - + Sous-type : %1 - + Position : %1 - + Rotation : %1° - + Dimensions : %1*%2 - + Bornes : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 - + Retrouver dans le panel Găsește în panou - + Éditer l'élément Editare element @@ -2679,60 +2684,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Cartouches embarqués Cartușe incluse - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Click dublu pentru a restrânge sau extinde această colecție de cartușe inclusă - + Double-cliquez pour réduire ou développer ce projet Status tip Click dublu pentru a restrânge sau expanda proiectul - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Click-dublu pentru a restrânge sau extinde colecția de cartușe QElectrotech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Aceasta este colecția de cartușe furnizată împreună cu QElectroTech. Instalată ca o componentă de sistem, în mod normal nu se poate personaliza. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Click-dublu pentru a restrânge sau expanda propria colecție de cartușe - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Aceasta este colecția dumneavoastră personalizată de cartușe -- utilizați-o pentru crearea, stocarea și editarea propriilor cartușe. @@ -2741,97 +2746,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant Deschide dosarul corespunzător - + Copier le chemin Copiază calea întreagă - + Basculer vers ce projet Activează acest proiect - + Fermer ce projet Închide acest proiect - + Propriétés du projet Proprietățile proiectului - + Propriétés du folio - + Ajouter un folio - + Supprimer ce folio - + Remonter ce folio - + Abaisser ce folio - + Remonter ce folio x10 - + Remonter ce folio x100 - + Remonter ce folio au debut - + Abaisser ce folio x10 - + Abaisser ce folio x100 - + Nouveau modèle Model nou - + Éditer ce modèle Editează acest model - + Supprimer ce modèle Șterge acest model - + Filtrer @@ -5611,46 +5616,40 @@ Doriți să se salveze modificările ? - + Supprimer le folio ? message box title - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - - - - + Projet en lecture seule message box title Proiect deschis numai pentru citire - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Acest proiect este deschis numai pentru citire. Nu este posibil să fie curățat. - + Supprimer les modèles de cartouche inutilisés dans le projet Șterge modelele de cartuș neutilizate în proiect - + Supprimer les éléments inutilisés dans le projet Șterge elementele neutilizate din proiect - + Supprimer les catégories vides Șterge categoriile goale - + Nettoyer le projet window title Curăță proiectul @@ -5668,43 +5667,49 @@ Doriți să se salveze modificările ? nici un proiect activ - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + Ajouter un folio - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> - + Projet window title for a project-less ProjectView Proiect @@ -6003,363 +6008,378 @@ Opțiuni disponibile: QElectroTech - + Annulations dock title Anulări - + Aucune modification Nici o modificare - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Apăsați pe o acțiune pentru a reveni la modificările efectuate schemei - + &Nouveau &Nou - + &Ouvrir &Deschide - + &Fermer &Închide - + &Enregistrer &Salvează - + Enregistrer sous Salvează ca - + E&xporter E&xportă - + Imprimer Tipărește - + &Quitter &Termină - + Annuler Anulează - + Refaire Refă - + Co&uper Ta&ie - + Cop&ier Cop&iază - + C&oller Li&pește - + Ajouter une ligne Add row Adaugă o linie - + Enlever une ligne Remove row Elimină un rând - + Tout sélectionner Selectează tot - + Désélectionner tout Deselectează tot - + Inverser la sélection Inversează selecția - + Profondeur toolbar title Adâncime - + Supprimer Șterge - + Pivoter Rotește - + Orienter les textes Orientare texte - + Retrouver dans le panel Găsește în panou - + Réinitialiser les conducteurs Reinițializarea conductorilor - + Ajouter un champ de texte Adaugă un câmp text - + Ajouter une colonne Adaugă o coloană - + Ajouter une image Adaugă o imagine - + Enlever une colonne Elimină o coloană - + Propriétés du projet Proprietățile proiectului - + Nettoyer le projet Curăță proiectul - + Ajouter un sommaire Adaugă un rezumat - + Zoom avant Mărește zoom - + Zoom arrière Scade zoom - + Zoom sur le contenu Focalizare pe conținut - + Zoom adapté Potrivește zoom - + Pas de zoom Fără zoom - + en utilisant des onglets utilizând file - + en utilisant des fenêtres utilizând ferestre - + Mode Selection Mod Selectare - + Mode Visualisation Mod Vizualizare - + &Mosaïque &Mozaic - + &Cascade &Cascadă - + Projet suivant Proiectul următor - + Projet précédent Proiectul anterior - + Ajouter un rectangle Adaugă un dreptunghi - + Ajouter une ellipse Adaugă o elipsă - + Retrouve l'élément sélectionné dans le panel status bar tip Găsește în panou elementul selectat - - + + Projet %1 enregistré dans le repertoire: %2. Proiect %1 înregistrat în director: %2. - - + + Impossible d'ouvrir le fichier message box title Nu se poate deschide fișierul - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Se pare că fișierul %1 pe care încercați să-l deschideți nu există sau nu mai există. - + Ouverture du projet en lecture seule message box title Deschide proiectul numai pentru citire - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content - + Active le projet « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Eroare - + Ferme l'application QElectroTech status bar tip Închide aplicația QElectroTech - + Annule l'action précédente status bar tip Anlează acțiunea precedentă - + Restaure l'action annulée status bar tip Refă acțiunea anulată - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Transferă elementele selectate în memoria tampon - + Copie les éléments sélectionnés dans le presse-papier status bar tip Copiază elementele selectate în memoria tampon - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Deselectează elementele selectate și selectează-le pe cele neselectate - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Recalculează calea conductorilor, ignorând modificările - + Pivote les éléments et textes sélectionnés status bar tip Rotește elementele și textele selectate - + Éditer l'item sélectionné Editează elementul selectat - + Pivote les textes sélectionnés à un angle précis status bar tip Rotește textele selectate la un unghi specificat - + Création automatique de conducteur(s) Tool tip of auto conductor Creează automat conductor(i) @@ -6371,504 +6391,505 @@ Opțiuni disponibile: Proiecte - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Utilizează crearea automată a conductorilor când este posibil - + Restaure le zoom par défaut status bar tip Revenino la factorul de zoom implicit - + Ajouter une ligne Draw line Adaugă o linie - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Prezentați diferitele proiecte deschise în ferestre - + Présente les différents projets ouverts des onglets status bar tip Prezentați diferitele proiecte deschise în file - + Permet de sélectionner les éléments status bar tip Permite selectarea elementelor - + Dispose les fenêtres en mosaïque status bar tip Dispune ferestrele în mozaic - + Collections - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip - + Exporte le folio courant dans un autre format status bar tip - + Imprime un ou plusieurs folios du projet courant status bar tip - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + Place les éléments du presse-papier sur le folio status bar tip - + Couleur de fond blanc/gris Tool tip of white/grey background button - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button - + Afficher la grille - + Affiche ou masque la grille des folios - + Propriétés du folio - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip - + Ajouter un folio - + + Supprimer le folio - + Exporter au format CSV - + Ajouter une nomenclature - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers - + Exporter la liste des noms de conducteurs - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet - + Dispose les fenêtres en cascade status bar tip Dispune ferestrele în cascadă - + Permet de visualiser le folio sans pouvoir le modifier status bar tip - + Active le projet suivant status bar tip Activează proiectul următor - + Active le projet précédent status bar tip Activează proiectul anterior - + Crée un nouveau projet status bar tip - + Ouvre un projet existant status bar tip - + Ferme le projet courant status bar tip - + Enregistre le projet courant et tous ses folios status bar tip - + Enregistre le projet courant avec un autre nom de fichier status bar tip - + Ajoute une colonne au folio status bar tip - + Enlève une colonne au folio status bar tip - + Agrandit le folio en hauteur status bar tip - + Rétrécit le folio en hauteur status bar tip - + Grouper les textes sélectionnés - + Enlève les éléments sélectionnés du folio status bar tip - + Sélectionne tous les éléments du folio status bar tip - + Désélectionne tous les éléments du folio status bar tip - + Agrandit le folio status bar tip - + Rétrécit le folio status bar tip - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre - + Adapte le zoom exactement sur le cadre du folio status bar tip - + Ajouter une polyligne - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel - + Ajoute une image sur le folio actuel - + Ajoute une ligne sur le folio actuel - + Ajoute un rectangle sur le folio actuel - + Ajoute une ellipse sur le folio actuel - + Ajoute une polyligne sur le folio actuel - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer - + &Fichier &Fișier - + &Édition &Editare - + &Projet &Proiect - + Afficha&ge Afișa&re - + Fe&nêtres Feres&tre - + &Récemment ouverts Deschise &recent - + Affiche ou non la barre d'outils principale Afișează sau nu bara de unelte principală - + Affiche ou non la barre d'outils Affichage Afișează sau nu bara de unelte Vizualizare - + Affiche ou non la barre d'outils Schéma Afișează sau nu bara de unelte Schemă - + Affiche ou non le panel d'appareils Afișează sau nu panoul de aparate - + Affiche ou non la liste des modifications Afișează sau nu lista modificărilor - + Afficher les projets Afișează proiectele - + Outils Unelte - + Affichage Vizualizare - + Schéma Schemă - + Ajouter Adaugă - + Ouvrir un fichier Deschide un fișier - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Se pare că fișierul pe care încercați să-l deschideți nu este accesibil pentru citire. Este, în consecință, imposiibil de deschis. Verificați permisiunile asupra fișierului. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Se pare că proiectul pe care încercați să-l deschideți nu este accesibil pentru scriere. Va fi deschis numai pentru citire. - - + + Échec de l'ouverture du projet message box title Nu se poate deschide proiectul - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Se pare că fișierul %1 nu este un proiect QElectroTech. În consecință, nu a putut fi deschis. - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe - + Éditer l'élement edit element Editare element - + Éditer le champ de texte edit text field Editare câmp text - + Éditer l'image edit image Editare imagine - + Éditer le conducteur edit conductor - + Éditer l'objet sélectionné edit selected item Editează obiectele selectate @@ -7122,42 +7143,42 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Editați informația despre autor - + Ajouter une ligne Adaugă o linie - + Ajouter un rectangle Adaugă un dreptunghi - + Ajouter une ellipse Adaugă o elipsă - + Ajouter un polygone Adaugă un poligon - + Ajouter du texte Adaugă text - + Ajouter un arc de cercle Adaugă un arc de cerc - + Ajouter une borne Adaugă o bornă - + Annuler Anulează @@ -7173,7 +7194,7 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + %n avertissement(s) warnings @@ -7183,65 +7204,65 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description - + Refaire Refă - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) Elemente QElectroTech (*.elmt) - + Ajouter un champ texte dynamique - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Ajouter un texte d'élément non éditable dans les schémas - + Ajouter un texte d'élément pouvant être édité dans les schémas - + Avertissement Avertisment - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... - + Parties toolbar title Componente - + Profondeur toolbar title Adâncime @@ -7289,12 +7310,12 @@ veuillez patienter durant l'import... [doar citire] - + Aucune modification Nici o modificare - + Éditeur d'éléments status bar message Editor de elemente @@ -7310,35 +7331,35 @@ veuillez patienter durant l'import... - + Absence de borne warning title Lipsă borne - + Absence de borne Lipsă borne - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br> În lipsa bornei, elementul poate fi conectat la alte elemente prin intermediul conductorilor. - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Eroare</b> :<br>Rapoartele folio trebuie să aibă un singur terminal.<br><b>Soluția</b> :<br>Verificați care element nu are o singură bornă - + La vérification de cet élément a généré message box content Verificarea acestui element a generat - + %n erreur(s) errors @@ -7348,17 +7369,17 @@ veuillez patienter durant l'import... - + et și - + Erreurs Erori - + Avertissements Avertismente @@ -7370,21 +7391,21 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier %1. message box content Nu se poate deschide fișierul %1. - + Ce fichier n'est pas un document XML valide message box content Acest fișier nu este un document XML valid - + Erreur toolbar title Eroare @@ -7423,64 +7444,74 @@ veuillez patienter durant l'import... Nu se poate salva elementul - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Impossible d'ouvrir le fichier message box title Fișierul nu poate fi deschis - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Se pare că fișierul %1 pe care încercați să-l deschideți nu există sau nu mai există. - + Recharger l'élément dialog title Reâncarcă elementul - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Ați făcut modificări pe acest element. Dacă îl reâncărcați, aceste modificări se vor pierde. Sigur doriți să reâncărcați acest element ? - - - + + + Echec de l'enregistrement A eșuat înregistrarea - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides A eșuat înregistrarea, condițiile nu sunt valide - + Enregistrer sous dialog title Salvează ca - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file Elemente QElectroTech (*.elmt) - + Enregistrer l'élément en cours ? dialog title Se salvează elementul curent? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Doriți să salvați elementul %1 ? @@ -7500,22 +7531,22 @@ condițiile nu sunt valide - - + + Élément inexistant. message box title Element inexistent. - + L'élément n'existe pas. message box content Elementul nu există. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Calea virtuală selectată nu corespunde nici unui element. @@ -8034,7 +8065,7 @@ Que désirez vous faire ? QObject - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Atenție : elementul a fost salvat cu o versiune mai nouă de QElectroTech. @@ -9237,51 +9268,51 @@ Que désirez vous faire ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type Împământare - - + + Générique generic terminal element function - + Phase phase terminal element function Faze - + Neutre neutral terminal element function Neutru @@ -9323,7 +9354,7 @@ Que désirez vous faire ? - + Importer un fichier dxf @@ -9396,22 +9427,22 @@ Voulez-vous la remplacer ? - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin @@ -14176,92 +14207,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur Eroare - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_rs.ts b/lang/qet_rs.ts index 3231d88a5..91e77d289 100644 --- a/lang/qet_rs.ts +++ b/lang/qet_rs.ts @@ -1673,7 +1673,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte @@ -1698,17 +1698,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier l'alignement d'un champ texte - + Modifier la couleur d'un champ texte - + Modifier la conservation de l'angle @@ -2000,7 +2000,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple @@ -2035,93 +2035,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - - Normalement ouvert + + Définition de conducteur - Normalement fermé + Normalement ouvert - Inverseur + Normalement fermé + Inverseur + + + + Other - + Puissance - + Temporisé travail - + Temporisé repos - + Temporisé travail & repos - + Bobine - + Organe de protection - + Commutateur / bouton - - + + Générique - + Fusible - + Séctionnable - + Diode - + Terre - + Phase - + Neutre @@ -2129,89 +2134,89 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général - + Élement - + Nom : %1 - + Folio : %1 - + Type : %1 - + Sous-type : %1 - + Position : %1 - + Rotation : %1° - + Dimensions : %1*%2 - + Bornes : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 - + Retrouver dans le panel - + Éditer l'élément @@ -2676,60 +2681,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip - + Cartouches embarqués - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip @@ -2738,97 +2743,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant - + Copier le chemin - + Basculer vers ce projet - + Fermer ce projet - + Propriétés du projet - + Propriétés du folio - + Ajouter un folio - + Supprimer ce folio - + Remonter ce folio - + Abaisser ce folio - + Remonter ce folio x10 - + Remonter ce folio x100 - + Remonter ce folio au debut - + Abaisser ce folio x10 - + Abaisser ce folio x100 - + Nouveau modèle - + Éditer ce modèle - + Supprimer ce modèle - + Filtrer @@ -5619,88 +5624,88 @@ Voulez-vous enregistrer les modifications ? - + Supprimer le folio ? message box title - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - + Projet en lecture seule message box title - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content - + Supprimer les modèles de cartouche inutilisés dans le projet - + Supprimer les éléments inutilisés dans le projet - + Supprimer les catégories vides - + Nettoyer le projet window title - + Ajouter un folio - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> - + Projet window title for a project-less ProjectView @@ -5996,866 +6001,882 @@ Options disponibles : - + Collections - + Aucune modification - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip - + Annulations dock title - + E&xporter - + Exporte le folio courant dans un autre format status bar tip - + Imprimer - + Imprime un ou plusieurs folios du projet courant status bar tip - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + &Quitter - + Ferme l'application QElectroTech status bar tip - + Annuler - + Annule l'action précédente status bar tip - + Refaire - + Restaure l'action annulée status bar tip - + Co&uper - + Cop&ier - + C&oller - + Transfère les éléments sélectionnés dans le presse-papier status bar tip - + Copie les éléments sélectionnés dans le presse-papier status bar tip - + Place les éléments du presse-papier sur le folio status bar tip - + Réinitialiser les conducteurs - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip - + Création automatique de conducteur(s) Tool tip of auto conductor - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor - + Couleur de fond blanc/gris Tool tip of white/grey background button - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button - + Afficher la grille - + Affiche ou masque la grille des folios - + Propriétés du folio - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip - + Propriétés du projet - + Ajouter un folio - + + Supprimer le folio - + Nettoyer le projet - + Exporter au format CSV - + Ajouter une nomenclature - + Ajouter un sommaire - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers - + Exporter la liste des noms de conducteurs - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet - + en utilisant des onglets - + Présente les différents projets ouverts des onglets status bar tip - + en utilisant des fenêtres - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip - + &Mosaïque - + Dispose les fenêtres en mosaïque status bar tip - + &Cascade - + Dispose les fenêtres en cascade status bar tip - + Mode Selection - + Permet de sélectionner les éléments status bar tip - + Mode Visualisation - + Permet de visualiser le folio sans pouvoir le modifier status bar tip - + Projet suivant - + Active le projet suivant status bar tip - + Projet précédent - + Active le projet précédent status bar tip - + &Nouveau - + &Ouvrir - + &Enregistrer - + Enregistrer sous - + &Fermer - + Crée un nouveau projet status bar tip - + Ouvre un projet existant status bar tip - + Ferme le projet courant status bar tip - + Enregistre le projet courant et tous ses folios status bar tip - + Enregistre le projet courant avec un autre nom de fichier status bar tip - + Ajouter une colonne - + Enlever une colonne - + Ajouter une ligne Add row - + Enlever une ligne Remove row - + Ajoute une colonne au folio status bar tip - + Enlève une colonne au folio status bar tip - + Agrandit le folio en hauteur status bar tip - + Rétrécit le folio en hauteur status bar tip - + Supprimer - + Pivoter - + Orienter les textes - + Retrouver dans le panel - + Éditer l'item sélectionné - + Grouper les textes sélectionnés - + Enlève les éléments sélectionnés du folio status bar tip - + Pivote les éléments et textes sélectionnés status bar tip - + Pivote les textes sélectionnés à un angle précis status bar tip - + Retrouve l'élément sélectionné dans le panel status bar tip - + Tout sélectionner - + Désélectionner tout - + Inverser la sélection - + Sélectionne tous les éléments du folio status bar tip - + Désélectionne tous les éléments du folio status bar tip - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip - + Zoom avant - + Zoom arrière - + Zoom sur le contenu - + Zoom adapté - + Pas de zoom - + Agrandit le folio status bar tip - + Rétrécit le folio status bar tip - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre - + Adapte le zoom exactement sur le cadre du folio status bar tip - + Restaure le zoom par défaut status bar tip - + Ajouter un champ de texte - + Ajouter une image - + Ajouter une ligne Draw line - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter une polyligne - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel - + Ajoute une image sur le folio actuel - + Ajoute une ligne sur le folio actuel - + Ajoute un rectangle sur le folio actuel - + Ajoute une ellipse sur le folio actuel - + Ajoute une polyligne sur le folio actuel - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer - + Outils - + Affichage - + Schéma - + Ajouter - + Profondeur toolbar title - + &Fichier - + &Édition - + &Projet - + Afficha&ge - + Fe&nêtres - + &Récemment ouverts - + Affiche ou non la barre d'outils principale - + Affiche ou non la barre d'outils Affichage - + Affiche ou non la barre d'outils Schéma - + Affiche ou non le panel d'appareils - + Affiche ou non la liste des modifications - + Afficher les projets - - + + Projet %1 enregistré dans le repertoire: %2. - + Ouvrir un fichier - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) - - + + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. - + Ouverture du projet en lecture seule message box title - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. - - + + Échec de l'ouverture du projet message box title - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe - + Éditer l'élement edit element - + Éditer le champ de texte edit text field - + Éditer l'image edit image - + Éditer le conducteur edit conductor - + Éditer l'objet sélectionné edit selected item - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content - + Active le projet « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title @@ -7152,21 +7173,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content - + Ce fichier n'est pas un document XML valide message box content - + Erreur toolbar title @@ -7201,22 +7222,22 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - - + + Élément inexistant. message box title - + Le chemin virtuel choisi ne correspond pas à un élément. message box content - + L'élément n'existe pas. message box content @@ -7267,35 +7288,45 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description - + Absence de borne - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + La vérification de cet élément a généré message box content - + %n erreur(s) errors @@ -7305,12 +7336,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et - + %n avertissement(s) warnings @@ -7320,189 +7351,189 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description - + Erreurs - + Avertissements - + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Enregistrer l'élément en cours ? dialog title - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name - + Annuler - + Refaire - + Profondeur toolbar title - + Ajouter une ligne - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter un polygone - + Ajouter du texte - + Ajouter un arc de cercle - + Ajouter une borne - + Ajouter un champ texte dynamique - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Ajouter un texte d'élément non éditable dans les schémas - + Ajouter un texte d'élément pouvant être édité dans les schémas - + Parties toolbar title - + Aucune modification - + Éditeur d'éléments status bar message - - - + + + Echec de l'enregistrement - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides - + Enregistrer sous dialog title - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file - + Recharger l'élément dialog title - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content - + Avertissement - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) @@ -8524,7 +8555,7 @@ Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper da - + Importer un fichier dxf @@ -8638,7 +8669,7 @@ Voulez-vous la remplacer ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. @@ -8663,51 +8694,51 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type - - + + Générique generic terminal element function - + Phase phase terminal element function - + Neutre neutral terminal element function @@ -8915,22 +8946,22 @@ Veuillez télécharger celui-ci en suivant le lien ci dessous et le dézipper da - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin @@ -14155,92 +14186,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_ru.ts b/lang/qet_ru.ts index b25604898..b54c26b06 100644 --- a/lang/qet_ru.ts +++ b/lang/qet_ru.ts @@ -1690,17 +1690,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte Изменить шрифт текстового поля - + Modifier la couleur d'un champ texte Изменить цвет текстового поля - + Modifier la conservation de l'angle Изменить сохранение угла @@ -1725,7 +1725,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol Изменить источник текста или текст - + Modifier l'alignement d'un champ texte Изменить выравнивание текстового поля @@ -2019,7 +2019,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple Простой @@ -2054,93 +2054,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol Эскиз - + + Définition de conducteur + + + + Normalement ouvert (NO) нормально открытый - + Normalement fermé (NC) нормально закрытый - + Inverseur (CO) переключающийся - + Other Другой - + Puissance Силовой - + Temporisé travail Включение с задержкой - + Temporisé repos Выключение с задержкой - + Temporisé travail & repos Включение и выключение по времени - + Bobine Катушка - + Organe de protection Устройство защиты - + Commutateur / bouton Переключатель/кнопка - - + + Générique Общий - + Fusible Предохранитель - + Séctionnable Секционный - + Diode Диод - + Phase Фаза - + Neutre Нейтраль - + Terre Заземление @@ -2148,99 +2153,99 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général Простой - + Élement Элемент - + Nom : %1 Имя: %1 - + Folio : %1 Лист: %1 - + Type : %1 Тип: %1 - + Sous-type : %1 Подтип: %1 - + Position : %1 Позиция: %1 - + Rotation : %1° Вращение: %1° - + Dimensions : %1*%2 Размеры: %1*%2 - + Bornes : %1 Выводы: %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Расположение: %1 - + Retrouver dans le panel Найти в панели - + Éditer l'élément Редактировать элемент @@ -2707,60 +2712,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Cartouches embarqués Внедренные штампы - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Сделайте двойной щелчок, чтобы свернуть или развернуть коллекцию внедренных штампов - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Чтобы применить шаблон к листу, перетащите шаблон на лист. - + Double-cliquez pour réduire ou développer ce projet Status tip Сделайте двойной щелчок, чтобы свернуть или развернуть проект - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Сделайте двойной щелчок, чтобы свернуть или развернуть коллекцию штампов QElectrotech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Эта коллекция штампов предоставлена вместе с QElectroTech. Она установлена как системный компонент, и вы не можете изменить её. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Сделайте двойной щелчок, чтобы свернуть или развернуть вашу коллекцию штампов - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Это ваша коллекция штампов. Используйте её для создания, хранения и редактирования ваших собственных штампов. @@ -2769,98 +2774,98 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant какую? Открыть папку - + Copier le chemin Копировать полный путь в буфер обмена - + Basculer vers ce projet Активировать этот проект - + Fermer ce projet Закрыть этот проект - + Propriétés du projet Свойства проекта - + Propriétés du folio Параметры листа - + Ajouter un folio Добавить лист - + Supprimer ce folio Удалить этот лист - + Remonter ce folio Переместить лист вверх - + Abaisser ce folio Переместить лист вниз - + Remonter ce folio x10 Переместить лист вверх на 10 - + Remonter ce folio x100 Переместить лист вверх на 100 - + Remonter ce folio au debut Переместить лист в начало - + Abaisser ce folio x10 Переместить лист вниз на 10 - + Abaisser ce folio x100 Переместить лист вниз на 100 - + Filtrer Фильтр - + Nouveau modèle Новый шаблон - + Éditer ce modèle Редактировать этот шаблон - + Supprimer ce modèle Удалить этот шаблон @@ -5680,77 +5685,71 @@ Voulez-vous enregistrer les modifications ? Проект QElectroTech (*.qet) - + Supprimer le folio ? message box title Удалить этот лист? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - Вы действительно хотите удалить этот лист из проекта? Изменение будет необратимо. - - - + Projet en lecture seule message box title Проект только для чтения - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Этот проект доступен только для чтения. Поэтому он не может быть очищен. - + Supprimer les modèles de cartouche inutilisés dans le projet Удалить неиспользуемые в проекте шаблоны - + Supprimer les éléments inutilisés dans le projet Удалить неиспользуемые в проекте элементы - + Supprimer les catégories vides Удалить пустые категории - + Nettoyer le projet window title Очистить проект - + Ajouter un folio Добавить лист - + Revenir au debut du projet Перейти в начало проекта - + Aller à la fin du projet Перейти в конец проекта - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Этот проект не содержит листов @@ -5768,12 +5767,18 @@ Voulez-vous enregistrer les modifications ? нет активных проектов - + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + message box content + + + + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align = "center"><b> Открытие текущего проекта...</b><br/> Создание вкладок листов:</p> - + Projet window title for a project-less ProjectView Проект @@ -6076,616 +6081,632 @@ Options disponibles : QElectroTech - + Annulations dock title История - + Aucune modification Нет изменений - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Выберите действие, чтобы откатить изменения, сделанные в схеме - + &Nouveau &Новый - + &Ouvrir &Открыть - + &Fermer &Закрыть - + &Enregistrer &Сохранить - + Enregistrer sous Сохранить как - + E&xporter &Экспорт - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip В этой панели показаны различные изменения на текущем листе. При выборе изменения лист будет возвращён в то состояние, в котором он находился сразу после его применения. - + Imprimer Печать - + Exporter en pdf Экспорт в PDF - + Exporte un ou plusieurs folios du projet courant status bar tip подсказка в строке состояния Экспорт одного или нескольких листов текущего проекта - + &Quitter &Выход - + Annuler Отмена - + Refaire Повторить - + Co&uper &Вырезать - + Cop&ier &Копировать - + C&oller Вст&авить - + Couleur de fond blanc/gris Tool tip of white/grey background button Цвет фона белый или серый - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Показывать фон листа белым или серым - + Afficher la grille Показать сетку - + Affiche ou masque la grille des folios Показать или скрыть сетку листа - + Propriétés du folio Свойства листа - + Ajouter un folio Добавить лист - + + Supprimer le folio Удалить этот лист - + Exporter au format CSV Экспорт в формат CSV - + Gestionnaire de borniers (DEV) Управление клеммными колодками (DEV) - + Exporter la liste des noms de conducteurs Экспорт списка имен проводников - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet Экспорт внутренней базы данных проекта - + Crée un nouveau projet status bar tip Создать новый проект - + Ouvre un projet existant status bar tip Открыть существующий проект - + Ferme le projet courant status bar tip Закрыть текущий проект - + Enregistre le projet courant et tous ses folios status bar tip Сохранить текущий проект и все его листы - + Enregistre le projet courant avec un autre nom de fichier status bar tip Сохранить текущий проект с другим именем - + Ajouter une ligne Add row Добавить ряд Добавить строку - + Enlever une ligne Remove row Удалить строку - + Ajoute une colonne au folio status bar tip Добавить столбец - + Enlève une colonne au folio status bar tip Удалить столбец - + Agrandit le folio en hauteur status bar tip Увеличивает высоту листа - + Rétrécit le folio en hauteur status bar tip Уменьшает высоту листа - + Enlève les éléments sélectionnés du folio status bar tip Удалить выбранные элементы - + Tout sélectionner Выделить всё - + Désélectionner tout Снять выделение - + Inverser la sélection Инвертировать выделение - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel Добавить текстовое поле в текущий лист - + Ajoute une image sur le folio actuel Добавить изображение в текущий лист - + Ajoute une ligne sur le folio actuel Добавить линию в текущий лист - + Ajoute un rectangle sur le folio actuel Добавить прямоугольник в текущий лист - + Ajoute une ellipse sur le folio actuel Добавить эллипс в текущий лист - + Ajoute une polyligne sur le folio actuel Добавить ломаную линию в текущий лист - + Ajoute un plan de bornier sur le folio actuel - + Profondeur toolbar title Глубина - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Дважды щелкните, чтобы завершить форму, щелкните правой кнопкой мыши, чтобы отменить последнюю точку - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe Группа - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content содержимое окна сообщения Ошибка при открытии файла %1. - + Supprimer Удалить - + Pivoter Повернуть - + Orienter les textes Выбрать направление текста - + Retrouver dans le panel Найти в панели - + Réinitialiser les conducteurs Восстановить проводники - + Ajouter un champ de texte Добавить текстовое поле - + Ajouter une colonne Добавить столбец - + Ajouter une image Добавить изображение - + Enlever une colonne Удалить столбец - + Propriétés du projet Свойства проекта - + Nettoyer le projet Очистить проект - + Ajouter un sommaire Добавить заключение - + Zoom avant Увеличить - + Zoom arrière Уменьшить - + Zoom sur le contenu Масштабировать выбранное - + Zoom adapté Подогнать размер - + Pas de zoom Восстановить масштаб - + en utilisant des onglets Использовать вкладки - + en utilisant des fenêtres Использовать окна - + Mode Selection Режим выделения - + Mode Visualisation Режим просмотра - + &Mosaïque &Мозаика - + &Cascade &Каскад - + Projet suivant Следующий проект - + Projet précédent Предыдущий проект - + Sélectionne tous les éléments du folio status bar tip Выделяет все элементы на листе - + Désélectionne tous les éléments du folio status bar tip Снимает выделение со всех элементов листа - + Agrandit le folio status bar tip Увеличивает лист - + Rétrécit le folio status bar tip Уменьшает лист - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Изменяет масштаб для отображения всего содержимого листа независимо от контекста - + Adapte le zoom exactement sur le cadre du folio status bar tip Изменяет масштаб для отображения только части листа - + Ajouter un rectangle Добавить прямоугольник - + Ajouter une ellipse Добавить эллипс - + Ajouter une polyligne Добавить ломаную линию - + Retrouve l'élément sélectionné dans le panel status bar tip Ищет выбранный элемент в панели - - + + Projet %1 enregistré dans le repertoire: %2. Проект %1 сохранён в каталоге: %2. - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) Проекты QElectroTech (*.qet);;Файлы XML (*.xml);;Все файлы (*) - - + + Impossible d'ouvrir le fichier message box title Невозможно открыть файл - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Файл %1, который вы пытаетесь открыть, не существует. - + Ouverture du projet en lecture seule message box title Открытие файла в режиме "только чтение" - + Active le projet « %1 » Активирует проект «%1» - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Ошибка - + Ferme l'application QElectroTech status bar tip Закрывает QElectroTech - + Annule l'action précédente status bar tip Отменяет последнее действие - + Restaure l'action annulée status bar tip Выполняет отменённое действие - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Копирует выделенные элементы в буфер обмена - + Copie les éléments sélectionnés dans le presse-papier status bar tip Копирует выделенные элементы - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Инвертирует выделение - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Пересчитывает трассы проводников, игнорируя сделанные пользователем изменения - + Éditer l'item sélectionné Редактировать выбранный элемент - + Pivote les éléments et textes sélectionnés status bar tip Поворот выбранных элементов и текстов - + Pivote les textes sélectionnés à un angle précis status bar tip Повернуть выбранный текст на определённый угол - + Création automatique de conducteur(s) Tool tip of auto conductor Автоматическое создание проводников @@ -6697,254 +6718,254 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Проекты - + Collections Коллекции - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Использовать автоматическое создание проводников, когда это возможно - + Restaure le zoom par défaut status bar tip Сбрасывает масштаб - + Ajouter une ligne Draw line Добавить линию - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Показывает разные открытые проекты в окнах - + Présente les différents projets ouverts des onglets status bar tip Показывает разные открытые проекты во вкладках - + Permet de sélectionner les éléments status bar tip Позволяет выбирать элементы - + Dispose les fenêtres en mosaïque status bar tip Разместить окна мозаикой - + Dispose les fenêtres en cascade status bar tip Разместить окна каскадом - + Active le projet suivant status bar tip Активирует следующий проект - + Active le projet précédent status bar tip Активирует предыдущий проект - + &Fichier &Файл - + &Édition &Правка - + &Projet П&роект - + Afficha&ge &Вид - + Fe&nêtres &Окно - + &Récemment ouverts &Недавно открытые - + Affiche ou non la barre d'outils principale Отобразить или скрыть главную панель инструментов - + Affiche ou non la barre d'outils Affichage Отобразить или скрыть панель инструментов «Вид» - + Affiche ou non la barre d'outils Schéma Отобразить или скрыть панель инструментов «Схема» - + Affiche ou non le panel d'appareils Отобразить или скрыть панель элементов - + Affiche ou non la liste des modifications Отобразить или скрыть список изменений - + Afficher les projets Показывать проекты - + Outils Инструменты - + Exporte le folio courant dans un autre format status bar tip Экспортировать текущий лист в другой формат - + Imprime un ou plusieurs folios du projet courant status bar tip Печатать один или более листов текущего проекта - + Place les éléments du presse-papier sur le folio status bar tip Вставляет на лист элементы из буфера обмена - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Редактирует свойства листа (размеры, информацию шаблонов, свойства проводников...) - + Ajouter une nomenclature Добавить номенклатуру - + Lancer le plugin de création de borniers Запустить плагин создания клеммной колодки - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Позволяет просматривать листы, не изменяя их - + Grouper les textes sélectionnés Сгруппировать выбранные тексты - + Chercher/remplacer Найти/заменить - + Affichage Вид - + Schéma Схема - + Ajouter Добавить - + Ouvrir un fichier Открыть файл - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Файл, который вы пытаетесь открыть, недоступен для чтения и не может быть открыт. Проверьте права доступа. - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Проект, который вы пытаетесь открыть, недоступен для записи. Он будет открыт в режиме "только для чтения". - - + + Échec de l'ouverture du projet message box title Невозможно открыть проект - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Файл %1 не является проектом QElectroTech. Он не может быть открыт. - + Éditer l'élement edit element Редактировать элемент - + Éditer le champ de texte edit text field Редактировать текстовое поле - + Éditer l'image edit image Редактировать изображение - + Éditer le conducteur edit conductor Редактировать проводник - + Éditer l'objet sélectionné edit selected item Редактировать выбранный объект @@ -7198,42 +7219,42 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s Редактировать информацию об авторе - + Ajouter une ligne Добавить линию - + Ajouter un rectangle Добавить прямоугольник - + Ajouter une ellipse Добавить эллипс - + Ajouter un polygone Добавить многоугольник - + Ajouter du texte Добавить текст - + Ajouter un arc de cercle Добавить дугу - + Ajouter une borne Добавить вывод - + Annuler Отмена @@ -7249,30 +7270,30 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Refaire Повторить - + Avertissement Предупреждение - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Импорт большого файла в формате DXF может занять определённое время, пожалуйста, дождитесь его окончания... - + Parties toolbar title Части - + Profondeur toolbar title Глубина @@ -7288,12 +7309,12 @@ veuillez patienter durant l'import... Редактировать свойства элемента - + Ajouter un champ texte dynamique Добавить динамическое текстовое поле - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Сделайте двойной щелчок, чтобы завершить форму, щелкните правой кнопкой мыши, чтобы отменить последнюю точку @@ -7317,12 +7338,12 @@ veuillez patienter durant l'import... [Только чтение] - + Aucune modification Нет изменений - + Éditeur d'éléments status bar message Редактор элементов @@ -7338,18 +7359,18 @@ veuillez patienter durant l'import... - + Absence de borne warning title Отсутствует вывод - + Absence de borne Отсутствует вывод - + %n avertissement(s) warnings предупреждения @@ -7367,21 +7388,21 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier %1. message box content Невозможно открыть файл %1. - + Ce fichier n'est pas un document XML valide message box content Этот файл не является правильным XML-документом - + Erreur toolbar title Ошибка @@ -7420,39 +7441,49 @@ veuillez patienter durant l'import... Невозможно сохранить элемент - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Impossible d'ouvrir le fichier message box title Невозможно открыть файл - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Похоже, что файл %1, который вы пытаетесь открыть, не существует. - - - + + + Echec de l'enregistrement Регистрация не удалась - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Запись не удалась, условия не верны - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) Элементы QElectroTech (*.elmt) @@ -7469,18 +7500,18 @@ les conditions requises ne sont pas valides Элементы QElectroTech (*.elmt);;XML-файлы (*.xml);;Все файлы (*) - + Recharger l'élément dialog title Перезагрузить элемент - + Ajouter un texte d'élément non éditable dans les schémas Добавить нередактируемый текст элемента в схемы - + Ajouter un texte d'élément pouvant être édité dans les schémas Добавить редактируемый текст элемента в схемы @@ -7500,24 +7531,24 @@ les conditions requises ne sont pas valides &Вид - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br> При отсутствии выводов элемент не может быть соединен с другими элементами проводником. - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Ошибка</b>:<br> Отчеты о листах должны иметь один вывод.<br><b>Решение</b>:<br>Проверьте, чтобы у элемента был только один вывод - + La vérification de cet élément a généré message box content Проверка создаваемого элемента - + %n erreur(s) errors @@ -7527,52 +7558,52 @@ les conditions requises ne sont pas valides - + et и - + <b>%1</b> : %2 warning title: warning description <b>%1</b>: %2 - + Erreurs Ошибки - + Avertissements Предупреждения - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Этот элемент был изменён со времени последнего сохранения. Если вы перезагрузите его, все изменения будут потеряны. Вы действительно хотите перезагрузить элемент? - + Enregistrer sous dialog title Сохранить как - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file Элементы QElectroTech (*.elmt) - + Enregistrer l'élément en cours ? dialog title Сохранить текущий элемент? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Вы хотите сохранить элемент %1? @@ -7580,22 +7611,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title Несуществующий элемент. - + L'élément n'existe pas. message box content Элемент не существует. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Выбранный виртуальный путь не соответствует элементу. @@ -8121,7 +8152,7 @@ Que désirez vous faire ? QObject - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Предупреждение: элементы были сохранены с помощью более новой версии QElectroTech. @@ -9379,22 +9410,22 @@ Voulez-vous la remplacer ? Создание проводников - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Чтобы установить плагин qet_tb_generator<br>Посетите:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Требуется python 3.5 или выше.<br><B><U>Первая установка в Windows</B></U><br>1. При необходимости установите python 3.5 или более позднюю версию<br>Посетите:<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U>Обновление в Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>пользователь может запустить в терминале этот сценарий в этом каталоге<br>C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Чтобы установить плагин qet_tb_generator<br>Посетите:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Требуется Python 3.5 или выше.<br><br><B><U>Первая установка в Linux</B></U><br>1. Проверьте, что у вас установлен pip3: pip3 --version<br> Если не установлено, то: sudo apt-get install python3-pip<br>2. Установите программу: sudo pip3 install qet_tb_generator<br>3. Запустите программу: qet_tb_generator<br><br><B><U>Обновление в Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Ошибка при запуске плагина qet_tb_generator @@ -9546,51 +9577,51 @@ Voulez-vous la remplacer ? Выбор клеммной колодки %1 - - + + Générique generic terminal element type Общий - + Fusible fuse terminal element type Предохранитель - + Sectionable sectional terminal element type Секционный - + Diode diode terminal element type Диод - + Terre ground terminal element type Заземление - - + + Générique generic terminal element function Общий - + Phase phase terminal element function Фаза - + Neutre neutral terminal element function Нейтраль @@ -9621,7 +9652,7 @@ Voulez-vous la remplacer ? Открыть элемент - + Importer un fichier dxf Импортировать файл в формате DXF @@ -14317,92 +14348,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur Ошибка - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Напряжение/протокол - + Couleur du fil Wiring list CSV header Цвет провода - + Section du fil Wiring list CSV header Сечение провода - + Fonction Wiring list CSV header Функция - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_sk.ts b/lang/qet_sk.ts index 877b42450..b78892d27 100644 --- a/lang/qet_sk.ts +++ b/lang/qet_sk.ts @@ -1673,7 +1673,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte @@ -1698,17 +1698,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier l'alignement d'un champ texte - + Modifier la couleur d'un champ texte - + Modifier la conservation de l'angle @@ -2000,7 +2000,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple @@ -2035,93 +2035,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - - Normalement ouvert + + Définition de conducteur - Normalement fermé + Normalement ouvert - Inverseur + Normalement fermé + Inverseur + + + + Other - + Puissance - + Temporisé travail - + Temporisé repos - + Temporisé travail & repos - + Bobine - + Organe de protection - + Commutateur / bouton - - + + Générique - + Fusible - + Séctionnable - + Diode - + Phase - + Neutre - + Terre @@ -2129,89 +2134,89 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général - + Élement - + Nom : %1 - + Folio : %1 - + Type : %1 - + Sous-type : %1 - + Position : %1 - + Rotation : %1° - + Dimensions : %1*%2 - + Bornes : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 - + Retrouver dans le panel - + Éditer l'élément @@ -2676,60 +2681,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip - + Cartouches embarqués - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip @@ -2738,97 +2743,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant - + Copier le chemin - + Basculer vers ce projet - + Fermer ce projet - + Propriétés du projet - + Propriétés du folio - + Ajouter un folio - + Supprimer ce folio - + Remonter ce folio - + Abaisser ce folio - + Remonter ce folio x10 - + Remonter ce folio x100 - + Remonter ce folio au debut - + Abaisser ce folio x10 - + Abaisser ce folio x100 - + Nouveau modèle - + Éditer ce modèle - + Supprimer ce modèle - + Filtrer @@ -5619,88 +5624,88 @@ Voulez-vous enregistrer les modifications ? - + Supprimer le folio ? message box title - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - + Projet en lecture seule message box title - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content - + Supprimer les modèles de cartouche inutilisés dans le projet - + Supprimer les éléments inutilisés dans le projet - + Supprimer les catégories vides - + Nettoyer le projet window title - + Ajouter un folio - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> - + Projet window title for a project-less ProjectView @@ -5996,866 +6001,882 @@ Options disponibles : - + Collections - + Aucune modification - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip - + Annulations dock title - + E&xporter - + Exporte le folio courant dans un autre format status bar tip - + Imprimer - + Imprime un ou plusieurs folios du projet courant status bar tip - + &Quitter - + Ferme l'application QElectroTech status bar tip - + Annuler - + Annule l'action précédente status bar tip - + Refaire - + Restaure l'action annulée status bar tip - + Co&uper - + Cop&ier - + C&oller - + Transfère les éléments sélectionnés dans le presse-papier status bar tip - + Copie les éléments sélectionnés dans le presse-papier status bar tip - + Place les éléments du presse-papier sur le folio status bar tip - + Réinitialiser les conducteurs - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip - + Création automatique de conducteur(s) Tool tip of auto conductor - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor - + Couleur de fond blanc/gris Tool tip of white/grey background button - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button - + Afficher la grille - + Affiche ou masque la grille des folios - + Propriétés du folio - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip - + Propriétés du projet - + Ajouter un folio - + + Supprimer le folio - + Nettoyer le projet - + Ajouter un sommaire - + Exporter au format CSV - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + Ajouter une nomenclature - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers - + Exporter la liste des noms de conducteurs - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet - + en utilisant des onglets - + Présente les différents projets ouverts des onglets status bar tip - + en utilisant des fenêtres - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip - + &Mosaïque - + Dispose les fenêtres en mosaïque status bar tip - + &Cascade - + Dispose les fenêtres en cascade status bar tip - + Mode Selection - + Permet de sélectionner les éléments status bar tip - + Mode Visualisation - + Permet de visualiser le folio sans pouvoir le modifier status bar tip - + Projet suivant - + Active le projet suivant status bar tip - + Projet précédent - + Active le projet précédent status bar tip - + &Nouveau - + &Ouvrir - + &Enregistrer - + Enregistrer sous - + &Fermer - + Crée un nouveau projet status bar tip - + Ouvre un projet existant status bar tip - + Ferme le projet courant status bar tip - + Enregistre le projet courant et tous ses folios status bar tip - + Enregistre le projet courant avec un autre nom de fichier status bar tip - + Ajouter une colonne - + Enlever une colonne - + Ajouter une ligne Add row - + Enlever une ligne Remove row - + Ajoute une colonne au folio status bar tip - + Enlève une colonne au folio status bar tip - + Agrandit le folio en hauteur status bar tip - + Rétrécit le folio en hauteur status bar tip - + Supprimer - + Pivoter - + Orienter les textes - + Retrouver dans le panel - + Éditer l'item sélectionné - + Grouper les textes sélectionnés - + Enlève les éléments sélectionnés du folio status bar tip - + Pivote les éléments et textes sélectionnés status bar tip - + Pivote les textes sélectionnés à un angle précis status bar tip - + Retrouve l'élément sélectionné dans le panel status bar tip - + Tout sélectionner - + Désélectionner tout - + Inverser la sélection - + Sélectionne tous les éléments du folio status bar tip - + Désélectionne tous les éléments du folio status bar tip - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip - + Zoom avant - + Zoom arrière - + Zoom sur le contenu - + Zoom adapté - + Pas de zoom - + Agrandit le folio status bar tip - + Rétrécit le folio status bar tip - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre - + Adapte le zoom exactement sur le cadre du folio status bar tip - + Restaure le zoom par défaut status bar tip - + Ajouter un champ de texte - + Ajouter une image - + Ajouter une ligne Draw line - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter une polyligne - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel - + Ajoute une image sur le folio actuel - + Ajoute une ligne sur le folio actuel - + Ajoute un rectangle sur le folio actuel - + Ajoute une ellipse sur le folio actuel - + Ajoute une polyligne sur le folio actuel - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer - + Outils - + Affichage - + Schéma - + Ajouter - + Profondeur toolbar title - + &Fichier - + &Édition - + &Projet - + Afficha&ge - + Fe&nêtres - + &Récemment ouverts - + Affiche ou non la barre d'outils principale - + Affiche ou non la barre d'outils Affichage - + Affiche ou non la barre d'outils Schéma - + Affiche ou non le panel d'appareils - + Affiche ou non la liste des modifications - + Afficher les projets - - + + Projet %1 enregistré dans le repertoire: %2. - + Ouvrir un fichier - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) - - + + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. - + Ouverture du projet en lecture seule message box title - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. - - + + Échec de l'ouverture du projet message box title - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe - + Éditer l'élement edit element - + Éditer le champ de texte edit text field - + Éditer l'image edit image - + Éditer le conducteur edit conductor - + Éditer l'objet sélectionné edit selected item - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content - + Active le projet « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title @@ -7099,17 +7120,17 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Annuler - + Refaire - + Profondeur toolbar title @@ -7135,73 +7156,73 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Ajouter une ligne - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter un polygone - + Ajouter du texte - + Ajouter un arc de cercle - + Ajouter une borne - + Ajouter un champ texte dynamique - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Ajouter un texte d'élément non éditable dans les schémas - + Ajouter un texte d'élément pouvant être édité dans les schémas - + Parties toolbar title - + Avertissement - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... @@ -7239,12 +7260,12 @@ veuillez patienter durant l'import... - + Aucune modification - + Éditeur d'éléments status bar message @@ -7260,35 +7281,35 @@ veuillez patienter durant l'import... - + Absence de borne warning title - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description - + Absence de borne - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne - + La vérification de cet élément a généré message box content - + %n erreur(s) errors @@ -7298,12 +7319,12 @@ veuillez patienter durant l'import... - + et - + %n avertissement(s) warnings @@ -7313,18 +7334,18 @@ veuillez patienter durant l'import... - + <b>%1</b> : %2 warning title: warning description - + Erreurs - + Avertissements @@ -7342,21 +7363,21 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier %1. message box content - + Ce fichier n'est pas un document XML valide message box content - + Erreur toolbar title @@ -7400,73 +7421,83 @@ veuillez patienter durant l'import... - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Recharger l'élément dialog title - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) - - - + + + Echec de l'enregistrement - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides - + Enregistrer sous dialog title - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file - + Enregistrer l'élément en cours ? dialog title - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name @@ -7486,22 +7517,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title - + Le chemin virtuel choisi ne correspond pas à un élément. message box content - + L'élément n'existe pas. message box content @@ -8498,7 +8529,7 @@ Voulez-vous la remplacer ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. @@ -8657,22 +8688,22 @@ Voulez-vous la remplacer ? - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin @@ -9434,51 +9465,51 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type - - + + Générique generic terminal element function - + Phase phase terminal element function - + Neutre neutral terminal element function @@ -9509,7 +9540,7 @@ Voulez-vous la remplacer ? - + Importer un fichier dxf @@ -14155,92 +14186,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_sl.ts b/lang/qet_sl.ts index e60e87227..f8cded59f 100644 --- a/lang/qet_sl.ts +++ b/lang/qet_sl.ts @@ -1673,7 +1673,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte @@ -1698,17 +1698,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier l'alignement d'un champ texte - + Modifier la couleur d'un champ texte - + Modifier la conservation de l'angle @@ -2000,7 +2000,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple @@ -2035,93 +2035,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - - Normalement ouvert + + Définition de conducteur - Normalement fermé + Normalement ouvert - Inverseur + Normalement fermé + Inverseur + + + + Other - + Puissance - + Temporisé travail - + Temporisé repos - + Temporisé travail & repos - + Bobine - + Organe de protection - + Commutateur / bouton - - + + Générique - + Fusible - + Séctionnable - + Diode - + Terre - + Phase - + Neutre @@ -2129,89 +2134,89 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général - + Élement - + Nom : %1 - + Folio : %1 - + Type : %1 - + Sous-type : %1 - + Position : %1 - + Rotation : %1° - + Dimensions : %1*%2 - + Bornes : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 - + Retrouver dans le panel - + Éditer l'élément @@ -2678,60 +2683,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip - + Cartouches embarqués - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip @@ -2740,97 +2745,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant - + Copier le chemin - + Basculer vers ce projet - + Fermer ce projet - + Propriétés du projet - + Propriétés du folio - + Ajouter un folio - + Supprimer ce folio - + Remonter ce folio - + Abaisser ce folio - + Remonter ce folio x10 - + Remonter ce folio x100 - + Remonter ce folio au debut - + Abaisser ce folio x10 - + Abaisser ce folio x100 - + Nouveau modèle - + Éditer ce modèle - + Supprimer ce modèle - + Filtrer @@ -5622,88 +5627,88 @@ Voulez-vous enregistrer les modifications ? - + Supprimer le folio ? message box title - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - + Projet en lecture seule message box title - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content - + Supprimer les modèles de cartouche inutilisés dans le projet - + Supprimer les éléments inutilisés dans le projet - + Supprimer les catégories vides - + Nettoyer le projet window title - + Ajouter un folio - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> - + Projet window title for a project-less ProjectView @@ -5999,866 +6004,882 @@ Options disponibles : - + Collections - + Aucune modification - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip - + Annulations dock title - + E&xporter - + Exporte le folio courant dans un autre format status bar tip - + Imprimer - + Imprime un ou plusieurs folios du projet courant status bar tip - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + &Quitter - + Ferme l'application QElectroTech status bar tip - + Annuler - + Annule l'action précédente status bar tip - + Refaire - + Restaure l'action annulée status bar tip - + Co&uper - + Cop&ier - + C&oller - + Transfère les éléments sélectionnés dans le presse-papier status bar tip - + Copie les éléments sélectionnés dans le presse-papier status bar tip - + Place les éléments du presse-papier sur le folio status bar tip - + Réinitialiser les conducteurs - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip - + Création automatique de conducteur(s) Tool tip of auto conductor - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor - + Couleur de fond blanc/gris Tool tip of white/grey background button - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button - + Afficher la grille - + Affiche ou masque la grille des folios - + Propriétés du folio - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip - + Propriétés du projet - + Ajouter un folio - + + Supprimer le folio - + Nettoyer le projet - + Exporter au format CSV - + Ajouter une nomenclature - + Ajouter un sommaire - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers - + Exporter la liste des noms de conducteurs - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet - + en utilisant des onglets - + Présente les différents projets ouverts des onglets status bar tip - + en utilisant des fenêtres - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip - + &Mosaïque - + Dispose les fenêtres en mosaïque status bar tip - + &Cascade - + Dispose les fenêtres en cascade status bar tip - + Mode Selection - + Permet de sélectionner les éléments status bar tip - + Mode Visualisation - + Permet de visualiser le folio sans pouvoir le modifier status bar tip - + Projet suivant - + Active le projet suivant status bar tip - + Projet précédent - + Active le projet précédent status bar tip - + &Nouveau - + &Ouvrir - + &Enregistrer - + Enregistrer sous - + &Fermer - + Crée un nouveau projet status bar tip - + Ouvre un projet existant status bar tip - + Ferme le projet courant status bar tip - + Enregistre le projet courant et tous ses folios status bar tip - + Enregistre le projet courant avec un autre nom de fichier status bar tip - + Ajouter une colonne - + Enlever une colonne - + Ajouter une ligne Add row - + Enlever une ligne Remove row - + Ajoute une colonne au folio status bar tip - + Enlève une colonne au folio status bar tip - + Agrandit le folio en hauteur status bar tip - + Rétrécit le folio en hauteur status bar tip - + Supprimer - + Pivoter - + Orienter les textes - + Retrouver dans le panel - + Éditer l'item sélectionné - + Grouper les textes sélectionnés - + Enlève les éléments sélectionnés du folio status bar tip - + Pivote les éléments et textes sélectionnés status bar tip - + Pivote les textes sélectionnés à un angle précis status bar tip - + Retrouve l'élément sélectionné dans le panel status bar tip - + Tout sélectionner - + Désélectionner tout - + Inverser la sélection - + Sélectionne tous les éléments du folio status bar tip - + Désélectionne tous les éléments du folio status bar tip - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip - + Zoom avant - + Zoom arrière - + Zoom sur le contenu - + Zoom adapté - + Pas de zoom - + Agrandit le folio status bar tip - + Rétrécit le folio status bar tip - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre - + Adapte le zoom exactement sur le cadre du folio status bar tip - + Restaure le zoom par défaut status bar tip - + Ajouter un champ de texte - + Ajouter une image - + Ajouter une ligne Draw line - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter une polyligne - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel - + Ajoute une image sur le folio actuel - + Ajoute une ligne sur le folio actuel - + Ajoute un rectangle sur le folio actuel - + Ajoute une ellipse sur le folio actuel - + Ajoute une polyligne sur le folio actuel - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer - + Outils - + Affichage - + Schéma - + Ajouter - + Profondeur toolbar title - + &Fichier - + &Édition - + &Projet - + Afficha&ge - + Fe&nêtres - + &Récemment ouverts - + Affiche ou non la barre d'outils principale - + Affiche ou non la barre d'outils Affichage - + Affiche ou non la barre d'outils Schéma - + Affiche ou non le panel d'appareils - + Affiche ou non la liste des modifications - + Afficher les projets - - + + Projet %1 enregistré dans le repertoire: %2. - + Ouvrir un fichier - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) - - + + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. - + Ouverture du projet en lecture seule message box title - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. - - + + Échec de l'ouverture du projet message box title - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe - + Éditer l'élement edit element - + Éditer le champ de texte edit text field - + Éditer l'image edit image - + Éditer le conducteur edit conductor - + Éditer l'objet sélectionné edit selected item - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content - + Active le projet « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title @@ -7155,21 +7176,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content - + Ce fichier n'est pas un document XML valide message box content - + Erreur toolbar title @@ -7204,22 +7225,22 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - - + + Élément inexistant. message box title - + Le chemin virtuel choisi ne correspond pas à un élément. message box content - + L'élément n'existe pas. message box content @@ -7271,35 +7292,45 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description - + Absence de borne - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + La vérification de cet élément a généré message box content - + %n erreur(s) errors @@ -7310,12 +7341,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et - + %n avertissement(s) warnings @@ -7326,188 +7357,188 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description - + Erreurs - + Avertissements - + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Enregistrer l'élément en cours ? dialog title - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name - + Annuler - + Refaire - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) - + Profondeur toolbar title - + Ajouter une ligne - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter un polygone - + Ajouter du texte - + Ajouter un arc de cercle - + Ajouter une borne - + Ajouter un champ texte dynamique - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Ajouter un texte d'élément non éditable dans les schémas - + Ajouter un texte d'élément pouvant être édité dans les schémas - + Parties toolbar title - + Aucune modification - + Éditeur d'éléments status bar message - - - + + + Echec de l'enregistrement - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides - + Enregistrer sous dialog title - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file - + Recharger l'élément dialog title - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content - + Avertissement - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... @@ -8313,7 +8344,7 @@ Que désirez vous faire ? - + Importer un fichier dxf @@ -8485,7 +8516,7 @@ Voulez-vous la remplacer ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. @@ -8510,51 +8541,51 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type - - + + Générique generic terminal element function - + Phase phase terminal element function - + Neutre neutral terminal element function @@ -8712,22 +8743,22 @@ Voulez-vous la remplacer ? - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin @@ -14172,92 +14203,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_sr.ts b/lang/qet_sr.ts index 4b2b83dc3..82d76066e 100644 --- a/lang/qet_sr.ts +++ b/lang/qet_sr.ts @@ -1673,7 +1673,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte @@ -1698,17 +1698,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier l'alignement d'un champ texte - + Modifier la couleur d'un champ texte - + Modifier la conservation de l'angle @@ -2000,7 +2000,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple @@ -2035,93 +2035,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - - Normalement ouvert + + Définition de conducteur - Normalement fermé + Normalement ouvert - Inverseur + Normalement fermé + Inverseur + + + + Other - + Puissance - + Temporisé travail - + Temporisé repos - + Temporisé travail & repos - + Bobine - + Organe de protection - + Commutateur / bouton - - + + Générique - + Fusible - + Séctionnable - + Diode - + Terre - + Phase - + Neutre @@ -2129,89 +2134,89 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général - + Élement - + Nom : %1 - + Folio : %1 - + Type : %1 - + Sous-type : %1 - + Position : %1 - + Rotation : %1° - + Dimensions : %1*%2 - + Bornes : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 - + Retrouver dans le panel - + Éditer l'élément @@ -2676,60 +2681,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip - + Cartouches embarqués - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip @@ -2738,97 +2743,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant - + Copier le chemin - + Basculer vers ce projet - + Fermer ce projet - + Propriétés du projet - + Propriétés du folio - + Ajouter un folio - + Supprimer ce folio - + Remonter ce folio - + Abaisser ce folio - + Remonter ce folio x10 - + Remonter ce folio x100 - + Remonter ce folio au debut - + Abaisser ce folio x10 - + Abaisser ce folio x100 - + Nouveau modèle - + Éditer ce modèle - + Supprimer ce modèle - + Filtrer @@ -5619,88 +5624,88 @@ Voulez-vous enregistrer les modifications ? - + Supprimer le folio ? message box title - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - + Projet en lecture seule message box title - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content - + Supprimer les modèles de cartouche inutilisés dans le projet - + Supprimer les éléments inutilisés dans le projet - + Supprimer les catégories vides - + Nettoyer le projet window title - + Ajouter un folio - + Revenir au debut du projet - + Aller à la fin du projet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> - + Projet window title for a project-less ProjectView @@ -5996,866 +6001,882 @@ Options disponibles : - + Collections - + Aucune modification - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip - + Annulations dock title - + E&xporter - + Exporte le folio courant dans un autre format status bar tip - + Imprimer - + Imprime un ou plusieurs folios du projet courant status bar tip - + Exporter en pdf - + Exporte un ou plusieurs folios du projet courant status bar tip - + &Quitter - + Ferme l'application QElectroTech status bar tip - + Annuler - + Annule l'action précédente status bar tip - + Refaire - + Restaure l'action annulée status bar tip - + Co&uper - + Cop&ier - + C&oller - + Transfère les éléments sélectionnés dans le presse-papier status bar tip - + Copie les éléments sélectionnés dans le presse-papier status bar tip - + Place les éléments du presse-papier sur le folio status bar tip - + Réinitialiser les conducteurs - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip - + Création automatique de conducteur(s) Tool tip of auto conductor - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor - + Couleur de fond blanc/gris Tool tip of white/grey background button - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button - + Afficher la grille - + Affiche ou masque la grille des folios - + Propriétés du folio - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip - + Propriétés du projet - + Ajouter un folio - + + Supprimer le folio - + Nettoyer le projet - + Exporter au format CSV - + Ajouter une nomenclature - + Ajouter un sommaire - + Gestionnaire de borniers (DEV) - + Lancer le plugin de création de borniers - + Exporter la liste des noms de conducteurs - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet - + en utilisant des onglets - + Présente les différents projets ouverts des onglets status bar tip - + en utilisant des fenêtres - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip - + &Mosaïque - + Dispose les fenêtres en mosaïque status bar tip - + &Cascade - + Dispose les fenêtres en cascade status bar tip - + Mode Selection - + Permet de sélectionner les éléments status bar tip - + Mode Visualisation - + Permet de visualiser le folio sans pouvoir le modifier status bar tip - + Projet suivant - + Active le projet suivant status bar tip - + Projet précédent - + Active le projet précédent status bar tip - + &Nouveau - + &Ouvrir - + &Enregistrer - + Enregistrer sous - + &Fermer - + Crée un nouveau projet status bar tip - + Ouvre un projet existant status bar tip - + Ferme le projet courant status bar tip - + Enregistre le projet courant et tous ses folios status bar tip - + Enregistre le projet courant avec un autre nom de fichier status bar tip - + Ajouter une colonne - + Enlever une colonne - + Ajouter une ligne Add row - + Enlever une ligne Remove row - + Ajoute une colonne au folio status bar tip - + Enlève une colonne au folio status bar tip - + Agrandit le folio en hauteur status bar tip - + Rétrécit le folio en hauteur status bar tip - + Supprimer - + Pivoter - + Orienter les textes - + Retrouver dans le panel - + Éditer l'item sélectionné - + Grouper les textes sélectionnés - + Enlève les éléments sélectionnés du folio status bar tip - + Pivote les éléments et textes sélectionnés status bar tip - + Pivote les textes sélectionnés à un angle précis status bar tip - + Retrouve l'élément sélectionné dans le panel status bar tip - + Tout sélectionner - + Désélectionner tout - + Inverser la sélection - + Sélectionne tous les éléments du folio status bar tip - + Désélectionne tous les éléments du folio status bar tip - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip - + Zoom avant - + Zoom arrière - + Zoom sur le contenu - + Zoom adapté - + Pas de zoom - + Agrandit le folio status bar tip - + Rétrécit le folio status bar tip - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre - + Adapte le zoom exactement sur le cadre du folio status bar tip - + Restaure le zoom par défaut status bar tip - + Ajouter un champ de texte - + Ajouter une image - + Ajouter une ligne Draw line - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter une polyligne - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel - + Ajoute une image sur le folio actuel - + Ajoute une ligne sur le folio actuel - + Ajoute un rectangle sur le folio actuel - + Ajoute une ellipse sur le folio actuel - + Ajoute une polyligne sur le folio actuel - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer - + Outils - + Affichage - + Schéma - + Ajouter - + Profondeur toolbar title - + &Fichier - + &Édition - + &Projet - + Afficha&ge - + Fe&nêtres - + &Récemment ouverts - + Affiche ou non la barre d'outils principale - + Affiche ou non la barre d'outils Affichage - + Affiche ou non la barre d'outils Schéma - + Affiche ou non le panel d'appareils - + Affiche ou non la liste des modifications - + Afficher les projets - - + + Projet %1 enregistré dans le repertoire: %2. - + Ouvrir un fichier - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) - - + + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. - + Ouverture du projet en lecture seule message box title - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. - - + + Échec de l'ouverture du projet message box title - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe - + Éditer l'élement edit element - + Éditer le champ de texte edit text field - + Éditer l'image edit image - + Éditer le conducteur edit conductor - + Éditer l'objet sélectionné edit selected item - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content - + Active le projet « %1 » - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title @@ -7152,21 +7173,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content - + Ce fichier n'est pas un document XML valide message box content - + Erreur toolbar title @@ -7201,22 +7222,22 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - - + + Élément inexistant. message box title - + Le chemin virtuel choisi ne correspond pas à un élément. message box content - + L'élément n'existe pas. message box content @@ -7267,35 +7288,45 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description - + Absence de borne - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + La vérification de cet élément a généré message box content - + %n erreur(s) errors @@ -7305,12 +7336,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et - + %n avertissement(s) warnings @@ -7320,188 +7351,188 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description - + Erreurs - + Avertissements - + Impossible d'ouvrir le fichier message box title - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. - + Enregistrer l'élément en cours ? dialog title - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name - + Annuler - + Refaire - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) - + Profondeur toolbar title - + Ajouter une ligne - + Ajouter un rectangle - + Ajouter une ellipse - + Ajouter un polygone - + Ajouter du texte - + Ajouter un arc de cercle - + Ajouter une borne - + Ajouter un champ texte dynamique - + Double-click pour terminer la forme, Click droit pour annuler le dernier point - + Ajouter un texte d'élément non éditable dans les schémas - + Ajouter un texte d'élément pouvant être édité dans les schémas - + Parties toolbar title - + Aucune modification - + Éditeur d'éléments status bar message - - - + + + Echec de l'enregistrement - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides - + Enregistrer sous dialog title - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file - + Recharger l'élément dialog title - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content - + Avertissement - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... @@ -8307,7 +8338,7 @@ Que désirez vous faire ? - + Importer un fichier dxf @@ -8478,7 +8509,7 @@ Voulez-vous la remplacer ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. @@ -8503,51 +8534,51 @@ Voulez-vous la remplacer ? - - + + Générique generic terminal element type - + Fusible fuse terminal element type - + Sectionable sectional terminal element type - + Diode diode terminal element type - + Terre ground terminal element type - - + + Générique generic terminal element function - + Phase phase terminal element function - + Neutre neutral terminal element function @@ -8697,22 +8728,22 @@ Voulez-vous la remplacer ? - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin @@ -14155,92 +14186,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header - + Couleur du fil Wiring list CSV header - + Section du fil Wiring list CSV header - + Fonction Wiring list CSV header - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_sv.ts b/lang/qet_sv.ts index 5215a0929..19057f1c1 100644 --- a/lang/qet_sv.ts +++ b/lang/qet_sv.ts @@ -1680,7 +1680,7 @@ Notera: Dessa alternativ TILLÅTER ELLER BLOCKERAR INTE auto-numreringen, endast - + Modifier la police d'un champ texte Ändra typsnitt för ett textfält @@ -1705,17 +1705,17 @@ Notera: Dessa alternativ TILLÅTER ELLER BLOCKERAR INTE auto-numreringen, endast Ändra källan för en text - + Modifier l'alignement d'un champ texte Ändra justeringen av ett textfält - + Modifier la couleur d'un champ texte Ändra färgen på ett textfält - + Modifier la conservation de l'angle Ändra bibehåll textrotation @@ -2007,7 +2007,7 @@ Notera: Dessa alternativ TILLÅTER ELLER BLOCKERAR INTE auto-numreringen, endast - + Simple Enkel @@ -2042,93 +2042,98 @@ Notera: Dessa alternativ TILLÅTER ELLER BLOCKERAR INTE auto-numreringen, endast Miniatyrbild - + + Définition de conducteur + + + + Normalement ouvert Slutande (NO) - + Normalement fermé Brytande (NC) - + Inverseur Växlande - + Other Annan - + Puissance Kraftkontakt - + Temporisé travail Tillslagsfördröjd - + Temporisé repos Frånslagsfördröjd - + Temporisé travail & repos Till- och frånslagsfördröjd - + Bobine Spole - + Organe de protection Skyddsanordning - + Commutateur / bouton Knapp/brytare - - + + Générique Generisk - + Fusible Säkring - + Séctionnable Frånskiljbar - + Diode Diod - + Terre Jord - + Phase Fas - + Neutre Neutral @@ -2136,99 +2141,99 @@ Notera: Dessa alternativ TILLÅTER ELLER BLOCKERAR INTE auto-numreringen, endast ElementPropertiesWidget - + Général Allmänt - + Élement Symboler - + Nom : %1 Namn: %1 - + Folio : %1 Blad: %1 - + Type : %1 Typ: %1 - + Sous-type : %1 Undertyp: %1 - + Position : %1 Position: %1 - + Rotation : %1° Rotation: %1° - + Dimensions : %1*%2 Storlek: %1*%2 - + Bornes : %1 Anslutningar: %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Plats: %1 - + Retrouver dans le panel Hitta i panelen - + Éditer l'élément Redigera symbol @@ -2693,60 +2698,60 @@ Alla objekt och mappar som finns i den här mappen kommer att raderas. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip Dubbelklicka för att kollapsa eller expandera detta projekt - + Cartouches embarqués Inbyggda titelblock - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Dubbelklicka för att kollapsa eller expandera detta inbyggda titelblockbibliotek - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Dra och släpp detta titelblock på ett blad för att applicera det. - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Dubbelklicka för att kollapsa eller expandera QElectroTechs titelbockbibliotek - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Detta är det bibliotek med titelblock som medföljer QElectroTech. Installerad som en systemkomponent kan du normalt inte redigera den. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip Dubbelklicka för att kollapsa eller expandera organisationens titelblockbibliotek - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Detta är organisationens bibliotek med titelblock - använd den för att skapa, lagra och redigera organisationens egna titelblock. - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Dubbelklicka för att kollapsa eller expandera ditt personliga titelblockbibliotek - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Detta är ditt personliga bibliotek med titelblock - använd den för att skapa, lagra och redigera dina egna titelblock. @@ -2755,97 +2760,97 @@ Alla objekt och mappar som finns i den här mappen kommer att raderas. ElementsPanelWidget - + Ouvrir le dossier correspondant Öppna underliggande mapp i filsystemet - + Copier le chemin Kopiera sökväg - + Basculer vers ce projet Växla till detta projekt - + Fermer ce projet Stäng detta projekt - + Propriétés du projet Projektegenskaper - + Propriétés du folio Bladegenskaper - + Ajouter un folio Lägg till blad - + Supprimer ce folio Ta bort blad - + Remonter ce folio Flytta blad uppåt - + Abaisser ce folio Flytta blad nedåt - + Remonter ce folio x10 Flytta blad uppåt x10 - + Remonter ce folio x100 Flytta blad uppåt x100 - + Remonter ce folio au debut Flytta blad överst - + Abaisser ce folio x10 Flytta blad nedåt x10 - + Abaisser ce folio x100 Flytta blad nedåt x100 - + Nouveau modèle Nytt titelblock - + Éditer ce modèle Redigera titelblock - + Supprimer ce modèle Ta bort titelblock - + Filtrer Filter @@ -5670,88 +5675,88 @@ Vill du spara ändringarna? inga aktiva projekt - + Supprimer le folio ? message box title Ta bort blad? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - Är du säker på att du vill ta bort detta blad från projektet? Denna ändring går inte att ångra. + - + Projet en lecture seule message box title Skrivskyddat projekt - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Detta projekt är skrivskyddat. Det är därför inte möjligt att städa upp det. - + Supprimer les modèles de cartouche inutilisés dans le projet Ta bort oanvända titelblock från projektet - + Supprimer les éléments inutilisés dans le projet Ta bort oanvända symboler från projektet - + Supprimer les catégories vides Ta bort tomma kataloger - + Nettoyer le projet window title Städa upp projektet - + Ajouter un folio Lägg till blad - + Revenir au debut du projet Gå till första bladet - + Aller à la fin du projet Gå till sista bladet - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Projektet innehåller inga blad - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>Öppnar det aktuella projektet...</b><br/>Skapar bladflikar:</p> - + Projet window title for a project-less ProjectView Projekt @@ -6059,866 +6064,882 @@ Tillgängliga alternativ : Projekt - + Collections Symbolbibliotek - + Aucune modification Inga ändringar - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Klicka på en åtgärd för att gå bakåt i redigeringen av schemat - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip Denna panel listar de olika åtgärder som utförts på det aktuella bladet. Om du klickar på en åtgärd återgår du till schemats status precis efter att åtgärden utfördes. - + Annulations dock title Ändringar - + E&xporter E&xportera - + Exporte le folio courant dans un autre format status bar tip Exporterar det aktuella bladet till ett annat format - + Imprimer Skriv ut - + Imprime un ou plusieurs folios du projet courant status bar tip Skriver ut ett eller flera blad från det aktuella projektet - + Exporter en pdf Exportera som pdf - + Exporte un ou plusieurs folios du projet courant status bar tip Exporterar ett eller flera blad från det aktuella projektet - + &Quitter &Avsluta - + Ferme l'application QElectroTech status bar tip Stäng programmet QElectroTech - + Annuler Ångra - + Annule l'action précédente status bar tip Ångrar föregående åtgärd - + Refaire Gör om - + Restaure l'action annulée status bar tip Återställer ångrad åtgärd - + Co&uper &Klipp ut - + Cop&ier K&opiera - + C&oller K&listra in - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Överför markerade objekt till urklipp - + Copie les éléments sélectionnés dans le presse-papier status bar tip Kopierar markerade objekt till urklipp - + Place les éléments du presse-papier sur le folio status bar tip Placera urklippsobjekt på blad - + Réinitialiser les conducteurs Återställ förbindningar - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Återställ förbindningar utan att ta hänsyn till ändringar - + Création automatique de conducteur(s) Tool tip of auto conductor Skapa förbindningar automatiskt - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Använd automatiskt skapande av förbindningar där det är möjligt - + Couleur de fond blanc/gris Tool tip of white/grey background button Bakgrundsfärg vit/grå - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Visar bladets bakgrundsfärg i vitt eller grått - + Afficher la grille Visa rutnät - + Affiche ou masque la grille des folios Visar eller döljer rutnät på blad - + Propriétés du folio Bladegenskaper - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Redigera bladegenskaper (mått, titelblock-information, förbindningsegenskaper etc.) - + Propriétés du projet Projektegenskaper - + Ajouter un folio Lägg till ett blad - + + Supprimer le folio Ta bort blad - + Nettoyer le projet Städa upp projektet - + Exporter au format CSV Exportera i CSV-format - + Ajouter une nomenclature Lägg till en förteckning - + Ajouter un sommaire Lägg till en innehållsförteckning - + Gestionnaire de borniers (DEV) Plintradshanterare (DEV) - + Lancer le plugin de création de borniers Starta plugin för skapande av plintrader - + Exporter la liste des noms de conducteurs Exportera lista med ledarnamn - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet Exportera den interna projektdatabasen - + en utilisant des onglets Användning av flikar - + Présente les différents projets ouverts des onglets status bar tip Visar de olika projekt som är öppna som flikar - + en utilisant des fenêtres Användning av fönster - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Visar de olika projekt som är öppna i underfönster - + &Mosaïque &Sida vid sida - + Dispose les fenêtres en mosaïque status bar tip Arrangera fönster sida vid sida - + &Cascade &Överlappande - + Dispose les fenêtres en cascade status bar tip Arrangera fönster överlappande - + Mode Selection Markeringsläge - + Permet de sélectionner les éléments status bar tip Används för att markera objekt - + Mode Visualisation Visningsläge - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Gör det möjligt att visa bladet utan att ändra i det - + Projet suivant Nästa projekt - + Active le projet suivant status bar tip Aktivera följande projekt - + Projet précédent Föregående projekt - + Active le projet précédent status bar tip Aktiverar föregående projekt - + &Nouveau &Nytt - + &Ouvrir &Öppna - + &Enregistrer &Spara - + Enregistrer sous Spara som - + &Fermer S&täng - + Crée un nouveau projet status bar tip Skapar ett nytt projekt - + Ouvre un projet existant status bar tip Öppnar ett befintligt projekt - + Ferme le projet courant status bar tip Stänger det aktuella projektet - + Enregistre le projet courant et tous ses folios status bar tip Sparar det aktuella projektet och alla dess blad - + Enregistre le projet courant avec un autre nom de fichier status bar tip Sparar det aktuella projektet med ett annat filnamn - + Ajouter une colonne Lägg till kolumn - + Enlever une colonne Ta bort kolumn - + Ajouter une ligne Add row Lägg till rad - + Enlever une ligne Remove row Ta bort rad - + Ajoute une colonne au folio status bar tip Lägger till en kolumn på bladet - + Enlève une colonne au folio status bar tip Tar bort en kolumn på bladet - + Agrandit le folio en hauteur status bar tip Ökar bladets höjd - + Rétrécit le folio en hauteur status bar tip Minskar bladets höjd - + Supprimer Ta bort - + Pivoter Rotera - + Orienter les textes Textrotering - + Retrouver dans le panel Hitta i panelen - + Éditer l'item sélectionné Redigera det markerade objektet - + Grouper les textes sélectionnés Gruppera markerade textetiketter - + Enlève les éléments sélectionnés du folio status bar tip Tar bort markerade objekt från bladet - + Pivote les éléments et textes sélectionnés status bar tip Roterar markerade objekt och texter - + Pivote les textes sélectionnés à un angle précis status bar tip Roterar markerade texter till en exakt vinkel - + Retrouve l'élément sélectionné dans le panel status bar tip Visar den valda symbolen i panelen - + Tout sélectionner Markera allt - + Désélectionner tout Avmarkera allt - + Inverser la sélection Invertera markering - + Sélectionne tous les éléments du folio status bar tip Markerar alla objekt på bladet - + Désélectionne tous les éléments du folio status bar tip Avmarkerar alla objekt på bladet - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip Avmarkerar markerade objekt och markerar omarkerade objekt - + Zoom avant Zooma in - + Zoom arrière Zooma ut - + Zoom sur le contenu Zooma innehåll - + Zoom adapté Zooma anpassad - + Pas de zoom Återställ zoom - + Agrandit le folio status bar tip Förstora bladet - + Rétrécit le folio status bar tip Förminska bladet - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Anpassar zoomen för att visa hela innehållet i bladet, utan ram - + Adapte le zoom exactement sur le cadre du folio status bar tip Anpassar zoomen exakt till bladets ram - + Restaure le zoom par défaut status bar tip Återställer standardzoom - + Ajouter un champ de texte Lägg till ett textfält - + Ajouter une image Lägg till en bild - + Ajouter une ligne Draw line Lägg till en linje - + Ajouter un rectangle Lägg till en rektangel - + Ajouter une ellipse Lägg till en ellips - + Ajouter une polyligne Lägg till en polygon - + Ajouter un plan de bornes Lägg till en plintrad - + Ajoute un champ de texte sur le folio actuel Lägger till ett textfält till det aktuella bladet - + Ajoute une image sur le folio actuel Lägger till en bild till det aktuella bladet - + Ajoute une ligne sur le folio actuel Lägger till en linje till det aktuella bladet - + Ajoute un rectangle sur le folio actuel Lägger till en bild till det aktuella bladet - + Ajoute une ellipse sur le folio actuel Lägger till en ellips till det aktuella bladet - + Ajoute une polyligne sur le folio actuel Lägger till en polygontill det aktuella bladet - + Ajoute un plan de bornier sur le folio actuel Lägger till en plintrad till det aktuella bladet - + Chercher/remplacer Sök/ersätt - + Outils Verktyg - + Affichage Visning - + Schéma Schema - + Ajouter Lägg till - + Profondeur toolbar title Djup - + &Fichier &Fil - + &Édition &Redigera - + &Projet &Projekt - + Afficha&ge &Visning - + Fe&nêtres Fön&ster - + &Récemment ouverts &Nyligen öppnat - + Affiche ou non la barre d'outils principale Huruvida huvudverktygsfältet ska visas eller inte - + Affiche ou non la barre d'outils Affichage Huruvida verktygsfältet Visning ska visas eller inte - + Affiche ou non la barre d'outils Schéma Huruvida verktygsfältet Schema ska visas eller inte - + Affiche ou non le panel d'appareils Huruvida symbolpanelen ska visas eller inte - + Affiche ou non la liste des modifications Huruvida listan över ändringar ska visas eller inte - + Afficher les projets Visning av projekt - - + + Projet %1 enregistré dans le repertoire: %2. Projekt %1 sparat i katalog: %2. - + Ouvrir un fichier Öppna en fil - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech-projekt (*.qet);;XML-filer (*.xml);;Alla filer (*) - - + + Impossible d'ouvrir le fichier message box title Det går inte att öppna filen - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Det verkar som om filen %1 du försöker öppna inte finns eller inte längre finns. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Det verkar som om filen du försöker öppna inte är läsbar. Det är därför omöjligt att öppna den. Kontrollera filens behörigheter. - + Ouverture du projet en lecture seule message box title Öppna projektet i skrivskyddat läge - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Det verkar som om projektet du försöker öppna inte är skrivbart. Det kommer därför att öppnas som skrivskyddat. - - + + Échec de l'ouverture du projet message box title Det går inte att öppna projektet - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Det verkar som om filen "%1" inte är en QElectroTech-projektfil. Den kan inte öppnas. - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dubbelklicka för att avsluta polygonen, högerklicka för att ångra den sista punkten - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe Grupp - + Éditer l'élement edit element Redigera symbol - + Éditer le champ de texte edit text field Redigera textfält - + Éditer l'image edit image Redigera bild - + Éditer le conducteur edit conductor Redigera förbindning - + Éditer l'objet sélectionné edit selected item Redigera markerat objekt - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content Ett fel uppstod när filen "%1" öppnades. - + Active le projet « %1 » Aktiverar projektet "%1" - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Fel @@ -7215,21 +7236,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Det går inte att öppna filen %1. - + Ce fichier n'est pas un document XML valide message box content Filen är inte ett giltigt XML-dokument - + Erreur toolbar title Fel @@ -7264,22 +7285,22 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - - + + Élément inexistant. message box title Symbolen finns inte. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Den valda virtuella sökvägen matchar inte en symbol. - + L'élément n'existe pas. message box content Symbolen finns inte. @@ -7329,35 +7350,45 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title Anslutning saknas - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>Utan anslutning kan symbolen inte anslutas till andra symboler via förbindningar. - + Absence de borne Anslutning saknas - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Fel</b> :<br>Bladhänvisningar får bara ha en anslutning.<br><b>Lösning</b> :<br>Kontrollera att symbolen endast har en anslutning - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + La vérification de cet élément a généré message box content Kontroll av denna symbol genererad - + %n erreur(s) errors @@ -7366,12 +7397,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et och - + %n avertissement(s) warnings @@ -7380,189 +7411,189 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 - + Erreurs Fel - + Avertissements Varningar - + Impossible d'ouvrir le fichier message box title Det går inte att öppna filen - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Det verkar som om filen %1 du försöker öppna inte finns eller inte längre finns. - + Enregistrer l'élément en cours ? dialog title Spara den aktuella symbolen? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Vill du registrera symbolen %1? - + Annuler Ångra - + Refaire Gör om - + Importer un élément à redimensionner Importera en symbol som ska storleksanpassas - + Éléments QElectroTech (*.elmt) QElectroTech-symbol (*.elmt) - + Profondeur toolbar title Djup - + Ajouter une ligne Lägg till en linje - + Ajouter un rectangle Lägg till en rektangel - + Ajouter une ellipse Lägg till en ellips - + Ajouter un polygone Lägg till en polygon - + Ajouter du texte Lägg till en text - + Ajouter un arc de cercle Lägg till en båge - + Ajouter une borne Lägg till en anslutning - + Ajouter un champ texte dynamique Lägg till ett dynamiskt textfält - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Dubbelklicka för att avsluta polygonen, högerklicka för att ångra den sista punkten - + Ajouter un texte d'élément non éditable dans les schémas Lägg till symboltext som inte är redigerbar i scheman - + Ajouter un texte d'élément pouvant être édité dans les schémas Lägg till symboltext som är redigerbar i scheman - + Parties toolbar title Delar - + Aucune modification Inga ändringar - + Éditeur d'éléments status bar message Symbolredigerare - - - + + + Echec de l'enregistrement Registrering misslyckades - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Registreringen misslyckades, villkoren är ogiltiga - + Enregistrer sous dialog title Spara som - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech-symboler (*.elmt) - + Recharger l'élément dialog title Ladda om symbol - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Du har gjort ändringar i denna symbol. Om du laddar om den kommer dessa ändringar att gå förlorade. Vill du verkligen ladda om symbolen? - + Avertissement Varning - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Att importera en stor DXF-filkan ta lite tid, @@ -8580,7 +8611,7 @@ Vad vill du göra? Text - + Importer un fichier dxf Importera en DXF-fil @@ -8694,7 +8725,7 @@ Vill du ersätta den? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Varning: symbolen har registrerats med en senare version av QElectroTech. @@ -8719,51 +8750,51 @@ Vill du ersätta den? Kompilering: - - + + Générique generic terminal element type Generisk - + Fusible fuse terminal element type Säkring - + Sectionable sectional terminal element type Frånskiljbar - + Diode diode terminal element type Diod - + Terre ground terminal element type Jord - - + + Générique generic terminal element function Generisk - + Phase phase terminal element function Fas - + Neutre neutral terminal element function Neutral @@ -8905,22 +8936,22 @@ Vill du ersätta den? Flyttar markering till bakgrunden - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Så här installerar du insticksprogrammet qet_tb_generator:<br>Besök:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Kräver Python 3.5 eller högre.<br><B><U> Första installation på Windows</B></U><br>1. Installera, om nödvändigt, Python 3.5 eller högre<br>Besök:<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U>Uppdatera på Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>användare kan köra detta script i denna mapp<br>C:\users\<användare>\AppData\Local\Programs\Python\Python36-32\Scripts <br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> Så här installerar du insticksprogrammet qet_tb_generator:<br>Besök:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U>Första installation på macOSX</B></U><br>1. Installera, om nödvändigt, paketet python 3.11, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Kör skriptet Profile.command<br> eftersom programmet använder hårdkodad PATH för att lokalisera pluginprogrammet qet-tb-generator<br>Besök:<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U>Uppdatera på macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Så här installerar du insticksprogrammet qet_tb_generator:<br>Besök:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Kräver Python 3.5 eller högre.<br><br><B><U>Första installation på Linux</B></U><br>1. Kontrollera att du har pip3 installerat: pip3 --version<br>Om inte, installera med: sudo apt-get install python3-pip<br>2. Installera programmet: sudo pip3 install qet_tb_generator<br>3. Kör programmet: qet_tb_generator<br><br><B><U>Uppdatera på Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Fel vid start av plugin qet_tb_generator @@ -14289,92 +14320,92 @@ Maximal längd: %2px WiringListExport - - + + Erreur Fel - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Spänning/protokoll - + Couleur du fil Wiring list CSV header Förbindningsfärg - + Section du fil Wiring list CSV header Förbindningstvärsnitt - + Fonction Wiring list CSV header Funktion - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_tr.ts b/lang/qet_tr.ts index 88beb5880..980e5610a 100644 --- a/lang/qet_tr.ts +++ b/lang/qet_tr.ts @@ -5,61 +5,51 @@ AboutQETDialog - À propos de QElectrotech QElectotech hakkında - À propos Hakkında - Auteurs Yazarlar - Traducteurs Çevirmenler - Contributeurs Katkıda Bulunanlar - Version Sürüm - Projet annexe Yan proje - Bibliothèques Kütüphaneler - Licenses Lisanslar - log log @@ -339,21 +329,18 @@ AddLinkDialog - Insert Link Link Ekle - Title: Başlık: - URL: URL: @@ -363,105 +350,83 @@ AddTableDialog - Ajouter un tableau Tablo ekle - Affichage Görünüm - Ajuster la taille du tableau au folio Tablo boyutunu sayfaya uydur - Ajouter de nouveau folio et tableau si nécessaire. Gerekirse yeni sayfa ve tablo ekleyin. - Nom du tableau Tablo adı - Texte des en-têtes Başlık metni - - Gauche Sol - - Centre Orta - - Droite Sağ - - Police : Yazı tipi : - - Éditer Düzenleme - - Marges : Kenar boşlukları : - - Alignement : Hizalama : - Texte du tableau Tablo metni - Configuration Yapılandırma @@ -485,13 +450,11 @@ AddTerminalStripItemDialog - Dialog Diyalog - Ajouter le plan de bornes suivant : Aşağıdaki klemens planını ekle : @@ -500,7 +463,6 @@ AlignmentTextDialog - Alignement du texte Metin hizalama @@ -542,38 +504,32 @@ AutoNumberingDockWidget - Sélection numérotation auto Otomatik Numaralandırma Seçimi - Folio Sayfa - Element I am not sure about this It should be checked Element - Conducteur İletken - Configurer les règles d'auto numérotation Otomatik numaralandırma kurallarını yapılandır - Configurer Yapılandır @@ -582,61 +538,51 @@ AutoNumberingManagementW - Form Form - Range Aralık - Apply to Selected Locations Seçili Yerlere Uygula - Apply to Selected Folios Seçili Sayfalara Uygula - Apply to Entire Project Bütün Projeye Uygula - From Başlangıç - To Bitiş - Project Status: Proje Durumu: - Update Policy Güncelleme Kuralları - Conductor İletken @@ -644,9 +590,6 @@ - - - Both Hepsi @@ -654,17 +597,12 @@ - - - Only New Sadece Yeni - - Only Existent Sadece Var Olan @@ -672,28 +610,22 @@ - - - Disable Devre Dışı - Element I am not sure about this It should be checked Element - Folio Sayfa - Existent Var Olan @@ -739,25 +671,21 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi BOMExportDialog - Dialog Diyalog - Mise en page Düzen - inclure les en-têtes başlıkları dahil et - Formater en tant que liste de materiel Malzeme listesi olarak formatla @@ -811,21 +739,17 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi BorderPropertiesWidget - Form Form - Dimensions du folio Sayfa boyutları - - px pixel pixel @@ -834,129 +758,35 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi - - x x - Lignes : Satırlar : - - Afficher les en-têtes Başlıkları göster - Colonnes : Sütunlar : - - ColumnResizerTestWidget - - - ColumnResizer Test - ColumnResizer Test - - - - GridLayout - GridLayout - - - - A line edit: - Satır düzenleyici: - - - - Spin me: - Beni döndür: - - - - A check box - Bir onay kutusu - - - - FormLayout - FormLayout - - - - One line: - Tek satır: - - - - A much bigger text area: - Çok daha büyük metin alanı: - - - - FormLayout2 - FormLayout2 - - - - Time: - Saat: - - - - Show seconds - Saniyeleri göster - - - - Details: - Ayrıntılar: - - - - Option &1 - Seçenek &1 - - - - Option &2 - Seçenek &2 - - - - Crazy QGridLayout - Crazy QGridLayout - - - - - - - PushButton - Buton - - CompositeTextEditDialog - Texte composé Metin oluşturma - Ajouter une variable : Bir değişken ekleyin : @@ -986,13 +816,11 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ConductorPropertiesDialog - Éditer les propriétés d'un conducteur İletken özelliklerini düzenleme - Appliquer les propriétés à l'ensemble des conducteurs de ce potentiel Bu gerilim hattındaki bütün iletkenlerine bu özellikleri uygula @@ -1013,278 +841,228 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ConductorPropertiesWidget - Form Form - Type Tip - Taille du texte : Metin boyutu : - Texte visible Görünür metin - activer l'option un texte par potentiel I am not sure about this.It should be checked. Sayfa potansiyeli başına birmetin göster - Afficher un texte de potentiel par folio. Sayfa potansiyeli başına bir metin göster. - Taille du texte Metin boyutu - Texte Metin - Texte : Metin : - Fonction : Fonksiyon : - Formule du texte : Metin Formülü : - Tension / Protocole : Gerilim / Protokol : - Autonumérotation Otomatik numaralandırma - éditer les numérotations Numaralandırmayı düzenle - Section du conducteur İletken kesiti - Horizontal en haut Üst yatay - Horizontal en bas Aşağı yatay - Vertical à gauche Dikey Sol - Vertical à droite Dikey sağ - Position et rotation du texte de conducteur : İletken metninin yeri ve yönü : - cable kablo - bus bus - - Unifilaire Tek Hatlı - - Nombre de phase Faz sayısı - Neutre Nötr - neutre nötr - Phase Faz - phase faz - Protective Earth Neutral Koruma ve Nötr İletkeni - PEN PEN - Terre Toprak - terre toprak - TextLabel EtiketMetni - Couleur du texte: Metin rengi: - Apparence Görünüm - Couleur secondaire : İkincil renk : - px - - Couleur : Renk : - Taille de trait : Çizgi boyutu : - - Couleur du conducteur İletken rengi - - &Multifilaire &Çoklu Hatlı - Taille : Boyut : - - Style du conducteur İletken Şekli - Style : Şekil : @@ -1311,13 +1089,11 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ConfigSaveLoaderWidget - GroupBox GroupBox - Configuration Yapılandırma @@ -1343,26 +1119,22 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi DiagramContextWidget - Form Form - Les noms ne peuvent contenir que des lettres minuscules, des chiffres et des tirets. Etiketler yalnızca küçük harfler, sayılar ve kısa çizgiler içerebilir. - Nom İsim - Valeur Değer @@ -1371,31 +1143,26 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi DiagramEditorHandlerSizeWidget - Form Form - Poignées : Tutamaçlar : - x 1 x 1 - x 2 x 2 - x 3 x 3 @@ -1521,19 +1288,16 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi DialogWaiting - Merci de patienter Lütfen bekleyiniz - Titre Başlık - TextLabel MetinEtiketi @@ -1555,13 +1319,11 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi DynamicElementTextItemEditor - Form Form - Exporter l'actuelle configuration des textes Metin yapılandırmasını dışa aktar @@ -1571,36 +1333,27 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi - - - - - ... ... - Importer une configuration de texte Metin yapılandırması içe aktar - Ajouter un texte Metin ekle - Ajouter un groupe de textes I am not sure about this. It should be checked. Grup metin ekle - Supprimer la sélection Seçimi sil @@ -1853,87 +1606,72 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi DynamicTextFieldEditor - Form Form - Conserver la rotation visuel Görsel dönmeyi koru - Texte utilisateur Kullanıcı metni - Information de l'élément Öğe bilgisi - Encadrer le texte Metni çerçevele - - Texte composé Oluşturulan metin - Couleur Renk - Police Font - Source du texte Metin Kaynağı - Rotation Döndürme - X X - Largeur Genişlik - Y Y - Alignement Hizalama @@ -1955,17 +1693,17 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi - + Modifier la police d'un champ texte Öğe metninin yazı tipini değiştir - + Modifier la couleur d'un champ texte Metin alanının rengini değiştirme - + Modifier la conservation de l'angle Açı korumasını değiştir @@ -1990,7 +1728,7 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Metin kaynağını ve metnini değiştir - + Modifier l'alignement d'un champ texte Metin alanının hizalamasını değiştirin @@ -2171,19 +1909,16 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ElementInfoPartWidget - Form Form - TextLabel Metin etiketi - Supprimer ce texte Bu metni sil @@ -2192,13 +1927,11 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ElementInfoWidget - Form Form - Exclure de la numérotation auto Otomatik numaralandırmadan hariç tut @@ -2212,100 +1945,84 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ElementPropertiesEditorWidget - Propriété de l'élément Öğe Özellikleri - - Type Tür - Type de base : I am not sure about this. It should be checked. Varsayılan tür : - Élément esclave Bağımlı Öğe - Nombre de contact représenté Temsil Edilen Switch Sayısı - Type de contact Kontak Tipi - État du contact Kontak Durumu - Élément maître Ana Öğe - Type concret Kullanım Şekli - Définir le nombre maximal d'esclaves Maksimum slave sayısını ayarla - Élément bornier Klemens öğesi - Fonction Fonksiyon - Informations Bilgiler - Nom İsim - Valeurs Değerler - + Simple Temel @@ -2340,94 +2057,99 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi Küçük Resim - + + Définition de conducteur + + + + Normalement ouvert Normalde açık - + Normalement fermé Normalde kapalı - + Inverseur Switch - + Other Diğer - + Puissance Power Switch - + Temporisé travail I am not sure about this. It should be checked. Gecikmeli Açılan - + Temporisé repos Gecikmeli Kapanan - + Temporisé travail & repos Gecikmeli Açılan Kapanan - + Bobine Bobin - + Organe de protection Koruma Elamanı - + Commutateur / bouton Anahtar / Buton - - + + Générique Genel - + Fusible Sigorta - + Séctionnable Ayrılabilir - + Diode Diyot - + Phase Faz - + Neutre Nötr - + Terre Toprak @@ -2435,102 +2157,102 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ElementPropertiesWidget - + Général Genel - + Élement Öğe - + Nom : %1 İsim : %1 - + Folio : %1 Sayfa : %1 - + Type : %1 Type : %1 - + Sous-type : %1 Alt tip : %1 - + Position : %1 Pozisyon : %1 - + Rotation : %1° Döndürme : %1° - + Dimensions : %1*%2 Boyutlar : %1*%2 - + Bornes : %1 Sınırlar : %1 - + Nombre maximum de contacts esclaves définis : %1 Tanımlı maksimum slave kontak sayısı : %1 - + Nombre de contacts esclaves utilisés : %1 Kullanılan slave kontak sayısı : %1 - + Emplacement : %1 Yerleştir : %1 - + Retrouver dans le panel I am not sure about this. It should be checked. Panelde bul - + Éditer l'élément Öğeyi düzenle @@ -2539,169 +2261,141 @@ Not: Bu durum "Otomatik Numaralandırma"'ya engel koymaz veya izi ElementQueryWidget - Form Form - Informations disponibles Mevcut bilgiler - Informations à exporter Export edilecek bilgiler - Monter la sélection Seçimi yukarı taşı - Ajouter la sélection Seçim ekle - Supprimer la sélection Seçimi sil - Descendre la sélection Seçimi aşağı taşı - Pas de filtre Filtre yok - N'est pas vide Boş değil - Est vide Boş - Contient İçeriyor - Ne contient pas İçermiyor - Est égal à Eşittir - N'est pas égale à Eşit değil - Filtre : Filtre : - Type d'éléments Öğe türü - Simples Basit - Tous Tümü - Vignettes Küçük resimler - Contacteurs et relais Kontaktörler ve röleler - Boutons et commutateurs Düğmeler ve anahtarlar - Borniers Klemensler - Organes de protection Koruma elemanları - Configuration Yapılandırma - Ouvrir la configuration sélectionné Seçili yapılandırmayı aç - Sauvegarder la configuration actuelle Mevcut yapılandırmayı kaydet - Requête SQL personnalisée Özel SQL sorgusu - Requête SQL : SQL sorgusu : @@ -3183,43 +2877,36 @@ Bu klasördeki tüm öğeler ve klasörler silinecek. EllipseEditor - Form Form - Centre : Merkez : - Y Y - X X - Vertical : Dikey : - Horizontal : Yatay : - Diamètres : Çaplar : @@ -3423,55 +3110,46 @@ Bu klasördeki tüm öğeler ve klasörler silinecek. FolioAutonumberingW - Form Form - Numérotation automatique de Folio : Sayfanın otomatik numaralandırılması : - Sélection: Seçim: - C&réer de nouveaux folios Y&eni sayfa oluştur - Numérotation automatique des folios sélectionnés Otomatik sayfa numaralandırma - Nouveaux folios Yeni Sayfalar - Options de numérotation Numaralandırma Seçenekleri - À Belirli sayfa - De Arasında @@ -3509,59 +3187,20 @@ Bir numaralandırma değişkeni şunları içerir: bir tür, bir değer ve bir a -"Artış" alanı kullanılmaz. - - FontHelpers - - - Sans Serif - @item Font name - Generic sans serif font presented in font choosers. When selected, the system will choose a real font, mandated by distro settings. - Sans Serif - - - - Serif - @item Font name - Generic serif font presented in font choosers. When selected, the system will choose a real font, mandated by distro settings. - Serif - - - - Monospace - @item Font name - Generic monospace font presented in font choosers. When selected, the system will choose a real font, mandated by distro settings. - Monospace - - - - %1 - @item Font name - %1% {1?} - - - - %1 [%2] - @item Font name [foundry] - %1 [%2] - - FormulaAssistantDialog - Assistant de formule Formül Sihirbazı - TextLabel Metin Etiketi - Formule Formül @@ -3570,31 +3209,26 @@ Bir numaralandırma değişkeni şunları içerir: bir tür, bir değer ve bir a FormulaAutonumberingW - Form Form - Dénomination automatique : Otomatik Adlandırma: - Formule Formül - Insert Formula Here e.g.: %prefix%l%c Buraya Formül Ekle Örn.:%prefix%l%c - You can use the following variables to your formula: -%prefix: Default Element Prefix -%l: Element Line @@ -3620,93 +3254,77 @@ atayabilirsiz. Metin ve sayı girişleri ayrıca mevcut. FreeTerminalEditor - Form Form - Déplacer dans : Taşı : - Type : Type : - Fonction : Fonksiyon : - LED : LED : - Appliquer le déplacement Hareketi uygula - - Générique Genel - Fusible Sigorta - Sectionnable Ayrılabilir - Diode Diyot - Terre Toprak - Phase Faz - Neutre Nötr - Sans Olmadan - Avec İle @@ -3748,19 +3366,16 @@ atayabilirsiz. Metin ve sayı girişleri ayrıca mevcut. GeneralConfigurationPage - Form Form - Apparence Görünüm - Utiliser les couleurs du système Sistem renklerini kullan @@ -3781,12 +3396,6 @@ atayabilirsiz. Metin ve sayı girişleri ayrıca mevcut. - - - - - - Par defaut Varsayılan @@ -3797,74 +3406,58 @@ atayabilirsiz. Metin ve sayı girişleri ayrıca mevcut. - - - - - - Parcourir... Göz Atın... - (Recharger les collections d'éléments pour appliquer les changements) (Değişiklikleri uygulamak için öğe kütüphanelerini yeniden yüklemelisiniz) - Projets Projeler - Sauvegarde automatique des projets (appliqué au prochain lancement de QElectroTech) Projelerin otomatik olarak yedeklenmesi (QElectroTech'in bir sonraki açılışında uygulanır) - Ne pas conserver les labels des éléments lors des copier coller #Kopyala-Yapıştır yaparken öğelerin etiketlerinden tutmayın - Utiliser les gestes du pavé tactile Touchpad hareketlerini kullan - Utiliser les numéros de folio à la place de leur position dans le projet Projedeki pozisyonlarının yerine sayfa numaralandırmasını kullan - Numéroter les colonnes de cartouche à partir de 0 (1 sinon) Choix de l'increment de depart 1 ou 0 Başlık bloğunun 0'dan başlayarak sütunlarını numaralandır(Aksi takdirde "1") - Désactivé Devredışı - min minute dk - Autoriser le dézoom au delà du folio #Yakınlaştırmanın sayfanın ötesine geçmesine izin ver @@ -3876,49 +3469,41 @@ atayabilirsiz. Metin ve sayı girişleri ayrıca mevcut. - Collections Koleksiyonlar - Accès aux collections Koleksiyonlara Erişim - Répertoire de la collection commune Ortak koleksiyon dizini - Répertoire de la collection utilisateur Kullanıcı koleksiyon dizini - Répertoire des cartouches utilisateur Kullanıcı başlık blokları dizini - Gestion des éléments Öğe Yönetimi - Mettre en valeur dans le panel les éléments fraîchement intégrés #Yeni entegre edilen öğeleri panelde vurgulayın - Chaque élément embarque des informations sur ses auteurs, sa licence, ou tout autre renseignement que vous jugerez utile dans un champ libre. Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments que vous créerez : #Her öğe,boş bi alanda "Yazarları, Lisansı veya başka bir alanda yararlı bulduğunuz veriler" hakkında bilgiler içerir. @@ -3926,91 +3511,76 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments - Appliqué au prochain lancement de QElectroTech QElectroTech'in bir sonraki başlatma işleminde uygulanır - Vous pouvez définir ici l'apparence par defaut des differents textes de QElectroTech Burada çeşitli metinlerin QElectroTech içinde varsayılan görünümünü tanımlayabilirsiniz - Grille + Clavier Izgara + Klavye - Grille : 1 - 30 Izgara: 1 - 30 - DiagramEditor xGrid Diyagram Editörü xIzgarası - DiagramEditor yGrid Diyagram Editörü yIzgarası - Utiliser des fen&êtres (appliqué au prochain lancement de QElectroTech) &Windows'u kullan (QElectroTech'in bir sonraki başlatılmasında uygulanır) - Utiliser des onglets (appliqué au prochain lance&ment de QElectroTech) &Sekmeleri kullan (QElectroTech'in bir sonraki başlatılmasında uygulanır) - Méthode de mise à l'echelle des écrans à haute densité de pixels (hdpi) (appliqué au prochain lancement de QElectroTech) : Yüksek piksel yoğunluklu ekran (hdpi) ölçeklendirme yöntemi (QElectroTech bir sonraki başlatıldığında uygulanır): - Répertoire de la collection company Company koleksiyon dizini - Répertoire des cartouches company Company antet blokları dizini - Répertoire des Macros utilisateur Kullanıcı Makroları dizini - Langues Diller - Textes Metinler - Textes d'éléments Öğelerin Metinleri @@ -4018,131 +3588,105 @@ Vous pouvez spécifier ici la valeur par défaut de ce champ pour les éléments - - - Police : Yazı Tipi : - - ° ° - Longueur : Uzunluk : - - Rotation : Dönüş: - Textes indépendants Bağımsız Metinler - Autres textes Diğer Metinler - La Grille doite etre active pour pouvoir voir les modifications. Değişiklikleri görebilmek için Izgara'nın etkin olması gerekir. - Déplacement au clavier : 1 - 30 Klavye hareketi: 1 - 30 - DiagramEditor (touche : gauche / droite) xGrid Diyagram Editörü (Tuş : Sol / Sağ) xIzgara - DiagramEditor (touche : haut / bas) yGrid Diyagram Editörü (Tuş : Yukarı / Aşağı) yIzgarası - Déplacement au clavier avec la touche ALT : 1 - 9 ALT tuşuyla Klavye hareketi : 1 - 9 - DiagramEditor (touche : gauche / droite ) xGrid Diyagram Editörü (Tuş : Sol / Sağ) xIzgara - DiagramEditor (touche : haut / bas) yGrid Diyagram Editörü (Tuş : Yukarı / Aşağı) yIzgarası - Affichage Grille Izgara Görünümü - - max: maks: - Taille des points de la grille de Diagram-Editor : 1 - 5 Diagram-Editor ızgara nokta boyutu : 1 - 5 - - min: min: - Taille des points de la grille de l'éditeur d'éléments : 1 - 5 Öğe editörü ızgara nokta boyutu : 1 - 5 - Editor Editor - Max. parts in Element Editor List Öğe Editör Listesindeki maks. parça sayısı @@ -4356,10 +3900,10 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu 2 - du dpi de l'écran 3 - Modifier le projet sur un autre ordinateur et/ou écran n'ayant pas les mêmes paramètres des points 1 et 2. UYARI: -'Yuvarlama yok' dışındaki tüm değerler aşağıdakilere bağlı olarak proje render hatalarına neden olabilir: +'Yuvarlama yok' dışındaki tüm değerler aşağıdakilere bağlı olarak proje render hatalarına neden olabilir: 1 - Seçilen değer -2 - Ekran dpi'si +2 - Ekran dpi'si 3 - Projeyi 1 ve 2. maddelerde aynı parametrelere sahip olmayan başka bir bilgisayar ve/veya ekranda değiştirme. @@ -4417,162 +3961,132 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu GraphicsTablePropertiesEditor - Form Form - Affichage Görünüm - Nom du tableau Tablo adı - Aucun Yok - Toutes Tümü - Lignes à afficher : Görüntülenecek satırlar : - Y : Y : - Tableau suivant Sonraki tablo - X : X : - Tableau précédent Önceki tablo - Tableau précédent : Önceki tablo : - Géometrie et lignes Geometri ve satırlar - Appliquer la géometrie à tous les tableaux liée à celui-ci Geometriyi buna bağlı tüm tablolara uygula - Ajuster le tableau au folio Tabloyu sayfaya uydur - TextLabel TextLabel - En tête Başlık - - Marge Kenar boşluğu - Aligement : Hizalama : - - Gauche Sol - - Centré Orta - - Droite Sağ - - Police Yazı tipi - Tableau Tablo - Alignement : Hizalama : - Contenu İçerik @@ -4634,25 +4148,21 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu ImagePropertiesWidget - Form Form - Verrouiller la position Pozisyonu Kilitle - Dimension de l'image Görüntünün Boyutu - % % @@ -4666,39 +4176,33 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu ImportElementDialog - Intégration d'un élément Bir Öğenin Entegre Edilmesi - L'élément a déjà été intégré dans le projet. Toutefois, la version que vous tentez de poser semble différente. Que souhaitez-vous faire ? Öğe zaten projeye entegre edilmiştir. Ancak, entegre etmeye çalıştığınız sürüm farklı görünüyor. Ne yapmak istiyorsunuz ? - Utiliser l'élément déjà integré #Mevcut Öğeyi Kullan - Intégrer l'élément déposé I am not sure about this. It should be checked. #Yeni çizimi entegre edin - Écraser l'élément déjà intégé I am not sure about this. It should be checked. #Mevcut öğenin üzerine yaz - Faire cohabiter les deux éléments I am not sure about this. It should be checked. #İki öğe birden varolsun @@ -4708,19 +4212,16 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu ImportElementTextPatternDialog - Dialog Diyalog - TextLabel Metin Etiketi - Écraser les textes existants Varolan metinleri sil @@ -4729,57 +4230,47 @@ Toutes valeurs autre que ‘Pas d’arrondi’ peut causer des erreurs de rendu IndiTextPropertiesWidget - Form Form - X : X : - Éditeur avancé Gelişmiş Editör - Taille : Boyut : - Angle : Açı : - - px px - ° ° - Y : Y : - Le contenu, la taille et la police du texte ne peuvent être modifié car formaté en html. Veuillez utiliser l'éditeur avancé pour cela. Metin içeriği, boyutu ve yazı tipi html'deki biçimlendirmeler nedeniyle değiştirilemez. @@ -4787,13 +4278,11 @@ Lütfen bunun için gelişmiş editörü kullanın. - Texte Metin - @@ -4802,7 +4291,6 @@ Lütfen bunun için gelişmiş editörü kullanın. - Cliquez ici pour annuler le formatage html HTML biçimlendirmeyi iptal et @@ -4911,3562 +4399,6 @@ Lütfen bunun için gelişmiş editörü kullanın. İki şablonu birden varolsun - - KAboutData - - - <p>KDE is translated into many languages thanks to the work of the translation teams all over the world.</p><p>For more information on KDE internationalization visit <a href="https://l10n.kde.org">https://l10n.kde.org</a></p> - replace this with information about your translation team - <p>KDE, dünyanın her yerindeki çeviri ekiplerinin çalışmaları sayesinde birçok dile çevrilmektedir.</p><p>KDE uluslararasılaştırması hakkında daha fazla bilgi için <a href="https://l10n.kde.org">https://l10n.kde.org</a> adresini ziyaret edin</p> - - - - KAboutData CLI - - - Show author information. - Yazar bilgilerini göster. - - - - Show license information. - Lisans bilgilerini göster. - - - - The base file name of the desktop entry for this application. - Bu uygulamanın masaüstü girişinin temel dosya adı. - - - - file name - dosya adı - - - - This application was written by somebody who wants to remain anonymous. - Bu uygulama anonim kalmak isteyen biri tarafından yazılmıştır. - - - - %1 was written by: - %1 şu kişi tarafından yazıldı: - - - - Please use https://bugs.kde.org to report bugs. - Hataları bildirmek için lütfen https://bugs.kde.org adresini kullanın. - - - - Please report bugs to %1. - Lütfen hataları %1 adresine bildirin. - - - - KAboutLicense - - - No licensing terms for this program have been specified. -Please check the documentation or the source for any -licensing terms. - - Bu program için lisanslama koşulları belirtilmemiştir. -Lisanslama koşulları için lütfen belgelere veya kaynağa bakın. - - - - - This program is distributed under the terms of the %1. - Bu program %1 koşulları altında dağıtılmaktadır. - - - - GPL v2 - @item license (short name) - GPL v2 - - - - GNU General Public License Version 2 - @item license - GNU General Public License Version 2 - - - - LGPL v2 - @item license (short name) - LGPL v2 - - - - GNU Lesser General Public License Version 2 - @item license - GNU Lesser General Public License Version 2 - - - - BSD License - @item license (short name) - BSD Lisansı - - - - BSD License - @item license - BSD Lisansı - - - - Artistic License - @item license (short name) - Artistic Lisansı - - - - Artistic License - @item license - Artistic Lisansı - - - - QPL v1.0 - @item license (short name) - QPL v1.0 - - - - Q Public License - @item license - Q Public License - - - - GPL v3 - @item license (short name) - GPL v3 - - - - GNU General Public License Version 3 - @item license - GNU General Public License Version 3 - - - - LGPL v3 - @item license (short name) - LGPL v3 - - - - GNU Lesser General Public License Version 3 - @item license - GNU Lesser General Public License Version 3 - - - - LGPL v2.1 - @item license (short name) - LGPL v2.1 - - - - GNU Lesser General Public License Version 2.1 - @item license - GNU Lesser General Public License Version 2.1 - - - - Custom - @item license - Özel - - - - Not specified - @item license - Belirtilmemiş - - - - KActionSelector - - - &Available: - @label:listbox - &Mevcut: - - - - &Selected: - @label:listbox - &Seçili: - - - - KAssistantDialog - - - &Back - @action:button go back - &Geri - - - - Go back one step - @info:tooltip - Bir adım geri git - - - - Next - @action:button Opposite to Back - İleri - - - - Finish - @action:button - Bitir - - - - KCharSelect - - - Enter a search term or character... - @info:placeholder - Bir arama terimi veya karakter girin... - - - - Enter a search term or character here - @info:tooltip - Buraya bir arama terimi veya karakter girin - - - - &Find... - @action - &Bul... - - - - Previous in History - @action:button Goes to previous character - Geçmişte Önceki - - - - Go to previous character in history - @info:tooltip - Geçmişteki önceki karaktere git - - - - Next in History - @action:button Goes to next character - Geçmişte Sonraki - - - - Go to next character in history - info:tooltip - Geçmişteki sonraki karaktere git - - - - &Back - @action go back - &Geri - - - - &Forward - @action go forward - &İleri - - - - Select a category - @info:tooltip - Bir kategori seçin - - - - Select a block to be displayed - @info:tooltip - Görüntülenecek bir blok seçin - - - - Set font - @info:tooltip - Yazı tipini ayarla - - - - Set font size - @info:tooltip - Yazı tipi boyutunu ayarla - - - - Character: - Karakter: - - - - Name: - Ad: - - - - Annotations and Cross References - Açıklamalar ve Çapraz Referanslar - - - - Alias names: - Takma adlar: - - - - Notes: - Notlar: - - - - See also: - Ayrıca bakın: - - - - Equivalents: - Eşdeğerler: - - - - Approximate equivalents: - Yaklaşık eşdeğerler: - - - - Decomposition: - Ayrıştırma: - - - - CJK Ideograph Information - CJK İdeografi Bilgisi - - - - Definition in English: - İngilizce tanım: - - - - Mandarin Pronunciation: - Mandarin Telaffuzu: - - - - Cantonese Pronunciation: - Kantonca Telaffuzu: - - - - Japanese On Pronunciation: - Japonca On Telaffuzu: - - - - Japanese Kun Pronunciation: - Japonca Kun Telaffuzu: - - - - Tang Pronunciation: - Tang Telaffuzu: - - - - Korean Pronunciation: - Korece Telaffuz: - - - - General Character Properties - Genel Karakter Özellikleri - - - - Block: - Blok: - - - - Unicode category: - Unicode kategorisi: - - - - Various Useful Representations - Çeşitli Yararlı Temsiller - - - - UTF-8: - UTF-8: - - - - UTF-16: - UTF-16: - - - - C octal escaped UTF-8: - C oktal escape UTF-8: - - - - XML decimal entity: - XML ondalık varlığı: - - - - KCharSelectData - - - European Scripts - KCharSelect section name - Avrupa Yazıları - - - - African Scripts - KCharSelect section name - Afrika Yazıları - - - - Middle Eastern Scripts - KCharSelect section name - Orta Doğu Yazıları - - - - Central Asian Scripts - KCharSelect section name - Orta Asya Yazıları - - - - South Asian Scripts - KCharSelect section name - Güney Asya Yazıları - - - - Southeast Asian Scripts - KCharSelect section name - Güneydoğu Asya Yazıları - - - - Indonesia and Oceania Scripts - KCharSelect section name - Endonezya ve Okyanusya Yazıları - - - - East Asian Scripts - KCharSelect section name - Doğu Asya Yazıları - - - - American Scripts - KCharSelect section name - Amerikan Yazıları - - - - Symbols - KCharSelect section name - Semboller - - - - Mathematical Symbols - KCharSelect section name - Matematiksel Semboller - - - - Phonetic Symbols - KCharSelect section name - Fonetik Semboller - - - - - Combining Diacritics - KCharSelect section name - Birleştirici Aksanlar - - - - Other - KCharSelect section name - Diğer - - - - Basic Latin - KCharselect unicode block name - Temel Latin - - - - Latin-1 Supplement - KCharselect unicode block name - Latin-1 Eki - - - - Latin Extended-A - KCharselect unicode block name - Latin Genişletilmiş-A - - - - Latin Extended-B - KCharselect unicode block name - Latin Genişletilmiş-B - - - - IPA Extensions - KCharselect unicode block name - IPA Eklemeleri - - - - Spacing Modifier Letters - KCharselect unicode block name - Boşluk Değiştirici Harfler - - - - Combining Diacritical Marks - KCharselect unicode block name - Birleştirici Aksan İşaretleri - - - - Greek and Coptic - KCharselect unicode block name - Yunanca ve Kıptice - - - - Cyrillic - KCharselect unicode block name - Kiril - - - - Cyrillic Supplement - KCharselect unicode block name - Kiril Eki - - - - Armenian - KCharselect unicode block name - Ermenice - - - - Hebrew - KCharselect unicode block name - İbranice - - - - Arabic - KCharselect unicode block name - Arapça - - - - Syriac - KCharselect unicode block name - Süryanice - - - - Arabic Supplement - KCharselect unicode block name - Arapça Eki - - - - Thaana - KCharselect unicode block name - Thaana - - - - NKo - KCharselect unicode block name - NKo - - - - Samaritan - KCharselect unicode block name - Samiri - - - - Mandaic - KCharselect unicode block name - Mandai - - - - Syriac Supplement - KCharselect unicode block name - Süryanice Eki - - - - Arabic Extended-A - KCharselect unicode block name - Arapça Genişletilmiş-A - - - - Devanagari - KCharselect unicode block name - Devanagari - - - - Bengali - KCharselect unicode block name - Bengalce - - - - Gurmukhi - KCharselect unicode block name - Gurmukhi - - - - Gujarati - KCharselect unicode block name - Guceratça - - - - Oriya - KCharselect unicode block name - Oriya - - - - Tamil - KCharselect unicode block name - Tamilce - - - - Telugu - KCharselect unicode block name - Telugu - - - - Kannada - KCharselect unicode block name - Kannada - - - - Malayalam - KCharselect unicode block name - Malayalam - - - - Sinhala - KCharselect unicode block name - Sinhala - - - - Thai - KCharselect unicode block name - Tayca - - - - Lao - KCharselect unicode block name - Laoca - - - - Tibetan - KCharselect unicode block name - Tibetçe - - - - Myanmar - KCharselect unicode block name - Myanmar - - - - Georgian - KCharselect unicode block name - Gürcüce - - - - Hangul Jamo - KCharselect unicode block name - Hangul Jamo - - - - Ethiopic - KCharselect unicode block name - Etiyopik - - - - Ethiopic Supplement - KCharselect unicode block name - Etiyopik Eki - - - - Cherokee - KCharselect unicode block name - Çeroki - - - - Unified Canadian Aboriginal Syllabics - KCharselect unicode block name - Birleşik Kanada Yerli Hece Yazısı - - - - Ogham - KCharselect unicode block name - Ogham - - - - Runic - KCharselect unicode block name - Runik - - - - Tagalog - KCharselect unicode block name - Tagalog - - - - Hanunoo - KCharselect unicode block name - Hanunoo - - - - Buhid - KCharselect unicode block name - Buhid - - - - Tagbanwa - KCharselect unicode block name - Tagbanwa - - - - Khmer - KCharselect unicode block name - Kmerce - - - - Mongolian - KCharselect unicode block name - Moğolca - - - - Unified Canadian Aboriginal Syllabics Extended - KCharselect unicode block name - Birleşik Kanada Yerli Hece Yazısı Genişletilmiş - - - - Limbu - KCharselect unicode block name - Limbu - - - - Tai Le - KCharselect unicode block name - Tai Le - - - - New Tai Lue - KCharselect unicode block name - Yeni Tai Lue - - - - Khmer Symbols - KCharselect unicode block name - Kmer Sembolleri - - - - Buginese - KCharselect unicode block name - Buginese - - - - Tai Tham - KCharselect unicode block name - Tai Tham - - - - Combining Diacritical Marks Extended - KCharselect unicode block name - Birleştirici Aksan İşaretleri Genişletilmiş - - - - Balinese - KCharselect unicode block name - Balice - - - - Sundanese - KCharselect unicode block name - Sunda - - - - Batak - KCharselect unicode block name - Batak - - - - Lepcha - KCharselect unicode block name - Lepça - - - - Ol Chiki - KCharselect unicode block name - Ol Chiki - - - - Cyrillic Extended-C - KCharselect unicode block name - Kiril Genişletilmiş-C - - - - Georgian Extended - KCharselect unicode block name - Gürcüce Genişletilmiş - - - - Sundanese Supplement - KCharselect unicode block name - Sunda Eki - - - - Vedic Extensions - KCharselect unicode block name - Vedik Eklemeler - - - - Phonetic Extensions - KCharselect unicode block name - Fonetik Eklemeler - - - - Phonetic Extensions Supplement - KCharselect unicode block name - Fonetik Eklemeler Eki - - - - Combining Diacritical Marks Supplement - KCharselect unicode block name - Birleştirici Aksan İşaretleri Eki - - - - Latin Extended Additional - KCharselect unicode block name - Latin Ek Genişletilmiş - - - - Greek Extended - KCharselect unicode block name - Yunanca Genişletilmiş - - - - General Punctuation - KCharselect unicode block name - Genel Noktalama - - - - Superscripts and Subscripts - KCharselect unicode block name - Üst ve Alt İndisler - - - - Currency Symbols - KCharselect unicode block name - Para Birimi Sembolleri - - - - Combining Diacritical Marks for Symbols - KCharselect unicode block name - Semboller için Birleştirici Aksan İşaretleri - - - - Letterlike Symbols - KCharselect unicode block name - Harf Benzeri Semboller - - - - Number Forms - KCharselect unicode block name - Sayı Formları - - - - Arrows - KCharselect unicode block name - Oklar - - - - Mathematical Operators - KCharselect unicode block name - Matematiksel Operatörler - - - - Miscellaneous Technical - KCharselect unicode block name - Çeşitli Teknik - - - - Control Pictures - KCharselect unicode block name - Kontrol Resimleri - - - - Optical Character Recognition - KCharselect unicode block name - Optik Karakter Tanıma - - - - Enclosed Alphanumerics - KCharselect unicode block name - Çevrelenmiş Alfanümerikler - - - - Box Drawing - KCharselect unicode block name - Kutu Çizimi - - - - Block Elements - KCharselect unicode block name - Blok Öğeleri - - - - Geometric Shapes - KCharselect unicode block name - Geometrik Şekiller - - - - Miscellaneous Symbols - KCharselect unicode block name - Çeşitli Semboller - - - - Dingbats - KCharselect unicode block name - Dingbats - - - - Miscellaneous Mathematical Symbols-A - KCharselect unicode block name - Çeşitli Matematiksel Semboller-A - - - - Supplemental Arrows-A - KCharselect unicode block name - Ek Oklar-A - - - - Braille Patterns - KCharselect unicode block name - Braille Desenleri - - - - Supplemental Arrows-B - KCharselect unicode block name - Ek Oklar-B - - - - Miscellaneous Mathematical Symbols-B - KCharselect unicode block name - Çeşitli Matematiksel Semboller-B - - - - Supplemental Mathematical Operators - KCharselect unicode block name - Ek Matematiksel Operatörler - - - - Miscellaneous Symbols and Arrows - KCharselect unicode block name - Çeşitli Semboller ve Oklar - - - - Glagolitic - KCharselect unicode block name - Glagolitik - - - - Latin Extended-C - KCharselect unicode block name - Latin Genişletilmiş-C - - - - Coptic - KCharselect unicode block name - Kıptice - - - - Georgian Supplement - KCharselect unicode block name - Gürcüce Eki - - - - Tifinagh - KCharselect unicode block name - Tifinag - - - - Ethiopic Extended - KCharselect unicode block name - Etiyopik Genişletilmiş - - - - Cyrillic Extended-A - KCharselect unicode block name - Kiril Genişletilmiş-A - - - - Supplemental Punctuation - KCharselect unicode block name - Ek Noktalama - - - - CJK Radicals Supplement - KCharselect unicode block name - CJK Radikalleri Eki - - - - Kangxi Radicals - KCharselect unicode block name - Kangxi Radikalleri - - - - Ideographic Description Characters - KCharselect unicode block name - İdeografik Açıklama Karakterleri - - - - CJK Symbols and Punctuation - KCharselect unicode block name - CJK Sembolleri ve Noktalama - - - - Hiragana - KCharselect unicode block name - Hiragana - - - - Katakana - KCharselect unicode block name - Katakana - - - - Bopomofo - KCharselect unicode block name - Bopomofo - - - - Hangul Compatibility Jamo - KCharselect unicode block name - Hangul Uyumluluk Jamo - - - - Kanbun - KCharselect unicode block name - Kanbun - - - - Bopomofo Extended - KCharselect unicode block name - Bopomofo Genişletilmiş - - - - CJK Strokes - KCharselect unicode block name - CJK Vuruşları - - - - Katakana Phonetic Extensions - KCharselect unicode block name - Katakana Fonetik Eklemeleri - - - - Enclosed CJK Letters and Months - KCharselect unicode block name - Çevrelenmiş CJK Harfleri ve Aylar - - - - CJK Compatibility - KCharselect unicode block name - CJK Uyumluluğu - - - - CJK Unified Ideographs Extension A - KCharselect unicode block name - CJK Birleşik İdeografları Eklenti A - - - - Yijing Hexagram Symbols - KCharselect unicode block name - Yijing Heksagram Sembolleri - - - - CJK Unified Ideographs - KCharselect unicode block name - CJK Birleşik İdeografları - - - - Yi Syllables - KCharselect unicode block name - Yi Heceleri - - - - Yi Radicals - KCharselect unicode block name - Yi Radikalleri - - - - Lisu - KCharselect unicode block name - Lisu - - - - Vai - KCharselect unicode block name - Vai - - - - Cyrillic Extended-B - KCharselect unicode block name - Kiril Genişletilmiş-B - - - - Bamum - KCharselect unicode block name - Bamum - - - - Modifier Tone Letters - KCharselect unicode block name - Değiştirici Ton Harfleri - - - - Latin Extended-D - KCharselect unicode block name - Latin Genişletilmiş-D - - - - Syloti Nagri - KCharselect unicode block name - Syloti Nagri - - - - Common Indic Number Forms - KCharselect unicode block name - Yaygın Hint Sayı Formları - - - - Phags-pa - KCharselect unicode block name - Phags-pa - - - - Saurashtra - KCharselect unicode block name - Saurashtra - - - - Devanagari Extended - KCharselect unicode block name - Devanagari Genişletilmiş - - - - Kayah Li - KCharselect unicode block name - Kayah Li - - - - Rejang - KCharselect unicode block name - Rejang - - - - Hangul Jamo Extended-A - KCharselect unicode block name - Hangul Jamo Genişletilmiş-A - - - - Javanese - KCharselect unicode block name - Cava - - - - Myanmar Extended-B - KCharselect unicode block name - Myanmar Genişletilmiş-B - - - - Cham - KCharselect unicode block name - Cham - - - - Myanmar Extended-A - KCharselect unicode block name - Myanmar Genişletilmiş-A - - - - Tai Viet - KCharselect unicode block name - Tai Viet - - - - Meetei Mayek Extensions - KCharselect unicode block name - Meetei Mayek Eklemeleri - - - - Ethiopic Extended-A - KCharselect unicode block name - Etiyopik Genişletilmiş-A - - - - Latin Extended-E - KCharselect unicode block name - Latin Genişletilmiş-E - - - - Cherokee Supplement - KCharselect unicode block name - Çeroki Eki - - - - Meetei Mayek - KCharselect unicode block name - Meetei Mayek - - - - Hangul Syllables - KCharselect unicode block name - Hangul Heceleri - - - - Hangul Jamo Extended-B - KCharselect unicode block name - Hangul Jamo Genişletilmiş-B - - - - High Surrogates - KCharselect unicode block name - Yüksek Vekiller - - - - High Private Use Surrogates - KCharselect unicode block name - Yüksek Özel Kullanım Vekilleri - - - - Low Surrogates - KCharselect unicode block name - Düşük Vekiller - - - - Private Use Area - KCharselect unicode block name - Özel Kullanım Alanı - - - - CJK Compatibility Ideographs - KCharselect unicode block name - CJK Uyumluluk İdeografları - - - - Alphabetic Presentation Forms - KCharselect unicode block name - Alfabetik Sunum Formları - - - - Arabic Presentation Forms-A - KCharselect unicode block name - Arapça Sunum Formları-A - - - - Variation Selectors - KCharselect unicode block name - Varyasyon Seçicileri - - - - Vertical Forms - KCharselect unicode block name - Dikey Formlar - - - - Combining Half Marks - KCharselect unicode block name - Birleştirici Yarım İşaretler - - - - CJK Compatibility Forms - KCharselect unicode block name - CJK Uyumluluk Formları - - - - Small Form Variants - KCharselect unicode block name - Küçük Form Varyantları - - - - Arabic Presentation Forms-B - KCharselect unicode block name - Arapça Sunum Formları-B - - - - Halfwidth and Fullwidth Forms - KCharselect unicode block name - Yarım Genişlik ve Tam Genişlik Formları - - - - Specials - KCharselect unicode block name - Özel - - - - Mahjong Tiles - KCharselect unicode block name - Mahjong Taşları - - - - Domino Tiles - KCharselect unicode block name - Domino Taşları - - - - Playing Cards - KCharselect unicode block name - Oyun Kartları - - - - Enclosed Alphanumeric Supplement - KCharselect unicode block name - Çevrelenmiş Alfanümerik Ek - - - - Enclosed Ideographic Supplement - KCharselect unicode block name - Çevrelenmiş İdeografik Ek - - - - Miscellaneous Symbols and Pictographs - KCharselect unicode block name - Çeşitli Semboller ve Piktograflar - - - - Emoticons - KCharselect unicode block name - Emojiler - - - - Ornamental Dingbats - KCharselect unicode block name - Süslemeli Dingbatlar - - - - Transport and Map Symbols - KCharselect unicode block name - Ulaşım ve Harita Sembolleri - - - - Alchemical Symbols - KCharselect unicode block name - Simyasal Semboller - - - - Geometric Shapes Extended - KCharselect unicode block name - Geometrik Şekiller Genişletilmiş - - - - Supplemental Arrows-C - KCharselect unicode block name - Ek Oklar-C - - - - Supplemental Symbols and Pictographs - KCharselect unicode block name - Ek Semboller ve Piktograflar - - - - Chess Symbols - KCharselect unicode block name - Satranç Sembolleri - - - - Symbols and Pictographs Extended-A - KCharselect unicode block name - Semboller ve Piktograflar Genişletilmiş-A - - - - Symbols for Legacy Computing - KCharselect unicode block name - Eski Bilgisayar Sembolleri - - - - <noncharacter> - <karakter değil> - - - - <Non Private Use High Surrogate> - <Özel Kullanım Olmayan Yüksek Vekil> - - - - <Private Use High Surrogate> - <Özel Kullanım Yüksek Vekili> - - - - <Low Surrogate> - <Düşük Vekil> - - - - <Private Use> - <Özel Kullanım> - - - - <not assigned> - <atanmamış> - - - - Non-printable - Yazdırılamaz - - - - Other, Control - Diğer, Kontrol - - - - Other, Format - Diğer, Format - - - - Other, Not Assigned - Diğer, Atanmamış - - - - Other, Private Use - Diğer, Özel Kullanım - - - - Other, Surrogate - Diğer, Vekil - - - - Letter, Lowercase - Harf, Küçük - - - - Letter, Modifier - Harf, Değiştirici - - - - Letter, Other - Harf, Diğer - - - - Letter, Titlecase - Harf, Başlık Hali - - - - Letter, Uppercase - Harf, Büyük - - - - Mark, Spacing Combining - İşaret, Boşluk Birleştirme - - - - Mark, Enclosing - İşaret, Çevreleme - - - - Mark, Non-Spacing - İşaret, Boşluksuz - - - - Number, Decimal Digit - Sayı, Ondalık Basamak - - - - Number, Letter - Sayı, Harf - - - - Number, Other - Sayı, Diğer - - - - Punctuation, Connector - Noktalama, Bağlayıcı - - - - Punctuation, Dash - Noktalama, Tire - - - - Punctuation, Close - Noktalama, Kapanış - - - - Punctuation, Final Quote - Noktalama, Son Tırnak - - - - Punctuation, Initial Quote - Noktalama, İlk Tırnak - - - - Punctuation, Other - Noktalama, Diğer - - - - Punctuation, Open - Noktalama, Açılış - - - - Symbol, Currency - Sembol, Para Birimi - - - - Symbol, Modifier - Sembol, Değiştirici - - - - Symbol, Math - Sembol, Matematik - - - - Symbol, Other - Sembol, Diğer - - - - Separator, Line - Ayırıcı, Satır - - - - Separator, Paragraph - Ayırıcı, Paragraf - - - - Separator, Space - Ayırıcı, Boşluk - - - - Unknown - Bilinmeyen - - - - KCharSelectItemModel - - - Unicode code point: - Unicode kod noktası: - - - - In decimal - Character - Ondalık olarak - - - - KColorCombo - - - Custom... - @item:inlistbox Custom color - Özel... - - - - KColumnResizerTestForms - - - Form - Form - - - - - GroupBox - GroupBox - - - - Short: - Kısa: - - - - Some long label: - Uzun etiket: - - - - KColumnResizerTestGridAndForms - - - Form - Form - - - - - GroupBox - GroupBox - - - - Short: - Kısa: - - - - CheckBox - CheckBox - - - - PushButton - Buton - - - - Some long label: - Uzun etiket: - - - - KColumnResizerTestGrids - - - Form - Form - - - - - GroupBox - GroupBox - - - - Short: - Kısa: - - - - Some long label: - Uzun etiket: - - - - KDateComboBox - - - - Next Month - @option next month - Sonraki Ay - - - - Next Year - @option next year - Sonraki Yıl - - - - Next Week - @option next week - Sonraki Hafta - - - - Tomorrow - @option tomorrow - Yarın - - - - Today - @option today - Bugün - - - - Yesterday - @option yesterday - Dün - - - - Last Week - @option last week - Geçen Hafta - - - - Last Month - @option last month - Geçen Ay - - - - Last Year - @option last year - Geçen Yıl - - - - No Date - @option do not specify a date - Tarih Yok - - - - The date you entered is invalid - @info - Girdiğiniz tarih geçersiz - - - - Date cannot be earlier than %1 - @info - Tarih %1 tarihinden önce olamaz - - - - Date cannot be later than %1 - @info - Tarih %1 tarihinden sonra olamaz - - - - KDatePicker - - - Week %1 - Hafta %1 - - - - Next year - @info:tooltip - Sonraki yıl - - - - Previous year - @info:tooltip - Önceki yıl - - - - Next month - @info:tooltip - Sonraki ay - - - - Previous month - @info:tooltip - Önceki ay - - - - Select a week - @info:tooltip - Bir hafta seçin - - - - Select a month - @info:tooltip - Bir ay seçin - - - - Select a year - @info:tooltip - Bir yıl seçin - - - - Select the current day - @info:tooltip - Bugünü seçin - - - - Close - @action:button - Kapat - - - - KDateTimeEdit - - - UTC - @item:inlistbox UTC time zone - UTC - - - - Floating - @item:inlistbox No specific time zone - Kayan - - - - The entered date and time is before the minimum allowed date and time. - @info - Girilen tarih ve saat, izin verilen minimum tarih ve saatten önce. - - - - The entered date and time is after the maximum allowed date and time. - @info - Girilen tarih ve saat, izin verilen maksimum tarih ve saatten sonra. - - - - KEditListWidget - - - &Add - @action:button - &Ekle - - - - &Remove - @action:button - &Kaldır - - - - Move &Up - @action:button - &Yukarı Taşı - - - - Move &Down - @action:button - &Aşağı Taşı - - - - KFontChooser - - - Requested Font - @title:group - İstenen Yazı Tipi - - - - Font - @option:check - Yazı Tipi - - - - Font: - @label - Yazı Tipi: - - - - Font style - @option:check - Yazı tipi stili - - - - Font style: - @label - Yazı tipi stili: - - - - Normal - @item font - Normal - - - - - Italic - @item font - İtalik - - - - - Oblique - @item font - Eğik - - - - Bold - @item font - Kalın - - - - Bold Italic - @item font - Kalın İtalik - - - - Size - @option:check - Boyut - - - - Size: - @label:listbox Font size - Boyut: - - - - Relative - @item font size - Göreceli - - - - Font size<br /><i>fixed</i> or <i>relative</i><br />to environment - @info:tooltip - Yazı tipi boyutu<br />ortama göre <i>sabit</i> veya <i>göreceli</i> - - - - Here you can switch between fixed font size and font size to be calculated dynamically and adjusted to changing environment (e.g. widget dimensions, paper size). - @info:whatsthis - Burada sabit yazı tipi boyutu ile değişen ortama (örn. widget boyutları, kağıt boyutu) göre dinamik olarak hesaplanan yazı tipi boyutu arasında geçiş yapabilirsiniz. - - - - The Quick Brown Fox Jumps Over The Lazy Dog - Hızlı Kahverengi Tilki Tembel Köpeğin Üzerinden Atlar - - - - This sample text illustrates the current settings. You may edit it to test special characters. - @info:whatsthis - Bu örnek metin mevcut ayarları gösterir. Özel karakterleri test etmek için düzenleyebilirsiniz. - - - - Show only monospaced fonts - @option:check - Yalnızca tek aralıklı yazı tiplerini göster - - - - %1 - @item Font style - %1% {1?} - - - - KFontChooserDialog - - - Select Font - @title:window - Yazı Tipi Seç - - - - KFontRequester - - - Choose font... - @info:tooltip - Yazı tipi seç... - - - - Preview of the selected font - @info:tooltip - Seçilen yazı tipinin önizlemesi - - - - This is a preview of the selected font. You can change it by clicking the "Choose Font..." button. - @info:whatsthis - Bu, seçilen yazı tipinin önizlemesidir. "Yazı tipi seç..." düğmesine tıklayarak değiştirebilirsiniz. - - - - Preview of the "%1" font - @info:tooltip - "%1" yazı tipi önizlemesi - - - - This is a preview of the "%1" font. You can change it by clicking the "Choose Font..." button. - @info:whatsthis - Bu, "%1" yazı tipinin önizlemesidir. "Yazı tipi seç..." düğmesine tıklayarak değiştirebilirsiniz. - - - - KFormat - - - y - SI prefix for 10^⁻24 - y - - - - z - SI prefix for 10^⁻21 - z - - - - a - SI prefix for 10^⁻18 - a - - - - f - SI prefix for 10^⁻15 - f - - - - p - SI prefix for 10^⁻12 - p - - - - n - SI prefix for 10^⁻9 - n - - - - µ - SI prefix for 10^⁻6 - µ - - - - m - SI prefix for 10^⁻3 - m - - - - k - SI prefix for 10^3 - k - - - - Ki - IEC binary prefix for 2^10 - Ki - - - - M - SI prefix for 10^6 - M - - - - Mi - IEC binary prefix for 2^20 - Mi - - - - G - SI prefix for 10^9 - G - - - - Gi - IEC binary prefix for 2^30 - Gi - - - - T - SI prefix for 10^12 - T - - - - Ti - IEC binary prefix for 2^40 - Ti - - - - P - SI prefix for 10^15 - P - - - - Pi - IEC binary prefix for 2^50 - Pi - - - - E - SI prefix for 10^18 - E - - - - Ei - IEC binary prefix for 2^60 - Ei - - - - Z - SI prefix for 10^21 - Z - - - - Zi - IEC binary prefix for 2^70 - Zi - - - - Y - SI prefix for 10^24 - Y - - - - Yi - IEC binary prefix for 2^80 - Yi - - - - bit - Symbol of binary digit - bit - - - - B - Symbol of byte - B - - - - m - Symbol of meter - m - - - - Hz - Symbol of hertz - Hz - - - - %1 %2 - no Prefix - value without prefix, format "<val> <unit>" - %1 %2 - - - - %1 %2%3 - MetricBinaryDialect - value with prefix, format "<val> <prefix><unit>" - %1% {1 %2%3?} - - - - %1 B - MetricBinaryDialect - MetricBinaryDialect size in bytes - %1 B - - - - %1 kB - MetricBinaryDialect - MetricBinaryDialect size in 1000 bytes - %1 kB - - - - %1 MB - MetricBinaryDialect - MetricBinaryDialect size in 10^6 bytes - %1 MB - - - - %1 GB - MetricBinaryDialect - MetricBinaryDialect size in 10^9 bytes - %1 GB - - - - %1 TB - MetricBinaryDialect - MetricBinaryDialect size in 10^12 bytes - %1 TB - - - - %1 PB - MetricBinaryDialect - MetricBinaryDialect size in 10^15 bytes - %1 PB - - - - %1 EB - MetricBinaryDialect - MetricBinaryDialect size in 10^18 byte - %1 EB - - - - %1 ZB - MetricBinaryDialect - MetricBinaryDialect size in 10^21 bytes - %1 ZB - - - - %1 YB - MetricBinaryDialect - MetricBinaryDialect size in 10^24 bytes - %1 YB - - - - %1 B - JEDECBinaryDialect - JEDECBinaryDialect memory size in bytes - %1 B - - - - %1 KB - JEDECBinaryDialect - JEDECBinaryDialect memory size in 1024 bytes - %1 KB - - - - %1 MB - JEDECBinaryDialect - JEDECBinaryDialect memory size in 10^20 bytes - %1 MB - - - - %1 GB - JEDECBinaryDialect - JEDECBinaryDialect memory size in 10^30 bytes - %1 GB - - - - %1 TB - JEDECBinaryDialect - JEDECBinaryDialect memory size in 10^40 bytes - %1 TB - - - - %1 PB - JEDECBinaryDialect - JEDECBinaryDialect memory size in 10^50 bytes - %1 PB - - - - %1 EB - JEDECBinaryDialect - JEDECBinaryDialect memory size in 10^60 bytes - %1 EB - - - - %1 ZB - JEDECBinaryDialect - JEDECBinaryDialect memory size in 10^70 bytes - %1 ZB - - - - %1 YB - JEDECBinaryDialect - JEDECBinaryDialect memory size in 10^80 bytes - %1 YB - - - - %1 B - IECBinaryDialect - IECBinaryDialect size in bytes - %1 B - - - - %1 KiB - IECBinaryDialect - IECBinaryDialect size in 1024 bytes - %1 KiB - - - - %1 MiB - IECBinaryDialect - IECBinaryDialect size in 10^20 bytes - %1 MiB - - - - %1 GiB - IECBinaryDialect - IECBinaryDialect size in 10^30 bytes - %1 GiB - - - - %1 TiB - IECBinaryDialect - IECBinaryDialect size in 10^40 bytes - %1 TiB - - - - %1 PiB - IECBinaryDialect - IECBinaryDialect size in 10^50 bytes - %1 PiB - - - - %1 EiB - IECBinaryDialect - IECBinaryDialect size in 10^60 bytes - %1 EiB - - - - %1 ZiB - IECBinaryDialect - IECBinaryDialect size in 10^70 bytes - %1 ZiB - - - - %1 YiB - IECBinaryDialect - IECBinaryDialect size in 10^80 bytes - %1 YiB - - - - %1m%2.%3s - @item:intext Duration format minutes, seconds and milliseconds - %1d%2.%3s - - - - %1m%2s - @item:intext Duration format minutes and seconds - %1d%2s - - - - %1h%2m - @item:intext Duration format hours and minutes - %1s%2d - - - - %1h%2m%3.%4s - @item:intext Duration format hours, minutes, seconds, milliseconds - %1s%2d%3.%4s - - - - %1h%2m%3s - @item:intext Duration format hours, minutes, seconds - %1s%2d%3s - - - - %1:%2.%3 - @item:intext Duration format minutes, seconds and milliseconds - %1% {1:%2.%3?} - - - - - %1:%2 - @item:intext Duration format minutes and seconds ----------- -@item:intext Duration format hours and minutes - %1% {1:%2?} - - - - %1:%2:%3.%4 - @item:intext Duration format hours, minutes, seconds, milliseconds - %1% {1:%2:%3.%4?} - - - - %1:%2:%3 - @item:intext Duration format hours, minutes, seconds - %1% {1:%2:%3?} - - - - %1 days - @item:intext %1 is a real number, e.g. 1.23 days - %1 gün - - - - %1 hours - @item:intext %1 is a real number, e.g. 1.23 hours - %1 saat - - - - %1 minutes - @item:intext %1 is a real number, e.g. 1.23 minutes - %1 dakika - - - - %1 seconds - @item:intext %1 is a real number, e.g. 1.23 seconds - %1 saniye - - - - %n millisecond(s) - @item:intext %1 is a whole number - - - - %n milliseconds - %n millisecond - - - - %n day(s) - @item:intext %n is a whole number - - - - %n days - %n day - - - - %n hour(s) - @item:intext %n is a whole number - - - - %n hours - %n hour - - - - %n minute(s) - @item:intext %n is a whole number - - - - %n minutes - %n minute - - - - %n second(s) - @item:intext %n is a whole number - - - - %n seconds - %n second - - - - - - %1 and %2 - @item:intext days and hours. This uses the previous item:intext messages. If this does not fit the grammar of your language please contact the i18n team to solve the problem ----------- -@item:intext hours and minutes. This uses the previous item:intext messages. If this does not fit the grammar of your language please contact the i18n team to solve the problem ----------- -@item:intext minutes and seconds. This uses the previous item:intext messages. If this does not fit the grammar of your language please contact the i18n team to solve the problem - %1 ve %2 - - - - Invalid date - used when a relative date string can't be generated because the date is invalid - Geçersiz tarih - - - - In two days - İki gün içinde - - - - Tomorrow - Yarın - - - - Today - Bugün - - - - Yesterday - Dün - - - - Two days ago - İki gün önce - - - - Just now - Az önce - - - - %1 minutes ago - %1 dakika önce - - - - %1, %2 - relative datetime with %1 result of formatReleativeDate() and %2 the formatted time If this does not fit the grammar of your language please contact the i18n team to solve the problem - %1, %2 - - - - KLed - - - LED on - Accessible name of a Led whose state is on - LED açık - - - - LED off - Accessible name of a Led whose state is off - LED kapalı - - - - KMessageBox - - - . - @action:button post-filter - . - - - - Details - Ayrıntılar - - - - - Question - Soru - - - - - - - - Do not ask again - Tekrar sorma - - - - - - Warning - Uyarı - - - - - Error - Hata - - - - - - Sorry - Üzgünüm - - - - Information - Bilgi - - - - Do not show this message again - Bu mesajı tekrar gösterme - - - - KMessageDialog - - - Details - Ayrıntılar - - - - Question - Soru - - - - Warning - Uyarı - - - - Information - Bilgi - - - - Sorry - Üzgünüm - - - - Error - Hata - - - - KMessageWidget - - - &Close - @action:button - &Kapat - - - - Close message - @info:tooltip - Mesajı kapat - - - - KMimeTypeChooser - - - Search for file type or filename pattern... - @info:placeholder - Dosya türü veya dosya adı kalıbı ara... - - - - &Filter: - @label:textbox - &Filtre: - - - - MIME Type - @title:column - MIME Türü - - - - Comment - @title:column - Yorum - - - - Patterns - @title:column - Desenler - - - - &Edit... - @action:button - &Düzenle... - - - - Launch the MIME type editor - @info:tooltip - MIME türü editörünü başlat - - - - KNewPasswordDialog - - - Password must be at least %n character(s) long. - @info - - - - Password must be at least %n characters long - Password must be at least %n character long - - - - Password is empty. - @info - Parola boş. - - - - Passwords do not match. - @info - Parolalar eşleşmiyor. - - - - Passwords match. - @info - Parolalar eşleşiyor. - - - - Low Password Strength - @title:window - Düşük Parola Gücü - - - - The password you have entered has a low strength. To improve the strength of the password, try: - - using a longer password; - - using a mixture of upper- and lower-case letters; - - using numbers or symbols as well as letters. - -Would you like to use this password anyway? - Girdiğiniz parolanın gücü düşük. Parola gücünü artırmak için şunları deneyin: - - daha uzun bir parola kullanın; - - büyük ve küçük harf karışımı kullanın; - - harflerin yanı sıra rakam veya sembol kullanın. - -Yine de bu parolayı kullanmak ister misiniz? - - - - KNewPasswordWidget - - - - Password: - @label:textbox - Parola: - - - - - &Verify: - @label:textbox - &Doğrula: - - - - - Password strength &meter: - @label - Parola gücü &ölçer: - - - - The password strength meter gives an indication of the security of the password you have entered. To improve the strength of the password, try:<ul><li>using a longer password;</li><li>using a mixture of upper- and lower-case letters;</li><li>using numbers or symbols, such as #, as well as letters.</li></ul> - @info:whatsthis - Parola gücü ölçer, girdiğiniz parolanın güvenliği hakkında bir gösterge sağlar. Parola gücünü artırmak için şunları deneyin:<ul><li>daha uzun bir parola kullanın;</li><li>büyük ve küçük harf karışımı kullanın;</li><li>harflerin yanı sıra # gibi rakam veya sembol kullanın.</li></ul> - - - - KPasswordDialog - - - - Supply a username and password below. - Aşağıya bir kullanıcı adı ve parola girin. - - - - - No password, use anonymous (or &guest) login - @option:radio - Parola yok, anonim (veya &misafir) giriş kullan - - - - - Use this password: - @option:radio - Bu parolayı kullan: - - - - - Username: - @label:textbox - Kullanıcı adı: - - - - - Domain: - @label:textbox - Etki alanı: - - - - - Password: - @label:textbox - Parola: - - - - - Remember password - @option:check - Parolayı hatırla - - - - Password - @title:window - Parola - - - - Show Contextual Help - Bağlamsal Yardımı Göster - - - - Supply a password below. - Aşağıya bir parola girin. - - - - KPixmapRegionSelectorDialog - - - Select Region of Image - @title:window - Resim Bölgesi Seç - - - - Please click and drag on the image to select the region of interest: - @label:chooser - İlgilenilen bölgeyi seçmek için lütfen resim üzerinde tıklayıp sürükleyin: - - - - KPixmapRegionSelectorWidget - - - Image Operations - @title:menu - Resim İşlemleri - - - - &Rotate Clockwise - @action:inmenu - Saat Yönünde &Döndür - - - - Rotate &Counterclockwise - @action:inmenu - Saat Yönünün &Tersine Döndür - - - - KPluginLoader - - - The library %1 does not offer a KPluginFactory. - %1 kütüphanesi bir KPluginFactory sunmuyor. - - - - KRecentFilesMenu - - - No Entries - Giriş Yok - - - - Clear List - Listeyi Temizle - - - - Recent Files - Son Kullanılan Dosyalar - - - - KSqueezedTextLabel - - - &Copy Full Text - @action:inmenu - Tam Metni &Kopyala - - - - KStandardGuiItem - - - &OK - &Tamam - - - - &Cancel - &Vazgeç - - - - &Yes - &Evet - - - - Yes - Evet - - - - &No - &Hayır - - - - No - Hayır - - - - &Discard - &Vazgeç - - - - Discard changes - Değişiklikleri vazgeç - - - - Pressing this button will discard all recent changes made in this dialog. - Bu düğmeye basıldığında bu diyalogda yapılan tüm son değişiklikler iptal edilir. - - - - &Save - &Kaydet - - - - Save data - Veriyi kaydet - - - - &Do Not Save - &Kaydetme - - - - Do not save data - Veriyi kaydetme - - - - Save &As... - &Farklı Kaydet... - - - - Save file with another name - Dosyayı başka bir adla kaydet - - - - &Apply - &Uygula - - - - Apply changes - Değişiklikleri uygula - - - - When you click <b>Apply</b>, the settings will be handed over to the program, but the dialog will not be closed. -Use this to try different settings. - <b>Uygula</b> düğmesine tıkladığınızda ayarlar programa aktarılır, ancak diyalog kapatılmaz. -Farklı ayarları denemek için bunu kullanın. - - - - Administrator &Mode... - Yönetici &Modu... - - - - Enter Administrator Mode - Yönetici Moduna Gir - - - - When you click <b>Administrator Mode</b> you will be prompted for the administrator (root) password in order to make changes which require root privileges. - <b>Yönetici Modu</b> düğmesine tıkladığınızda, root ayrıcalıkları gerektiren değişiklikler yapmak için yönetici (root) parolası istenir. - - - - C&lear - &Temizle - - - - Clear input - Girişi temizle - - - - Clear the input in the edit field - Düzenleme alanındaki girişi temizle - - - - &Help - show help - &Yardım - - - - Show help - Yardımı göster - - - - &Close - &Kapat - - - - Close the current window or document - Geçerli pencereyi veya belgeyi kapat - - - - &Close Window - Pencereyi &Kapat - - - - Close the current window. - Geçerli pencereyi kapat. - - - - &Close Document - Belgeyi &Kapat - - - - Close the current document. - Geçerli belgeyi kapat. - - - - &Defaults - &Varsayılanlar - - - - Reset all items to their default values - Tüm öğeleri varsayılan değerlerine sıfırla - - - - &Back - go back - &Geri - - - - Go back one step - Bir adım geri git - - - - &Forward - go forward - &İleri - - - - Go forward one step - Bir adım ileri git - - - - &Print... - &Yazdır... - - - - Opens the print dialog to print the current document - Geçerli belgeyi yazdırmak için yazdırma diyaloğunu açar - - - - C&ontinue - &Devam - - - - Continue operation - İşlemi sürdür - - - - &Delete - &Sil - - - - Delete item(s) - Öğe(leri) sil - - - - &Open... - &Aç... - - - - Open file - Dosyayı aç - - - - &Quit - &Çıkış - - - - Quit application - Uygulamadan çık - - - - &Reset - &Sıfırla - - - - Reset configuration - Yapılandırmayı sıfırla - - - - &Insert - Verb - &Ekle - - - - Confi&gure... - &Yapılandır... - - - - &Find - &Bul - - - - Stop - Durdur - - - - Add - Ekle - - - - Remove - Kaldır - - - - Test - Test - - - - Properties - Özellikler - - - - &Overwrite - Üzerine &Yaz - - - - KTimeComboBox - - - The time you entered is invalid - @info - Girdiğiniz saat geçersiz - - - - Time cannot be earlier than %1 - @info - Saat %1 saatinden önce olamaz - - - - Time cannot be later than %1 - @info - Saat %1 saatinden sonra olamaz - - - - KToggleFullScreenAction - - - Exit F&ull Screen Mode - @action:inmenu - &Tam Ekran Modundan Çık - - - - Exit Full Screen - @action:intoolbar - Tam Ekrandan Çık - - - - Exit full screen mode - @info:tooltip - Tam ekran modundan çık - - - - F&ull Screen Mode - @action:inmenu - &Tam Ekran Modu - - - - Full Screen - @action:intoolbar - Tam Ekran - - - - Display the window in full screen - @info:tooltip - Pencereyi tam ekranda göster - - LineEditor @@ -8512,51 +4444,42 @@ Farklı ayarları denemek için bunu kullanın. - Form Form - X1 : X1 : - Y1 : Y1 : - X2 : X2 : - Fin 1 : Uç 1 : - Y2 : Y2 : - Fin 2 : Uç 2 : - - Longueur : Uzunluk : @@ -8565,43 +4488,36 @@ Farklı ayarları denemek için bunu kullanın. LinkSingleElementWidget - Form Form - Voir cet élément Bu öğeyi gör - Délier Bağı Çöz - Voir l'élément lié Bağlı öğeye bakın - Cet élément est déjà lié Bu öğe zaten bağlı - Recherche #Arama - Remarque : les éléments maîtres ayant atteint leur nombre maximal d'esclaves sont masqués. Not : maksimum slave sayısına ulaşmış master öğeler gizlenir. @@ -8710,31 +4626,26 @@ Farklı ayarları denemek için bunu kullanın. MarginsEditDialog - Editer les marges Kenar boşluklarını düzenle - Haut : Üst : - Gauche : Sol : - Droit : Sağ : - Bas : Alt : @@ -8743,31 +4654,26 @@ Farklı ayarları denemek için bunu kullanın. MasterPropertiesWidget - Form Form - Éléments liés Bağlantılı öğeler - Éléments disponibles Mevcut öğeler - <html><head/><body><p>Délier l'élément sélectionné</p></body></html> <html><head/><body><p>Seçili öğenin bağlantısını kopar</p></body></html> - <html><head/><body><p>Lier l'élément sélectionné</p></body></html> <html><head/><body><p>Seçili öğenin bağlantısını yap</p></body></html> @@ -8844,57 +4750,47 @@ Farklı ayarları denemek için bunu kullanın. MultiPasteDialog - Collage multiple Çoklu Yapıştır - Décalage Konumlandır - - px px - x: x: - y: y: - Nombre de copie Kopya Sayısı - Auto-connexion Otomatik Bağlantı - Auto-numérotation des éléments Öğelerin otomatik numaralandırılması - Auto-numérotation des conducteurs İletkenlerin Otomatik Numaralandırılması @@ -8908,7 +4804,6 @@ Farklı ayarları denemek için bunu kullanın. NameListDialog - Dialog Diyalog @@ -8922,31 +4817,26 @@ Farklı ayarları denemek için bunu kullanın. NameListWidget - Form Form - Langue Dil - Texte Metin - Ajouter une ligne Bir çizgi ekle - Copier dans le presse papier Pano'ya kopyala @@ -9081,7 +4971,6 @@ Farklı ayarları denemek için bunu kullanın. NumPartEditorW - Form Form @@ -9286,43 +5175,36 @@ Farklı ayarları denemek için bunu kullanın. PolygonEditor - Form Form - X X - Y Y - Polygone fermé Kapalı çokgen - Ajouter un point Bir nokta ekle - Supprimer ce point Bu noktayı sil - Points du polygone : Poligonun noktaları : @@ -9359,13 +5241,11 @@ Farklı ayarları denemek için bunu kullanın. PotentialSelectorDialog - Sélectionner le potentiel éléctrique Elektrik potansiyelini seç - Vous tentez de lier deux potentiels différents ensemble. Veuillez choisir les propriétées à appliquer au nouveau potentiel. İki farklı potansiyeli birbirine bağlamaya çalışıyorsunuz. @@ -9439,7 +5319,7 @@ Section du conducteur : %1 Ajouter au bus: %1 - Bus'a ekle: %1 + Bus'a ekle: %1 @@ -9544,19 +5424,16 @@ Aşağıdaki değişkenler uyumsuz : ProjectDBModelPropertiesWidget - Form Form - Requête Sorgu - Recharger Yeniden yükle @@ -9592,193 +5469,161 @@ Aşağıdaki değişkenler uyumsuz : ProjectPrintWindow - MainWindow MainWindow - Folios à imprimer : Yazdırılacak sayfakar : - Tout cocher Tümünü işaretle - Tout décocher Tümünü Kaldır - Toutes les dates Tüm tarihler - À partir de la date du : Şu tarihten itibaren : - À la date du : Şu tarihe kadar : - Option de rendu Render seçeneği - Dessiner le cadre Çerçeveyi çiz - Dessiner le cartouche Anteti çiz - Conserver les couleurs des conducteurs İletkenlerin renklerini koru - Dessiner les bornes Terminalleri çiz - Option d'impression Yazdırma seçeneği - Adapter le folio à la page Sayfaya sığdırın - Utiliser toute la feuille Tüm sayfayı kullan - Si cette option est cochée, le folio sera agrandi ou rétréci de façon à remplir toute la surface imprimable d'une et une seule page." Bu seçenek işaretlenirse, sayfa yalnızca bir sayfanın yazdırılabilir alanını dolduracak şekilde büyütülür veya küçültülür." - Si cette option est cochée, les marges de la feuille seront ignorées et toute sa surface sera utilisée pour l'impression. Cela peut ne pas être supporté par votre imprimante. Bu seçenek işaretlenirse, sayfanın kenar boşlukları yok sayılır ve tüm yüzeyi yazdırma için kullanılır. Bu, yazıcınız tarafından desteklenmeyebilir. - toolBar toolBar - Ajuster la largeur Genişliği Ayarla - Ajuster la page Sayfayı Ayarla - Zoom arrière Uzaklaştır - Zoom avant Yakınlaştır - Paysage Sayfa boyunca - Portrait Portre - Première page İlk sayfa - Page précédente Önceki sayfa - Page suivante Sonraki sayfa - Dernière page Son sayfa - Afficher une seule page Tek sayfa göster - Afficher deux pages İki sayfa göster - Afficher un aperçu de toutes les pages Tüm sayfaları önizle - mise en page sayfa düzeni @@ -9807,7 +5652,7 @@ Aşağıdaki değişkenler uyumsuz : Mise en page (non disponible sous Windows pour l'export PDF) - Sayfa düzeni (Windows'ta PDF export için kullanılamaz) + Sayfa düzeni (Windows'ta PDF export için kullanılamaz) @@ -9863,11 +5708,6 @@ Değişiklikleri kaydetmek ister misiniz ? message box title Sayfa silinsin mi ? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. - message box content - Bu sayfayı projeden silmek istediğinizden emin misiniz? Bu değişiklik geri çevrilemez. - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. @@ -9954,7 +5794,6 @@ Değişiklikleri kaydetmek ister misiniz ? PropertiesEditorDockWidget - Propriétés de la sélection Seçim ayarları @@ -11141,394 +6980,343 @@ Silmek için ilgili klemenslerin köprülerini kaldırın ve/veya seviyelerini s QETElementEditor - &Nouveau &Yeni - &Ouvrir &Aç - &Ouvrir depuis un fichier &Dosyadan Aç - &Enregistrer &Kaydet - Enregistrer sous Farklı kaydet - Enregistrer dans un fichier Bir dosyaya kaydet - Recharger Yeniden yükle - Tout sélectionner Tümünü seç - QElectroTech - Éditeur d'élément QElectroTech - Öğe Editörü - &Aide &Yardım - Annulations İptal edilenler - Parties Parçalar - Informations Bilgiler - Outils Araçlar - Affichage Görünüm - Élément Öğe - Annulation İptal - &Fermer cet éditeur Bu editörü &kapat - Fermer cet éditeur Bu editörü kapat - Désélectionner tout Hiçbirini Seçme - Co&uper &Kes - Cop&ier Kop&yala - C&oller &Yapıştır - C&oller dans la zone Alana &yapıştır - Un fichier Bir dosya - Un élément Bir öğe - À &propos de QElectroTech QElectroTech &Hakkında - Affiche des informations sur QElectroTech QElectroTech ile ilgili bilgileri görüntüle - Manuel en ligne Çevrimiçi kullanım kılavuzu - Lance le navigateur par défaut vers le manuel en ligne de QElectroTech QElectroTech Çevrim içi Klavuzunu varsayılan tarayıcı ile başlat - Chaine Youtube Youtube kanalı - Lance le navigateur par défaut vers la chaine Youtube de QElectroTech QElectroTech’in Youtube kanalını varsayılan tarayıcıda başlatın - Soutenir le projet par un don Projeye bağış yaparak destek olun - Soutenir le projet QElectroTech par un don QElectroTech projesine bağış yaparak destek olun - À propos de &Qt &Qt Hakkında - Affiche des informations sur la bibliothèque Qt Qt kütüphanesi bilgilerini görüntüler - Rotation Döndürme - Fine-Rotation İnce-Döndürme - Mirror Ayna - Flip Çevir - Importer un dxf DXF import et - importer un élément à redimensionner yeniden boyutlandırılacak öğe import et - Inverser la sélection Seçimi ters çevir - &Supprimer &Sil - Éditer le nom et les traductions de l'élément Öğenin adını ve çevirilerini düzenle - Éditer les informations sur l'auteur Yazar bilgilerini düzenle - Éditer les propriétés de l'élément Öğenin özelliklerini düzenleme - + Annuler İptal - + Refaire Yeniden yap - + Profondeur toolbar title Derinlik - Zoom avant Yakınlaştır - Zoom arrière Uzaklaştır - Zoom adapté Uyarlanmış zum - Pas de zoom Yakınlaştırma yok - + Ajouter une ligne Bir Çizgi ekle - + Ajouter un rectangle Bir dikdörtgen ekle - + Ajouter une ellipse Bir elips ekle - + Ajouter un polygone Çokgen ekle - + Ajouter du texte Metin ekle - + Ajouter un arc de cercle Yay ekle - + Ajouter une borne Bir terminal ekle - + Ajouter un champ texte dynamique Dinamik metin alanı ekle - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Şekli bitirmek için çift tıkla, sağ tık ile son noktayı iptal et - + Ajouter un texte d'élément non éditable dans les schémas Diyagramlara düzenlemez bir metin öğesi ekleyin - + Ajouter un texte d'élément pouvant être édité dans les schémas Diyagramlara düzenlenebilir bir metin öğesi ekleyin - + Parties toolbar title Parçalar - + Avertissement Uyarılar - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Büyük bir DXF import etmek zaman alabilir @@ -11536,25 +7324,21 @@ lütfen import sırasında bekleyin... - &Fichier &Dosya - &Édition &Baskı - Afficha&ge &Görünüm - Coller depuis... Yapıştır ... @@ -11571,12 +7355,12 @@ lütfen import sırasında bekleyin... [Salt Okunur] - + Aucune modification Değişiklik yok - + Éditeur d'éléments status bar message Öğe Editörü @@ -11590,35 +7374,35 @@ lütfen import sırasında bekleyin... - + Absence de borne warning title Terminal Yokluğu - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>Bir terminalin yokluğunda, eleman diğer elemanlara iletkenler ile bağlanamaz. - + Absence de borne Terminal yokluğu - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Hata</b> :<br>Sayfa raporlarının yanlızca bir terminali olmalıdır.<br><b>Çözüm</b> :<br>Öğelerin yanlızca bir terminali olduğunu kontrol edin - + La vérification de cet élément a généré message box content Bu öğenin doğrulaması oluşturuldu - + %n erreur(s) errors @@ -11626,12 +7410,12 @@ lütfen import sırasında bekleyin... - + et ve - + %n avertissement(s) warnings @@ -11639,18 +7423,18 @@ lütfen import sırasında bekleyin... - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 - + Erreurs Hatalar - + Avertissements Uyarılar @@ -11668,21 +7452,21 @@ lütfen import sırasında bekleyin... - + Impossible d'ouvrir le fichier %1. message box content %1 Dosyası açılamıyor. - + Ce fichier n'est pas un document XML valide message box content Bu dosya geçerli bir XML belgesi değil - + Erreur toolbar title Hata @@ -11726,49 +7510,59 @@ lütfen import sırasında bekleyin... Çok fazla ilkel, liste oluşturulmadı: %1 - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Impossible d'ouvrir le fichier message box title Dosya açılamadı - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Açmaya çalıştığınız %1 dosyası artık mevcut değil gibi görünüyor. - + Recharger l'élément dialog title Öğeyi yeniden yükle - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Bu öğede değişiklik yaptınız. Yeniden yüklerseniz, bu değişiklikler kaybolacaktır. Öğeyi gerçekten yeniden yüklemek istiyor musunuz? - + Importer un élément à redimensionner Yeniden boyutlandırılacak bir öğe import et - + Éléments QElectroTech (*.elmt) QElectroTech Öğeleri (* .elmt) - - - + + + Echec de l'enregistrement Kaydedilemedi - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides I am not sure about this.It should be checked. @@ -11776,25 +7570,25 @@ les conditions requises ne sont pas valides Şartlar sağlanamıyor - + Enregistrer sous dialog title Farklı kaydet - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech Öğeleri (* .elmt) - + Enregistrer l'élément en cours ? dialog title Mevcut öğeyi kaydet ? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name %1 öğesini kaydetmek istiyor musunuz? @@ -11814,22 +7608,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title Varolmayan öğe. - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Seçilen sanal yol bir öğe ile eşleşmiyor. - + L'élément n'existe pas. message box content Öğe mevcut değil. @@ -12799,7 +8593,7 @@ Değiştirmek ister misiniz? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Uyarı: Ürün QElectroTech'in daha sonraki bir sürümü ile kaydedilmiştir. @@ -13601,12 +9395,12 @@ Değiştirmek ister misiniz? To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - qet_tb_generator eklentisini kurmak için<br>Şu adresi ziyaret edin :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> macOSX'te ilk kurulum</B></U><br>1. Gerekirse yalnızca python 3.11 paketini kurun, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Profile.command betiğini çalıştırın<br>çünkü program qet-tb-generator eklentisini bulmak için hardcoded PATH kullanır <br> Şu adresi ziyaret edin :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> macOSX'te güncelleme</B></U><br> pip3 install --upgrade qet_tb_generator<br> + qet_tb_generator eklentisini kurmak için<br>Şu adresi ziyaret edin :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> macOSX'te ilk kurulum</B></U><br>1. Gerekirse yalnızca python 3.11 paketini kurun, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Profile.command betiğini çalıştırın<br>çünkü program qet-tb-generator eklentisini bulmak için hardcoded PATH kullanır <br> Şu adresi ziyaret edin :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> macOSX'te güncelleme</B></U><br> pip3 install --upgrade qet_tb_generator<br> To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - qet_tb_generator eklentisini kurmak için<br>Şu adresi ziyaret edin :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Python 3.5 veya üzeri gerektirir.<br><br><B><U> Linux'ta ilk kurulum</B></U><br>1. pip3'ün kurulu olduğunu kontrol edin: pip3 --version<br>Kurulu değilse şu komutla kurun: sudo apt-get install python3-pip<br>2. Programı kurun: sudo pip3 install qet_tb_generator<br>3. Programı çalıştırın: qet_tb_generator<br><br><B><U> Linux'ta güncelleme</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> + qet_tb_generator eklentisini kurmak için<br>Şu adresi ziyaret edin :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Python 3.5 veya üzeri gerektirir.<br><br><B><U> Linux'ta ilk kurulum</B></U><br>1. pip3'ün kurulu olduğunu kontrol edin: pip3 --version<br>Kurulu değilse şu komutla kurun: sudo apt-get install python3-pip<br>2. Programı kurun: sudo pip3 install qet_tb_generator<br>3. Programı çalıştırın: qet_tb_generator<br><br><B><U> Linux'ta güncelleme</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> @@ -13629,15 +9423,15 @@ Değiştirmek ister misiniz? Yapıştır - - - + + + this is an error in the code bu kodda bir hatadır @@ -13761,51 +9555,51 @@ Değiştirmek ister misiniz? %1 klemens bloğunu sırala - - + + Générique generic terminal element type Genel - + Fusible fuse terminal element type Sigorta - + Sectionable sectional terminal element type Ayrılabilir - + Diode diode terminal element type Diyot - + Terre ground terminal element type Toprak - - + + Générique generic terminal element function Genel - + Phase phase terminal element function Faz - + Neutre neutral terminal element function Nötr @@ -13836,7 +9630,7 @@ Değiştirmek ister misiniz? Bir öğe aç - + Importer un fichier dxf DXF dosyası import et @@ -13930,27 +9724,6 @@ Lütfen aşağıdaki bağlantıyı takip ederek indirin ve kurulum klasörüne Automatic terminal numbering Otomatik klemens numaralandırma - - - Path %1 doesn't exist - %1 yolu mevcut değil - - - - Failed to execute `lsof' error code %1 - `lsof' çalıştırılamadı hata kodu %1 - - - - KListOpenFilesJob is not supported on Windows - KListOpenFilesJob Windows'ta desteklenmez - - - - Change the visibility of the password - @info:tooltip - Parola görünürlüğünü değiştir - QTextOrientationWidget @@ -14051,45 +9824,37 @@ Lütfen tüm bilgileri görüntülemek için yeni bir tablo ekleyin veya mevcut RectangleEditor - Hauteur : Yükseklik: - Dimensions : Boyutlar : - y y - Coin supérieur gauche : Sol üst köşe : - Largeur : Genişlik: - - Arrondi : Round : - x x @@ -14103,37 +9868,31 @@ Lütfen tüm bilgileri görüntülemek için yeni bir tablo ekleyin veya mevcut RenameDialog - Dialog Diyalog - Nouveau nom : Yeni isim : - Écraser Üzerine yaz - Renommer Yeniden Adlndır - Annuler Vazgeç - TextLabel Metin Etiketi @@ -14147,13 +9906,11 @@ Lütfen tüm bilgileri görüntülemek için yeni bir tablo ekleyin veya mevcut ReplaceConductorDialog - Type Tür - &Multifilaire &Çoklu Hatlı @@ -14170,43 +9927,27 @@ Lütfen tüm bilgileri görüntülemek için yeni bir tablo ekleyin veya mevcut - - - - - - - - - - - - Ne pas modifier Değiştirme - En haut Yukarı - En bas Aşağı - Texte sur conducteur horizontal : Metin veya yatay iletken : - Tension / protocol : Gerilim / Protokol : @@ -14215,212 +9956,171 @@ Lütfen tüm bilgileri görüntülemek için yeni bir tablo ekleyin veya mevcut - - - - Supprimer ce texte Bu metni sil - Fonction : Fonksiyon : - Formule du texte : Metin Formülü : - Texte visible Görünür metin - - Angle : Açı : - Texte sur conducteur vertical : Metin veya dikey iletken : - Taille du texte : Metin boyutu : - Texte : Metin : - À gauche Sola doğru - À droite Sağa doğru - Couleur du conducteur İletken rengi - - ° ° - Section du conducteur İletken kesiti - Unifilaire Tek Hatlı - Protective Earth Neutral Koruyucu Topraklama Nötr - PEN PEN - Phase Faz - phase faz - - Nombre de phase Faz sayısı - Neutre Nötr - neutre nötr - Terre Toprak - terre toprak - TextLabel MetinEtiketi - PushButton Buton - Apparence Görünüm - Taille : Boyut : - - Couleur : Renk : - Style : Stil : - - Modifier Düzenleme - Couleur secondaire : İkincil renk : - Taille de trait : Çizgi boyutu : - px px @@ -14455,37 +10155,31 @@ Lütfen tüm bilgileri görüntülemek için yeni bir tablo ekleyin veya mevcut ReplaceFolioWidget - Form Form - Principales Ana - Indice Rev Rev Endeksi - Localisation Konum - Fichier : Dosya : - Disponible en tant que %title pour les modèles de cartouches Antet şablonları için %title değişkeni olarak mevcuttur @@ -14498,92 +10192,71 @@ Lütfen tüm bilgileri görüntülemek için yeni bir tablo ekleyin veya mevcut - - - - - - - - Ne pas modifier Değiştirmeyin - Disponible en tant que %author pour les modèles de cartouches Antet şablonları için %author değişkeni olarak mevcuttur - Auteur : Yazar : - Date : Tarih : - Installation : Kurulum : - Disponible en tant que %indexrev pour les modèles de cartouches Antet şablonları için %indexrev değişkeni olarak mevcuttur - Disponible en tant que %filename pour les modèles de cartouches Antet şablonları için %filenameı değişkeni olarak mevcuttur - Folio : Sayfa : - Pas de date Tarih yok - Disponible en tant que %date pour les modèles de cartouches Antet şablonları için %date değişkeni olarak mevcuttur - Date fixe : Sabit tarih: - Appliquer la date actuelle Geçerli tarihi uygula - <html><head/><body><p>Disponible en tant que %plant pour les modèles de cartouches</p></body></html> <html><head/><body><p>Antet şablonları için %plant olarak mevcut</p></body></html> - Disponible en tant que %folio pour les modèles de cartouches Les variables suivantes sont utilisables : - %id : numéro du folio courant dans le projet @@ -14597,13 +10270,11 @@ Aşağıdaki değişkenler kullanılabilir: - Disponible en tant que %locmach pour les modèles de cartouches Antet şablonları için %lochmach olarak mevcuttur - Titre : Başlık : @@ -14615,25 +10286,16 @@ Aşağıdaki değişkenler kullanılabilir: - - - - - - - Supprimer ce texte Bu metni sil - Personnalisées Özelleştir - Vous pouvez définir ici vos propres associations noms/valeurs pour que le cartouche en tienne compte. Exemple : associer le nom "volta" et la valeur "1745" remplacera %{volta} par 1745 dans le cartouche. Burada, antete işlemek için kendi ad / değer ilişkilerinizi tanımlayabilirsiniz. örnek: @@ -14644,19 +10306,16 @@ associer le nom "volta" et la valeur "1745" remplacera %{vol ReportPropertieWidget - Form Form - Label de report de folio #Sayfa Raporu Etiketi - Vous pouvez définir un label personnalisé pour les reports de folio. Créer votre propre texte en vous aidant des variables suivantes : %f : la position du folio dans le projet @@ -14680,145 +10339,121 @@ Créer votre propre texte en vous aidant des variables suivantes : SearchAndReplaceWidget - Form Form - Aller à la correspondance suivante Bir sonraki eşleşmeye git - <html><head/><body><p>Afficher les options avancées</p></body></html> <html><head/><body><p>Gelişmiş ayarları göster</p></body></html> - Aller à la correspondance précédente Bir önceki eşleşmeye git - Quitter Çıkış - <html><head/><body><p>Définir les propriétés à remplacer dans les éléments</p></body></html> <html><head/><body><p>Öğelerde değiştirilecek özellikleri tanımla</p></body></html> - Champ texte de folio Sayfa metin alanı - <html><head/><body><p>Définir les propriétés à remplacer dans les conducteurs</p></body></html> <html><head/><body><p>İletkenlerde değiştirilecek özellikleri tanımla</p></body></html> - <html><head/><body><p>Définir les propriétés à remplacer dans les folios</p></body></html> <html><head/><body><p>Sayfalarda değiştirilecek özellikleri tanımla</p></body></html> - Folio Sayfa - Texte brut Sade Metin - Mode Mod - Mots entiers Bütün kelime - Sensible à la casse Büyük küçük harf duyarlı - <html><head/><body><p>Remplacer la correspondance sélectionnée</p></body></html> <html><head/><body>Seçilen eşlenmişi değiştir<p></p></body></html> - <html><head/><body><p>Remplacer les correspondances cochées</p></body></html> <html><head/><body><p>İşaretli seçilenleri değiştir</p></body></html> - avancé gelişmiş - Élément Öğe - Conducteur İletken - Remplacer : Değiştir : - Remplacer Değiştir - Tout remplacer Tümünü değiştir - Chercher : Bul : - Actualiser Gerçekleştir @@ -14925,73 +10560,61 @@ Créer votre propre texte en vous aidant des variables suivantes : SelectAutonumW - Form Form - Numérotations disponibles : Mevcut numaralandırma : - Nom de la nouvelle numérotation #Yeni numaralandırmanın adı - Supprimer la numérotation Numaralandırmayı sil - Définition Tanım - <html><head/><body><p>Supprimer une variable de numérotation</p></body></html> <html><head/><body><p>Numaralandırma değişkenini sil</p></body></html> - <html><head/><body><p>Ajouter une variable de numérotation</p></body></html> <html><head/><body><p>Numaralandırma değişkeni ekle</p></body></html> - Précédent Önceki - Suivant Sonraki - Type Tür - Valeur #Değer - Incrémentation #Artış @@ -15123,183 +10746,152 @@ Diğer alanlar kullanılmaz. ShapeGraphicsItemPropertiesWidget - Form Form - Trait Özellik - Épaisseur Kalınlık - Normal Normal - Tiret Kesik Çizgili - Pointillé Noktalı - Traits et points Özellikler ve Noktalar - Traits points points Nokta Nokta - Tiret custom Özel Çizgi - Type Tür - - Couleur Renk - Remplissage Dolgu - Style Stil - Aucun Yok - Plein Tam - Densité 1 Yoğunluk 1 - Densité 2 Yoğunluk 2 - Densité 3 Yoğunluk 3 - Densité 4 Yoğunluk 4 - Densité 5 Yoğunluk 5 - Densité 6 Yoğunluk 6 - Densité 7 Yoğunluk 7 - Horizontal Yatay - Vertical Dikey - Croix Çapraz - Diagonal arrière Arka çapraz - Diagonal avant Ön çapraz - Diagonal en croix Çaprazlama - Verrouiller la position #Pozisyonu Kilitle - Polygone fermé #Kapalı Çokgen @@ -17328,31 +12920,26 @@ Diğer alanlar kullanılmaz. SummaryQueryWidget - Form Form - Informations disponibles Mevcut bilgiler - Information à afficher Görüntülenecek bilgi - Configuration Yapılandırma - Requête SQL : SQL sorgusu : @@ -17421,37 +13008,31 @@ Diğer alanlar kullanılmaz. - Form Form - y : y : - Orientation : Yönlendirme : - x : x : - Nom : İsim : - Type : Type : @@ -17460,49 +13041,41 @@ Diğer alanlar kullanılmaz. TerminalNumberingDialog - Numérotation automatique des bornes Klemenslerin otomatik numaralandırılması - Cette fonction numérote les bornes du projet selon leur position. Les bornes vides ou verrouillées sont ignorées.Le marquage des bornes doit être configuré au préalable comme suit : '-X:AB'. La partie avant les deux-points (le bornier) peut être nommée au choix. 'AB' peut être composé de chiffres ou de lettres." - Bu fonksiyon, projenin klemenslerini konumlarına göre numaralandırır. Boş veya kilitli klemensler yok sayılır. Klemens işaretlemesi önceden şu şekilde yapılandırılmalıdır: '-X:AB'. İki nokta üst üste işaretinden önceki kısım (klemens bloğu) istenildiği gibi adlandırılabilir. 'AB' rakamlardan veya harflerden oluşabilir." + Bu fonksiyon, projenin klemenslerini konumlarına göre numaralandırır. Boş veya kilitli klemensler yok sayılır. Klemens işaretlemesi önceden şu şekilde yapılandırılmalıdır: '-X:AB'. İki nokta üst üste işaretinden önceki kısım (klemens bloğu) istenildiği gibi adlandırılabilir. 'AB' rakamlardan veya harflerden oluşabilir." - Priorité des axes Eksen önceliği - Priorité à l'axe X (horizontal) X eksenine öncelik (yatay) - Priorité à l'axe Y (vertical) Y eksenine öncelik (dikey) - Type de numérotation Numaralandırma tipi - Numérique uniquement (1, 2, 3...) Yalnızca sayısal (1, 2, 3...) - Alphanumérique (A, B, C... 1, 2...) Alfanümerik (A, B, C... 1, 2...) @@ -17511,37 +13084,31 @@ Diğer alanlar kullanılmaz. TerminalStripCreatorDialog - Création groupe de bornes Klemens grubu oluşturma - Localisation : Konum : - Nom : İsim : - Installation : Kurulum : - Description : Açıklama : - Commentaire : Yorum : @@ -17550,177 +13117,147 @@ Diğer alanlar kullanılmaz. TerminalStripEditor - Disposition Düzen - Ponter les bornes Klemensleri köprüle - Déponter les bornes Klemens köprülerini kaldır - Propriétés Özellikler - Nom : İsim : - Commentaire : Yorum : - Description Açıklama - Installation : Kurulum : - Localisation : Konum : - Type : Type : - Degrouper les bornes Klemensleri gruptan ayır - - Générique Genel - Form Form - Effectuer le déplacement Hareketi gerçekleştir - Couleur pont : Köprü rengi : - Fusible Sigorta - Sectionnable Ayrılabilir - Diode Diyot - Terre Toprak - Déplacer dans : Taşı : - Phase Faz - Neutre Nötr - Position automatique Otomatik konum - Étage : Kat : - Grouper les bornes Klemensleri grupla - Fonction : Fonksiyon : - Sans Olmadan - Avec İle - LED : LED : @@ -17739,49 +13276,41 @@ Diğer alanlar kullanılmaz. TerminalStripEditorWindow - Gestionnaire de borniers Klemens yöneticisi - toolBar toolBar - Ajouter un bornier Klemens bloğu ekle - Ajouter un bornier au projet Projeye klemens bloğu ekle - Supprimer le bornier Klemens bloğunu sil - Supprimer le bornier du projet Klemens bloğunu projeden sil - Recharger Yeniden yükle - Recharger les borniers Klemens bloklarını yeniden yükle @@ -17798,109 +13327,91 @@ Diğer alanlar kullanılmaz. TerminalStripLayoutEditor - Form Form - Borne niveau 0 : Klemens seviye 0 : - En tête : Başlık : - Point de pont Köprü noktası - Décalage vertical Dikey kayma - Afficher l'aide Yardımı göster - Largeur Genişlik - Orientation Yönlendirme - Alignement Hizalama - Police : Yazı tipi : - Taille : Boyut : - Texte d'en tête Başlık metni - Origine vertical Dikey orijin - Longueur maximal Maksimum uzunluk - Texte borne Klemens metni - Référence croisée Çapraz referans - Hauteur Yükseklik - Prévisualisation : Önizleme : @@ -17908,9 +13419,6 @@ Diğer alanlar kullanılmaz. - - - Gauche Sol @@ -17918,9 +13426,6 @@ Diğer alanlar kullanılmaz. - - - Centre Orta @@ -17928,9 +13433,6 @@ Diğer alanlar kullanılmaz. - - - Droite Sağ @@ -17938,9 +13440,6 @@ Diğer alanlar kullanılmaz. - - - Horizontal Yatay @@ -17948,33 +13447,26 @@ Diğer alanlar kullanılmaz. - - - Vertical Dikey - Borne niveau 2 : Klemens seviye 2 : - Espace : Boşluk : - Borne niveau 3 : Klemens seviye 3 : - Borne niveau 1 : Klemens seviye 1 : @@ -18044,7 +13536,6 @@ Diğer alanlar kullanılmaz. TerminalStripTreeDockWidget - Explorateur de bornier Klemens bloğu gezgini @@ -18133,19 +13624,16 @@ Diğer alanlar kullanılmaz. ThirdPartyBinaryInstallDialog - Logiciel tiers requis Üçüncü taraf yazılım gerekli - Télechargement İndirme - Dossier installation Kurulum klasörü @@ -18193,127 +13681,106 @@ Diğer alanlar kullanılmaz. TitleBlockPropertiesWidget - Form Form - Informations des cartouches Antet Bilgileri - Modèle : #Şablon : - <html><head/><body><p>Affiche le cartouche en bas (horizontalement) ou à droite (verticalement) du folio.</p></body></html> <html><head/><body><p>Anteti, sayfanın altında (yatay) veya sağda (dikey) olarak görüntüler.</p></body></html> - Principales Ana - Date : #Tarih : - Auteur : #Yazar : - Disponible en tant que %locmach pour les modèles de cartouches Antet şablonları için %lochmach olarak mevcuttur - Indice Rev: Rev İndeksi: - <html><head/><body><p>Disponible en tant que %plant pour les modèles de cartouches</p></body></html> <html><head/><body><p>Antet şablonları için %plant olarak mevcut</p></body></html> - Disponible en tant que %title pour les modèles de cartouches Antet şablonları için %başlık olarak mevcuttur - Folio : #Sayfa : - Fichier : #Dosya : - Disponible en tant que %author pour les modèles de cartouches Antet şablonları için %author olarak mevcuttur - Disponible en tant que %filename pour les modèles de cartouches Antet şablonları için %filename olarak mevcuttur - Pas de date #Tarih yok - Date courante #Güncel tarih - Appliquer la date actuelle Geçerli tarihi uygula - Disponible en tant que %date pour les modèles de cartouches Antet şablonları için %date olarak mevcuttur - Date fixe : #Sabit tarih: - Disponible en tant que %folio pour les modèles de cartouches Les variables suivantes sont utilisables : - %id : numéro du folio courant dans le projet @@ -18327,44 +13794,37 @@ Aşağıdaki değişkenler kullanılabilir: - Titre : Başlık : - Page Num: Sayfa No : - Disponible en tant que %indexrev pour les modèles de cartouches Antet şablonları için %indexrev olarak mevcuttur - Installation : #Kurulum : - Localisation: Konum: - Personnalisées I am not sure about this. It should be checked. Özelleştir - Vous pouvez définir ici vos propres associations noms/valeurs pour que le cartouche en tienne compte. Exemple : associer le nom "volta" et la valeur "1745" remplacera %{volta} par 1745 dans le cartouche. Burada, antete işlemek için kendi ad / değer ilişkilerinizi tanımlayabilirsiniz. örnek: @@ -18889,92 +14349,92 @@ Maksimum uzunluk :%2px WiringListExport - - + + Erreur Hata - + Impossible de lire la structure en mémoire du projet. Projenin bellek yapısı okunamıyor. - + Exporter le plan de câblage Kablolama planını export et - + Fichiers CSV (*.csv) CSV Dosyaları (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. Dosya yazmak için açılamıyor. - + Page Wiring list CSV header Sayfa - + Composant 1 Wiring list CSV header Bileşen 1 - + Borne 1 Wiring list CSV header Klemens 1 - + Composant 2 Wiring list CSV header Bileşen 2 - + Borne 2 Wiring list CSV header Klemens 2 - + Tension / Protocole Wiring list CSV header Voltaj / Protokol - + Couleur du fil Wiring list CSV header Tel rengi - + Section du fil Wiring list CSV header Tel kesiti - + Fonction Wiring list CSV header Fonksiyon - + Export réussi Export başarılı - + Le plan de câblage a été exporté avec succès ! Kablolama planı başarıyla export edildi! @@ -18983,103 +14443,86 @@ Maksimum uzunluk :%2px XRefPropertiesWidget - Form Form - Type : Type : - Représentation: Gösterim: - Positionner : Yer : - XRef Vertical Offset: XRef Dikey Ofset: - 10px corresponds to 1 tile displacement 1 kare alanına 10 piksel karşılık gelir - Set Vertical Offset for the Cross References. 10px corresponds to 1 tile displacement. Çapraz Referanslar için Dikey Ofset Seti. 10px, 1 kare alanına karşılık gelir. - Default - Fit to XRef height Varsayılan - XRef yüksekliğine sığdır - XRef slave position Xref slave pozisyonu - Affiche&r en contacts Kontakla&rı görüntüle - Afficher en croix Çapraz görüntüle - Label des références croisées Çapraz referans etiketi - Maitre Master - %f-%l%c %f-%l%c - Esclave Bağımlı - (%f-%l%c) (%f-%l%c) - Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -19097,31 +14540,26 @@ Maksimum uzunluk :%2px - Option d'affichage en croix Çapraz ekran seçeneği - Afficher les contacts de puissance dans la croix Güç kontaklarını çapraz göster - Préfixe des contacts de puissance : Güç kontaklarının ön eki: - Préfixe des contacts temporisés : Zamanlı kontakların öneki : - Préfixe des contacts inverseurs : İnvertör kontaklarının öneki : @@ -19180,13 +14618,11 @@ Maksimum uzunluk :%2px diagramselection - Form Form - TextLabel MetinEtiketi @@ -19226,14 +14662,6 @@ Maksimum uzunluk :%2px Tümünü seç - - main - - - Enter a password for the test - Test için bir parola girin - - projectDataBase @@ -19358,80 +14786,53 @@ Maksimum uzunluk :%2px replaceAdvancedDialog - Rechercher/Remplacer avancé Gelişmiş Bul / Değiştir - par : ile : - Remplacer : Değiştir : - Qui : Neyi : - Texte ou expression régulière Metin veya normal ifade - Folio Sayfa - Élément Öğe - Conducteur İletken - Texte indépendant Bağımsız Metin - Quoi : Ne ile: - - testcontext - - - - test string - test dizesi - - - - - test plural %n - - - - - diff --git a/lang/qet_uk.ts b/lang/qet_uk.ts index c01ca8fee..f9491515c 100644 --- a/lang/qet_uk.ts +++ b/lang/qet_uk.ts @@ -1680,7 +1680,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte Змінити шрифт текстового поля @@ -1705,17 +1705,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol Змінити джерело тексту, текст - + Modifier l'alignement d'un champ texte Змінити вирівнювання текстового поля - + Modifier la couleur d'un champ texte Змінити колір текстового поля - + Modifier la conservation de l'angle Змінити збереження кута @@ -2007,7 +2007,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple Простий @@ -2042,93 +2042,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol Ескіз - + + Définition de conducteur + + + + Normalement ouvert (NO) нормально розімкнутий - + Normalement fermé (NC) нормально замкнутий - + Inverseur (CO) перекидний - + Other Інший - + Puissance Силовий - + Temporisé travail Вмикання із затримкою - + Temporisé repos Вимикання із затримкою - + Temporisé travail & repos Вмикання та вимикання по часу - + Bobine Котушка - + Organe de protection Пристрій захисту - + Commutateur / bouton Перемикач/кнопка - - + + Générique загальний - + Fusible Запобіжник - + Séctionnable Секційний - + Diode Діод - + Terre Заземлення - + Phase Фаза - + Neutre Нейтраль @@ -2136,99 +2141,99 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général Простий - + Élement Елемент - + Nom : %1 Ім'я: %1 - + Folio : %1 Аркуш: %1 - + Type : %1 Тип: %1 - + Sous-type : %1 Підтип: %1 - + Position : %1 Позиція: %1 - + Rotation : %1° Обертання: %1° - + Dimensions : %1*%2 Розміри: %1*%2 - + Bornes : %1 Виводи: %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 Розташування: %1 - + Retrouver dans le panel Зайти в панелі - + Éditer l'élément Редагувати елемент @@ -2695,60 +2700,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip Двічі клацніть, щоб згорнути або розгорнути цей проєкт - + Cartouches embarqués Встановлені штампи - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip Двічі клацніть, щоб згорнути або розгорнути вбудовану колекцію штампів - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template Перетягніть цей штамп на аркуш, щоб застосувати його. - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip Двічі клацніть, щоб згорнути або розгорнути колекцію штампів QElectroTech - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip Це колекція штампів, яка постачається разом із QElectroTech, встановлениа як системний компонент і Ви не можете її редагувати. - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip Двічі клацніть, щоб згорнути або розширити вашу колекцію штампів - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip Це ваша особиста колекція штампів — використовуйте її для створення, зберігання та редагування власних штампів. @@ -2757,98 +2762,98 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant котру? Відкрити папку - + Copier le chemin Скопіювати шлях - + Basculer vers ce projet Перейти до даного проєкту - + Fermer ce projet Закрити даний проєкту - + Propriétés du projet Властивості проєкту - + Propriétés du folio Властивості аркуша - + Ajouter un folio Додати аркуш - + Supprimer ce folio Видалити цей аркуш - + Remonter ce folio Пересунути аркуш вгору - + Abaisser ce folio Пересунути аркуш вниз - + Remonter ce folio x10 Пересунути аркуш вгору на 10 - + Remonter ce folio x100 Пересунути аркуш вгору на 100 - + Remonter ce folio au debut Перемістити аркуш на початок - + Abaisser ce folio x10 Пересунути аркуш вниз на 10 - + Abaisser ce folio x100 Пересунути аркуш вниз на 100 - + Nouveau modèle Новий шаблон - + Éditer ce modèle Редагувати цей шаблон - + Supprimer ce modèle Вилучити цей шаблон - + Filtrer Фільтр @@ -5673,88 +5678,88 @@ Voulez-vous enregistrer les modifications ? немає активних проєктів - + Supprimer le folio ? message box title Видалити цей аркуш? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - Ви дійсно хочете видалити цей аркуш? Зміни будуть безповоротні. + - + Projet en lecture seule message box title Проєкт тільки дл читання - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content Цей проєкт тільки для читання, тому він не мое бути очищений - + Supprimer les modèles de cartouche inutilisés dans le projet Видалити не використані в проєкті шаблони - + Supprimer les éléments inutilisés dans le projet Видалити не використані в проєкті елементи - + Supprimer les catégories vides Видалити порожні категорії - + Nettoyer le projet window title Очистити проєкт - + Ajouter un folio Додати аркуш - + Revenir au debut du projet Перейти в початок проєкту - + Aller à la fin du projet Перейти в кунець проєкту - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram Цей проєкт не містить аркушів - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align = "center"><b> Открытие текущего проєкта...</b><br/> Створення вкладок аркушів:</p> - + Projet window title for a project-less ProjectView Проєкт @@ -6062,868 +6067,884 @@ Options disponibles : Проєкти - + Collections Колекції - + Aucune modification Немає змін - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip Виберіть дію, щоб повернути зроблені в схемі зміни - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip В цій панелі вказані різні зміни на даному аркуші. При виборі зміни аркуш буде повернутий в той стан, в якому він знаходився відразу після її застосування - + Annulations dock title Історія - + E&xporter E&експорт - + Exporte le folio courant dans un autre format status bar tip Експортувати цей аркуш в інший фрмат - + Imprimer Друк - + Imprime un ou plusieurs folios du projet courant status bar tip Друк одного або більше аркушів цього проєкту - + Exporter en pdf Експорт в pdf - + Exporte un ou plusieurs folios du projet courant status bar tip підказка в рядку стану Експорт одного чи кількох аркушів цього проєкту - + &Quitter &Вихід - + Ferme l'application QElectroTech status bar tip Закрити QElectroTech - + Annuler Відміна - + Annule l'action précédente status bar tip Відмінити останні дії - + Refaire Повторити - + Restaure l'action annulée status bar tip Виконати відмінену дію - + Co&uper &Вирізати - + Cop&ier &Копіювати - + C&oller Вст&авити - + Transfère les éléments sélectionnés dans le presse-papier status bar tip Копіює віділені елементи в буфер обміну - + Copie les éléments sélectionnés dans le presse-papier status bar tip Копіює виділені елементи - + Place les éléments du presse-papier sur le folio status bar tip Вставляє на лист еементи з буфера обміну - + Réinitialiser les conducteurs Відновити провідники - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip Перераховує траси провідників, ігнруючи зроблені користувачем зміни - + Création automatique de conducteur(s) Tool tip of auto conductor Автоматичне створення провідників - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor Використовувати автоматичне створення провідників коли це можливо - + Couleur de fond blanc/gris Tool tip of white/grey background button Колір фону білий або сірий - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button Показати фон аркуша білим або сірим - + Afficher la grille Показати сітку - + Affiche ou masque la grille des folios - + Propriétés du folio Властивості аркуша - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip Редагує властивості аркуша (розміри, інформацію шаблонів, властивості провідників...) - + Propriétés du projet Властивості проєкта - + Ajouter un folio Додати аркуш - + + Supprimer le folio Видалити цей аркуш - + Nettoyer le projet Очистити проєкт - + Exporter au format CSV Експорт в формат CSV - + Ajouter une nomenclature Додати номенклатуру - + Ajouter un sommaire Додати висновок - + Gestionnaire de borniers (DEV) Керування клемними олодками (DEV) - + Lancer le plugin de création de borniers Запустити плагін створення клемної колодки - + Exporter la liste des noms de conducteurs Експорт списка імен провідників - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet Експорт внутрішньої бази даних проєкта - + en utilisant des onglets Використовувати вкладки - + Présente les différents projets ouverts des onglets status bar tip Відображає різні відкриті проєкти у вкладках - + en utilisant des fenêtres Використовувати вікна - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip Відображає різні відкриті проєкти у вікнах - + &Mosaïque &Мозаїка - + Dispose les fenêtres en mosaïque status bar tip Розмістити вікна мозаїкою - + &Cascade &Каскад - + Dispose les fenêtres en cascade status bar tip Розмістити вікна каскадом - + Mode Selection Режим виділення - + Permet de sélectionner les éléments status bar tip Дозволяє вибрати елементи - + Mode Visualisation Режим перегляду - + Permet de visualiser le folio sans pouvoir le modifier status bar tip Дозволяє переглядати аркуші не змінюючи їх - + Projet suivant Наступний проєкт - + Active le projet suivant status bar tip Акривує наступний проєкт - + Projet précédent Попередній проєкт - + Active le projet précédent status bar tip Активує попередній проєкт - + &Nouveau &Новий - + &Ouvrir &Відкрити - + &Enregistrer &Зберегти - + Enregistrer sous Зберегти як - + &Fermer &Закрити - + Crée un nouveau projet status bar tip Створити новий проєкт - + Ouvre un projet existant status bar tip Відкрити існуюий проєкт - + Ferme le projet courant status bar tip Закрити цей проєкт - + Enregistre le projet courant et tous ses folios status bar tip Зберегти цей проєкт і всі його аркуші - + Enregistre le projet courant avec un autre nom de fichier status bar tip Зберегти цей проєкт під другим ім'ям - + Ajouter une colonne Додати стопчик - + Enlever une colonne Видалити стопчик - + Ajouter une ligne Add row Додати рядок - + Enlever une ligne Remove row Видалити рядок - + Ajoute une colonne au folio status bar tip Додати стопчик - + Enlève une colonne au folio status bar tip Видалити стопчик - + Agrandit le folio en hauteur status bar tip Збільшує висоту аркуша - + Rétrécit le folio en hauteur status bar tip Зменшує висоту аркуша - + Supprimer Видалити - + Pivoter Повернути - + Orienter les textes Вибрати напрямок тексту - + Retrouver dans le panel Знайти в панелі - + Éditer l'item sélectionné Редагувати вибраний елемент - + Grouper les textes sélectionnés Згрупувати вибрані тексти - + Enlève les éléments sélectionnés du folio status bar tip Видалити вибрані елементи - + Pivote les éléments et textes sélectionnés status bar tip Поворот вибраних елементів та текстів - + Pivote les textes sélectionnés à un angle précis status bar tip Повернути вибраний текст на визачений кут - + Retrouve l'élément sélectionné dans le panel status bar tip Шукає вибраний елемент в панелі - + Tout sélectionner Виділити все - + Désélectionner tout Зняти виділення - + Inverser la sélection Інвертування виділення - + Sélectionne tous les éléments du folio status bar tip Виділяє всі елементи на аркуші - + Désélectionne tous les éléments du folio status bar tip Знімає виділення зі всіх елементів на аркуші - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip інветує виділення - + Zoom avant Збільшити - + Zoom arrière Зменшити - + Zoom sur le contenu Маштабувати вибране - + Zoom adapté Підігнати розмір - + Pas de zoom Відновити маштаб - + Agrandit le folio status bar tip Збільшити аркуш - + Rétrécit le folio status bar tip Зменшити аркуш - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre Змінює маштаб для відображення всього, що на аркуші, незалежно від контента - + Adapte le zoom exactement sur le cadre du folio status bar tip Змінює маштаб для відображення тільки частини аркуша - + Restaure le zoom par défaut status bar tip Скинути маштаб - + Ajouter un champ de texte Додати текстове поле - + Ajouter une image Додати зображення - + Ajouter une ligne Draw line Додати лінію - + Ajouter un rectangle Додати прямокутник - + Ajouter une ellipse Додати еліпс - + Ajouter une polyligne Додати ломану лінію - + Ajouter un plan de bornes - + Ajoute un champ de texte sur le folio actuel Додати текстове поле на цей аркуш - + Ajoute une image sur le folio actuel Додати зображенння на цей аркуш - + Ajoute une ligne sur le folio actuel Додати лінію на цей аркуш - + Ajoute un rectangle sur le folio actuel Додати прямокутник на цей аркуш - + Ajoute une ellipse sur le folio actuel Додати еліпс на цей аркуш - + Ajoute une polyligne sur le folio actuel Додати ломану лінію на цей аркуш - + Ajoute un plan de bornier sur le folio actuel - + Chercher/remplacer Знайти/замінити - + Outils Інструменти - + Affichage Вид - + Schéma Схема - + Ajouter Додати - + Profondeur toolbar title Глибина - + &Fichier &Файл - + &Édition &Правка - + &Projet П&роект - + Afficha&ge &Вид - + Fe&nêtres &Вікно - + &Récemment ouverts &Нещодавно відкрите - + Affiche ou non la barre d'outils principale Показати чи приховати головну панель інструментів - + Affiche ou non la barre d'outils Affichage Приховати або показати панель інструментів «Вид» - + Affiche ou non la barre d'outils Schéma Приховати або показати панель інструментів «Схема» - + Affiche ou non le panel d'appareils Приховати або показати панель елементів - + Affiche ou non la liste des modifications Приховати або показати срисок змін - + Afficher les projets Показати проєкти - - + + Projet %1 enregistré dans le repertoire: %2. Проєкт %1 збережений в каталозі: %2. - + Ouvrir un fichier Відкрити файл - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) Проєкти QElectroTech (*.qet);;Файли XML (*.xml);;Всі файли (*) - - + + Impossible d'ouvrir le fichier message box title Неможливо відкрити файл - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Файл %1, котрий ви намагаєтеся відкрить, не існує. - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. Файл, котрий ви намагаєтеся відкрити, недоступний для читання і не може бути відкритий. Перевірте права доступа. - + Ouverture du projet en lecture seule message box title Відкривання файлів в режимі "тільки читання" - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. Проєкт, котрий ви намагаєтеся відкрити, недоступний для запису. Він буде відкритий в режимі "тільки читання". - - + + Échec de l'ouverture du projet message box title Неможливо відкрити проєкт - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content Файл %1 не є проєктом QElectroTech. Він не може бути відкритим. - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Двічі клацніть, щоб завершити форму, клацніть правою кнопкою миші, щоб відмінити останню точку - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Groupe Група - + Éditer l'élement edit element Редагувати елемент - + Éditer le champ de texte edit text field Редагувати текстове поле - + Éditer l'image edit image Редагувати зображення - + Éditer le conducteur edit conductor Редагувати провідник - + Éditer l'objet sélectionné edit selected item Редагувати вибраний об'єкт - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content вміст вікна повідомлення Помилка при відкриванні файла %1. - + Active le projet « %1 » Активує проєкт «%1» - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title Помилка @@ -7220,21 +7241,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content Неможливо відкрити файл %1. - + Ce fichier n'est pas un document XML valide message box content Цей файл не являється правильним XML-документом - + Erreur toolbar title Помилка @@ -7269,22 +7290,22 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - - + + Élément inexistant. message box title Неіснуючий елемент - + Le chemin virtuel choisi ne correspond pas à un élément. message box content Вибраний віртуальний шлях не відповідає елементу - + L'élément n'existe pas. message box content Елемент не існує. @@ -7330,35 +7351,45 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title Відсутній ввід - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br> За відсутності виводів елемент не може бути з'єднаний з іншим елементом провідником. - + Absence de borne Відсутній вивід - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>Помилка</b>:<br> Звіти про аркуші мають мати один вивід.<br><b>Рішення</b>:<br>Перевірте, щоб у елемента був лише один вивід - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + La vérification de cet élément a généré message box content Перевірка створеного елемента - + %n erreur(s) errors @@ -7368,12 +7399,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et і - + %n avertissement(s) warnings @@ -7383,51 +7414,51 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + <b>%1</b> : %2 warning title: warning description <b>%1</b>: %2 - + Erreurs Помилки - + Avertissements Попередження - + Impossible d'ouvrir le fichier message box title Неможливо відкрити файл - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. Схоже, що файл %1, котрий ви намагаєтеся відкрити, не існує. - + Enregistrer l'élément en cours ? dialog title Зберегти поточний елемент? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name Ви хочете зберегти елемент %1? - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) Элементи QElectroTech (*.elmt) @@ -7437,140 +7468,140 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Annuler Відміна - + Refaire Повторити - + Profondeur toolbar title Глибина - + Ajouter une ligne Додати лінію - + Ajouter un rectangle Додати прямокутник - + Ajouter une ellipse Додати еліпс - + Ajouter un polygone Додати багатокутник - + Ajouter du texte Додати текст - + Ajouter un arc de cercle Додати дугу - + Ajouter une borne Додати вивід - + Ajouter un champ texte dynamique Додати динамічне тектове поле - + Double-click pour terminer la forme, Click droit pour annuler le dernier point Зробіть подвійний клік, щоб завершити форму, клік правою клавішою, щоб видалити останню точку - + Ajouter un texte d'élément non éditable dans les schémas Додати текст елемента, що не редагується - + Ajouter un texte d'élément pouvant être édité dans les schémas Додати текст елемента, що редагується - + Parties toolbar title Частини - + Aucune modification Немає змін - + Éditeur d'éléments status bar message Редактор елементів - - - + + + Echec de l'enregistrement Реєстрація не вдалася - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides Запис не вдався, не вірні умови - + Enregistrer sous dialog title Зберегти як - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file Элементи QElectroTech (*.elmt) - + Recharger l'élément dialog title Перезавантажити елемент - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content Цей елемент був змінений з моменту останнього збереження. Якщо ви перезавантажете його, всі зміни будуть втрачені. Ви дійсно хочете перезавантажити елемент? - + Avertissement Попередження - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... Імпорт великого файла в форматі DXF може зайняти деякий час, @@ -8583,7 +8614,7 @@ Que désirez vous faire ? текст - + Importer un fichier dxf Імпортувати файл в форматі DXF @@ -8699,7 +8730,7 @@ Voulez-vous la remplacer ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. Попередження: елементи були збережені за допомогою більш нової версії QElectroTech. @@ -8724,51 +8755,51 @@ Voulez-vous la remplacer ? Компіляція : - - + + Générique generic terminal element type Загальний - + Fusible fuse terminal element type Запобіжник - + Sectionable sectional terminal element type Секційний - + Diode diode terminal element type Діод - + Terre ground terminal element type Заземлення - - + + Générique generic terminal element function Загальний - + Phase phase terminal element function Фаза - + Neutre neutral terminal element function Нейтраль @@ -8919,22 +8950,22 @@ Voulez-vous la remplacer ? Помістити вибране на задній план - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> Щоб встановити плагін qet_tb_generator<br>Відвідайте:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Необхідний python версії 3.5 або вище.<br><B><U>Перша установка в Windows</B></U><br>1. При необхідності встановіть python 3.5 чи більш пізню версію<br>Посетите:<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U>Оновлення в Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>користувач може запустити в терміналі<br>C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> Щоб встановити плагін qet_tb_generator<br>Відвідайте:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Потрібний Python 3.5 аби вище.<br><br><B><U>Перша установка в Linux</B></U><br>1. Перевірте чи встановлений у вас pip3: pip3 --version<br> Якщо не встановлений, то: sudo apt-get install python3-pip<br>2. Встановіть програму: sudo pip3 install qet_tb_generator<br>3. Запустіть программу: qet_tb_generator<br><br><B><U>Обновлення в Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin Помилка під час запуску плагіна qet_tb_generator @@ -14288,92 +14319,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur Помилка - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header Напруга / протокол - + Couleur du fil Wiring list CSV header Колір провідника - + Section du fil Wiring list CSV header Переріз провідника - + Fonction Wiring list CSV header - + Export réussi - + Le plan de câblage a été exporté avec succès ! diff --git a/lang/qet_zh.ts b/lang/qet_zh.ts index 33b9e03c7..505dfae08 100644 --- a/lang/qet_zh.ts +++ b/lang/qet_zh.ts @@ -1680,17 +1680,17 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Modifier la police d'un champ texte 更改文本字段的字体 - + Modifier la couleur d'un champ texte 更改文本字段的颜色 - + Modifier la conservation de l'angle 改变角度保持 @@ -1715,7 +1715,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol 修改文本的来源 - + Modifier l'alignement d'un champ texte 更改文本字段的对齐方式 @@ -2007,7 +2007,7 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol - + Simple 简单 @@ -2042,93 +2042,98 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol 缩略图 - + + Définition de conducteur + + + + Normalement ouvert 常开 - + Normalement fermé 常闭 - + Inverseur 逆变器 - + Other 其他 - + Puissance 电源 - + Temporisé travail 定时工作 - + Temporisé repos 定时休息 - + Temporisé travail & repos 定时作息 - + Bobine 线圈 - + Organe de protection 保护性导体 - + Commutateur / bouton 开关/按钮 - - + + Générique 通用 - + Fusible 保险丝 - + Séctionnable 可切割的 - + Diode 二极管 - + Phase - + Neutre 中性 - + Terre 大地 @@ -2136,99 +2141,99 @@ Note: These options DO NOT allow or block Auto Numberings, only their Update Pol ElementPropertiesWidget - + Général 一般 - + Élement 元素 - + Nom : %1 名字 : %1 - + Folio : %1 页面 : %1 - + Type : %1 类型 : %1 - + Sous-type : %1 子类型 : %1 - + Position : %1 位置 : %1 - + Rotation : %1° 旋转 : %1° - + Dimensions : %1*%2 尺寸 : %1*%2 - + Bornes : %1 端子 : %1 - + Nombre maximum de contacts esclaves définis : %1 - + Nombre de contacts esclaves utilisés : %1 - + Emplacement : %1 位置 : %1 - + Retrouver dans le panel 在面板中查找 - + Éditer l'élément 编辑元素 @@ -2691,60 +2696,60 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanel - + Double-cliquez pour réduire ou développer ce projet Status tip 双击折叠或展开此项目 - + Cartouches embarqués 内置图框 - + Double-cliquez pour réduire ou développer cette collection de cartouches embarquée Status tip 双击折叠或展开此机载图框集合 - + Glissez-déposez ce modèle de cartouche sur un folio pour l'y appliquer. Status tip displayed when selecting a title block template 将此标题栏模板拖放到工作表上以将其应用到那里。 - + Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech Status tip 双击折叠或展开 QElectroTech 图框集合 - + Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser. "What's this" tip 这是 QElectroTech 附带的图框系列。 作为系统组件安装,您通常无法对其进行自定义。 - + Double-cliquez pour réduire ou développer la collection company de cartouches Status tip - + Ceci est la collection company de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip - + Double-cliquez pour réduire ou développer votre collection personnelle de cartouches Status tip 双击折叠或展开您的个人图框集合 - + Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches. "What's this" tip 这是您的个人图框集合——用它来创建、存储和编辑您自己的图框。 @@ -2753,97 +2758,97 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés. ElementsPanelWidget - + Ouvrir le dossier correspondant 打开对应文件夹 - + Copier le chemin 复制路径 - + Basculer vers ce projet 切换到这个项目 - + Fermer ce projet 关闭这个项目 - + Propriétés du projet 项目属性 - + Propriétés du folio 页面属性 - + Ajouter un folio 添加页面 - + Supprimer ce folio 删除此页面 - + Remonter ce folio 上移此页面 - + Abaisser ce folio 下移此页面 - + Remonter ce folio x10 上移此页面 x10 - + Remonter ce folio x100 上移此页面 x100 - + Remonter ce folio au debut 回到本页面的开头 - + Abaisser ce folio x10 下移此页面 x10 - + Abaisser ce folio x100 下移此页面 x100 - + Nouveau modèle 新模版 - + Éditer ce modèle 编辑此模板 - + Supprimer ce modèle 删除此模板 - + Filtrer 筛选 @@ -5666,88 +5671,88 @@ Voulez-vous enregistrer les modifications ? 没有工程显示 - + Supprimer le folio ? message box title 删除页面? - - Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. + + Êtes-vous sûr de vouloir supprimer ce folio du projet ? Ce changement est irréversible. message box content - 您确定要从工程中删除该页面吗? 这种更改是不可逆的。 + - + Projet en lecture seule message box title 只读工程 - + Ce projet est en lecture seule. Il n'est donc pas possible de le nettoyer. message box content 该项目是只读的。 因此无法对其进行清理。 - + Supprimer les modèles de cartouche inutilisés dans le projet 删除工程中未使用的图框模板 - + Supprimer les éléments inutilisés dans le projet 删除工程中未使用的元件 - + Supprimer les catégories vides 删除空类别 - + Nettoyer le projet window title 清理工程 - + Ajouter un folio 添加页面 - + Revenir au debut du projet 回到工程开头 - + Aller à la fin du projet 转到工程末尾 - + go one page left - + go one page right - + Ce projet ne contient aucun folio label displayed when a project contains no diagram 该项目不包含任何页面 - + <p align="center"><b>Ouverture du projet en cours...</b><br/>Création des onglets de folio :</p> <p align="center"><b>打开当前工程...</b><br/>创建页面标签:</p> - + Projet window title for a project-less ProjectView 工程 @@ -6049,478 +6054,479 @@ Options disponibles : QElectroTech - + Aucune modification 无修改 - + Cliquez sur une action pour revenir en arrière dans l'édition de votre schéma Status tip 单击一个动作以返回原理图编辑 - + Ce panneau liste les différentes actions effectuées sur le folio courant. Cliquer sur une action permet de revenir à l'état du schéma juste après son application. "What's this" tip 此面板列出了对当前工作表执行的不同操作。 单击一个操作可以让您返回到应用该操作后的图表状态。 - + Annulations dock title 取消 - + E&xporter 导出(&X) - + Imprimer 打印 - + &Quitter 退出(&Q) - + Annuler 取消 - + Refaire 重做 - + Co&uper 剪切(&U) - + Cop&ier 复制(&I) - + C&oller 粘贴(&O) - + Réinitialiser les conducteurs 重置导体 - + Création automatique de conducteur(s) Tool tip of auto conductor 创建自动导体 - + Utiliser la création automatique de conducteur(s) quand cela est possible Status tip of auto conductor 尽可能使用自动导体创建 - + Couleur de fond blanc/gris Tool tip of white/grey background button 背景色 白色/灰色 - + Affiche la couleur de fond du folio en blanc ou en gris Status tip of white/grey background button 以白色或灰色显示页面的背景色 - + Afficher la grille 显示网格 - + Affiche ou masque la grille des folios 显示或隐藏页面网格 - + Propriétés du folio 页面属性 - + Propriétés du projet 工程属性 - + Ajouter un folio 添加页面 - + + Supprimer le folio 删除页面 - + Nettoyer le projet 清理工程 - + Ajouter un sommaire 添加摘要 - + Lancer le plugin de création de borniers 启动端子排创建插件 - + en utilisant des onglets 使用标签 - + en utilisant des fenêtres 使用窗口 - + Mode Selection 模式选择 - + Mode Visualisation 查看模式 - + &Mosaïque 马赛克(&M) - + &Cascade 级联(&C) - + Projet suivant 下一个工程 - + Projet précédent 上一个工程 - + &Nouveau 新建(&N) - + &Ouvrir 打开(&O) - + &Enregistrer 保存(&E) - + Enregistrer sous 另存为 - + &Fermer 关闭(&F) - + Crée un nouveau projet status bar tip 创建一个新工程 - + Ouvre un projet existant status bar tip 打开现有工程 - + Ferme le projet courant status bar tip 关闭当前工程 - + Enregistre le projet courant et tous ses folios status bar tip 保存当前工程及其所有页面 - + Enregistre le projet courant avec un autre nom de fichier status bar tip 用另一个文件名保存当前工程 - + Ajouter une colonne 添加列 - + Enlever une colonne 删除列 - + Ajoute une colonne au folio status bar tip 在页面中添加一列 - + Enlève une colonne au folio status bar tip 从页面中删除列 - + Agrandit le folio en hauteur status bar tip 放大页面高度 - + Rétrécit le folio en hauteur status bar tip 缩小页面高度 - + Supprimer 删除 - + Pivoter 旋转 - + Orienter les textes 定位文本 - + Retrouver dans le panel 在面板中查找 - + Éditer l'item sélectionné 编辑所选项目 - + Chercher/remplacer 查找/替换 - + Profondeur toolbar title 深度 - + Groupe 群组 - + Ajouter une nomenclature 添加物料清单 - + Grouper les textes sélectionnés 将选定的文本分组 - + Enlève les éléments sélectionnés du folio status bar tip 从页面中删除选定的元件 - + Pivote les éléments et textes sélectionnés status bar tip 旋转选定的元件和文本 - + Pivote les textes sélectionnés à un angle précis status bar tip 以特定角度旋转选定的文本 - + Retrouve l'élément sélectionné dans le panel status bar tip 查找在面板中选择的元件 - + Tout sélectionner 全选 - + Désélectionner tout 取消全选 - + Inverser la sélection 反选 - + Sélectionne tous les éléments du folio status bar tip 选择页面中的所有元件 - + Désélectionne tous les éléments du folio status bar tip 取消选择页面所有元件 - + Désélectionne les éléments sélectionnés et sélectionne les éléments non sélectionnés status bar tip 取消选中的元件并选择未选中的元件 - + Zoom avant 放大 - + Zoom arrière 缩小 - + Zoom sur le contenu 放大焦点内容 - + Zoom adapté 自适应缩放 - + Pas de zoom 无缩放 - + Agrandit le folio status bar tip 放大页面 - + Rétrécit le folio status bar tip 缩小页面 - + Adapte le zoom de façon à afficher tout le contenu du folio indépendamment du cadre 调整缩放以独立于图框显示页面的所有内容 - + Adapte le zoom exactement sur le cadre du folio status bar tip 使缩放完全适应页面的图框 - + Restaure le zoom par défaut status bar tip 恢复默认缩放 - + Ajouter un champ de texte 添加文本字段 - + Ajouter une image 添加图片 - + Ajouter un rectangle 添加矩形 - + Ajouter une ellipse 添加椭圆 - + Ajouter une polyligne 添加多线段 - + Exporte le folio courant dans un autre format status bar tip 将当前页面导出为另一种格式 - + Imprime un ou plusieurs folios du projet courant status bar tip 打印当前工程的一张或多张表格 - + Ferme l'application QElectroTech status bar tip 关闭 QElectroTech 应用程序 - + Annule l'action précédente status bar tip 取消上一个动作 @@ -6532,389 +6538,404 @@ Options disponibles : 工程 - + Collections 集合 - + Restaure l'action annulée status bar tip 恢复未完成的操作 - + Transfère les éléments sélectionnés dans le presse-papier status bar tip 将所选元件传输到剪贴板 - + Copie les éléments sélectionnés dans le presse-papier status bar tip 将所选元件复制到剪贴板 - + Place les éléments du presse-papier sur le folio status bar tip 将剪贴板元件放在页面上 - + Ajouter une ligne Add row 添加线 - + Enlever une ligne Remove row 删除行 - + Ajouter une ligne Draw line 添加行 - + Recalcule les chemins des conducteurs sans tenir compte des modifications status bar tip 重新计算导体路径(忽略更改) - + Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...) status bar tip 编辑页面属性(尺寸、图框信息、导体属性等) - + Présente les différents projets ouverts dans des sous-fenêtres status bar tip 在窗格中显示不同的打开工程 - + Présente les différents projets ouverts des onglets status bar tip 在选项卡中显示不同的打开工程 - + Permet de sélectionner les éléments status bar tip 允许您选择元件 - + Permet de visualiser le folio sans pouvoir le modifier status bar tip 允许您查看页面而不能修改它 - + Dispose les fenêtres en mosaïque status bar tip 平铺窗口 - + Exporter en pdf 导出为 pdf - + Exporte un ou plusieurs folios du projet courant status bar tip 导出当前工程的一个或多个页面 - + Exporter au format CSV 导出为 CSV 格式 - + Gestionnaire de borniers (DEV) 端子排管理器 (DEV) - + Exporter la liste des noms de conducteurs 导出导体名称列表 - + Exporter le plan de câblage - + Numérotation automatique des bornes - + Exporter la base de donnée interne du projet 导出内部工程数据库 - + Dispose les fenêtres en cascade status bar tip 级联窗口 - + Active le projet suivant status bar tip 激活下一个工程 - + Active le projet précédent status bar tip 激活上一个工程 - + Ajouter un plan de bornes 添加端子排列 - + Ajoute un champ de texte sur le folio actuel 将文本字段添加到当前页面 - + Ajoute une image sur le folio actuel 将图像添加到当前页面 - + Ajoute une ligne sur le folio actuel 在当前页面中添加一条线 - + Ajoute un rectangle sur le folio actuel 在当前页面添加一个矩形 - + Ajoute une ellipse sur le folio actuel 在当前页面添加一个椭圆 - + Ajoute une polyligne sur le folio actuel 在当前页面添加多段线 - + Ajoute un plan de bornier sur le folio actuel 在当前页面添加端子排布 - + Outils 工具 - + Affichage 显示 - + Schéma 原理图 - + Ajouter 添加 - + &Fichier 文件(&F) - + &Édition 编辑(&E) - + &Projet 工程(&P) - + Afficha&ge 显示(&G) - + Fe&nêtres 窗口(&N) - + &Récemment ouverts 最近打开(&R) - + Affiche ou non la barre d'outils principale 是否显示主工具栏 - + Affiche ou non la barre d'outils Affichage 是否显示视图工具栏 - + Affiche ou non la barre d'outils Schéma 是否显示原理图工具栏 - + Affiche ou non le panel d'appareils 是否显示设备面板 - + Affiche ou non la liste des modifications 是否显示更改列表 - + Afficher les projets 显示工程 - - + + Projet %1 enregistré dans le repertoire: %2. 项目 %1 保存在目录中:%2。 - + Ouvrir un fichier 打开文件 - + Projets QElectroTech (*.qet);;Fichiers XML (*.xml);;Tous les fichiers (*) QElectroTech 项目 (*.qet);;XML 文件 (*.xml);;所有文件 (*) - - + + Impossible d'ouvrir le fichier message box title 无法打开文件 - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. 您尝试打开的文件 %1 似乎不存在或不再存在。 - + Il semblerait que le fichier que vous essayez d'ouvrir ne soit pas accessible en lecture. Il est donc impossible de l'ouvrir. Veuillez vérifier les permissions du fichier. 您尝试打开的文件似乎不可读。 因此不可能打开它。 请检查文件权限。 - + Ouverture du projet en lecture seule message box title 以只读方式打开工程 - + Il semblerait que le projet que vous essayez d'ouvrir ne soit pas accessible en écriture. Il sera donc ouvert en lecture seule. 您尝试打开的工程似乎不可写。 因此它将以只读模式打开。 - - + + Échec de l'ouverture du projet message box title 无法打开工程 - + Il semblerait que le fichier %1 ne soit pas un fichier projet QElectroTech. Il ne peut donc être ouvert. message box content 文件 %1 看起来不是 QElectroTech 工程文件。 因此无法打开。 - + Double-click pour terminer la forme, Click droit pour annuler le dernier point 双击完成形状,右击撤销最后一点 - + Suppression de borne impossible - + La suppression ne peut être effectué car la selection possède une ou plusieurs bornes ponté et/ou appartenant à une borne à niveau multiple. Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les supprimer - + Éditer l'élement edit element 编辑元件 - + Éditer le champ de texte edit text field 编辑文本字段 - + Éditer l'image edit image 编辑图片 - + Éditer le conducteur edit conductor 编辑导体 - + Éditer l'objet sélectionné edit selected item 编辑所选对象 - + Une erreur est survenue lors de l'ouverture du fichier %1. message box content 打开文件 %1 时出错。 - + Active le projet « %1 » 激活工程“%1” - + + Êtes-vous sûr de vouloir supprimer ce folio ? + + + + + Supprimer les folios + + + + + Êtes-vous sûr de vouloir supprimer les %1 folios sélectionnés ? + + + + Erreur message box title 错误 @@ -7158,17 +7179,17 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s 编辑元件属性 - + Annuler 取消 - + Refaire 重做 - + Profondeur toolbar title 深度 @@ -7194,52 +7215,52 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s 无缩放 - + Ajouter une ligne 添加直线 - + Ajouter un rectangle 添加矩形 - + Ajouter une ellipse 添加椭圆 - + Ajouter un polygone 添加多段线 - + Ajouter du texte 添加文本 - + Ajouter un arc de cercle 添加圆弧 - + Ajouter une borne 添加端子排 - + Ajouter un champ texte dynamique 添加动态文本字段 - + Double-click pour terminer la forme, Click droit pour annuler le dernier point 双击完成形状,右击撤销最后一点 - + Parties toolbar title 部分 @@ -7277,12 +7298,12 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s [只读] - + Aucune modification 无修改 - + Éditeur d'éléments status bar message 元件编辑器 @@ -7296,35 +7317,35 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Absence de borne warning title 无端子排 - + <br>En l'absence de borne, l'élément ne pourra être relié à d'autres éléments par l'intermédiaire de conducteurs. warning description <br>在没有端子排的情况下,元件不能通过导体连接到其他元件。 - + Absence de borne 无端子排 - + <br><b>Erreur</b> :<br>Les reports de folio doivent posséder une seul borne.<br><b>Solution</b> :<br>Verifier que l'élément ne possède qu'une seul borne <br><b>错误</b> :<br>页面报告提示必须有一个端子排<br><b>解决方法</b> :<br>检查元件是否只有一个终端 - + La vérification de cet élément a généré message box content 检查此项目已生成 - + %n erreur(s) errors @@ -7332,23 +7353,23 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + et et - + <b>%1</b> : %2 warning title: warning description <b>%1</b> : %2 - + Erreurs 错误 - + Avertissements 警告 @@ -7366,21 +7387,21 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + Impossible d'ouvrir le fichier %1. message box content 无法打开文件 %1。 - + Ce fichier n'est pas un document XML valide message box content 此文件不是有效的 XML 文档 - + Erreur toolbar title 错误 @@ -7424,39 +7445,49 @@ Déponter et/ou supprimer les niveaux des bornes concerné afin de pouvoir les s - + + Nombre de bornes incorrect + + + + + <br><b>Erreur</b> :<br>Les définitions de conducteur ne peuvent posséder qu'une seule borne.<br><b>Solution</b> :<br>Vérifier que l'élément ne possède qu'une seule borne + + + + Ajouter un texte d'élément non éditable dans les schémas 在原理图中添加不可编辑的文本元件 - + Ajouter un texte d'élément pouvant être édité dans les schémas 在原理图中添加可编辑的文本元件 - + Avertissement 警告 - + L'import d'un dxf volumineux peut prendre du temps veuillez patienter durant l'import... 导入大型 dxf 可能需要时间 正在导入,请稍候... - + Importer un élément à redimensionner - + Éléments QElectroTech (*.elmt) QElectroTech元件 (*.elmt) - + %n avertissement(s) warnings @@ -7464,64 +7495,64 @@ veuillez patienter durant l'import... - + Impossible d'ouvrir le fichier message box title 无法打开文件 - + Il semblerait que le fichier %1 que vous essayez d'ouvrir n'existe pas ou plus. 您尝试打开的文件 %1 似乎不存在或不再存在。 - + Recharger l'élément dialog title 重新加载项目 - + Vous avez efffectué des modifications sur cet élément. Si vous le rechargez, ces modifications seront perdues. Voulez-vous vraiment recharger l'élément ? dialog content 您已对此元件进行更改。 如果重新加载它,这些更改将会丢失。 您确定要重新加载该元件吗? - - - + + + Echec de l'enregistrement 保存失败 - - - + + + L'enregistrement à échoué, les conditions requises ne sont pas valides 保存失败, 所需条件无效 - + Enregistrer sous dialog title 另存为 - + Éléments QElectroTech (*.elmt) filetypes allowed when saving an element file QElectroTech元件 (*.elmt) - + Enregistrer l'élément en cours ? dialog title 保存当前元件? - + Voulez-vous enregistrer l'élément %1 ? dialog content - %1 is an element name 您要保存元件 %1 吗? @@ -7541,22 +7572,22 @@ les conditions requises ne sont pas valides - - + + Élément inexistant. message box title 元件不存在。 - + L'élément n'existe pas. message box content 该元件不存在。 - + Le chemin virtuel choisi ne correspond pas à un élément. message box content 所选的虚拟路径不对应于元件。 @@ -8520,7 +8551,7 @@ Que désirez vous faire ? - + Avertissement : l'élément a été enregistré avec une version ultérieure de QElectroTech. 警告:元件已在更高版本的 QElectroTech 中保存。 @@ -9313,22 +9344,22 @@ Voulez-vous la remplacer ? 导体的创建 - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>Requires python 3.5 or above.<br><B><U> First install on Windows</B></U><br>1. Install, if required, python 3.5 or above<br> Visit :<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> Update on Windows</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>user could launch in a terminal this script in this directory<br> C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts <br> 要安装插件 qet_tb_generator<br>请访问:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>需要python 3.5或更高版本。<br><B><U>首先在Windows上安装</B></U><br>1. 如果需要,请安装 python 3.5 或更高版本<br>访问:<br><a href='https://www.python.org/downloads/'>python.org</a><br>2. pip install qet_tb_generator<br><B><U> 在 Windows 上更新</B></U><br>python -m pip install --upgrade qet_tb_generator<br>>>用户可以在终端中启动此脚本目录<br>C:\users\XXXX\AppData\Local\Programs\Python\Python36-32\Scripts<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><B><U> First install on macOSX</B></U><br>1. Install, if required, python 3.11 bundle only, <a href='https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg'>python-3.11.2-macos11.pkg</a><br>2 Run Profile.command script<br>because program use hardcoded PATH for localise qet-tb-generator plugin <br> Visit :<br><a href='https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674'>howto</a><br>2. pip3 install qet_tb_generator<br><B><U> Update on macOSX</B></U><br> pip3 install --upgrade qet_tb_generator<br> - + To install the plugin qet_tb_generator<br>Visit :<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br><br>Requires python 3.5 or above.<br><br><B><U> First install on Linux</B></U><br>1. check you have pip3 installed: pip3 --version<br>If not install with: sudo apt-get install python3-pip<br>2. Install the program: sudo pip3 install qet_tb_generator<br>3. Run the program: qet_tb_generator<br><br><B><U> Update on Linux</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> 要安装插件 qet_tb_generator<br>请访问:<br><a href='https://pypi.python.org/pypi/qet-tb-generator'>qet-tb-generator</a><br>< br>需要 python 3.5 或更高版本。<br><br><B><U>首先在 Linux 上安装</B></U><br>1. 检查您是否已安装 pip3: pip3 --version<br>如果未安装: sudo apt-get install python3-pip<br>2. 安装程序:sudo pip3 install qet_tb_generator<br>3。 运行程序:qet_tb_generator<br><br><B><U>在 Linux 上更新</B></U><br>sudo pip3 install --upgrade qet_tb_generator<br> - + Error launching qet_tb_generator plugin 启动 qet_tb_generator 插件时出错 @@ -9480,51 +9511,51 @@ Voulez-vous la remplacer ? 对端子排 %1 进行排序 - - + + Générique generic terminal element type 通用的 - + Fusible fuse terminal element type 保险丝保护的 - + Sectionable sectional terminal element type 可分段 - + Diode diode terminal element type 二极管 - + Terre ground terminal element type 接地 - - + + Générique generic terminal element function 通用的 - + Phase phase terminal element function 相线 - + Neutre neutral terminal element function 中线性 @@ -9555,7 +9586,7 @@ Voulez-vous la remplacer ? 打开一个元件 - + Importer un fichier dxf 导入 dxf 文件 @@ -14251,92 +14282,92 @@ Longueur maximale : %2px WiringListExport - - + + Erreur 错误 - + Impossible de lire la structure en mémoire du projet. - + Exporter le plan de câblage - + Fichiers CSV (*.csv) - + Impossible d'ouvrir le fichier pour l'écriture. - + Page Wiring list CSV header - + Composant 1 Wiring list CSV header - + Borne 1 Wiring list CSV header - + Composant 2 Wiring list CSV header - + Borne 2 Wiring list CSV header - + Tension / Protocole Wiring list CSV header 电压/协议 - + Couleur du fil Wiring list CSV header 电缆颜色 - + Section du fil Wiring list CSV header 电缆截面积 - + Fonction Wiring list CSV header - + Export réussi - + Le plan de câblage a été exporté avec succès ! From dbda9582616876dcc2e85d1fcc6bacb34122d624 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sat, 23 May 2026 02:09:32 +0200 Subject: [PATCH 74/82] terminaldata: add No, Nc, Common types for SW contacts Extend TerminalData::Type enum with three new semantic values: - No : Normally Open terminal of a switch (SW) contact - Nc : Normally Closed terminal of a switch (SW) contact - Common : Common terminal of a switch (SW) contact Update typeToString() and typeFromString() accordingly. Fully backward compatible: existing Generic/Inner/Outer types are unchanged. Elements without typed terminals fall back to the previous behavior (first 2 named terminals). terminal: expose terminalType() as public accessor Add Terminal::terminalType() returning the TerminalData::Type of this terminal. This allows crossrefitem and other consumers to filter terminals by semantic role (No, Nc, Common) without accessing TerminalData internals directly. terminaleditor: add No, Nc, Common entries to type combobox Expose the three new TerminalData types (No, Nc, Common) in the element editor UI so users can assign a semantic role to each terminal of a SW contact element. Also fix a pre-existing bug in updateForm() where m_type_cb was incorrectly using m_orientation_cb->findData() instead of m_type_cb->findData(), preventing the type from being restored correctly when selecting a terminal. terminaleditor: add No, Nc, Common entries to type combobox Expose the three new TerminalData types (No, Nc, Common) in the element editor UI so users can assign a semantic role to each terminal of a SW contact element. Also fix a pre-existing bug in updateForm() where m_type_cb was incorrectly using m_orientation_cb->findData() instead of m_type_cb->findData(), preventing the type from being restored correctly when selecting a terminal. --- sources/editor/ui/terminaleditor.cpp | 5 +- sources/properties/terminaldata.cpp | 12 ++ sources/properties/terminaldata.h | 5 +- sources/qetgraphicsitem/crossrefitem.cpp | 244 ++++++++++++++++++++++- sources/qetgraphicsitem/crossrefitem.h | 2 +- sources/qetgraphicsitem/terminal.cpp | 9 + sources/qetgraphicsitem/terminal.h | 4 +- 7 files changed, 270 insertions(+), 11 deletions(-) diff --git a/sources/editor/ui/terminaleditor.cpp b/sources/editor/ui/terminaleditor.cpp index fd69f7bfe..4069dba8c 100644 --- a/sources/editor/ui/terminaleditor.cpp +++ b/sources/editor/ui/terminaleditor.cpp @@ -61,7 +61,7 @@ void TerminalEditor::updateForm() ui->m_y_dsb->setValue(m_part->property("y").toReal()); ui->m_orientation_cb->setCurrentIndex(ui->m_orientation_cb->findData(m_part->property("orientation"))); ui->m_name_le->setText(m_part->terminalName()); - ui->m_type_cb->setCurrentIndex(ui->m_orientation_cb->findData(m_part->terminalType())); + ui->m_type_cb->setCurrentIndex(ui->m_type_cb->findData(m_part->terminalType())); activeConnections(true); } @@ -122,6 +122,9 @@ void TerminalEditor::init() ui->m_type_cb->addItem(tr("Générique"), TerminalData::Generic); ui->m_type_cb->addItem(tr("Bornier intérieur"), TerminalData::Inner); ui->m_type_cb->addItem(tr("Bornier extérieur"), TerminalData::Outer); + ui->m_type_cb->addItem(tr("NO (contact SW)"), TerminalData::No); + ui->m_type_cb->addItem(tr("NC (contact SW)"), TerminalData::Nc); + ui->m_type_cb->addItem(tr("Commun (contact SW)"), TerminalData::Common); } /** diff --git a/sources/properties/terminaldata.cpp b/sources/properties/terminaldata.cpp index 0ab147f9f..cadcebd6d 100644 --- a/sources/properties/terminaldata.cpp +++ b/sources/properties/terminaldata.cpp @@ -174,6 +174,12 @@ QString TerminalData::typeToString(TerminalData::Type type) return QString("Inner"); case Outer : return QString("Outer"); + case No : + return QString("No"); + case Nc : + return QString("Nc"); + case Common : + return QString("Common"); } return QString("Generic"); } @@ -193,6 +199,12 @@ TerminalData::Type TerminalData::typeFromString(const QString &string) return TerminalData::Inner; } else if (string == "Outer") { return TerminalData::Outer; + } else if (string == "No") { + return TerminalData::No; + } else if (string == "Nc") { + return TerminalData::Nc; + } else if (string == "Common") { + return TerminalData::Common; } else { qDebug() << "TerminalData::typeFromString, argument string is invalid" " failsafe type 'TerminalData::Generic' is returned"; diff --git a/sources/properties/terminaldata.h b/sources/properties/terminaldata.h index 2e3d5ebbf..af60a9f78 100644 --- a/sources/properties/terminaldata.h +++ b/sources/properties/terminaldata.h @@ -41,7 +41,10 @@ class TerminalData : public PropertiesInterface enum Type { Generic, Inner, - Outer + Outer, + No, ///< Normally Open terminal (for SW contacts) + Nc, ///< Normally Closed terminal (for SW contacts) + Common ///< Common terminal (for SW contacts) }; Q_ENUM(Type) diff --git a/sources/qetgraphicsitem/crossrefitem.cpp b/sources/qetgraphicsitem/crossrefitem.cpp index 9e39ea545..316c0911d 100644 --- a/sources/qetgraphicsitem/crossrefitem.cpp +++ b/sources/qetgraphicsitem/crossrefitem.cpp @@ -493,11 +493,86 @@ void CrossRefItem::setUpCrossBoundingRect(QPainter &painter) QStringList no_str, nc_str; + // Helper lambda: build "[13-14] pos" string for an element. + // For power contacts (e.g. 3-pole contactor), all named terminals + // are collected (e.g. "[1-2-3-4-5-6] pos"). + // For other contacts (NO/NC/SW), only the first 2 named terminals + // are used — users are expected to name and order their terminals + // in the element editor. + // Helper lambda: build "[13-14] pos" for an element. + // - Power: all terminals sorted numerically → "[1-2-3-4-5-6] pos" + // - SW with typed terminals: show relevant pair per column (handled below) + // - Others: first 2 named terminals + auto buildLabel = [this](Element *elmt, bool is_no_col) -> QString { + const bool is_power = + elmt->kindInformations()["type"].toString() == "power"; + const bool is_sw = + elmt->kindInformations()["state"].toString() == "SW"; + + QStringList tnames; + + if (is_sw) { + // Check if terminals have explicit No/Nc/Common types + bool has_typed = false; + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + if (t->terminalType() == TerminalData::No || + t->terminalType() == TerminalData::Nc || + t->terminalType() == TerminalData::Common) { + has_typed = true; break; + } + } + if (has_typed) { + QString no_name, nc_name, common_name; + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + if (!t->name().isEmpty()) { + if (t->terminalType() == TerminalData::No) no_name = t->name(); + else if (t->terminalType() == TerminalData::Nc) nc_name = t->name(); + else if (t->terminalType() == TerminalData::Common) common_name = t->name(); + } + } + // NO column: show NO+Common pair; NC column: show NC+Common pair + if (is_no_col) + tnames << no_name << common_name; + else + tnames << nc_name << common_name; + } else { + // Fallback: first 2 named terminals + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + const QString tn = t->name(); + if (!tn.isEmpty()) { tnames << tn; if (tnames.size() >= 2) break; } + } + } + } else { + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + const QString tn = t->name(); + if (!tn.isEmpty()) { + tnames << tn; + if (!is_power && tnames.size() >= 2) break; + } + } + if (is_power) { + std::sort(tnames.begin(), tnames.end(), + [](const QString &a, const QString &b){ + return a.toInt() < b.toInt(); + }); + } + } + + QString pos = elementPositionText(elmt, true); + if (!tnames.isEmpty()) + return QStringLiteral("[") + tnames.join("-") + QStringLiteral("] ") + pos; + return pos; + }; + for (auto elmt : NOElements()) { - no_str.append(elementPositionText(elmt, true)); + no_str.append(buildLabel(elmt, true)); } for (auto elmt : NCElements()) { - nc_str.append(elementPositionText(elmt, true)); + nc_str.append(buildLabel(elmt, false)); } //There is no string to display, we return now @@ -606,7 +681,7 @@ void CrossRefItem::drawAsContacts(QPainter &painter) else if (type == "delayOff") option += DelayOff; else if (type == "delayOnOff") option += DelayOnOff; - QRectF br = drawContact(painter, option, elmt); + QRectF br = drawContact(painter, option, elmt, i); bounding_rect = bounding_rect.united(br); } } @@ -625,19 +700,68 @@ void CrossRefItem::drawAsContacts(QPainter &painter) @param elmt : the element to display text (the position of the contact) @return The bounding rect of the draw (contact + text) */ -QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt) +QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt, int pole_index) { QString str = elementPositionText(elmt); // Collect terminal names from the element definition (.elmt) // e.g. name="13" and name="14" on each terminal + // For power contacts, sort numerically and pick the pair for pole_index. + // For SW contacts with typed terminals (No/Nc/Common), filter by role. QStringList terminal_names; + const bool is_power_ctc = + elmt->kindInformations()["type"].toString() == "power"; + const bool is_sw = (flags & SW) && !(flags & NOC); + + // Check if SW terminals have explicit No/Nc/Common types + bool sw_has_typed_terminals = false; + if (is_sw) { + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + if (t->terminalType() == TerminalData::No || + t->terminalType() == TerminalData::Nc || + t->terminalType() == TerminalData::Common) { + sw_has_typed_terminals = true; + break; + } + } + } + for (Terminal *t : elmt->terminals()) { + if (!t) continue; const QString tname = t->name(); if (!tname.isEmpty()) terminal_names << tname; } + if (is_power_ctc) { + std::sort(terminal_names.begin(), terminal_names.end(), + [](const QString &a, const QString &b){ + return a.toInt() < b.toInt(); + }); + // Pick the pair for this pole: pole 0 → [0,1], pole 1 → [2,3], etc. + int idx = pole_index * 2; + if (idx + 1 < terminal_names.size()) + terminal_names = QStringList() << terminal_names[idx] << terminal_names[idx+1]; + else + terminal_names.clear(); + } else if (is_sw && sw_has_typed_terminals) { + // Build [NO_name, Common_name, NC_name] from typed terminals + QString no_name, nc_name, common_name; + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + if (!t->name().isEmpty()) { + if (t->terminalType() == TerminalData::No) no_name = t->name(); + else if (t->terminalType() == TerminalData::Nc) nc_name = t->name(); + else if (t->terminalType() == TerminalData::Common) common_name = t->name(); + } + } + // drawText expects: [0]=NC, [1]=NO, [2]=Common + // (drawText uses [1] for NO top-left, [0] for NC bottom-left, [2] for Common right) + terminal_names.clear(); + terminal_names << nc_name << no_name << common_name; + } + int offset = m_drawed_contacts*10; QRectF bounding_rect = QRectF(0, offset, 24, 10); @@ -795,13 +919,13 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt) // [0]=12 (NO, top-left), [1]=14 (common, top-center), [2]=13 (NC, bottom-center) if (terminal_names.size() >= 1) painter.drawText(QRectF(0, offset, 8, 8), - Qt::AlignLeft|Qt::AlignTop, terminal_names[0]); // 12 NO left + Qt::AlignLeft|Qt::AlignTop, terminal_names[1]); // 12 NO left if (terminal_names.size() >= 2) painter.drawText(QRectF(16, offset+4, 8, 6), - Qt::AlignRight|Qt::AlignTop, terminal_names[1]); // 14 common right + Qt::AlignRight|Qt::AlignTop, terminal_names[2]); // 14 common right if (terminal_names.size() >= 3) painter.drawText(QRectF(0, offset+9, 8, 6), - Qt::AlignLeft|Qt::AlignTop, terminal_names[2]); // 13 NC left-bottom + Qt::AlignLeft|Qt::AlignTop, terminal_names[0]); // 13 NC left-bottom painter.setFont(QETApp::diagramTextsFont(5)); } @@ -903,7 +1027,60 @@ void CrossRefItem::fillCrossRef(QPainter &painter) m_hovered_contact == elmt ? pen.setColor(Qt::blue) :pen.setColor(Qt::black); painter.setPen(pen); + // Collect terminal names for NO column. + // Power: all terminals sorted numerically. + // SW with typed terminals: NO+Common pair. + // Others: first 2 named terminals. + const bool is_power_no = + elmt->kindInformations()["type"].toString() == "power"; + const bool is_sw_no = + elmt->kindInformations()["state"].toString() == "SW"; + QStringList tnames; + if (is_sw_no) { + bool has_typed = false; + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + if (t->terminalType() == TerminalData::No || + t->terminalType() == TerminalData::Nc || + t->terminalType() == TerminalData::Common) { + has_typed = true; break; + } + } + if (has_typed) { + QString no_name, common_name; + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + if (!t->name().isEmpty()) { + if (t->terminalType() == TerminalData::No) no_name = t->name(); + else if (t->terminalType() == TerminalData::Common) common_name = t->name(); + } + } + tnames << no_name << common_name; + } else { + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + const QString tn = t->name(); + if (!tn.isEmpty()) { tnames << tn; if (tnames.size() >= 2) break; } + } + } + } else { + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + const QString tn = t->name(); + if (!tn.isEmpty()) { + tnames << tn; + if (!is_power_no && tnames.size() >= 2) break; + } + } + } + QString terminal_label; + if (!tnames.isEmpty()) + terminal_label = QStringLiteral("[") + tnames.join("-") + QStringLiteral("]"); + QString str = elementPositionText(elmt, true); + if (!terminal_label.isEmpty()) + str = terminal_label + QStringLiteral(" ") + str; + QRectF bounding = painter.boundingRect( QRectF(no_top_left, QSize(middle_cross, 1)), @@ -932,7 +1109,60 @@ void CrossRefItem::fillCrossRef(QPainter &painter) :pen.setColor(Qt::black); painter.setPen(pen); + // Collect terminal names for NC column. + // Power: all terminals sorted numerically. + // SW with typed terminals: NC+Common pair. + // Others: first 2 named terminals. + const bool is_power_nc = + elmt->kindInformations()["type"].toString() == "power"; + const bool is_sw_nc = + elmt->kindInformations()["state"].toString() == "SW"; + QStringList tnames_nc; + if (is_sw_nc) { + bool has_typed = false; + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + if (t->terminalType() == TerminalData::No || + t->terminalType() == TerminalData::Nc || + t->terminalType() == TerminalData::Common) { + has_typed = true; break; + } + } + if (has_typed) { + QString nc_name, common_name; + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + if (!t->name().isEmpty()) { + if (t->terminalType() == TerminalData::Nc) nc_name = t->name(); + else if (t->terminalType() == TerminalData::Common) common_name = t->name(); + } + } + tnames_nc << nc_name << common_name; + } else { + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + const QString tn = t->name(); + if (!tn.isEmpty()) { tnames_nc << tn; if (tnames_nc.size() >= 2) break; } + } + } + } else { + for (Terminal *t : elmt->terminals()) { + if (!t) continue; + const QString tn = t->name(); + if (!tn.isEmpty()) { + tnames_nc << tn; + if (!is_power_nc && tnames_nc.size() >= 2) break; + } + } + } + QString terminal_label; + if (!tnames_nc.isEmpty()) + terminal_label = QStringLiteral("[") + tnames_nc.join("-") + QStringLiteral("]"); + QString str = elementPositionText(elmt, true); + if (!terminal_label.isEmpty()) + str = terminal_label + QStringLiteral(" ") + str; + QRectF bounding = painter.boundingRect( QRectF(nc_top_left, QSize(middle_cross, 1)), diff --git a/sources/qetgraphicsitem/crossrefitem.h b/sources/qetgraphicsitem/crossrefitem.h index c378306dc..523c0085e 100644 --- a/sources/qetgraphicsitem/crossrefitem.h +++ b/sources/qetgraphicsitem/crossrefitem.h @@ -107,7 +107,7 @@ class CrossRefItem : public QGraphicsObject void setUpCrossBoundingRect(QPainter &painter); void drawAsCross(QPainter &painter); void drawAsContacts(QPainter &painter); - QRectF drawContact(QPainter &painter, int flags, Element *elmt); + QRectF drawContact(QPainter &painter, int flags, Element *elmt, int pole_index = 0); void fillCrossRef(QPainter &painter); void AddExtraInfo(QPainter &painter, const QString&); QList NOElements() const; diff --git a/sources/qetgraphicsitem/terminal.cpp b/sources/qetgraphicsitem/terminal.cpp index 3a614a90f..056e4dd6c 100644 --- a/sources/qetgraphicsitem/terminal.cpp +++ b/sources/qetgraphicsitem/terminal.cpp @@ -753,6 +753,15 @@ QString Terminal::name() const return d->m_name; } +/** + @brief Terminal::terminalType + @return the type of this terminal (Generic, Inner, Outer, No, Nc, Common) +*/ +TerminalData::Type Terminal::terminalType() const +{ + return d->m_type; +} + /** @brief Conductor::relatedPotentialTerminal Return terminal at the same potential from the same diff --git a/sources/qetgraphicsitem/terminal.h b/sources/qetgraphicsitem/terminal.h index dcfca5c69..d447aa982 100644 --- a/sources/qetgraphicsitem/terminal.h +++ b/sources/qetgraphicsitem/terminal.h @@ -18,13 +18,14 @@ #ifndef TERMINAL_H #define TERMINAL_H #include "../qet.h" +#include "../properties/terminaldata.h" #include #include class Conductor; class Diagram; class Element; -class TerminalData; + /** @brief The Terminal class @@ -75,6 +76,7 @@ class Terminal : public QGraphicsObject Element *parentElement () const; QUuid uuid () const; QString name () const; + TerminalData::Type terminalType() const; QList conductors() const; Qet::Orientation orientation() const; From d949e6eb8c7ae8ea3a6b958ab3bf1e58e017704d Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sat, 23 May 2026 15:32:28 +0200 Subject: [PATCH 75/82] crossrefitem: fix SIGSEGV when dropping power NC contact on diagram MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three bugs were causing a crash (SIGSEGV in QRegion::begin) when a power NC slave element was placed on a folio, even before linking it to a master element. 1. m_drawing (QPicture) was never reset between updateLabel() calls. QPicture accumulates paint commands — calling qp.begin() on an existing QPicture appends to it rather than replacing its content. After several updates (load, move, hover...) the picture became corrupted and crashed on play(). Fix: reset m_drawing = QPicture() at the start of updateLabel(). 2. m_drawed_contacts was only initialized to 0 in drawAsContacts(), but not in drawAsCross(). When drawing in Cross mode, fillCrossRef() called drawContact() with an uninitialized m_drawed_contacts value, producing a garbage offset. The NC contact symbol uses drawPolyline() with a sub-pixel Y coordinate (offset+2.5); with a random offset Qt generated an invalid QRegion and crashed. This explains why NC contacts crashed but NO contacts did not: the NO symbol only uses drawLine() which is more tolerant of bad coords. Fix: add m_drawed_contacts = 0 at the start of drawAsCross(). 3. setUpCrossBoundingRect() used QRectF() (null rect) as the reference rect for painter.boundingRect(), which can return invalid dimensions. Additionally, height was accumulated incorrectly: united() + setHeight() doubled the height at each iteration, causing an exponentially growing bounding rect with multiple contacts. Fix: use QRectF(0, 0, 500, 20) as reference rect and accumulate height and width independently. --- sources/qetgraphicsitem/crossrefitem.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/sources/qetgraphicsitem/crossrefitem.cpp b/sources/qetgraphicsitem/crossrefitem.cpp index 316c0911d..cf342bade 100644 --- a/sources/qetgraphicsitem/crossrefitem.cpp +++ b/sources/qetgraphicsitem/crossrefitem.cpp @@ -222,6 +222,9 @@ void CrossRefItem::updateLabel() prepareGeometryChange(); m_bounding_rect = QRectF(); + //Reset QPicture so it doesn't accumulate commands across updates + m_drawing = QPicture(); + //init the painter QPainter qp; qp.begin(&m_drawing); @@ -585,9 +588,10 @@ void CrossRefItem::setUpCrossBoundingRect(QPainter &painter) QRectF no_bounding; for (auto str : no_str) { - QRectF bounding = painter.boundingRect(QRectF (), Qt::AlignCenter, str); - no_bounding = no_bounding.united(bounding); + QRectF bounding = painter.boundingRect(QRectF(0, 0, 500, 20), Qt::AlignLeft, str); no_bounding.setHeight(no_bounding.height() + bounding.height()); + if (bounding.width() > no_bounding.width()) + no_bounding.setWidth(bounding.width()); } //Adjust according to the NO if (no_bounding.height() > default_bounding.height() - header) @@ -599,9 +603,10 @@ void CrossRefItem::setUpCrossBoundingRect(QPainter &painter) QRectF nc_bounding; for (auto str : nc_str) { - QRectF bounding = painter.boundingRect(QRectF (), Qt::AlignCenter, str); - nc_bounding = nc_bounding.united(bounding); + QRectF bounding = painter.boundingRect(QRectF(0, 0, 500, 20), Qt::AlignLeft, str); nc_bounding.setHeight(nc_bounding.height() + bounding.height()); + if (bounding.width() > nc_bounding.width()) + nc_bounding.setWidth(bounding.width()); } //Adjust according to the NC if (nc_bounding.height() > default_bounding.height() - header) @@ -625,6 +630,7 @@ void CrossRefItem::drawAsCross(QPainter &painter) { //calculate the size of the cross setUpCrossBoundingRect(painter); + m_drawed_contacts = 0; m_hovered_contacts_map.clear(); //Bounding rect is empty that mean there's no contact to draw From 7d718bb9a027adb9fe475fcd5fbb04fbc9c53aff Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sat, 23 May 2026 15:50:11 +0200 Subject: [PATCH 76/82] crossrefitem: fix terminal name sorting for power contacts The previous sort used QString::toInt() to order terminal names, which returns 0 for any string containing a non-numeric prefix (e.g. "R1", "R2", "L1", "L2"...). This caused undefined sort order and incorrect pole pairing in the Xref contact mirror. Example: a 4-pole NC power contact with terminals R1..R8 was displaying R1/R3, R5/R7, R2/R4, R6/R8 instead of the correct R1/R2, R3/R4, R5/R6, R7/R8. Fix: extract the trailing numeric part of each terminal name and compare prefixes separately. If both names share the same prefix and both have a trailing number, sort numerically on that number; otherwise fall back to full string comparison. This covers all naming conventions: "1"/"2"/"3", "R1"/"R2"/"R3", "L1"/"L2"/"L3", etc. Applied in both drawContact() and setUpCrossBoundingRect(). --- sources/qetgraphicsitem/crossrefitem.cpp | 26 ++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/sources/qetgraphicsitem/crossrefitem.cpp b/sources/qetgraphicsitem/crossrefitem.cpp index cf342bade..4a5ab07a7 100644 --- a/sources/qetgraphicsitem/crossrefitem.cpp +++ b/sources/qetgraphicsitem/crossrefitem.cpp @@ -560,7 +560,16 @@ void CrossRefItem::setUpCrossBoundingRect(QPainter &painter) if (is_power) { std::sort(tnames.begin(), tnames.end(), [](const QString &a, const QString &b){ - return a.toInt() < b.toInt(); + int i_a = a.size(); + while (i_a > 0 && a[i_a-1].isDigit()) --i_a; + int i_b = b.size(); + while (i_b > 0 && b[i_b-1].isDigit()) --i_b; + bool a_ok = false, b_ok = false; + int ai = a.mid(i_a).toInt(&a_ok); + int bi = b.mid(i_b).toInt(&b_ok); + if (a_ok && b_ok && a.left(i_a) == b.left(i_b)) + return ai < bi; + return a < b; }); } } @@ -741,9 +750,22 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt, in } if (is_power_ctc) { + // Sort terminals alphanumerically so names like "R1","R2"... or "1","2"... + // are ordered correctly. Extract trailing digits for numeric comparison; + // fall back to full string comparison when no digits are found. std::sort(terminal_names.begin(), terminal_names.end(), [](const QString &a, const QString &b){ - return a.toInt() < b.toInt(); + // Extract trailing numeric part + int i_a = a.size(); + while (i_a > 0 && a[i_a-1].isDigit()) --i_a; + int i_b = b.size(); + while (i_b > 0 && b[i_b-1].isDigit()) --i_b; + bool a_ok = false, b_ok = false; + int ai = a.mid(i_a).toInt(&a_ok); + int bi = b.mid(i_b).toInt(&b_ok); + if (a_ok && b_ok && a.left(i_a) == b.left(i_b)) + return ai < bi; + return a < b; }); // Pick the pair for this pole: pole 0 → [0,1], pole 1 → [2,3], etc. int idx = pole_index * 2; From ddf5ffcd89a3c1667fc05e7c23928234c6cc1e47 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sat, 23 May 2026 19:23:43 +0200 Subject: [PATCH 77/82] xref: add option to hide terminal names in cross-references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a new boolean property 'showTerminalName' (default: true) to XRefProperties, with full persistence in XML and QSettings. A new checkbox "Afficher les numéros de bornes dans les Xrefs" is added to the XRefPropertiesWidget in the main display group (not in the cross-only group), so it is active in both Cross and Contacts modes. When unchecked, terminal names are hidden in all three rendering paths: - drawContact() (Contacts mode: NO/NC/SW symbols) - fillCrossRef() (Cross mode: NO and NC columns) - setUpCrossBoundingRect() (Cross mode: bounding rect sizing) Backward compatible: existing project files without the attribute default to showTerminalName=true (no visual change). Files changed: sources/properties/xrefproperties.h sources/properties/xrefproperties.cpp sources/ui/xrefpropertieswidget.ui sources/ui/xrefpropertieswidget.cpp sources/qetgraphicsitem/crossrefitem.cpp --- sources/properties/xrefproperties.cpp | 6 ++++++ sources/properties/xrefproperties.h | 4 ++++ sources/qetgraphicsitem/crossrefitem.cpp | 10 +++++----- sources/ui/xrefpropertieswidget.cpp | 2 ++ sources/ui/xrefpropertieswidget.ui | 8 ++++++++ 5 files changed, 25 insertions(+), 5 deletions(-) diff --git a/sources/properties/xrefproperties.cpp b/sources/properties/xrefproperties.cpp index a17e56cab..63fcf68ac 100644 --- a/sources/properties/xrefproperties.cpp +++ b/sources/properties/xrefproperties.cpp @@ -29,6 +29,7 @@ XRefProperties::XRefProperties() { m_show_power_ctc = true; + m_show_terminal_name = true; m_display = Cross; m_snap_to = Bottom; m_prefix_keys << "power" << "delay" << "switch"; @@ -48,6 +49,7 @@ void XRefProperties::toSettings(QSettings &settings, const QString prefix) const { settings.setValue(prefix % "showpowerctc", m_show_power_ctc); + settings.setValue(prefix % "showterminalname", m_show_terminal_name); QString display = m_display == Cross? "cross" : "contacts"; settings.setValue(prefix % "displayhas", display); QString snap = m_snap_to == Bottom? "bottom" : "label"; @@ -78,6 +80,7 @@ void XRefProperties::fromSettings(const QSettings &settings, const QString prefix) { m_show_power_ctc = settings.value(prefix % "showpowerctc", true).toBool(); + m_show_terminal_name = settings.value(prefix % "showterminalname", true).toBool(); QString display = settings.value(prefix % "displayhas", "cross").toString(); display == "cross"? m_display = Cross : m_display = Contacts; QString snap = settings.value(prefix % "snapto", "label").toString(); @@ -107,6 +110,7 @@ QDomElement XRefProperties::toXml(QDomDocument &xml_document) const xml_element.setAttribute("type", m_key); xml_element.setAttribute("showpowerctc", m_show_power_ctc? "true" : "false"); + xml_element.setAttribute("showterminalname", m_show_terminal_name? "true" : "false"); QString display = m_display == Cross? "cross" : "contacts"; xml_element.setAttribute("displayhas", display); QString snap = m_snap_to == Bottom? "bottom" : "label"; @@ -137,6 +141,7 @@ QDomElement XRefProperties::toXml(QDomDocument &xml_document) const */ bool XRefProperties::fromXml(const QDomElement &xml_element) { m_show_power_ctc = xml_element.attribute("showpowerctc") == "true"; + m_show_terminal_name = xml_element.attribute("showterminalname", "true") == "true"; QString display = xml_element.attribute("displayhas", "cross"); display == "cross"? m_display = Cross : m_display = Contacts; QString snap = xml_element.attribute("snapto", "label"); @@ -188,6 +193,7 @@ QHash XRefProperties::defaultProperties() bool XRefProperties::operator ==(const XRefProperties &xrp) const{ return (m_show_power_ctc == xrp.m_show_power_ctc + && m_show_terminal_name == xrp.m_show_terminal_name && m_display == xrp.m_display && m_snap_to == xrp.m_snap_to && m_prefix == xrp.m_prefix diff --git a/sources/properties/xrefproperties.h b/sources/properties/xrefproperties.h index aea211ef0..b4824aa4e 100644 --- a/sources/properties/xrefproperties.h +++ b/sources/properties/xrefproperties.h @@ -57,6 +57,9 @@ class XRefProperties : public PropertiesInterface void setShowPowerContac (const bool a) {m_show_power_ctc = a;} bool showPowerContact () const {return m_show_power_ctc;} + void setShowTerminalName (const bool a) {m_show_terminal_name = a;} + bool showTerminalName () const {return m_show_terminal_name;} + void setDisplayHas (const DisplayHas dh) {m_display = dh;} DisplayHas displayHas () const {return m_display;} @@ -81,6 +84,7 @@ class XRefProperties : public PropertiesInterface private: bool m_show_power_ctc; + bool m_show_terminal_name; DisplayHas m_display; SnapTo m_snap_to; Qt::AlignmentFlag m_xref_pos; diff --git a/sources/qetgraphicsitem/crossrefitem.cpp b/sources/qetgraphicsitem/crossrefitem.cpp index 4a5ab07a7..2527232d1 100644 --- a/sources/qetgraphicsitem/crossrefitem.cpp +++ b/sources/qetgraphicsitem/crossrefitem.cpp @@ -575,7 +575,7 @@ void CrossRefItem::setUpCrossBoundingRect(QPainter &painter) } QString pos = elementPositionText(elmt, true); - if (!tnames.isEmpty()) + if (!tnames.isEmpty() && m_properties.showTerminalName()) return QStringLiteral("[") + tnames.join("-") + QStringLiteral("] ") + pos; return pos; }; @@ -808,7 +808,7 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt, in // Draw terminal names on each side of the contact symbol // terminal_names[0] on the left, terminal_names[1] on the right - if (!terminal_names.isEmpty()) { + if (!terminal_names.isEmpty() && m_properties.showTerminalName()) { QFont font = QETApp::diagramTextsFont(4); font.setBold(true); painter.setFont(font); @@ -939,7 +939,7 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt, in // terminal_names[0] = NO side (top left) // terminal_names[1] = NC side (bottom left) // terminal_names[2] = common side (right) - if (!terminal_names.isEmpty()) { + if (!terminal_names.isEmpty() && m_properties.showTerminalName()) { QFont font = QETApp::diagramTextsFont(4); font.setBold(true); painter.setFont(font); @@ -1102,7 +1102,7 @@ void CrossRefItem::fillCrossRef(QPainter &painter) } } QString terminal_label; - if (!tnames.isEmpty()) + if (!tnames.isEmpty() && m_properties.showTerminalName()) terminal_label = QStringLiteral("[") + tnames.join("-") + QStringLiteral("]"); QString str = elementPositionText(elmt, true); @@ -1184,7 +1184,7 @@ void CrossRefItem::fillCrossRef(QPainter &painter) } } QString terminal_label; - if (!tnames_nc.isEmpty()) + if (!tnames_nc.isEmpty() && m_properties.showTerminalName()) terminal_label = QStringLiteral("[") + tnames_nc.join("-") + QStringLiteral("]"); QString str = elementPositionText(elmt, true); diff --git a/sources/ui/xrefpropertieswidget.cpp b/sources/ui/xrefpropertieswidget.cpp index c17f0faad..60d81b860 100644 --- a/sources/ui/xrefpropertieswidget.cpp +++ b/sources/ui/xrefpropertieswidget.cpp @@ -139,6 +139,7 @@ void XRefPropertiesWidget::saveProperties(int index) { else if(ui->m_xrefpos_cb->itemData(ui->m_xrefpos_cb->currentIndex()).toString() == "right") xrp.setXrefPos(Qt::AlignRight); else if(ui->m_xrefpos_cb->itemData(ui->m_xrefpos_cb->currentIndex()).toString() == "alignment") xrp.setXrefPos(Qt::AlignBaseline); xrp.setShowPowerContac(ui->m_show_power_cb->isChecked()); + xrp.setShowTerminalName(ui->m_show_terminal_name_cb->isChecked()); xrp.setPrefix("power", ui->m_power_prefix_le->text()); xrp.setPrefix("delay", ui->m_delay_prefix_le->text()); xrp.setPrefix("switch", ui->m_switch_prefix_le->text()); @@ -190,6 +191,7 @@ void XRefPropertiesWidget::updateDisplay() else if(xrp.getXrefPos() == Qt::AlignBaseline) ui->m_xrefpos_cb->setCurrentIndex(ui->m_xrefpos_cb->findData("alignment")); else if(xrp.getXrefPos() == Qt::AlignBottom) ui->m_xrefpos_cb->setCurrentIndex(ui->m_xrefpos_cb->findData("bottom")); ui->m_show_power_cb->setChecked(xrp.showPowerContact()); + ui->m_show_terminal_name_cb->setChecked(xrp.showTerminalName()); ui->m_power_prefix_le-> setText(xrp.prefix("power")); ui->m_delay_prefix_le-> setText(xrp.prefix("delay")); ui->m_switch_prefix_le->setText(xrp.prefix("switch")); diff --git a/sources/ui/xrefpropertieswidget.ui b/sources/ui/xrefpropertieswidget.ui index ccf1f06ad..cc62f7c22 100644 --- a/sources/ui/xrefpropertieswidget.ui +++ b/sources/ui/xrefpropertieswidget.ui @@ -108,6 +108,13 @@ + + + + Afficher les numéros de bornes dans les Xrefs + + + @@ -283,6 +290,7 @@ m_master_le m_slave_le m_show_power_cb + m_show_terminal_name_cb m_power_prefix_le m_delay_prefix_le m_switch_prefix_le From 47796e183ab8b03c4f64a376129a290110fc7606 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sat, 23 May 2026 19:28:22 +0200 Subject: [PATCH 78/82] Update translation files --- lang/qet_ar.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_ca.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_cs.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_da.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_de.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_el.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_en.qm | Bin 284101 -> 284478 bytes lang/qet_en.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_es.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_fr.qm | Bin 185590 -> 185863 bytes lang/qet_fr.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_hr.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_hu.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_it.ts | 54 +++++++++++++++++++++++++++++++--------------- lang/qet_ja.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_ko.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_mn.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_nb.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_nl_BE.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_nl_NL.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_pl.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_pt.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_pt_BR.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_ro.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_rs.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_ru.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_sk.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_sl.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_sr.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_sv.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_tr.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_uk.ts | 52 ++++++++++++++++++++++++++++++-------------- lang/qet_zh.ts | 52 ++++++++++++++++++++++++++++++-------------- 33 files changed, 1117 insertions(+), 497 deletions(-) diff --git a/lang/qet_ar.ts b/lang/qet_ar.ts index 910766968..76f5ba37d 100644 --- a/lang/qet_ar.ts +++ b/lang/qet_ar.ts @@ -12938,22 +12938,37 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier l'orientation d'une borne تعديل إتجاه نقطة توصيل - + Modifier le nom du terminal - + Modifier le type d'une borne - + Déplacer une borne تحريك نقطة توصيل @@ -14435,41 +14450,46 @@ Longueur maximale : %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts عر&ض بالتقاطع - + Afficher en croix عرض بالصليب - + Label des références croisées علامة المراجع المتقاطعة - + Maitre قائد - + %f-%l%c %f-%l%c - + Esclave مُنقاد - + (%f-%l%c) %f-%l%c - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14486,27 +14506,27 @@ Longueur maximale : %2px %LM لم: الموقع - + Option d'affichage en croix خيارالعرضبالصليب - + Afficher les contacts de puissance dans la croix عرض ملامسات القدرة في الصليب - + Préfixe des contacts de puissance : بادئة مُلامسات القدرة : - + Préfixe des contacts temporisés : بادئة المُلامسات المُؤقتة : - + Préfixe des contacts inverseurs : بادئة المُلامسات العاكسة : diff --git a/lang/qet_ca.ts b/lang/qet_ca.ts index d6a1410c4..48e9336d2 100644 --- a/lang/qet_ca.ts +++ b/lang/qet_ca.ts @@ -12971,22 +12971,37 @@ Les autres champs ne sont pas utilisés. Bloc de borns exterior - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier l'orientation d'une borne Modifica l'orientació d'un born - + Modifier le nom du terminal Modifica el nom del born - + Modifier le type d'une borne Modifica el tipus d'un born - + Déplacer une borne Moure un born @@ -14476,41 +14491,46 @@ Longitud màxima : %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts &Mostra en contactes - + Afficher en croix Mostra en creu - + Label des références croisées Etiqueta de referència creuada - + Maitre Mestre - + %f-%l%c %f-%l%c - + Esclave Esclau - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14527,27 +14547,27 @@ Longitud màxima : %2px %LM : Ubicació - + Option d'affichage en croix Opció de visualització en creu - + Afficher les contacts de puissance dans la croix Mostra els contactes de potència a la creu - + Préfixe des contacts de puissance : Prefix dels contactes de potència: - + Préfixe des contacts temporisés : Prefix dels contactes temporitzats : - + Préfixe des contacts inverseurs : Prefix dels contactes inversors : diff --git a/lang/qet_cs.ts b/lang/qet_cs.ts index 85c11202c..e267a5de3 100644 --- a/lang/qet_cs.ts +++ b/lang/qet_cs.ts @@ -12960,12 +12960,12 @@ Ostatní pole se nepoužívají. Západ - + Modifier l'orientation d'une borne Upravit natočení svorky - + Déplacer une borne Přesunout svorku @@ -12985,12 +12985,27 @@ Ostatní pole se nepoužívají. Vnější svorkovnice - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal Změnit název svorky - + Modifier le type d'une borne Změnit typ svorky @@ -14474,41 +14489,46 @@ Největší délka: %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts &Zobrazit kontakty - + Afficher en croix Zobrazit křížek - + Label des références croisées Štítek křížových odkazů - + Maitre Nadřízený - + %f-%l%c %f-%l%c - + Esclave Podřízený - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14525,27 +14545,27 @@ Největší délka: %2px %LM: umístění - + Option d'affichage en croix Volba pro zobrazení křížku - + Afficher les contacts de puissance dans la croix Zobrazit výkonové kontakty v křížku - + Préfixe des contacts de puissance : Předpona výkonových kontaktů: - + Préfixe des contacts temporisés : Předpona zpožděných kontaktů: - + Préfixe des contacts inverseurs : Předpona přepínacích kontaktů: diff --git a/lang/qet_da.ts b/lang/qet_da.ts index 03865eef0..e9f5a8e9c 100644 --- a/lang/qet_da.ts +++ b/lang/qet_da.ts @@ -12921,12 +12921,12 @@ Les autres champs ne sont pas utilisés. Venstre - + Modifier l'orientation d'une borne Ændre retning på terminal - + Déplacer une borne Flyt terminal @@ -12946,12 +12946,27 @@ Les autres champs ne sont pas utilisés. Ekstern terminal - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal Ændre terminalrække navn - + Modifier le type d'une borne Ændre terminal type @@ -14436,41 +14451,46 @@ Maksimum længde: %2piksel + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts Vis kontakte&r - + Afficher en croix Vis kors - + Label des références croisées Referencekors etiket - + Maitre Overordnet - + %f-%l%c %f-%l%c - + Esclave Underordnet - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14487,27 +14507,27 @@ Maksimum længde: %2piksel %LM: placering - + Option d'affichage en croix Vis kors indstillinger - + Afficher les contacts de puissance dans la croix Vis hovedkontakter i kors - + Préfixe des contacts de puissance : Præfiks hovedkontakter: - + Préfixe des contacts temporisés : Præfiks tidskontakter: - + Préfixe des contacts inverseurs : Præfiks skiftekontakter: diff --git a/lang/qet_de.ts b/lang/qet_de.ts index dfffb0ab6..f07256aa0 100644 --- a/lang/qet_de.ts +++ b/lang/qet_de.ts @@ -12952,12 +12952,12 @@ Andere Felder werden nicht verwendet. West - + Modifier l'orientation d'une borne Orientierung eines Anschlusses ändern - + Déplacer une borne Anschluss verschieben @@ -12977,12 +12977,27 @@ Andere Felder werden nicht verwendet. externer Kontakt - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal Name des Anschlusses ändern - + Modifier le type d'une borne Typ des Anschlusses ändern @@ -14467,41 +14482,46 @@ Maximale Länge: %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts als &Kontakte anzeigen - + Afficher en croix als Tabelle anzeigen - + Label des références croisées Querverweistexte - + Maitre Master - + %f-%l%c %f-%l%c - + Esclave Slave - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14518,27 +14538,27 @@ Maximale Länge: %2px %LM: Ort - + Option d'affichage en croix Optionen für die Darstellung als Tabelle - + Afficher les contacts de puissance dans la croix Leistungskontakte anzeigen - + Préfixe des contacts de puissance : Präfix für Leistungskontakte: - + Préfixe des contacts temporisés : Präfix für zeitverzögerte Kontakte: - + Préfixe des contacts inverseurs : Präfix für Wechslerkontakte: diff --git a/lang/qet_el.ts b/lang/qet_el.ts index 6baba5b0c..c8e2df239 100644 --- a/lang/qet_el.ts +++ b/lang/qet_el.ts @@ -12910,12 +12910,12 @@ Les autres champs ne sont pas utilisés. Δύση - + Modifier l'orientation d'une borne Επεξεργασία του προσανατολισμού ενός ακροδέκτη - + Déplacer une borne Μετακίνηση ενός ακροδέκτη @@ -12935,12 +12935,27 @@ Les autres champs ne sont pas utilisés. Εξωτερική ομαδα ακροδεκτών - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal Επεξεργασία ονόματος τερματικού - + Modifier le type d'une borne Επεξεργασία του τύπου ενός ακροδέκτη @@ -14424,41 +14439,46 @@ Longueur maximale : %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts Εμφάνιση επαφών - + Afficher en croix Προβολή σε σταυρό - + Label des références croisées Ετικέτα διασταυρούμενων αναφορών - + Maitre Κύριο - + %f-%l%c %f-%l%c - + Esclave Βοηθητικό - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14475,27 +14495,27 @@ Longueur maximale : %2px % LM: Τοποθεσία - + Option d'affichage en croix Επιλογές εμφάνισης στο σταυρό - + Afficher les contacts de puissance dans la croix Εμφάνιση των επαφών ισχύος στο σταυρό - + Préfixe des contacts de puissance : Πρόθεμα των επαφών ισχύος: - + Préfixe des contacts temporisés : Πρόθεμα των επαφών χρονικού: - + Préfixe des contacts inverseurs : Πρόθεμα των επαφών διακόπτη: diff --git a/lang/qet_en.qm b/lang/qet_en.qm index 4c4f5ed9f9c274361a5d983b3f7555ed1b2e7328..38b5464f5fd891ba20ae9e7f96bc0dd359ff099f 100644 GIT binary patch delta 3336 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 Bcvt`c delta 3049 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 diff --git a/lang/qet_en.ts b/lang/qet_en.ts index f69560320..0d3e7b804 100644 --- a/lang/qet_en.ts +++ b/lang/qet_en.ts @@ -12944,12 +12944,12 @@ The other fields are not used. West - + Modifier l'orientation d'une borne Change the orientation of a terminal - + Déplacer une borne Move a terminal @@ -12969,12 +12969,27 @@ The other fields are not used. External terminal block - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + Common (contact SW) + + + Modifier le nom du terminal Change the terminal name - + Modifier le type d'une borne Change the type of a terminal @@ -14458,41 +14473,46 @@ Maximum length : %2px + Afficher les numéros de bornes dans les Xrefs + Display terminal numbers in Xrefs + + + Affiche&r en contacts &View contacts - + Afficher en croix View cross - + Label des références croisées Label cross reference - + Maitre Master - + %f-%l%c %f-%l%c - + Esclave Slave - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14509,27 +14529,27 @@ Maximum length : %2px % LM: Location - + Option d'affichage en croix Option display cross - + Afficher les contacts de puissance dans la croix Show the power contacts in the cross - + Préfixe des contacts de puissance : Prefix of power contacts : - + Préfixe des contacts temporisés : Prefix delayed contacts : - + Préfixe des contacts inverseurs : Prefix changeover contacts : diff --git a/lang/qet_es.ts b/lang/qet_es.ts index 7e33f54cb..d00f07a7a 100644 --- a/lang/qet_es.ts +++ b/lang/qet_es.ts @@ -12948,22 +12948,37 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier l'orientation d'une borne Editar la orientación de una terminal - + Modifier le nom du terminal - + Modifier le type d'une borne - + Déplacer une borne Mover un borne Mover un borne @@ -14451,41 +14466,46 @@ Ancho máximo : %2xp + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts Mostra&r contactos - + Afficher en croix Mostrar en cruz - + Label des références croisées Etiqueta de referencia cruzada - + Maitre Maestro - + %f-%l%c %f-%l%c - + Esclave Esclavo - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14502,27 +14522,27 @@ Ancho máximo : %2xp %LM: Ubicación - + Option d'affichage en croix Opción de presentación en cruz - + Afficher les contacts de puissance dans la croix Mostrar los contactos de potencia en la cruz - + Préfixe des contacts de puissance : Prefijo de los contactos de potencia: - + Préfixe des contacts temporisés : Prefijo de contactos temporizados: - + Préfixe des contacts inverseurs : Prefijo de contactos inversores: diff --git a/lang/qet_fr.qm b/lang/qet_fr.qm index 83325710dca5978aef7aef49985c255281ff61f2..d3f4ea8a948efc5fd1e4cc544e284ce9c6c7f0af 100644 GIT binary patch delta 3128 zcmZXWYgm(4636EZNlXGsN|Z!WO}J4Eb+=Tlt!9tp(?0tpznpo`Gw+;tX8v=Y zH2S)meBagj-vxmF0GIZ36G!#iV5-B>LpQYRr6XejLRJ8#-`wEQV�&F_koP62O=} zfDy4|V`g0W5iMdm$-e<6e+p>aK=pjj$esXM(*Rdopf;w(lyd4|Cdmzecj5s}B2uHl z|2PP$4*~4T?Iy-34yB=qMP`BE$8~__ZC=`jdTC$c<@k5KT+X~)SxzlJDoxfx5ZvDWiqF4D&* zSHi^AmjEtYhjddkz;8z&J)0kTP^XvC*Ss83<>izqUe0+yrXDIZ&L&3>Q}AJMhQ9>t za~v`&xUe*^suoGGKlS1d4LMUdD7xSD5>B(*KMQ@ zaUR-bhQH|%8YDq-)3OnTxF5_(*gecfkhR*37G#i+5A*ky^)-L26l_e{PM71 z65a8uWe2HDmWT0+=#I=3c!3?J?EuG+9m(e>E4$B*)LjLP`It;{y>j&~*8cTN?p4b! znA-v8_9mCSMskEbZa57%uai9T!&rUgP^-eoFfo+wyk=nSr0_T62n{*>Gn5q;Y&*-t zlHJ0Sk_y04pHYi{95!pHjE8o<(NRMS(7 zBQvO_r&c;6*e4@rC13)h%RSAQzls#SEbI0D+IrjAKJxTVlYAgJSIuq3d&wE7W1X}p(5keR3$7gfm2dn@aLt|$ zIPM~y4J=V64-~xEx(RT`&qCpo!GP}sP@1M0mmeUHMjJJyzc6uIF0g#FFnP`wfN_0< z_S7i=N85#t#}j}x9u|&C4dab*L^vjGHfJT-UN_>9EGl@t5?79;r?2N@R5rQ#Xt8h} zx%(KU)w#kgdmi$7m_==UZ0sy~`smTUkPLlWf?I_rUA*q&1HGL4yO-r+;i-|GfVtdX z-%>0}q($1PA?swqC(EA$4lfnH46XxA+#>WiZvyyKi3Hfl6)J+BYPFh`KZyKd{ehJ) z7WqB208GdsI6ay4<<2E56}*bj1vcJwgOB$+D$AC6|2sd1B;0l8$`tb zof>h3F$6IAAY~6QVul~p4AA3iT@eF zW6da|f^b*hEpgW+C9v@>@iWT^?l4#U=c#*ui%aNHxDiWyNEeaKPE%Qgfqg~|5qcaV zr}hY){~pO35@EnzXB{;Ksuvdvu2!R&y5@&$$rV+E&*@fUXq4syyVJvQ?@Y` z*VIyrQH4v&>8#O+nXBokF;$x2kle>)eqIfwnN&DFgj^;)W+YIJDVtrPMZCshN z$Qiv4a|6f|t;Goyq>Hg)Oaf)c*m3$OYKSrML3laFD4jIlS9O4kM$#{&h^<3M7`4P& zap*XD6l=zXVltSW{?~oi4|)?|afNTqXFT1D?Nnp7YnDlTKRn$CEd7~p{WmP(v+4oa|TX5tqh3 zAt(QRpBmyaaIu^`ac0b|AxnITa@jxpw*PekQ1_*mNzK$2uV#PH<#=6ilV8)CW58}7 z=qApO@@qQD*T02y6W{0}b%KR8QCfmtTJg2tIX^BNv#eB>P>1#u(hV(9&Mfi!&*6Ij zdv|sdQ~FZF(B^^BIWo~*4WOmi%Lxuyk2AboV!r4md%RhuPMN{ANk(PE)RJqmpnP8X zW5TI^n40aU)?r#rVy0|J@pi!IIxj6(WW$Q*04|82N5ibR!bm17Pii=M(qYxRn<+*il!QyI?N$E(o_K8&X*k@9>_(im+VBqDFDG4 z*@+=;z~HO0FK>_Mx2Va~ZZol;$YWDU$IX&`|FW6SzvrY&H1H4YNSvw}YmnVj^F}^6 zR@OPb6Ih!@_Gk(h$2nW6EwLFFPNst4{IU~A?%}TBALYYqc!h1smM7=G&j*1-o|4H& z`S)Ap_KUo1En-q6>6nL1Njk|B`J{vIQ-t;1%`b5hMR={^ki|XyQ>?K(oCf>6yhdE?sh@$Izo~B{@6c zx-PxqTxxSfu&$L49PS4W*80GKSHgQH7tEVioF6n`dO`leoaqaLCOX4fcNSqIdrgs= z{6FSeZVutrwEwr(p4g4j+Py`nZ7nQDpD`xm@Vva)(`U^r44ON$C@8;p-s#4|f})@q jGlOyq3iG*XMoxZF_p{8xnR!LE8_r-@Yso46ThIRjWp4VH delta 3101 zcmXArdtB4y7stJrj1mEb%IFs2qTtdnfa zjHO4Zi0PzGfJp}dBc4(XALCd8FnJo_iZ*IuT1>h}ZOkOK11yaNG|nS68vH{*wEh6V z&KX_AsDcBjXkvr33_cD=Unju16;varSsWb}Tue_oUmc4ko39;5Eho3H zlciIeuU%6d&j$9Y2lnkXHfV1Kz&{sQWd20J+(BfMsc_v6a>@*BB$dc=F!w06%c@ua zmB@2&$WPQRHwBv6A=(CT6xoqnzO&+I>`3)B!07H|Qs|ZLPgv`JUhrA9?3}q3@bzMH zDK<*A?Dx7a0q3Vtr{WN(<&&beLLG9fPEQb92%{Y7oIs7w~Wp-?8;meZ$jLp(j zfFt`*gMSWIbdXwEjqU(Cth8fU0d*>il`BfUVsA|ZrVRJ8o?Q#LJdZYZ*P`QdYUr*N zX1cvHr!pPhb(HdX30{~yT@JyT(VcRrTPbeJFkk~pL7zi{A+TnwHUvi>eOZ& zeT&-o)r@@VR9kVSoooSmO?jd%FK8KNKU8GvcA)Dl>z zOnh7P@0ND}XC;coPX+?M*@sd!^|-8wIyKtR$?L?!w$1>SYZfQXJq0+pRBTU~0?^nh zcKkjL*q%d_`ic=PC#d9=ax9%f-a)xI=oA$NX>q{?stPg+>lTRLt$heM?<}z@ zei2d)XnQX1blw8+s*s3q4|k+ZBb7LgQTMuymNTk$Y zH3M=5>otjANJj13z?1y5WbFN2z+%=&Qv5dYI9XH|Toa;@Cw zGbIbFxf#zRa)sz|^53+PW6lve9FonTEov%d#jZ5YbBR<-Uisb zKyo>Xi+x!<74_B&ixx|6L?!|*`iSa!8~kTW?n(X!tX?H~u-nK*d57A1Kg5LX2U`1N zdSQZ#4E?kN2G;oW+-wDy*4RZ{9_gbxQwl6P*2f?z0JyL52{(oUCIwJlKO<)3Q%yfT z4*!Z;`sLuNa5D8z!DSDrq`y^}@`q2cvnR06?)ntJ#}g1&M_2lrg_+NM+_P!`b6Q9} zz|D+QGvJVr{F~49caH+*eM{M4T4DV;pZ|vQHD=r)cbJPCPDhvui>{M*xDgBHkR?2u z^{1+E1M5Rg;d-3gNS9*ejt zdrRx4@yc5HDHR!0G!?t0&DW0u{QbSO`QK9j=kH5T1ZM#*=8e#3MCU{DGo^&a?w3Bm zB);Dj(qF&l=Jmi!+Og&gu%~^yh-qu6#H7cJ9aLw^W>)eZsKtcKWEkj>>V&|Bd?Q(U zDjH~vT+%M+6j8ux4+y%u1%ONU2)d^q0&Ke~1V@|#_IG6$aoklQ)cOc;Ux0@wGJ|)bsl*~-q5TL6Sf!b0jT^< z_~6w>fOozZYJZC2;vPwzkyDj1-wFH0{PyNJq29<}e*FaHMeWAvOGzEA#q|4RiMC?Y z4l0Va4u~-HRbUmQqz!3ELueBSTj!li&A3?2Q0lQ+xGl(K;73KCiakR zd+|B2o4&FS$L{3~d9AFjya8}_Hg&}6LX@(7YmWlE`*9aBZ;NbSGrxWm+C>~aiA-@8 zrX*LKUMRaJJ1yg$`XuX#mYX zdYHbSO5#0MqR%1IZA6&2vFiPa1#VU_4n9CE!ZP04ftcaJVS4;pHQQk#XYmld(?8!?Z zma?sOOj)?Fd+lpgHo|hktmu z$`4L?4lw)&5670s4}SF-|1a{FAK8}&;LepFO9%uU^d`01R9M(d?KV@0O@8+J9{|ta zm!EsX3)qtrUBuM0^7Ak10q0C3%P<4~g4x5S;+VInX_yMNN|S6~T-10lwO= z2=U*kN-qLp2GmkfDl%jW6prTalFeK4AC-#qcby!1G%a_KRE~=3Fu)>ey*= zBYIB4$uQFM(Tb9fY%aZYGSk - + Modifier l'orientation d'une borne - + Déplacer une borne @@ -12848,12 +12848,27 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal - + Modifier le type d'une borne @@ -14329,41 +14344,46 @@ Longueur maximale : %2px - Affiche&r en contacts + Afficher les numéros de bornes dans les Xrefs + Affiche&r en contacts + + + + Afficher en croix - + Label des références croisées - + Maitre - + %f-%l%c - + Esclave - + (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14374,27 +14394,27 @@ Longueur maximale : %2px - + Option d'affichage en croix - + Afficher les contacts de puissance dans la croix - + Préfixe des contacts de puissance : - + Préfixe des contacts temporisés : - + Préfixe des contacts inverseurs : diff --git a/lang/qet_hr.ts b/lang/qet_hr.ts index 3e29c168d..80741b906 100644 --- a/lang/qet_hr.ts +++ b/lang/qet_hr.ts @@ -12847,22 +12847,37 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Déplacer une borne - + Modifier l'orientation d'une borne - + Modifier le nom du terminal - + Modifier le type d'une borne @@ -14338,41 +14353,46 @@ Longueur maximale : %2px - Affiche&r en contacts + Afficher les numéros de bornes dans les Xrefs + Affiche&r en contacts + + + + Afficher en croix - + Label des références croisées - + Maitre - + %f-%l%c - + Esclave - + (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14383,27 +14403,27 @@ Longueur maximale : %2px - + Option d'affichage en croix - + Afficher les contacts de puissance dans la croix - + Préfixe des contacts de puissance : - + Préfixe des contacts temporisés : - + Préfixe des contacts inverseurs : diff --git a/lang/qet_hu.ts b/lang/qet_hu.ts index 1a1ad16a7..c3be51ab5 100644 --- a/lang/qet_hu.ts +++ b/lang/qet_hu.ts @@ -12912,12 +12912,12 @@ Les autres champs ne sont pas utilisés. Nyugat - + Modifier l'orientation d'une borne A csatlakozó tájolásának megváltoztatása - + Déplacer une borne Csatlakozó mozgatása @@ -12937,12 +12937,27 @@ Les autres champs ne sont pas utilisés. Külső sorkapocs - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal Csatlakozó név változtatása - + Modifier le type d'une borne A csatlakozó típusának megváltoztatása @@ -14426,41 +14441,46 @@ Maximális hossz : %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts &Kapcsolatok megtekintése - + Afficher en croix Kereszthivatkozások megtekintése - + Label des références croisées Kereszthivatkozás címkéje - + Maitre Mester - + %f-%l%c %f-%l%c - + Esclave Alárendelt - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14477,27 +14497,27 @@ Maximális hossz : %2px %LM: Elhelyezkedés - + Option d'affichage en croix Kereszthivatkozás megjelenítésének lehetősége - + Afficher les contacts de puissance dans la croix A főáramköri érintkezők mutatása a kereszthivatkozásban - + Préfixe des contacts de puissance : A főáramköri érintkezők előtagja : - + Préfixe des contacts temporisés : A késleltetett érintkezők előtagja : - + Préfixe des contacts inverseurs : váltó vagy morze érintkező A váltóérintkezők előtagja : diff --git a/lang/qet_it.ts b/lang/qet_it.ts index 068780213..862118284 100644 --- a/lang/qet_it.ts +++ b/lang/qet_it.ts @@ -12921,22 +12921,37 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier l'orientation d'une borne Modifica l'orientamento di un terminale - + Modifier le nom du terminal Cambia il nome del terminale - + Modifier le type d'une borne - + Déplacer une borne Sposta un terminale @@ -14387,7 +14402,7 @@ Lunghezza massima : %2px Sinistra - + Préfixe des contacts temporisés : Prefisso dei contatti temporizzati: @@ -14432,7 +14447,7 @@ Lunghezza massima : %2px Offset verticale XRef: - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14449,7 +14464,7 @@ Lunghezza massima : %2px % LM: posizione - + Maitre Maestro @@ -14464,7 +14479,12 @@ Lunghezza massima : %2px 10px corrisponde a 1 passo di movimentot - + + Afficher les numéros de bornes dans les Xrefs + + + + Label des références croisées Etichetta di riferimento incrociato @@ -14474,17 +14494,17 @@ Lunghezza massima : %2px Organo di protezione - + Option d'affichage en croix Opzione di visualizzazione incrociata - + (%f-%l%c) (%f-%l%c) - + Préfixe des contacts de puissance : Prefisso del contatto di alimentazione : @@ -14494,7 +14514,7 @@ Lunghezza massima : %2px Posizione XRef dello slave - + Afficher en croix Mostra croce @@ -14509,7 +14529,7 @@ Lunghezza massima : %2px In fondo alla pagina - + %f-%l%c %f-%l%c @@ -14519,7 +14539,7 @@ Lunghezza massima : %2px Default - Adatta all'altezza XRef - + Esclave Schiavo @@ -14529,17 +14549,17 @@ Lunghezza massima : %2px Sotto l'etichetta dell'elemento - + Afficher les contacts de puissance dans la croix Mostra i contatti di potenza nella croce - + Affiche&r en contacts Visualizza&re come contatti - + Préfixe des contacts inverseurs : Prefisso contatto in scambio : diff --git a/lang/qet_ja.ts b/lang/qet_ja.ts index 93558996d..5e26f95f4 100644 --- a/lang/qet_ja.ts +++ b/lang/qet_ja.ts @@ -12898,12 +12898,12 @@ Les autres champs ne sont pas utilisés. 西 - + Modifier l'orientation d'une borne 端子の向きを変更 - + Déplacer une borne 端子を移動 @@ -12923,12 +12923,27 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal - + Modifier le type d'une borne @@ -14413,41 +14428,46 @@ Longueur maximale : %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts 接点を表示 (&V) - + Afficher en croix 相互参照を表示 - + Label des références croisées 相互参照のラベル - + Maitre - + %f-%l%c - + Esclave - + (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14464,27 +14484,27 @@ Longueur maximale : %2px % LM: 場所 - + Option d'affichage en croix 相互参照の表示オプション - + Afficher les contacts de puissance dans la croix 相互参照に動力接点を表示 - + Préfixe des contacts de puissance : 動力接点の接頭辞 : - + Préfixe des contacts temporisés : 限時接点の接頭辞 : - + Préfixe des contacts inverseurs : 切替接点 (c接点) の接頭辞 : diff --git a/lang/qet_ko.ts b/lang/qet_ko.ts index 3ae4559cb..aa78edadb 100644 --- a/lang/qet_ko.ts +++ b/lang/qet_ko.ts @@ -12800,12 +12800,12 @@ Les autres champs ne sont pas utilisés. - + Modifier l'orientation d'une borne 단자 방향 변경 - + Déplacer une borne 단자 이동 @@ -12825,12 +12825,27 @@ Les autres champs ne sont pas utilisés. 외부 단자대 - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal 단자 이름 변경 - + Modifier le type d'une borne 단자 유형 변경 @@ -14307,41 +14322,46 @@ Longueur maximale : %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts 접점으로 보&기 - + Afficher en croix 십자형으로 보기 - + Label des références croisées 교차 참조 라벨 - + Maitre 마스터 - + %f-%l%c %f-%l%c - + Esclave 슬레이브 - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14352,27 +14372,27 @@ Longueur maximale : %2px - + Option d'affichage en croix 십자형 표시 옵션 - + Afficher les contacts de puissance dans la croix 십자형에 전력 접점 표시 - + Préfixe des contacts de puissance : 전력 접점 접두어 : - + Préfixe des contacts temporisés : 지연 접점 접두어 : - + Préfixe des contacts inverseurs : 전환 접점 접두어 : diff --git a/lang/qet_mn.ts b/lang/qet_mn.ts index c639d4a0c..ba808231d 100644 --- a/lang/qet_mn.ts +++ b/lang/qet_mn.ts @@ -12880,22 +12880,37 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal - + Modifier le type d'une borne - + Modifier l'orientation d'une borne Холболтын чигийг өөрчлөх - + Déplacer une borne Холболтыг зөөх @@ -14379,41 +14394,46 @@ Longueur maximale : %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts - + Afficher en croix - + Label des références croisées - + Maitre Эзэн - + %f-%l%c %f-%l%c - + Esclave Боол - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14424,27 +14444,27 @@ Longueur maximale : %2px - + Option d'affichage en croix - + Afficher les contacts de puissance dans la croix - + Préfixe des contacts de puissance : - + Préfixe des contacts temporisés : - + Préfixe des contacts inverseurs : diff --git a/lang/qet_nb.ts b/lang/qet_nb.ts index 057bb1951..c5ee1e2f2 100644 --- a/lang/qet_nb.ts +++ b/lang/qet_nb.ts @@ -12894,12 +12894,12 @@ Les autres champs ne sont pas utilisés. Vest - + Modifier l'orientation d'une borne Endre retning av en tilkoblingspunkt - + Déplacer une borne Flytt/Skyv en tilkoblingspunkt @@ -12919,12 +12919,27 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal - + Modifier le type d'une borne @@ -14406,41 +14421,46 @@ Største lengde: %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts Vis som &kontakt - + Afficher en croix Vis som tabell - + Label des références croisées Kryssreferansetekster - + Maitre Master - + %f-%l%c %f-%l%c - + Esclave Slave - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14457,27 +14477,27 @@ Største lengde: %2px %LM: plassering/lokasjon - + Option d'affichage en croix Opsjoner ved visning som tabell - + Afficher les contacts de puissance dans la croix Vis lastkontakter - + Préfixe des contacts de puissance : Prefiks for lastkontakter: - + Préfixe des contacts temporisés : Prefiks for tidsforsinkede kontakter: - + Préfixe des contacts inverseurs : Prefiks for vekslerkontakter: diff --git a/lang/qet_nl_BE.ts b/lang/qet_nl_BE.ts index 8704b8bf6..1016504f1 100644 --- a/lang/qet_nl_BE.ts +++ b/lang/qet_nl_BE.ts @@ -12972,22 +12972,37 @@ De overige velden worden niet gebruikt. Externe klem - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier l'orientation d'une borne Verander de orientatie van een klem - + Modifier le type d'une borne Wijzig het type klem - + Déplacer une borne Verplaats een klem - + Modifier le nom du terminal Verander de naam van de klem @@ -14472,41 +14487,46 @@ Maximale lengte : %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts Wee&rgeven in contacten - + Afficher en croix Weergeven in kruisverwijzing - + Label des références croisées Weergave kruisverwijzing - + Maitre Master - + %f-%l%c %f-%l%c - + Esclave Slave - + (%f-%l%c) %f-%l%c - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14523,27 +14543,27 @@ Maximale lengte : %2px % LM: Location - + Option d'affichage en croix Eigenschappen kruisverwijzing - + Afficher les contacts de puissance dans la croix Tonen de vermogen contacten in het kruis - + Préfixe des contacts de puissance : Voorvoegsel voor vermogen contact : - + Préfixe des contacts temporisés : Voorvoegsel voor tijdsghestuurd contact : - + Préfixe des contacts inverseurs : Voorvoegsel voor omkeer contact : diff --git a/lang/qet_nl_NL.ts b/lang/qet_nl_NL.ts index c1ad7844d..923d1652c 100644 --- a/lang/qet_nl_NL.ts +++ b/lang/qet_nl_NL.ts @@ -12847,22 +12847,37 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Déplacer une borne - + Modifier l'orientation d'une borne - + Modifier le nom du terminal - + Modifier le type d'une borne @@ -14308,41 +14323,46 @@ Longueur maximale : %2px - Affiche&r en contacts + Afficher les numéros de bornes dans les Xrefs + Affiche&r en contacts + + + + Afficher en croix - + Label des références croisées - + Maitre - + %f-%l%c - + Esclave - + (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14353,27 +14373,27 @@ Longueur maximale : %2px - + Option d'affichage en croix - + Afficher les contacts de puissance dans la croix - + Préfixe des contacts de puissance : - + Préfixe des contacts temporisés : - + Préfixe des contacts inverseurs : diff --git a/lang/qet_pl.ts b/lang/qet_pl.ts index f8668cc0b..e82dd3ceb 100644 --- a/lang/qet_pl.ts +++ b/lang/qet_pl.ts @@ -13028,12 +13028,12 @@ Pozostałe pola nie są używane. Zachód - + Modifier l'orientation d'une borne Zmiana orientacji terminala - + Déplacer une borne Przesunięcie zacisku @@ -13053,12 +13053,27 @@ Pozostałe pola nie są używane. Listwa zaciskowa zewnętrzna - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal Zmień nazwę terminala - + Modifier le type d'une borne Zmiana typu zacisku @@ -14548,41 +14563,46 @@ Długość maksymalna: %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts Pokaż ze&styki - + Afficher en croix Pokaż krzyż - + Label des références croisées Etykieta oznaczenia referencyjnego - + Maitre Nadrzędny - + %f-%l%c %f-%l%c - + Esclave Podrzędny - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14599,27 +14619,27 @@ Długość maksymalna: %2px %LM: lokalizacja - + Option d'affichage en croix Opcje wyświetlania krzyża - + Afficher les contacts de puissance dans la croix Pokaż zestyki i krzyż - + Préfixe des contacts de puissance : Prefiks dla zestyków obwodów głównych: - + Préfixe des contacts temporisés : Prefiks dla zestyków działających z opóźnieniem: - + Préfixe des contacts inverseurs : Prefiks dla zestyków przełącznych: diff --git a/lang/qet_pt.ts b/lang/qet_pt.ts index db832e481..537f7231a 100644 --- a/lang/qet_pt.ts +++ b/lang/qet_pt.ts @@ -12928,22 +12928,37 @@ form - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Déplacer une borne - + Modifier l'orientation d'une borne - + Modifier le nom du terminal - + Modifier le type d'une borne @@ -14437,41 +14452,46 @@ form - Affiche&r en contacts + Afficher les numéros de bornes dans les Xrefs + Affiche&r en contacts + + + + Afficher en croix - + Label des références croisées - + Maitre - + %f-%l%c - + Esclave - + (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14482,27 +14502,27 @@ form - + Option d'affichage en croix - + Afficher les contacts de puissance dans la croix - + Préfixe des contacts de puissance : - + Préfixe des contacts temporisés : - + Préfixe des contacts inverseurs : diff --git a/lang/qet_pt_BR.ts b/lang/qet_pt_BR.ts index 75541fb38..4ef4714af 100644 --- a/lang/qet_pt_BR.ts +++ b/lang/qet_pt_BR.ts @@ -12947,12 +12947,12 @@ Os outros campos não são usados. Oeste - + Modifier l'orientation d'une borne Editar a orientação de um terminal - + Déplacer une borne Mover um terminal @@ -12972,12 +12972,27 @@ Os outros campos não são usados. Bloco de terminais externo - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal Mudar o nome do terminal - + Modifier le type d'une borne Mudar o tipo de terminal @@ -14463,41 +14478,46 @@ Comprimento máximo: %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts Exibi&r em contatos - + Afficher en croix Exibir em cruz - + Label des références croisées Legenda das referências cruzadas - + Maitre Mestre - + %f-%l%c %f-%l%c - + Esclave Escravo - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14514,27 +14534,27 @@ Comprimento máximo: %2px %LM: Localização - + Option d'affichage en croix Opção de visualização em cruz - + Afficher les contacts de puissance dans la croix Exibir os contatos de potência na cruz - + Préfixe des contacts de puissance : Prefixo dos contatos de potência: - + Préfixe des contacts temporisés : Prefixo dos contatos temporizados: - + Préfixe des contacts inverseurs : Prefixo dos contatos reversores: diff --git a/lang/qet_ro.ts b/lang/qet_ro.ts index 8779d085b..a938612e6 100644 --- a/lang/qet_ro.ts +++ b/lang/qet_ro.ts @@ -12854,22 +12854,37 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Déplacer une borne - + Modifier l'orientation d'une borne - + Modifier le nom du terminal - + Modifier le type d'une borne @@ -14346,41 +14361,46 @@ Longueur maximale : %2px - Affiche&r en contacts + Afficher les numéros de bornes dans les Xrefs + Affiche&r en contacts + + + + Afficher en croix Vizualizare încrucișată - + Label des références croisées - + Maitre - + %f-%l%c - + Esclave Sclav - + (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14391,27 +14411,27 @@ Longueur maximale : %2px - + Option d'affichage en croix Opțiuni afișare încrucișată - + Afficher les contacts de puissance dans la croix Afișează contactele de putere în cruce - + Préfixe des contacts de puissance : Prefix contacte de putere : - + Préfixe des contacts temporisés : Prefix contacte temporizate : - + Préfixe des contacts inverseurs : Prefix contacte inversoare : diff --git a/lang/qet_rs.ts b/lang/qet_rs.ts index 91e77d289..5c0589f7e 100644 --- a/lang/qet_rs.ts +++ b/lang/qet_rs.ts @@ -12864,22 +12864,37 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Déplacer une borne - + Modifier l'orientation d'une borne - + Modifier le nom du terminal - + Modifier le type d'une borne @@ -14325,41 +14340,46 @@ Longueur maximale : %2px - Affiche&r en contacts + Afficher les numéros de bornes dans les Xrefs + Affiche&r en contacts + + + + Afficher en croix - + Label des références croisées - + Maitre - + %f-%l%c - + Esclave - + (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14370,27 +14390,27 @@ Longueur maximale : %2px - + Option d'affichage en croix - + Afficher les contacts de puissance dans la croix - + Préfixe des contacts de puissance : - + Préfixe des contacts temporisés : - + Préfixe des contacts inverseurs : diff --git a/lang/qet_ru.ts b/lang/qet_ru.ts index b54c26b06..eb54827ce 100644 --- a/lang/qet_ru.ts +++ b/lang/qet_ru.ts @@ -12988,22 +12988,37 @@ Les autres champs ne sont pas utilisés. Внешняя клеммная колодка - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Déplacer une borne Переместить вывод - + Modifier l'orientation d'une borne Изменить ориентацию вывода - + Modifier le nom du terminal Изменить имя вывода - + Modifier le type d'une borne Изменить ориентацию вывода @@ -14487,41 +14502,46 @@ Longueur maximale : %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts По&казывать контакты - + Afficher en croix Показывать перекрестие - + Label des références croisées Метка перекрестной ссылки - + Maitre Главный - + %f-%l%c %f-%l%c - + Esclave Подчинённый - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14538,27 +14558,27 @@ Longueur maximale : %2px % LM: расположение - + Option d'affichage en croix Настройки отображения перекрестия - + Afficher les contacts de puissance dans la croix Показывать силовые контакты на перекрестии - + Préfixe des contacts de puissance : Префикс силовых контактов: - + Préfixe des contacts temporisés : Префикс контактов с задержкой: - + Préfixe des contacts inverseurs : Префикс контактов переключения: diff --git a/lang/qet_sk.ts b/lang/qet_sk.ts index b78892d27..72b10575d 100644 --- a/lang/qet_sk.ts +++ b/lang/qet_sk.ts @@ -12819,12 +12819,12 @@ Les autres champs ne sont pas utilisés. - + Modifier l'orientation d'une borne - + Déplacer une borne @@ -12844,12 +12844,27 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal - + Modifier le type d'une borne @@ -14325,41 +14340,46 @@ Longueur maximale : %2px - Affiche&r en contacts + Afficher les numéros de bornes dans les Xrefs + Affiche&r en contacts + + + + Afficher en croix - + Label des références croisées - + Maitre - + %f-%l%c - + Esclave - + (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14370,27 +14390,27 @@ Longueur maximale : %2px - + Option d'affichage en croix - + Afficher les contacts de puissance dans la croix - + Préfixe des contacts de puissance : - + Préfixe des contacts temporisés : - + Préfixe des contacts inverseurs : diff --git a/lang/qet_sl.ts b/lang/qet_sl.ts index f8cded59f..16d740acc 100644 --- a/lang/qet_sl.ts +++ b/lang/qet_sl.ts @@ -12881,22 +12881,37 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Déplacer une borne - + Modifier l'orientation d'une borne - + Modifier le nom du terminal - + Modifier le type d'une borne @@ -14342,41 +14357,46 @@ Longueur maximale : %2px - Affiche&r en contacts + Afficher les numéros de bornes dans les Xrefs + Affiche&r en contacts + + + + Afficher en croix - + Label des références croisées - + Maitre - + %f-%l%c - + Esclave - + (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14387,27 +14407,27 @@ Longueur maximale : %2px - + Option d'affichage en croix - + Afficher les contacts de puissance dans la croix - + Préfixe des contacts de puissance : - + Préfixe des contacts temporisés : - + Préfixe des contacts inverseurs : diff --git a/lang/qet_sr.ts b/lang/qet_sr.ts index 82d76066e..676cd3c5c 100644 --- a/lang/qet_sr.ts +++ b/lang/qet_sr.ts @@ -12864,22 +12864,37 @@ Les autres champs ne sont pas utilisés. - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Déplacer une borne - + Modifier l'orientation d'une borne - + Modifier le nom du terminal - + Modifier le type d'une borne @@ -14325,41 +14340,46 @@ Longueur maximale : %2px - Affiche&r en contacts + Afficher les numéros de bornes dans les Xrefs + Affiche&r en contacts + + + + Afficher en croix - + Label des références croisées - + Maitre - + %f-%l%c - + Esclave - + (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14370,27 +14390,27 @@ Longueur maximale : %2px - + Option d'affichage en croix - + Afficher les contacts de puissance dans la croix - + Préfixe des contacts de puissance : - + Préfixe des contacts temporisés : - + Préfixe des contacts inverseurs : diff --git a/lang/qet_sv.ts b/lang/qet_sv.ts index 19057f1c1..2a74d024b 100644 --- a/lang/qet_sv.ts +++ b/lang/qet_sv.ts @@ -12989,22 +12989,37 @@ De andra fälten används inte. Extern anslutning - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Déplacer une borne Flytta en anslutning - + Modifier l'orientation d'une borne Ändra orientering på en anslutning - + Modifier le nom du terminal Ändra namn på en anslutning - + Modifier le type d'une borne Ändra typ på en anslutning @@ -14459,41 +14474,46 @@ Maximal längd: %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts &Visa kontakter - + Afficher en croix Visa kors - + Label des références croisées Etikett för korsreferenser - + Maitre Huvudfunktion: - + %f-%l%c %f-%l%c - + Esclave Slavfunktion: - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14510,27 +14530,27 @@ Maximal längd: %2px %LM: Placering (+) - + Option d'affichage en croix Alternativ för korsvisning - + Afficher les contacts de puissance dans la croix Visa kraftkontakterna i korset - + Préfixe des contacts de puissance : Prefix för kraftkontakter: - + Préfixe des contacts temporisés : Prefix för tidsinställda kontakter: - + Préfixe des contacts inverseurs : Prefix för växlande kontakter: diff --git a/lang/qet_tr.ts b/lang/qet_tr.ts index 980e5610a..4eb55c545 100644 --- a/lang/qet_tr.ts +++ b/lang/qet_tr.ts @@ -12972,12 +12972,12 @@ Diğer alanlar kullanılmaz. Batı - + Modifier l'orientation d'une borne Bir terminalin yönünü değiştirin - + Déplacer une borne Bir terminali taşıyın @@ -12997,12 +12997,27 @@ Diğer alanlar kullanılmaz. Dış klemens bloğu - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal Klemens adını değiştir - + Modifier le type d'une borne Bir klemensin tipini değiştir @@ -14488,41 +14503,46 @@ Maksimum uzunluk :%2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts Kontakla&rı görüntüle - + Afficher en croix Çapraz görüntüle - + Label des références croisées Çapraz referans etiketi - + Maitre Master - + %f-%l%c %f-%l%c - + Esclave Bağımlı - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14539,27 +14559,27 @@ Maksimum uzunluk :%2px %LM : Konum - + Option d'affichage en croix Çapraz ekran seçeneği - + Afficher les contacts de puissance dans la croix Güç kontaklarını çapraz göster - + Préfixe des contacts de puissance : Güç kontaklarının ön eki: - + Préfixe des contacts temporisés : Zamanlı kontakların öneki : - + Préfixe des contacts inverseurs : İnvertör kontaklarının öneki : diff --git a/lang/qet_uk.ts b/lang/qet_uk.ts index f9491515c..bae651f89 100644 --- a/lang/qet_uk.ts +++ b/lang/qet_uk.ts @@ -12990,22 +12990,37 @@ Les autres champs ne sont pas utilisés. Зовнішня клемна колодка - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Déplacer une borne Перемістити вивід - + Modifier l'orientation d'une borne Змінити орієнтацію вивода - + Modifier le nom du terminal Змінити ім'я вивода - + Modifier le type d'une borne Змінити орієнтацію вивода @@ -14458,41 +14473,46 @@ Longueur maximale : %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts По&казати контакти - + Afficher en croix Показати перехрестя - + Label des références croisées Мітка перехресного посилання - + Maitre Головний - + %f-%l%c %f-%l%c - + Esclave Пілпорядкований - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14509,27 +14529,27 @@ Longueur maximale : %2px % LM: розташування - + Option d'affichage en croix Налаштування вd'ідображення перехрестя - + Afficher les contacts de puissance dans la croix Показати силові контакти на перехресті - + Préfixe des contacts de puissance : Префікс силових контактів: - + Préfixe des contacts temporisés : Префікс контактів з затримкою: - + Préfixe des contacts inverseurs : Префікс контактів перемикання: diff --git a/lang/qet_zh.ts b/lang/qet_zh.ts index 505dfae08..1c4a4902a 100644 --- a/lang/qet_zh.ts +++ b/lang/qet_zh.ts @@ -12906,12 +12906,12 @@ Les autres champs ne sont pas utilisés. 西 - + Modifier l'orientation d'une borne 更改端子的方向 - + Déplacer une borne 移动端子 @@ -12931,12 +12931,27 @@ Les autres champs ne sont pas utilisés. 外部端子 - + + NO (contact SW) + + + + + NC (contact SW) + + + + + Commun (contact SW) + + + + Modifier le nom du terminal 更改端子名称 - + Modifier le type d'une borne 修改端子类型 @@ -14421,41 +14436,46 @@ Longueur maximale : %2px + Afficher les numéros de bornes dans les Xrefs + + + + Affiche&r en contacts 在联系人中显示(&R) - + Afficher en croix 显示十字 - + Label des références croisées 交叉引用标签 - + Maitre 掌握 - + %f-%l%c %f-%l%c - + Esclave 从属 - + (%f-%l%c) (%f-%l%c) - + Créer votre propre texte en vous aidant des variables suivantes : %f : le numéro de folio %F: le label de folio @@ -14472,27 +14492,27 @@ Longueur maximale : %2px %LM:位置 - + Option d'affichage en croix 十字线选项 - + Afficher les contacts de puissance dans la croix 在十字中显示电源触点 - + Préfixe des contacts de puissance : 电源触点前缀: - + Préfixe des contacts temporisés : 延时触点前缀: - + Préfixe des contacts inverseurs : 转换触点前缀: From 6dd7c2d926ef03632d18c52a518766d95f7dfe99 Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Sun, 24 May 2026 16:00:45 +0200 Subject: [PATCH 79/82] crossrefitem: fix SIGSEGV crash + improve double-click navigation + fix PDF/SVG/print rendering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix a use-after-free crash (SIGSEGV in QRegion::begin, Qt5Gui+0x49af60) confirmed by analysis of 19 coredumps. The crash was triggered when the scene viewport clip region was freed during zoom/resize events while QPicture::play() replayed drawPolyline commands through the scene painter. Qt's raster engine then dereferenced a stale QRegionData pointer. Root cause: CrossRefItem used three nested QPicture objects (m_drawing, m_hdr_no_ctc, m_hdr_nc_ctc). The nested drawPicture() calls amplified the use-after-free risk on any repaint event. Fix: remove all QPicture from CrossRefItem entirely. - updateLabel() now uses a QImage-backed dummy painter to compute m_bounding_rect, m_shape_path and m_hovered_contacts_map geometry. A bool m_update_map flag prevents the map from being overwritten during paint(). - paint() calls drawAsCross()/drawAsContacts() directly on the scene painter — no QPicture::play() anywhere in the class. - buildHeaderContact() now draws NO/NC symbols directly onto the painter instead of recording them into QPicture members. Also fix mouseDoubleClickEvent: the element under the click is now found directly from m_hovered_contacts_map using the event position, rather than relying on m_hovered_contact which could be reset by hoverMoveEvent between the two clicks of a double-click. Also remove setBold(true) on terminal name labels: the Qt PDF/SVG/print engine rendered bold at 4pt as extremely thick glyphs, making exports unreadable. Normal weight at 4pt is correct and legible on all backends. Fixes: SIGSEGV in CrossRefItem::paint() on zoom/resize Fixes: double-click navigation unreliable on Xref contact symbols Fixes: terminal name labels unreadable in PDF/SVG/print export --- sources/qetgraphicsitem/crossrefitem.cpp | 193 ++++++++++++----------- sources/qetgraphicsitem/crossrefitem.h | 5 +- 2 files changed, 104 insertions(+), 94 deletions(-) diff --git a/sources/qetgraphicsitem/crossrefitem.cpp b/sources/qetgraphicsitem/crossrefitem.cpp index 2527232d1..d1bd2accd 100644 --- a/sources/qetgraphicsitem/crossrefitem.cpp +++ b/sources/qetgraphicsitem/crossrefitem.cpp @@ -17,6 +17,8 @@ */ #include "crossrefitem.h" +#include + #include "../autoNum/assignvariables.h" #include "../diagram.h" #include "../diagramposition.h" @@ -222,12 +224,12 @@ void CrossRefItem::updateLabel() prepareGeometryChange(); m_bounding_rect = QRectF(); - //Reset QPicture so it doesn't accumulate commands across updates - m_drawing = QPicture(); - - //init the painter - QPainter qp; - qp.begin(&m_drawing); + // Build geometry and m_hovered_contacts_map using a QImage-backed + // painter so font metrics match the screen painter in paint(). + // m_update_map=true allows the draw functions to populate the map; + // paint() calls them with m_update_map=false so the map is stable. + QImage dummy(1, 1, QImage::Format_ARGB32_Premultiplied); + QPainter qp(&dummy); QPen pen_; pen_.setWidthF(0.5); qp.setPen(pen_); @@ -236,17 +238,21 @@ void CrossRefItem::updateLabel() //Draw cross or contact, only if master element is linked. if (! m_element->linkedElements().isEmpty()) { + m_update_map = true; XRefProperties::DisplayHas dh = m_properties.displayHas(); if (dh == XRefProperties::Cross) drawAsCross(qp); else if (dh == XRefProperties::Contacts) drawAsContacts(qp); + m_update_map = false; } - qp.end(); autoPos(); update(); + // Schedule a second update after the scene has finished laying out, + // so the initial render uses the correct bounding rect. + QTimer::singleShot(0, this, [this]{ update(); }); } /** @@ -314,7 +320,26 @@ void CrossRefItem::paint( { Q_UNUSED(option) Q_UNUSED(widget) - m_drawing.play(painter); + // Draw directly — no QPicture involved anywhere. + // QPicture::play() + nested drawPicture() (m_hdr_no_ctc/m_hdr_nc_ctc) + // caused a use-after-free crash (QRegion::begin, Qt5Gui+0x49af60) + // confirmed by analysis of 19+ coredumps. + // m_update_map=false: draw functions do not overwrite m_hovered_contacts_map. + if (m_element->linkedElements().isEmpty()) return; + + QPen pen_; + pen_.setWidthF(0.5); + painter->save(); + painter->setPen(pen_); + painter->setFont(QETApp::diagramTextsFont(5)); + + m_update_map = false; + XRefProperties::DisplayHas dh = m_properties.displayHas(); + if (dh == XRefProperties::Cross) + drawAsCross(*painter); + else if (dh == XRefProperties::Contacts) + drawAsContacts(*painter); + painter->restore(); } /** @@ -324,7 +349,24 @@ void CrossRefItem::paint( void CrossRefItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { event->accept(); - QetGraphicsItem::showItem(m_hovered_contact); + + // Find the element under the click position directly from the map, + // rather than relying on m_hovered_contact which may have been reset + // by hoverMoveEvent between the two clicks of the double-click. + QPointF pos = event->pos(); + Element *target = m_hovered_contact; + + if (!target) { + for (auto it = m_hovered_contacts_map.begin(); + it != m_hovered_contacts_map.end(); ++it) { + if (it.value().contains(pos)) { + target = it.key(); + break; + } + } + } + + QetGraphicsItem::showItem(target); } /** @@ -436,49 +478,41 @@ void CrossRefItem::linkedChanged() /** @brief CrossRefItem::buildHeaderContact - Draw the QPicture of m_hdr_no_ctc and m_hdr_nc_ctc + Draw NO and NC contact symbols directly onto painter. + Previously used QPicture (m_hdr_no_ctc/m_hdr_nc_ctc) which caused + use-after-free crashes via nested QPicture::play() calls. */ -void CrossRefItem::buildHeaderContact() +void CrossRefItem::buildHeaderContact(QPainter &painter, QPointF no_pos, QPointF nc_pos) { - if (!m_hdr_no_ctc.isNull() && !m_hdr_nc_ctc.isNull()) return; - - //init the painter - QPainter qp; QPen pen_; pen_.setWidthF(0.2); + painter.save(); + painter.setPen(pen_); - //draw the NO contact - if (m_hdr_no_ctc.isNull()) { - qp.begin(&m_hdr_no_ctc); - qp.setPen(pen_); - qp.drawLine(0, 3, 5, 3); - QPointF p1[3] = { - QPointF(5, 0), - QPointF(10, 3), - QPointF(15, 3), - }; - qp.drawPolyline(p1,3); - qp.end(); - } + //draw the NO contact header symbol + painter.drawLine(no_pos.x()+0, no_pos.y()+3, no_pos.x()+5, no_pos.y()+3); + QPointF p1[3] = { + QPointF(no_pos.x()+5, no_pos.y()+0), + QPointF(no_pos.x()+10, no_pos.y()+3), + QPointF(no_pos.x()+15, no_pos.y()+3), + }; + painter.drawPolyline(p1, 3); - //draw the NC contact - if (m_hdr_nc_ctc.isNull()) { - qp.begin(&m_hdr_nc_ctc); - qp.setPen(pen_); - QPointF p2[3] = { - QPointF(0, 3), - QPointF(5, 3), - QPointF(5, 0) - }; - qp.drawPolyline(p2,3); - QPointF p3[3] = { - QPointF(4, 0), - QPointF(10, 3), - QPointF(15, 3), - }; - qp.drawPolyline(p3,3); - qp.end(); - } + //draw the NC contact header symbol + QPointF p2[3] = { + QPointF(nc_pos.x()+0, nc_pos.y()+3), + QPointF(nc_pos.x()+5, nc_pos.y()+3), + QPointF(nc_pos.x()+5, nc_pos.y()+0) + }; + painter.drawPolyline(p2, 3); + QPointF p3[3] = { + QPointF(nc_pos.x()+4, nc_pos.y()+0), + QPointF(nc_pos.x()+10, nc_pos.y()+3), + QPointF(nc_pos.x()+15, nc_pos.y()+3), + }; + painter.drawPolyline(p3, 3); + + painter.restore(); } /** @@ -640,7 +674,7 @@ void CrossRefItem::drawAsCross(QPainter &painter) //calculate the size of the cross setUpCrossBoundingRect(painter); m_drawed_contacts = 0; - m_hovered_contacts_map.clear(); + if (m_update_map) m_hovered_contacts_map.clear(); //Bounding rect is empty that mean there's no contact to draw if (boundingRect().isEmpty()) return; @@ -650,12 +684,11 @@ void CrossRefItem::drawAsCross(QPainter &painter) painter.drawLine(br.width()/2, 0, br.width()/2, br.height()); //vertical line painter.drawLine(0, header, br.width(), header); //horizontal line - //Add the symbolic contacts - buildHeaderContact(); - QPointF p((m_bounding_rect.width()/4) - (m_hdr_no_ctc.width()/2), 0); - painter.drawPicture (p, m_hdr_no_ctc); - p.setX((m_bounding_rect.width() * 3/4) - (m_hdr_nc_ctc.width()/2)); - painter.drawPicture (p, m_hdr_nc_ctc); + //Add the symbolic contacts (drawn directly, no QPicture) + static const qreal hdr_symbol_width = 15.0; + QPointF no_pos((m_bounding_rect.width()/4) - (hdr_symbol_width/2), 0); + QPointF nc_pos((m_bounding_rect.width() * 3/4) - (hdr_symbol_width/2), 0); + buildHeaderContact(painter, no_pos, nc_pos); //and fill it fillCrossRef(painter); @@ -672,7 +705,7 @@ void CrossRefItem::drawAsContacts(QPainter &painter) return; m_drawed_contacts = 0; - m_hovered_contacts_map.clear(); + if (m_update_map) m_hovered_contacts_map.clear(); QRectF bounding_rect; //Draw each linked contact @@ -809,9 +842,7 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt, in // Draw terminal names on each side of the contact symbol // terminal_names[0] on the left, terminal_names[1] on the right if (!terminal_names.isEmpty() && m_properties.showTerminalName()) { - QFont font = QETApp::diagramTextsFont(4); - font.setBold(true); - painter.setFont(font); + painter.setFont(QETApp::diagramTextsFont(4)); QRectF bt(0, offset, 24, 10); if (terminal_names.size() >= 1) painter.drawText(bt, Qt::AlignLeft|Qt::AlignTop, terminal_names[0]); @@ -896,14 +927,8 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt, in painter.drawText(text_rect, Qt::AlignLeft | Qt::AlignVCenter, str); bounding_rect = bounding_rect.united(text_rect); - if (m_hovered_contacts_map.contains(elmt)) - { + if (m_update_map) m_hovered_contacts_map.insert(elmt, bounding_rect); - } - else - { - m_hovered_contacts_map.insert(elmt, bounding_rect); - } ++m_drawed_contacts; } @@ -940,9 +965,7 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt, in // terminal_names[1] = NC side (bottom left) // terminal_names[2] = common side (right) if (!terminal_names.isEmpty() && m_properties.showTerminalName()) { - QFont font = QETApp::diagramTextsFont(4); - font.setBold(true); - painter.setFont(font); + painter.setFont(QETApp::diagramTextsFont(4)); // Sort order from parseTerminal (top->bottom, left->right): // [0]=12 (NO, top-left), [1]=14 (common, top-center), [2]=13 (NC, bottom-center) if (terminal_names.size() >= 1) @@ -988,12 +1011,8 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt, in str); bounding_rect = bounding_rect.united(text_rect); - if (m_hovered_contacts_map.contains(elmt)) { + if (m_update_map) m_hovered_contacts_map.insert(elmt, bounding_rect); - } - else { - m_hovered_contacts_map.insert(elmt, bounding_rect); - } //a switch contact take place of two normal contact m_drawed_contacts += 2; @@ -1024,12 +1043,8 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt, in str); bounding_rect = bounding_rect.united(text_rect); - if (m_hovered_contacts_map.contains(elmt)) { + if (m_update_map) m_hovered_contacts_map.insert(elmt, bounding_rect); - } - else { - m_hovered_contacts_map.insert(elmt, bounding_rect); - } ++m_drawed_contacts; } return bounding_rect; @@ -1116,13 +1131,11 @@ void CrossRefItem::fillCrossRef(QPainter &painter) str); painter.drawText(bounding, Qt::AlignLeft, str); - if (m_hovered_contacts_map.contains(elmt)) - { - m_hovered_contacts_map.insert(elmt, bounding); - } - else - { - m_hovered_contacts_map.insert(elmt, bounding); + if (m_update_map) { + QString pos_str = elementPositionText(elmt, true); + QRectF pos_rect = painter.boundingRect(bounding, Qt::AlignRight, pos_str); + pos_rect.adjust(-2, -1, 2, 1); // extend hit area slightly + m_hovered_contacts_map.insert(elmt, pos_rect); } no_top_left.ry() += bounding.height(); @@ -1198,13 +1211,11 @@ void CrossRefItem::fillCrossRef(QPainter &painter) str); painter.drawText(bounding, Qt::AlignRight, str); - if (m_hovered_contacts_map.contains(elmt)) - { - m_hovered_contacts_map.insert(elmt, bounding); - } - else - { - m_hovered_contacts_map.insert(elmt, bounding); + if (m_update_map) { + QString pos_str = elementPositionText(elmt, true); + QRectF pos_rect = painter.boundingRect(bounding, Qt::AlignRight, pos_str); + pos_rect.adjust(-2, -1, 2, 1); // extend hit area slightly + m_hovered_contacts_map.insert(elmt, pos_rect); } nc_top_left.ry() += bounding.height(); diff --git a/sources/qetgraphicsitem/crossrefitem.h b/sources/qetgraphicsitem/crossrefitem.h index 523c0085e..927e46583 100644 --- a/sources/qetgraphicsitem/crossrefitem.h +++ b/sources/qetgraphicsitem/crossrefitem.h @@ -22,7 +22,6 @@ #include #include -#include class Element; class DynamicElementTextItem; @@ -103,7 +102,7 @@ class CrossRefItem : public QGraphicsObject private: void linkedChanged(); - void buildHeaderContact(); + void buildHeaderContact(QPainter &painter, QPointF no_pos, QPointF nc_pos); void setUpCrossBoundingRect(QPainter &painter); void drawAsCross(QPainter &painter); void drawAsContacts(QPainter &painter); @@ -117,10 +116,10 @@ class CrossRefItem : public QGraphicsObject private: Element *m_element; //element to display the cross reference QRectF m_bounding_rect; - QPicture m_drawing, m_hdr_no_ctc, m_hdr_nc_ctc; QPainterPath m_shape_path; XRefProperties m_properties; int m_drawed_contacts; + bool m_update_map = false; QMultiMap m_hovered_contacts_map; Element *m_hovered_contact = nullptr; DynamicElementTextItem *m_text = nullptr; From 26d5d019cc53d537708d16e2680c041ea6d9030f Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Mon, 25 May 2026 13:04:37 +0200 Subject: [PATCH 80/82] texteditor: fix SIGSEGV caused by font size spinbox reaching 0 --- sources/editor/ui/texteditor.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/editor/ui/texteditor.cpp b/sources/editor/ui/texteditor.cpp index d134a48d0..6c3fee21b 100644 --- a/sources/editor/ui/texteditor.cpp +++ b/sources/editor/ui/texteditor.cpp @@ -335,6 +335,7 @@ void TextEditor::setUpWidget(QWidget *parent) m_size_sb = new QSpinBox(parent); m_size_sb->setObjectName(QString::fromUtf8("m_size_sb")); + m_size_sb->setMinimum(1); gridLayout->addWidget(m_size_sb, 2, 1, 1, 1); From 1b8dc5f410f50ffee5277d5b4078a58924758d3c Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Mon, 25 May 2026 13:14:57 +0200 Subject: [PATCH 81/82] texteditor: set font size spinbox minimum to 4pt to prevent SIGSEGV --- sources/editor/ui/texteditor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/editor/ui/texteditor.cpp b/sources/editor/ui/texteditor.cpp index 6c3fee21b..3a4aef1d2 100644 --- a/sources/editor/ui/texteditor.cpp +++ b/sources/editor/ui/texteditor.cpp @@ -335,7 +335,7 @@ void TextEditor::setUpWidget(QWidget *parent) m_size_sb = new QSpinBox(parent); m_size_sb->setObjectName(QString::fromUtf8("m_size_sb")); - m_size_sb->setMinimum(1); + m_size_sb->setMinimum(4); gridLayout->addWidget(m_size_sb, 2, 1, 1, 1); From dc52105868dda41302ad458ab42aa2b4a2d6e8de Mon Sep 17 00:00:00 2001 From: Kellermorph Date: Tue, 26 May 2026 18:31:37 +0200 Subject: [PATCH 82/82] Fix: Wiring list filter and dynamic text timing --- .../dynamicelementtextitem.cpp | 7 ++- sources/wiringlistexport.cpp | 43 +++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/sources/qetgraphicsitem/dynamicelementtextitem.cpp b/sources/qetgraphicsitem/dynamicelementtextitem.cpp index 4c23cb2a4..64a05d603 100644 --- a/sources/qetgraphicsitem/dynamicelementtextitem.cpp +++ b/sources/qetgraphicsitem/dynamicelementtextitem.cpp @@ -26,7 +26,7 @@ #include "crossrefitem.h" #include "element.h" #include "elementtextitemgroup.h" - +#include #include #include #include @@ -1104,7 +1104,10 @@ void DynamicElementTextItem::updateLabel() void DynamicElementTextItem::conductorWasAdded(Conductor *conductor) { Q_UNUSED(conductor) - setPotentialConductor(); + QTimer::singleShot(100, this, [this]() { + setPotentialConductor(); + conductorPropertiesChanged(); + }); } /** diff --git a/sources/wiringlistexport.cpp b/sources/wiringlistexport.cpp index f84538887..77b8d0d74 100644 --- a/sources/wiringlistexport.cpp +++ b/sources/wiringlistexport.cpp @@ -158,6 +158,45 @@ void WiringListExport::toCsv() return; } + QSet conductorDefinitionTypes; + QDomElement rootElem = doc.documentElement(); + QDomElement collection = rootElem.firstChildElement("collection"); + if (!collection.isNull()) { + QDomNodeList defs = collection.elementsByTagName("definition"); + for (int i = 0; i < defs.size(); ++i) { + QDomElement def = defs.at(i).toElement(); + if (def.attribute("link_type") == "conductor_definition") { + QDomElement parentEl = def.parentNode().toElement(); + if (parentEl.tagName().toLower() == "element") { + QString name = parentEl.attribute("name"); + if (!name.isEmpty()) { + conductorDefinitionTypes.insert(name); + } + } + } + } + } + + QSet conductorDefinitionUuids; + QDomNodeList projectElements = rootElem.elementsByTagName("element"); + for (int i = 0; i < projectElements.size(); ++i) { + QDomElement el = projectElements.at(i).toElement(); + QString typeVal = el.attribute("type"); + bool isCondDef = false; + for (const QString &cType : conductorDefinitionTypes) { + if (typeVal.endsWith(cType)) { + isCondDef = true; + break; + } + } + if (isCondDef) { + QString uuid = normalizeUuid(el.attribute("uuid", el.attribute("id", ""))); + if (!uuid.isEmpty()) { + conductorDefinitionUuids.insert(uuid); + } + } + } + QFileDialog dialog(m_parent); dialog.setAcceptMode(QFileDialog::AcceptSave); dialog.setWindowTitle(tr("Exporter le plan de câblage")); @@ -200,6 +239,10 @@ void WiringListExport::toCsv() for (int i = 0; i < conductors.size(); ++i) { ConductorData c = conductors[i]; + if (conductorDefinitionUuids.contains(c.el1_uuid) || conductorDefinitionUuids.contains(c.el2_uuid)) { + continue; + } + if (c.element1_label.isEmpty() && elementsInfo.contains(c.el1_uuid)) { c.element1_label = elementsInfo[c.el1_uuid].label; if (c.element1_label.isEmpty()) c.element1_label = elementsInfo[c.el1_uuid].name;