12345678910111213141516171819202122232425262728293031323334353637383940 |
- '''
- This plugin attemps to create something similar to menuitems,
- but more meaningful with respect to l10n
- '''
- from __future__ import print_function
- from pelican import signals
- def add_localmenuitems(generator):
- menu = {} # lang: list of pages
- for page in generator.context['pages']:
- menu.setdefault(page.lang, [])
- for tr in page.translations:
- menu.setdefault(tr.lang, [])
- print('we have langs ' + ','.join(menu.keys()))
- for page in sorted(generator.context['pages'],
- key=lambda x: int(x.navbar_sort)):
- defined_langs = []
- menu[page.lang].append(page)
- defined_langs.append(page.lang)
- for tr in page.translations:
- menu[tr.lang].append(tr)
- defined_langs.append(tr.lang)
- for lang in menu.keys():
- if lang not in defined_langs:
- menu[lang].append(page)
- menuitems = {}
- for lang in menu:
- menuitems[lang] = []
- for page in menu[lang]:
- menuitems[lang].append((page.title, page.url))
- generator.context['LOCALMENUITEMS'] = menuitems
- def register():
- signals.page_generator_finalized.connect(add_localmenuitems)
|