Fix bugs resulting from overhaul
- Author
- Maarten Vangeneugden
- Date
- Feb. 20, 2022, 8:19 p.m.
- Hash
- 210bc6f31148748ba94e33e6cd484a89b00a5021
- Parent
- 68708a08cb93b5efe5d9d30733855940c45a0c46
- Modified files
- admin.py
- locale/de/LC_MESSAGES/django.po
- locale/es/LC_MESSAGES/django.po
- locale/fr/LC_MESSAGES/django.po
- locale/nl/LC_MESSAGES/django.po
- models.py
- templates/blog/index.djhtml
- templates/blog/locale/de/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
- urls.py
- views.py
admin.py ¶
1 addition and 0 deletions.
locale/de/LC_MESSAGES/django.po ¶
6 additions and 6 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: 2020-06-14 17:28+0200\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:21 |
21 |
- | msgid "Back to main page" |
+ |
21 |
msgid "Back to main page" |
22 |
22 |
msgstr "" |
23 |
23 |
|
24 |
24 |
#: blog/views.py:22 |
25 |
- | msgid "Contact" |
+ |
25 |
msgid "Contact" |
26 |
26 |
msgstr "" |
27 |
27 |
|
28 |
28 |
#: blog/views.py:24 |
29 |
- | msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs." |
+ |
29 |
msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs." |
30 |
30 |
msgstr "" |
31 |
31 |
|
32 |
32 |
#: blog/views.py:85 |
33 |
- | msgid "Notepad from a student" |
+ |
33 |
msgid "Notepad from a student" |
34 |
34 |
msgstr "" |
35 |
35 |
|
36 |
36 |
#: blog/views.py:182 |
37 |
- | msgid "Weekly-archief" |
+ |
37 |
msgid "Weekly-archief" |
38 |
38 |
msgstr "" |
39 |
39 |
locale/es/LC_MESSAGES/django.po ¶
6 additions and 6 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: 2020-06-14 17:28+0200\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:21 |
21 |
- | msgid "Back to main page" |
+ |
21 |
msgid "Back to main page" |
22 |
22 |
msgstr "" |
23 |
23 |
|
24 |
24 |
#: blog/views.py:22 |
25 |
- | msgid "Contact" |
+ |
25 |
msgid "Contact" |
26 |
26 |
msgstr "" |
27 |
27 |
|
28 |
28 |
#: blog/views.py:24 |
29 |
- | msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs." |
+ |
29 |
msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs." |
30 |
30 |
msgstr "" |
31 |
31 |
|
32 |
32 |
#: blog/views.py:85 |
33 |
- | msgid "Notepad from a student" |
+ |
33 |
msgid "Notepad from a student" |
34 |
34 |
msgstr "" |
35 |
35 |
|
36 |
36 |
#: blog/views.py:182 |
37 |
- | msgid "Weekly-archief" |
+ |
37 |
msgid "Weekly-archief" |
38 |
38 |
msgstr "" |
39 |
39 |
locale/fr/LC_MESSAGES/django.po ¶
6 additions and 6 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: 2020-06-14 17:28+0200\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:21 |
21 |
- | #, fuzzy |
+ |
21 |
#, fuzzy |
22 |
22 |
#| msgid "Blog main page" |
23 |
23 |
msgid "Back to main page" |
24 |
24 |
msgstr "Blog // Page principal" |
25 |
25 |
|
26 |
26 |
#: blog/views.py:22 |
27 |
- | msgid "Contact" |
+ |
27 |
msgid "Contact" |
28 |
28 |
msgstr "Contact" |
29 |
29 |
|
30 |
30 |
#: blog/views.py:24 |
31 |
- | msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs." |
+ |
31 |
msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs." |
32 |
32 |
msgstr "" |
33 |
33 |
"Blog personnel de Maarten, avec des sprinkles et un cuillerée des bogues " |
34 |
34 |
"sains." |
35 |
35 |
|
36 |
36 |
#: blog/views.py:85 |
37 |
- | msgid "Notepad from a student" |
+ |
37 |
msgid "Notepad from a student" |
38 |
38 |
msgstr "Bloc-notes d'un étudiant" |
39 |
39 |
|
40 |
40 |
#: blog/views.py:182 |
41 |
- | msgid "Weekly-archief" |
+ |
41 |
msgid "Weekly-archief" |
42 |
42 |
msgstr "" |
43 |
43 |
locale/nl/LC_MESSAGES/django.po ¶
8 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 |
msgid "" |
6 |
6 |
msgstr "" |
7 |
7 |
"Project-Id-Version: \n" |
8 |
8 |
"Report-Msgid-Bugs-To: \n" |
9 |
9 |
"POT-Creation-Date: 2020-06-14 17:28+0200\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 |
"Language: nl\n" |
+ |
12 |
"Language-Team: \n" |
+ |
13 |
"Language: nl\n" |
12 |
14 |
"MIME-Version: 1.0\n" |
13 |
15 |
"Content-Type: text/plain; charset=UTF-8\n" |
14 |
16 |
"Content-Transfer-Encoding: 8bit\n" |
15 |
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
16 |
18 |
"Last-Translator: \n" |
17 |
- | "Language-Team: \n" |
18 |
- | "X-Generator: Poedit 3.0\n" |
19 |
19 |
|
20 |
20 |
#: blog/views.py:21 |
21 |
- | #, fuzzy |
+ |
21 |
#, fuzzy |
22 |
22 |
#| msgid "Blog main page" |
23 |
23 |
msgid "Back to main page" |
24 |
24 |
msgstr "Blog // Hoofdpagina" |
25 |
25 |
|
26 |
26 |
#: blog/views.py:22 |
27 |
- | msgid "Contact" |
+ |
27 |
msgid "Contact" |
28 |
28 |
msgstr "Contact" |
29 |
29 |
|
30 |
30 |
#: blog/views.py:24 |
31 |
- | msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs." |
+ |
31 |
msgid "Maarten's personal blog, with sprinkles and a dollop of healthy bugs." |
32 |
32 |
msgstr "" |
33 |
33 |
"Maartens persoonlijke blog, met sprinkeltjes en een doperwtje aan gezonde " |
34 |
34 |
"bugs." |
35 |
35 |
|
36 |
36 |
#: blog/views.py:85 |
37 |
- | msgid "Notepad from a student" |
+ |
37 |
msgid "Notepad from a student" |
38 |
38 |
msgstr "Studentikoos kladblok" |
39 |
39 |
|
40 |
40 |
#: blog/views.py:182 |
41 |
- | msgid "Weekly-archief" |
+ |
41 |
msgid "Weekly-archief" |
42 |
42 |
msgstr "Weekly-archief" |
43 |
43 |
models.py ¶
67 additions and 62 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 |
|
+ |
8 |
|
8 |
9 |
""" New version: |
9 |
10 |
- For each post, there's no longer a mandatory Dutch and English |
10 |
11 |
version. Instead, only the title needs to be in multiple languages. |
11 |
12 |
- There's a new table for the links to the articles themselves. These include a |
12 |
13 |
language code and a foreign key to the post they belong to. |
13 |
14 |
- If an article is available in the active language, but not tagged for the same |
14 |
15 |
dialect, then it should just show up without any warnings. |
15 |
16 |
- If an article is not available in the active language, only the title should |
16 |
17 |
show up, but where the short intro text would normally be, there should be an |
17 |
18 |
explanation that it's only available in other languages, and provide links to |
18 |
19 |
those versions. |
19 |
20 |
""" |
20 |
21 |
|
21 |
22 |
def org_to_html(file_path): |
+ |
23 |
# migrations with manage.py, so here it stays, being empty and hollow like the |
+ |
24 |
# piece of shit it is. |
+ |
25 |
def post_title_directory(): |
+ |
26 |
pass |
+ |
27 |
|
+ |
28 |
|
+ |
29 |
class Post(models.Model): |
+ |
30 |
""" Represents a blog post.""" |
+ |
31 |
published = models.DateTimeField(auto_now_add=True) |
+ |
32 |
|
+ |
33 |
title_en = models.CharField(max_length=64, unique=False, blank=False) |
+ |
34 |
title_nl = models.CharField(max_length=64, unique=False, blank=False) |
+ |
35 |
title_fr = models.CharField(max_length=64, unique=False, blank=True) |
+ |
36 |
title_de = models.CharField(max_length=64, unique=False, blank=True) |
+ |
37 |
title_es = models.CharField(max_length=64, unique=False, blank=True) |
+ |
38 |
title_eo = models.CharField(max_length=64, unique=False, blank=True) |
+ |
39 |
title_af = models.CharField(max_length=64, unique=False, blank=True) |
+ |
40 |
|
+ |
41 |
|
+ |
42 |
def __str__(self): |
+ |
43 |
return self.title() |
+ |
44 |
|
+ |
45 |
|
+ |
46 |
def articles(self): |
+ |
47 |
#print(len(Article.objects.filter(post=self))) |
+ |
48 |
return Article.objects.filter(post=self) |
+ |
49 |
|
+ |
50 |
def article(self): |
+ |
51 |
language_code = translation.get_language() |
+ |
52 |
print(language_code) |
+ |
53 |
# Retrieves all articles that have this post as their foreign key |
+ |
54 |
articles = Article.objects.filter(post=self) |
+ |
55 |
for a in articles: |
+ |
56 |
if a.language_code == language_code: |
+ |
57 |
return a |
+ |
58 |
# If no exact match was found, try again, but now accept other dialects |
+ |
59 |
# as well: |
+ |
60 |
for a in articles: |
+ |
61 |
if a.language_code.startswith(language_code): |
+ |
62 |
return a |
+ |
63 |
|
+ |
64 |
# If still no article was found, return None |
+ |
65 |
return None |
+ |
66 |
|
+ |
67 |
def title(self): |
+ |
68 |
language_code = translation.get_language() |
+ |
69 |
options = {'af': self.title_af, |
+ |
70 |
'de': self.title_de, |
+ |
71 |
'es': self.title_es, |
+ |
72 |
'en': self.title_en, |
+ |
73 |
'eo': self.title_eo, |
+ |
74 |
'fr': self.title_fr, |
+ |
75 |
'nl': self.title_nl} |
+ |
76 |
for code, translated_title in options.items(): |
+ |
77 |
if language_code.startswith(code): |
+ |
78 |
return translated_title |
+ |
79 |
# If no return has happened, default to English |
+ |
80 |
return self.title_en |
+ |
81 |
|
+ |
82 |
def org_to_html(file_path): |
22 |
83 |
""" Converts the given org formatted file to HTML. |
23 |
84 |
This function directly returns the resulting HTML code. This function uses |
24 |
85 |
the amazing Haskell library Pandoc to convert the file (and takes care |
25 |
86 |
of header id's and all that stuff). |
26 |
87 |
""" |
27 |
88 |
# FIXME: Remove hardcoded link to media. Replace with media tag! |
28 |
89 |
# XXX: The reason I'm first converting all occurences of .jpg][ and .png][ |
29 |
90 |
# to .jpgPANDOCBUG][ and .pngPANDOCBUG][, is because of a Pandoc bug that |
30 |
91 |
# removes the text links for images. It is afterwards converted back, no |
31 |
92 |
# worries. |
32 |
93 |
file = open("/srv/django/website/media/"+file_path, "r", encoding="utf-8") |
33 |
- | text = file.read() |
+ |
94 |
text = file.read() |
34 |
95 |
file.close() |
35 |
96 |
text = text.replace(".jpg][", ".jpgPANDOCBUG][") |
36 |
97 |
text = text.replace(".png][", ".pngPANDOCBUG][") |
37 |
98 |
file = open("/tmp/blog-file.org", "w", encoding="utf-8") |
38 |
99 |
file.write(text) |
39 |
100 |
file.close() |
40 |
101 |
html_text = subprocess.check_output(["pandoc", "--from=org", "--to=html","/tmp/blog-file.org"]) |
41 |
102 |
html_text = html_text.decode("utf-8").replace(".jpgPANDOCBUG", ".jpg") |
42 |
103 |
html_text = html_text.replace(".pngPANDOCBUG", ".png") |
43 |
104 |
return html_text |
44 |
105 |
|
45 |
106 |
class Article(models.Model): |
46 |
107 |
AFRIKAANS = 'af' |
47 |
108 |
BELGIAN_FRENCH = 'fr-be' |
48 |
109 |
DUTCH = 'nl' |
49 |
110 |
ESPERANTO = 'eo' |
50 |
111 |
FLEMISH = 'nl-be' |
+ |
112 |
FLEMISH = 'nl-be' |
51 |
113 |
FRENCH = 'fr' |
52 |
114 |
GERMAN = 'de' |
53 |
115 |
SPANISH = 'es' |
54 |
116 |
|
55 |
117 |
LANGUAGE_CODES = [ |
56 |
118 |
(AFRIKAANS, 'Afrikaans'), |
57 |
119 |
(BELGIAN_FRENCH, 'Français (Belgique)'), |
58 |
120 |
(DUTCH, 'Nederlands'), |
59 |
121 |
(ESPERANTO, 'Esperanto'), |
60 |
122 |
(FLEMISH, 'Vlaams'), |
+ |
123 |
(FLEMISH, 'Vlaams'), |
61 |
124 |
(FRENCH, 'Français'), |
62 |
125 |
(GERMAN, 'Deutsch'), |
63 |
126 |
(SPANISH, 'Español')] |
64 |
127 |
|
65 |
128 |
# auto_now_add should normally be True, but by changing a lot of the |
66 |
- | # internals I had to temporary disable it |
67 |
- | visible = models.BooleanField(default=True) |
68 |
129 |
post = models.ForeignKey(Post, on_delete=models.CASCADE) |
69 |
130 |
language_code = models.CharField(max_length=16, |
70 |
131 |
choices = LANGUAGE_CODES, |
71 |
132 |
blank=False) |
72 |
133 |
# file_path shouldn't be unique, because the same article file could be used |
73 |
134 |
# for multiple dialects of the same language. |
74 |
135 |
file_path = models.FilePathField(path=settings.MEDIA_ROOT + "blog/articles/", |
75 |
136 |
blank=False) |
76 |
137 |
# Same reason, slug shouldn't be unique |
77 |
138 |
slug = models.SlugField(unique=False, blank=False, allow_unicode=True) |
78 |
139 |
|
+ |
140 |
|
79 |
141 |
def text(self): |
80 |
142 |
return org_to_html(self.file_path) |
81 |
143 |
|
82 |
144 |
def title(self): |
83 |
- | return self.post.title(self.language_code) |
84 |
- | |
85 |
- | |
86 |
- | |
87 |
- | class Post(models.Model): |
88 |
- | """ Represents a blog post.""" |
89 |
- | published = models.DateTimeField(auto_now_add=False) |
90 |
- | |
91 |
- | title_en = models.CharField(max_length=64, unique=True, blank=False) |
92 |
- | title_nl = models.CharField(max_length=64, unique=True, blank=False) |
93 |
- | title_fr = models.CharField(max_length=64, unique=True, blank=True) |
94 |
- | title_de = models.CharField(max_length=64, unique=True, blank=True) |
95 |
- | title_es = models.CharField(max_length=64, unique=True, blank=True) |
96 |
- | title_eo = models.CharField(max_length=64, unique=True, blank=True) |
97 |
- | title_af = models.CharField(max_length=64, unique=True, blank=True) |
98 |
- | |
99 |
- | |
100 |
- | def __str__(self): |
101 |
- | return self.title() |
102 |
- | |
103 |
- | |
104 |
- | def articles(self): |
105 |
- | return Article.objects.filter(post=self) |
106 |
- | |
107 |
- | def article(self, language_code=translation.get_language()): |
108 |
- | # Retrieves all articles that have this post as their foreign key |
109 |
- | articles = Article.objects.filter(post=self) |
110 |
- | for a in articles: |
111 |
- | if a.language_code == language_code: |
112 |
- | return a |
113 |
- | # If no exact match was found, try again, but now accept other dialects |
114 |
- | # as well: |
115 |
- | for a in articles: |
116 |
- | if language_code.startswith(a.language_code): |
117 |
- | return a |
118 |
- | |
119 |
- | # If still no article was found, return None |
120 |
- | return None |
121 |
- | |
122 |
- | def title(self, language_code=translation.get_language()): |
123 |
- | options = {'af': self.title_af, |
124 |
- | 'de': self.title_de, |
125 |
- | 'es': self.title_es, |
126 |
- | 'en': self.title_en, |
127 |
- | 'eo': self.title_eo, |
128 |
- | 'fr': self.title_fr, |
129 |
- | 'nl': self.title_nl} |
130 |
- | for code, translated_title in options.items(): |
131 |
- | if language_code.startswith(code): |
132 |
- | return translated_title |
133 |
- | # If no return has happened, default to English |
134 |
- | return self.title_en |
135 |
- | def text(self): |
136 |
- | |
137 |
- | class Comment(models.Model): |
138 |
145 |
""" Represents a comment on a blog post. |
139 |
146 |
Comments are not filtered by language; a |
140 |
147 |
comment made by someone reading the article in Dutch, that's written in |
141 |
148 |
Dutch, will show up (unedited) for somebody whom's reading the Spanish |
142 |
149 |
version. |
143 |
150 |
""" |
144 |
151 |
# Allows me to manually hide certain messages if need be |
145 |
152 |
visible = models.BooleanField(default=True) |
146 |
153 |
# auto_now_add should normally be True, but by changing a lot of the |
147 |
- | # internals I had to temporary disable it |
148 |
- | date = models.DateTimeField(auto_now_add=False) |
149 |
- | name = models.CharField(max_length=64, blank=True) |
+ |
154 |
name = models.CharField(max_length=64, blank=True) |
150 |
155 |
text = models.TextField(max_length=10000, blank=False) # Should be more than enough |
151 |
156 |
# reaction_to is null if it's not a reaction to an existing comment |
152 |
157 |
reaction_to = models.ForeignKey(Comment, on_delete=models.CASCADE, null=True) |
153 |
- | post = models.ForeignKey( |
+ |
158 |
post = models.ForeignKey( |
154 |
159 |
Post, |
155 |
160 |
on_delete=models.CASCADE, |
156 |
161 |
null=False, |
157 |
162 |
) |
158 |
163 |
class meta: |
159 |
164 |
ordering = ['date'] # When printed, prints the oldest comment first. |
160 |
165 |
|
161 |
166 |
class FeedItem(models.Model): |
162 |
167 |
""" An item that shows up in the RSS feed.""" |
163 |
168 |
title = models.CharField(max_length=64) |
164 |
169 |
added = models.DateTimeField(auto_now_add=True) |
165 |
170 |
description = models.CharField(max_length=400) |
166 |
171 |
link = models.URLField() |
167 |
172 |
templates/blog/index.djhtml ¶
15 additions and 5 deletions.
View changes Hide changes
1 |
1 |
{% load i18n %} |
2 |
2 |
{% load static %} |
3 |
3 |
|
4 |
4 |
{% block stylesheets %} |
5 |
5 |
{{ block.super }} |
6 |
6 |
<style> |
7 |
7 |
img { |
8 |
8 |
width: 80%; |
9 |
9 |
display: block; |
10 |
10 |
margin-left: auto; |
11 |
11 |
margin-right: auto; |
12 |
12 |
} |
13 |
13 |
video { |
14 |
14 |
width: 80%; |
15 |
15 |
} |
16 |
16 |
</style> |
17 |
17 |
{% endblock %} |
18 |
18 |
|
19 |
19 |
{% block title %}{% trans "Maarten's blog" %}{% endblock title %} |
20 |
20 |
|
21 |
21 |
{% block description %}{% blocktrans %}The always coherently put together, yet |
22 |
22 |
fuzzy blog of whatever sprouts in my mind.{% endblocktrans %} |
23 |
23 |
{% endblock description %} |
24 |
24 |
|
25 |
25 |
{% block header %} |
26 |
26 |
<header> |
27 |
27 |
<h1>{% trans "Notepad of a student" %}</h1> |
28 |
28 |
<label for="nav-drawer-toggle">≡</label> |
29 |
29 |
</header> |
30 |
30 |
{% endblock header %} |
31 |
31 |
|
32 |
32 |
{% block nav %} |
33 |
33 |
<input id="nav-drawer-toggle" type="checkbox" /> |
34 |
34 |
<nav> |
35 |
35 |
<label for="nav-drawer-toggle"><!--🡨-->🡠</label> |
36 |
36 |
<h2>{% trans "Navigation" %}</h2> |
37 |
37 |
{% for title, date, blog_text, link in posts %} |
38 |
- | <a class="nav-link" href="{{ link }}">{{ title }}</a> |
+ |
38 |
{% for post in posts %} |
+ |
39 |
<a class="nav-link" href="{{ link }}">{{ title }}</a> |
39 |
40 |
{% endfor %} |
40 |
41 |
<hr class="half" /> |
+ |
42 |
<hr class="half" /> |
41 |
43 |
<a class="nav-link" href="{% url 'about-index' %}">{% trans "Front page" %}</a> |
42 |
44 |
</nav> |
43 |
45 |
{% endblock nav %} |
44 |
46 |
|
45 |
47 |
{% block main %} |
46 |
48 |
|
47 |
49 |
<section class="emphasis"> |
48 |
50 |
<h1>{% trans "Blog" %}</h1> |
49 |
51 |
<p> |
50 |
52 |
{% blocktrans %}Welcome to my blog. Here, I write |
51 |
53 |
about things that interest me. Politics, coding, |
52 |
54 |
studying, life, or anything else I fancy rambling |
53 |
55 |
about. If you're in luck, I may've written it in a |
54 |
56 |
language that you understand better than English. |
55 |
57 |
{% endblocktrans %} |
56 |
58 |
</p> |
57 |
59 |
</section> |
58 |
60 |
|
59 |
61 |
<div class="fab"> |
60 |
62 |
<a href="{% url 'blog-feed' %}" id="feed-fab"> |
61 |
63 |
<b>RSS</b> |
62 |
64 |
</a> |
63 |
65 |
</div> |
64 |
66 |
|
65 |
67 |
<section> |
66 |
68 |
<h1>Monthly</h1> |
67 |
69 |
<a class="btn fill" href="{% url "arkivo" %}"> {% translate "Open archive" %}</a> |
68 |
- | {% include "blog/monthly.html" %} |
+ |
70 |
{% include "blog/monthly.html" %} |
69 |
71 |
</section> |
70 |
72 |
|
71 |
73 |
<div class="cards"> |
72 |
74 |
{% for post in posts %} |
73 |
75 |
<div class="card"> |
74 |
76 |
<h3>{{ post.title }}</h3> |
75 |
77 |
<h4>{{ post.published|date:"DATE_FORMAT" }}</h4> |
76 |
78 |
{% if post.article %} |
77 |
79 |
{# No need for surrounding <p> tags #} |
78 |
80 |
{{ post.article_text|safe|truncatewords_html:100 }} |
79 |
- | {# Pandoc automatically makes those #} |
+ |
81 |
{# Pandoc automatically makes those #} |
80 |
82 |
<a class="btn outline" href="{% url 'blog-post' post.article.language_code post.article.slug %}"> |
81 |
83 |
📚 {% translate "Read on" %}</a> |
82 |
84 |
{% else %} |
83 |
85 |
{% get_current_language as CUR_LANG %} |
84 |
86 |
<p>{% blocktranslate cur_lang=CUR_LANG.name_translated %}This blog |
85 |
- | post is not available in {{ cur_lang }}.{% endblocktranslate %} |
+ |
87 |
{{ CUR_LANG.name_translated }} |
+ |
88 |
<p>{% blocktranslate with cur_lang=lang.name_translated %}This blog |
+ |
89 |
post is not available in {{ cur_lang }}.{% endblocktranslate %} |
86 |
90 |
{% blocktranslate count counter=post.articles|length %} |
87 |
91 |
However, it is available in |
88 |
92 |
{% plural %} |
89 |
93 |
If you want, you can choose to read it in one of these |
90 |
94 |
languages: <br> |
91 |
95 |
{% endblocktranslate %} |
92 |
96 |
{% for article in post.articles %} |
93 |
97 |
{% get_language_info for article.language_code as lang %} |
+ |
98 |
{% translate "Flemish" %}: |
+ |
99 |
{% elif article.language_code == "fr-be" %} |
+ |
100 |
{% translate "Belgian French" %}: |
+ |
101 |
{% else %} |
+ |
102 |
{% get_language_info for article.language_code as lang %} |
94 |
103 |
{{ lang.name_translated }}: |
95 |
104 |
<a href="{% url blog-post article.language_code article.slug %}"> |
96 |
- | {{ article.title }} |
+ |
105 |
<a href="{% url 'blog-post' article.language_code article.slug %}"> |
+ |
106 |
{{ article.title }} |
97 |
107 |
</a> |
98 |
108 |
{% if not forloop.last %}<br>{% endif %} |
99 |
109 |
{% endfor %} |
100 |
110 |
</p> |
101 |
111 |
{% endif %} |
102 |
112 |
</div> |
103 |
113 |
{% endfor %} |
104 |
114 |
{% comment %} |
105 |
115 |
{% for title, date, blog_text, link in posts %} |
106 |
116 |
<div class="card"> |
107 |
117 |
<h3>{{ title }}</h3> |
108 |
118 |
<h4>{{ date|date:"DATE_FORMAT" }}</h4> |
109 |
119 |
<a class="btn outline" href="{{link}}">📚 {% translate "Read on" %}</a> |
110 |
120 |
</div> |
111 |
121 |
{% endfor %} |
112 |
122 |
{% endcomment %} |
113 |
123 |
</div> |
114 |
124 |
|
115 |
125 |
{% endblock main %} |
116 |
126 |
templates/blog/locale/de/LC_MESSAGES/django.po ¶
32 additions and 28 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: 2018-04-09 20:09+0000\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.html:14 |
21 |
- | msgid "Maarten's blog" |
+ |
21 |
msgid "Maarten's blog" |
22 |
22 |
msgstr "" |
23 |
23 |
|
24 |
24 |
#: blog/templates/blog/index.html:16 |
25 |
- | msgid "" |
+ |
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.html:25 |
31 |
- | msgid "Blog" |
+ |
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:42 |
+ |
39 |
msgid "Front page" |
+ |
40 |
msgstr "" |
+ |
41 |
|
+ |
42 |
#: blog/templates/blog/index.djhtml:49 |
+ |
43 |
msgid "Blog" |
32 |
44 |
msgstr "" |
33 |
45 |
|
34 |
46 |
#: blog/templates/blog/index.html:27 |
35 |
- | msgid "" |
+ |
47 |
msgid "" |
36 |
48 |
"Welcome to my blog. Here, I write\n" |
37 |
49 |
" about things that interest me. Politics, coding,\n" |
38 |
- | " studying, life, or anything else I fancy rambling\n" |
39 |
- | " about. If you're in luck, I may've written it in a\n" |
40 |
- | " language that you understand better than English.\n" |
41 |
- | " " |
42 |
- | msgstr "" |
+ |
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 "" |
43 |
55 |
|
44 |
56 |
#: blog/templates/blog/index.html:56 blog/templates/blog/post.html:94 |
45 |
- | msgid "Read on" |
+ |
57 |
msgid "Open archive" |
+ |
58 |
msgstr "" |
+ |
59 |
|
+ |
60 |
#: blog/templates/blog/index.djhtml:78 blog/templates/blog/post.djhtml:94 |
+ |
61 |
msgid "Read on" |
46 |
62 |
msgstr "" |
47 |
63 |
|
48 |
64 |
#: blog/templates/blog/index.html:66 |
49 |
- | msgid "Never miss an update again." |
50 |
- | msgstr "" |
+ |
65 |
msgid "Weekly | Archief" |
+ |
66 |
msgstr "" |
51 |
67 |
|
52 |
68 |
#: blog/templates/blog/index.html:67 |
53 |
- | msgid "" |
54 |
- | "Getting info on updates to blog posts, major website changes, and other " |
55 |
- | "important\n" |
56 |
- | " news items is now easy and convenient with RSS.\n" |
57 |
- | " " |
58 |
- | msgstr "" |
+ |
69 |
msgid "Voor een duik terug in de geschiedenis van mijn publieke dagboek." |
+ |
70 |
msgstr "" |
59 |
71 |
|
60 |
72 |
#: blog/templates/blog/post.html:26 |
61 |
- | msgid "This article in other languages" |
+ |
73 |
msgid "This article in other languages" |
62 |
74 |
msgstr "Dieser Artikel in anderen Sprachen" |
63 |
75 |
|
64 |
- | #: blog/templates/blog/post.html:60 |
65 |
- | msgid "Comments" |
66 |
- | msgstr "" |
67 |
- | |
68 |
- | #: blog/templates/blog/post.html:75 |
69 |
- | msgid "Submit" |
70 |
- | msgstr "" |
71 |
- |
templates/blog/locale/es/LC_MESSAGES/django.po ¶
32 additions and 28 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: 2018-04-09 20:09+0000\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.html:14 |
21 |
- | msgid "Maarten's blog" |
+ |
21 |
msgid "Maarten's blog" |
22 |
22 |
msgstr "" |
23 |
23 |
|
24 |
24 |
#: blog/templates/blog/index.html:16 |
25 |
- | msgid "" |
+ |
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.html:25 |
31 |
- | msgid "Blog" |
32 |
- | msgstr "" |
+ |
31 |
msgid "Notepad of a student" |
+ |
32 |
msgstr "" |
33 |
33 |
|
34 |
34 |
#: blog/templates/blog/index.html:27 |
35 |
- | msgid "" |
36 |
- | "Welcome to my blog. Here, I write\n" |
37 |
- | " about things that interest me. Politics, coding,\n" |
38 |
- | " studying, life, or anything else I fancy rambling\n" |
39 |
- | " about. If you're in luck, I may've written it in a\n" |
40 |
- | " language that you understand better than English.\n" |
41 |
- | " " |
42 |
- | msgstr "" |
+ |
35 |
msgid "Navigation" |
+ |
36 |
msgstr "" |
43 |
37 |
|
44 |
38 |
#: blog/templates/blog/index.html:56 blog/templates/blog/post.html:94 |
45 |
- | msgid "Read on" |
46 |
- | msgstr "" |
+ |
39 |
msgid "Front page" |
+ |
40 |
msgstr "" |
47 |
41 |
|
48 |
42 |
#: blog/templates/blog/index.html:66 |
49 |
- | msgid "Never miss an update again." |
50 |
- | msgstr "" |
+ |
43 |
msgid "Blog" |
+ |
44 |
msgstr "" |
51 |
45 |
|
52 |
46 |
#: blog/templates/blog/index.html:67 |
53 |
- | msgid "" |
+ |
47 |
msgid "" |
54 |
48 |
"Getting info on updates to blog posts, major website changes, and other " |
55 |
- | "important\n" |
56 |
- | " news items is now easy and convenient with RSS.\n" |
57 |
- | " " |
58 |
- | msgstr "" |
+ |
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 "" |
59 |
55 |
|
60 |
56 |
#: blog/templates/blog/post.html:26 |
61 |
- | msgid "This article in other languages" |
62 |
- | msgstr "" |
+ |
57 |
msgid "Open archive" |
+ |
58 |
msgstr "" |
63 |
59 |
|
64 |
60 |
#: blog/templates/blog/post.html:60 |
65 |
- | msgid "Comments" |
66 |
- | msgstr "" |
+ |
61 |
msgid "Read on" |
+ |
62 |
msgstr "" |
+ |
63 |
|
+ |
64 |
#: blog/templates/blog/monthly_archive.djhtml:16 |
+ |
65 |
msgid "Weekly | Archief" |
+ |
66 |
msgstr "" |
67 |
67 |
|
68 |
68 |
#: blog/templates/blog/post.html:75 |
69 |
- | msgid "Submit" |
70 |
- | msgstr "" |
+ |
69 |
msgid "Voor een duik terug in de geschiedenis van mijn publieke dagboek." |
+ |
70 |
msgstr "" |
+ |
71 |
|
+ |
72 |
#: blog/templates/blog/post.djhtml:24 |
+ |
73 |
msgid "This article in other languages" |
+ |
74 |
msgstr "" |
71 |
75 |
templates/blog/locale/fr/LC_MESSAGES/django.po ¶
59 additions and 31 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: 2018-04-09 20:09+0000\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 |
"Language: fr\n" |
+ |
12 |
"Language-Team: \n" |
+ |
13 |
"Language: fr\n" |
12 |
14 |
"MIME-Version: 1.0\n" |
13 |
15 |
"Content-Type: text/plain; charset=UTF-8\n" |
14 |
16 |
"Content-Transfer-Encoding: 8bit\n" |
15 |
17 |
"Plural-Forms: nplurals=2; plural=(n > 1);\n" |
16 |
18 |
"Last-Translator: \n" |
17 |
- | "Language-Team: \n" |
18 |
- | "X-Generator: Poedit 3.0\n" |
19 |
19 |
|
20 |
20 |
#: blog/templates/blog/index.html:14 |
21 |
- | msgid "Maarten's blog" |
+ |
21 |
msgid "Maarten's blog" |
22 |
22 |
msgstr "Blog de Maarten" |
23 |
23 |
|
24 |
24 |
#: blog/templates/blog/index.html:16 |
25 |
- | msgid "" |
+ |
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.html:25 |
33 |
- | msgid "Blog" |
+ |
33 |
msgid "Notepad of a student" |
+ |
34 |
msgstr "" |
+ |
35 |
|
+ |
36 |
#: blog/templates/blog/index.djhtml:37 |
+ |
37 |
msgid "Navigation" |
+ |
38 |
msgstr "" |
+ |
39 |
|
+ |
40 |
#: blog/templates/blog/index.djhtml:42 |
+ |
41 |
msgid "Front page" |
+ |
42 |
msgstr "" |
+ |
43 |
|
+ |
44 |
#: blog/templates/blog/index.djhtml:49 |
+ |
45 |
msgid "Blog" |
34 |
46 |
msgstr "Blog" |
35 |
47 |
|
36 |
48 |
#: blog/templates/blog/index.html:27 |
37 |
- | msgid "" |
+ |
49 |
#, fuzzy |
+ |
50 |
#| msgid "" |
+ |
51 |
#| "Welcome to my blog. Here, I write\n" |
+ |
52 |
#| " about things that interest me. Politics, coding,\n" |
+ |
53 |
#| " studying, life, or anything else I fancy rambling\n" |
+ |
54 |
#| " about. If you're in luck, I may've written it in a\n" |
+ |
55 |
#| " language that you understand better than English.\n" |
+ |
56 |
#| " " |
+ |
57 |
msgid "" |
38 |
58 |
"Welcome to my blog. Here, I write\n" |
39 |
59 |
" about things that interest me. Politics, coding,\n" |
40 |
- | " studying, life, or anything else I fancy rambling\n" |
41 |
- | " about. If you're in luck, I may've written it in a\n" |
42 |
- | " language that you understand better than English.\n" |
43 |
- | " " |
44 |
- | msgstr "" |
+ |
60 |
" studying, life, or anything else I fancy rambling\n" |
+ |
61 |
" about. If you're in luck, I may've written it in a\n" |
+ |
62 |
" language that you understand better than English.\n" |
+ |
63 |
" " |
+ |
64 |
msgstr "" |
45 |
65 |
"Bienvenue dans mon blog. Ici j'écris des choses qui m'intéressent. La " |
46 |
66 |
"politique, le codage, l'étude, la vie, ou autre chose dont j'ai envie de me " |
47 |
67 |
"venger." |
48 |
68 |
|
49 |
69 |
#: blog/templates/blog/index.html:56 blog/templates/blog/post.html:94 |
50 |
- | msgid "Read on" |
+ |
70 |
msgid "Open archive" |
+ |
71 |
msgstr "" |
+ |
72 |
|
+ |
73 |
#: blog/templates/blog/index.djhtml:78 blog/templates/blog/post.djhtml:94 |
+ |
74 |
msgid "Read on" |
51 |
75 |
msgstr "Lire plus" |
52 |
76 |
|
53 |
77 |
#: blog/templates/blog/index.html:66 |
54 |
- | msgid "Never miss an update again." |
55 |
- | msgstr "Ne manquez plus jamais une mise à jour." |
56 |
- | |
+ |
78 |
msgid "Weekly | Archief" |
+ |
79 |
msgstr "" |
+ |
80 |
|
57 |
81 |
#: blog/templates/blog/index.html:67 |
58 |
- | msgid "" |
59 |
- | "Getting info on updates to blog posts, major website changes, and other " |
60 |
- | "important\n" |
61 |
- | " news items is now easy and convenient with RSS.\n" |
62 |
- | " " |
63 |
- | msgstr "" |
+ |
82 |
msgid "Voor een duik terug in de geschiedenis van mijn publieke dagboek." |
+ |
83 |
msgstr "" |
64 |
84 |
"Recevoir des mise à jours du blog, des grands changements du site web et " |
65 |
- | "d'autre information, c'est maitenant facile et pratique avec RSS." |
66 |
- | |
67 |
85 |
#: blog/templates/blog/post.html:26 |
68 |
- | msgid "This article in other languages" |
+ |
86 |
msgid "This article in other languages" |
69 |
87 |
msgstr "Cet article en autres langues" |
70 |
88 |
|
71 |
89 |
#: blog/templates/blog/post.html:60 |
72 |
- | msgid "Comments" |
73 |
- | msgstr "Commentaires" |
74 |
- | |
+ |
90 |
#~ msgstr "Ne manquez plus jamais une mise à jour." |
+ |
91 |
|
+ |
92 |
#~ msgid "" |
+ |
93 |
#~ "Getting info on updates to blog posts, major website changes, and other " |
+ |
94 |
#~ "important\n" |
+ |
95 |
#~ " news items is now easy and convenient with RSS.\n" |
+ |
96 |
#~ " " |
+ |
97 |
#~ msgstr "" |
+ |
98 |
#~ "Recevoir des mise à jours du blog, des grands changements du site web et " |
+ |
99 |
#~ "d'autre information, c'est maitenant facile et pratique avec RSS." |
+ |
100 |
|
+ |
101 |
#~ msgid "Comments" |
+ |
102 |
#~ msgstr "Commentaires" |
+ |
103 |
|
75 |
104 |
#: blog/templates/blog/post.html:75 |
76 |
- | msgid "Submit" |
77 |
- | msgstr "Envoyer" |
78 |
- | |
+ |
105 |
#~ msgstr "Envoyer" |
+ |
106 |
templates/blog/locale/nl/LC_MESSAGES/django.po ¶
59 additions and 31 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: 2018-04-09 20:09+0000\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 |
"Language: nl\n" |
+ |
12 |
"Language-Team: \n" |
+ |
13 |
"Language: nl\n" |
12 |
14 |
"MIME-Version: 1.0\n" |
13 |
15 |
"Content-Type: text/plain; charset=UTF-8\n" |
14 |
16 |
"Content-Transfer-Encoding: 8bit\n" |
15 |
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
16 |
18 |
"Last-Translator: \n" |
17 |
- | "Language-Team: \n" |
18 |
- | "X-Generator: Poedit 3.0\n" |
19 |
19 |
|
20 |
20 |
#: blog/templates/blog/index.html:14 |
21 |
- | msgid "Maarten's blog" |
+ |
21 |
msgid "Maarten's blog" |
22 |
22 |
msgstr "Maartens blog" |
23 |
23 |
|
24 |
24 |
#: blog/templates/blog/index.html:16 |
25 |
- | msgid "" |
+ |
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.html:25 |
33 |
- | msgid "Blog" |
+ |
33 |
msgid "Notepad of a student" |
+ |
34 |
msgstr "" |
+ |
35 |
|
+ |
36 |
#: blog/templates/blog/index.djhtml:37 |
+ |
37 |
msgid "Navigation" |
+ |
38 |
msgstr "" |
+ |
39 |
|
+ |
40 |
#: blog/templates/blog/index.djhtml:42 |
+ |
41 |
msgid "Front page" |
+ |
42 |
msgstr "" |
+ |
43 |
|
+ |
44 |
#: blog/templates/blog/index.djhtml:49 |
+ |
45 |
msgid "Blog" |
34 |
46 |
msgstr "Blog" |
35 |
47 |
|
36 |
48 |
#: blog/templates/blog/index.html:27 |
37 |
- | msgid "" |
+ |
49 |
#, fuzzy |
+ |
50 |
#| msgid "" |
+ |
51 |
#| "Welcome to my blog. Here, I write\n" |
+ |
52 |
#| " about things that interest me. Politics, coding,\n" |
+ |
53 |
#| " studying, life, or anything else I fancy rambling\n" |
+ |
54 |
#| " about. If you're in luck, I may've written it in a\n" |
+ |
55 |
#| " language that you understand better than English.\n" |
+ |
56 |
#| " " |
+ |
57 |
msgid "" |
38 |
58 |
"Welcome to my blog. Here, I write\n" |
39 |
59 |
" about things that interest me. Politics, coding,\n" |
40 |
- | " studying, life, or anything else I fancy rambling\n" |
41 |
- | " about. If you're in luck, I may've written it in a\n" |
42 |
- | " language that you understand better than English.\n" |
43 |
- | " " |
44 |
- | msgstr "" |
+ |
60 |
" studying, life, or anything else I fancy rambling\n" |
+ |
61 |
" about. If you're in luck, I may've written it in a\n" |
+ |
62 |
" language that you understand better than English.\n" |
+ |
63 |
" " |
+ |
64 |
msgstr "" |
45 |
65 |
"Welkom op mijn blog. Hier schrijf ik over onderwerpen die mij interesseren. " |
46 |
66 |
"Politiek, programmeren, studeren en het leven, plus alles waar ik goesting " |
47 |
67 |
"in heb om over te schrijven." |
48 |
68 |
|
49 |
69 |
#: blog/templates/blog/index.html:56 blog/templates/blog/post.html:94 |
50 |
- | msgid "Read on" |
+ |
70 |
msgid "Open archive" |
+ |
71 |
msgstr "" |
+ |
72 |
|
+ |
73 |
#: blog/templates/blog/index.djhtml:78 blog/templates/blog/post.djhtml:94 |
+ |
74 |
msgid "Read on" |
51 |
75 |
msgstr "Verder lezen" |
52 |
76 |
|
53 |
77 |
#: blog/templates/blog/index.html:66 |
54 |
- | msgid "Never miss an update again." |
55 |
- | msgstr "Mis nooit meer een update." |
56 |
- | |
+ |
78 |
msgid "Weekly | Archief" |
+ |
79 |
msgstr "" |
+ |
80 |
|
57 |
81 |
#: blog/templates/blog/index.html:67 |
58 |
- | msgid "" |
59 |
- | "Getting info on updates to blog posts, major website changes, and other " |
60 |
- | "important\n" |
61 |
- | " news items is now easy and convenient with RSS.\n" |
62 |
- | " " |
63 |
- | msgstr "" |
+ |
82 |
msgid "Voor een duik terug in de geschiedenis van mijn publieke dagboek." |
+ |
83 |
msgstr "" |
64 |
84 |
"Updates van blogartikelen, grote veranderingen op de website en andere " |
65 |
- | "belangrijke nieuwtjes zijn nu makkelijk te verkrijgen met RSS." |
66 |
- | |
67 |
85 |
#: blog/templates/blog/post.html:26 |
68 |
- | msgid "This article in other languages" |
+ |
86 |
msgid "This article in other languages" |
69 |
87 |
msgstr "Dit artikel in andere talen" |
70 |
88 |
|
71 |
89 |
#: blog/templates/blog/post.html:60 |
72 |
- | msgid "Comments" |
73 |
- | msgstr "Reacties" |
74 |
- | |
+ |
90 |
#~ msgstr "Mis nooit meer een update." |
+ |
91 |
|
+ |
92 |
#~ msgid "" |
+ |
93 |
#~ "Getting info on updates to blog posts, major website changes, and other " |
+ |
94 |
#~ "important\n" |
+ |
95 |
#~ " news items is now easy and convenient with RSS.\n" |
+ |
96 |
#~ " " |
+ |
97 |
#~ msgstr "" |
+ |
98 |
#~ "Updates van blogartikelen, grote veranderingen op de website en andere " |
+ |
99 |
#~ "belangrijke nieuwtjes zijn nu makkelijk te verkrijgen met RSS." |
+ |
100 |
|
+ |
101 |
#~ msgid "Comments" |
+ |
102 |
#~ msgstr "Reacties" |
+ |
103 |
|
75 |
104 |
#: blog/templates/blog/post.html:75 |
76 |
- | msgid "Submit" |
77 |
- | msgstr "Reageren" |
78 |
- | |
+ |
105 |
#~ msgstr "Reageren" |
+ |
106 |
urls.py ¶
2 additions and 2 deletions.
View changes Hide changes
1 |
- | |
+ |
1 |
|
2 |
2 |
from . import views # Imports the views from the same directory (which is views.py). |
3 |
3 |
|
4 |
4 |
urlpatterns = [ |
5 |
5 |
path('', views.index, name='blog-index'), |
6 |
6 |
path('feed.rss', views.rss, name='blog-feed'), |
7 |
7 |
path('<slug:language_code>/<slug:post_slug>', views.post, name='blog-post'), |
8 |
8 |
path('arkivo' views.archive, name='blog-archive'), |
9 |
- | ] |
+ |
9 |
] |
10 |
10 |
|
11 |
11 |
""" |
12 |
12 |
urlpatterns = [ |
13 |
13 |
url(r'^$', views.index, name='blog-index'), |
14 |
14 |
url(r'^feed.rss$', views.rss, name='blog-feed'), |
15 |
15 |
url(r'^(?P<language>(.){2})/(?P<post_slug>(.)+)$', views.post, name='blog-post-language'), |
16 |
16 |
url(r'^monthly-archive$', views.monthly_archive, name="monthly-archive"), |
17 |
17 |
url(r'^(?P<post_slug>(.)+)$', views.post, name='blog-post'), |
18 |
18 |
] |
19 |
19 |
""" |
20 |
20 |
views.py ¶
2 additions and 3 deletions.
View changes Hide changes
1 |
1 |
import subprocess |
2 |
- | import requests |
3 |
2 |
|
4 |
3 |
|
5 |
4 |
from django.utils.translation import ugettext as _ |
6 |
5 |
from django.shortcuts import get_object_or_404, render # This allows to render the template with the view here. It's pretty cool and important. |
7 |
6 |
from django.http import HttpResponseRedirect, HttpResponse |
8 |
7 |
from django.urls import reverse |
9 |
8 |
from django.template import loader # This allows to actually load the template. |
10 |
9 |
from .models import * |
11 |
10 |
from .forms import CommentForm |
12 |
11 |
from django.core.exceptions import ObjectDoesNotExist |
13 |
12 |
from django.utils import translation |
14 |
13 |
|
15 |
14 |
GERMAN = "de" |
16 |
15 |
SPANISH = "es" |
17 |
16 |
FRENCH = "fr" |
18 |
17 |
DUTCH = "nl" |
19 |
18 |
ENGLISH = "en" |
20 |
19 |
|
21 |
20 |
|
22 |
21 |
def get_available_post_languages(post): |
23 |
22 |
""" Returns the language codes for which a blog post exists. This function |
24 |
23 |
always returns English (because that field mustn't be empty). |
25 |
24 |
So say a blog post has an English, Dutch and French version (which means |
26 |
25 |
english_file, french_file and dutch_file aren't empty), the function will return {"en", |
27 |
26 |
"fr", "nl"}. """ |
28 |
27 |
available_languages = {ENGLISH} |
29 |
28 |
if post.german_file != "": |
30 |
29 |
available_languages.add(GERMAN) |
31 |
30 |
if post.spanish_file != "": |
32 |
31 |
available_languages.add(SPANISH) |
33 |
32 |
if post.french_file != "": |
34 |
33 |
available_languages.add(FRENCH) |
35 |
34 |
if post.dutch_file != "": |
36 |
35 |
available_languages.add(DUTCH) |
37 |
36 |
return available_languages |
38 |
37 |
|
39 |
38 |
def index(request): |
40 |
39 |
template = "blog/index.djhtml" |
41 |
40 |
posts = Post.objects.all() |
42 |
41 |
|
43 |
42 |
|
44 |
43 |
context = { |
45 |
44 |
'posts': posts, |
46 |
45 |
'navbar_title': _("Notepad from a student"), |
47 |
46 |
'navbar_backArrow': True, |
48 |
47 |
'stylesheet_name': "blog", |
49 |
48 |
} |
50 |
49 |
return render(request, template, context) |
51 |
50 |
|
52 |
51 |
def post(request, language_code, post_slug): |
53 |
52 |
if request.method == "POST": # Handling a reply if one is sent |
54 |
53 |
form = CommentForm(request.POST) |
55 |
54 |
for post in Post.objects.all(): |
56 |
55 |
if post.slug(language) == post_slug: |
57 |
56 |
form.post = post |
58 |
57 |
break |
59 |
58 |
if form.is_valid(): |
60 |
59 |
new_comment = form.save(commit=False) |
61 |
60 |
for post in Post.objects.all(): |
62 |
61 |
if post.slug(language) == post_slug: |
63 |
62 |
new_comment.post = post |
64 |
63 |
new_comment.save() |
65 |
64 |
|
66 |
65 |
template = "blog/post.djhtml" |
67 |
66 |
article = Article.objects.get(slug=post_slug, language_code=language_code) |
68 |
67 |
comments = Comment.objects.filter(post=article.post) |
69 |
68 |
context = { |
70 |
69 |
'article': article, |
71 |
70 |
'navbar_title': article.post.title(), |
72 |
71 |
'title': article.post.title(), |
73 |
72 |
'navbar_title': article.post.title(), |
74 |
73 |
'navbar_backArrow': True, |
75 |
74 |
'stylesheet_name': "blog", |
76 |
- | #posts = Post.objects.all() |
+ |
75 |
#posts = Post.objects.all() |
77 |
76 |
#comments = Comment.objects.filter(post |
78 |
77 |
""" |
79 |
78 |
for post in posts: |
80 |
79 |
if post.slug(language) == post_slug: |
81 |
80 |
comments = Comment.objects.filter(post=post) |
82 |
81 |
form = CommentForm() |
83 |
82 |
post_file = post.text_file(language) |
84 |
83 |
post_text = org_to_html(post_file.name) |
85 |
84 |
context = { |
86 |
85 |
'comments': comments, |
87 |
86 |
'form' : form, |
88 |
87 |
'human_post_title': post.title(language), |
89 |
88 |
'materialDesign_color': "brown", |
90 |
89 |
'materialDesign_accentColor': "blue", |
91 |
90 |
'article': post_text, |
92 |
91 |
'title': post.title(language), |
93 |
92 |
'navbar_title': post.title(language), |
94 |
93 |
'navbar_backArrow': False, |
95 |
94 |
'post_slug': post_slug, |
96 |
95 |
'footer_links': footer_links, |
97 |
96 |
'footer_description': footer_description, |
98 |
97 |
'stylesheet_name': "blog", |
99 |
98 |
} |
100 |
99 |
|
101 |
100 |
# Getting all available article links |
102 |
101 |
available = get_available_post_languages(post) |
103 |
102 |
if ENGLISH in available: |
104 |
103 |
context['english_link'] = reverse("blog-post-language", args=[ENGLISH, post.slug(ENGLISH)]) |
105 |
104 |
if DUTCH in available: |
106 |
105 |
context['dutch_link'] = reverse("blog-post-language", args=[DUTCH, post.slug(DUTCH)]) |
107 |
106 |
|
108 |
107 |
if FRENCH in available: |
109 |
108 |
context['french_link'] = reverse("blog-post-language", args=[FRENCH, post.slug(FRENCH)]) |
110 |
109 |
|
111 |
110 |
if SPANISH in available: |
112 |
111 |
context['spanish_link'] = reverse("blog-post-language", args=[SPANISH, post.slug(SPANISH)]) |
113 |
112 |
|
114 |
113 |
if GERMAN in available: |
115 |
114 |
context['german_link'] = reverse("blog-post-language", args=[GERMAN, post.slug(GERMAN)]) |
116 |
115 |
""" |
117 |
116 |
|
118 |
117 |
return render(request, template, context) |
119 |
118 |
|
120 |
119 |
def rss(request): |
121 |
120 |
template = "blog/feed.rss" |
122 |
121 |
context = { |
123 |
122 |
'items': FeedItem.objects.all(), |
124 |
123 |
} |
125 |
124 |
return render(request, template, context, content_type="application/rss+xml") |
126 |
125 |
|
127 |
126 |
|
128 |
127 |
def monthly_archive(request): |
129 |
- | template = "blog/monthly_archive.djhtml" |
+ |
128 |
template = "blog/monthly_archive.djhtml" |
130 |
129 |
language = translation.get_language() |
131 |
130 |
|
132 |
131 |
file_2017 = org_to_html("blog/weekly/2017.org") |
133 |
132 |
file_2018 = org_to_html("blog/weekly/2018.org") |
134 |
133 |
file_2019 = org_to_html("blog/weekly/2019.org") |
135 |
134 |
|
136 |
135 |
|
137 |
136 |
|
138 |
137 |
context = { |
139 |
138 |
't2017': file_2017, |
140 |
139 |
't2018': file_2018, |
141 |
140 |
't2019': file_2019, |
142 |
141 |
'materialDesign_color': "brown", |
143 |
142 |
'materialDesign_accentColor': "blue", |
144 |
143 |
'navbar_title': _("Weekly-archief"), |
145 |
144 |
'navbar_backArrow': True, |
146 |
145 |
'footer_links': footer_links, |
147 |
146 |
'footer_description': footer_description, |
148 |
147 |
'stylesheet_name': "blog", |
149 |
148 |
} |
150 |
149 |
return render(request, template, context) |
151 |
150 |