def handle(self, *args, **options):
        """Run the command.
        """
        # Settings.
        locale_dir = settings.COLLECTMESSAGES_PATH
        languages = settings.COLLECTMESSAGES_LANGUAGES
        metadata = getattr(settings, "COLLECTMESSAGES_METADATA", {})

        # Generate a POT-file.
        if options["pot-file"]:

            # Verbose.
            if options["verbosity"]:
                self.stdout.write(
                    "collect_messages: processing POT-file")

            # Create the output directory.
            if not os.path.exists(locale_dir):
                os.makedirs(locale_dir)

            # Build the POT-file.
            potfile = POFile()
            potfile.metadata = metadata
            for message in self._find_all(verbose=options["verbosity"]):
                potfile.append(message)

            # Save the POT-file.
            potfile_path = os.path.join(locale_dir, "django.pot")
            potfile.save(potfile_path)

        # Generate PO-files for all languages.
        for language in languages:

            # Verbose.
            if options["verbosity"]:
                self.stdout.write(
                    "collect_messages: processing language '%s'" % language)

            # Create the output directory.
            message_dir = os.path.join(locale_dir, language, "LC_MESSAGES")
            if not os.path.exists(message_dir):
                os.makedirs(message_dir)

            # Build a PO-file.
            pofile = POFile()
            pofile.metadata = metadata
            for message in self._find_all(language=language,
                                          verbose=options["verbosity"]):
                pofile.append(message)

            # Save the PO-file.
            pofile_path = os.path.join(message_dir, "django.po")
            pofile.save(pofile_path)

            # Save the MO-file.
            if options["compile"]:
                mofile_path = os.path.join(message_dir, "django.mo")
                pofile.save_as_mofile(mofile_path)
예제 #2
0
def save_pofile_as_pofile_and_mofile(pofile: polib.POFile, pofile_path: str):
    """Returns pofile_abspath, mofile_abspath"""
    pofile.save(pofile_path)
    mofilepath = re.sub(r"\.po$", ".mo", pofile_path)
    pofile.save_as_mofile(mofilepath)
    return (pofile_path, mofilepath)