Skip to content

Commit

Permalink
docs: translations: use attribute to store current language
Browse files Browse the repository at this point in the history
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/54a56c2e-a27c-45a0-b712-02a7bc7d2673@gmail.com/

Fixes: 7418ec5 ("docs: translations: add translations links when they exist")
Reported-by: Akira Yokosawa <akiyks@gmail.com>
Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
Closes: https://lore.kernel.org/all/54a56c2e-a27c-45a0-b712-02a7bc7d2673@gmail.com/
Tested-by: Akira Yokosawa <akiyks@gmail.com>  # Sphinx 4.3.2, 5.3.0 and 6.2.1
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Link: https://lore.kernel.org/r/20240215064109.1193556-1-vegard.nossum@oracle.com
  • Loading branch information
Vegard Nossum authored and Jonathan Corbet committed Feb 21, 2024
1 parent 0df8669 commit b7b2ffc
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions Documentation/sphinx/translations.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,7 @@
}

class LanguagesNode(nodes.Element):
def __init__(self, current_language, *args, **kwargs):
super().__init__(*args, **kwargs)

self.current_language = current_language
pass

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

new_nodes = LanguagesNode(all_languages[this_lang_code])
new_nodes = LanguagesNode()
new_nodes['current_language'] = all_languages[this_lang_code]

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

html_content = app.builder.templates.render('translations.html',
context={
'current_language': node.current_language,
'current_language': node['current_language'],
'languages': languages,
})

Expand Down

0 comments on commit b7b2ffc

Please sign in to comment.