mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-21 12:11:49 +08:00
docs: translations: use attribute to store current language
Akira Yokosawa reported [1] that the "translations" extension we added in commit7418ec5b15
("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:7418ec5b15
("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
This commit is contained in:
parent
0df8669f69
commit
b7b2ffc3ca
@ -29,10 +29,7 @@ all_languages = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class LanguagesNode(nodes.Element):
|
class LanguagesNode(nodes.Element):
|
||||||
def __init__(self, current_language, *args, **kwargs):
|
pass
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
self.current_language = current_language
|
|
||||||
|
|
||||||
class TranslationsTransform(Transform):
|
class TranslationsTransform(Transform):
|
||||||
default_priority = 900
|
default_priority = 900
|
||||||
@ -49,7 +46,8 @@ class TranslationsTransform(Transform):
|
|||||||
# normalize docname to be the untranslated one
|
# normalize docname to be the untranslated one
|
||||||
docname = os.path.join(*components[2:])
|
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():
|
for lang_code, lang_name in all_languages.items():
|
||||||
if lang_code == this_lang_code:
|
if lang_code == this_lang_code:
|
||||||
@ -84,7 +82,7 @@ def process_languages(app, doctree, docname):
|
|||||||
|
|
||||||
html_content = app.builder.templates.render('translations.html',
|
html_content = app.builder.templates.render('translations.html',
|
||||||
context={
|
context={
|
||||||
'current_language': node.current_language,
|
'current_language': node['current_language'],
|
||||||
'languages': languages,
|
'languages': languages,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user