Merge branch 'master' of github.com-priv:lioman/Flex

This commit is contained in:
Elias Kirchgässner 2022-09-02 09:33:51 +02:00
commit 56e011d70a
75 changed files with 8194 additions and 13085 deletions

1
.github/CODEOWNERS vendored Normal file
View file

@ -0,0 +1 @@
* @alexandrevicenzi

28
.github/workflows/pelican-test.yaml vendored Normal file
View file

@ -0,0 +1,28 @@
name: Pelican test
on:
- push
- pull_request
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
- 3.6
- 3.7
- 3.8
- 3.9
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: true
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
pip install tox tox-gh-actions
- name: Test with tox
run: tox

View file

@ -17,6 +17,7 @@ The minimalist [Pelican](http://blog.getpelican.com/) theme.
- Open Graph
- Rich Snippets (JSON-LD)
- Related Posts (via [plugin](https://github.com/getpelican/pelican-plugins/tree/master/related_posts) or AddThis)
- Series (via [plugin](https://github.com/pelican-plugins/series))
- Minute read (via [plugin](https://github.com/getpelican/pelican-plugins/tree/master/post_stats))
- [Multiple Code Highlight Styles](https://github.com/alexandrevicenzi/Flex/wiki/Code-Highlight)
- [Translation Support](https://github.com/alexandrevicenzi/Flex/wiki/Translations)
@ -41,9 +42,11 @@ The minimalist [Pelican](http://blog.getpelican.com/) theme.
- [I18N Sub-sites](https://github.com/getpelican/pelican-plugins/tree/master/i18n_subsites)
- [Minute read](https://github.com/getpelican/pelican-plugins/tree/master/post_stats)
- [Related Posts](https://github.com/getpelican/pelican-plugins/tree/master/related_posts)
- [Series](https://github.com/pelican-plugins/series)
- [Representative image](https://github.com/getpelican/pelican-plugins/tree/master/representative_image)
- [Neighbors](https://github.com/getpelican/pelican-plugins/tree/master/neighbors)
- [Tipue Search](https://github.com/getpelican/pelican-plugins/blob/master/tipue_search/)
- [Pelican Search](https://github.com/pelican-plugins/search)
- [Tipue Search](https://github.com/getpelican/pelican-plugins/blob/master/tipue_search/) (deprecated)
- [SEO](https://github.com/pelican-plugins/seo)
## Install

View file

@ -21,6 +21,14 @@ ifeq ($(RELATIVE), 1)
PELICANOPTS += --relative-urls
endif
SERVER ?= "0.0.0.0"
PORT ?= 0
ifneq ($(PORT), 0)
PELICANOPTS += -p $(PORT)
endif
help:
@echo 'Makefile for a pelican Web site '
@echo ' '
@ -32,43 +40,40 @@ help:
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
@echo ' make devserver [PORT=8000] serve and regenerate together '
@echo ' make devserver-global regenerate and serve on 0.0.0.0 '
@echo ' make github upload the web site via gh-pages '
@echo ' '
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
@echo ' '
html:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
clean:
[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
[ ! -d "$(OUTPUTDIR)" ] || rm -rf "$(OUTPUTDIR)"
regenerate:
$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
"$(PELICAN)" -r "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
serve:
ifdef PORT
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
else
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
endif
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
serve-global:
ifdef SERVER
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b $(SERVER)
else
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b 0.0.0.0
endif
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) -b $(SERVER)
devserver:
ifdef PORT
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
else
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
endif
"$(PELICAN)" -lr "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
devserver-global:
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -b 0.0.0.0
publish:
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(PUBLISHCONF)" $(PELICANOPTS)
.PHONY: html help clean regenerate serve serve-global devserver publish
github: publish
ghp-import -m "Generate Pelican site" -b $(GITHUB_PAGES_BRANCH) "$(OUTPUTDIR)"
git push origin $(GITHUB_PAGES_BRANCH)
.PHONY: html help clean regenerate serve serve-global devserver publish github

View file

@ -0,0 +1,27 @@
Title: Flex 2.5.0
Date: 2022-08-31 08:00
Modified: 2022-08-31 08:00
Category: News
Tags: pelican, python, theme
Slug: flex-pelican-theme-update-2-5
Cover: images/flex-screenshot.png
[Flex theme](https://github.com/alexandrevicenzi/Flex) 2.5.0 comes with minor fixes and big improvments.
- Added support for [Pelican Search](https://github.com/pelican-plugins/search) plugin as [Tipue Search](https://github.com/getpelican/pelican-plugins/tree/master/tipue_search) is deprecated
- Tipue Search support will be removed in Flex 3.0
- Added support for [SEO](https://github.com/pelican-plugins/seo) plugin
- Added support for [Series](https://github.com/pelican-plugins/series) plugin
- Added support for [Microsoft Clarity](https://clarity.microsoft.com/)
- Added support for Google Analytics v4
- Updated translations
- Improved styles for Table of Contents and Figure with captions, as well other small fixes
For more details check our [Wiki](https://github.com/alexandrevicenzi/Flex/wiki).
The next Flex version will be 3.0 and it will bring a few changes to the theme structure, introducing a few configuration changes.
Over the years many features were added to Flex theme and some with not much care.
Because of this, code cleanup is needed to allow theme maintenance in the future.
Pelican also changed, and some features present in Flex are now available in Pelican or as new plugins. It's time to review everything done so far.
Hope you enjoy this version and stay tuned for Flex 3.0.

View file

@ -45,6 +45,8 @@ USE_FOLDER_AS_CATEGORY = False
MAIN_MENU = True
HOME_HIDE_TAGS = True
GITHUB_CORNER_URL = "https://github.com/alexandrevicenzi/Flex"
SOCIAL = (
("github", "https://github.com/alexandrevicenzi/Flex"),
("rss", "/blog/feeds/all.atom.xml"),

View file

@ -1,121 +1,148 @@
# -*- coding: utf-8 -*-
import os
import shlex
import shutil
import sys
import datetime
from invoke import task
from invoke.main import program
from invoke.util import cd
from pelican import main as pelican_main
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
from pelican.settings import DEFAULT_CONFIG, get_settings_from_file
SETTINGS_FILE_BASE = "pelicanconf.py"
OPEN_BROWSER_ON_SERVE = True
SETTINGS_FILE_BASE = 'pelicanconf.py'
SETTINGS = {}
SETTINGS.update(DEFAULT_CONFIG)
LOCAL_SETTINGS = get_settings_from_file(SETTINGS_FILE_BASE)
SETTINGS.update(LOCAL_SETTINGS)
CONFIG = {
"settings_base": SETTINGS_FILE_BASE,
"settings_publish": "publishconf.py",
'settings_base': SETTINGS_FILE_BASE,
'settings_publish': 'publishconf.py',
# Output path. Can be absolute or relative to tasks.py. Default: 'output'
"deploy_path": SETTINGS["OUTPUT_PATH"],
'deploy_path': SETTINGS['OUTPUT_PATH'],
# Github Pages configuration
"github_pages_branch": "gh-pages",
"commit_message": "'Publish site on {}'".format(datetime.date.today().isoformat()),
# Port for `serve`
"port": 8000,
'github_pages_branch': 'gh-pages',
'commit_message': "'Publish site on {}'".format(datetime.date.today().isoformat()),
# Host and port for `serve`
'host': 'localhost',
'port': 8000,
}
@task
def clean(c):
"""Remove generated files"""
if os.path.isdir(CONFIG["deploy_path"]):
shutil.rmtree(CONFIG["deploy_path"])
os.makedirs(CONFIG["deploy_path"])
if os.path.isdir(CONFIG['deploy_path']):
shutil.rmtree(CONFIG['deploy_path'])
os.makedirs(CONFIG['deploy_path'])
@task
def build(c):
"""Build local version of site"""
c.run("pelican -s {settings_base}".format(**CONFIG))
pelican_run('-s {settings_base}'.format(**CONFIG))
@task
def rebuild(c):
"""`build` with the delete switch"""
c.run("pelican -d -s {settings_base}".format(**CONFIG))
pelican_run('-d -s {settings_base}'.format(**CONFIG))
@task
def regenerate(c):
"""Automatically regenerate site upon file modification"""
c.run("pelican -r -s {settings_base}".format(**CONFIG))
pelican_run('-r -s {settings_base}'.format(**CONFIG))
@task
def serve(c):
"""Serve site at http://localhost:$PORT/ (default port is 8000)"""
"""Serve site at http://$HOST:$PORT/ (default is localhost:8000)"""
class AddressReuseTCPServer(RootedHTTPServer):
allow_reuse_address = True
server = AddressReuseTCPServer(
CONFIG["deploy_path"], ("", CONFIG["port"]), ComplexHTTPRequestHandler
)
CONFIG['deploy_path'],
(CONFIG['host'], CONFIG['port']),
ComplexHTTPRequestHandler)
sys.stderr.write("Serving on port {port} ...\n".format(**CONFIG))
if OPEN_BROWSER_ON_SERVE:
# Open site in default browser
import webbrowser
webbrowser.open("http://{host}:{port}".format(**CONFIG))
sys.stderr.write('Serving at {host}:{port} ...\n'.format(**CONFIG))
server.serve_forever()
@task
def reserve(c):
"""`build`, then `serve`"""
build(c)
serve(c)
@task
def preview(c):
"""Build production version of site"""
c.run("pelican -s {settings_publish}".format(**CONFIG))
pelican_run('-s {settings_publish}'.format(**CONFIG))
@task
def livereload(c):
"""Automatically reload browser tab upon file modification."""
from livereload import Server
build(c)
def cached_build():
cmd = '-s {settings_base} -e CACHE_CONTENT=True LOAD_CONTENT_CACHE=True'
pelican_run(cmd.format(**CONFIG))
cached_build()
server = Server()
# Watch the base settings file
server.watch(CONFIG["settings_base"], lambda: build(c))
# Watch content source files
content_file_extensions = [".md", ".rst"]
theme_path = SETTINGS['THEME']
watched_globs = [
CONFIG['settings_base'],
'{}/templates/**/*.html'.format(theme_path),
]
content_file_extensions = ['.md', '.rst']
for extension in content_file_extensions:
content_blob = "{0}/**/*{1}".format(SETTINGS["PATH"], extension)
server.watch(content_blob, lambda: build(c))
# Watch the theme's templates and static assets
theme_path = SETTINGS["THEME"]
server.watch("{}/templates/*.html".format(theme_path), lambda: build(c))
static_file_extensions = [".css", ".js"]
content_glob = '{0}/**/*{1}'.format(SETTINGS['PATH'], extension)
watched_globs.append(content_glob)
static_file_extensions = ['.css', '.js']
for extension in static_file_extensions:
static_file = "{0}/static/**/*{1}".format(theme_path, extension)
server.watch(static_file, lambda: build(c))
# Serve output path on configured port
server.serve(port=CONFIG["port"], root=CONFIG["deploy_path"])
static_file_glob = '{0}/static/**/*{1}'.format(theme_path, extension)
watched_globs.append(static_file_glob)
for glob in watched_globs:
server.watch(glob, cached_build)
if OPEN_BROWSER_ON_SERVE:
# Open site in default browser
import webbrowser
webbrowser.open("http://{host}:{port}".format(**CONFIG))
server.serve(host=CONFIG['host'], port=CONFIG['port'], root=CONFIG['deploy_path'])
@task
def publish(c):
"""Publish to production via rsync"""
c.run("pelican -s {settings_publish}".format(**CONFIG))
pelican_run('-s {settings_publish}'.format(**CONFIG))
c.run(
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
'-e "ssh -p {ssh_port}" '
"{} {ssh_user}@{ssh_host}:{ssh_path}".format(
CONFIG["deploy_path"].rstrip("/") + "/", **CONFIG
)
)
'{} {ssh_user}@{ssh_host}:{ssh_path}'.format(
CONFIG['deploy_path'].rstrip('/') + '/',
**CONFIG))
@task
def gh_pages(c):
"""Publish to GitHub Pages"""
preview(c)
c.run('ghp-import -b {github_pages_branch} '
'-m {commit_message} '
'{deploy_path} -p'.format(**CONFIG))
def pelican_run(cmd):
cmd += ' ' + program.core.remainder # allows to pass-through args to pelican
pelican_main(shlex.split(cmd))

View file

@ -40,5 +40,14 @@ gulp.task('pygments', function () {
.pipe(gulp.dest('./static/pygments'));
});
gulp.task('watch-less', function () {
return gulp.watch('static/stylesheet/*.less', gulp.task('less'));
});
gulp.task('watch-js', function () {
return gulp.watch('static/dark-theme/!(*.min).js', gulp.task('uglify'));
})
gulp.task('default', gulp.series(['less', 'uglify', 'cp', 'pygments']));
gulp.task('watch', gulp.series('default', gulp.parallel('watch-less', 'watch-js')));

View file

@ -8,7 +8,8 @@
},
"scripts": {
"test": "source venv/bin/activate && pip install pelican markdown && pelican -s tests/pelicanconf.py && deactivate",
"build": "node_modules/gulp/bin/gulp.js default"
"build": "gulp default",
"watch": "gulp watch"
},
"repository": {
"type": "git",

View file

@ -1 +1 @@
function ThemeManager(e){var t=e.defaultTheme,r="true"===e.enableAutoDetectTheme.toLowerCase(),a=window.matchMedia("light"===t?"(prefers-color-scheme: dark)":"(prefers-color-scheme: dark), (prefers-color-scheme: no-preference)");function d(e,t){var r=document.getElementById(e);r.disabled=!t,r.media=""}function m(){var e=localStorage.getItem("themeOverride");"light"!==e&&"dark"!==e&&(e="browser"===e||r?a.matches?"dark":"light":t),d("dark-theme-style","dark"===e),d("pygments-dark-theme","dark"===e),d("pygments-light-theme","light"===e),"dark"===e?(document.body.classList.add("dark-theme"),document.body.classList.remove("light-theme")):(document.body.classList.add("light-theme"),document.body.classList.remove("dark-theme"))}this.switch=function(e){localStorage.setItem("themeOverride",e),m()};var o=localStorage.getItem("themeOverride");"light"!==o&&"dark"!==o||m(),a.addListener(m)}window.theme=new ThemeManager(document.getElementById("dark-theme-script").dataset);
function ThemeManager(e){var t=e.defaultTheme,r="true"===e.enableAutoDetectTheme.toLowerCase(),a=window.matchMedia("light"===t?"(prefers-color-scheme: dark)":"(prefers-color-scheme: dark), (prefers-color-scheme: no-preference)");function d(e,t){e=document.getElementById(e);e.disabled=!t,e.media=""}function m(){var e=localStorage.getItem("themeOverride");d("dark-theme-style","dark"===(e="light"!==e&&"dark"!==e?"browser"===e||r?a.matches?"dark":"light":t:e)),d("pygments-dark-theme","dark"===e),d("pygments-light-theme","light"===e),"dark"===e?(document.body.classList.add("dark-theme"),document.body.classList.remove("light-theme")):(document.body.classList.add("light-theme"),document.body.classList.remove("dark-theme"))}this.switch=function(e){localStorage.setItem("themeOverride",e),m()};e=localStorage.getItem("themeOverride");"light"!==e&&"dark"!==e||m(),a.addListener(m)}window.theme=new ThemeManager(document.getElementById("dark-theme-script").dataset);

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,16 +1,19 @@
/*!
* Font Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com
* Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2022 Fonticons, Inc.
*/
:root, :host {
--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"; }
@font-face {
font-family: 'Font Awesome 5 Free';
font-family: 'Font Awesome 6 Free';
font-style: normal;
font-weight: 900;
font-display: block;
src: url("../webfonts/fa-solid-900.eot");
src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
.fa,
.fas {
font-family: 'Font Awesome 5 Free';
.fas,
.fa-solid {
font-family: 'Font Awesome 6 Free';
font-weight: 900; }

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 699 KiB

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 876 KiB

Binary file not shown.

Binary file not shown.

149
static/stork/stork.css Normal file
View file

@ -0,0 +1,149 @@
.stork {
position: relative;
font-family: inherit;
box-sizing: border-box;
font-size: 1em;
padding: unset;
}
.stork *,
.stork *:before,
.stork *:after {
box-sizing: border-box;
}
.stork .stork-input {
width: 100%;
padding: 0.4em 0.8em;
border: none;
font-family: inherit;
}
.stork .stork-progress {
position: absolute;
display: block;
content: "";
bottom: 1px;
height: 1px;
transition: width 0.25s ease, opacity 0.4s ease 0.4s;
}
.stork .stork-output {
position: absolute;
width: 100%;
margin-top: 0.5em;
display: flex;
flex-direction: column;
z-index: 100;
font-weight: 400;
font-family: inherit;
text-align: unset;
padding: unset;
}
.stork a:link,
.stork a:visited {
color: #d9421e;
}
.stork .stork-output-visible {
background: #353434;
border: 1px solid #d9421e;
}
.stork .stork-message {
width: 100%;
padding: 0.5em 1em;
}
.stork .stork-attribution {
width: 100%;
padding: 0.5em 1em;
font-size: 0.8em;
}
.stork .stork-results {
margin: 0;
padding: 0;
width: 100%;
list-style-type: none;
max-height: 25em;
overflow-y: scroll;
}
.stork .stork-result a:link {
padding: 1em;
display: block;
text-decoration: none;
}
.stork .stork-result p {
margin: 0;
}
.stork .stork-title {
padding: unset;
font-weight: bold;
font-size: 0.95em;
margin: 0;
/* Flexbox container for the title and the score, when debugging */
display: flex;
justify-content: space-between;
}
.stork .stork-excerpt {
font-size: 0.8em;
line-height: 1;
margin: 0;
color: var(--text-invert);
padding: unset;
/* Flexbox container for the title and the score, when debugging */
display: flex;
justify-content: space-between;
}
.stork .stork-excerpt:not(:last-of-type) {
margin-bottom: 0.6em;
}
.stork .stork-highlight {
padding: 0 0.1em;
}
.stork .stork-error {
outline: 2px solid #c92a2a;
}
.stork .stork-close-button {
position: absolute;
right: 0;
margin: 0.25em 0.25em;
height: 1.2em;
width: 1.2em;
padding: 0px;
border: none;
font-size: 1em;
color: hsl(0, 0%, 50%);
line-height: 1;
}
.stork .stork-close-button svg {
width: 0.8em;
position: relative;
top: 1px;
}
.stork .stork-close-button:hover {
background: hsla(0, 0%, 78%);
cursor: pointer;
}
.stork .stork-close-button:active {
background: hsla(0, 0%, 65%);
}
.stork-excerpt-container {
padding: 0;
}

2
static/stork/stork.js Normal file

File diff suppressed because one or more lines are too long

BIN
static/stork/stork.wasm Normal file

Binary file not shown.

View file

@ -160,6 +160,11 @@ div.admonition.warning {
background-color: @admonition-warning-bg-color-dark-theme;
}
figure,
div.figure {
color: @figure-color-dark-theme;
figcaption {
color: @text-color-dark-theme;
}
}

View file

@ -1 +1 @@
body{background-color:#333;color:#eee}hr{color:#222}aside,hr{background-color:#222}aside{color:#fff}aside form.navbar-search input#tipue_search_input{background-color:#1a1a1a;color:#eee}main nav{border-bottom-color:#222}main .translations a,main nav a{border-color:#222}main article kbd{background-color:#080808;color:#eee}main article blockquote,main article pre{border-left:8px solid #ffffff33}main article :not(pre)>code{background-color:#080808;border-color:#000}main article div#tipue_search_content .tipue_search_result span.tipue_search_content_bold{color:#fff}main article section#isso-thread .auth-section p.input-wrapper input,main article section#isso-thread .notification-section input,main article section#isso-thread div.textarea{background:#1a1a1a;color:#eee}main article section#isso-thread>h4{color:#eee}main article section#isso-thread .isso-postbox>.form-wrapper .preview{background:repeating-linear-gradient(-45deg,#222,#222 10px,#1a1a1a 0,#1a1a1a 20px)}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .author{color:#eee}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .note,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .spacer,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.parent,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.permalink{color:#999}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .note:hover,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .spacer:hover,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.parent:hover,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.permalink:hover{color:#eee}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-footer a:hover{text-shadow:#242121 0 0 1px!important}main footer{border-top-color:#222}div.related-posts{border-color:#222}div.admonition{color:#eee;background-color:#404040}div.admonition.attention,div.admonition.caution{color:#fbda7a;background-color:#4a3900}div.admonition.danger,div.admonition.error{color:#ebadb3;background-color:#28070a}div.admonition.hint{color:#7abaff;background-color:#001933}div.admonition.important,div.admonition.note{color:#a8eab7;background-color:#122b18}div.admonition.tip{color:#7abaff;background-color:#001933}div.admonition.warning{color:#fbda7a;background-color:#4a3900}div.figure{color:#bfbfbf}
body{background-color:#333;color:#eee}hr{color:#222}aside,hr{background-color:#222}aside{color:#fff}aside form.navbar-search input#tipue_search_input{background-color:#1a1a1a;color:#eee}main nav{border-bottom-color:#222}main .translations a,main nav a{border-color:#222}main article kbd{background-color:#080808;color:#eee}main article blockquote,main article pre{border-left:8px solid #ffffff33}main article :not(pre)>code{background-color:#080808;border-color:#000}main article div#tipue_search_content .tipue_search_result span.tipue_search_content_bold{color:#fff}main article section#isso-thread .auth-section p.input-wrapper input,main article section#isso-thread .notification-section input,main article section#isso-thread div.textarea{background:#1a1a1a;color:#eee}main article section#isso-thread>h4{color:#eee}main article section#isso-thread .isso-postbox>.form-wrapper .preview{background:repeating-linear-gradient(-45deg,#222,#222 10px,#1a1a1a 0,#1a1a1a 20px)}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .author{color:#eee}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .note,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .spacer,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.parent,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.permalink{color:#999}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .note:hover,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header .spacer:hover,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.parent:hover,main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-header a.permalink:hover{color:#eee}main article section#isso-thread .isso-comment>div.text-wrapper>.isso-comment-footer a:hover{text-shadow:#242121 0 0 1px!important}main footer{border-top-color:#222}div.related-posts{border-color:#222}div.admonition{color:#eee;background-color:#404040}div.admonition.attention,div.admonition.caution{color:#fbda7a;background-color:#4a3900}div.admonition.danger,div.admonition.error{color:#ebadb3;background-color:#28070a}div.admonition.hint{color:#7abaff;background-color:#001933}div.admonition.important,div.admonition.note{color:#a8eab7;background-color:#122b18}div.admonition.tip{color:#7abaff;background-color:#001933}div.admonition.warning{color:#fbda7a;background-color:#4a3900}div.figure,figure{color:#bfbfbf}div.figure figcaption,figure figcaption{color:#eee}

View file

@ -276,6 +276,23 @@ main {
section#isso-thread .auth-section .input-wrapper {
margin-right: 5px;
}
.toc {
margin-top: 2em;
.toctitle {
font-size: 1.3em
}
ul {
list-style: none;
padding-inline-start: 1rem;
}
> ul {
padding: 0;
}
}
}
footer {
@ -471,7 +488,7 @@ ul.social {
background-color: @github-bg-color;
}
a.sc-envelope {
a.sc-at, a.sc-mailbox, a.sc-envelope {
background-color: @email-bg-color;
}
@ -695,21 +712,28 @@ div.admonition.warning {
background-color: @admonition-warning-bg-color;
}
figure,
div.figure {
font-size: 90%;
color: @figure-color;
figcaption {
margin-top: 0.5em;
text-align: center;
color: @text-color;
}
img {
vertical-align: middle;
line-height: 1;
display: inline;
}
p {
margin-top: 0;
margin-bottom: 0;
}
p.caption {
font-style: italic;
}
@ -719,14 +743,43 @@ div.figure {
}
}
figure.align-left,
div.figure.align-left {
text-align: left;
}
figure.align-center,
div.figure.align-center {
text-align: center;
}
figure.align-right,
div.figure.align-right {
text-align: right;
}
.github-corner:hover .octo-arm {
animation:octocat-wave 560ms ease-in-out;
}
@keyframes octocat-wave {
0%,100% {
transform:rotate(0);
}
20%,60% {
transform:rotate(-25deg);
}
40%,80% {
transform:rotate(10deg);
}
}
@media (max-width:500px) {
.github-corner:hover .octo-arm {
animation:none;
}
.github-corner .octo-arm{
animation:octocat-wave 560ms ease-in-out;
}
}

File diff suppressed because one or more lines are too long

View file

@ -83,6 +83,29 @@
<div class="addthis_relatedposts_inline"></div>
{% endif %}
{% if article.series %}
<div class="related-posts">
{% set text = SERIES_TEXT|default('Part %(index)s of the %(name)s series') %}
<h4>{{ text|format(index=article.series.index, name=article.series.name) }}</h4>
{% if article.series.all_previous %}
<h5>Previous articles</h5>
<ul>
{% for article in article.series.all_previous %}
<li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% if article.series.all_next %}
<h5>Next articles</h5>
<ul>
{% for article in article.series.all_next %}
<li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
</div>
{% endif %}
{% if GOOGLE_ADSENSE and GOOGLE_ADSENSE.ads.article_bottom %}
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads-responsive"

View file

@ -12,9 +12,9 @@
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{% if page in hidden_pages %}
<meta name="robots" content="noindex, nofollow" />
<meta name="robots" content="noindex, nofollow" />
{% else %}
<meta name="robots" content="{{ ROBOTS }}" />
<meta name="robots" content="{{ ROBOTS }}" />
{% endif %}
{% if USE_GOOGLE_FONTS != False %}
@ -69,11 +69,18 @@
href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/pygments/{{ PYGMENTS_STYLE|default('github') }}.min.css">
{% endif %}
{% if PLUGINS and 'tipue_search' in PLUGINS %}
{% if PLUGINS and ('tipue_search' in PLUGINS or 'pelican.plugins.tipue_search' in PLUGINS) %}
{% if USE_GOOGLE_FONTS != False %}
<link href="https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans" rel="stylesheet">
{% endif %}
<link rel="stylesheet" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/tipuesearch/tipuesearch.min.css" />
<link rel="stylesheet"
href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/tipuesearch/tipuesearch.min.css" />
{% endif %}
{% if 'pelican.plugins.search' in PLUGINS %}
<link rel="stylesheet"
type="text/css"
href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stork/stork.css" />
{% endif %}
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/font-awesome/css/fontawesome.css">
@ -81,41 +88,17 @@
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/font-awesome/css/solid.css">
{% if CUSTOM_CSS %}
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ CUSTOM_CSS }}">
<link rel="stylesheet" type="text/css" href="{% if main_siteurl is defined %}{{ main_site }}{% else %}{{ SITEURL }}{% endif %}/{{ CUSTOM_CSS }}">
{% endif %}
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom">
{% endif %}
{% include "partial/icon.html" %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS">
{% endif %}
{% include "partial/color.html" %}
{% if FAVICON %}
<link rel="shortcut icon" href="{{ FAVICON }}" type="image/x-icon">
<link rel="icon" href="{{ FAVICON }}" type="image/x-icon">
{% endif %}
{% include "partial/feed.html" %}
{% if GOOGLE_ANALYTICS %}
{% include "partial/ga.html" %}
{% endif %}
{% if GOOGLE_GLOBAL_SITE_TAG %}
{% include "partial/ggst.html" %}
{% endif %}
{% if BROWSER_COLOR %}
<!-- Chrome, Firefox OS and Opera -->
<meta name="theme-color" content="{{ BROWSER_COLOR }}">
<!-- Windows Phone -->
<meta name="msapplication-navbutton-color" content="{{ BROWSER_COLOR }}">
<!-- iOS Safari -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<!-- Microsoft EDGE -->
<meta name="msapplication-TileColor" content="{{ BROWSER_COLOR }}">
{% endif %}
{% include "partial/ga.html" %}
{% include "partial/ggst.html" %}
{% if not PLUGINS or 'seo' not in PLUGINS %}
{% if REL_CANONICAL %}
@ -150,98 +133,15 @@
});
</script>
{% endif %}
{% if GOOGLE_TAG_MANAGER %}
{% include "partial/gtm.html" %}
{% endif %}
{% if MICROSOFT_CLARITY %}
{% include "partial/clarity.html" %}
{% endif %}
{% include "partial/gtm.html" %}
{% include "partial/clarity.html" %}
</head>
<body {% if not THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE %}class="{{ THEME_COLOR|default('light') }}-theme"{% endif %}>
{% if GOOGLE_TAG_MANAGER %}
{% include "partial/gtm_noscript.html" %}
{% endif %}
<aside>
<div>
<a href="{{ SITEURL }}/">
{% if SITELOGO %}
<img src="{{ SITELOGO }}" alt="{{ SITETITLE }}" title="{{ SITETITLE }}">
{% else %}
<img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/img/profile.png" alt="{{ SITETITLE }}" title="{{ SITETITLE }}">
{% endif %}
</a>
{% include "partial/gtm_noscript.html" %}
<h1>
<a href="{{ SITEURL }}/">{{ SITETITLE }}</a>
</h1>
{% include "partial/sidebar.html" %}
{% if SITESUBTITLE %}<p>{{ SITESUBTITLE }}</p>{% endif %}
{% if PLUGINS and 'tipue_search' in PLUGINS %}
<form class="navbar-search" action="{{ SITEURL }}/search.html" role="search">
<input type="text" name="q" id="tipue_search_input" placeholder="{{ _('Search...') }}">
</form>
{% endif %}
{% if (pages and DISPLAY_PAGES_ON_MENU) or LINKS %}
<nav>
<ul class="list">
{# Open links in new window depending on the LINKS_IN_NEW_TAB setting #}
{% macro get_target(link) -%}
{%- if LINKS_IN_NEW_TAB in ('all', true) -%}
_blank
{%- elif LINKS_IN_NEW_TAB == "external" and not link.startswith("/") and not link.startswith(SITEURL) -%}
_blank
{%- else -%}
_self
{%- endif -%}
{%- endmacro %}
{% if PAGES_SORT_ATTRIBUTE -%}
{% set pages = pages|sort(attribute=PAGES_SORT_ATTRIBUTE) %}
{%- endif %}
{% if DISPLAY_PAGES_ON_MENU %}
{% for page in pages %}
<li>
<a target="{{ get_target(SITEURL) }}"
href="{{ SITEURL }}/{{ page.url }}{% if not DISABLE_URL_HASH %}#{{ page.slug }}{% endif %}">
{{ page.title }}
</a>
</li>
{% endfor %}
{% endif %}
{% for name, link in LINKS %}
<li>
<a target="{{ get_target(link) }}" href="{{ link }}" >{{ name }}</a>
</li>
{% endfor %}
</ul>
</nav>
{% endif %}
<ul class="social">
{% for name, link in SOCIAL %}
<li>
<a {% if name == 'mastodon' %}rel="me"{% endif %} class="sc-{{ name }}" href="{{ link }}" target="_blank">
<i class="{% if name in ['envelope', 'rss'] %}fas{% else %}fab{% endif %} fa-{{ name }}"></i>
</a>
</li>
{% endfor %}
</ul>
</div>
{% if GOOGLE_ADSENSE and GOOGLE_ADSENSE.ads.aside %}
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads-aside"
data-ad-client="{{ GOOGLE_ADSENSE.ca_id }}"
data-ad-slot="{{ GOOGLE_ADSENSE.ads.aside }}"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
{% endif %}
</aside>
<main>
{% if GOOGLE_ADSENSE and GOOGLE_ADSENSE.ads.main_menu %}
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
@ -253,53 +153,20 @@
</script>
{% endif %}
{% if MAIN_MENU %}
<nav>
<a href="{{ SITEURL }}/">{{ _('Home') }}</a>
{% for title, link in MENUITEMS %}
<a href="{{ link }}">{{ _(title) }}</a>
{% endfor %}
{% if FEED_ALL_ATOM %}
<a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}">{{ _('Atom') }}</a>
{% endif %}
{% if FEED_ALL_RSS %}
<a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}">{{ _('RSS') }}</a>
{% endif %}
</nav>
{% endif %}
{% include "partial/nav.html" %}
{% block content %}
{% endblock %}
<footer>
{% if CC_LICENSE %}
{% include "partial/cc_license.html" %}
{% else %}
{% include "partial/copyright.html" %}
{% endif %}
</footer>
{% include "partial/footer.html" %}
</main>
{% if GUAGES %}
{% include "partial/guages.html" %}
{% endif %}
{% if ADD_THIS_ID %}
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid={{ ADD_THIS_ID }}" async="async"></script>
{% endif %}
{% if (PIWIK_URL and PIWIK_SITE_ID) or (MATOMO_URL and MATOMO_SITE_ID) %}
{% include "partial/matomo.html" %}
{% endif %}
{% include "partial/jsonld.html" %}
{% if GITHUB_CORNER_URL %}
{% include 'partial/github.html' %}
{% endif %}
{% include "partial/guages.html" %}
{% include "partial/addthis.html" %}
{% include "partial/matomo.html" %}
{% include 'partial/github.html' %}
{% include 'partial/stork.html' %}
{% block additional_js %}{% endblock %}
</body>

View file

@ -11,7 +11,7 @@
{% endif %}
{% endblock %}
{% block title %} &ndash; {{ page.title }}{% endblock %}
{% block title %} &ndash; {{ page.title|striptags|escape }}{% endblock %}
{% block content %}
<article class="single">

View file

@ -0,0 +1,3 @@
{% if ADD_THIS_ID %}
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid={{ ADD_THIS_ID }}" async="async"></script>
{% endif %}

View file

@ -1,7 +1,9 @@
{% if MICROSOFT_CLARITY %}
<script type="text/javascript">
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "{{ MICROSOFT_CLARITY }}");
(function(c,l,a,r,i,t,y){
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
})(window, document, "clarity", "script", "{{ MICROSOFT_CLARITY }}");
</script>
{% endif %}

View file

@ -0,0 +1,11 @@
{% if BROWSER_COLOR %}
<!-- Chrome, Firefox OS and Opera -->
<meta name="theme-color" content="{{ BROWSER_COLOR }}">
<!-- Windows Phone -->
<meta name="msapplication-navbutton-color" content="{{ BROWSER_COLOR }}">
<!-- iOS Safari -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<!-- Microsoft EDGE -->
<meta name="msapplication-TileColor" content="{{ BROWSER_COLOR }}">
{% endif %}

View file

@ -0,0 +1,7 @@
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom">
{% endif %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS">
{% endif %}

View file

@ -0,0 +1,7 @@
<footer>
{% if CC_LICENSE %}
{% include "partial/cc_license.html" %}
{% else %}
{% include "partial/copyright.html" %}
{% endif %}
</footer>

View file

@ -1,4 +1,4 @@
<!-- Google Analytics -->
{% if GOOGLE_ANALYTICS %}
<script type="text/javascript">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@ -8,4 +8,4 @@
ga('create', '{{ GOOGLE_ANALYTICS }}', 'auto');
ga('send', 'pageview');
</script>
<!-- End Google Analytics -->
{% endif %}

View file

@ -1,4 +1,4 @@
<!-- Global site tag (gtag.js) - Google Analytics -->
{% if GOOGLE_GLOBAL_SITE_TAG %}
<script async src="https://www.googletagmanager.com/gtag/js?id={{ GOOGLE_GLOBAL_SITE_TAG }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
@ -7,4 +7,4 @@
gtag('config', '{{ GOOGLE_GLOBAL_SITE_TAG }}');
</script>
<!-- End of Global site tag (gtag.js) - Google Analytics -->
{% endif %}

View file

@ -1,4 +1,5 @@
<a href="{{ GITHUB_CORNER_URL }}" class="github-corner" aria-label="View source on Github">
{% if GITHUB_CORNER_URL %}
<a href="{{ GITHUB_CORNER_URL }}" target="_blank" class="github-corner" aria-label="View source on Github">
<svg width="80"
height="80"
viewBox="0 0 250 250"
@ -16,4 +17,4 @@
</path>
</svg>
</a>
<style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
{% endif %}

View file

@ -1,4 +1,4 @@
<!-- Google Tag Manager -->
{% if GOOGLE_TAG_MANAGER %}
<script>
(function(w,d,s,l,i){
w[l]=w[l]||[];
@ -9,4 +9,4 @@
f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','{{ GOOGLE_TAG_MANAGER }}');
</script>
<!-- End Google Tag Manager -->
{% endif %}

View file

@ -1,5 +1,5 @@
<!-- Google Tag Manager -->
{% if GOOGLE_TAG_MANAGER %}
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id={{ GOOGLE_TAG_MANAGER }}" height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager -->
{% endif %}

View file

@ -1,4 +1,4 @@
<!-- Gauges -->
{% if GUAGES %}
<script type="text/javascript">
var _gauges = _gauges || [];
(function() {
@ -13,4 +13,5 @@
s.parentNode.insertBefore(t, s);
})();
</script>
<!-- End Gauges -->
{% endif %}

View file

@ -0,0 +1,4 @@
{% if FAVICON %}
<link rel="shortcut icon" href="{{ FAVICON }}" type="image/x-icon">
<link rel="icon" href="{{ FAVICON }}" type="image/x-icon">
{% endif %}

View file

@ -1,4 +1,4 @@
<!-- Matomo -->
{% if (PIWIK_URL and PIWIK_SITE_ID) or (MATOMO_URL and MATOMO_SITE_ID) %}
<script type="text/javascript">
var _paq = window._paq || [];
_paq.push(['trackPageView']);
@ -12,4 +12,4 @@
})();
</script>
<noscript><p><img src="https://{{ MATOMO_URL or PIWIK_URL }}/matomo.php?idsite={{ MATOMO_SITE_ID or PIWIK_SITE_ID }}&rec=1" style="border:0" alt="" /></p></noscript>
<!-- End Matomo Code -->
{% endif %}

View file

@ -0,0 +1,17 @@
{% if MAIN_MENU %}
<nav>
<a href="{{ SITEURL }}/">{{ _('Home') }}</a>
{% for title, link in MENUITEMS %}
<a href="{{ link }}">{{ _(title) }}</a>
{% endfor %}
{% if FEED_ALL_ATOM %}
<a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}">{{ _('Atom') }}</a>
{% endif %}
{% if FEED_ALL_RSS %}
<a href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}">{{ _('RSS') }}</a>
{% endif %}
</nav>
{% endif %}

View file

@ -0,0 +1,97 @@
<aside>
<div>
<a href="{{ SITEURL }}/">
{% if SITELOGO %}
<img src="{{ SITELOGO }}" alt="{{ SITETITLE }}" title="{{ SITETITLE }}">
{% else %}
<img src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/img/profile.png" alt="{{ SITETITLE }}" title="{{ SITETITLE }}">
{% endif %}
</a>
<h1>
<a href="{{ SITEURL }}/">{{ SITETITLE }}</a>
</h1>
{% if SITESUBTITLE %}
<p>{{ SITESUBTITLE }}</p>
{% endif %}
{% if PLUGINS %}
{% if ('tipue_search' in PLUGINS or 'pelican.plugins.tipue_search' in PLUGINS) %}
<form class="navbar-search" action="{{ SITEURL }}/search.html" role="search">
<input type="text" name="q" id="tipue_search_input" placeholder="{{ _('Search...') }}">
</form>
{% elif 'pelican.plugins.search' in PLUGINS %}
<div class="stork">
<input class="stork-input" type="text" autocomplete="off" name="q" data-stork="sitesearch" placeholder="{{ _('Search...') }}"/>
<div class="stork-output" data-stork="sitesearch-output"></div>
</div>
{% endif %}
{% endif %}
{% if (pages and DISPLAY_PAGES_ON_MENU) or LINKS %}
<nav>
<ul class="list">
{# Open links in new window depending on the LINKS_IN_NEW_TAB setting #}
{% macro get_target(link) -%}
{%- if LINKS_IN_NEW_TAB in ('all', true) -%}
_blank
{%- elif LINKS_IN_NEW_TAB == "external" and not link.startswith("/") and not link.startswith(SITEURL) -%}
_blank
{%- else -%}
_self
{%- endif -%}
{%- endmacro %}
{% if PAGES_SORT_ATTRIBUTE -%}
{% set pages = pages|sort(attribute=PAGES_SORT_ATTRIBUTE) %}
{%- endif %}
{% if DISPLAY_PAGES_ON_MENU %}
{% for page in pages %}
<li>
<a target="{{ get_target(SITEURL) }}"
href="{{ SITEURL }}/{{ page.url }}{% if not DISABLE_URL_HASH %}#{{ page.slug }}{% endif %}">
{{ page.title }}
</a>
</li>
{% endfor %}
{% endif %}
{% for name, link in LINKS %}
<li>
<a target="{{ get_target(link) }}" href="{{ link }}" >{{ name }}</a>
</li>
{% endfor %}
</ul>
</nav>
{% endif %}
{% if SOCIAL %}
{% set solid = ['at', 'envelope', 'mailbox', 'rss'] %}
{% set relme = ['at', 'envelope', 'mailbox', 'mastodon'] %}
<ul class="social">
{% for name, link in SOCIAL %}
<li>
<a class="sc-{{ name }}"
{% if name in relme %}rel="me"{% endif %}
href="{{ link }}"
target="_blank">
<i class="{% if name in solid %}fa-solid{% else %}fa-brands{% endif %} fa-{{ name }}"></i>
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</div>
{% if GOOGLE_ADSENSE and GOOGLE_ADSENSE.ads.aside %}
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads-aside"
data-ad-client="{{ GOOGLE_ADSENSE.ca_id }}"
data-ad-slot="{{ GOOGLE_ADSENSE.ads.aside }}"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
{% endif %}
</aside>

View file

@ -0,0 +1,13 @@
{% if 'pelican.plugins.search' in PLUGINS %}
{% if STORK_VERSION %}
<script src="https://files.stork-search.net/releases/v{{ STORK_VERSION }}/stork.js"></script>
<script>
stork.register("sitesearch", "{{ SITEURL }}/search-index.st", {showProgress: false});
</script>
{% else %}
<script src="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stork/stork.js"></script>
<script>
stork.register("sitesearch", "{{ SITEURL }}/search-index.st", {showProgress: false});
</script>
{% endif %}
{% endif %}

View file

@ -1,5 +1,6 @@
{% if PLUGINS and 'tipue_search' in PLUGINS %} {% extends 'base.html' %} {%
block title %}{{ _('Search') }} - {{ SITENAME|striptags }}{% endblock title %}
{% if PLUGINS and ('tipue_search' in PLUGINS or 'pelican.plugins.tipue_search' in PLUGINS) %}
{% extends 'base.html' %}
{% block title %}{{ _('Search') }} - {{ SITENAME|striptags }}{% endblock title %}
{% block content %}
<article class="single">

16
tox.ini Normal file
View file

@ -0,0 +1,16 @@
[tox]
envlist = py{36,37,38,39}
skipsdist = True
[gh-actions]
python =
3.6: py36
3.7: py37
3.8: py38
3.9: py39
[testenv]
deps =
-r docs/requirements.txt
commands =
pelican -s docs/pelicanconf.py

View file

@ -1,11 +1,12 @@
# Czech translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Honza Stínovlas <stinovlas@gmail.com>, 2018
# Ivana Holm <akarienta@gmail.com>, 2018
#
#, fuzzy
msgid ""
msgstr ""
@ -14,13 +15,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Ivana Holm <akarienta@gmail.com>, 2018\n"
"Language: cs\n"
"Language-Team: Czech (https://www.transifex.com/alexandrevicenzi/teams/66327/cs/)\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: cs\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -133,4 +134,3 @@ msgstr "Starší příspěvky"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Novější příspěvky"

View file

@ -1,11 +1,13 @@
# German translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Tom Teichler <tom@dummerdelfin.de>, 2019
# Alexandre Vicenzi <transifex@alxd.me>, 2020
# Alexandre Vicenzi <transifex@alxd.me>, 2022
# Lioman, 2022
#
#, fuzzy
msgid ""
msgstr ""
@ -13,14 +15,14 @@ msgstr ""
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Alexandre Vicenzi <transifex@alxd.me>, 2020\n"
"Language: de\n"
"Last-Translator: Lioman, 2022\n"
"Language-Team: German (https://www.transifex.com/alexandrevicenzi/teams/66327/de/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -111,12 +113,12 @@ msgstr "Bitte JavaScript aktivieren um die Kommentare zu sehen."
#: templates/partial/flex.html:3
#, python-format
msgid "Built with %(pelican_url)s using %(flex_url)s theme"
msgstr "Gebaut mit %(pelican_url)s und dem %(flex_url)stheme"
msgstr "Gebaut mit %(pelican_url)s und dem %(flex_url)s theme"
#: templates/partial/flex.html:10
#, python-format
msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
msgstr ""
msgstr "Zu %(dark_url)s | %(light_url)s | %(browser_url)s Thema wechseln"
#: templates/partial/neighbors.html:5
msgid "Previous Post"
@ -133,4 +135,3 @@ msgstr "&Auml;ltere Artikel"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Neuere Artikel"

View file

@ -1,11 +1,12 @@
# Spanish translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Juan A. S. <okelet@gmail.com>, 2016
# Alexandre Vicenzi <transifex@alxd.me>, 2020
#
#, fuzzy
msgid ""
msgstr ""
@ -14,13 +15,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Alexandre Vicenzi <transifex@alxd.me>, 2020\n"
"Language: es\n"
"Language-Team: Spanish (https://www.transifex.com/alexandrevicenzi/teams/66327/es/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: es\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -133,4 +134,3 @@ msgstr "Artículos antiguos"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Artículos recientes"

View file

@ -1,11 +1,12 @@
# Spanish (Spain) translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Juan A. S. <okelet@gmail.com>, 2016
# Alexandre Vicenzi <transifex@alxd.me>, 2020
#
#, fuzzy
msgid ""
msgstr ""
@ -14,13 +15,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Alexandre Vicenzi <transifex@alxd.me>, 2020\n"
"Language: es_ES\n"
"Language-Team: Spanish (Spain) (https://www.transifex.com/alexandrevicenzi/teams/66327/es_ES/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: es_ES\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -133,4 +134,3 @@ msgstr "Artículos antiguos"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Artículos recientes"

View file

@ -1,10 +1,11 @@
# Estonian translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Jüri Lillemets <lillemetsj@gmail.com>, 2017
#
#, fuzzy
msgid ""
msgstr ""
@ -13,13 +14,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Jüri Lillemets <lillemetsj@gmail.com>, 2017\n"
"Language: et\n"
"Language-Team: Estonian (https://www.transifex.com/alexandrevicenzi/teams/66327/et/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: et\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -132,4 +133,3 @@ msgstr "Vanemad artiklid"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Uuemad artiklid"

View file

@ -1,10 +1,11 @@
# Persian (Iran) translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# AmirMahmood <amma4ww@gmail.com>, 2017
#
#, fuzzy
msgid ""
msgstr ""
@ -13,13 +14,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: AmirMahmood <amma4ww@gmail.com>, 2017\n"
"Language: fa_IR\n"
"Language-Team: Persian (Iran) (https://www.transifex.com/alexandrevicenzi/teams/66327/fa_IR/)\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: fa_IR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -132,4 +133,3 @@ msgstr "نوشته‌های کهنه‌تر"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "نوشته‌های تازه‌تر"

View file

@ -1,10 +1,11 @@
# Finnish (Finland) translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# i r, 2021
#
#, fuzzy
msgid ""
msgstr ""
@ -13,13 +14,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: i r, 2021\n"
"Language: fi_FI\n"
"Language-Team: Finnish (Finland) (https://www.transifex.com/alexandrevicenzi/teams/66327/fi_FI/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: fi_FI\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -110,7 +111,8 @@ msgstr "Ole hyvä ja laita JavaScript päälle nähdäksesi kommentit."
#: templates/partial/flex.html:3
#, python-format
msgid "Built with %(pelican_url)s using %(flex_url)s theme"
msgstr "Rakennettu %(pelican_url)s-generaattoria ja %(flex_url)s-teemaa käyttäen"
msgstr ""
"Rakennettu %(pelican_url)s-generaattoria ja %(flex_url)s-teemaa käyttäen"
#: templates/partial/flex.html:10
#, python-format
@ -132,4 +134,3 @@ msgstr "Vanhemmat postaukset"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Uudemmat postaukset"

View file

@ -1,12 +1,14 @@
# French translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# François Schmidts <francois.schmidts@gmail.com>, 2016
# Axel Haustant, 2018
# taggaddaaaa <taggaddaaaa@outlook.com>, 2019
# Charles Brunet <charles@cbrunet.net>, 2021
#
#, fuzzy
msgid ""
msgstr ""
@ -14,14 +16,14 @@ msgstr ""
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: taggaddaaaa <taggaddaaaa@outlook.com>, 2019\n"
"Language: fr\n"
"Last-Translator: Charles Brunet <charles@cbrunet.net>, 2021\n"
"Language-Team: French (https://www.transifex.com/alexandrevicenzi/teams/66327/fr/)\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: fr\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -36,7 +38,7 @@ msgstr "Posté le %(when)s dans %(category)s"
#: templates/article.html:34 templates/index.html:32
#, python-format
msgid "%(minutes)s min read"
msgstr ""
msgstr "lecture de %(minutes)s min"
#: templates/article.html:64
msgid "Like this article? Share it with your friends!"
@ -57,7 +59,7 @@ msgstr "Auteurs"
#: templates/base.html:161
msgid "Search..."
msgstr ""
msgstr "Rechercher…"
#: templates/base.html:237
msgid "Home"
@ -90,11 +92,11 @@ msgstr "Continuer à lire"
#: templates/search.html:3
msgid "Search"
msgstr ""
msgstr "Recherche"
#: templates/search.html:17
msgid "Search Results"
msgstr ""
msgstr "Résultats"
#: templates/tag.html:2
#, python-format
@ -117,7 +119,7 @@ msgstr "Construit avec %(pelican_url)s utilisant le thème %(flex_url)s"
#: templates/partial/flex.html:10
#, python-format
msgid "Switch to the %(dark_url)s | %(light_url)s | %(browser_url)s theme"
msgstr ""
msgstr "Changer pour le thème %(dark_url)s | %(light_url)s | %(browser_url)s"
#: templates/partial/neighbors.html:5
msgid "Previous Post"
@ -134,4 +136,3 @@ msgstr "Anciens Posts"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Nouveaux Posts"

View file

@ -1,10 +1,11 @@
# Hungarian (Hungary) translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Molnár Dénes <denes.molnar2@stud.uni-corvinus.hu>, 2017
#
#, fuzzy
msgid ""
msgstr ""
@ -13,13 +14,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Molnár Dénes <denes.molnar2@stud.uni-corvinus.hu>, 2017\n"
"Language: hu_HU\n"
"Language-Team: Hungarian (Hungary) (https://www.transifex.com/alexandrevicenzi/teams/66327/hu_HU/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: hu_HU\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -132,4 +133,3 @@ msgstr "Korábbi bejegyzések"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Újabb bejegyzések"

View file

@ -1,10 +1,11 @@
# Indonesian translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Yongkie Wiyogo <yongkie.wiyogo@gmail.com>, 2018
#
#, fuzzy
msgid ""
msgstr ""
@ -13,13 +14,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Yongkie Wiyogo <yongkie.wiyogo@gmail.com>, 2018\n"
"Language: id\n"
"Language-Team: Indonesian (https://www.transifex.com/alexandrevicenzi/teams/66327/id/)\n"
"Plural-Forms: nplurals=1; plural=0\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: id\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -132,4 +133,3 @@ msgstr "Tulisan lama"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Tulisan baru"

View file

@ -1,11 +1,12 @@
# Italian translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Gareth jax <garethjax@gmail.com>, 2016
# Alexandre Vicenzi <transifex@alxd.me>, 2020
#
#, fuzzy
msgid ""
msgstr ""
@ -14,13 +15,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Alexandre Vicenzi <transifex@alxd.me>, 2020\n"
"Language: it\n"
"Language-Team: Italian (https://www.transifex.com/alexandrevicenzi/teams/66327/it/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: it\n"
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -133,4 +134,3 @@ msgstr "Post più vecchi"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Post più recenti"

View file

@ -1,10 +1,11 @@
# Dutch (Netherlands) translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# rbos, 2017
#
#, fuzzy
msgid ""
msgstr ""
@ -13,13 +14,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: rbos, 2017\n"
"Language: nl_NL\n"
"Language-Team: Dutch (Netherlands) (https://www.transifex.com/alexandrevicenzi/teams/66327/nl_NL/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: nl_NL\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -132,4 +133,3 @@ msgstr "Eerder verschenen artikelen"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Later verschenen artikelen"

View file

@ -1,10 +1,11 @@
# Polish (Poland) translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Justyna Pawlata <justyna.pxw@gmail.com>, 2019
#
#, fuzzy
msgid ""
msgstr ""
@ -13,13 +14,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Justyna Pawlata <justyna.pxw@gmail.com>, 2019\n"
"Language: pl_PL\n"
"Language-Team: Polish (Poland) (https://www.transifex.com/alexandrevicenzi/teams/66327/pl_PL/)\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: pl_PL\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -132,4 +133,3 @@ msgstr "Starsze wpisy"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Nowsze wpisy"

View file

@ -1,8 +1,8 @@
# Portuguese translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
#, fuzzy
msgid ""
msgstr ""
@ -10,14 +10,13 @@ msgstr ""
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: pt\n"
"Language-Team: Portuguese (https://www.transifex.com/alexandrevicenzi/teams/66327/pt/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: pt\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -130,4 +129,3 @@ msgstr ""
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr ""

View file

@ -1,10 +1,11 @@
# Portuguese (Brazil) translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Alexandre Vicenzi <transifex@alxd.me>, 2020
#
#, fuzzy
msgid ""
msgstr ""
@ -13,13 +14,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Alexandre Vicenzi <transifex@alxd.me>, 2020\n"
"Language: pt_BR\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/alexandrevicenzi/teams/66327/pt_BR/)\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -132,4 +133,3 @@ msgstr "Anteriores"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Próximos"

View file

@ -1,10 +1,11 @@
# Portuguese (Portugal) translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Alexandre Vicenzi <transifex@alxd.me>, 2020
#
#, fuzzy
msgid ""
msgstr ""
@ -13,13 +14,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Alexandre Vicenzi <transifex@alxd.me>, 2020\n"
"Language: pt_PT\n"
"Language-Team: Portuguese (Portugal) (https://www.transifex.com/alexandrevicenzi/teams/66327/pt_PT/)\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: pt_PT\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -132,4 +133,3 @@ msgstr "Artigos antigos"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Artigos novos"

View file

@ -1,8 +1,8 @@
# Romanian (Romania) translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
#, fuzzy
msgid ""
msgstr ""
@ -10,14 +10,13 @@ msgstr ""
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: ro_RO\n"
"Language-Team: Romanian (Romania) (https://www.transifex.com/alexandrevicenzi/teams/66327/ro_RO/)\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -130,4 +129,3 @@ msgstr ""
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr ""

View file

@ -1,10 +1,11 @@
# Russian translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Roman Saldygashev <sldg.roman@gmail.com>, 2016
#
#, fuzzy
msgid ""
msgstr ""
@ -13,13 +14,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Roman Saldygashev <sldg.roman@gmail.com>, 2016\n"
"Language: ru\n"
"Language-Team: Russian (https://www.transifex.com/alexandrevicenzi/teams/66327/ru/)\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -132,4 +133,3 @@ msgstr "Старые сообщения"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Новые сообщения"

View file

@ -1,10 +1,11 @@
# Turkish (Turkey) translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# İlker Yürüyen <i.ilker.yuruyen@gmail.com>, 2019
#
#, fuzzy
msgid ""
msgstr ""
@ -13,13 +14,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: İlker Yürüyen <i.ilker.yuruyen@gmail.com>, 2019\n"
"Language: tr_TR\n"
"Language-Team: Turkish (Turkey) (https://www.transifex.com/alexandrevicenzi/teams/66327/tr_TR/)\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: tr_TR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -132,4 +133,3 @@ msgstr "Eski Paylaşımlar"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "Yeni Paylaşımlar"

View file

@ -1,12 +1,13 @@
# Chinese (Simplified, China) translations for Flex.
# Translations template for Flex.
# Copyright (C) 2020 Alexandre Vicenzi
# This file is distributed under the same license as the Flex project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
#
#
# Translators:
# Shiao Qu <whisperzzzz@icloud.com>, 2016
# a2c1471d1cd73a676b800725acec033c_035a6a6 <7c743bc6ac83171e35a5aa8bd66cc1ea_775282>, 2019
# Qian Gu <guqian110@163.com>, 2020
#
#, fuzzy
msgid ""
msgstr ""
@ -15,13 +16,13 @@ msgstr ""
"POT-Creation-Date: 2020-12-01 20:21+0100\n"
"PO-Revision-Date: 2016-08-25 02:15+0000\n"
"Last-Translator: Qian Gu <guqian110@163.com>, 2020\n"
"Language: zh_CN\n"
"Language-Team: Chinese (China) (https://www.transifex.com/alexandrevicenzi/teams/66327/zh_CN/)\n"
"Plural-Forms: nplurals=1; plural=0\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: templates/archives.html:3 templates/archives.html:8
#: templates/period_archives.html:2 templates/period_archives.html:7
@ -134,4 +135,3 @@ msgstr "更旧的文章"
#: templates/partial/pagination.html:10
msgid "Newer Posts"
msgstr "更新的文章"