Language switcher
This commit is contained in:
parent
5393e5fc94
commit
ec97bc7919
@ -83,14 +83,14 @@
|
||||
</div>
|
||||
|
||||
<nav class="collapse navbar-collapse navbar-main navbar-right" role="navigation">
|
||||
{% if versions %}
|
||||
{% if languages %}
|
||||
<ul class="navbar-nav navbar-right nav">
|
||||
<li class="versions">
|
||||
<li class="languages">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown">
|
||||
{{ version }} <span class="caret"></span>
|
||||
{{ language }} <span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
{% for name, url in versions %}
|
||||
{% for name, url in languages %}
|
||||
<li><a href="{{ url }}">{{ name }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
31
conf.py
31
conf.py
@ -286,9 +286,14 @@ def setup(app):
|
||||
app.add_javascript('inventory.js');
|
||||
app.add_javascript('coa-valuation.js')
|
||||
|
||||
app.add_config_value('canonical_root', None, 'env')
|
||||
|
||||
app.connect('html-page-context', analytics)
|
||||
app.add_config_value('google_analytics_key', '', 'env')
|
||||
|
||||
app.connect('html-page-context', localize)
|
||||
app.add_config_value('languages', '', 'env')
|
||||
|
||||
app.connect('doctree-resolved', tag_toctrees)
|
||||
|
||||
def analytics(app, pagename, templatename, context, doctree):
|
||||
@ -314,3 +319,29 @@ def tag_toctrees(app, doctree, docname):
|
||||
return
|
||||
|
||||
app.env.metadata[docname]['has-toc'] = True
|
||||
|
||||
|
||||
def localize(app, pagename, templatename, context, doctree):
|
||||
""" Adds a language switcher below the menu, requires ``canonical_root``
|
||||
and ``languages`` (an ordered, space-separated lists of all possible
|
||||
languages).
|
||||
"""
|
||||
if not (app.config.canonical_root and app.config.languages):
|
||||
return
|
||||
|
||||
current_lang = app.config.language or 'en'
|
||||
context['language'] = current_lang.upper()
|
||||
context['languages'] = [
|
||||
(la.upper(), _build_url(app.config.canonical_root, la, pagename))
|
||||
for la in app.config.languages.split(',')
|
||||
if la != current_lang
|
||||
]
|
||||
|
||||
|
||||
def _build_url(root, branch, pagename):
|
||||
return "{canonical_url}{canonical_branch}/{canonical_page}".format(
|
||||
canonical_url=root,
|
||||
canonical_branch=branch,
|
||||
canonical_page=(pagename + '.html').replace('index.html', '')
|
||||
.replace('index/', ''),
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user