@@ -67,7 +67,16 @@ class Preprocessors:
67
67
"""
68
68
69
69
@staticmethod
70
- def process_translations (context : dict ) -> dict :
70
+ def current_year (context : dict ) -> dict :
71
+ """
72
+ Add the current year to the context, so it can be used for the copyright
73
+ note, or other places where it is needed.
74
+ """
75
+ context ["current_year" ] = datetime .datetime .now ().year
76
+ return context
77
+
78
+ @staticmethod
79
+ def download_translated_content (context : dict ) -> dict :
71
80
"""
72
81
Download the translations from the GitHub repository and extract them.
73
82
"""
@@ -90,12 +99,23 @@ def process_translations(context: dict) -> dict:
90
99
return context
91
100
92
101
@staticmethod
93
- def current_year (context : dict ) -> dict :
102
+ def add_navbar_content (context : dict ) -> dict :
94
103
"""
95
- Add the current year to the context, so it can be used for the copyright
96
- note, or other places where it is needed .
104
+ Add the original and translated navbar content to the context, so it can
105
+ be used in the templates .
97
106
"""
98
- context ["current_year" ] = datetime .datetime .now ().year
107
+ context ["navbar" ] = {}
108
+ for lang in context ["translations" ]["languages" ]:
109
+ with open (
110
+ os .path .join (
111
+ context ["source_path" ],
112
+ "" if lang == "en" else f"{ lang } " ,
113
+ context ["main" ]["navbar_fname" ],
114
+ ),
115
+ encoding = "utf-8" ,
116
+ ) as f :
117
+ navbar_lang = yaml .safe_load (f )
118
+ context ["navbar" ][lang ] = navbar_lang ["navbar" ]
99
119
return context
100
120
101
121
@staticmethod
@@ -106,34 +126,35 @@ def navbar_add_info(context: dict) -> dict:
106
126
``has_subitems`` that tells which one of them every element is. It
107
127
also adds a ``slug`` field to be used as a CSS id.
108
128
"""
129
+ for i , item in enumerate (context ["navbar" ]["en" ]):
130
+ context ["navbar" ]["en" ][i ] = dict (
131
+ item ,
132
+ has_subitems = isinstance (item ["target" ], list ),
133
+ slug = (item ["name" ].replace (" " , "-" ).lower ()),
134
+ )
135
+ return context
136
+
137
+ @staticmethod
138
+ def navbar_add_translated_info (context : dict ) -> dict :
139
+ """
140
+ Add the translated navbar content to the context, so it can be used in
141
+ the templates. The translated navbar content is stored in the
142
+ """
109
143
110
- def update_target (item : dict , url_prefix : str ) -> None :
144
+ def update_target (item : dict , prefix : str ) -> None :
111
145
if item .get ("translated" , True ):
112
- item ["target" ] = f"{ url_prefix } { item ['target' ]} "
146
+ item ["target" ] = f"{ prefix } / { item ['target' ]} "
113
147
else :
114
148
item ["target" ] = f"../{ item ['target' ]} "
115
149
116
- context ["navbar" ] = {}
117
- for lang in context ["translations" ]["languages" ]:
118
- prefix = "" if lang == "en" else lang
119
- url_prefix = "" if lang == "en" else lang + "/"
120
- with open (
121
- os .path .join (
122
- context ["source_path" ], prefix , context ["main" ]["navbar_fname" ]
123
- ),
124
- encoding = "utf-8" ,
125
- ) as f :
126
- navbar_lang = yaml .safe_load (f )
127
-
128
- context ["navbar" ][lang ] = navbar_lang ["navbar" ]
129
- for i , item in enumerate (navbar_lang ["navbar" ]):
150
+ for lang in list (context ["translations" ]["languages" ].keys ())[1 :]:
151
+ for i , item in enumerate (context ["navbar" ][lang ]):
130
152
has_subitems = isinstance (item ["target" ], list )
131
- if lang != "en" :
132
- if has_subitems :
133
- for sub_item in item ["target" ]:
134
- update_target (sub_item , url_prefix )
135
- else :
136
- update_target (item , url_prefix )
153
+ if has_subitems :
154
+ for sub_item in item ["target" ]:
155
+ update_target (sub_item , lang )
156
+ else :
157
+ update_target (item , lang )
137
158
138
159
context ["navbar" ][lang ][i ] = dict (
139
160
item ,
0 commit comments