@@ -55,7 +55,7 @@ def docs(session):
55
55
session .install ("-e" , "." )
56
56
session .run (SPHINX_BUILD , * BUILD_PARAMETERS , SOURCE_DIR , OUTPUT_DIR , * session .posargs )
57
57
# When building the guide, also build the translations in RELEASE_LANGUAGES
58
- session .notify ("build-translations " , [ 'release-build' ] )
58
+ session .notify ("build-release-languages " , session . posargs )
59
59
60
60
61
61
@nox .session (name = "docs-test" )
@@ -69,7 +69,7 @@ def docs_test(session):
69
69
session .run (SPHINX_BUILD , * BUILD_PARAMETERS , * TEST_PARAMETERS , SOURCE_DIR , OUTPUT_DIR , * session .posargs )
70
70
# When building the guide with additional parameters, also build the translations in RELEASE_LANGUAGES
71
71
# with those same parameters.
72
- session .notify ("build-translations " , ['release-build' , * TEST_PARAMETERS ])
72
+ session .notify ("build-release-languages " , [* TEST_PARAMETERS , * session . posargs ])
73
73
74
74
75
75
@nox .session (name = "docs-live" )
@@ -142,8 +142,8 @@ def clean_dir(session):
142
142
pathlib .Path (content ).unlink ()
143
143
144
144
145
- @nox .session (name = "update-translations " )
146
- def update_translations (session ):
145
+ @nox .session (name = "update-release-languages " )
146
+ def update_release_languages (session ):
147
147
"""
148
148
Update the translation files (./locales/*/.po) for languages in RELEASE_LANGUAGES.
149
149
@@ -189,60 +189,63 @@ def update_language(session):
189
189
f" where LANG is one of: { LANGUAGES } "
190
190
)
191
191
192
-
193
- @nox .session (name = "build-languages" )
194
- def build_languages (session ):
192
+ @nox .session (name = "build-language" )
193
+ def build_language (session ):
195
194
"""
196
- Build the translations of the guide for the specified language.
195
+ Build the guide for a specific language translation
197
196
198
- Note: This sessions expects a list of languages to build in the first position of the session arguments.
199
- It does not need to be called directly, it is started by build_translations session.
197
+ For example: nox -s build-language -- es.
200
198
"""
201
- if not session .posargs :
202
- session .error ("Please provide the list of languages to build the translation for" )
203
- languages_to_build = session .posargs .pop (0 )
199
+ if session .posargs and (lang := session .posargs .pop (0 )):
200
+ if lang in LANGUAGES :
201
+ session .install ("-e" , "." )
202
+ session .log (f"Building [{ lang } ] guide" )
203
+ session .run (SPHINX_BUILD , * BUILD_PARAMETERS , "-D" , f"language={ lang } " , "." , OUTPUT_DIR / lang , * session .posargs )
204
+ else :
205
+ session .error (f"Language { lang } is not in LANGUAGES list." )
206
+ else :
207
+ session .error (
208
+ "Please provide a language using:\n \n "
209
+ "nox -s build-language -- LANG\n \n "
210
+ f" where LANG is one of: { LANGUAGES } "
211
+ )
204
212
213
+
214
+ @nox .session (name = "build-release-languages" )
215
+ def build_release_languages (session ):
216
+ """
217
+ Build the translations of the guide for the languages in RELEASE_LANGUAGES.
218
+ """
219
+ if not RELEASE_LANGUAGES :
220
+ session .warn ("No release languages defined in RELEASE_LANGUAGES" )
221
+ return
205
222
session .install ("-e" , "." )
206
- for lang in languages_to_build :
207
- if lang not in LANGUAGES :
208
- session .warn (f"Language [{ lang } ] is not available for translation" )
209
- continue
223
+ for lang in RELEASE_LANGUAGES :
210
224
session .log (f"Building [{ lang } ] guide" )
211
225
session .run (SPHINX_BUILD , * BUILD_PARAMETERS , "-D" , f"language={ lang } " , "." , OUTPUT_DIR / lang , * session .posargs )
226
+ session .log (f"Translations built for { RELEASE_LANGUAGES } " )
212
227
213
-
214
- @nox .session (name = "build-translations" )
215
- def build_translations (session ):
228
+ @nox .session (name = "build-all-languages" )
229
+ def build_all_languages (session ):
216
230
"""
217
- Build translations of the guide.
218
-
219
- Note: this session can be called directly to build all available translations (defined in LANGUAGES).
220
- It is also called by the docs and docs-test sessions with 'release-build' as the first positional
221
- argument, to build only the translations defined in RELEASE_LANGUAGES.
231
+ Build the translations of the guide for the languages in LANGUAGES.
222
232
"""
223
- release_build = False
224
- if session .posargs and session .posargs [0 ] == 'release-build' :
225
- session .posargs .pop (0 )
226
- release_build = True
227
- # if running from the docs or docs-test sessions, build only release languages
228
- BUILD_LANGUAGES = RELEASE_LANGUAGES if release_build else LANGUAGES
229
- # only build languages that have a locale folder
230
- BUILD_LANGUAGES = [lang for lang in BUILD_LANGUAGES if (TRANSLATION_LOCALES_DIR / lang ).exists ()]
231
- session .log (f"Declared languages: { LANGUAGES } " )
232
- session .log (f"Release languages: { RELEASE_LANGUAGES } " )
233
- session .log (f"Building languages{ ' for release' if release_build else '' } : { BUILD_LANGUAGES } " )
234
- if not BUILD_LANGUAGES :
235
- session .warn ("No translations to build" )
236
- else :
237
- session .notify ("build-languages" , [BUILD_LANGUAGES , * session .posargs ])
233
+ if not LANGUAGES :
234
+ session .warn ("No languages defined in LANGUAGES" )
235
+ return
236
+ session .install ("-e" , "." )
237
+ for lang in LANGUAGES :
238
+ session .log (f"Building [{ lang } ] guide" )
239
+ session .run (SPHINX_BUILD , * BUILD_PARAMETERS , "-D" , f"language={ lang } " , "." , OUTPUT_DIR / lang , * session .posargs )
240
+ session .log (f"Translations built for { LANGUAGES } " )
238
241
239
242
240
- @nox .session (name = "build-translations -test" )
241
- def build_translations_test (session ):
243
+ @nox .session (name = "build-all-languages -test" )
244
+ def build_all_languages_test (session ):
242
245
"""
243
- Build all translations of the guide with testing parameters.
246
+ Build all translations of the guide with the testing parameters.
244
247
245
248
This is a convenience session to test the build of all translations with the testing parameters
246
249
in the same way docs-test does for the English version.
247
250
"""
248
- session .notify ("build-translations " , [* TEST_PARAMETERS ])
251
+ session .notify ("build-all-languages " , [* TEST_PARAMETERS ])
0 commit comments