  #: tools/sort/cli.py:60 tools/sort/cli.py:109
  msgid "sort settings"
  msgstr ""
  
  #: tools/sort/cli.py:62
  msgid ""
  "R|Sort by method. Choose how images are sorted. \n"
  "L|'blur': Sort faces by blurriness.\n"
  "L|'blur-fft': Sort faces by fft filtered blurriness.\n"
  "L|'distance' Sort faces by the estimated distance of the alignments from an "
  "'average' face. This can be useful for eliminating misaligned faces.\n"
  "L|'face': Use VGG Face to sort by face similarity. This uses a pairwise "
  "clustering algorithm to check the distances between 512 features on every "
  "face in your set and order them appropriately.\n"
  "L|'face-cnn': Sort faces by their landmarks. You can adjust the threshold "
  "with the '-t' (--ref_threshold) option.\n"
  "L|'face-cnn-dissim': Like 'face-cnn' but sorts by dissimilarity.\n"
  "L|'face-yaw': Sort faces by Yaw (rotation left to right).\n"
  "L|'hist': Sort faces by their color histogram. You can adjust the threshold "
  "with the '-t' (--ref_threshold) option.\n"
  "L|'hist-dissim': Like 'hist' but sorts by dissimilarity.\n"
  "L|'color-gray': Sort images by the average intensity of the converted "
  "grayscale color channel.\n"
  "L|'color-luma': Sort images by the average intensity of the converted Y "
  "color channel. Bright lighting and oversaturated images will be ranked "
  "first.\n"
  "L|'color-green': Sort images by the average intensity of the converted Cg "
  "color channel. Green images will be ranked first and red images will be "
  "last.\n"
  "L|'color-orange': Sort images by the average intensity of the converted Co "
  "color channel. Orange images will be ranked first and blue images will be "
  "last.\n"
  "L|'size': Sort images by their size in the original frame. Faces closer to "
  "the camera and from higher resolution sources will be sorted first, whilst "
  "faces further from the camera and from lower resolution sources will be "
  "sorted last.\n"
  "L|'black-pixels': Sort images by their number of black pixels. Useful when "
  "faces are near borders and a large part of the image is black.\n"
  "Default: face"
  msgstr ""
  
  #: tools/sort/cli.py:98 tools/sort/cli.py:125 tools/sort/cli.py:137
  #: tools/sort/cli.py:148
  msgid "output"
  msgstr ""
  
  #: tools/sort/cli.py:99
  msgid ""
  "Keeps the original files in the input directory. Be careful when using this "
 
</s> remove             help=_("R|Sort by method. Choose how images are sorted. "
                   "\nL|'blur': Sort faces by blurriness."
                   "\nL|'blur-fft': Sort faces by fft filtered blurriness."
                   "\nL|'distance' Sort faces by the estimated distance of the alignments from an "
                   "'average' face. This can be useful for eliminating misaligned faces."
                   "\nL|'face': Use VGG Face to sort by face similarity. This uses a pairwise "
                   "clustering algorithm to check the distances between 512 features on every "
                   "face in your set and order them appropriately."
                   "\nL|'face-cnn': Sort faces by their landmarks. You can adjust the threshold "
                   "with the '-t' (--ref_threshold) option."
                   "\nL|'face-cnn-dissim': Like 'face-cnn' but sorts by dissimilarity."
                   "\nL|'face-yaw': Sort faces by Yaw (rotation left to right)."
                   "\nL|'hist': Sort faces by their color histogram. You can adjust the threshold "
                   "with the '-t' (--ref_threshold) option."
                   "\nL|'hist-dissim': Like 'hist' but sorts by dissimilarity."
                   "\nL|'color-gray': Sort images by the average intensity of the converted "
                   "grayscale color channel."
                   "\nL|'color-luma': Sort images by the average intensity of the converted Y "
                   "color channel. Bright lighting and oversaturated images will be ranked first."
                   "\nL|'color-green': Sort images by the average intensity of the converted Cg "
                   "color channel. Green images will be ranked first and red images will be last."
                   "\nL|'color-orange': Sort images by the average intensity of the converted Co "
                   "color channel. Orange images will be ranked first and blue images will be "
                   "last."
                   "\nL|'size': Sort images by their size in the original frame. Faces closer to "
                   "the camera and from higher resolution sources will be sorted first, whilst "
                   "faces further from the camera and from lower resolution sources will be "
                   "sorted last."
                   "\nL|'black-pixels': Sort images by their number of black pixels. Useful when "
                   "faces are near borders and a large part of the image is black."
 </s> add             help=_("R|Choose how images are sorted. Selecting a sort method gives the images a "
                   "new filename based on the order the image appears within the given method."
                   "\nL|'none': Don't sort the images. When a 'group-by' method is selected, "
                   "selecting 'none' means that the files will be moved/copied into their "
                   "respective bins, but the files will keep their original filenames. Selecting "
                   "'none' for both 'sort-by' and 'group-by' will do nothing" + _SORT_HELP + </s> remove #: tools/sort/cli.py:23
 </s> add #: tools/sort/cli.py:20
msgid ""
" Adjust the '-t' ('--threshold') parameter to control the strength of "
"grouping."
msgstr ""

#: tools/sort/cli.py:21
msgid ""
" Adjust the '-b' ('--bins') parameter to control the number of bins for "
"grouping. Each image is allocated to a bin by the percentage of color pixels "
"that appear in the image."
msgstr ""

#: tools/sort/cli.py:24
msgid ""
" Adjust the '-b' ('--bins') parameter to control the number of bins for "
"grouping. Each image is allocated to a bin by the number of degrees the face "
"is orientated from center."
msgstr ""

#: tools/sort/cli.py:27
msgid ""
" Adjust the '-b' ('--bins') parameter to control the number of bins for "
"grouping. The minimum and maximum values are taken for the chosen sort "
"metric. The bins are then populated with the results from the group sorting."
msgstr ""

#: tools/sort/cli.py:31
msgid "faces by blurriness."
msgstr ""

#: tools/sort/cli.py:32
msgid "faces by fft filtered blurriness."
msgstr ""

#: tools/sort/cli.py:33
msgid ""
"faces by the estimated distance of the alignments from an 'average' face. "
"This can be useful for eliminating misaligned faces. Sorts from most like an "
"average face to least like an average face."
msgstr ""

#: tools/sort/cli.py:36
msgid ""
"faces using VGG Face2 by face similarity. This uses a pairwise clustering "
"algorithm to check the distances between 512 features on every face in your "
"set and order them appropriately."
msgstr ""

#: tools/sort/cli.py:39
msgid "faces by their landmarks."
msgstr ""

#: tools/sort/cli.py:40
msgid "Like 'face-cnn' but sorts by dissimilarity."
msgstr ""

#: tools/sort/cli.py:41
msgid "faces by Yaw (rotation left to right)."
msgstr ""

#: tools/sort/cli.py:42
msgid "faces by Pitch (rotation up and down)."
msgstr ""

#: tools/sort/cli.py:43
msgid "faces by their color histogram."
msgstr ""

#: tools/sort/cli.py:44
msgid "Like 'hist' but sorts by dissimilarity."
msgstr ""

#: tools/sort/cli.py:45
msgid ""
"images by the average intensity of the converted grayscale color channel."
msgstr ""

#: tools/sort/cli.py:46
msgid ""
"images by their number of black pixels. Useful when faces are near borders "
"and a large part of the image is black."
msgstr ""

#: tools/sort/cli.py:48
msgid ""
"images by the average intensity of the converted Y color channel. Bright "
"lighting and oversaturated images will be ranked first."
msgstr ""

#: tools/sort/cli.py:50
msgid ""
"images by the average intensity of the converted Cg color channel. Green "
"images will be ranked first and red images will be last."
msgstr ""

#: tools/sort/cli.py:52
msgid ""
"images by the average intensity of the converted Co color channel. Orange "
"images will be ranked first and blue images will be last."
msgstr ""

#: tools/sort/cli.py:54
msgid ""
"images by their size in the original frame. Faces further from the camera "
"and from lower resolution sources will be sorted first, whilst faces closer "
"to the camera and from higher resolution sources will be sorted last."
msgstr ""

#: tools/sort/cli.py:57
msgid " option is deprecated. Use 'yaw'"
msgstr ""

#: tools/sort/cli.py:58
msgid " option is deprecated. Use 'color-black'"
msgstr ""

#: tools/sort/cli.py:80 </s> remove "Integer value. Number of folders that will be used to group by blur, face-"
"yaw and black-pixels. For blur folder 0 will be the least blurry, while the "
"last folder will be the blurriest. For face-yaw the number of bins is by how "
"much 180 degrees is divided. So if you use 18, then each folder will be a 10 "
"degree increment. Folder 0 will contain faces looking the most to the left "
"whereas the last folder will contain the faces looking the most to the "
"right. If the number of images doesn't divide evenly into the number of "
"bins, the remaining images get put in the last bin. For black-pixels it "
"represents the divider of the percentage of black pixels. For 10, first "
"folder will have the faces with 0 to 10%% black pixels, second 11 to 20%%, "
"etc. Default value: 5"
 </s> add "R|Integer value. Used to control the number of bins created for grouping by: "
"any 'blur' methods, 'color' methods or 'face metric' methods ('distance', "
"'size') and 'orientation; methods ('yaw', 'pitch'). For any other grouping "
"methods see the '-t' ('--threshold') option.\n"
"L|For 'face metric' methods the bins are filled, according the the "
"distribution of faces between the minimum and maximum chosen metric.\n"
"L|For 'color' methods the number of bins represents the divider of the "
"percentage of colored pixels. Eg. For a bin number of '5': The first folder "
"will have the faces with 0%% to 20%% colored pixels, second 21%% to 40%%, "
"etc. Any empty bins will be deleted, so you may end up with fewer bins than "
"selected.\n"
"L|For 'blur' methods folder 0 will be the least blurry, while the last "
"folder will be the blurriest.\n"
"L|For 'orientation' methods the number of bins is dictated by how much 180 "
"degrees is divided. Eg. If 18 is selected, then each folder will be a 10 "
"degree increment. Folder 0 will contain faces looking the most to the left/"
"down whereas the last folder will contain the faces looking the most to the "
"right/up. NB: Some bins may be empty if faces do not fit the criteria.\n"
"Default value: 5" </s> remove "Keeps the original files in the input directory. Be careful when using this "
"with rename grouping and no specified output directory as this would keep "
"the original and renamed files in the same directory."
 </s> add "R|Selecting a group by method will move/copy files into numbered bins based "
"on the selected method.\n"
"L|'none': Don't bin the images. Folders will be sorted by the selected 'sort-"
"by' but will not be binned, instead they will be sorted into a single "
"folder.  Selecting 'none' for both 'sort-by' and 'group-by' will do nothing" </s> remove         sort_method = self._args.sort_method.lower()
        group_method = self._args.group_method.lower()
        final_method = self._args.final_process.lower()

        img_list = getattr(self, sort_method)()
        if "folders" in final_method:
            # Check if non-dissimilarity sort method and group method are not the same
            if group_method.replace('group_', '') not in sort_method:
                img_list = self.reload_images(group_method, img_list)
                img_list = getattr(self, group_method)(img_list)
            else:
                img_list = getattr(self, group_method)(img_list)

        getattr(self, final_method)(img_list)

        logger.info("Done.")

    # Methods for sorting
    def sort_distance(self):
        """ Sort by comparison of face landmark points to mean face by average distance of core
        landmarks. """
        logger.info("Sorting by average distance of landmarks...")
        filenames = []
        distances = []
        filelist = [os.path.join(self._loader.location, fname)
                    for fname in os.listdir(self._loader.location)
                    if os.path.splitext(fname)[-1] == ".png"]
        for filename, metadata in tqdm(read_image_meta_batch(filelist),
                                       total=len(filelist),
                                       desc="Calculating Distances"):
            if not metadata:
                msg = ("The images to be sorted do not contain alignment data. Images must have "
                       "been generated by Faceswap's Extract process.\nIf you are sorting an "
                       "older faceset, then you should re-extract the faces from your source "
                       "alignments file to generate this data.")
                raise FaceswapError(msg)
            alignments = metadata["itxt"]["alignments"]
            aligned_face = AlignedFace(np.array(alignments["landmarks_xy"], dtype="float32"))
            filenames.append(filename)
            distances.append(aligned_face.average_distance)

        logger.info("Sorting...")
        matched_list = list(zip(filenames, distances))
        img_list = sorted(matched_list, key=operator.itemgetter(1))
        return img_list

    def sort_blur(self):
        """ Sort by blur amount """
        logger.info("Sorting by estimated image blur...")

        blurs = [(filename, self.estimate_blur(image, metadata))
                 for filename, image, metadata in tqdm(self._loader.load(),
                                                       desc="Estimating blur",
                                                       total=self._loader.count,
                                                       leave=False)]
        logger.info("Sorting...")
        return sorted(blurs, key=lambda x: x[1], reverse=True)

    def sort_blur_fft(self):
        """ Sort by fft filtered blur amount with fft"""
        logger.info("Sorting by estimated fft filtered image blur...")

        fft_blurs = [(filename, self.estimate_blur_fft(image, metadata))
                     for filename, image, metadata in tqdm(self._loader.load(),
                                                           desc="Estimating fft blur score",
                                                           total=self._loader.count,
                                                           leave=False)]
        logger.info("Sorting...")
        return sorted(fft_blurs, key=lambda x: x[1], reverse=True)

    def sort_color(self):
        """ Score by channel average intensity """
        logger.info("Sorting by channel average intensity...")
        desired_channel = {'gray': 0, 'luma': 0, 'orange': 1, 'green': 2}
        method = self._args.color_method
        channel_to_sort = next(v for (k, v) in desired_channel.items() if method.endswith(k))
        filename_list, image_list = self._get_images()

        logger.info("Converting to appropriate colorspace...")
        same_size = all(img.size == image_list[0].size for img in image_list)
        images = np.array(image_list, dtype='float32')[None, ...] if same_size else image_list
        converted_images = self._convert_color(images, same_size, method)

        logger.info("Scoring each image...")
        if same_size:
            scores = np.average(converted_images[0], axis=(1, 2))
        else:
            progress_bar = tqdm(converted_images, desc="Scoring", file=sys.stdout)
            scores = np.array([np.average(image, axis=(0, 1)) for image in progress_bar])

        logger.info("Sorting...")
        matched_list = list(zip(filename_list, scores[:, channel_to_sort]))
        sorted_file_img_list = sorted(matched_list, key=operator.itemgetter(1), reverse=True)
        return sorted_file_img_list

    def sort_face(self):
        """ Sort by identity similarity """
        logger.info("Sorting by identity similarity...")
        filenames = []
        preds = []
        for filename, image, metadata in tqdm(self._loader.load(),
                                              desc="Classifying Faces",
                                              total=self._loader.count,
                                              leave=False):
            if not metadata:
                msg = ("The images to be sorted do not contain alignment data. Images must have "
                       "been generated by Faceswap's Extract process.\nIf you are sorting an "
                       "older faceset, then you should re-extract the faces from your source "
                       "alignments file to generate this data.")
                raise FaceswapError(msg)
            alignments = metadata["alignments"]
            face = AlignedFace(np.array(alignments["landmarks_xy"], dtype="float32"),
                               image=image,
                               centering="legacy",
                               size=self._vgg_face.input_size,
                               is_aligned=True).face
            filenames.append(filename)
            preds.append(self._vgg_face.predict(face))

        logger.info("Sorting by ward linkage...")

        indices = self._vgg_face.sorted_similarity(np.array(preds), method="ward")
        img_list = np.array(filenames)[indices]
        return img_list

    def sort_face_cnn(self):
        """ Sort by landmark similarity """
        logger.info("Sorting by landmark similarity...")
        filename_list, _, landmarks = self._get_landmarks()
        img_list = list(zip(filename_list, landmarks))

        logger.info("Comparing landmarks and sorting...")
        img_list_len = len(img_list)
        for i in tqdm(range(0, img_list_len - 1), desc="Comparing", file=sys.stdout):
            min_score = float("inf")
            j_min_score = i + 1
            for j in range(i + 1, img_list_len):
                fl1 = img_list[i][1]
                fl2 = img_list[j][1]
                score = np.sum(np.absolute((fl2 - fl1).flatten()))
                if score < min_score:
                    min_score = score
                    j_min_score = j
            (img_list[i + 1], img_list[j_min_score]) = (img_list[j_min_score], img_list[i + 1])
        return img_list

    def sort_face_cnn_dissim(self):
        """ Sort by landmark dissimilarity """
        logger.info("Sorting by landmark dissimilarity...")
        filename_list, _, landmarks = self._get_landmarks()
        scores = np.zeros(len(filename_list), dtype='float32')
        img_list = list(list(items) for items in zip(filename_list, landmarks, scores))

        logger.info("Comparing landmarks...")
        img_list_len = len(img_list)
        for i in tqdm(range(0, img_list_len - 1), desc="Comparing", file=sys.stdout):
            score_total = 0
            for j in range(i + 1, img_list_len):
                if i == j:
                    continue
                fl1 = img_list[i][1]
                fl2 = img_list[j][1]
                score_total += np.sum(np.absolute((fl2 - fl1).flatten()))
            img_list[i][2] = score_total

        logger.info("Sorting...")
        img_list = sorted(img_list, key=operator.itemgetter(2), reverse=True)
        return img_list

    def sort_face_yaw(self):
        """ Sort by estimated face yaw angle """
        logger.info("Sorting by estimated face yaw angle..")
        filenames = []
        yaws = []
        filelist = [os.path.join(self._loader.location, fname)
                    for fname in os.listdir(self._loader.location)
                    if os.path.splitext(fname)[-1] == ".png"]
        for filename, metadata in tqdm(read_image_meta_batch(filelist),
                                       total=len(filelist),
                                       desc="Calculating Yaw"):
            if not metadata:
                msg = ("The images to be sorted do not contain alignment data. Images must have "
                       "been generated by Faceswap's Extract process.\nIf you are sorting an "
                       "older faceset, then you should re-extract the faces from your source "
                       "alignments file to generate this data.")
                raise FaceswapError(msg)
            alignments = metadata["itxt"]["alignments"]
            aligned_face = AlignedFace(np.array(alignments["landmarks_xy"], dtype="float32"),
                                       image=None,
                                       centering="legacy",
                                       is_aligned=True)
            filenames.append(filename)
            yaws.append(aligned_face.pose.yaw)

        logger.info("Sorting...")
        matched_list = list(zip(filenames, yaws))
        img_list = sorted(matched_list, key=operator.itemgetter(1), reverse=True)
        return img_list

    def sort_hist(self):
        """ Sort by image histogram similarity """
        logger.info("Sorting by histogram similarity...")

        # TODO We have metadata here, so we can mask the face for hist sorting
        img_list = [(filename, cv2.calcHist([image], [0], None, [256], [0, 256]))
                    for filename, image, _ in tqdm(self._loader.load(),
                                                   desc="Calculating histograms",
                                                   total=self._loader.count,
                                                   leave=False)]

        logger.info("Comparing histograms and sorting...")
        img_list_len = len(img_list)
        for i in tqdm(range(0, img_list_len - 1), desc="Comparing histograms", file=sys.stdout):
            min_score = float("inf")
            j_min_score = i + 1
            for j in range(i + 1, img_list_len):
                score = cv2.compareHist(img_list[i][1], img_list[j][1], cv2.HISTCMP_BHATTACHARYYA)
                if score < min_score:
                    min_score = score
                    j_min_score = j
            (img_list[i + 1], img_list[j_min_score]) = (img_list[j_min_score], img_list[i + 1])
        return img_list

    def sort_hist_dissim(self):
        """ Sort by image histogram dissimilarity """
        logger.info("Sorting by histogram dissimilarity...")

        # TODO We have metadata here, so we can mask the face for hist sorting
        img_list = [[filename, cv2.calcHist([image], [0], None, [256], [0, 256]), 0.0]
                    for filename, image, _ in tqdm(self._loader.load(),
                                                   desc="Calculating histograms",
                                                   total=self._loader.count,
                                                   leave=False)]

        img_list_len = len(img_list)
        for i in tqdm(range(0, img_list_len), desc="Comparing histograms", file=sys.stdout):
            score_total = 0
            for j in range(0, img_list_len):
                if i == j:
                    continue
                score_total += cv2.compareHist(img_list[i][1],
                                               img_list[j][1],
                                               cv2.HISTCMP_BHATTACHARYYA)
            img_list[i][2] = score_total

        logger.info("Sorting...")
        return sorted(img_list, key=lambda x: x[2], reverse=True)

    def sort_size(self):
        """ Sort the faces by largest face (in original frame) to smallest """
        logger.info("Sorting by original face size...")
        img_list = []
        for filename, image, metadata in tqdm(self._loader.load(),
                                              desc="Calculating face sizes",
                                              total=self._loader.count,
                                              leave=False):
            if not metadata:
                msg = ("The images to be sorted do not contain alignment data. Images must have "
                       "been generated by Faceswap's Extract process.\nIf you are sorting an "
                       "older faceset, then you should re-extract the faces from your source "
                       "alignments file to generate this data.")
                raise FaceswapError(msg)
            alignments = metadata["alignments"]
            aligned_face = AlignedFace(np.array(alignments["landmarks_xy"], dtype="float32"),
                                       image=image,
                                       centering="legacy",
                                       is_aligned=True)
            roi = aligned_face.original_roi
            size = ((roi[1][0] - roi[0][0]) ** 2 + (roi[1][1] - roi[0][1]) ** 2) ** 0.5
            img_list.append((filename, size))

        logger.info("Sorting...")
        return sorted(img_list, key=lambda x: x[1], reverse=True)

    def sort_black_pixels(self):
        """ Sort by percentage of black pixels
 </s> add         logger.debug("setting output folder: %s", arguments.output_dir)
        input_dir = arguments.input_dir
        output_dir = arguments.output_dir
        sort_method = arguments.sort_method
        group_method = arguments.group_method

        needs_rename = sort_method != "none" and group_method == "none"

        if needs_rename and arguments.keep_original and (not output_dir or
                                                         output_dir == input_dir):
            output_dir = os.path.join(input_dir, "sorted")
            logger.warning("No output folder selected, but files need renaming. "
                           "Outputting to: '%s'", output_dir)
        elif not output_dir:
            output_dir = input_dir
            logger.warning("No output folder selected, files will be sorted in place in: '%s'",
                           output_dir)

        arguments.output_dir = output_dir
        logger.debug("Set output folder: %s", arguments.output_dir)
        return arguments

    def _parse_arguments(self, arguments):
        """ Parse the arguments and update/format relevant choices

        Parameters:
        ----------
        arguments: :class:`argparse.Namespace`
            The command line arguments passed to the sort process
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
  #: tools/sort/cli.py:60 tools/sort/cli.py:109
  msgid "sort settings"
  msgstr ""
  
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
#: tools/sort/cli.py:120
msgid ""
"R|Choose how images are sorted. Selecting a sort method gives the images a "
"new filename based on the order the image appears within the given method.\n"
"L|'none': Don't sort the images. When a 'group-by' method is selected, "
"selecting 'none' means that the files will be moved/copied into their "
"respective bins, but the files will keep their original filenames. Selecting "
"'none' for both 'sort-by' and 'group-by' will do nothing"
msgstr ""

#: tools/sort/cli.py:133 tools/sort/cli.py:160 tools/sort/cli.py:189
msgid "group settings"
  msgstr ""
  
  #: tools/sort/cli.py:99
  msgid ""
  "Keeps the original files in the input directory. Be careful when using this "
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Overhaul sort:
  - Standardize image data reading and writing
  - Optimize loading (just one pass required)
  - Make all sort groups binnable (to greater or lesser results)
  - Add sort by pitch
  - Deprecate multiple options
  - linting, docs + locales 
locales/tools.sort.cli.pot