Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • docker
  • hugo-prepare-migration
  • master
  • 2021.03.3
  • 2021.04.4
  • 2021.04.5
  • 2021.05.6
  • 2021.12.10
  • 2021.12.11
  • 2021.12.7
  • 2021.12.8
  • 2021.12.9
  • 2022.04.16
13 results

Target

Select target project
  • thomasbromehead/website_en
  • jytou/website_en
  • griffedge/website_en
  • BorisPAING/website_en
  • scanlegentil/website_en
  • guenoel/website_en
  • mmoya/website_en
  • librelois/website_en
  • LukeMarlin/website_en
  • pitchum/website_en
  • calbasi/website_en
11 results
Select Git revision
  • master
  • patch-1
2 results
Show changes
Showing
with 171 additions and 228 deletions
......@@ -9,17 +9,17 @@ Page concernant spécifiquement le logiciel Duniter.
## Installation
* [Install your Duniter node](./install)
* [Update your Duniter node](./update)
* [Install your Duniter node](./duniter/install)
* [Update your Duniter node](./duniter/update)
* [Update a Duniter node hosted on YunoHost](https://forum.duniter.org/t/full-https-support-for-duniter-package-for-yunohost/1892/18)
## For Developers
* [Duniter CLI](./commands)
* [Duniter CLI](./duniter/commands)
* [Development tutorial (in french)](https://github.com/duniter/duniter/blob/master/doc/contribute-french.md)
* Creating a release [for Windows](./create_win_release) and [for ARM](./create_arm_release)
* Creating a release [for Windows](./duniter/create_win_release) and [for ARM](./duniter/create_arm_release)
## Concepts
* [Architecture](./architecture)
* [The Proof-of-Work in Duniter](./2018-11-27-duniter-proof-of-work)
* [Architecture](./duniter/architecture)
* [The Proof-of-Work in Duniter](./duniter/2018-11-27-duniter-proof-of-work)
......@@ -47,7 +47,7 @@ For a new or deleted node (for example, following the use of `reset data`), it i
Synchronize its node with the network Ğ1 (Duniter currency):
duniter sync g1.duniter.org 443
duniter sync g1.duniter.org:443
Progress:
download: [|||| ] 23%
......@@ -59,7 +59,7 @@ This command takes time. Be patient.
Disables the display with progress bars in favor of a conventional control output.
duniter sync g1.duniter.org 443
duniter sync g1.duniter.org:443
2017-04-10T08: 31: 42 + 02: 00 - info: Try with g1.duniter.org:10901 4aCqwi
2017-04-10T08: 31: 42 + 02: 00 - info: Sync started.
2017-04-10T08: 31: 42 + 02: 00 - info: Getting remote blockchain info ...
......@@ -70,7 +70,7 @@ Disables the display with progress bars in favor of a conventional control outpu
Disables P2P downloading and downloading of network node listing.
duniter sync g1.duniter.org 443
duniter sync g1.duniter.org:443
2017-04-10T08: 32: 26 + 02: 00 - info: Try with g1.duniter.org:10901 4aCqwi
2017-04-10T08: 32: 26 + 02: 00 - info: Sync started.
2017-04-10T08: 32: 26 + 02: 00 - info: Getting remote blockchain info ...
......@@ -88,13 +88,13 @@ Retrieves only peer information, does not retrieve block information.
Force the careful verification of the validity of each block in relation to the rules of the protocol.
duniter sync g1.duniter.org 443 --cautious
duniter sync g1.duniter.org:443 --cautious
#### Option `--memory`
Perform synchronization in memory only. Synchronization will not be stored on the hard disk. This option is useful for a quick blockchain integrity check when combined with the `--cautious` option.
duniter sync g1.duniter.org 443 --cautious --memory
duniter sync g1.duniter.org:443 --cautious --memory
## Start / Stop its node
......@@ -363,7 +363,7 @@ Because these options allow you to temporarily reset (the time of a command) a g
Allows you to redefine the folder where the application data is stored. The default value for this option is `$HOME/.config/duniter/`
duniter sync g1.duniter.org 10901 --home / tmp / duniter
duniter sync g1.duniter.org:10901 --home / tmp / duniter
This command will synchronize and store the result in the `/tmp/duniter/duniter_default` folder.
......@@ -371,13 +371,13 @@ This command will synchronize and store the result in the `/tmp/duniter/duniter_
Allows you to redefine the folder where the application data is stored. The default value for this option is `duniter_default`.
duniter sync g1.duniter.org 10901 --mdb g-one
duniter sync g1.duniter.org:10901 --mdb g-one
This command will synchronize and store the result in the `$HOME/.config/duniter/g-one` folder.
It is possible to combine the 2 options:
duniter sync g1.duniter.org 10901 --home / tmp / duniter --mdb g-one
duniter sync g1.duniter.org:10901 --home / tmp / duniter --mdb g-one
This command will synchronize and store the result in the `/tmp/duniter/g-one` folder.
......
......@@ -43,7 +43,7 @@ For the most advanced users, a _server_ install allows you to have a node up 100
You will control your instance using command line tools, but if you want you could also access the graphical interface using a web browser.
> Once you are done with the installation, you can follow [the command line user's guide](../commands).
> Once you are done with the installation, you can follow [the command line user's guide](./commands).
# GNU/Linux
......@@ -91,7 +91,7 @@ To launch the daemon (_server_ version):
duniter start
> You can follow [the command line user's guide](../commands) in order to use your server node.
> You can follow [the command line user's guide](./commands) in order to use your server node.
The _server_ version node for Ubuntu/Debian is usable with [automatic startup](#automatic-startup) (_Systemd_).
......@@ -134,11 +134,11 @@ For other distributions, there is a binary file containing the _desktop_ version
To get the image of the last version:
docker pull duniter/duniter-ts
docker pull duniter/duniter
It is then possible to create the container with:
docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --name duniter duniter/duniter-ts
docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --name duniter duniter/duniter
Without any other option, the container will automatically execute `duniter direct_webstart`. The `-d` in the command line make the container being executed in the background (daemon). The `--name` option is used to give a unique name to the container, which will then be easier to use for the next commands. The `-p` options are used to connect in-container ports with the host ones:
......@@ -146,11 +146,11 @@ Without any other option, the container will automatically execute `duniter dire
* port 10901 is used for BMA access; exporting this port is then only necessary if you activate BMA.
* port 20901 is used for WS2P access.
> Note : do not use both daemon options for Duniter and Docker (for example: `docker run -d duniter/duniter-ts webstart`) or the container will immediately stop.
> Note : do not use both daemon options for Duniter and Docker (for example: `docker run -d duniter/duniter webstart`) or the container will immediately stop.
Once the node is started, it is accessable either using web UI, going to http://localhost:9220, either using command line:
docker exec -it duniter duniter sync g1.duniter.fr 443
docker exec -it duniter duniter sync g1.duniter.fr:443
In the above command, the first `duniter` is the name given to the container at creation time, while the second one is the executed command.
......@@ -159,22 +159,30 @@ You can stop and restart the container using standard Docker commands:
docker stop duniter
docker start duniter
### Using a keyfile
### Volumes
If the file `/etc/duniter/keys.yml` is found on the container, it is used as keyfile for the node identity. For this file is visible by Duniter, it must be granted appropriate access rights. If the file `keys.yml` is for example on the host in the `~/duniter/conf` directory, here are the commands to execute for it is used:
The container creates 2 Docker volumes. The first one is attached to `/etc/duniter` and contains the Duniter configuration (see the _keyfile_ chapter below). The other one is attached to the Duniter home directory `/var/lib/duniter`. This is the place the Duniter database will be stored.
chown -R 1111:1111 ~/duniter/conf
chmod -R 644 ~/duniter/conf
docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --mount src=~/duniter/conf,dst=/etc/duniter --name duniter duniter/duniter-ts
You can specify where these directories must be mounted. This would be usefull in order for the data to persist even if, for example, you delete your container because you want to get a new version of the image.
> Note: some of the above commands need “root” access, usage of `sudo` may be required.
For example, if you want the database to be stored on a `duniter-db` Docker volume, you may create the container using this command:
### Configuration external storage
docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --mount type=volume,src=duniter-db,dst=/var/lib/duniter --name duniter duniter/duniter
By default, configuration and database are stored on the container. It is however possible to store them on the host computer. For this to be done, folder `/var/lib/duniter` must be shared with appropriate rights. For example, for the data to be recorded in the `~/duniter/data` directory, here are the commands to be executed:
If you prefer the database to be stored on the host directory `~/duniter/data`, you have to be carreful of the rights given to this directory. The commands to be executed are then:
chown -R 1111:1111 ~/duniter/data
docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --mount src=~/duniter/data,dst=/var/lib/duniter --name duniter duniter/duniter-ts
docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --mount type=bind,src=~/duniter/data,dst=/var/lib/duniter --name duniter duniter/duniter
> Note: some of the above commands need “root” access, usage of `sudo` may be required.
### Using a keyfile
If the file `/etc/duniter/keys.yml` is found on the container, it is used as keyfile for the node identity. For this file is visible by Duniter, it must be granted appropriate access rights. If the file `keys.yml` is for example on the host in the `~/duniter/conf` directory, here are the commands to execute for it is used:
chown -R 1111:1111 ~/duniter/conf
chmod -R 644 ~/duniter/conf
docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --mount type=bind,src=~/duniter/conf,dst=/etc/duniter --name duniter duniter/duniter
> Note: some of the above commands need “root” access, usage of `sudo` may be required.
......@@ -281,21 +289,10 @@ Adjustable environment variables for this service are:
# Windows
A _desktop_ version is available for Windows.
1. Go to the [release page](https://git.duniter.org/nodes/typescript/duniter/wikis/Releases) to get a link to the last stable release. You have to download the file with `.exe` extension.
2. Process the installation by a double-click on the downloaded `.exe` file.
<img src="../../../images/wiki/duniter/install/win_fichier.png" width="591" height="39">
> It may occur that the downloaded file misses the `.exe` extension. This is a Windows protection. You have to circumvent it by renaming the file and add `.exe` to the end of the name to be able to execute it.
3. Follow the installation procedure. You basically just need to accept the licence and click "Next" on each step.
<br>
<img src="../../../images/wiki/duniter/install/win_install.png" width="503" height="387">
4. Duniter is now installed, by default it will be launched at the end of the installation. You can launch it in the Windows menus "Start > Programs > Duniter > Duniter".
<br>
<img src="../../../images/wiki/duniter/install/win_programme.png" width="271" height="58">
There is no Windows-specific version anymore.
To deploy a node on a Windows machine, there are two possibilites:
* Use [Docker](#docker)
* Windows Subsystem for Linux (WSL): no instructions available _yet_
# MacOS
......
......@@ -6,5 +6,5 @@ Authors: cgeek
Updating its Duniter node just consists in:
* [reinstall its Duniter node](../install)
* [reinstall its Duniter node](./install)
* restart Duniter to apply the modifications
......@@ -8,7 +8,7 @@ This site is like free software: all its source code is [available](https://gith
You will find on each page in the sidebar a button "*Edit page on GitHub*" or "Edit article on GitHub". It looks like this:
![](../../images/wiki/btn_modifier.png)
![The new edit button](../../images/wiki/btn_modifier.png)
By clicking on it, you will be redirected on the GitHub website which hosts the source code of the site. *You can modify it*.
......
......@@ -8,9 +8,9 @@ Authors: cgeek, galuel
<center id = "license_g1"> [Download License Ğ1 (text format)](../../files/license_g1.txt)</center>
[//]: # (BeginLicense)
<iframe width="100%" height="300px" src="../files/license_g1.txt"></iframe>
[//]: # (EndLicense)
> Once the license is received, read and accepted, the process to become a member of the Ğ1 WoT goes through the creation of an ID (your identifier / nicname) and a pair (private key / public key) [if possible in a secure way] (https://forum.duniter.org/t/recommendations-of-security-before-creating-your-account-g1/1819). The public key becomes an account number that can only be used by the person who owns the private key, which is constructed by another pair (passphrase / password) = private key, which must be carefully kept for oneself.
......
......@@ -19,7 +19,7 @@ If you are registered on our GitLab instance, simply go on the good repositories
Then put a title, and a description about the encountered error:
![]({Filename} /images/contribuer/ticket_github.png)
![Screenshot of a new github issue]({static}/images/contribuer/ticket_github.png)
> **/!\ Do not forget to validate by clicking the "Submit new issue" button!**
......@@ -27,7 +27,7 @@ Then put a title, and a description about the encountered error:
If you're really struggling to create a ticket on GitLab (it's a good opportunity to learn!), You can also [create a topic on our forum](https://forum.duniter.org/):
![]({Filename} /images/contribuer/ticket_forum.png)
![Screenshot of a new topic on the forum]({static}/images/contribuer/ticket_forum.png)
Pleas, make sure you to:
......
#!/usr/bin/env bash
##
# This section should match your Makefile
##
PY=${PY:-python}
PELICAN=${PELICAN:-pelican}
PELICANOPTS=
BASEDIR=$(pwd)
INPUTDIR=$BASEDIR/content
OUTPUTDIR=$BASEDIR/output
CONFFILE=$BASEDIR/pelicanconf.py
###
# Don't change stuff below here unless you are sure
###
SRV_PID=$BASEDIR/srv.pid
PELICAN_PID=$BASEDIR/pelican.pid
function usage(){
echo "usage: $0 (stop) (start) (restart) [port]"
echo "This starts Pelican in debug and reload mode and then launches"
echo "an HTTP server to help site development. It doesn't read"
echo "your Pelican settings, so if you edit any paths in your Makefile"
echo "you will need to edit your settings as well."
exit 3
}
function alive() {
kill -0 $1 >/dev/null 2>&1
}
function shut_down(){
PID=$(cat $SRV_PID)
if [[ $? -eq 0 ]]; then
if alive $PID; then
echo "Stopping HTTP server"
kill $PID
else
echo "Stale PID, deleting"
fi
rm $SRV_PID
else
echo "HTTP server PIDFile not found"
fi
PID=$(cat $PELICAN_PID)
if [[ $? -eq 0 ]]; then
if alive $PID; then
echo "Killing Pelican"
kill $PID
else
echo "Stale PID, deleting"
fi
rm $PELICAN_PID
else
echo "Pelican PIDFile not found"
fi
}
function start_up(){
local port=$1
echo "Starting up Pelican and HTTP server"
shift
$PELICAN --debug --autoreload -r $INPUTDIR -o $OUTPUTDIR -s $CONFFILE $PELICANOPTS &
pelican_pid=$!
echo $pelican_pid > $PELICAN_PID
cd $OUTPUTDIR
$PY -m pelican.server $port &
srv_pid=$!
echo $srv_pid > $SRV_PID
cd $BASEDIR
sleep 1
if ! alive $pelican_pid ; then
echo "Pelican didn't start. Is the Pelican package installed?"
return 1
elif ! alive $srv_pid ; then
echo "The HTTP server didn't start. Is there another service using port" $port "?"
return 1
fi
echo 'Pelican and HTTP server processes now running in background.'
}
###
# MAIN
###
[[ ($# -eq 0) || ($# -gt 2) ]] && usage
port=''
[[ $# -eq 2 ]] && port=$2
if [[ $1 == "stop" ]]; then
shut_down
elif [[ $1 == "restart" ]]; then
shut_down
start_up $port
elif [[ $1 == "start" ]]; then
if ! start_up $port; then
shut_down
fi
else
usage
fi
......@@ -53,6 +53,15 @@ dictionary must be given (but can be empty) in the ``I18N_SUBSITES`` dictionary
}
}
You must also have the following in your pelican configuration
.. code-block:: python
JINJA_ENVIRONMENT = {
'extensions': ['jinja2.ext.i18n'],
}
Default and special overrides
-----------------------------
The settings overrides may contain arbitrary settings, however, there
......
......@@ -12,6 +12,9 @@ import posixpath
from copy import copy
from itertools import chain
from operator import attrgetter
try:
from collections.abc import OrderedDict
except ImportError:
from collections import OrderedDict
from contextlib import contextmanager
from six.moves.urllib.parse import urlparse
......@@ -22,7 +25,10 @@ import locale
from pelican import signals
from pelican.generators import ArticlesGenerator, PagesGenerator
from pelican.settings import configure_settings
try:
from pelican.contents import Draft
except ImportError:
from pelican.contents import Article as Draft
# Global vars
......@@ -353,12 +359,18 @@ def interlink_static_files(generator):
'''Add links to static files in the main site if necessary'''
if generator.settings['STATIC_PATHS'] != []:
return # customized STATIC_PATHS
filenames = generator.context['filenames'] # minimize attr lookup
try: # minimize attr lookup
static_content = generator.context['static_content']
except KeyError:
static_content = generator.context['filenames']
relpath = relpath_to_site(generator.settings['DEFAULT_LANG'], _MAIN_LANG)
for staticfile in _MAIN_STATIC_FILES:
if staticfile.get_relative_source_path() not in filenames:
if staticfile.get_relative_source_path() not in static_content:
staticfile = copy(staticfile) # prevent override in main site
staticfile.override_url = posixpath.join(relpath, staticfile.url)
try:
generator.add_source_path(staticfile, static=True)
except TypeError:
generator.add_source_path(staticfile)
......
......@@ -39,7 +39,7 @@ with local development when ``SITEURL == ''``.
Language buttons showing all available languages, current is active
...................................................................
The ``extra_siteurls`` dictionary is a mapping of all languages to the
The ``lang_subsites`` dictionary is a mapping of all languages to the
``SITEURL`` of the respective (sub-)sites. This template sets the
language of the current (sub-)site as active.
......
......@@ -6,11 +6,13 @@ Localizing themes with Jinja2
---------------------
To enable the |ext| extension in your templates, you must add it to
``JINJA_EXTENSIONS`` in your Pelican configuration
``JINJA_ENVIRONMENT`` in your Pelican configuration
.. code-block:: python
JINJA_EXTENSIONS = ['jinja2.ext.i18n', ...]
JINJA_ENVIRONMENT = {
'extensions': ['jinja2.ext.i18n', ...]
}
Then follow the `Jinja2 templating documentation for the I18N plugin
<http://jinja.pocoo.org/docs/templates/#i18n>`_ to make your templates
......
<!DOCTYPE html>
<html lang="en">
<head>
<title>Welcome to our Testing site</title>
<title>Testing site - An untranslated article</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link href="http://example.com/test/feeds_all.atom.xml" type="application/atom+xml" rel="alternate" title="Testing site Full Atom Feed" />
<link rel="stylesheet" href="http://example.com/test/theme/style.css" />
</head>
<body id="index" class="home">
<header id="banner" class="body">
<h1><a href="http://example.com/test/">Testing site <strong></strong></a></h1>
<h1><a href="http://example.com/test/">Testing site</a></h1>
</header><!-- /#banner -->
<nav id="menu"><ul>
<li><a href="http://example.com/test/pages/untranslated-page.html">Untranslated page</a></li>
<li class="active"><a href="http://example.com/test/category/misc.html">misc</a></li>
</ul></nav><!-- /#menu -->
<section id="content" class="body">
<header>
......@@ -32,6 +36,9 @@
<address class="vcard author">
By <a class="url fn" href="http://example.com/test/author/the-tester.html">The Tester</a>
</address>
<div class="category">
Category: <a href="http://example.com/test/category/misc.html">misc</a>
</div>
</footer><!-- /.post-info -->
<div class="entry-content">
<p>An article without a translation.
......@@ -41,8 +48,8 @@ Here is a link to an <a class="reference external" href="http://example.com/test
</section>
<footer id="contentinfo" class="body">
<address id="about" class="vcard body">
Proudly powered by <a href="http://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
Proudly powered by <a href="https://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="https://www.python.org/">Python</a>.
</address><!-- /#about -->
</footer><!-- /#contentinfo -->
</body>
......
<!DOCTYPE html>
<html lang="cz">
<html lang="en">
<head>
<title>Welcome to our Testovací stránka</title>
<title>Testovací stránka - An untranslated article</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link href="http://example.com/test/feeds_all.atom.xml" type="application/atom+xml" rel="alternate" title="Testovací stránka Full Atom Feed" />
<link rel="stylesheet" href="http://example.com/test/cz/../theme/style.css" />
</head>
<body id="index" class="home">
<header id="banner" class="body">
<h1><a href="http://example.com/test/cz/">Testovací stránka <strong></strong></a></h1>
<h1><a href="http://example.com/test/cz/">Testovací stránka</a></h1>
</header><!-- /#banner -->
<nav id="menu"><ul>
<li class="active"><a href="http://example.com/test/cz/category/misc.html">misc</a></li>
</ul></nav><!-- /#menu -->
<section id="content" class="body">
<header>
......@@ -31,17 +35,20 @@
<address class="vcard author">
By <a class="url fn" href="http://example.com/test/cz/author/test-testovic.html">Test Testovič</a>
</address>
<div class="category">
Category: <a href="http://example.com/test/cz/category/misc.html">misc</a>
</div>
</footer><!-- /.post-info -->
<div class="entry-content">
<p>An article without a translation.
Here is a link to an <a class="reference external" href="http://example.com/test/cz/../pages/untranslated-page.html">untranslated page</a></p>
Here is a link to an <a class="reference external" href="http://example.com/test/pages/untranslated-page.html">untranslated page</a></p>
</div><!-- /.entry-content -->
</section>
<footer id="contentinfo" class="body">
<address id="about" class="vcard body">
Proudly powered by <a href="http://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
Proudly powered by <a href="https://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="https://www.python.org/">Python</a>.
</address><!-- /#about -->
</footer><!-- /#contentinfo -->
</body>
......
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Testovací stránka</title><link href="http://example.com/test/cz/" rel="alternate"></link><link href="http://example.com/test/feeds_all.atom.xml" rel="self"></link><id>http://example.com/test/cz/</id><updated>2014-09-15T00:00:00+00:00</updated><entry><title>Přeložený článek</title><link href="http://example.com/test/cz/translated-article.html" rel="alternate"></link><published>2014-09-15T00:00:00+00:00</published><updated>2014-09-15T00:00:00+00:00</updated><author><name>Test Testovič</name></author><id>tag:example.com,2014-09-15:/test/cz/translated-article.html</id><summary type="html">&lt;p&gt;Jednoduchý článek s překlady.
Zde je odkaz na &lt;a class="reference external" href="http://example.com/test/cz/../images/img.png"&gt;nějaký obrázek&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Jednoduchý článek s překlady.
Zde je odkaz na &lt;a class="reference external" href="http://example.com/test/cz/../images/img.png"&gt;nějaký obrázek&lt;/a&gt;.&lt;/p&gt;
</content></entry><entry><title>Ein übersetzter Artikel</title><link href="http://example.com/test/cz/../de/translated-article.html" rel="alternate"></link><published>2014-09-14T00:00:00+00:00</published><updated>2014-09-14T00:00:00+00:00</updated><author><name>Test Testovič</name></author><id>tag:example.com,2014-09-14:/test/cz/../de/translated-article.html</id><summary type="html">&lt;p&gt;Ein einfacher Artikel mit einer Übersetzung.
Hier ist ein Link zur &lt;a class="reference external" href="http://example.com/test/cz/../images/img.png"&gt;einigem Bild&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Ein einfacher Artikel mit einer Übersetzung.
Hier ist ein Link zur &lt;a class="reference external" href="http://example.com/test/cz/../images/img.png"&gt;einigem Bild&lt;/a&gt;.&lt;/p&gt;
</content></entry><entry><title>A translated article</title><link href="http://example.com/test/cz/../translated-article.html" rel="alternate"></link><published>2014-09-13T00:00:00+00:00</published><updated>2014-09-13T00:00:00+00:00</updated><author><name>Test Testovič</name></author><id>tag:example.com,2014-09-13:/test/cz/../translated-article.html</id><summary type="html">&lt;p&gt;A simple article with a translation.
Here is a link to &lt;a class="reference external" href="http://example.com/test/cz/../images/img.png"&gt;some image&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;A simple article with a translation.
Here is a link to &lt;a class="reference external" href="http://example.com/test/cz/../images/img.png"&gt;some image&lt;/a&gt;.&lt;/p&gt;
</content></entry><entry><title>An untranslated article</title><link href="http://example.com/test/cz/an-untranslated-article-en.html" rel="alternate"></link><published>2014-07-14T00:00:00+00:00</published><updated>2014-07-14T00:00:00+00:00</updated><author><name>Test Testovič</name></author><id>tag:example.com,2014-07-14:/test/cz/an-untranslated-article-en.html</id><summary type="html">&lt;p&gt;An article without a translation.
Here is a link to an &lt;a class="reference external" href="http://example.com/test/cz/../pages/untranslated-page.html"&gt;untranslated page&lt;/a&gt;&lt;/p&gt;
</summary><content type="html">&lt;p&gt;An article without a translation.
Here is a link to an &lt;a class="reference external" href="http://example.com/test/cz/../pages/untranslated-page.html"&gt;untranslated page&lt;/a&gt;&lt;/p&gt;
</content></entry></feed>
\ No newline at end of file
<feed xmlns="http://www.w3.org/2005/Atom"><title>Testovací stránka</title><link href="http://example.com/test/cz/" rel="alternate"></link><link href="http://example.com/test/feeds_all.atom.xml" rel="self"></link><id>http://example.com/test/cz/</id><updated>2014-09-15T00:00:00+00:00</updated><entry><title>Přeložený článek</title><link href="http://example.com/test/cz/translated-article.html" rel="alternate"></link><published>2014-09-15T00:00:00+00:00</published><updated>2014-09-15T00:00:00+00:00</updated><author><name>Test Testovič</name></author><id>tag:example.com,2014-09-15:/test/cz/translated-article.html</id><content type="html">&lt;p&gt;Jednoduchý článek s překlady.
Zde je odkaz na &lt;a class="reference external" href="http://example.com/test/images/img.png"&gt;nějaký obrázek&lt;/a&gt;.&lt;/p&gt;
</content><category term="misc"></category></entry><entry><title>Ein übersetzter Artikel</title><link href="http://example.com/test/de/translated-article.html" rel="alternate"></link><published>2014-09-14T00:00:00+00:00</published><updated>2014-09-14T00:00:00+00:00</updated><author><name>Test Testovič</name></author><id>tag:example.com,2014-09-14:/test/de/translated-article.html</id><content type="html">&lt;p&gt;Ein einfacher Artikel mit einer Übersetzung.
Hier ist ein Link zur &lt;a class="reference external" href="http://example.com/test/images/img.png"&gt;einigem Bild&lt;/a&gt;.&lt;/p&gt;
</content><category term="misc"></category></entry><entry><title>A translated article</title><link href="http://example.com/test/translated-article.html" rel="alternate"></link><published>2014-09-13T00:00:00+00:00</published><updated>2014-09-13T00:00:00+00:00</updated><author><name>Test Testovič</name></author><id>tag:example.com,2014-09-13:/test/translated-article.html</id><content type="html">&lt;p&gt;A simple article with a translation.
Here is a link to &lt;a class="reference external" href="http://example.com/test/images/img.png"&gt;some image&lt;/a&gt;.&lt;/p&gt;
</content><category term="misc"></category></entry><entry><title>An untranslated article</title><link href="http://example.com/test/cz/an-untranslated-article-en.html" rel="alternate"></link><published>2014-07-14T00:00:00+00:00</published><updated>2014-07-14T00:00:00+00:00</updated><author><name>Test Testovič</name></author><id>tag:example.com,2014-07-14:/test/cz/an-untranslated-article-en.html</id><content type="html">&lt;p&gt;An article without a translation.
Here is a link to an &lt;a class="reference external" href="http://example.com/test/pages/untranslated-page.html"&gt;untranslated page&lt;/a&gt;&lt;/p&gt;
</content><category term="misc"></category></entry></feed>
\ No newline at end of file
......@@ -3,6 +3,7 @@
<head>
<title>Welcome to our Testovací stránka</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link href="http://example.com/test/feeds_all.atom.xml" type="application/atom+xml" rel="alternate" title="Testovací stránka Full Atom Feed" />
<link rel="stylesheet" href="http://example.com/test/cz/../theme/style.css" />
......@@ -10,9 +11,10 @@
<body id="index" class="home">
<header id="banner" class="body">
<h1><a href="http://example.com/test/cz/">Testovací stránka <strong></strong></a></h1>
<h1><a href="http://example.com/test/cz/">Testovací stránka</a></h1>
</header><!-- /#banner -->
<nav id="menu"><ul>
<li><a href="http://example.com/test/cz/category/misc.html">misc</a></li>
</ul></nav><!-- /#menu -->
<section id="content">
<h2>All articles</h2>
......@@ -27,7 +29,7 @@
</address>
</footer><!-- /.post-info -->
<div class="entry-content"> <p>Jednoduchý článek s překlady.
Zde je odkaz na <a class="reference external" href="http://example.com/test/cz/../images/img.png">nějaký obrázek</a>.</p>
Zde je odkaz na <a class="reference external" href="http://example.com/test/images/img.png">nějaký obrázek</a>.</p>
</div><!-- /.entry-content -->
</article></li>
<li><article class="hentry">
......@@ -39,15 +41,15 @@ Zde je odkaz na <a class="reference external" href="http://example.com/test/cz/.
</address>
</footer><!-- /.post-info -->
<div class="entry-content"> <p>An article without a translation.
Here is a link to an <a class="reference external" href="http://example.com/test/cz/../pages/untranslated-page.html">untranslated page</a></p>
Here is a link to an <a class="reference external" href="http://example.com/test/pages/untranslated-page.html">untranslated page</a></p>
</div><!-- /.entry-content -->
</article></li>
</ol><!-- /#posts-list -->
</section><!-- /#content -->
<footer id="contentinfo" class="body">
<address id="about" class="vcard body">
Proudly powered by <a href="http://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
Proudly powered by <a href="https://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="https://www.python.org/">Python</a>.
</address><!-- /#about -->
</footer><!-- /#contentinfo -->
</body>
......
<!DOCTYPE html>
<html lang="cz">
<head>
<title>404 stránka</title>
<title>Testovací stránka - 404 stránka</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link href="http://example.com/test/feeds_all.atom.xml" type="application/atom+xml" rel="alternate" title="Testovací stránka Full Atom Feed" />
<link rel="stylesheet" href="http://example.com/test/cz/../theme/style.css" />
<link rel="alternate" hreflang="de" href="http://example.com/test/cz/../de/pages/404.html">
<link rel="alternate" hreflang="en" href="http://example.com/test/cz/../pages/404.html">
</head>
<body id="index" class="home">
<header id="banner" class="body">
<h1><a href="http://example.com/test/cz/">Testovací stránka <strong></strong></a></h1>
<h1><a href="http://example.com/test/cz/">Testovací stránka</a></h1>
</header><!-- /#banner -->
<nav id="menu"><ul>
<li><a href="http://example.com/test/cz/category/misc.html">misc</a></li>
</ul></nav><!-- /#menu -->
<h1>404 stránka</h1>
Translations:
<a href="http://example.com/test/cz/../de/pages/404.html">de</a>
<a href="http://example.com/test/cz/../pages/404.html">en</a>
<a href="http://example.com/test/cz/../de/pages/404.html" hreflang="de">de</a>
<a href="http://example.com/test/cz/../pages/404.html" hreflang="en">en</a>
<p>Jednoduchá 404 stránka.</p>
......@@ -25,8 +32,8 @@
<footer id="contentinfo" class="body">
<address id="about" class="vcard body">
Proudly powered by <a href="http://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
Proudly powered by <a href="https://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="https://www.python.org/">Python</a>.
</address><!-- /#about -->
</footer><!-- /#contentinfo -->
</body>
......
<!DOCTYPE html>
<html lang="cz">
<head>
<title>Welcome to our Testovací stránka</title>
<title>Testovací stránka - Přeložený článek</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link href="http://example.com/test/feeds_all.atom.xml" type="application/atom+xml" rel="alternate" title="Testovací stránka Full Atom Feed" />
<link rel="stylesheet" href="http://example.com/test/cz/../theme/style.css" />
<link rel="alternate" hreflang="de" href="http://example.com/test/cz/../de/translated-article.html">
<link rel="alternate" hreflang="en" href="http://example.com/test/cz/../translated-article.html">
</head>
<body id="index" class="home">
<header id="banner" class="body">
<h1><a href="http://example.com/test/cz/">Testovací stránka <strong></strong></a></h1>
<h1><a href="http://example.com/test/cz/">Testovací stránka</a></h1>
</header><!-- /#banner -->
<nav id="menu"><ul>
<li class="active"><a href="http://example.com/test/cz/category/misc.html">misc</a></li>
</ul></nav><!-- /#menu -->
<section id="content" class="body">
<header>
......@@ -23,8 +30,8 @@
<a href="http://example.com/test/cz/translated-article.html" rel="bookmark"
title="Permalink to Přeložený článek">Přeložený článek</a></h2>
Translations:
<a href="http://example.com/test/cz/../de/translated-article.html">de</a>
<a href="http://example.com/test/cz/../translated-article.html">en</a>
<a href="http://example.com/test/cz/../de/translated-article.html" hreflang="de">de</a>
<a href="http://example.com/test/cz/../translated-article.html" hreflang="en">en</a>
</header>
<footer class="post-info">
......@@ -34,17 +41,20 @@
<address class="vcard author">
By <a class="url fn" href="http://example.com/test/cz/author/test-testovic.html">Test Testovič</a>
</address>
<div class="category">
Category: <a href="http://example.com/test/cz/category/misc.html">misc</a>
</div>
</footer><!-- /.post-info -->
<div class="entry-content">
<p>Jednoduchý článek s překlady.
Zde je odkaz na <a class="reference external" href="http://example.com/test/cz/../images/img.png">nějaký obrázek</a>.</p>
Zde je odkaz na <a class="reference external" href="http://example.com/test/images/img.png">nějaký obrázek</a>.</p>
</div><!-- /.entry-content -->
</section>
<footer id="contentinfo" class="body">
<address id="about" class="vcard body">
Proudly powered by <a href="http://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
Proudly powered by <a href="https://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="https://www.python.org/">Python</a>.
</address><!-- /#about -->
</footer><!-- /#contentinfo -->
</body>
......
<!DOCTYPE html>
<html lang="de">
<html lang="en">
<head>
<title>Willkommen Sie zur unserer Testseite</title>
<title>Testseite - An untranslated article</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<link href="http://example.com/test/feeds_all.atom.xml" type="application/atom+xml" rel="alternate" title="Testseite Full Atom Feed" />
<link rel="stylesheet" href="http://example.com/test/de/../theme/style.css" />
</head>
<body id="index" class="home">
<header id="banner" class="body">
<h1><a href="http://example.com/test/de/">Testseite <strong></strong></a></h1>
<h1><a href="http://example.com/test/de/">Testseite</a></h1>
</header><!-- /#banner -->
<nav id="menu"><ul>
<li class="active"><a href="http://example.com/test/de/category/misc.html">misc</a></li>
</ul></nav><!-- /#menu -->
<section id="content" class="body">
<header>
......@@ -26,11 +30,14 @@
</header>
<footer class="post-info">
<time class="published" datetime="2014-07-14T00:00:00+00:00">
Mon 14 July 2014
Mo 14 Juli 2014
</time>
<address class="vcard author">
By <a class="url fn" href="http://example.com/test/de/author/der-tester.html">Der Tester</a>
</address>
<div class="category">
Category: <a href="http://example.com/test/de/category/misc.html">misc</a>
</div>
</footer><!-- /.post-info -->
<div class="entry-content">
<p>An article without a translation.
......@@ -40,8 +47,8 @@ Here is a link to an <a class="reference external" href="http://example.com/test
</section>
<footer id="contentinfo" class="body">
<address id="about" class="vcard body">
Proudly powered by <a href="http://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
Proudly powered by <a href="https://getpelican.com/">Pelican</a>,
which takes great advantage of <a href="https://www.python.org/">Python</a>.
</address><!-- /#about -->
</footer><!-- /#contentinfo -->
</body>
......
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Testseite</title><link href="http://example.com/test/de/" rel="alternate"></link><link href="http://example.com/test/feeds_all.atom.xml" rel="self"></link><id>http://example.com/test/de/</id><updated>2014-09-15T00:00:00+00:00</updated><entry><title>Přeložený článek</title><link href="http://example.com/test/de/../cz/translated-article.html" rel="alternate"></link><published>2014-09-15T00:00:00+00:00</published><updated>2014-09-15T00:00:00+00:00</updated><author><name>Der Tester</name></author><id>tag:example.com,2014-09-15:/test/de/../cz/translated-article.html</id><summary type="html">&lt;p&gt;Jednoduchý článek s překlady.
Zde je odkaz na &lt;a class="reference external" href="http://example.com/test/de/../images/img.png"&gt;nějaký obrázek&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Jednoduchý článek s překlady.
Zde je odkaz na &lt;a class="reference external" href="http://example.com/test/de/../images/img.png"&gt;nějaký obrázek&lt;/a&gt;.&lt;/p&gt;
</content></entry><entry><title>Ein übersetzter Artikel</title><link href="http://example.com/test/de/translated-article.html" rel="alternate"></link><published>2014-09-14T00:00:00+00:00</published><updated>2014-09-14T00:00:00+00:00</updated><author><name>Der Tester</name></author><id>tag:example.com,2014-09-14:/test/de/translated-article.html</id><summary type="html">&lt;p&gt;Ein einfacher Artikel mit einer Übersetzung.
Hier ist ein Link zur &lt;a class="reference external" href="http://example.com/test/de/../images/img.png"&gt;einigem Bild&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Ein einfacher Artikel mit einer Übersetzung.
Hier ist ein Link zur &lt;a class="reference external" href="http://example.com/test/de/../images/img.png"&gt;einigem Bild&lt;/a&gt;.&lt;/p&gt;
</content></entry><entry><title>A translated article</title><link href="http://example.com/test/de/../translated-article.html" rel="alternate"></link><published>2014-09-13T00:00:00+00:00</published><updated>2014-09-13T00:00:00+00:00</updated><author><name>Der Tester</name></author><id>tag:example.com,2014-09-13:/test/de/../translated-article.html</id><summary type="html">&lt;p&gt;A simple article with a translation.
Here is a link to &lt;a class="reference external" href="http://example.com/test/de/../images/img.png"&gt;some image&lt;/a&gt;.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;A simple article with a translation.
Here is a link to &lt;a class="reference external" href="http://example.com/test/de/../images/img.png"&gt;some image&lt;/a&gt;.&lt;/p&gt;
</content></entry></feed>
\ No newline at end of file
<feed xmlns="http://www.w3.org/2005/Atom"><title>Testseite</title><link href="http://example.com/test/de/" rel="alternate"></link><link href="http://example.com/test/feeds_all.atom.xml" rel="self"></link><id>http://example.com/test/de/</id><updated>2014-09-15T00:00:00+00:00</updated><entry><title>Přeložený článek</title><link href="http://example.com/test/cz/translated-article.html" rel="alternate"></link><published>2014-09-15T00:00:00+00:00</published><updated>2014-09-15T00:00:00+00:00</updated><author><name>Der Tester</name></author><id>tag:example.com,2014-09-15:/test/cz/translated-article.html</id><content type="html">&lt;p&gt;Jednoduchý článek s překlady.
Zde je odkaz na &lt;a class="reference external" href="http://example.com/test/images/img.png"&gt;nějaký obrázek&lt;/a&gt;.&lt;/p&gt;
</content><category term="misc"></category></entry><entry><title>Ein übersetzter Artikel</title><link href="http://example.com/test/de/translated-article.html" rel="alternate"></link><published>2014-09-14T00:00:00+00:00</published><updated>2014-09-14T00:00:00+00:00</updated><author><name>Der Tester</name></author><id>tag:example.com,2014-09-14:/test/de/translated-article.html</id><content type="html">&lt;p&gt;Ein einfacher Artikel mit einer Übersetzung.
Hier ist ein Link zur &lt;a class="reference external" href="http://example.com/test/images/img.png"&gt;einigem Bild&lt;/a&gt;.&lt;/p&gt;
</content><category term="misc"></category></entry><entry><title>A translated article</title><link href="http://example.com/test/translated-article.html" rel="alternate"></link><published>2014-09-13T00:00:00+00:00</published><updated>2014-09-13T00:00:00+00:00</updated><author><name>Der Tester</name></author><id>tag:example.com,2014-09-13:/test/translated-article.html</id><content type="html">&lt;p&gt;A simple article with a translation.
Here is a link to &lt;a class="reference external" href="http://example.com/test/images/img.png"&gt;some image&lt;/a&gt;.&lt;/p&gt;
</content><category term="misc"></category></entry></feed>
\ No newline at end of file