1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2026-03-12 03:31:37 +00:00

Compare commits

..

6 Commits

Author SHA1 Message Date
16aa6c21ff Merge pull request #1353 from gauravk268/master
Prevent negative total size in Results class when removing duplcates
2026-01-06 12:34:00 -06:00
Gaurav Kumar
c32a1246b5 fix: Prevent negative total size in Results class when removing duplicates 2026-01-04 17:07:23 +00:00
7f61330dda Merge pull request #1310 from glubsy/build/fix/setuptools_sandbox_deprecation
Remove usage of deprecated setuptools sandbox
2025-12-31 21:38:56 -06:00
eb4d791434 ci: Fix typo in default.yml workflow 2025-12-31 21:34:48 -06:00
e9948d9b3f ci: Update workflow action versions, misc cleanups in .github
- Bump action versions
- Bump minimum Python version teste to 3.8, add 3.13 and 3.14
- Cleanup extra entries in FUNDING.yml
2025-12-31 21:32:23 -06:00
glubsy
c9aa6f1b7a Remove usage of deprecated setuptools sandbox
The sandbox module has been deprecated for several Python versions and
is now removed.
2025-07-19 20:20:31 +02:00
9 changed files with 101 additions and 121 deletions

12
.github/FUNDING.yml vendored
View File

@@ -1,13 +1 @@
# These are supported funding model platforms
github: arsenetar
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

View File

@@ -25,11 +25,10 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -44,7 +43,7 @@ jobs:
make modules
- if: matrix.language == 'python'
name: Autobuild
uses: github/codeql-action/autobuild@v1
uses: github/codeql-action/autobuild@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
# Analysis
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9

View File

@@ -11,9 +11,9 @@ jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Set up Python 3.12
uses: actions/setup-python@v5
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: "3.12"
- uses: pre-commit/action@v3.0.1
@@ -23,7 +23,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest]
python-version: [3.7, 3.8, 3.9, "3.10", "3.11", "3.12"]
python-version: [3.8, 3.9, "3.10", "3.11", "3.12", "3.13", "3.14"]
include:
- os: windows-latest
python-version: "3.12"
@@ -31,9 +31,9 @@ jobs:
python-version: "3.12"
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
@@ -49,7 +49,7 @@ jobs:
pytest core hscommon
- name: Upload Artifacts
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: modules ${{ matrix.python-version }}
path: build/**/*.so
@@ -58,7 +58,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Merge Artifacts
uses: actions/upload-artifact/merge@v4
uses: actions/upload-artifact/merge@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: modules
pattern: modules*

View File

@@ -15,7 +15,7 @@ jobs:
push-source:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Get Transifex Client
run: |
curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash -s -- $TX_VERSION

View File

@@ -10,7 +10,6 @@ from optparse import OptionParser
import shutil
from multiprocessing import Pool
from setuptools import sandbox
from hscommon import sphinxgen
from hscommon.build import (
add_to_pythonpath,
@@ -18,6 +17,7 @@ from hscommon.build import (
fix_qt_resource_file,
)
from hscommon import loc
import subprocess
def parse_args():
@@ -118,7 +118,7 @@ def build_normpo():
def build_pe_modules():
print("Building PE Modules")
# Leverage setup.py to build modules
sandbox.run_setup("setup.py", ["build_ext", "--inplace"])
subprocess.check_call([sys.executable, "setup.py", "build_ext", "--inplace"])
def build_normal():

View File

@@ -325,7 +325,7 @@ class Results(Markable):
del self.__group_of_duplicate[dupe]
self._remove_mark_flag(dupe)
self.__total_count -= 1
self.__total_size -= dupe.size
self.__total_size = max(0, self.__total_size - dupe.size)
if not group:
del self.__group_of_duplicate[ref]
self.__groups.remove(group)

View File

@@ -44,7 +44,7 @@ msgstr "Dossier"
#: core\me\result_table.py:21
msgid "Size (MB)"
msgstr "Taille (Mo)"
msgstr "Taille (MB)"
#: core\me\result_table.py:22
msgid "Time"
@@ -52,7 +52,7 @@ msgstr "Temps"
#: core\me\result_table.py:24
msgid "Sample Rate"
msgstr "Échantillonnage"
msgstr "Sample Rate"
#: core\me\result_table.py:25 core\pe\result_table.py:22 core\prioritize.py:65
#: core\se\result_table.py:22
@@ -86,7 +86,7 @@ msgstr "Année"
#: core\me\result_table.py:32
msgid "Track Number"
msgstr "Numéro de piste"
msgstr "Track"
#: core\me\result_table.py:33
msgid "Comment"
@@ -95,16 +95,16 @@ msgstr "Commentaire"
#: core\me\result_table.py:34 core\pe\result_table.py:26
#: core\se\result_table.py:24
msgid "Match %"
msgstr "Correspond à %"
msgstr "Match %"
#: core\me\result_table.py:35 core\se\result_table.py:25
msgid "Words Used"
msgstr "Mots utilisés"
msgstr "Mots"
#: core\me\result_table.py:36 core\pe\result_table.py:27
#: core\se\result_table.py:26
msgid "Dupe Count"
msgstr "Nombre de doublons"
msgstr "Nombre de Doublons"
#: core\pe\prioritize.py:23 core\pe\result_table.py:23
msgid "Dimensions"
@@ -112,7 +112,7 @@ msgstr "Dimensions"
#: core\pe\result_table.py:21 core\se\result_table.py:21
msgid "Size (KB)"
msgstr "Taille (Ko)"
msgstr "Taille (KB)"
#: core\pe\result_table.py:24
msgid "EXIF Timestamp"

View File

@@ -52,8 +52,8 @@ msgid ""
"A previous action is still hanging in there. You can't start a new one yet. "
"Wait a few seconds, then try again."
msgstr ""
"Une action précédente est encore en cours. Vous ne pouvez pas encore en démarrer une nouvelle. "
"Attendez quelques secondes et essayer à nouveau."
"Une action précédente est encore en cours. Attendez quelques secondes avant "
"d'en repartir une nouvelle."
#: core\app.py:300
msgid "No duplicates found."
@@ -69,7 +69,7 @@ msgstr "Tous les fichiers marqués ont été déplacés correctement."
#: core\app.py:319
msgid "All marked files were deleted successfully."
msgstr "Tous les fichiers marqués ont bien été supprimés."
msgstr ""
#: core\app.py:321
msgid "All marked files were successfully sent to Trash."
@@ -137,11 +137,11 @@ msgstr "%s (%d hors-groupe)"
#: core\directories.py:191
msgid "Collected {} files to scan"
msgstr "{} fichiers collectés pour scanner"
msgstr ""
#: core\directories.py:207
msgid "Collected {} folders to scan"
msgstr "{} dossiers collectés pour scanner"
msgstr ""
#: core\engine.py:27
msgid "%d matches found from %d groups"
@@ -183,7 +183,7 @@ msgstr "Contenu"
#: core\pe\matchblock.py:66
msgid "Analyzed %d/%d pictures"
msgstr "Analysé %d/%d images"
msgstr "Analyzé %d/%d images"
#: core\pe\matchblock.py:183
msgid "Performed %d/%d chunk matches"
@@ -215,7 +215,7 @@ msgstr "Chiffres à la fin"
#: core\prioritize.py:103
msgid "Doesn't end with number"
msgstr "Pas de chiffres à la fin"
msgstr "Pas de chiffres à la finr"
#: core\prioritize.py:104
msgid "Longest"

View File

@@ -43,7 +43,7 @@ msgstr "Ouvrir logs de déboguage"
#: qt/app.py:180 cocoa/en.lproj/Localizable.strings:0
msgid "Do you really want to remove all your cached picture analysis?"
msgstr "Voulez-vous vraiment vider la cache de vos analyses précédentes ?"
msgstr "Voulez-vous vraiment vider la cache de vos analyses précédentes?"
#: qt/app.py:184
msgid "Picture cache cleared."
@@ -66,16 +66,16 @@ msgid ""
"After having deleted a duplicate, place a link targeting the reference file "
"to replace the deleted file."
msgstr ""
"Après avoir effacé un fichier dupliqué, remplacer celui-ci par un lien vers le "
"Après avoir effacé un fichier, remplacer celui-ci par un lien vers le "
"fichier référence."
#: qt/deletion_options.py:44
msgid "Hardlink"
msgstr "Lien en dur"
msgstr "Hardlink"
#: qt/deletion_options.py:44
msgid "Symlink"
msgstr "Lien symbolique"
msgstr "Symlink"
#: qt/deletion_options.py:48
msgid " (unsupported)"
@@ -91,7 +91,7 @@ msgid ""
"usually used as a workaround when the normal deletion method doesn't work."
msgstr ""
"Au lieu de passer par la corbeille, supprimer directement. Cette option "
"n'est généralement utilisée qu'en cas d'échec avec la métode de suppression normale."
"n'est généralement utilisée qu'en cas de problème."
#: qt/deletion_options.py:59 cocoa/en.lproj/Localizable.strings:0
msgid "Proceed"
@@ -162,7 +162,7 @@ msgstr "Standard"
#: qt/directories_dialog.py:128 cocoa/en.lproj/Localizable.strings:0
msgid "Scan Type:"
msgstr "Type de scan :"
msgstr "Type de scan:"
#: qt/directories_dialog.py:135
msgid "More Options"
@@ -186,7 +186,7 @@ msgstr "Résultats non sauvegardés"
#: qt/directories_dialog.py:231 cocoa/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to quit?"
msgstr "Vos résultats ne sont pas sauvegardés. Voulez-vous vraiment quitter ?"
msgstr "Vos résultats ne sont pas sauvegardés. Voulez-vous vraiment quitter?"
#: qt/directories_dialog.py:239 cocoa/en.lproj/Localizable.strings:0
msgid "Select a folder to add to the scanning list"
@@ -211,7 +211,7 @@ msgstr "Commencer un nouveau scan"
#: qt/directories_dialog.py:279 cocoa/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to continue?"
msgstr ""
"Vos résultats ne sont pas sauvegardés. Voulez-vous vraiment continuer ?"
"Vos résultats ne sont pas sauvegardés. Voulez-vous vraiment continuer?"
#: qt/directories_model.py:23 cocoa/en.lproj/Localizable.strings:0
msgid "Name"
@@ -254,7 +254,7 @@ msgstr "Tags à scanner:"
#: qt/me/preferences_dialog.py:36 cocoa/en.lproj/Localizable.strings:0
msgid "Track"
msgstr "Piste"
msgstr "Track"
#: qt/me/preferences_dialog.py:38 cocoa/en.lproj/Localizable.strings:0
msgid "Artist"
@@ -299,12 +299,12 @@ msgstr "Utiliser les expressions régulières pour les filtres"
#: qt/me/preferences_dialog.py:58 qt/pe/preferences_dialog.py:25
#: qt/se/preferences_dialog.py:38 cocoa/en.lproj/Localizable.strings:0
msgid "Remove empty folders on delete or move"
msgstr "Effacer les dossiers vides après une suppression ou un déplacement"
msgstr "Effacer les dossiers vides après un déplacement"
#: qt/me/preferences_dialog.py:60 qt/pe/preferences_dialog.py:27
#: qt/se/preferences_dialog.py:59 cocoa/en.lproj/Localizable.strings:0
msgid "Ignore duplicates hardlinking to the same file"
msgstr "Ignorer doublons avec un lien en dur vers le même fichier"
msgstr "Ignorer doublons avec hardlink vers le même fichier"
#: qt/me/preferences_dialog.py:62 qt/pe/preferences_dialog.py:29
#: qt/se/preferences_dialog.py:62 cocoa/en.lproj/Localizable.strings:0
@@ -317,7 +317,7 @@ msgstr "Comparer les images de tailles différentes"
#: qt/preferences_dialog.py:43
msgid "Filter Hardness:"
msgstr "Seuil du filtre :"
msgstr "Seuil du filtre:"
#: qt/preferences_dialog.py:69
msgid "More Results"
@@ -329,15 +329,15 @@ msgstr "Moins de doublons"
#: qt/preferences_dialog.py:81
msgid "Font size:"
msgstr "Taille de police :"
msgstr "Taille de police:"
#: qt/preferences_dialog.py:85
msgid "Language:"
msgstr "Langue :"
msgstr "Langue:"
#: qt/preferences_dialog.py:91 cocoa/en.lproj/Localizable.strings:0
msgid "Copy and Move:"
msgstr "Copie et déplacements de fichiers :"
msgstr "Déplacements de fichiers:"
#: qt/preferences_dialog.py:94 cocoa/en.lproj/Localizable.strings:0
msgid "Right in destination"
@@ -353,7 +353,7 @@ msgstr "Re-créer chemins absolus"
#: qt/preferences_dialog.py:99
msgid "Custom Command (arguments: %d for dupe, %r for ref):"
msgstr "Commande perso. (arguments : %d pour doublon, %r pour réf) :"
msgstr "Commande perso. (arguments: %d pour doublon, %r pour réf):"
#: qt/preferences_dialog.py:174
msgid "dupeGuru has to restart for language changes to take effect."
@@ -369,13 +369,13 @@ msgid ""
" the best to these criteria to their respective group's reference position. "
"Read the help file for more information."
msgstr ""
"Ajoutez des critères dans la liste de droite et cliquez sur OK pour envoyer les doublons qui "
"correspondent le plus à ces critères à la position de référence. Une lecture "
"Ajoutez des critères dans la liste de droite pour envoyer les doublons qui "
"correspondent le plus à ces critère à la position de référence. Une lecture "
"préalable du fichier d'aide est conseillée."
#: qt/problem_dialog.py:33 cocoa/en.lproj/Localizable.strings:0
msgid "Problems!"
msgstr "Problèmes !"
msgstr "Problèmes!"
#: qt/problem_dialog.py:37 cocoa/en.lproj/Localizable.strings:0
msgid ""
@@ -383,13 +383,13 @@ msgid ""
"these problems are described in the table below. Those files were not "
"removed from your results."
msgstr ""
"Des problèmes ont été rencontrés lors du traitement de certains fichiers (ou tous). La"
"Des problèmes ont été rencontrés lors du traitement de certains fichiers. La"
" nature de ces problèmes est décrite dans la liste ci-dessous. Ces fichiers "
"n'ont pas été retirés des résultats."
#: qt/problem_dialog.py:56
msgid "Reveal Selected"
msgstr "Révéler la selection"
msgstr "Révéler Fichier"
#: qt/result_window.py:57 qt/result_window.py:104 qt/result_window.py:167
#: qt/result_window.py:191 cocoa/en.lproj/Localizable.strings:0
@@ -406,19 +406,19 @@ msgstr "Montrer les valeurs en tant que delta"
#: qt/result_window.py:60
msgid "Send Marked to Recycle Bin..."
msgstr "Envoyer les fichiers marqués à la corbeille..."
msgstr "Envoyer marqués à la corbeille..."
#: qt/result_window.py:61 cocoa/en.lproj/Localizable.strings:0
msgid "Move Marked to..."
msgstr "Déplacer les fichiers marqués vers..."
msgstr "Déplacer marqués vers..."
#: qt/result_window.py:62 cocoa/en.lproj/Localizable.strings:0
msgid "Copy Marked to..."
msgstr "Copier les fichiers marqués vers..."
msgstr "Copier marqués vers..."
#: qt/result_window.py:63 cocoa/en.lproj/Localizable.strings:0
msgid "Remove Marked from Results"
msgstr "Retirer les fichiers marqués des résultats"
msgstr "Retirer marqués des résultats"
#: qt/result_window.py:64 cocoa/en.lproj/Localizable.strings:0
msgid "Re-Prioritize Results..."
@@ -426,19 +426,19 @@ msgstr "Re-prioriser les résultats"
#: qt/result_window.py:67 cocoa/en.lproj/Localizable.strings:0
msgid "Remove Selected from Results"
msgstr "Retirer les fichiers sélectionnés des résultats"
msgstr "Retirer sélectionnés des résultats"
#: qt/result_window.py:71 cocoa/en.lproj/Localizable.strings:0
msgid "Add Selected to Ignore List"
msgstr "Ajouter les fichiers sélectionnés à la liste de fichiers ignorés"
msgstr "Ajouter sélectionnés à la liste de fichiers ignorés"
#: qt/result_window.py:75 cocoa/en.lproj/Localizable.strings:0
msgid "Make Selected into Reference"
msgstr "Transformer les fichiers sélectionnés en références"
msgstr "Transformer sélectionnés en références"
#: qt/result_window.py:77 cocoa/en.lproj/Localizable.strings:0
msgid "Open Selected with Default Application"
msgstr "Ouvrir les fichiers sélectionnés avec l'application par défaut"
msgstr "Ouvrir sélectionné avec l'application par défaut"
#: qt/result_window.py:80
msgid "Open Containing Folder of Selected"
@@ -466,19 +466,19 @@ msgstr "Marquer sélectionnés"
#: qt/result_window.py:87
msgid "Export To HTML"
msgstr "Exporter en HTML"
msgstr "Exporter vers HTML"
#: qt/result_window.py:88
msgid "Export To CSV"
msgstr "Exporter en CSV"
msgstr "Exporter vers CSV"
#: qt/result_window.py:89 cocoa/en.lproj/Localizable.strings:0
msgid "Save Results..."
msgstr "Sauvegarder les résultats..."
msgstr "Sauvegarder résultats..."
#: qt/result_window.py:90 cocoa/en.lproj/Localizable.strings:0
msgid "Invoke Custom Command"
msgstr "Invoquer une commande personnalisée"
msgstr "Invoquer commande personnalisée"
#: qt/result_window.py:102
msgid "Mark"
@@ -498,7 +498,7 @@ msgstr "{} résultats"
#: qt/result_window.py:193 cocoa/en.lproj/Localizable.strings:0
msgid "Dupes Only"
msgstr "Dupliqués seulement"
msgstr "Sans réf."
#: qt/result_window.py:194
msgid "Delta Values"
@@ -514,7 +514,7 @@ msgstr "Ignorer les fichiers plus petits que"
#: qt/se/preferences_dialog.py:52 cocoa/en.lproj/Localizable.strings:0
msgid "KB"
msgstr "Ko"
msgstr "KB"
#: cocoa/en.lproj/Localizable.strings:0
msgid "%@ Results"
@@ -526,7 +526,7 @@ msgstr "Action"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Add New Folder..."
msgstr "Ajouter un nouveau dossier..."
msgstr "Ajouter dossier..."
#: cocoa/en.lproj/Localizable.strings:0
msgid "Advanced"
@@ -546,7 +546,7 @@ msgstr "Tout ramener au premier plan"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Check for update..."
msgstr "Recherche de mise à jour..."
msgstr "Mise à jour..."
#: cocoa/en.lproj/Localizable.strings:0
msgid "Close Window"
@@ -558,7 +558,7 @@ msgstr "Copier"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Custom command (arguments: %d for dupe, %r for ref):"
msgstr "Commande perso. (arguments : %d pour doublon, %r pour réf) :"
msgstr "Commande perso. (arguments: %d pour doublon, %r pour réf):"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Cut"
@@ -602,11 +602,11 @@ msgstr "Édition"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Export Results to CSV"
msgstr "Exporter les résultats en CSV"
msgstr "Exporter les résultats vers CSV"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Export Results to XHTML"
msgstr "Exporter les résultats en XHTML"
msgstr "Exporter les résultats vers HTML"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Fewer results"
@@ -618,7 +618,7 @@ msgstr "Filtre"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Filter hardness:"
msgstr "Seuil du filtre :"
msgstr "Seuil du filtre:"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Filter Results..."
@@ -630,7 +630,7 @@ msgstr "Fenêtre de sélection de dossiers"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Font Size:"
msgstr "Taille de police :"
msgstr "Taille de police:"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Hide dupeGuru"
@@ -642,7 +642,7 @@ msgstr "Masquer les autres"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Ignore files smaller than:"
msgstr "Ignorer les fichiers plus petits que :"
msgstr "Ignorer les fichiers plus petits que:"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Load from file..."
@@ -658,7 +658,7 @@ msgstr "Mode"
#: cocoa/en.lproj/Localizable.strings:0
msgid "More results"
msgstr "Plus de doublons"
msgstr "plus de doublons"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Ok"
@@ -674,7 +674,7 @@ msgstr "Préférences..."
#: cocoa/en.lproj/Localizable.strings:0
msgid "Quick Look"
msgstr "Regard rapide"
msgstr "Quick Look"
#: cocoa/en.lproj/Localizable.strings:0
msgid "Quit dupeGuru"
@@ -798,11 +798,11 @@ msgstr "Erreur de compilation:"
#: qt\pe\image_viewer.py:56
msgid "Increase zoom"
msgstr "Zoomer"
msgstr "Accroître zoom"
#: qt\pe\image_viewer.py:66
msgid "Decrease zoom"
msgstr "Dézoomer"
msgstr "Décroître zoom"
#: qt\pe\image_viewer.py:71
msgid "Ctrl+/"
@@ -822,7 +822,7 @@ msgstr "Meilleur ajustement"
#: qt\pe\preferences_dialog.py:49
msgid "Picture cache mode:"
msgstr "Mode de cache d'images :"
msgstr "Mode de cache d'images:"
#: qt\pe\preferences_dialog.py:56
msgid "Override theme icons in viewer toolbar"
@@ -945,61 +945,59 @@ msgstr "Affichage"
#: qt\se\preferences_dialog.py:70
msgid "Partially hash files bigger than"
msgstr Hacher partiellement les fichiers plus gros que"
msgstr ""
#: qt\se\preferences_dialog.py:80
msgid "MB"
msgstr "Mo"
msgstr ""
#: qt\preferences_dialog.py:163
msgid "Use native OS dialogs"
msgstr "Utiliser les dialogues natifs de l'OS"
msgstr ""
#: qt\preferences_dialog.py:166
msgid ""
"For actions such as file/folder selection use the OS native dialogs.\n"
"Some native dialogs have limited functionality."
msgstr "Pour les actions telles que la sélection de fichiers/dossiers, utilisez les boîtes de dialogue natives du système d'exploitation.\n"
"Des boites de dialogues ont des fonctionnalités limitées."
msgstr ""
#: qt\se\preferences_dialog.py:68
msgid "Ignore files larger than"
msgstr "Ignorer les fichiers plus gros que"
msgstr ""
#: qt\app.py:135 qt\app.py:293
msgid "Clear Cache"
msgstr "Vider le cache"
msgstr ""
#: qt\app.py:294
msgid ""
"Do you really want to clear the cache? This will remove all cached file "
"hashes and picture analysis."
msgstr "Voulez-vous réellement vider le cacher ? Cela supprimera tous les hash de fichiers dans le cache"
" et les analyses d'image."
msgstr ""
#: qt\app.py:299
msgid "Cache cleared."
msgstr "Cache vidé."
msgstr ""
#: qt\preferences_dialog.py:173
msgid "Use dark style"
msgstr "Utliliser le style sombre"
msgstr ""
#: qt\preferences_dialog.py:241
msgid "Profile scan operation"
msgstr "Opération de balayage de profil"
msgstr ""
#: qt\preferences_dialog.py:242
msgid "Profile the scan operation and save logs for optimization."
msgstr "Profilage de l'opération de balayage et enregistrement des journaux pour optimisation"
msgstr ""
#: qt\preferences_dialog.py:246
msgid "Logs located in: <a href=\"{}\">{}</a>"
msgstr "Les logs se trouvent dans : <a href=\"{}\">{}</a>"
msgstr ""
#: qt\preferences_dialog.py:291
msgid "Debug"
msgstr "Débogage"
msgstr ""
#: qt\about_box.py:31
msgid "About {}"
@@ -1011,7 +1009,7 @@ msgstr "Version {}"
#: qt\about_box.py:49 qt\about_box.py:75
msgid "Checking for updates..."
msgstr "Recherche des mises à jour..."
msgstr ""
#: qt\about_box.py:54
msgid "Licensed under GPLv3"
@@ -1019,11 +1017,11 @@ msgstr "Sous licence GPLv3"
#: qt\about_box.py:68
msgid "No update available."
msgstr "Pas de mise à jour disponible."
msgstr ""
#: qt\about_box.py:71
msgid "New version {} available, download <a href=\"{}\">here</a>."
msgstr "Une nouvelle version ({}) est disponible, téléchagez-là <a href=\"{}\">ici</a>."
msgstr ""
#: qt\error_report_dialog.py:50
msgid "Error Report"
@@ -1031,7 +1029,7 @@ msgstr "Rapport d'erreur"
#: qt\error_report_dialog.py:54
msgid "Something went wrong. How about reporting the error?"
msgstr "Un problème est survenu. Rapporter l'erreur ?"
msgstr "Un problème est survenu. Rapporter l'erreur?"
#: qt\error_report_dialog.py:60
msgid ""
@@ -1143,36 +1141,31 @@ msgstr "Recherche..."
msgid ""
"These options are for advanced users or for very specific situations, most "
"users should not have to modify these."
msgstr "Ces options sont destinées aux utilisateurs avancés ou pour des situation bien spécifiques, "
"la plupart des utilisateurs ne devraient pas avoir à les modifier."
msgstr ""
#: qt\preferences_dialog.py:225
msgid "Include existence check after scan completion"
msgstr "Inclure un contrôle d'existence à la fin de l'analyse"
msgstr ""
#: qt\preferences_dialog.py:227
msgid "Ignore difference in mtime when loading cached digests"
msgstr "Ignorer la différence dans le mtime en chargent les résumés en cache"
msgstr ""
#: qt\progress_window.py:64
msgid "Cancel?"
msgstr "Annuler ?"
msgstr ""
#: qt\progress_window.py:65
msgid "Are you sure you want to cancel? All progress will be lost."
msgstr "Êtes-vous sûr de vouloir annuler ? Tout ce qui a déjà été fait va être perdu."
msgstr ""
#: qt\exclude_list_dialog.py:161
msgid ""
"These (case sensitive) python regular expressions will filter out files during scans.<br>Directores will also have their <strong>default state</strong> set to Excluded in the Directories tab if their name happens to match one of the selected regular expressions.<br>For each file collected, two tests are performed to determine whether or not to completely ignore it:<br><li>1. Regular expressions with no path separator in them will be compared to the file name only.</li>\n"
"<li>2. Regular expressions with at least one path separator in them will be compared to the full path to the file.</li><br>Example: if you want to filter out .PNG files from the \"My Pictures\" directory only:<br><code>.*My\\sPictures\\\\.*\\.png</code><br><br>You can test the regular expression with the \"test string\" button after pasting a fake path in the test field:<br><code>C:\\\\User\\My Pictures\\test.png</code><br><br>\n"
"Matching regular expressions will be highlighted.<br>If there is at least one highlight, the path or filename tested will be ignored during scans.<br><br>Directories and files starting with a period '.' are filtered out by default.<br><br>"
msgstr "Cette expression régulière python (sensible à la casse) va filtrer les fichiers pendant les scans.<br>"
"Ces expressions régulières python (sensible aux majuscules) peuvent ignorer les fichiers pendant les scans. Les dossiers auront également leur <strong>état par défaut</strong> mis sur Exclus dans l'onglet Dossiers si leur nom correspond à une des expressions régulières sélectionnées<br>Pour chaque fichier collecté, deux tests sont faits pour déterminer s'il doit être totalement ignoré:<br><li>1. Les expressions régulières sans séparateur de chemin sont comparées au nom de fichier seul.</li>\n"
"<li>2. Les expressions régulières avec au moins un séparateur de chemin sont comparées au chemin complet vers le fichier.</li><br>\n"
"Exemple: si vous voulez uniquement ignorer les fichiers .PNG du dossier \"Mes Images\":<br><code>.*Mes\\sImages\\\\.*\\.png</code><br><br>Vous pouvez tester l'expression régulière via le bouton \"Tester la chaîne de caractères\" après avoir tapé un faux chemin de fichier dans le champs correspondant:<br><code>C:\\\\Utilisateur\\Mes Images\\test.png</code><br><br>\n"
"Les expressions régulières qui fonctionnent seront surlignées.<br>S'il y a au moins un surlignage, le chemin ou nom de fichier testé sera ignoré durant les scans.<br><br>Les dossiers et fichiers commençant par un point '.' sont ignorés par défaut.<br><br>"
msgstr ""
#: qt\pe\preferences_dialog.py:24
msgid "Match pictures of different rotations"
msgstr "Associer des images de différentes rotations"
msgstr ""