blog

Blog update: New models and translations

I've added a couple of new models to futureproof my blog for the coming years. It takes the different languages into account, and now also understands that not every language will be available.
Furthermore, the style is updated to be more reader-friendly, and the articles themselves can now use the DTL, which really increases the flexibility I have with writing blog articles.
And of course, the new message files are added to the tracker as well, to be updated so all the different languages of my website are supported.

Author
Maarten Vangeneugden
Date
March 6, 2022, 9:54 a.m.
Hash
28dde4db291df9bc300c380917277ebcff437c08
Parent
210bc6f31148748ba94e33e6cd484a89b00a5021
Modified files
.gitignore
locale/af/LC_MESSAGES/django.po
locale/de/LC_MESSAGES/django.po
locale/eo/LC_MESSAGES/django.po
locale/es/LC_MESSAGES/django.po
locale/fr/LC_MESSAGES/django.po
locale/nl/LC_MESSAGES/django.po
migrations/0007_auto_20220220_1754.py
migrations/0008_alter_article_file_path.py
migrations/0009_alter_article_file_path.py
migrations/0010_auto_20220220_1900.py
migrations/0011_auto_20220220_1906.py
models.py
templates/blog/locale/af/LC_MESSAGES/django.po
templates/blog/locale/de/LC_MESSAGES/django.po
templates/blog/locale/eo/LC_MESSAGES/django.po
templates/blog/locale/es/LC_MESSAGES/django.po
templates/blog/locale/fr/LC_MESSAGES/django.po
templates/blog/locale/nl/LC_MESSAGES/django.po
templates/blog/post.djhtml

.gitignore

1 addition and 0 deletions.

View changes Hide changes
1
1
migrations/__pycache__/*
2
2
*.mo
+
3
*.mo

locale/af/LC_MESSAGES/django.po

27 additions and 0 deletions.

View changes Hide changes
+
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+
2
# This file is distributed under the same license as the PACKAGE package.
+
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+
4
#
+
5
#, fuzzy
+
6
msgid ""
+
7
msgstr ""
+
8
"Project-Id-Version: PACKAGE VERSION\n"
+
9
"Report-Msgid-Bugs-To: \n"
+
10
"POT-Creation-Date: 2022-03-06 07:38+0000\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+
13
"Language-Team: LANGUAGE <LL@li.org>\n"
+
14
"Language: \n"
+
15
"MIME-Version: 1.0\n"
+
16
"Content-Type: text/plain; charset=UTF-8\n"
+
17
"Content-Transfer-Encoding: 8bit\n"
+
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
19
+
20
#: blog/views.py:46
+
21
msgid "Notepad from a student"
+
22
msgstr ""
+
23
+
24
#: blog/views.py:144
+
25
msgid "Weekly-archief"
+
26
msgstr ""
+
27

locale/de/LC_MESSAGES/django.po

3 additions and 15 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2021-11-24 14:00+0100\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: blog/views.py:23
21
-
msgid "Back to main page"
22
-
msgstr ""
23
-
24
-
#: blog/views.py:24
25
-
msgid "Contact"
26
-
msgstr ""
27
-
28
-
#: blog/views.py:26
29
-
msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs."
30
-
msgstr ""
31
-
32
-
#: blog/views.py:87
33
-
msgid "Notepad from a student"
+
21
msgid "Notepad from a student"
34
22
msgstr ""
35
23
36
24
#: blog/views.py:186
37
-
msgid "Weekly-archief"
+
25
msgid "Weekly-archief"
38
26
msgstr ""
39
27

locale/eo/LC_MESSAGES/django.po

27 additions and 0 deletions.

View changes Hide changes
+
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+
2
# This file is distributed under the same license as the PACKAGE package.
+
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+
4
#
+
5
#, fuzzy
+
6
msgid ""
+
7
msgstr ""
+
8
"Project-Id-Version: PACKAGE VERSION\n"
+
9
"Report-Msgid-Bugs-To: \n"
+
10
"POT-Creation-Date: 2022-03-06 07:38+0000\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+
13
"Language-Team: LANGUAGE <LL@li.org>\n"
+
14
"Language: \n"
+
15
"MIME-Version: 1.0\n"
+
16
"Content-Type: text/plain; charset=UTF-8\n"
+
17
"Content-Transfer-Encoding: 8bit\n"
+
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
19
+
20
#: blog/views.py:46
+
21
msgid "Notepad from a student"
+
22
msgstr ""
+
23
+
24
#: blog/views.py:144
+
25
msgid "Weekly-archief"
+
26
msgstr ""
+
27

locale/es/LC_MESSAGES/django.po

3 additions and 15 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2021-11-24 14:00+0100\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: blog/views.py:23
21
-
msgid "Back to main page"
22
-
msgstr ""
23
-
24
-
#: blog/views.py:24
25
-
msgid "Contact"
26
-
msgstr ""
27
-
28
-
#: blog/views.py:26
29
-
msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs."
30
-
msgstr ""
31
-
32
-
#: blog/views.py:87
33
-
msgid "Notepad from a student"
+
21
msgid "Notepad from a student"
34
22
msgstr ""
35
23
36
24
#: blog/views.py:186
37
-
msgid "Weekly-archief"
+
25
msgid "Weekly-archief"
38
26
msgstr ""
39
27

locale/fr/LC_MESSAGES/django.po

17 additions and 19 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2021-11-24 14:00+0100\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
19
19
20
20
#: blog/views.py:23
21
-
#, fuzzy
22
-
#| msgid "Blog main page"
23
-
msgid "Back to main page"
24
-
msgstr "Blog // Page principal"
25
-
26
-
#: blog/views.py:24
27
-
msgid "Contact"
28
-
msgstr "Contact"
29
-
30
-
#: blog/views.py:26
31
-
msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs."
32
-
msgstr ""
33
-
"Blog personnel de Maarten, avec des sprinkles et un cuillerée des bogues "
34
-
"sains."
35
-
36
-
#: blog/views.py:87
37
-
msgid "Notepad from a student"
+
21
msgid "Notepad from a student"
38
22
msgstr "Bloc-notes d'un étudiant"
39
23
40
24
#: blog/views.py:186
41
-
msgid "Weekly-archief"
+
25
msgid "Weekly-archief"
42
26
msgstr ""
43
27
+
28
#, fuzzy
+
29
#~| msgid "Blog main page"
+
30
#~ msgid "Back to main page"
+
31
#~ msgstr "Blog // Page principal"
+
32
+
33
#~ msgid "Contact"
+
34
#~ msgstr "Contact"
+
35
+
36
#~ msgid ""
+
37
#~ "Maarten's personal blog, with sprinkles and a dollop of healthy bugs."
+
38
#~ msgstr ""
+
39
#~ "Blog personnel de Maarten, avec des sprinkles et un cuillerée des bogues "
+
40
#~ "sains."
+
41

locale/nl/LC_MESSAGES/django.po

17 additions and 19 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
msgid ""
6
6
msgstr ""
7
7
"Project-Id-Version: \n"
8
8
"Report-Msgid-Bugs-To: \n"
9
9
"POT-Creation-Date: 2021-11-24 14:00+0100\n"
10
-
"PO-Revision-Date: 2021-10-30 16:10+0200\n"
+
10
"PO-Revision-Date: 2021-10-30 16:10+0200\n"
11
11
"Last-Translator: \n"
12
12
"Language-Team: \n"
13
13
"Language: nl\n"
14
14
"MIME-Version: 1.0\n"
15
15
"Content-Type: text/plain; charset=UTF-8\n"
16
16
"Content-Transfer-Encoding: 8bit\n"
17
17
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
18
"X-Generator: Poedit 3.0\n"
19
19
20
20
#: blog/views.py:23
21
-
#, fuzzy
22
-
#| msgid "Blog main page"
23
-
msgid "Back to main page"
24
-
msgstr "Blog // Hoofdpagina"
25
-
26
-
#: blog/views.py:24
27
-
msgid "Contact"
28
-
msgstr "Contact"
29
-
30
-
#: blog/views.py:26
31
-
msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs."
32
-
msgstr ""
33
-
"Maartens persoonlijke blog, met sprinkeltjes en een doperwtje aan gezonde "
34
-
"bugs."
35
-
36
-
#: blog/views.py:87
37
-
msgid "Notepad from a student"
+
21
msgid "Notepad from a student"
38
22
msgstr "Studentikoos kladblok"
39
23
40
24
#: blog/views.py:186
41
-
msgid "Weekly-archief"
+
25
msgid "Weekly-archief"
42
26
msgstr "Weekly-archief"
43
27
+
28
#, fuzzy
+
29
#~| msgid "Blog main page"
+
30
#~ msgid "Back to main page"
+
31
#~ msgstr "Blog // Hoofdpagina"
+
32
+
33
#~ msgid "Contact"
+
34
#~ msgstr "Contact"
+
35
+
36
#~ msgid ""
+
37
#~ "Maarten's personal blog, with sprinkles and a dollop of healthy bugs."
+
38
#~ msgstr ""
+
39
#~ "Maartens persoonlijke blog, met sprinkeltjes en een doperwtje aan gezonde "
+
40
#~ "bugs."
+
41

migrations/0007_auto_20220220_1754.py

115 additions and 0 deletions.

View changes Hide changes
+
1
+
2
from django.db import migrations, models
+
3
import django.db.models.deletion
+
4
+
5
+
6
class Migration(migrations.Migration):
+
7
+
8
    dependencies = [
+
9
        ('blog', '0006_auto_20180409_2128'),
+
10
    ]
+
11
+
12
    operations = [
+
13
        migrations.RemoveField(
+
14
            model_name='post',
+
15
            name='dutch_file',
+
16
        ),
+
17
        migrations.RemoveField(
+
18
            model_name='post',
+
19
            name='english_file',
+
20
        ),
+
21
        migrations.RemoveField(
+
22
            model_name='post',
+
23
            name='french_file',
+
24
        ),
+
25
        migrations.RemoveField(
+
26
            model_name='post',
+
27
            name='german_file',
+
28
        ),
+
29
        migrations.RemoveField(
+
30
            model_name='post',
+
31
            name='slug_de',
+
32
        ),
+
33
        migrations.RemoveField(
+
34
            model_name='post',
+
35
            name='slug_en',
+
36
        ),
+
37
        migrations.RemoveField(
+
38
            model_name='post',
+
39
            name='slug_es',
+
40
        ),
+
41
        migrations.RemoveField(
+
42
            model_name='post',
+
43
            name='slug_fr',
+
44
        ),
+
45
        migrations.RemoveField(
+
46
            model_name='post',
+
47
            name='slug_nl',
+
48
        ),
+
49
        migrations.RemoveField(
+
50
            model_name='post',
+
51
            name='spanish_file',
+
52
        ),
+
53
        migrations.AddField(
+
54
            model_name='comment',
+
55
            name='reaction_to',
+
56
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.comment'),
+
57
        ),
+
58
        migrations.AddField(
+
59
            model_name='comment',
+
60
            name='visible',
+
61
            field=models.BooleanField(default=True),
+
62
        ),
+
63
        migrations.AddField(
+
64
            model_name='post',
+
65
            name='title_af',
+
66
            field=models.CharField(blank=True, max_length=64),
+
67
        ),
+
68
        migrations.AddField(
+
69
            model_name='post',
+
70
            name='title_eo',
+
71
            field=models.CharField(blank=True, max_length=64),
+
72
        ),
+
73
        migrations.AlterField(
+
74
            model_name='comment',
+
75
            name='date',
+
76
            field=models.DateTimeField(),
+
77
        ),
+
78
        migrations.AlterField(
+
79
            model_name='comment',
+
80
            name='name',
+
81
            field=models.CharField(blank=True, max_length=64),
+
82
        ),
+
83
        migrations.AlterField(
+
84
            model_name='comment',
+
85
            name='text',
+
86
            field=models.TextField(max_length=10000),
+
87
        ),
+
88
        migrations.AlterField(
+
89
            model_name='post',
+
90
            name='published',
+
91
            field=models.DateTimeField(),
+
92
        ),
+
93
        migrations.AlterField(
+
94
            model_name='post',
+
95
            name='title_en',
+
96
            field=models.CharField(max_length=64),
+
97
        ),
+
98
        migrations.AlterField(
+
99
            model_name='post',
+
100
            name='title_nl',
+
101
            field=models.CharField(max_length=64),
+
102
        ),
+
103
        migrations.CreateModel(
+
104
            name='Article',
+
105
            fields=[
+
106
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+
107
                ('visible', models.BooleanField(default=True)),
+
108
                ('language_code', models.CharField(choices=[('af', 'Afrikaans'), ('fr-be', 'Français (Belgique)'), ('nl', 'Nederlands'), ('eo', 'Esperanto'), ('nl-be', 'Vlaams'), ('fr', 'Français'), ('de', 'Deutsch'), ('es', 'Español')], max_length=16)),
+
109
                ('file_path', models.FilePathField(path='/srv/django/website/media/blog/articles/')),
+
110
                ('slug', models.SlugField(allow_unicode=True)),
+
111
                ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.post')),
+
112
            ],
+
113
        ),
+
114
    ]
+
115

migrations/0008_alter_article_file_path.py

18 additions and 0 deletions.

View changes Hide changes
+
1
+
2
from django.db import migrations, models
+
3
+
4
+
5
class Migration(migrations.Migration):
+
6
+
7
    dependencies = [
+
8
        ('blog', '0007_auto_20220220_1754'),
+
9
    ]
+
10
+
11
    operations = [
+
12
        migrations.AlterField(
+
13
            model_name='article',
+
14
            name='file_path',
+
15
            field=models.FilePathField(allow_folders=True, path='/srv/django/website/media/blog/articles/'),
+
16
        ),
+
17
    ]
+
18

migrations/0009_alter_article_file_path.py

18 additions and 0 deletions.

View changes Hide changes
+
1
+
2
from django.db import migrations, models
+
3
+
4
+
5
class Migration(migrations.Migration):
+
6
+
7
    dependencies = [
+
8
        ('blog', '0008_alter_article_file_path'),
+
9
    ]
+
10
+
11
    operations = [
+
12
        migrations.AlterField(
+
13
            model_name='article',
+
14
            name='file_path',
+
15
            field=models.FilePathField(path='/srv/django/website/media/blog/articles/'),
+
16
        ),
+
17
    ]
+
18

migrations/0010_auto_20220220_1900.py

23 additions and 0 deletions.

View changes Hide changes
+
1
+
2
from django.db import migrations, models
+
3
+
4
+
5
class Migration(migrations.Migration):
+
6
+
7
    dependencies = [
+
8
        ('blog', '0009_alter_article_file_path'),
+
9
    ]
+
10
+
11
    operations = [
+
12
        migrations.AddField(
+
13
            model_name='article',
+
14
            name='title',
+
15
            field=models.CharField(blank=True, max_length=64),
+
16
        ),
+
17
        migrations.AlterField(
+
18
            model_name='article',
+
19
            name='language_code',
+
20
            field=models.CharField(choices=[('af', 'Afrikaans'), ('fr-be', 'Français (Belgique)'), ('nl', 'Nederlands'), ('eo', 'Esperanto'), ('en', 'English'), ('nl-be', 'Vlaams'), ('fr', 'Français'), ('de', 'Deutsch'), ('es', 'Español')], max_length=16),
+
21
        ),
+
22
    ]
+
23

migrations/0011_auto_20220220_1906.py

23 additions and 0 deletions.

View changes Hide changes
+
1
+
2
from django.db import migrations, models
+
3
+
4
+
5
class Migration(migrations.Migration):
+
6
+
7
    dependencies = [
+
8
        ('blog', '0010_auto_20220220_1900'),
+
9
    ]
+
10
+
11
    operations = [
+
12
        migrations.AlterField(
+
13
            model_name='comment',
+
14
            name='date',
+
15
            field=models.DateTimeField(auto_now_add=True),
+
16
        ),
+
17
        migrations.AlterField(
+
18
            model_name='post',
+
19
            name='published',
+
20
            field=models.DateTimeField(auto_now_add=True),
+
21
        ),
+
22
    ]
+
23

models.py

15 additions and 3 deletions.

View changes Hide changes
1
1
from django.utils import translation
2
2
from django.template.defaultfilters import slugify
3
3
from django.db import models
4
4
from django.conf import settings  # Necessary to get the link to the media root folder
5
5
import datetime
6
6
import os
7
7
import subprocess
8
8
9
9
""" New version:
+
10
+
11
""" New version:
10
12
- For each post, there's no longer a mandatory Dutch and English
11
13
  version. Instead, only the title needs to be in multiple languages.
12
14
- There's a new table for the links to the articles themselves. These include a
13
15
  language code and a foreign key to the post they belong to.
14
16
- If an article is available in the active language, but not tagged for the same
15
17
  dialect, then it should just show up without any warnings.
16
18
- If an article is not available in the active language, only the title should
17
19
  show up, but where the short intro text would normally be, there should be an
18
20
  explanation that it's only available in other languages, and provide links to
19
21
  those versions.
20
22
"""
21
23
22
24
# Look, you think this function is worthless, it's not. It's required to make
23
25
# migrations with manage.py, so here it stays, being empty and hollow like the
24
26
# piece of shit it is.
25
27
def post_title_directory():
26
28
    pass
27
29
        
28
30
29
31
class Post(models.Model):
30
32
    """ Represents a blog post."""
31
33
    published = models.DateTimeField(auto_now_add=True)
32
34
33
-
    title_en = models.CharField(max_length=64, unique=False, blank=False)
34
35
    title_nl = models.CharField(max_length=64, unique=False, blank=False)
35
36
    title_fr = models.CharField(max_length=64, unique=False, blank=True)
36
37
    title_de = models.CharField(max_length=64, unique=False, blank=True)
37
38
    title_es = models.CharField(max_length=64, unique=False, blank=True)
38
39
    title_eo = models.CharField(max_length=64, unique=False, blank=True)
39
40
    title_af = models.CharField(max_length=64, unique=False, blank=True)
40
41
41
42
42
43
    def __str__(self):
43
44
        return self.title()
44
45
45
46
46
47
    def articles(self):
47
48
        #print(len(Article.objects.filter(post=self)))
48
49
        return Article.objects.filter(post=self)
49
50
        
50
51
    def article(self):
51
52
        language_code = translation.get_language()
52
53
        print(language_code)
53
54
        # Retrieves all articles that have this post as their foreign key
54
55
        articles = Article.objects.filter(post=self)
55
56
        for a in articles:
56
57
            if a.language_code == language_code:
57
58
                return a
58
59
        # If no exact match was found, try again, but now accept other dialects
59
60
        # as well:
60
61
        for a in articles:
61
62
            if a.language_code.startswith(language_code):
62
63
                return a
63
64
        
64
65
        # If still no article was found, return None
65
66
        return None
66
67
67
68
    def title(self):
68
69
        language_code = translation.get_language()
69
70
        options = {'af': self.title_af,
70
71
                   'de': self.title_de,
71
72
                   'es': self.title_es,
72
73
                   'en': self.title_en,
73
74
                   'eo': self.title_eo,
74
75
                   'fr': self.title_fr,
75
76
                   'nl': self.title_nl}
76
77
        for code, translated_title in options.items():
77
78
            if language_code.startswith(code):
78
79
                return translated_title
79
80
        # If no return has happened, default to English
80
81
        return self.title_en
81
82
82
83
def org_to_html(file_path):
83
-
    """ Converts the given org formatted file to HTML.
+
84
    """ Converts the given org formatted file to HTML.
84
85
    This function directly returns the resulting HTML code. This function uses
85
86
    the amazing Haskell library Pandoc to convert the file (and takes care
86
87
    of header id's and all that stuff).
87
88
    """
88
89
    # FIXME: Remove hardcoded link to media. Replace with media tag!
89
90
    # XXX: The reason I'm first converting all occurences of .jpg][ and .png][
90
91
    # to .jpgPANDOCBUG][ and .pngPANDOCBUG][, is because of a Pandoc bug that
91
92
    # removes the text links for images. It is afterwards converted back, no
92
93
    # worries.
93
94
    file = open(file_path, "r", encoding="utf-8")
94
95
    text = file.read()
95
96
    file.close()
96
97
    text = text.replace(".jpg][", ".jpgPANDOCBUG][")
97
98
    text = text.replace(".png][", ".pngPANDOCBUG][")
98
99
    file = open("/tmp/blog-file.org", "w", encoding="utf-8")
99
100
    file.write(text)
100
101
    file.close()
101
102
    html_text = subprocess.check_output(["pandoc", "--from=org", "--to=html","/tmp/blog-file.org"])
102
103
    html_text = html_text.decode("utf-8").replace(".jpgPANDOCBUG", ".jpg")
103
104
    html_text = html_text.replace(".pngPANDOCBUG", ".png")
104
105
    return html_text
105
-
+
106
    rendered_file_path = "/tmp/django-templates/blog-file.djhtml"
+
107
    rendered_file = open(rendered_file_path, "w", encoding="utf-8")
+
108
    rendered_file.write(html_text)
+
109
    rendered_file.close()
+
110
    if return_djhtml_path:
+
111
        return rendered_file_path
+
112
    else:
+
113
        return html_text
+
114
106
115
class Article(models.Model):
107
116
    AFRIKAANS = 'af'
108
117
    BELGIAN_FRENCH = 'fr-be'
109
118
    DUTCH = 'nl'
110
119
    ESPERANTO = 'eo'
111
120
    ENGLISH = 'en'
112
121
    FLEMISH = 'nl-be'
113
122
    FRENCH = 'fr'
114
123
    GERMAN = 'de'
115
124
    SPANISH = 'es'
116
125
117
126
    LANGUAGE_CODES = [
118
127
        (AFRIKAANS, 'Afrikaans'),
119
128
        (BELGIAN_FRENCH, 'Français (Belgique)'),
120
129
        (DUTCH, 'Nederlands'),
121
130
        (ESPERANTO, 'Esperanto'),
122
131
        (ENGLISH, 'English'),
123
132
        (FLEMISH, 'Vlaams'),
124
133
        (FRENCH, 'Français'),
125
134
        (GERMAN, 'Deutsch'),
126
135
        (SPANISH, 'Español')]
127
136
128
137
    visible = models.BooleanField(default=True)
129
138
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
130
139
    language_code = models.CharField(max_length=16,
131
140
                                      choices = LANGUAGE_CODES,
132
141
                                      blank=False)
133
142
    # file_path shouldn't be unique, because the same article file could be used
134
143
    # for multiple dialects of the same language.
135
144
    file_path = models.FilePathField(path=settings.MEDIA_ROOT + "blog/articles/",
136
145
                                     blank=False)
137
146
    # Same reason, slug shouldn't be unique
138
147
    slug = models.SlugField(unique=False, blank=False, allow_unicode=True)
139
148
    title = models.CharField(max_length=64, unique=False, blank=True)
140
149
141
150
    def text(self):
142
151
        return org_to_html(self.file_path)
143
152
+
153
        return org_to_html(self.file_path, return_djhtml_path=True)
+
154
+
155
144
156
class Comment(models.Model):
145
157
    """ Represents a comment on a blog post.
146
158
    Comments are not filtered by language; a
147
159
    comment made by someone reading the article in Dutch, that's written in
148
160
    Dutch, will show up (unedited) for somebody whom's reading the Spanish
149
161
    version.
150
162
    """
151
163
    # Allows me to manually hide certain messages if need be
152
164
    visible = models.BooleanField(default=True)
153
165
    date = models.DateTimeField(auto_now_add=True)
154
166
    name = models.CharField(max_length=64, blank=True)
155
167
    text = models.TextField(max_length=10000, blank=False)  # Should be more than enough
156
168
    # reaction_to is null if it's not a reaction to an existing comment
157
169
    reaction_to = models.ForeignKey('Comment', on_delete=models.CASCADE, null=True)
158
170
    post = models.ForeignKey(
159
171
        Post,
160
172
        on_delete=models.CASCADE,
161
173
        null=False,
162
174
        )
163
175
    class meta:
164
176
        ordering = ['date']  # When printed, prints the oldest comment first.
165
177
166
178
class FeedItem(models.Model):
167
179
    """ An item that shows up in the RSS feed."""
168
180
    title = models.CharField(max_length=64)
169
181
    added = models.DateTimeField(auto_now_add=True)
170
182
    description = models.CharField(max_length=400)
171
183
    link = models.URLField()
172
184

templates/blog/locale/af/LC_MESSAGES/django.po

107 additions and 0 deletions.

View changes Hide changes
+
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+
2
# This file is distributed under the same license as the PACKAGE package.
+
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+
4
#
+
5
#, fuzzy
+
6
msgid ""
+
7
msgstr ""
+
8
"Project-Id-Version: PACKAGE VERSION\n"
+
9
"Report-Msgid-Bugs-To: \n"
+
10
"POT-Creation-Date: 2022-03-06 07:38+0000\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+
13
"Language-Team: LANGUAGE <LL@li.org>\n"
+
14
"Language: \n"
+
15
"MIME-Version: 1.0\n"
+
16
"Content-Type: text/plain; charset=UTF-8\n"
+
17
"Content-Transfer-Encoding: 8bit\n"
+
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
19
+
20
#: blog/templates/blog/index.djhtml:20
+
21
msgid "Maarten's blog"
+
22
msgstr ""
+
23
+
24
#: blog/templates/blog/index.djhtml:22
+
25
msgid ""
+
26
"The always coherently put together, yet\n"
+
27
"fuzzy blog of whatever sprouts in my mind."
+
28
msgstr ""
+
29
+
30
#: blog/templates/blog/index.djhtml:28
+
31
msgid "Notepad of a student"
+
32
msgstr ""
+
33
+
34
#: blog/templates/blog/index.djhtml:37
+
35
msgid "Navigation"
+
36
msgstr ""
+
37
+
38
#: blog/templates/blog/index.djhtml:45
+
39
msgid "Front page"
+
40
msgstr ""
+
41
+
42
#: blog/templates/blog/index.djhtml:52
+
43
msgid "Blog"
+
44
msgstr ""
+
45
+
46
#: blog/templates/blog/index.djhtml:54
+
47
msgid ""
+
48
"Welcome to my blog. Here, I write\n"
+
49
"        about things that interest me. Politics, coding,\n"
+
50
"        studying, life, or anything else I fancy rambling\n"
+
51
"        about. If you're in luck, I may've written it in a\n"
+
52
"        language that you understand better than English.\n"
+
53
"        "
+
54
msgstr ""
+
55
+
56
#: blog/templates/blog/index.djhtml:71
+
57
msgid "Open archive"
+
58
msgstr ""
+
59
+
60
#: blog/templates/blog/index.djhtml:85
+
61
msgid "Read on"
+
62
msgstr ""
+
63
+
64
#: blog/templates/blog/index.djhtml:90
+
65
#, python-format
+
66
msgid ""
+
67
"This blog\n"
+
68
"               post is not available in %(cur_lang)s."
+
69
msgstr ""
+
70
+
71
#: blog/templates/blog/index.djhtml:92
+
72
msgid ""
+
73
"\n"
+
74
"                    However, it is available in \n"
+
75
"                    "
+
76
msgid_plural ""
+
77
"\n"
+
78
"                    If you want, you can choose to read it in one of these\n"
+
79
"                    languages: <br>\n"
+
80
"                    "
+
81
msgstr[0] ""
+
82
msgstr[1] ""
+
83
+
84
#: blog/templates/blog/index.djhtml:100
+
85
msgid "Flemish"
+
86
msgstr ""
+
87
+
88
#: blog/templates/blog/index.djhtml:102
+
89
msgid "Belgian French"
+
90
msgstr ""
+
91
+
92
#: blog/templates/blog/monthly_archive.djhtml:16
+
93
msgid "Weekly | Archief"
+
94
msgstr ""
+
95
+
96
#: blog/templates/blog/monthly_archive.djhtml:19
+
97
msgid "Voor een duik terug in de geschiedenis van mijn publieke dagboek."
+
98
msgstr ""
+
99
+
100
#: blog/templates/blog/post.djhtml:104
+
101
msgid "Comments"
+
102
msgstr ""
+
103
+
104
#: blog/templates/blog/post.djhtml:119
+
105
msgid "Submit"
+
106
msgstr ""
+
107

templates/blog/locale/de/LC_MESSAGES/django.po

44 additions and 9 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2021-11-24 14:00+0100\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: blog/templates/blog/index.djhtml:20
21
21
msgid "Maarten's blog"
22
22
msgstr ""
23
23
24
24
#: blog/templates/blog/index.djhtml:22
25
25
msgid ""
26
26
"The always coherently put together, yet\n"
27
27
"fuzzy blog of whatever sprouts in my mind."
28
28
msgstr ""
29
29
30
30
#: blog/templates/blog/index.djhtml:28
31
31
msgid "Notepad of a student"
32
32
msgstr ""
33
33
34
34
#: blog/templates/blog/index.djhtml:37
35
35
msgid "Navigation"
36
36
msgstr ""
37
37
38
38
#: blog/templates/blog/index.djhtml:42
39
-
msgid "Front page"
+
39
msgid "Front page"
40
40
msgstr ""
41
41
42
42
#: blog/templates/blog/index.djhtml:49
43
-
msgid "Blog"
+
43
msgid "Blog"
44
44
msgstr ""
45
45
46
46
#: blog/templates/blog/index.djhtml:51
47
-
msgid ""
+
47
msgid ""
48
48
"Welcome to my blog. Here, I write\n"
49
49
"        about things that interest me. Politics, coding,\n"
50
50
"        studying, life, or anything else I fancy rambling\n"
51
51
"        about. If you're in luck, I may've written it in a\n"
52
52
"        language that you understand better than English.\n"
53
53
"        "
54
54
msgstr ""
55
55
56
56
#: blog/templates/blog/index.djhtml:68
57
-
msgid "Open archive"
+
57
msgid "Open archive"
58
58
msgstr ""
59
59
60
60
#: blog/templates/blog/index.djhtml:78 blog/templates/blog/post.djhtml:94
61
-
msgid "Read on"
+
61
msgid "Read on"
62
62
msgstr ""
63
63
64
64
#: blog/templates/blog/monthly_archive.djhtml:16
+
65
#, python-format
+
66
msgid ""
+
67
"This blog\n"
+
68
"               post is not available in %(cur_lang)s."
+
69
msgstr ""
+
70
+
71
#: blog/templates/blog/index.djhtml:92
+
72
msgid ""
+
73
"\n"
+
74
"                    However, it is available in \n"
+
75
"                    "
+
76
msgid_plural ""
+
77
"\n"
+
78
"                    If you want, you can choose to read it in one of these\n"
+
79
"                    languages: <br>\n"
+
80
"                    "
+
81
msgstr[0] ""
+
82
msgstr[1] ""
+
83
+
84
#: blog/templates/blog/index.djhtml:100
+
85
msgid "Flemish"
+
86
msgstr ""
+
87
+
88
#: blog/templates/blog/index.djhtml:102
+
89
msgid "Belgian French"
+
90
msgstr ""
+
91
+
92
#: blog/templates/blog/monthly_archive.djhtml:16
65
93
msgid "Weekly | Archief"
66
94
msgstr ""
67
95
68
96
#: blog/templates/blog/monthly_archive.djhtml:19
69
97
msgid "Voor een duik terug in de geschiedenis van mijn publieke dagboek."
70
98
msgstr ""
71
99
72
100
#: blog/templates/blog/post.djhtml:24
73
-
msgid "This article in other languages"
74
-
msgstr "Dieser Artikel in anderen Sprachen"
75
-
+
101
msgid "Comments"
+
102
msgstr ""
+
103
+
104
#: blog/templates/blog/post.djhtml:119
+
105
msgid "Submit"
+
106
msgstr ""
+
107
+
108
#~ msgid "This article in other languages"
+
109
#~ msgstr "Dieser Artikel in anderen Sprachen"
+
110

templates/blog/locale/eo/LC_MESSAGES/django.po

107 additions and 0 deletions.

View changes Hide changes
+
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+
2
# This file is distributed under the same license as the PACKAGE package.
+
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+
4
#
+
5
#, fuzzy
+
6
msgid ""
+
7
msgstr ""
+
8
"Project-Id-Version: PACKAGE VERSION\n"
+
9
"Report-Msgid-Bugs-To: \n"
+
10
"POT-Creation-Date: 2022-03-06 07:38+0000\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+
13
"Language-Team: LANGUAGE <LL@li.org>\n"
+
14
"Language: \n"
+
15
"MIME-Version: 1.0\n"
+
16
"Content-Type: text/plain; charset=UTF-8\n"
+
17
"Content-Transfer-Encoding: 8bit\n"
+
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
19
+
20
#: blog/templates/blog/index.djhtml:20
+
21
msgid "Maarten's blog"
+
22
msgstr ""
+
23
+
24
#: blog/templates/blog/index.djhtml:22
+
25
msgid ""
+
26
"The always coherently put together, yet\n"
+
27
"fuzzy blog of whatever sprouts in my mind."
+
28
msgstr ""
+
29
+
30
#: blog/templates/blog/index.djhtml:28
+
31
msgid "Notepad of a student"
+
32
msgstr ""
+
33
+
34
#: blog/templates/blog/index.djhtml:37
+
35
msgid "Navigation"
+
36
msgstr ""
+
37
+
38
#: blog/templates/blog/index.djhtml:45
+
39
msgid "Front page"
+
40
msgstr ""
+
41
+
42
#: blog/templates/blog/index.djhtml:52
+
43
msgid "Blog"
+
44
msgstr ""
+
45
+
46
#: blog/templates/blog/index.djhtml:54
+
47
msgid ""
+
48
"Welcome to my blog. Here, I write\n"
+
49
"        about things that interest me. Politics, coding,\n"
+
50
"        studying, life, or anything else I fancy rambling\n"
+
51
"        about. If you're in luck, I may've written it in a\n"
+
52
"        language that you understand better than English.\n"
+
53
"        "
+
54
msgstr ""
+
55
+
56
#: blog/templates/blog/index.djhtml:71
+
57
msgid "Open archive"
+
58
msgstr ""
+
59
+
60
#: blog/templates/blog/index.djhtml:85
+
61
msgid "Read on"
+
62
msgstr ""
+
63
+
64
#: blog/templates/blog/index.djhtml:90
+
65
#, python-format
+
66
msgid ""
+
67
"This blog\n"
+
68
"               post is not available in %(cur_lang)s."
+
69
msgstr ""
+
70
+
71
#: blog/templates/blog/index.djhtml:92
+
72
msgid ""
+
73
"\n"
+
74
"                    However, it is available in \n"
+
75
"                    "
+
76
msgid_plural ""
+
77
"\n"
+
78
"                    If you want, you can choose to read it in one of these\n"
+
79
"                    languages: <br>\n"
+
80
"                    "
+
81
msgstr[0] ""
+
82
msgstr[1] ""
+
83
+
84
#: blog/templates/blog/index.djhtml:100
+
85
msgid "Flemish"
+
86
msgstr ""
+
87
+
88
#: blog/templates/blog/index.djhtml:102
+
89
msgid "Belgian French"
+
90
msgstr ""
+
91
+
92
#: blog/templates/blog/monthly_archive.djhtml:16
+
93
msgid "Weekly | Archief"
+
94
msgstr ""
+
95
+
96
#: blog/templates/blog/monthly_archive.djhtml:19
+
97
msgid "Voor een duik terug in de geschiedenis van mijn publieke dagboek."
+
98
msgstr ""
+
99
+
100
#: blog/templates/blog/post.djhtml:104
+
101
msgid "Comments"
+
102
msgstr ""
+
103
+
104
#: blog/templates/blog/post.djhtml:119
+
105
msgid "Submit"
+
106
msgstr ""
+
107

templates/blog/locale/es/LC_MESSAGES/django.po

40 additions and 8 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2021-11-24 14:00+0100\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: blog/templates/blog/index.djhtml:20
21
21
msgid "Maarten's blog"
22
22
msgstr ""
23
23
24
24
#: blog/templates/blog/index.djhtml:22
25
25
msgid ""
26
26
"The always coherently put together, yet\n"
27
27
"fuzzy blog of whatever sprouts in my mind."
28
28
msgstr ""
29
29
30
30
#: blog/templates/blog/index.djhtml:28
31
31
msgid "Notepad of a student"
32
32
msgstr ""
33
33
34
34
#: blog/templates/blog/index.djhtml:37
35
35
msgid "Navigation"
36
36
msgstr ""
37
37
38
38
#: blog/templates/blog/index.djhtml:42
39
-
msgid "Front page"
+
39
msgid "Front page"
40
40
msgstr ""
41
41
42
42
#: blog/templates/blog/index.djhtml:49
43
-
msgid "Blog"
+
43
msgid "Blog"
44
44
msgstr ""
45
45
46
46
#: blog/templates/blog/index.djhtml:51
47
-
msgid ""
+
47
msgid ""
48
48
"Welcome to my blog. Here, I write\n"
49
49
"        about things that interest me. Politics, coding,\n"
50
50
"        studying, life, or anything else I fancy rambling\n"
51
51
"        about. If you're in luck, I may've written it in a\n"
52
52
"        language that you understand better than English.\n"
53
53
"        "
54
54
msgstr ""
55
55
56
56
#: blog/templates/blog/index.djhtml:68
57
-
msgid "Open archive"
+
57
msgid "Open archive"
58
58
msgstr ""
59
59
60
60
#: blog/templates/blog/index.djhtml:78 blog/templates/blog/post.djhtml:94
61
-
msgid "Read on"
+
61
msgid "Read on"
62
62
msgstr ""
63
63
64
64
#: blog/templates/blog/monthly_archive.djhtml:16
+
65
#, python-format
+
66
msgid ""
+
67
"This blog\n"
+
68
"               post is not available in %(cur_lang)s."
+
69
msgstr ""
+
70
+
71
#: blog/templates/blog/index.djhtml:92
+
72
msgid ""
+
73
"\n"
+
74
"                    However, it is available in \n"
+
75
"                    "
+
76
msgid_plural ""
+
77
"\n"
+
78
"                    If you want, you can choose to read it in one of these\n"
+
79
"                    languages: <br>\n"
+
80
"                    "
+
81
msgstr[0] ""
+
82
msgstr[1] ""
+
83
+
84
#: blog/templates/blog/index.djhtml:100
+
85
msgid "Flemish"
+
86
msgstr ""
+
87
+
88
#: blog/templates/blog/index.djhtml:102
+
89
msgid "Belgian French"
+
90
msgstr ""
+
91
+
92
#: blog/templates/blog/monthly_archive.djhtml:16
65
93
msgid "Weekly | Archief"
66
94
msgstr ""
67
95
68
96
#: blog/templates/blog/monthly_archive.djhtml:19
69
97
msgid "Voor een duik terug in de geschiedenis van mijn publieke dagboek."
70
98
msgstr ""
71
99
72
100
#: blog/templates/blog/post.djhtml:24
73
-
msgid "This article in other languages"
74
-
msgstr ""
+
101
msgid "Comments"
+
102
msgstr ""
+
103
+
104
#: blog/templates/blog/post.djhtml:119
+
105
msgid "Submit"
+
106
msgstr ""
75
107

templates/blog/locale/fr/LC_MESSAGES/django.po

44 additions and 15 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
msgid ""
6
6
msgstr ""
7
7
"Project-Id-Version: \n"
8
8
"Report-Msgid-Bugs-To: \n"
9
9
"POT-Creation-Date: 2021-11-24 14:00+0100\n"
10
-
"PO-Revision-Date: 2021-10-30 16:01+0200\n"
+
10
"PO-Revision-Date: 2021-10-30 16:01+0200\n"
11
11
"Last-Translator: \n"
12
12
"Language-Team: \n"
13
13
"Language: fr\n"
14
14
"MIME-Version: 1.0\n"
15
15
"Content-Type: text/plain; charset=UTF-8\n"
16
16
"Content-Transfer-Encoding: 8bit\n"
17
17
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
18
18
"X-Generator: Poedit 3.0\n"
19
19
20
20
#: blog/templates/blog/index.djhtml:20
21
21
msgid "Maarten's blog"
22
22
msgstr "Blog de Maarten"
23
23
24
24
#: blog/templates/blog/index.djhtml:22
25
25
msgid ""
26
26
"The always coherently put together, yet\n"
27
27
"fuzzy blog of whatever sprouts in my mind."
28
28
msgstr ""
29
29
"Le toujours mis de façon cohérente ensemble, mais floue de ce que les germes "
30
30
"dans mon esprit."
31
31
32
32
#: blog/templates/blog/index.djhtml:28
33
33
msgid "Notepad of a student"
34
34
msgstr ""
35
35
36
36
#: blog/templates/blog/index.djhtml:37
37
37
msgid "Navigation"
38
38
msgstr ""
39
39
40
40
#: blog/templates/blog/index.djhtml:42
41
-
msgid "Front page"
+
41
msgid "Front page"
42
42
msgstr ""
43
43
44
44
#: blog/templates/blog/index.djhtml:49
45
-
msgid "Blog"
+
45
msgid "Blog"
46
46
msgstr "Blog"
47
47
48
48
#: blog/templates/blog/index.djhtml:51
49
-
#, fuzzy
+
49
#, fuzzy
50
50
#| msgid ""
51
51
#| "Welcome to my blog. Here, I write\n"
52
52
#| "                about things that interest me. Politics, coding,\n"
53
53
#| "                studying, life, or anything else I fancy rambling\n"
54
54
#| "                about. If you're in luck, I may've written it in a\n"
55
55
#| "                language that you understand better than English.\n"
56
56
#| "                "
57
57
msgid ""
58
58
"Welcome to my blog. Here, I write\n"
59
59
"        about things that interest me. Politics, coding,\n"
60
60
"        studying, life, or anything else I fancy rambling\n"
61
61
"        about. If you're in luck, I may've written it in a\n"
62
62
"        language that you understand better than English.\n"
63
63
"        "
64
64
msgstr ""
65
65
"Bienvenue dans mon blog. Ici j'écris des choses qui m'intéressent. La "
66
66
"politique, le codage, l'étude, la vie, ou autre chose dont j'ai envie de me "
67
67
"venger."
68
68
69
69
#: blog/templates/blog/index.djhtml:68
70
-
msgid "Open archive"
+
70
msgid "Open archive"
71
71
msgstr ""
72
72
73
73
#: blog/templates/blog/index.djhtml:78 blog/templates/blog/post.djhtml:94
74
-
msgid "Read on"
+
74
msgid "Read on"
75
75
msgstr "Lire plus"
76
76
77
77
#: blog/templates/blog/monthly_archive.djhtml:16
+
78
#, python-format
+
79
msgid ""
+
80
"This blog\n"
+
81
"               post is not available in %(cur_lang)s."
+
82
msgstr ""
+
83
+
84
#: blog/templates/blog/index.djhtml:92
+
85
msgid ""
+
86
"\n"
+
87
"                    However, it is available in \n"
+
88
"                    "
+
89
msgid_plural ""
+
90
"\n"
+
91
"                    If you want, you can choose to read it in one of these\n"
+
92
"                    languages: <br>\n"
+
93
"                    "
+
94
msgstr[0] ""
+
95
msgstr[1] ""
+
96
+
97
#: blog/templates/blog/index.djhtml:100
+
98
msgid "Flemish"
+
99
msgstr ""
+
100
+
101
#: blog/templates/blog/index.djhtml:102
+
102
msgid "Belgian French"
+
103
msgstr ""
+
104
+
105
#: blog/templates/blog/monthly_archive.djhtml:16
78
106
msgid "Weekly | Archief"
79
107
msgstr ""
80
108
81
109
#: blog/templates/blog/monthly_archive.djhtml:19
82
110
msgid "Voor een duik terug in de geschiedenis van mijn publieke dagboek."
83
111
msgstr ""
84
112
85
113
#: blog/templates/blog/post.djhtml:24
86
-
msgid "This article in other languages"
87
-
msgstr "Cet article en autres langues"
88
-
+
114
msgid "Comments"
+
115
msgstr "Commentaires"
+
116
+
117
#: blog/templates/blog/post.djhtml:119
+
118
msgid "Submit"
+
119
msgstr "Envoyer"
+
120
+
121
#~ msgid "This article in other languages"
+
122
#~ msgstr "Cet article en autres langues"
+
123
89
124
#~ msgid "Never miss an update again."
90
125
#~ msgstr "Ne manquez plus jamais une mise à jour."
91
126
92
127
#~ msgid ""
93
128
#~ "Getting info on updates to blog posts, major website changes, and other "
94
129
#~ "important\n"
95
130
#~ "                news items is now easy and convenient with RSS.\n"
96
131
#~ "                "
97
132
#~ msgstr ""
98
133
#~ "Recevoir des mise à jours du blog, des grands changements du site web et "
99
134
#~ "d'autre information, c'est maitenant facile et pratique avec RSS."
100
135
101
-
#~ msgid "Comments"
102
-
#~ msgstr "Commentaires"
103
-
104
-
#~ msgid "Submit"
105
-
#~ msgstr "Envoyer"
106
-

templates/blog/locale/nl/LC_MESSAGES/django.po

44 additions and 15 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
msgid ""
6
6
msgstr ""
7
7
"Project-Id-Version: \n"
8
8
"Report-Msgid-Bugs-To: \n"
9
9
"POT-Creation-Date: 2021-11-24 14:00+0100\n"
10
-
"PO-Revision-Date: 2021-10-30 16:11+0200\n"
+
10
"PO-Revision-Date: 2021-10-30 16:11+0200\n"
11
11
"Last-Translator: \n"
12
12
"Language-Team: \n"
13
13
"Language: nl\n"
14
14
"MIME-Version: 1.0\n"
15
15
"Content-Type: text/plain; charset=UTF-8\n"
16
16
"Content-Transfer-Encoding: 8bit\n"
17
17
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
18
"X-Generator: Poedit 3.0\n"
19
19
20
20
#: blog/templates/blog/index.djhtml:20
21
21
msgid "Maarten's blog"
22
22
msgstr "Maartens blog"
23
23
24
24
#: blog/templates/blog/index.djhtml:22
25
25
msgid ""
26
26
"The always coherently put together, yet\n"
27
27
"fuzzy blog of whatever sprouts in my mind."
28
28
msgstr ""
29
29
"Een zeer weloverwogen geschreven, en toch warrige blog over vanalles wat in "
30
30
"mij opkomt."
31
31
32
32
#: blog/templates/blog/index.djhtml:28
33
33
msgid "Notepad of a student"
34
34
msgstr ""
35
35
36
36
#: blog/templates/blog/index.djhtml:37
37
37
msgid "Navigation"
38
38
msgstr ""
39
39
40
40
#: blog/templates/blog/index.djhtml:42
41
-
msgid "Front page"
+
41
msgid "Front page"
42
42
msgstr ""
43
43
44
44
#: blog/templates/blog/index.djhtml:49
45
-
msgid "Blog"
+
45
msgid "Blog"
46
46
msgstr "Blog"
47
47
48
48
#: blog/templates/blog/index.djhtml:51
49
-
#, fuzzy
+
49
#, fuzzy
50
50
#| msgid ""
51
51
#| "Welcome to my blog. Here, I write\n"
52
52
#| "                about things that interest me. Politics, coding,\n"
53
53
#| "                studying, life, or anything else I fancy rambling\n"
54
54
#| "                about. If you're in luck, I may've written it in a\n"
55
55
#| "                language that you understand better than English.\n"
56
56
#| "                "
57
57
msgid ""
58
58
"Welcome to my blog. Here, I write\n"
59
59
"        about things that interest me. Politics, coding,\n"
60
60
"        studying, life, or anything else I fancy rambling\n"
61
61
"        about. If you're in luck, I may've written it in a\n"
62
62
"        language that you understand better than English.\n"
63
63
"        "
64
64
msgstr ""
65
65
"Welkom op mijn blog. Hier schrijf ik over onderwerpen die mij interesseren. "
66
66
"Politiek, programmeren, studeren en het leven, plus alles waar ik goesting "
67
67
"in heb om over te schrijven."
68
68
69
69
#: blog/templates/blog/index.djhtml:68
70
-
msgid "Open archive"
+
70
msgid "Open archive"
71
71
msgstr ""
72
72
73
73
#: blog/templates/blog/index.djhtml:78 blog/templates/blog/post.djhtml:94
74
-
msgid "Read on"
+
74
msgid "Read on"
75
75
msgstr "Verder lezen"
76
76
77
77
#: blog/templates/blog/monthly_archive.djhtml:16
+
78
#, python-format
+
79
msgid ""
+
80
"This blog\n"
+
81
"               post is not available in %(cur_lang)s."
+
82
msgstr ""
+
83
+
84
#: blog/templates/blog/index.djhtml:92
+
85
msgid ""
+
86
"\n"
+
87
"                    However, it is available in \n"
+
88
"                    "
+
89
msgid_plural ""
+
90
"\n"
+
91
"                    If you want, you can choose to read it in one of these\n"
+
92
"                    languages: <br>\n"
+
93
"                    "
+
94
msgstr[0] ""
+
95
msgstr[1] ""
+
96
+
97
#: blog/templates/blog/index.djhtml:100
+
98
msgid "Flemish"
+
99
msgstr ""
+
100
+
101
#: blog/templates/blog/index.djhtml:102
+
102
msgid "Belgian French"
+
103
msgstr ""
+
104
+
105
#: blog/templates/blog/monthly_archive.djhtml:16
78
106
msgid "Weekly | Archief"
79
107
msgstr ""
80
108
81
109
#: blog/templates/blog/monthly_archive.djhtml:19
82
110
msgid "Voor een duik terug in de geschiedenis van mijn publieke dagboek."
83
111
msgstr ""
84
112
85
113
#: blog/templates/blog/post.djhtml:24
86
-
msgid "This article in other languages"
87
-
msgstr "Dit artikel in andere talen"
88
-
+
114
msgid "Comments"
+
115
msgstr "Reacties"
+
116
+
117
#: blog/templates/blog/post.djhtml:119
+
118
msgid "Submit"
+
119
msgstr "Reageren"
+
120
+
121
#~ msgid "This article in other languages"
+
122
#~ msgstr "Dit artikel in andere talen"
+
123
89
124
#~ msgid "Never miss an update again."
90
125
#~ msgstr "Mis nooit meer een update."
91
126
92
127
#~ msgid ""
93
128
#~ "Getting info on updates to blog posts, major website changes, and other "
94
129
#~ "important\n"
95
130
#~ "                news items is now easy and convenient with RSS.\n"
96
131
#~ "                "
97
132
#~ msgstr ""
98
133
#~ "Updates van blogartikelen, grote veranderingen op de website en andere "
99
134
#~ "belangrijke nieuwtjes zijn nu makkelijk te verkrijgen met RSS."
100
135
101
-
#~ msgid "Comments"
102
-
#~ msgstr "Reacties"
103
-
104
-
#~ msgid "Submit"
105
-
#~ msgstr "Reageren"
106
-

templates/blog/post.djhtml

46 additions and 2 deletions.

View changes Hide changes
1
1
{% load humanize %}
2
2
{% load i18n %}
3
3
{% load static %}
4
4
5
5
{% block description %}
+
6
{% block stylesheets %}
+
7
{{ block.super }}
+
8
<style>
+
9
@font-face {
+
10
  font-family: 'Merriweather';
+
11
  font-style: italic;
+
12
  font-weight: 400;
+
13
  src: url({% get_static_prefix %}fonts/merriweather-400-italic.woff2) format('woff2');
+
14
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+
15
}
+
16
@font-face {
+
17
  font-family: 'Merriweather';
+
18
  font-style: normal;
+
19
  font-weight: 400;
+
20
  src: url({% get_static_prefix %}fonts/merriweather-400-regular.woff2) format('woff2');
+
21
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+
22
}
+
23
@font-face {
+
24
  font-family: 'Merriweather';
+
25
  font-style: normal;
+
26
  font-weight: 700;
+
27
  src: url({% get_static_prefix %}fonts/merriweather-700-regular.woff2) format('woff2');
+
28
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+
29
}
+
30
+
31
body {
+
32
    background-color: #0d1521; /*#0d47a1; /* Material blue P900 */
+
33
}
+
34
body video {
+
35
    width: 80%;
+
36
}
+
37
header {
+
38
    background-color: #3e2723;
+
39
}
+
40
section.article {
+
41
    background-color: #efebe9;/*rgb(210, 188, 157);*/
+
42
    font-family: Merriweather, serif;
+
43
}
+
44
</style>
+
45
{% endblock stylesheets %}
+
46
+
47
{% block description %}
6
48
{{ article.text|safe|truncatewords_html:10 }}
7
49
{% endblock description %}
8
50
{% block title %}📚 {{ navbar_title }}{% endblock title %}
9
51
10
52
11
53
{% block header %}
12
54
<header>
13
55
<h1>{{ navbar_title }}</h1>
14
56
</header>
15
57
{% endblock header %}
16
58
{% block main %}
17
59
<section style="font-family: serif;">
18
-
    <!--<article style="font-family:serif;">-->
+
60
    <!--<article style="font-family:serif;">-->
19
61
        {{ article.text|safe }}
20
-
    <!--</article>-->
+
62
    {% include "/tmp/django-templates/blog-file.djhtml" %}
+
63
+
64
    <!--</article>-->
21
65
</section>
22
66
23
67
{% comment %}
24
68
<h5 class="white-text">{% trans "This article in other languages" %}</h5>
25
69
26
70
{% get_language_info for 'nl' as LANG %}
27
71
<a {% if dutch_link %} href="{{dutch_link}}" {% endif %}
28
72
   class="btn fill
29
73
   {% if not dutch_link %}disabled{% endif %}">
30
74
    🇧🇪 {{ LANG.name_translated}} 🇳🇱
31
75
</a>
32
76
{% get_current_language as lang %}
33
77
{% get_language_info for 'fr' as LANG %}
34
78
<a {% if french_link %} href="{{french_link}}" {% endif %}
35
79
   class="btn fill
36
80
   {% if not french_link %}disabled{% endif %}">
37
81
    🇧🇪 {{ LANG.name_translated}} 🇫🇷
38
82
</a>
39
83
{% get_language_info for 'en' as LANG %}
40
84
<a {% if english_link %} href="{{english_link}}" {% endif %}
41
85
   class="btn fill
42
86
   {% if not english_link %}disabled{% endif %}">
43
87
    🇬🇧 {{ LANG.name_translated}} 🇺🇸
44
88
</a>
45
89
{% get_language_info for 'de' as LANG %}
46
90
<a {% if german_link %} href="{{german_link}}" {% endif %}
47
91
   class="btn fill
48
92
   {% if not german_link %}disabled{% endif %}">
49
93
    🇧🇪 {{ LANG.name_translated}} 🇩🇪
50
94
</a>
51
95
{% get_language_info for 'es' as LANG %}
52
96
<a {% if spanish_link %} href="{{spanish_link}}" {% endif %}
53
97
   class="btn
54
98
   {% if not spanish_link %}disabled{% endif %}">
55
99
    🇪🇸 {{ LANG.name_translated}} 🇲🇽
56
100
</a>
57
101
{% endcomment %}
58
102
59
103
<h5 class="white-text">{% trans "Comments" %}</h5>
60
104
{% for comment in comments %} {# Whoops =P #}
61
105
    <span class="white-text">{{ comment.name|title }} | </span>
62
106
    <time class="grey-text" datetime="{{ comment.date|date:'c' }}">{{ comment.date|naturaltime }}</time>
63
107
    <br />
64
108
    <p class="white-text">{{ comment.text|urlize }}</p>
65
109
    <hr />
66
110
{% endfor %}
67
111
    {# Form for new comment #}
68
112
    <form action="" method="POST">
69
113
        {% csrf_token %}
70
114
        {{ form.name.label_tag }}
71
115
        <input class="white-text browser-default" type="text" id="id_name" name="name" maxlength="64" required />
72
116
        {{ form.text.label_tag }}
73
117
        <textarea id="id_text" class="white-text" name="text" maxlength="1000" required></textarea>
74
118
        <input type="submit" value="{% trans "Submit" %}" />
75
119
    </form>
76
120
77
121
78
122
{% comment %}
79
123
<a href="{% url 'blog-post' post_slug %}" class="btn {{accent_color}} accent-4 black-text tooltipped" data-position="bottom" data-delay="50" data-tooltip="{% trans "Multilingual link. Links to the version in the viewer's preferred language." %}">🏳️‍🌈 {% trans "All available languages" %}</a>
80
124
    {# TODO: Change to rainbow flag when possible #}
81
125
{% endcomment %}
82
126
    </div>
83
127
84
128
</div>
85
129
{% endblock main %}
86
130