Add support for i18n and l10n
The majority of the words on the site are user-generated, but I've tried to surround everything else with localization calls. I don't know another language so this will have to do until someone decides to translate it lol Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
@@ -9,6 +9,7 @@ from django.core.files.base import ContentFile
|
||||
from django.dispatch import receiver
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext as _
|
||||
from PIL import Image
|
||||
from io import BytesIO
|
||||
|
||||
@@ -152,11 +153,11 @@ class Post(models.Model):
|
||||
# Make sure there is at least some content
|
||||
self.text = self.text.strip()
|
||||
if not (self.text or self.image):
|
||||
raise ValidationError("Please either write a message or upload an image")
|
||||
raise ValidationError(_("Please either write a message or upload an image"))
|
||||
# Image upload size check
|
||||
if self.image and self.image.size > settings.MAX_UPLOAD_SIZE:
|
||||
raise ValidationError(
|
||||
"Image supplied is too large. Maximum image size is %(max)s",
|
||||
_("Image supplied is too large. Maximum image size is %(max)s"),
|
||||
params={"max": settings.MAX_UPLOAD_SIZE},
|
||||
)
|
||||
# Rate limiting for posts
|
||||
@@ -169,7 +170,8 @@ class Post(models.Model):
|
||||
if delta < self.board.post_cooldown:
|
||||
cooldown = self.board.post_cooldown - delta
|
||||
raise ValidationError(
|
||||
f"Please wait {int(cooldown.total_seconds())} seconds before posting again"
|
||||
_(f"Please wait %(cooldown)s seconds before posting again"),
|
||||
params={"cooldown": int(cooldown.total_seconds())},
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{% extends "board/base.html" %}
|
||||
{% load post_body %}
|
||||
{% load l10n %}
|
||||
|
||||
{% block title %}
|
||||
{% with title=board.url %}
|
||||
@@ -22,15 +23,21 @@
|
||||
<div class="column"> </div>
|
||||
<div class="column">
|
||||
<div class="row">
|
||||
<h2>Create a new thread</h2>
|
||||
<h2>{% localize on %}Create a new thread{% endlocalize %}</h2>
|
||||
</div>
|
||||
<div class="row">
|
||||
<form method="post" action="{% url 'board:board_detail' url=board.url %}" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
<tr><td> </td><td>Max image size: {{ max_upload_size|measure_bytes }}</td></tr>
|
||||
<tr><td> </td><td><input type="submit" value="Submit" /></td></tr>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<td>
|
||||
{% localize on %}Max image size{% endlocalize %}:
|
||||
{{ max_upload_size|measure_bytes }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr><th> </th><td><input type="submit" value="Submit" /></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{% extends "board/base.html" %}
|
||||
{% load post_body %}
|
||||
{% load l10n %}
|
||||
|
||||
{% block title %}
|
||||
{% with title=board.url %}
|
||||
@@ -25,7 +26,13 @@
|
||||
{% csrf_token %}
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
<tr><td> </td><td><span class="post_form_image_specs">Max image size: {{ max_upload_size|measure_bytes }}</span></td></tr>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<td>
|
||||
{% localize on %}Max image size{% endlocalize %}:
|
||||
{{ max_upload_size|measure_bytes }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td> </td><td><input type="submit" value="Submit" /></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
{% load post_body %}
|
||||
{% load l10n %}
|
||||
<div id="p{{post.id}}">
|
||||
{# Image #}
|
||||
{% if post.thumbnail %}
|
||||
{# Image info #}
|
||||
<div class="post_image_info">
|
||||
File: <a href="{{post.image.url}}" target="_blank">{{post.original_image_name}}</a>
|
||||
{% localize on %}File{% endlocalize %}:
|
||||
<a href="{{post.image.url}}" target="_blank">{{post.original_image_name}}</a>
|
||||
({{post.image.size|measure_bytes}}, {{post.image_width}}x{{post.image_height}})
|
||||
</div>
|
||||
|
||||
@@ -23,17 +25,19 @@
|
||||
{% if post.subject %}
|
||||
<span class="post_subject">{{post.subject}}</span>
|
||||
{% endif %}
|
||||
by <span class="post_name">{{post.name|default:"Anonymous"}}</span>
|
||||
at {{post.created}}
|
||||
{% localize on %}by{% endlocalize %}
|
||||
<span class="post_name">{{post.name|default:"Anonymous"}}</span>
|
||||
{% localize on %}at{% endlocalize %}
|
||||
{{post.created}}
|
||||
{% if reply_link %}
|
||||
[<a href="{{post.get_absolute_url}}">Reply</a>]
|
||||
[<a href="{{post.get_absolute_url}}">{% localize on %}Reply{% endlocalize %}</a>]
|
||||
{% endif %}
|
||||
|
||||
{# "X replies elided" dialog for OPs on the board #}
|
||||
{% if replies_elided > 0 %}
|
||||
<br/>
|
||||
<span class="replies_elided">
|
||||
({{replies_elided}} replies elided, click reply to view)
|
||||
({% localize on %}{{replies_elided}} replies elided, click reply to view{% endlocalize %})
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user