@@ -280,6 +280,14 @@ class Language:
280280 def tag (self ) -> str :
281281 return self .iso639_tag .replace ("_" , "-" ).lower ()
282282
283+ @property
284+ def is_translation (self ) -> bool :
285+ return self .tag != "en"
286+
287+ @property
288+ def locale_repo_url (self ) -> str :
289+ return f"https://github.com/python/python-docs-{ self .tag } .git"
290+
283291 @property
284292 def switcher_label (self ) -> str :
285293 if self .translated_name :
@@ -549,7 +557,7 @@ def run(self, http: urllib3.PoolManager, force_build: bool) -> bool | None:
549557 logging .info ("Skipping non-HTML build (language is HTML-only)." )
550558 return None # skipped
551559 self .cpython_repo .switch (self .version .branch_or_tag )
552- if self .language .tag != "en" :
560+ if self .language .is_translation :
553561 self .clone_translation ()
554562 if trigger_reason := self .should_rebuild (force_build ):
555563 self .build_venv ()
@@ -569,6 +577,10 @@ def run(self, http: urllib3.PoolManager, force_build: bool) -> bool | None:
569577 return False
570578 return True
571579
580+ @property
581+ def locale_dir (self ) -> Path :
582+ return self .build_root / self .version .name / "locale"
583+
572584 @property
573585 def checkout (self ) -> Path :
574586 """Path to CPython git clone."""
@@ -582,15 +594,8 @@ def clone_translation(self) -> None:
582594 def translation_repo (self ) -> Repository :
583595 """See PEP 545 for translations repository naming convention."""
584596
585- locale_repo = f"https://github.com/python/python-docs-{ self .language .tag } .git"
586- locale_clone_dir = (
587- self .build_root
588- / self .version .name
589- / "locale"
590- / self .language .iso639_tag
591- / "LC_MESSAGES"
592- )
593- return Repository (locale_repo , locale_clone_dir )
597+ locale_clone_dir = self .locale_dir / self .language .iso639_tag / "LC_MESSAGES"
598+ return Repository (self .language .locale_repo_url , locale_clone_dir )
594599
595600 @property
596601 def translation_branch (self ) -> str :
@@ -611,10 +616,9 @@ def build(self) -> None:
611616 logging .info ("Build start." )
612617 start_time = perf_counter ()
613618 sphinxopts = list (self .language .sphinxopts )
614- if self .language .tag != "en" :
615- locale_dirs = self .build_root / self .version .name / "locale"
619+ if self .language .is_translation :
616620 sphinxopts .extend ((
617- f"-D locale_dirs={ locale_dirs } " ,
621+ f"-D locale_dirs={ self . locale_dir } " ,
618622 f"-D language={ self .language .iso639_tag } " ,
619623 "-D gettext_compact=0" ,
620624 "-D translation_progress_classes=1" ,
@@ -636,7 +640,7 @@ def build(self) -> None:
636640
637641 if self .includes_html :
638642 site_url = self .version .url
639- if self .language .tag != "en" :
643+ if self .language .is_translation :
640644 site_url += f"{ self .language .tag } /"
641645 # Define a tag to enable opengraph socialcards previews
642646 # (used in Doc/conf.py and requires matplotlib)
@@ -718,7 +722,7 @@ def copy_build_to_webroot(self, http: urllib3.PoolManager) -> None:
718722 logging .info ("Publishing start." )
719723 start_time = perf_counter ()
720724 self .www_root .mkdir (parents = True , exist_ok = True )
721- if self .language .tag == "en" :
725+ if not self .language .is_translation :
722726 target = self .www_root / self .version .name
723727 else :
724728 language_dir = self .www_root / self .language .tag
@@ -786,7 +790,7 @@ def should_rebuild(self, force: bool) -> str | Literal[False]:
786790 logging .info ("Should rebuild: no previous state found." )
787791 return "no previous state"
788792 cpython_sha = self .cpython_repo .run ("rev-parse" , "HEAD" ).stdout .strip ()
789- if self .language .tag != "en" :
793+ if self .language .is_translation :
790794 translation_sha = self .translation_repo .run (
791795 "rev-parse" , "HEAD"
792796 ).stdout .strip ()
@@ -849,7 +853,7 @@ def save_state(
849853 "triggered_by" : trigger ,
850854 "cpython_sha" : self .cpython_repo .run ("rev-parse" , "HEAD" ).stdout .strip (),
851855 }
852- if self .language .tag != "en" :
856+ if self .language .is_translation :
853857 state ["translation_sha" ] = self .translation_repo .run (
854858 "rev-parse" , "HEAD"
855859 ).stdout .strip ()
0 commit comments