~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/sphinx/translations.py

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/sphinx/translations.py (Version linux-6.12-rc7) and /Documentation/sphinx/translations.py (Version linux-5.7.19)


  1 # SPDX-License-Identifier: GPL-2.0                
  2 #                                                 
  3 # Copyright © 2023, Oracle and/or its affilia    
  4 # Author: Vegard Nossum <vegard.nossum@oracle.c    
  5 #                                                 
  6 # Add translation links to the top of the docu    
  7 #                                                 
  8                                                   
  9 import os                                         
 10                                                   
 11 from docutils import nodes                        
 12 from docutils.transforms import Transform         
 13                                                   
 14 import sphinx                                     
 15 from sphinx import addnodes                       
 16 from sphinx.errors import NoUri                   
 17                                                   
 18 all_languages = {                                 
 19     # English is always first                     
 20     None: 'English',                              
 21                                                   
 22     # Keep the rest sorted alphabetically         
 23     'zh_CN': 'Chinese (Simplified)',              
 24     'zh_TW': 'Chinese (Traditional)',             
 25     'it_IT': 'Italian',                           
 26     'ja_JP': 'Japanese',                          
 27     'ko_KR': 'Korean',                            
 28     'sp_SP': 'Spanish',                           
 29 }                                                 
 30                                                   
 31 class LanguagesNode(nodes.Element):               
 32     pass                                          
 33                                                   
 34 class TranslationsTransform(Transform):           
 35     default_priority = 900                        
 36                                                   
 37     def apply(self):                              
 38         app = self.document.settings.env.app      
 39         docname = self.document.settings.env.d    
 40                                                   
 41         this_lang_code = None                     
 42         components = docname.split(os.sep)        
 43         if components[0] == 'translations' and    
 44             this_lang_code = components[1]        
 45                                                   
 46             # normalize docname to be the untr    
 47             docname = os.path.join(*components    
 48                                                   
 49         new_nodes = LanguagesNode()               
 50         new_nodes['current_language'] = all_la    
 51                                                   
 52         for lang_code, lang_name in all_langua    
 53             if lang_code == this_lang_code:       
 54                 continue                          
 55                                                   
 56             if lang_code is None:                 
 57                 target_name = docname             
 58             else:                                 
 59                 target_name = os.path.join('tr    
 60                                                   
 61             pxref = addnodes.pending_xref('',     
 62                 reftype='doc', reftarget='/' +    
 63                 classname=None, refexplicit=Tr    
 64             pxref += nodes.Text(lang_name)        
 65             new_nodes += pxref                    
 66                                                   
 67         self.document.insert(0, new_nodes)        
 68                                                   
 69 def process_languages(app, doctree, docname):     
 70     for node in doctree.traverse(LanguagesNode    
 71         if app.builder.format not in ['html']:    
 72             node.parent.remove(node)              
 73             continue                              
 74                                                   
 75         languages = []                            
 76                                                   
 77         # Iterate over the child nodes; any re    
 78         # the type 'nodes.reference', while un    
 79         # type 'nodes.Text'.                      
 80         languages = list(filter(lambda xref:      
 81             isinstance(xref, nodes.reference),    
 82                                                   
 83         html_content = app.builder.templates.r    
 84             context={                             
 85                 'current_language': node['curr    
 86                 'languages': languages,           
 87             })                                    
 88                                                   
 89         node.replace_self(nodes.raw('', html_c    
 90                                                   
 91 def setup(app):                                   
 92     app.add_node(LanguagesNode)                   
 93     app.add_transform(TranslationsTransform)      
 94     app.connect('doctree-resolved', process_la    
 95                                                   
 96     return {                                      
 97         'parallel_read_safe': True,               
 98         'parallel_write_safe': True,              
 99     }                                             
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php