Skip to content

Commit b7b2ffc

Browse files
vegardJonathan Corbet
authored andcommitted
docs: translations: use attribute to store current language
Akira Yokosawa reported [1] that the "translations" extension we added in commit 7418ec5 ("docs: translations: add translations links when they exist") broke the build on Sphinx versions v6.1.3 through 7.1.2 (possibly others) with the following error: Exception occurred: File "/usr/lib/python3.12/site-packages/sphinx/util/nodes.py", line 624, in _copy_except__document newnode = self.__class__(rawsource=self.rawsource, **self.attributes) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: LanguagesNode.__init__() missing 1 required positional argument: 'current_language' The full traceback has been saved in /tmp/sphinx-err-7xmwytuu.log, if you want to report the issue to the developers. Solve this problem by making 'current_language' a true element attribute of the LanguagesNode element, which is probably the more correct way to do it anyway. Tested on Sphinx 2.x, 3.x, 6.x, and 7.x. [1]: https://lore.kernel.org/all/[email protected]/ Fixes: 7418ec5 ("docs: translations: add translations links when they exist") Reported-by: Akira Yokosawa <[email protected]> Signed-off-by: Vegard Nossum <[email protected]> Closes: https://lore.kernel.org/all/[email protected]/ Tested-by: Akira Yokosawa <[email protected]> # Sphinx 4.3.2, 5.3.0 and 6.2.1 Signed-off-by: Jonathan Corbet <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 0df8669 commit b7b2ffc

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

Documentation/sphinx/translations.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,7 @@
2929
}
3030

3131
class LanguagesNode(nodes.Element):
32-
def __init__(self, current_language, *args, **kwargs):
33-
super().__init__(*args, **kwargs)
34-
35-
self.current_language = current_language
32+
pass
3633

3734
class TranslationsTransform(Transform):
3835
default_priority = 900
@@ -49,7 +46,8 @@ def apply(self):
4946
# normalize docname to be the untranslated one
5047
docname = os.path.join(*components[2:])
5148

52-
new_nodes = LanguagesNode(all_languages[this_lang_code])
49+
new_nodes = LanguagesNode()
50+
new_nodes['current_language'] = all_languages[this_lang_code]
5351

5452
for lang_code, lang_name in all_languages.items():
5553
if lang_code == this_lang_code:
@@ -84,7 +82,7 @@ def process_languages(app, doctree, docname):
8482

8583
html_content = app.builder.templates.render('translations.html',
8684
context={
87-
'current_language': node.current_language,
85+
'current_language': node['current_language'],
8886
'languages': languages,
8987
})
9088

0 commit comments

Comments
 (0)