diff --git a/CHANGES b/CHANGES index 5fab4671a36..bc932a7d48c 100644 --- a/CHANGES +++ b/CHANGES @@ -26,6 +26,7 @@ Features added * #7745: html: inventory is broken if the docname contains a space * #7902: html theme: Add a new option :confval:`globaltoc_maxdepth` to control the behavior of globaltoc in sidebar +* #7840: i18n: Optimize the dependencies check on bootstrap * #7052: add ``:noindexentry:`` to the Python, C, C++, and Javascript domains. Update the documentation to better reflect the relationship between this option and the ``:noindex:`` option. diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py index 1e58542bba2..cf3364494b7 100644 --- a/sphinx/environment/__init__.py +++ b/sphinx/environment/__init__.py @@ -387,11 +387,11 @@ def find_files(self, config: Config, builder: "Builder") -> None: # add catalog mo file dependency repo = CatalogRepository(self.srcdir, self.config.locale_dirs, self.config.language, self.config.source_encoding) + mo_paths = {c.domain: c.mo_path for c in repo.catalogs} for docname in self.found_docs: domain = docname_to_domain(docname, self.config.gettext_compact) - for catalog in repo.catalogs: - if catalog.domain == domain: - self.dependencies[docname].add(catalog.mo_path) + if domain in mo_paths: + self.dependencies[docname].add(mo_paths[domain]) except OSError as exc: raise DocumentError(__('Failed to scan documents in %s: %r') % (self.srcdir, exc)) from exc