@@ -280,6 +280,14 @@ class Language:
280
280
def tag (self ) -> str :
281
281
return self .iso639_tag .replace ("_" , "-" ).lower ()
282
282
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
+
283
291
@property
284
292
def switcher_label (self ) -> str :
285
293
if self .translated_name :
@@ -549,7 +557,7 @@ def run(self, http: urllib3.PoolManager, force_build: bool) -> bool | None:
549
557
logging .info ("Skipping non-HTML build (language is HTML-only)." )
550
558
return None # skipped
551
559
self .cpython_repo .switch (self .version .branch_or_tag )
552
- if self .language .tag != "en" :
560
+ if self .language .is_translation :
553
561
self .clone_translation ()
554
562
if trigger_reason := self .should_rebuild (force_build ):
555
563
self .build_venv ()
@@ -569,6 +577,10 @@ def run(self, http: urllib3.PoolManager, force_build: bool) -> bool | None:
569
577
return False
570
578
return True
571
579
580
+ @property
581
+ def locale_dir (self ) -> Path :
582
+ return self .build_root / self .version .name / "locale"
583
+
572
584
@property
573
585
def checkout (self ) -> Path :
574
586
"""Path to CPython git clone."""
@@ -582,15 +594,8 @@ def clone_translation(self) -> None:
582
594
def translation_repo (self ) -> Repository :
583
595
"""See PEP 545 for translations repository naming convention."""
584
596
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 )
594
599
595
600
@property
596
601
def translation_branch (self ) -> str :
@@ -611,10 +616,9 @@ def build(self) -> None:
611
616
logging .info ("Build start." )
612
617
start_time = perf_counter ()
613
618
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 :
616
620
sphinxopts .extend ((
617
- f"-D locale_dirs={ locale_dirs } " ,
621
+ f"-D locale_dirs={ self . locale_dir } " ,
618
622
f"-D language={ self .language .iso639_tag } " ,
619
623
"-D gettext_compact=0" ,
620
624
"-D translation_progress_classes=1" ,
@@ -636,7 +640,7 @@ def build(self) -> None:
636
640
637
641
if self .includes_html :
638
642
site_url = self .version .url
639
- if self .language .tag != "en" :
643
+ if self .language .is_translation :
640
644
site_url += f"{ self .language .tag } /"
641
645
# Define a tag to enable opengraph socialcards previews
642
646
# (used in Doc/conf.py and requires matplotlib)
@@ -718,7 +722,7 @@ def copy_build_to_webroot(self, http: urllib3.PoolManager) -> None:
718
722
logging .info ("Publishing start." )
719
723
start_time = perf_counter ()
720
724
self .www_root .mkdir (parents = True , exist_ok = True )
721
- if self .language .tag == "en" :
725
+ if not self .language .is_translation :
722
726
target = self .www_root / self .version .name
723
727
else :
724
728
language_dir = self .www_root / self .language .tag
@@ -786,7 +790,7 @@ def should_rebuild(self, force: bool) -> str | Literal[False]:
786
790
logging .info ("Should rebuild: no previous state found." )
787
791
return "no previous state"
788
792
cpython_sha = self .cpython_repo .run ("rev-parse" , "HEAD" ).stdout .strip ()
789
- if self .language .tag != "en" :
793
+ if self .language .is_translation :
790
794
translation_sha = self .translation_repo .run (
791
795
"rev-parse" , "HEAD"
792
796
).stdout .strip ()
@@ -849,7 +853,7 @@ def save_state(
849
853
"triggered_by" : trigger ,
850
854
"cpython_sha" : self .cpython_repo .run ("rev-parse" , "HEAD" ).stdout .strip (),
851
855
}
852
- if self .language .tag != "en" :
856
+ if self .language .is_translation :
853
857
state ["translation_sha" ] = self .translation_repo .run (
854
858
"rev-parse" , "HEAD"
855
859
).stdout .strip ()
0 commit comments