+# Email Verification for Django
Email verification for new signups or new users is a two-step verification process and adds a layer for security for valid users.
- verify_email is a django app that provides this functionality right of the bat without any complex implementation.
+**verify_email** is a django app that provides this functionality right of the bat without any complex implementation.
-
+## Version Update (2.0.4)
+#### Bug fixes
+* Solves incompatibility with Django 5.1 (exception when initializing the TokenManager)
+* Fixes implementation of sending verification without a form (initial PR by )
-## Version Update (2.0.0):
+#### Enhancements
+* Verification emails can now be sent without a form if a user has already been created (eg when an admin wants to activate an inactive user) (Inspired by other PRs which were buggy, see above)
+* Modernized the Python packaging (removed warnings on build)
+* Use of GITHUB TOKEN to build
+
+## Version Update (v2.0.3)
+
+#### Bug Fixes:
+* Variable name in view function was different than the one passed in URL
+
+#### Enhancement:
+* Raising Http404 instead of returning 404 with a string so we can have the default 404 page
+* Using python's logging system instead of print statements
-
+
+## Version Update (2.0.2):
+#### Bug Fixes:
+* Using normal form instead of model forms to allow unique emails to re-request verification email
+* Not returning HTTP response in one of the exception blocks
+
+#### Enhancements:
+* Added new settings variable NEW_EMAIL_SENT_TEMPLATE to configure template shown after successful email sent.
+* Using get_username() method to account for apps that have changed the USERNAME_FIELD of their user model
+* migrations updated according to Django 4.x
+
+
+## Version Update (2.0.0):
> This version contains breaking changes and is not compatible with the previous version 1.0.9
@@ -29,7 +56,7 @@ Read about this feature here
* Using exceptions instead of normal string errors
* code cleanup
-
+
## The app takes care of :
* Settings user's is_active status to False.
diff --git a/manage.py b/manage.py
new file mode 100755
index 0000000..f54dd42
--- /dev/null
+++ b/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+ """Run administrative tasks."""
+ # os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cousinsmatter.settings')
+ try:
+ from django.core.management import execute_from_command_line
+ except ImportError as exc:
+ raise ImportError(
+ "Couldn't import Django. Are you sure it's installed and "
+ "available on your PYTHONPATH environment variable? Did you "
+ "forget to activate a virtual environment?"
+ ) from exc
+ execute_from_command_line(sys.argv)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..2f31cb8
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,35 @@
+[build-system]
+requires = ["hatchling"]
+build-backend = "hatchling.build"
+
+[project]
+name = "django-email-validation"
+version = "2.1.1"
+#dynamic = ["version"]
+authors = [
+ { name="Nitin Sharma", email="ns290670@gamil.com"},
+ { name="Olivier LEVILLAIN", email="levillain.olivier@gmail.com" },
+]
+description = " A Django app for email verification."
+readme = "README.md"
+requires-python = ">=3.6"
+dependencies=["django"]
+classifiers = [
+ "Environment :: Web Environment",
+ "Framework :: Django CMS :: 3.8",
+ "Intended Audience :: Developers",
+ "Programming Language :: Python :: 3.6",
+ "License :: OSI Approved :: MIT License",
+ "Operating System :: OS Independent"
+]
+
+keywords = ["email", "validation", "check"]
+
+[project.urls]
+Homepage = "https://github.com/foo290/Django-Verify-Email/"
+Repository = "https://github.com/foo290/Django-Verify-Email.git"
+Issues = "https://github.com/foo290/Django-Verify-Email//issues"
+Download = "https://github.com/foo290/Django-Verify-Email/archive/refs/tags/2.0.4.tar.gz"
+
+[tool.hatch.build.targets.wheel]
+packages = ["src/verify_email"]
\ No newline at end of file
diff --git a/setup.cfg b/setup.cfg
deleted file mode 100644
index ea5d1c7..0000000
--- a/setup.cfg
+++ /dev/null
@@ -1,20 +0,0 @@
-[metadata]
-name = Django-Verify-Email
-version = 2.0.3
-author = Nitin
-author_email = ns290670@gamil.com
-description = A Django app for email verification.
-url = https://github.com/foo290/Django-Verify-Email/
-packages =setuptools.find_packages()
-classifiers =
- Environment :: Web Environment
- Framework :: Django CMS :: 3.8
- Intended Audience :: Developers
- Programming Language :: Python :: 3.6
- License :: OSI Approved :: MIT License
- Operating System :: OS Independent
-python_requires = >=3.6
-
-[options]
-include_package_data = true
-packages = find:
diff --git a/setup.py b/setup.py
deleted file mode 100644
index 8ecafc6..0000000
--- a/setup.py
+++ /dev/null
@@ -1,9 +0,0 @@
-import setuptools
-
-with open("README.md", "r") as fh:
- long_description = fh.read()
-
-setuptools.setup(
- long_description=long_description,
- long_description_content_type="text/markdown",
-)
diff --git a/src/verify_email/__init__.py b/src/verify_email/__init__.py
new file mode 100644
index 0000000..9ae7461
--- /dev/null
+++ b/src/verify_email/__init__.py
@@ -0,0 +1 @@
+from .email_handler import * # noqa
diff --git a/verify_email/admin.py b/src/verify_email/admin.py
similarity index 100%
rename from verify_email/admin.py
rename to src/verify_email/admin.py
diff --git a/verify_email/app_configurations.py b/src/verify_email/app_configurations.py
similarity index 90%
rename from verify_email/app_configurations.py
rename to src/verify_email/app_configurations.py
index 5efa7b5..ffd8621 100644
--- a/verify_email/app_configurations.py
+++ b/src/verify_email/app_configurations.py
@@ -1,4 +1,5 @@
from django.conf import settings
+from django.utils.translation import gettext as _
class GetFieldFromSettings:
@@ -27,12 +28,12 @@ def __init__(self):
'subject': (
"SUBJECT",
- "Email Verification Mail"
+ _("Email Verification Mail")
),
'email_field_name': (
"EMAIL_FIELD_NAME",
- "email",
+ _("email"),
),
'html_message_template': (
@@ -57,8 +58,8 @@ def __init__(self):
'verification_success_msg': (
'VERIFICATION_SUCCESS_MSG',
- "Your Email is verified successfully and account has been activated. "
- "You can login with the credentials now..."
+ _("Your Email is verified successfully and account has been activated. "
+ "You can login with the credentials now...")
),
'verification_failed_template': (
@@ -73,7 +74,7 @@ def __init__(self):
'verification_failed_msg': (
'VERIFICATION_FAILED_MSG',
- "There is something wrong with this link, can't verify the user..."
+ _("There is something wrong with this link, can't verify the user...")
),
'request_new_email_template': (
'REQUEST_NEW_EMAIL_TEMPLATE',
diff --git a/verify_email/apps.py b/src/verify_email/apps.py
similarity index 100%
rename from verify_email/apps.py
rename to src/verify_email/apps.py
diff --git a/verify_email/confirm.py b/src/verify_email/confirm.py
similarity index 100%
rename from verify_email/confirm.py
rename to src/verify_email/confirm.py
diff --git a/verify_email/email_handler.py b/src/verify_email/email_handler.py
similarity index 88%
rename from verify_email/email_handler.py
rename to src/verify_email/email_handler.py
index b3fae6f..257270a 100644
--- a/verify_email/email_handler.py
+++ b/src/verify_email/email_handler.py
@@ -28,16 +28,20 @@ def __send_email(self, msg, useremail):
)
# Public :
- def send_verification_link(self, request, inactive_user=None, form=None):
-
+ def send_verification_link(self, request, form=None, inactive_user=None):
+
+ if not form and not inactive_user:
+ raise ValueError('Either form or inactive_user must be provided')
+ elif form and inactive_user:
+ raise ValueError('Either form or inactive_user must be provided')
if form:
inactive_user = form.save(commit=False)
-
+
inactive_user.is_active = False
inactive_user.save()
try:
-
+
useremail = form.cleaned_data.get(self.settings.get('email_field_name')) if form else inactive_user.email
if not useremail:
raise KeyError(
@@ -67,7 +71,7 @@ def resend_verification_link(self, request, email, **kwargs):
- UserAlreadyActive (by) get_user_by_token()
- MaxRetryExceeded (by) request_new_link()
- InvalidTokenOrEmail
-
+
These exception should be handled in caller function.
"""
inactive_user = kwargs.get('user')
@@ -92,10 +96,9 @@ def resend_verification_link(self, request, email, **kwargs):
return True
-
# These is supposed to be called outside of this module
-def send_verification_email(request, form):
- return _VerifyEmail().send_verification_link(request, form)
+def send_verification_email(request, form=None, inactive_user=None):
+ return _VerifyEmail().send_verification_link(request, form, inactive_user)
# These is supposed to be called outside of this module
diff --git a/verify_email/errors.py b/src/verify_email/errors.py
similarity index 100%
rename from verify_email/errors.py
rename to src/verify_email/errors.py
diff --git a/verify_email/forms.py b/src/verify_email/forms.py
similarity index 100%
rename from verify_email/forms.py
rename to src/verify_email/forms.py
diff --git a/src/verify_email/locale/de/LC_MESSAGES/django.mo b/src/verify_email/locale/de/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..ac37f96
Binary files /dev/null and b/src/verify_email/locale/de/LC_MESSAGES/django.mo differ
diff --git a/src/verify_email/locale/de/LC_MESSAGES/django.po b/src/verify_email/locale/de/LC_MESSAGES/django.po
new file mode 100644
index 0000000..ef4e4c4
--- /dev/null
+++ b/src/verify_email/locale/de/LC_MESSAGES/django.po
@@ -0,0 +1,506 @@
+# German Translations for NO NAME FOUND app.
+# Copyright (C) 2025 Olivier LEVILLAIN
+# This file is distributed under the same license as the application.
+# This file was generated from ../Django-Verify-Email/src/verify_email/locale/fr/LC_MESSAGES/django.po by [Auto-po-lyglot](https://github.com/leolivier/auto-po-lyglot)
+# using the granite3.1-dense:2b model. Depending on the model, it may contain some errors and should be reviewed
+# by a human translator. Also depending on the model, each translation can be preceded by an explanation provided
+# by the model.
+# Olivier LEVILLAIN , 2025.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.1.0\n"
+"Report-Msgid-Bugs-To: olivier@levillain.eu\n"
+"POT-Creation-Date: 2025-02-02 15:02+0100\n"
+"PO-Revision-Date: 2025-02-02 16:20+00:00\n"
+"\n"
+"Last-Translator: Auto-po-lyglot using granite3.1-dense:2b (https://github.com/leolivier/auto-po-lyglot)\n"
+"Language-Team: French \n"
+"Language: DE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. Explanation: The English phrase "Email Verification Mail" translates to
+#. German as "E-Mail-Bestätigungs-Nachricht". This translation maintains the
+#. original meaning, which refers to an email sent for verifying a recipient's
+#. email address.
+#: src/verify_email/app_configurations.py:31
+msgid "Email Verification Mail"
+msgstr "E-Mail-Bestätigungs-Nachricht"
+
+#. Explanation: The English word "email" is a noun referring to an electronic
+#. message sent via the internet, typically for communication between people
+#. using different systems. In German, this term translates directly as
+#. "E-Mail," preserving its meaning and maintaining consistency with the
+#. French translation.
+#. ```
+#. "E-Mail"
+#. ```
+#: src/verify_email/app_configurations.py:36
+msgid "email"
+msgstr "E-Mail"
+
+#. Explanation: The German translation maintains the meaning, tone, and nuance
+#. of the original English sentence while preserving proper grammar, spelling,
+#. and punctuation. It conveys that the user's email has been successfully
+#. verified and their account is now active, allowing them to log in using
+#. their provided credentials.
+#: src/verify_email/app_configurations.py:61
+msgid ""
+"Your Email is verified successfully and account has been activated. You can "
+"login with the credentials now..."
+msgstr ""
+"Dein E-Mail-Adresse wurde erfolgreich verifiziert und dein Konto wurde "
+"aktiviert. Du kannst nun mit den Zugangsdaten einloggen..."
+
+#. Explanation: The German translation maintains the meaning of the French
+#. sentence, which indicates that there is a problem with the link and
+#. verification of the user cannot be done. The phrase "et quelque chose ne va
+#. pas" translates to "there is something wrong," and "ne peut pas vérifier
+#. l'utilisateur" translates to "cannot verify the user." These translations
+#. are preserved in the German version, "Es gibt etwas Falsch mit diesem Link,
+#. die Authentifizierung des Benutzers kann nicht bestätigt werden."
+#: src/verify_email/app_configurations.py:77
+msgid "There is something wrong with this link, can't verify the user..."
+msgstr ""
+"Es gibt etwas Falsch mit diesem Link, die Authentifizierung des Benutzers "
+"kann nicht bestätigt werden."
+
+#. Explanation: The English phrase "Verify Email address" translates to German
+#. as "Verifiziere die E-Mail-Adresse". This German translation maintains the
+#. meaning of the original sentence, which is to confirm or check an email
+#. address. The use of "die" in this context refers to a specific, previously
+#. mentioned email address, and "E-Mail-Adresse" is the German term for "email
+#. address".
+#: src/verify_email/templates/verify_email/email_verification_msg.html:10
+msgid "Verify Email address"
+msgstr "Verifiziere die E-Mail-Adresse"
+
+#. Explanation: The English phrase "Account Activation" translates directly to
+#. German as "Kontoaktivierung". This is a noun phrase that indicates the
+#. action of enabling or turning on an account. In this context, it refers to
+#. the process of making an account functional and ready for use.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:52
+msgid "Account Activation"
+msgstr "Kontoaktivierung"
+
+#. Explanation: The English phrase "E-mail Confirmation" translates directly
+#. to German as "E-Mail-Bestätigung". This is a noun phrase in German, where
+#. "E-Mail" refers to the electronic mail and "Bestätigung" means
+#. confirmation. The use of hyphens in the English translation indicates that
+#. "E-mail" is a compound word, which is preserved in the German translation
+#. as well.
+#. ```
+#. "E-Mail-Bestätigung"
+#. ```
+#: src/verify_email/templates/verify_email/email_verification_msg.html:56
+msgid "E-mail Confirmation"
+msgstr "E-Mail-Bestätigung"
+
+#. Explanation: The English phrase "Greetings!" is a polite way to address
+#. someone, often used in formal or written contexts. In German, this
+#. translates directly to "Grüße!". The exclamation mark remains unchanged as
+#. it indicates enthusiasm and politeness.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:59
+msgid "Greetings!"
+msgstr "Grüße!"
+
+#. Explanation: The German translation maintains the original meaning and tone
+#. of the French sentence while preserving grammatical correctness and proper
+#. punctuation. It uses "Du" (you) as a formal address, which is appropriate
+#. for a professional context. The phrase "hast dieses Mail erhalten"
+#. translates to "received this mail," and "weil du versucht hast, ein Konto
+#. auf unserem Webportal zu erstellen" maintains the idea of attempting to
+#. create an account on the website. The instruction to click on the link for
+#. confirmation and activation is accurately conveyed in German as "klicke auf
+#. den Link unten."
+#: src/verify_email/templates/verify_email/email_verification_msg.html:60
+msgid ""
+"You received this mail because you attempted to make account on our website."
+" Please click on the link below to confirm the email and activate your "
+"account."
+msgstr ""
+"Du hast dieses Mail erhalten, weil du versucht hast, ein Konto auf unserem "
+"Webportal zu erstellen. Bitte klicke auf den Link unten, um die E-Mail zu "
+"bestätigen und dein Konto zu aktivieren."
+
+#. Explanation: The English phrase "Please verify your e-mail" is a polite
+#. request to confirm the validity of an electronic mail address. In German,
+#. this translates directly as "Bitte überprüfen Sie Ihr E-Mail," which
+#. maintains the same tone and formality. The French translation "Merci de
+#. vérfier ton email" can be interpreted as a more casual way of expressing
+#. the same request in French, but since we are focusing on preserving the
+#. English meaning and tone, the German translation is chosen for consistency.
+#. ```
+#. "Bitte überprüfen Sie Ihr E-Mail."
+#. ```
+#: src/verify_email/templates/verify_email/email_verification_msg.html:64
+msgid "Please verify your e-mail :"
+msgstr "Bitte überprüfen Sie Ihr E-Mail."
+
+#. Explanation: The English phrase "You'll be joining us right after the
+#. verification!" conveys that the action of joining will occur immediately
+#. following a verification process. This is accurately translated into German
+#. as "Du wirst uns nach der Überprüfung rejoinen," which means "You will join
+#. us just after the verification."
+#. The translation preserves the meaning, tone, and nuance of the original
+#. English sentence while adhering to proper grammar, spelling, and
+#. punctuation in German. The placeholder "%" is not translated as it does not
+#. carry any specific meaning or context within this sentence.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:73
+msgid "You'll be joining us right after the verification !"
+msgstr "Du wirst uns nach der Überprüfung rejoinen."
+
+#. Explanation: The English sentence is a polite greeting for joining, with
+#. the phrase "This mail machine generated" indicating that the email was
+#. automatically created by a system. The French translation maintains this
+#. meaning, and the German translation conveys the same sentiment while
+#. preserving the original structure and placeholders. The German version uses
+#. "Danke für die Teilnahme!" to express gratitude for joining, "diese E-Mail
+#. wurde von einer Maschine generiert" to indicate that it was created by a
+#. machine, and "Bitte nicht auf diese E-Mail antworten" to warn against
+#. responding. The HTML markers " " are preserved in the German translation
+#. as well.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:77
+msgid ""
+"Thanks for joining! This mail machine generated. Do not reply to "
+"this mail"
+msgstr ""
+"Danke für die Teilnahme! Diese E-Mail wurde von einer Maschine "
+"generiert. Bitte nicht auf diese E-Mail antworten."
+
+#. Explanation: The English phrase "Log In" translates to German as
+#. "Anmelden," which means the same - to log in or sign in. Both phrases
+#. indicate the action of entering a username and password to access an
+#. account or system.
+#. ```
+#. "Anmelden"
+#. ```
+#: src/verify_email/templates/verify_email/email_verification_successful.html:28
+msgid "Log In"
+msgstr "Anmelden"
+
+#. Explanation: The English phrase "Link Expired!" translates to German as
+#. "Verbindung abgelaufen!". This translation maintains the same tone and
+#. meaning, indicating that a link has expired. The use of "Verbindung"
+#. (connection) in German reflects the colloquial expression "link", while
+#. "abgelaufen" (expired) conveys the same idea of an expired connection or
+#. link.
+#: src/verify_email/templates/verify_email/link_expired.html:20
+msgid "Link Expired!"
+msgstr "Verbindung abgelaufen!"
+
+#. Explanation: The English sentence expresses that a link has fulfilled its
+#. purpose and cannot be validated anymore. This sentiment is preserved in the
+#. German translation, where "Der Link hat seine Lebensdauer erreicht" conveys
+#. that the link has lived out its intended use. The phrase "Es ist nicht
+#. möglich, einen toten Link zu validieren..." translates to "It is not
+#. possible to validate a dead link," maintaining the same meaning and tone as
+#. the original English sentence.
+#: src/verify_email/templates/verify_email/link_expired.html:26
+msgid "The link has lived its life :( Can not validate a dead link..."
+msgstr ""
+"Der Link hat seine Lebensdauer erreicht :(\", \"Es ist nicht möglich, einen "
+"toten Link zu validieren..."
+
+#. Explanation: The English phrase "Request Another one" translates to German
+#. as "Andere anfordern," which means "to request another." This translation
+#. maintains the meaning, tone, and nuance of the original English sentence.
+#. The word order in German follows a Subject-Verb-Object (SVO) pattern,
+#. similar to English, but with the verb coming after the object. In this
+#. case, "Andere" is the subject (requesters), "anfordern" is the verb (to
+#. request), and "einen" is the object (another item).
+#: src/verify_email/templates/verify_email/link_expired.html:35
+msgid "Request Another one"
+msgstr "Andere anfordern"
+
+#. Explanation: The English phrase "Request New Email for Verification"
+#. translates to German as "Anforderung eines neuen E-Mail-Adressen für die
+#. Bestätigung". This translation maintains the meaning of requesting a new
+#. email address specifically for verification purposes.
+#: src/verify_email/templates/verify_email/request_new_email.html:18
+msgid "Request New Email for Verification"
+msgstr "Anforderung eines neuen E-Mail-Adressen für die Bestätigung"
+
+#. Explanation: The English phrase "Request New Email" translates to German as
+#. "Anforderung eines neuen E-Mail-Accounts". This reflects the action of
+#. requesting a new email address, which is more accurately conveyed by using
+#. the term "E-Mail-Account" in German.
+#: src/verify_email/templates/verify_email/request_new_email.html:28
+msgid "Request New Email"
+msgstr "Anforderung eines neuen E-Mail-Accounts"
+
+#. Explanation: The English sentence indicates that the template usually needs
+#. to be modified by a user's own app. This is translated into German as
+#. "Normalerweise benötigt dieser Template Ihre eigene Anwendungstemplate,"
+#. which conveys the same meaning in German. The word order and structure are
+#. maintained for clarity, preserving the original sentence's tone and nuance.
+#: src/verify_email/templates/verify_email/request_new_email.html:33
+msgid "Usually this template needs to be changed by your own app's template"
+msgstr ""
+"Normalerweise benötigt dieser Template Ihre eigene Anwendungstemplate."
+
+#. Explanation: The English phrase "Method not allowed" indicates that the
+#. action or request is forbidden, which translates to German as "Methode
+#. nicht erlaubt". This maintains the meaning and tone of the original
+#. sentence.
+#. ```
+#. "Methode nicht erlaubt"
+#. ```
+#: src/verify_email/views.py:48
+msgid "Method not allowed"
+msgstr "Methode nicht erlaubt"
+
+#. Explanation: The English phrase "Verification Successful!" translates to
+#. German as "Verifizierung erfolgreich!". This translation maintains the
+#. positive affirmation of success in verification, preserving the tone and
+#. meaning from the original English sentence.
+#: src/verify_email/views.py:60
+msgid "Verification Successful!"
+msgstr "Verifizierung erfolgreich!"
+
+#. Explanation: The English phrase "There is something wrong with this
+#. link..." conveys the idea that there's a problem or anomaly with the
+#. provided link. The German translation "Es scheint, dass etwas mit diesem
+#. Link nicht stimmt" maintains this meaning by indicating an issue or
+#. discrepancy with the link in question.
+#. ```
+#. "Es scheint, dass etwas mit diesem Link nicht stimmt."
+#. ```
+#: src/verify_email/views.py:74
+msgid "There is something wrong with this link..."
+msgstr "Es scheint, dass etwas mit diesem Link nicht stimmt."
+
+#. Explanation: The English phrase "Verification Failed!" translates directly
+#. to German as "Verifizierung fehlgeschlagen!". This is a straightforward
+#. translation, maintaining the same tone and meaning. The exclamation mark in
+#. English indicates an error or failure, which is also conveyed by the
+#. exclamation point in German.
+#: src/verify_email/views.py:75
+msgid "Verification Failed!"
+msgstr "Verifizierung fehlgeschlagen!"
+
+#. Explanation: The English sentence expresses that the link has served its
+#. purpose and is no longer functional. This sentiment is preserved in German
+#. as "Der Link hat seine Lebensdauer erfüllt :(". The phrase "Request a new
+#. one!" translates to "Anfordern Sie einen neuen!", which maintains the same
+#. tone of urgency and request for a replacement link.
+#: src/verify_email/views.py:83
+msgid "The link has lived its life :( Request a new one!"
+msgstr ""
+"Der Link hat seine Lebensdauer erfüllt :(\", Bitte einen neuen anfordern!"
+
+#. Explanation: The English phrase "Expired!" is an exclamation indicating
+#. that something has passed its expiration date, which translates to German
+#. as "Abgelaufen!". This maintains the same tone and nuance of urgency.
+#: src/verify_email/views.py:84
+msgid "Expired!"
+msgstr "Abgelaufen!"
+
+#. Explanation: The English phrase "This link was modified before
+#. verification" indicates that the link's content or properties were altered
+#. prior to an official check. In German, this meaning is preserved as "Diese
+#. Verknüpfung wurde vor der Überprüfung geändert," where "Verknüpfung" refers
+#. to a connection or link, and "vor der Überprüfung" means "before
+#. verification." The word order in German follows the Subject-Verb-Object
+#. (SVO) pattern, similar to English.
+#: src/verify_email/views.py:94
+msgid "This link was modified before verification."
+msgstr "Diese Verknüpfung wurde vor der Überprüfung geändert."
+
+#. Explanation: The English sentence conveys that it is impossible to request
+#. another verification link due to a faulty link. This meaning is preserved
+#. in the German translation, where "Es ist nicht möglich" translates to "It
+#. is not possible," and "zu fordern" corresponds to "to demand." The phrase
+#. "mit einem defekten Link" in English is translated as "mit einem defekten
+#. Link" in German.
+#: src/verify_email/views.py:95
+msgid "Cannot request another verification link with faulty link."
+msgstr ""
+"Es ist nicht möglich, einen anderen Verifizierungslink mit einem defekten "
+"Link zu fordern."
+
+#. Explanation: The English phrase "Faulty Link Detected!" translates to
+#. German as "Fehlerhafter Link erkannt!". This translation maintains the
+#. meaning of the original sentence, which indicates that a faulty link has
+#. been detected. The use of "Fehlerhafter" in German conveys the idea of
+#. something being flawed or broken, similar to "faulty" in English.
+#: src/verify_email/views.py:96
+msgid "Faulty Link Detected!"
+msgstr "Fehlerhafter Link erkannt!"
+
+#. Explanation: This German translation maintains the meaning, tone, and
+#. nuance of the original English sentence. The phrase "You have exceeded the
+#. maximum verification requests!" is translated as "Du hast die maximale
+#. Anzahl an Verifizierungsanfragen überschritten!", which conveys the same
+#. idea that the user has gone beyond the allowed number of verification
+#. requests. The instruction to "Contact admin." is translated as "Wende dich
+#. an den Administrator.", preserving the command to reach out to the
+#. administrator for assistance.
+#: src/verify_email/views.py:104 src/verify_email/views.py:193
+msgid "You have exceeded the maximum verification requests! Contact admin."
+msgstr ""
+"Du hast die maximale Anzahl an Verifizierungsanfragen überschritten! Wende "
+"dich an den Administrator."
+
+#. Explanation: The English phrase "maxed out" means to have reached the limit
+#. or capacity of something, often in terms of spending money. In this
+#. context, it implies a state of having no more resources available. The
+#. French translation "Au maximum !" also conveys this idea, indicating that
+#. one has reached the highest point or limit. Therefore, the German
+#. translation "Maximales erreicht!" maintains this meaning while using
+#. appropriate German terminology for reaching the maximum capacity.
+#: src/verify_email/views.py:105 src/verify_email/views.py:194
+msgid "Maxed out!"
+msgstr "Maximales erreicht!"
+
+#. Explanation: The German translation maintains the meaning of the French
+#. sentence that the link is either invalid or has already been used. It
+#. conveys that verification cannot be performed using this specific link due
+#. to its status.
+#: src/verify_email/views.py:113 src/verify_email/views.py:202
+msgid ""
+"This link is invalid or been used already, we cannot verify using this link."
+msgstr ""
+"Diese Verbindung ist ungültig oder bereits verwendet worden, wir können sie "
+"nicht überprüfen."
+
+#. Explanation: The English phrase "Invalid Link" translates directly to
+#. German as "Ungültiger Link". This term accurately conveys the meaning of an
+#. invalid link, without any additional nuance. The French translation "Lien
+#. invalide" also means "invalid link", so no change is needed for consistency
+#. with the provided context.
+#: src/verify_email/views.py:114 src/verify_email/views.py:203
+msgid "Invalid Link"
+msgstr "Ungültiger Link"
+
+#. Explanation: The English phrase "404 User not found" translates to German
+#. as "404 Benutzer nicht gefunden". In this context, "User" refers to a user
+#. in the system, and "not found" indicates that the requested user could not
+#. be located. This translation maintains the meaning, tone, and nuance of the
+#. original English sentence while adhering to proper grammar, spelling, and
+#. punctuation in German.
+#: src/verify_email/views.py:118
+msgid "404 User not found"
+msgstr "404 Benutzer nicht gefunden"
+
+#. Explanation: The English phrase "User is already active" indicates that the
+#. user has been previously engaged or logged in. In German, this translates
+#. to "Benutzer ist bereits aktiv," which conveys a similar meaning of prior
+#. user activity. The word order and verb tense are preserved for consistency
+#. with the French translation.
+#. HTML placeholders: None
+#. ```
+#. English sentence: "
User is already active
"
+#. French translation: "
Utilisateur déjà actif
"
+#. ```
+#. German translation:
+#. ```
+#. "
Benutzer ist bereits aktiv
"
+#. ```
+#: src/verify_email/views.py:133
+msgid "User is already active"
+msgstr "Benutzer ist bereits aktiv"
+
+#. Explanation: The English phrase "You have requested another verification
+#. email!" translates to German as "Du hast eine weitere Überprüfungsmail
+#. angefordert!". This translation maintains the subject ("you") and action
+#. ("requested"), while preserving the meaning of requesting an additional
+#. verification email. The French translation "Tu as demandé un autre courriel
+#. de vérification !" is used to ensure consistency with the context,
+#. indicating that the person has asked for a second verification email.
+#: src/verify_email/views.py:142 src/verify_email/views.py:165
+msgid "You have requested another verification email!"
+msgstr "Du hast eine weitere Überprüfungsmail angefordert!"
+
+#. Explanation: This German translation maintains the meaning, tone, and
+#. nuance of the original English sentence. The phrase "Your verification link
+#. has been sent" is translated as "Dein Verifizierungslink wurde gesendet,"
+#. where "Dein" means "your," "Verifizierungslink" translates to "verification
+#. link," and "wurde gesendet" conveys the action of sending. The use of
+#. "Dein" in German, similar to its English counterpart, ensures consistency
+#. with the French translation.
+#: src/verify_email/views.py:143 src/verify_email/views.py:166
+msgid "Your verification link has been sent"
+msgstr "Dein Verifizierungslink wurde gesendet."
+
+#. Explanation: The English phrase "Email Sent!" translates to German as
+#. "E-Mail gesendet!". This translation maintains the meaning, tone, and
+#. nuance of the original English sentence. In this context, "gesendet" is a
+#. past participle form of the verb "senden", which means "to send". The
+#. exclamation mark at the end of the French phrase is preserved in the German
+#. translation as well, indicating excitement or confirmation that an email
+#. has been sent.
+#: src/verify_email/views.py:144 src/verify_email/views.py:167
+msgid "Email Sent!"
+msgstr "E-Mail gesendet!"
+
+#. Explanation: The English phrase "Something went wrong during sending email
+#. :" is translated to German as "Etwas ist schiefgegangen beim Versenden des
+#. E-Mails :(". This translation maintains the negative sentiment and the
+#. context of an issue occurring while sending an email. The colon and
+#. parentheses are preserved in their original positions, reflecting the
+#. English structure.
+#: src/verify_email/views.py:171
+msgid "Something went wrong during sending email :("
+msgstr "Etwas ist schiefgegangen beim Versenden des E-Mails :-)"
+
+#. Explanation: The English sentence conveys that the system cannot locate a
+#. user associated with a specific email. The German translation "Benutzer
+#. nicht gefunden, der mit dem angegebenen E-Mail verknüpft ist!" maintains
+#. this meaning while preserving the tone and nuance of the original text. The
+#. use of "nicht gefunden" (not found) in German mirrors the English phrase,
+#. and "verknüpft" (associated) conveys a similar sense to the French
+#. "associé".
+#: src/verify_email/views.py:175
+msgid "User not found associated with given email!"
+msgstr ""
+"Benutzer nicht gefunden, der mit dem angegebenen E-Mail verknüpft ist!"
+
+#. Explanation: The English phrase "User Not Found" translates directly to
+#. German as "Benutzer nicht gefunden". This literal translation maintains the
+#. meaning and tone of the original English sentence, indicating that a user
+#. could not be located. The French translation "Utilisateur non trouvé" is
+#. also accurately translated into German as "Benutzer nicht gefunden",
+#. preserving its meaning and nuance.
+#: src/verify_email/views.py:177
+msgid "User Not Found"
+msgstr "Benutzer nicht gefunden"
+
+#. Explanation: The English phrase "Internal server error!" is a direct
+#. translation of the French phrase "Erreur de serveur interne !". Both
+#. phrases convey the same meaning, indicating an internal issue with the
+#. server. In German, this translates to "Interner Serverfehler!", which
+#. maintains the original tone and nuance. The exclamation mark is preserved
+#. in both translations for emphasis.
+#: src/verify_email/views.py:181 src/verify_email/views.py:185
+msgid "Internal server error!"
+msgstr "Interner Serverfehler!"
+
+#. Explanation: The English phrase "This user's account is already active"
+#. indicates that the account of a specific user is currently operational. In
+#. German, this translates to "Dieses Benutzer-Konto ist bereits aktiv," where
+#. "dieses Benutzer-Konto" refers to the account of a particular user and "ist
+#. bereits aktiv" means "is already active." The use of "dieses" as a definite
+#. article in German maintains the specificity of the English phrase.
+#. ```
+#. "Dieses Benutzer-Konto ist bereits aktiv."
+#. ```
+#: src/verify_email/views.py:211
+msgid "This user's account is already active"
+msgstr "Dieses Benutzer-Konto ist bereits aktiv."
+
+#. Explanation: The English phrase "Already Verified!" conveys the same
+#. meaning as the French "Déjà vérifié!". Both indicate that something has
+#. been checked or confirmed. In German, this translates to "Schon
+#. verifiziert!", which maintains the affirmative tone and the idea of
+#. confirmation.
+#. ```
+#. "Schon verifiziert!"
+#. ```
+#: src/verify_email/views.py:212
+msgid "Already Verified!"
+msgstr "Schon verifiziert!"
diff --git a/src/verify_email/locale/es/LC_MESSAGES/django.mo b/src/verify_email/locale/es/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..cfbfb00
Binary files /dev/null and b/src/verify_email/locale/es/LC_MESSAGES/django.mo differ
diff --git a/src/verify_email/locale/es/LC_MESSAGES/django.po b/src/verify_email/locale/es/LC_MESSAGES/django.po
new file mode 100644
index 0000000..35ecaab
--- /dev/null
+++ b/src/verify_email/locale/es/LC_MESSAGES/django.po
@@ -0,0 +1,530 @@
+# Spanish Translations for NO NAME FOUND app.
+# Copyright (C) 2025 Olivier LEVILLAIN
+# This file is distributed under the same license as the application.
+# This file was generated from ../Django-Verify-Email/src/verify_email/locale/fr/LC_MESSAGES/django.po by [Auto-po-lyglot](https://github.com/leolivier/auto-po-lyglot)
+# using the granite3.1-dense:2b model. Depending on the model, it may contain some errors and should be reviewed
+# by a human translator. Also depending on the model, each translation can be preceded by an explanation provided
+# by the model.
+# Olivier LEVILLAIN , 2025.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.1.0\n"
+"Report-Msgid-Bugs-To: olivier@levillain.eu\n"
+"POT-Creation-Date: 2025-02-02 15:02+0100\n"
+"PO-Revision-Date: 2025-02-02 16:01+00:00\n"
+"\n"
+"Last-Translator: Auto-po-lyglot using granite3.1-dense:2b (https://github.com/leolivier/auto-po-lyglot)\n"
+"Language-Team: French \n"
+"Language: ES\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. Explanation: The English phrase "Email Verification Mail" translates to
+#. Spanish as "Correo de verificación de dirección de correo electrónico."
+#. This translation maintains the meaning of the original sentence, which
+#. refers to an email used for verifying a recipient's email address. The
+#. French translation "Courriel de vérification d'adresse mail" indicates that
+#. it is also an email for verification purposes, and this Spanish translation
+#. reflects the same concept while preserving the original English phrase's
+#. meaning.
+#: src/verify_email/app_configurations.py:31
+msgid "Email Verification Mail"
+msgstr "Correo de verificación de dirección de correo electrónico"
+
+#. Explanation: The English word "email" translates to the Spanish term
+#. "correo electrónico," which directly corresponds to the French phrase
+#. "courriel." Both terms refer to electronic mail, and they maintain their
+#. meaning and nuance when translated into Spanish.
+#: src/verify_email/app_configurations.py:36
+msgid "email"
+msgstr "Correo electrónico"
+
+#. Explanation: The English sentence indicates that the user's email has been
+#. successfully verified and their account has been activated, allowing them
+#. to log in with their provided credentials. This is accurately translated
+#. into Spanish as "Tu correo electrónico ha sido verificado con éxito y tu
+#. cuenta ha sido activada. Ahora puedes iniciar sesión con tus
+#. credenciales..." The use of "ahora" emphasizes the immediacy of being able
+#. to log in, and "con tus credenciales" maintains the original meaning of
+#. using provided credentials for login.
+#: src/verify_email/app_configurations.py:61
+msgid ""
+"Your Email is verified successfully and account has been activated. You can "
+"login with the credentials now..."
+msgstr ""
+"Tu correo electrónico ha sido verificado con éxito y tu cuenta ha sido "
+"activada. Ahora puedes iniciar sesión con tus credenciales..."
+
+#. Explanation: The English sentence indicates that there is a problem with
+#. the link and user verification cannot be performed. This is accurately
+#. translated into Spanish as "Hay algo mal con este enlace, no se puede
+#. verificar al usuario...". The use of "algo" (something) in Spanish
+#. maintains the meaning of ambiguity from the English phrase "there is
+#. something wrong with this link".
+#: src/verify_email/app_configurations.py:77
+msgid "There is something wrong with this link, can't verify the user..."
+msgstr "Hay algo mal con este enlace, no se puede verificar al usuario..."
+
+#. Explanation: The English phrase "Verify Email address" translates to
+#. Spanish as "Verifique la dirección de correo electrónico," which literally
+#. means "Check the email address." This translation maintains the meaning and
+#. tone of the original English sentence, indicating an action of confirming
+#. or checking an email address.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:10
+msgid "Verify Email address"
+msgstr "Verifique la dirección de correo electrónico"
+
+#. Explanation: The English phrase "Account Activation" translates directly to
+#. Spanish as "Activación del cuenta," where "del cuenta" is a possessive
+#. adjective indicating ownership of the account. This maintains the meaning
+#. and nuance of the original sentence, which refers to the process of
+#. enabling or making an account functional.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:52
+msgid "Account Activation"
+msgstr "Activación del cuenta"
+
+#. Explanation: The English phrase "E-mail Confirmation" translates to Spanish
+#. as "Confirmación del e-mail," which directly corresponds to the provided
+#. French translation, "Confirmation de l'e-mail." Both translations convey
+#. the same meaning, indicating a confirmation related to an email.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:56
+msgid "E-mail Confirmation"
+msgstr "Confirmación del correo electrónico"
+
+#. Explanation: The English phrase "Greetings!" is a formal way to say hello,
+#. similar to the French "Salut!". In Spanish, this translates directly as
+#. "¡Hola!", which maintains the same level of formality.
+#. English sentence: "%(name)s is coming to visit.", French translation:
+#. "%(nom)s va venir visiter."
+#. Spanish translation: "%(nombre)s está llegando a visitar."
+#. Explanation: The English placeholder "%(name)" represents the person's
+#. name, while in French it translates as "%(nom)". In Spanish, this
+#. placeholder is translated as "%(nombre)", which also signifies the person's
+#. name. The verb "is coming" in English corresponds to "está llegando" in
+#. Spanish, and "to visit" remains unchanged.
+#. English sentence: "
Welcome to our website!
", French translation:
+#. "
Bienvenue sur notre site web!
"
+#. Spanish translation: "
¡Bienvenido a nuestro sitio web!
"
+#. Explanation: The HTML tag
in English signifies the main heading of the
+#. webpage, which translates to
in French and Spanish. The phrase
+#. "Welcome to our website!" remains consistent across all three languages.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:59
+msgid "Greetings!"
+msgstr "¡Hola!"
+
+#. Explanation: This Spanish translation maintains the meaning and tone of the
+#. French sentence while adhering to proper grammar, spelling, and
+#. punctuation. The phrase "You received this mail" is translated as
+#. "Recibiste este correo electrónico," which conveys the same idea that the
+#. recipient got an email. The action described in English ("attempted to make
+#. account") is translated as "intentaste de crear una cuenta" in Spanish,
+#. emphasizing the attempt to create a website account.
+#. The instruction to confirm the email and activate the account remains
+#. consistent in both translations. The use of "por favor" (Spanish for
+#. "please") ensures politeness, which is preserved from the French original.
+#. The link provided in the English sentence is translated as "haz clic en el
+#. enlace a continuación," maintaining its function as a call to action.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:60
+msgid ""
+"You received this mail because you attempted to make account on our website."
+" Please click on the link below to confirm the email and activate your "
+"account."
+msgstr ""
+"Recibiste este correo electrónico porque intentaste crear una cuenta en "
+"nuestro sitio web. Por favor, haz clic en el enlace a continuación para "
+"confirmar tu dirección de correo electrónico y activar tu cuenta."
+
+#. Explanation: The English phrase "Please verify your e-mail" translates to
+#. Spanish as "Por favor, verifique su correo electrónico," which maintains
+#. the polite tone and request for action. The French translation "Merci de
+#. vérfier ton email" is used as contextual information to help clarify that
+#. the English phrase refers to verifying an e-mail address. In Spanish, this
+#. translates to "Gracias por verificar su correo electrónico," preserving the
+#. politeness and request for action.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:64
+msgid "Please verify your e-mail :"
+msgstr "Por favor, verifique su correo electrónico."
+
+#. Explanation: The English sentence conveys that the action of joining will
+#. occur immediately following verification. This is accurately translated
+#. into Spanish as "Tú te unirás a nosotros justo después de la verificación,"
+#. which means "You will join us right after the verification."
+#: src/verify_email/templates/verify_email/email_verification_msg.html:73
+msgid "You'll be joining us right after the verification !"
+msgstr "Tú te unirás a nosotros justo después de la verificación."
+
+#. Explanation: The English sentence is a polite greeting, acknowledging the
+#. recipient's participation in an event or group (thank you for joining). The
+#. French translation maintains this sentiment while conveying that the email
+#. was automatically generated by a machine. The Spanish translation reflects
+#. this meaning by saying "Gracias por unirse!" which translates to "Thank you
+#. for joining!".
+#. The HTML markers " " are preserved in their semantic location,
+#. separating the greeting from the rest of the message. In Spanish, these
+#. markers are replaced with the appropriate punctuation (a comma) to maintain
+#. readability and clarity. The phrase "Mail généré par une machine" is
+#. translated as "Este correo electrónico fue generado por una máquina", which
+#. means "This email was generated by a machine".
+#. The final part of the English sentence, "Do not reply to this mail," is
+#. translated into Spanish as "No responda a este correo electrónico." This
+#. maintains the original meaning and tone.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:77
+msgid ""
+"Thanks for joining! This mail machine generated. Do not reply to "
+"this mail"
+msgstr ""
+"Gracias por unirse! Este correo electrónico fue generado por una "
+"máquina. No responda a este correo electrónico."
+
+#. Explanation: The English phrase "Log In" translates to the Spanish word
+#. "Ingresar," which means "to enter." This is consistent with the French
+#. translation, "Connexion," which also means "connection" or "login." Both
+#. phrases convey the idea of entering a system or account.
+#: src/verify_email/templates/verify_email/email_verification_successful.html:28
+msgid "Log In"
+msgstr "Ingreso"
+
+#. Explanation: The English phrase "Link Expired!" translates to Spanish as
+#. "El enlace ha expirado," which means "The link has expired." This
+#. translation maintains the meaning, tone, and nuance of the original English
+#. sentence.
+#: src/verify_email/templates/verify_email/link_expired.html:20
+msgid "Link Expired!"
+msgstr "El enlace ha expirado."
+
+#. Explanation: The English phrase "The link has lived its life :(" conveys
+#. the idea that something is sad or disappointing about a link that should
+#. have been active but isn't, hence the use of emojis to express this
+#. sentiment. In Spanish, we maintain this emotional tone by using the same
+#. words and emojis: "El enlace ha vivido su vida :(". The French translation
+#. "Le lien a vécu sa vie :( Impossible de valider un lien mort..." translates
+#. to "The link has lived its life :( It is impossible to validate a dead
+#. link...", which we preserve in Spanish as "El enlace ha vivido su vida :(".
+#. The use of the colon and parentheses in both English and French indicates
+#. an interjection or exclamation, so it's crucial that this structure remains
+#. consistent across translations.
+#: src/verify_email/templates/verify_email/link_expired.html:26
+msgid "The link has lived its life :( Can not validate a dead link..."
+msgstr "El enlace ha vivido su vida :(\"."
+
+#. Explanation: The English phrase "Request Another one" translates to Spanish
+#. as "Pida otro," which means "Ask for another." In this context, the word
+#. "another" refers to a second item or occurrence. Therefore, "Pida otro"
+#. conveys the same meaning in Spanish, indicating that the speaker is asking
+#. for a second item or event.
+#: src/verify_email/templates/verify_email/link_expired.html:35
+msgid "Request Another one"
+msgstr "Pida otro"
+
+#. Explanation: This Spanish translation maintains the meaning of the English
+#. phrase, which is to request a new email for verification. The word order
+#. and structure are consistent with Spanish grammar, preserving the tone and
+#. nuance of the original sentence.
+#: src/verify_email/templates/verify_email/request_new_email.html:18
+msgid "Request New Email for Verification"
+msgstr "Solicitar un nuevo correo electrónico para verificación"
+
+#. Explanation: The English phrase "Request New Email" translates to Spanish
+#. as "Solicitar una nueva dirección de correo electrónico," which means
+#. "Request a new email address." This translation maintains the meaning,
+#. tone, and nuance of the original English sentence while preserving proper
+#. grammar, spelling, and punctuation in Spanish. The placeholder
+#. "%(email_request)s" is not present in this sentence, so it is not
+#. translated.
+#: src/verify_email/templates/verify_email/request_new_email.html:28
+msgid "Request New Email"
+msgstr "Solicitar una nueva dirección de correo electrónico."
+
+#. Explanation: The English sentence indicates that the template is typically
+#. adjusted by a specific app's template. This meaning is preserved in Spanish
+#. with "De manera habitual," which translates to "Usually" or "Typically."
+#. The phrase "por el plantilla de tu propia aplicación" directly corresponds
+#. to "by your own app's template" and maintains the same semantic structure,
+#. indicating that the modification comes from a custom application.
+#: src/verify_email/templates/verify_email/request_new_email.html:33
+msgid "Usually this template needs to be changed by your own app's template"
+msgstr ""
+"De manera habitual, este plantilla debe ser modificada por el plantilla de "
+"tu propia aplicación."
+
+#. Explanation: The English phrase "Method not allowed" indicates that the
+#. requested action is forbidden for the given context, which translates to
+#. Spanish as "Metodo no permitido." This maintains the meaning and tone of
+#. the original sentence.
+#. English sentence: "%(follower_name)s has liked %(post_title)s on
+#. %(platform)s", French translation: "%(follower_name)s a aimé %(post_title)s
+#. sur %(platform)s"
+#. Spanish translation: "%(follower_name)s ha gustado %(post_title)s en
+#. %(platform)s"
+#. Explanation: The English sentence describes the action of liking a post on
+#. a specific platform by a follower. This translates to Spanish as "has
+#. gustado," which means "liked." The placeholders are kept in their original
+#. positions, and the meaning is preserved.
+#. English sentence: "
Welcome to our website
", French translation:
+#. "
Bienvenue sur notre site web
"
+#. Spanish translation: "
¡Bienvenido a nuestro sitio web!
"
+#. Explanation: The English sentence is an HTML heading indicating the welcome
+#. message for a website. This translates to Spanish as "Bienvenue sur notre
+#. site web," which means "Welcome to our website." The HTML tags are
+#. preserved in their original positions, and the meaning is maintained.
+#: src/verify_email/views.py:48
+msgid "Method not allowed"
+msgstr "Metodo no permitido"
+
+#. Explanation: The English phrase "Verification Successful!" translates
+#. directly to Spanish as "Verificación exitosa!". This translation maintains
+#. the positive affirmation and successful outcome conveyed in the original
+#. English sentence. The exclamation mark is also preserved, indicating
+#. excitement or triumph.
+#: src/verify_email/views.py:60
+msgid "Verification Successful!"
+msgstr "Verificación exitosa!"
+
+#. Explanation: The English phrase "There is something wrong with this
+#. link..." implies a problem or issue with the given link. In Spanish, this
+#. meaning is preserved as "Hay algo mal con este enlace...", where "algo"
+#. means "something," and "mal" means "wrong." This translation maintains the
+#. tone of caution and potential concern about the link's functionality.
+#: src/verify_email/views.py:74
+msgid "There is something wrong with this link..."
+msgstr "Hay algo mal con este enlace..."
+
+#. Explanation: The English phrase "Verification Failed!" conveys the same
+#. meaning as the French phrase "Vérification échouée!". Both indicate that a
+#. verification process has not been successful. In Spanish, this translates
+#. to "Verificación fallida!", maintaining the same tone and nuance of failure
+#. in the verification process. The placeholder "%(verification_result)s" is
+#. not present in this sentence, so it remains unchanged.
+#: src/verify_email/views.py:75
+msgid "Verification Failed!"
+msgstr "Verificación fallida!"
+
+#. Explanation: The English phrase "The link has lived its life :(" conveys
+#. that the link is no longer functional or operational, and it's requesting a
+#. new one. This sentiment is preserved in Spanish as "El enlace ha vivido su
+#. vida :(". The use of parentheses to indicate sadness is also maintained in
+#. Spanish with the same punctuation.
+#: src/verify_email/views.py:83
+msgid "The link has lived its life :( Request a new one!"
+msgstr "El enlace ha vivido su vida :(\"."
+
+#. Explanation: The English phrase "Expired!" is an exclamation indicating
+#. that something has passed its due date or time limit. In Spanish, this
+#. meaning remains the same, and we use the word "expirado" to convey the same
+#. idea. The exclamation mark is also preserved in Spanish as it indicates
+#. emphasis and urgency.
+#: src/verify_email/views.py:84
+msgid "Expired!"
+msgstr "Expirado!"
+
+#. Explanation: The English phrase "This link was modified before
+#. verification" indicates that the link underwent changes prior to being
+#. checked or validated. This meaning is preserved in Spanish as "Este enlace
+#. fue modificado antes de la verificación," where "este" refers to the link,
+#. and "modificado" means "modified." The verb "fue" (was) conveys that this
+#. action occurred before the process of verification.
+#: src/verify_email/views.py:94
+msgid "This link was modified before verification."
+msgstr "Este enlace fue modificado antes de la verificación."
+
+#. Explanation: The English sentence states that it is not possible to request
+#. another verification link due to a faulty link. This meaning is preserved
+#. in the Spanish translation, "No es posible solicitar otro enlace de
+#. verificación con un enlace defectuoso," where "no es posible" translates to
+#. "is not possible," and "solicitar" means "to request." The phrase "con un
+#. enlace defectuoso" maintains the idea of a faulty link.
+#: src/verify_email/views.py:95
+msgid "Cannot request another verification link with faulty link."
+msgstr ""
+"No es posible solicitar otro enlace de verificación con un enlace "
+"defectuoso."
+
+#. Explanation: The English phrase "Faulty Link Detected!" translates to
+#. Spanish as "Error en el enlace detectado!". This translation maintains the
+#. alertive tone and indicates a problem with a link, which is consistent with
+#. the French translation "Lien défectueux détecté!", meaning "Defective link
+#. detected!". The use of "error" in Spanish conveys the same sense of an
+#. issue or malfunction as "faulty" in English.
+#: src/verify_email/views.py:96
+msgid "Faulty Link Detected!"
+msgstr "Error en el enlace detectado!"
+
+#. Explanation: The English sentence "You have exceeded the maximum
+#. verification requests!" translates to Spanish as "Has excedido el número
+#. máximo de solicitudes de verificación." This translation maintains the
+#. meaning of the original sentence, which indicates that someone has gone
+#. beyond the allowed limit for verification requests and should now contact
+#. an administrator. The use of "has" in English is translated as "ha
+#. excedido" in Spanish to convey the same action.
+#: src/verify_email/views.py:104 src/verify_email/views.py:193
+msgid "You have exceeded the maximum verification requests! Contact admin."
+msgstr ""
+"Has excedido el número máximo de solicitudes de verificación. Póngase en "
+"contacto con el administrador."
+
+#. Explanation: The English phrase "Maxed out!" is an exclamation indicating
+#. that something has reached its limit or full capacity. In this context, the
+#. Spanish translation "Maximizado!" conveys a similar meaning, emphasizing
+#. the achievement of reaching the maximum level.
+#: src/verify_email/views.py:105 src/verify_email/views.py:194
+msgid "Maxed out!"
+msgstr "Maximizado!"
+
+#. Explanation: The English sentence indicates that the provided link is
+#. either invalid or has already been used. This meaning is preserved in
+#. Spanish with "Este enlace no es válido" (This link is not valid) and "ya ha
+#. sido utilizado" (has already been used). The phrase "no podemos verificar
+#. su uso con este enlace" (we cannot verify its use with this link)
+#. translates to the Spanish equivalent, maintaining the tone and nuance of
+#. the original English sentence.
+#: src/verify_email/views.py:113 src/verify_email/views.py:202
+msgid ""
+"This link is invalid or been used already, we cannot verify using this link."
+msgstr ""
+"Este enlace no es válido o ya ha sido utilizado, por lo que no podemos "
+"verificar su uso con este enlace."
+
+#. Explanation: The English phrase "Invalid Link" translates to Spanish as
+#. "Enlace inválido," which directly corresponds to the French translation
+#. "Lien invalide." Both phrases convey the same meaning, indicating that a
+#. link is not functional or accessible.
+#: src/verify_email/views.py:114 src/verify_email/views.py:203
+msgid "Invalid Link"
+msgstr "Enlace inválido"
+
+#. Explanation: This Spanish translation reflects the meaning of the French
+#. phrase, which indicates a server error where the requested resource (in
+#. this case, a user) could not be located. The English phrase "404 User not
+#. found" directly translates to "404 Usuario no encontrado," preserving the
+#. original message's intent and tone.
+#. HTML placeholders:
+#. ```
+#. English sentence: "
404 - User not found
", French translation:
+#. "
404 - Utilisateur non trouvé
"
+#. ```
+#. Spanish translation:
+#. ```
+#. "
404 - Usuario no encontrado
"
+#. ```
+#: src/verify_email/views.py:118
+msgid "404 User not found"
+msgstr "404 Usuario no encontrado"
+
+#. Explanation: The English phrase "User is already active" indicates that the
+#. user has been previously engaged or logged in. In Spanish, this translates
+#. to "El usuario ya está activo," which means "The user is already active."
+#. The word order and verb tense are preserved from the original sentence to
+#. maintain clarity and meaning.
+#. ```
+#. "El usuario ya está activo."
+#. ```
+#: src/verify_email/views.py:133
+msgid "User is already active"
+msgstr "El usuario ya está activo."
+
+#. Explanation: The English phrase "You have requested another verification
+#. email!" translates to Spanish as "Has solicitado otro correo electrónico de
+#. verificación!". This translation maintains the subject (you), verb tense
+#. (past perfect), and meaning of the original sentence. The use of "has" in
+#. Spanish is equivalent to "has" in English, indicating a past action.
+#: src/verify_email/views.py:142 src/verify_email/views.py:165
+msgid "You have requested another verification email!"
+msgstr "Has solicitado otro correo electrónico de verificación!"
+
+#. Explanation: This Spanish translation reflects the meaning of the French
+#. phrase, which indicates that the verification link has been sent. The
+#. English phrase "Your verification link has been sent" is straightforward
+#. and does not require additional context to understand its meaning.
+#. Therefore, the Spanish version "Tu enlace de verificación ha sido enviado."
+#. directly translates this English sentence while preserving its tone and
+#. nuance.
+#: src/verify_email/views.py:143 src/verify_email/views.py:166
+msgid "Your verification link has been sent"
+msgstr "Tu enlace de verificación ha sido enviado."
+
+#. Explanation: The English phrase "Email Sent!" translates to Spanish as
+#. "Correo enviado!". This is a straightforward translation, where "Email"
+#. becomes "Correo", and "Sent" remains unchanged. The exclamation mark at the
+#. end of the English sentence indicates excitement or confirmation, which is
+#. preserved in the Spanish translation with "enviado!"
+#. ```
+#. "Correo enviado!"
+#. ```
+#: src/verify_email/views.py:144 src/verify_email/views.py:167
+msgid "Email Sent!"
+msgstr "Correo enviado!"
+
+#. Explanation: The English sentence indicates that an issue occurred while
+#. sending an email, which is conveyed in the French translation as "Un
+#. problème s'est produit lors de l'envoi du courriel :(". In Spanish, this
+#. translates to "Algo falló mientras se enviaba el correo electrónico :(",
+#. preserving the meaning and tone of the original sentence. The colon and
+#. parentheses are kept in their semantic location as placeholders for the
+#. sender's name or other relevant information that might be included in the
+#. email.
+#: src/verify_email/views.py:171
+msgid "Something went wrong during sending email :("
+msgstr "Algo falló mientras se enviaba el correo electrónico :("
+
+#. Explanation: This Spanish translation reflects the meaning of the French
+#. phrase, which indicates that the user was not found linked to the given
+#. email. The English phrase "User not found associated with given email!" can
+#. be ambiguous, as it may imply either a lack of user or an incorrect
+#. association. The French translation makes it clear that the user is not
+#. found, so the Spanish version "Usuario no encontrado asociado con la
+#. dirección de correo electrónico dada!" follows this interpretation.
+#: src/verify_email/views.py:175
+msgid "User not found associated with given email!"
+msgstr ""
+"Usuario no encontrado asociado con la dirección de correo electrónico dada!"
+
+#. Explanation: The English phrase "User Not Found" translates directly to
+#. Spanish as "Usuario no encontrado," maintaining the same meaning and tone.
+#. There is no ambiguity in this sentence, so no additional explanation is
+#. needed.
+#. HTML placeholders example:
+#. ```
+#. English sentence: "
User Not Found
", French translation:
+#. "
Utilisateur non trouvé
"
+#. ```
+#. Spanish translation:
+#. ```
+#. "
Usuario no encontrado
"
+#. ```
+#: src/verify_email/views.py:177
+msgid "User Not Found"
+msgstr "Usuario no encontrado"
+
+#. Explanation: The English phrase "Internal server error!" is a colloquial
+#. way to indicate that there has been an unexpected issue with the server,
+#. causing it to fail or behave erratically. This translation reflects this
+#. meaning in Spanish as "Error del servidor interno!".
+#: src/verify_email/views.py:181 src/verify_email/views.py:185
+msgid "Internal server error!"
+msgstr "Error del servidor interno!"
+
+#. Explanation: The English phrase "This user's account is already active"
+#. indicates that the user has an existing, operational account. In Spanish,
+#. this translates to "Este usuario tiene una cuenta activa," which means
+#. "This user has an active account." The term "already" in English implies a
+#. state of being, and its equivalent in Spanish is "tiene," indicating
+#. possession or existence.
+#. ```
+#. "Este usuario tiene una cuenta activa."
+#. ```
+#: src/verify_email/views.py:211
+msgid "This user's account is already active"
+msgstr "Este usuario tiene una cuenta activa."
+
+#. Explanation: The English phrase "Already Verified!" translates to Spanish
+#. as "Ya verificado!". This translation maintains the affirmative tone and
+#. indicates that something has been confirmed or checked. In this context, it
+#. suggests that a process or action has been completed successfully with
+#. verification.
+#: src/verify_email/views.py:212
+msgid "Already Verified!"
+msgstr "Ya verificado!"
diff --git a/src/verify_email/locale/fr/LC_MESSAGES/django.mo b/src/verify_email/locale/fr/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..18f391c
Binary files /dev/null and b/src/verify_email/locale/fr/LC_MESSAGES/django.mo differ
diff --git a/src/verify_email/locale/fr/LC_MESSAGES/django.po b/src/verify_email/locale/fr/LC_MESSAGES/django.po
new file mode 100644
index 0000000..5e32d34
--- /dev/null
+++ b/src/verify_email/locale/fr/LC_MESSAGES/django.po
@@ -0,0 +1,203 @@
+# Translations for the django-email-verification application
+# Copyright (C) 2025 Olivier LEVILLAIN
+# This file is distributed under the same license as the django-email-verification package.
+# Olivier LEVILLAIN , 2025.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.1.0\n"
+"Report-Msgid-Bugs-To: olivier@levillain.eu\n"
+"POT-Creation-Date: 2025-02-02 15:02+0100\n"
+"PO-Revision-Date: 2025-02-02 15:02+0100\n"
+"Last-Translator: Olivier LEVILLAIN \n"
+"Language-Team: French \n"
+"Language: French\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+#: src/verify_email/app_configurations.py:31
+msgid "Email Verification Mail"
+msgstr "Courriel de vérification d'adresse mail"
+
+#: src/verify_email/app_configurations.py:36
+msgid "email"
+msgstr "courriel"
+
+#: src/verify_email/app_configurations.py:61
+msgid ""
+"Your Email is verified successfully and account has been activated. You can "
+"login with the credentials now..."
+msgstr "Ton Email a été vérifié avec succès et ton compte a été activé. Tu peux "
+"maintenant te connecter avec tes identifiants..."
+
+#: src/verify_email/app_configurations.py:77
+msgid "There is something wrong with this link, can't verify the user..."
+msgstr "Quelque chose ne va pas avec ce lien, vérification de l'utilsateur impossible..."
+
+#: src/verify_email/templates/verify_email/email_verification_msg.html:10
+msgid "Verify Email address"
+msgstr "Vérifie l'adresse mail"
+
+#: src/verify_email/templates/verify_email/email_verification_msg.html:52
+msgid "Account Activation"
+msgstr "Activation du compte"
+
+#: src/verify_email/templates/verify_email/email_verification_msg.html:56
+msgid "E-mail Confirmation"
+msgstr "Confirmation de l'e-mail"
+
+#: src/verify_email/templates/verify_email/email_verification_msg.html:59
+msgid "Greetings!"
+msgstr "Salut!"
+
+#: src/verify_email/templates/verify_email/email_verification_msg.html:60
+msgid ""
+"You received this mail because you attempted to make account on our website. "
+"Please click on the link below to confirm the email and activate your "
+"account."
+msgstr ""
+"Tu as reçu ce mail car tu as essayé de créer un compte sur notre site web. "
+"Merci de cliquer sur le lien ci-dessous pour confirmer l'adresse mail et activer "
+"ton compte"
+
+#: src/verify_email/templates/verify_email/email_verification_msg.html:64
+msgid "Please verify your e-mail :"
+msgstr "Merci de vérfier ton email"
+
+#: src/verify_email/templates/verify_email/email_verification_msg.html:73
+msgid "You'll be joining us right after the verification !"
+msgstr "Tu nous rejoindras juste après la vérification"
+
+#: src/verify_email/templates/verify_email/email_verification_msg.html:77
+msgid ""
+"Thanks for joining! This mail machine generated. Do not reply to "
+"this mail"
+msgstr "Merci de nous rejoindre! Mail généré par une machine Ne pas répondre "
+
+#: src/verify_email/templates/verify_email/email_verification_successful.html:28
+msgid "Log In"
+msgstr "Connexion"
+
+#: src/verify_email/templates/verify_email/link_expired.html:20
+msgid "Link Expired!"
+msgstr "Lien expiré!"
+
+#: src/verify_email/templates/verify_email/link_expired.html:26
+msgid "The link has lived its life :( Can not validate a dead link..."
+msgstr "Le lien a vécu sa vie :( Impossible de valider un lien mort..."
+
+#: src/verify_email/templates/verify_email/link_expired.html:35
+msgid "Request Another one"
+msgstr "En demander un autre"
+
+#: src/verify_email/templates/verify_email/request_new_email.html:18
+msgid "Request New Email for Verification"
+msgstr "Demander un nouveau mail de vérification"
+
+#: src/verify_email/templates/verify_email/request_new_email.html:28
+msgid "Request New Email"
+msgstr "Demander un nouveau mail"
+
+#: src/verify_email/templates/verify_email/request_new_email.html:33
+msgid "Usually this template needs to be changed by your own app's template"
+msgstr "Normalement, ce template doit être modifié par le template de ta propre application"
+
+#: src/verify_email/views.py:48
+msgid "Method not allowed"
+msgstr "Méthode interdite"
+
+#: src/verify_email/views.py:60
+msgid "Verification Successful!"
+msgstr "Vérification réussie!"
+
+#: src/verify_email/views.py:74
+msgid "There is something wrong with this link..."
+msgstr "Quelque chose ne va pas avec ce lien..."
+
+#: src/verify_email/views.py:75
+msgid "Verification Failed!"
+msgstr "Vérification échouée!"
+
+#: src/verify_email/views.py:83
+msgid "The link has lived its life :( Request a new one!"
+msgstr "Le lien a vécu sa vie :( En demander un autre!"
+
+#: src/verify_email/views.py:84
+msgid "Expired!"
+msgstr "Expiré!"
+
+#: src/verify_email/views.py:94
+msgid "This link was modified before verification."
+msgstr "Ce lien a été modifié avant vérification."
+
+#: src/verify_email/views.py:95
+msgid "Cannot request another verification link with faulty link."
+msgstr "Impossible de demander un autre lien de vérification avec un lien défectueux."
+
+#: src/verify_email/views.py:96
+msgid "Faulty Link Detected!"
+msgstr "Lien défectueux détecté !"
+
+#: src/verify_email/views.py:104 src/verify_email/views.py:193
+msgid "You have exceeded the maximum verification requests! Contact admin."
+msgstr "Tu as dépassé le nombre maximum de demandes de vérification ! Contacte l'administrateur."
+
+#: src/verify_email/views.py:105 src/verify_email/views.py:194
+msgid "Maxed out!"
+msgstr "Au maximum !"
+
+#: src/verify_email/views.py:113 src/verify_email/views.py:202
+msgid ""
+"This link is invalid or been used already, we cannot verify using this link."
+msgstr ""
+"Ce lien n'est pas valide ou a déjà été utilisé, nous ne pouvons pas vérifier l'utilisation de ce lien."
+
+#: src/verify_email/views.py:114 src/verify_email/views.py:203
+msgid "Invalid Link"
+msgstr "Lien invalide"
+
+#: src/verify_email/views.py:118
+msgid "404 User not found"
+msgstr "404 Utilisateur non trouvé"
+
+#: src/verify_email/views.py:133
+msgid "User is already active"
+msgstr "Utilisateur déjà actif"
+
+#: src/verify_email/views.py:142 src/verify_email/views.py:165
+msgid "You have requested another verification email!"
+msgstr "Tu as demandé un autre courriel de vérification !"
+
+#: src/verify_email/views.py:143 src/verify_email/views.py:166
+msgid "Your verification link has been sent"
+msgstr "Ton lien de vérification a été envoyé"
+
+#: src/verify_email/views.py:144 src/verify_email/views.py:167
+msgid "Email Sent!"
+msgstr "Courriel envoyé !"
+
+#: src/verify_email/views.py:171
+msgid "Something went wrong during sending email :("
+msgstr "Un problème s'est produit lors de l'envoi du courriel :("
+
+#: src/verify_email/views.py:175
+msgid "User not found associated with given email!"
+msgstr "Utilisateur non trouvé associé à l'email donné !"
+
+#: src/verify_email/views.py:177
+msgid "User Not Found"
+msgstr "Utilisateur non trouvé"
+
+#: src/verify_email/views.py:181 src/verify_email/views.py:185
+msgid "Internal server error!"
+msgstr "Erreur de serveur interne !"
+
+#: src/verify_email/views.py:211
+msgid "This user's account is already active"
+msgstr "Le compte de cet utilisateur est déjà actif"
+
+#: src/verify_email/views.py:212
+msgid "Already Verified!"
+msgstr "Déjà vérifié !"
diff --git a/src/verify_email/locale/it/LC_MESSAGES/django.mo b/src/verify_email/locale/it/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..6952a3b
Binary files /dev/null and b/src/verify_email/locale/it/LC_MESSAGES/django.mo differ
diff --git a/src/verify_email/locale/it/LC_MESSAGES/django.po b/src/verify_email/locale/it/LC_MESSAGES/django.po
new file mode 100644
index 0000000..c2a4570
--- /dev/null
+++ b/src/verify_email/locale/it/LC_MESSAGES/django.po
@@ -0,0 +1,520 @@
+# Italian Translations for NO NAME FOUND app.
+# Copyright (C) 2025 Olivier LEVILLAIN
+# This file is distributed under the same license as the application.
+# This file was generated from ../Django-Verify-Email/src/verify_email/locale/fr/LC_MESSAGES/django.po by [Auto-po-lyglot](https://github.com/leolivier/auto-po-lyglot)
+# using the granite3.1-dense:2b model. Depending on the model, it may contain some errors and should be reviewed
+# by a human translator. Also depending on the model, each translation can be preceded by an explanation provided
+# by the model.
+# Olivier LEVILLAIN , 2025.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.1.0\n"
+"Report-Msgid-Bugs-To: olivier@levillain.eu\n"
+"POT-Creation-Date: 2025-02-02 15:02+0100\n"
+"PO-Revision-Date: 2025-02-02 15:44+00:00\n"
+"\n"
+"Last-Translator: Auto-po-lyglot using granite3.1-dense:2b (https://github.com/leolivier/auto-po-lyglot)\n"
+"Language-Team: French \n"
+"Language: IT\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. Explanation: The English phrase "Email Verification Mail" translates to
+#. Italian as "Mail di verifica dell'indirizzo email". This translation
+#. maintains the meaning of the original sentence, which refers to a
+#. confirmation email sent for verifying an email address.
+#: src/verify_email/app_configurations.py:31
+msgid "Email Verification Mail"
+msgstr "Mail di verifica dell'indirizzo email"
+
+#. Explanation: The English word "email" directly translates to the Italian
+#. term "email". There is no need for further explanation as this is a direct
+#. and straightforward translation.
+#. ```
+#. "email"
+#. ```
+#: src/verify_email/app_configurations.py:36
+msgid "email"
+msgstr "email"
+
+#. Explanation: This Italian translation maintains the meaning, tone, and
+#. nuance of the original English sentence while preserving proper grammar,
+#. spelling, and punctuation. The phrase "Your Email is verified successfully"
+#. translates to "Il tuo indirizzo email è stato verificato con successo,"
+#. which means "Your email has been verified successfully." Similarly, "You
+#. can login with the credentials now..." translates to "Puoi ora accedere con
+#. i tuoi dati di accesso...", meaning "You can log in now with your
+#. credentials." The Italian translation ensures that placeholders and HTML
+#. markers are kept in their original semantic locations.
+#: src/verify_email/app_configurations.py:61
+msgid ""
+"Your Email is verified successfully and account has been activated. You can "
+"login with the credentials now..."
+msgstr ""
+"Il tuo indirizzo email è stato verificato con successo e il tuo account è "
+"stato attivato. Puoi ora accedere con i tuoi dati di accesso..."
+
+#. Explanation: The Italian translation maintains the meaning of the French
+#. sentence, which indicates that there is an issue with a specific link and
+#. user verification cannot be performed. The phrase "quelque chose ne va pas"
+#. translates to "qualcosa che non va," preserving the negative connotation.
+#. Similarly, "impossibile" in French becomes "impossibile" in Italian,
+#. emphasizing the unfeasibility of user verification.
+#: src/verify_email/app_configurations.py:77
+msgid "There is something wrong with this link, can't verify the user..."
+msgstr ""
+"C'è qualcosa che non va con questo link, la verifica dell'utente "
+"impossibile..."
+
+#. Explanation: The English phrase "Verify Email address" translates directly
+#. to Italian as "Verifica indirizzo email," which maintains the same meaning
+#. and structure. In this context, "email" is a noun referring to an
+#. electronic mail message, and "verify" means to confirm or check the
+#. validity of something.
+#. ```
+#. "Verifica indirizzo email"
+#. ```
+#: src/verify_email/templates/verify_email/email_verification_msg.html:10
+msgid "Verify Email address"
+msgstr "Verifica indirizzo email"
+
+#. Explanation: The English phrase "Account Activation" translates to Italian
+#. as "Attivazione dell'account," where "Account" is the direct translation of
+#. "compte" and "Activation" remains unchanged. This Italian phrase conveys
+#. the same meaning as the French "Activation du compte."
+#: src/verify_email/templates/verify_email/email_verification_msg.html:52
+msgid "Account Activation"
+msgstr "Attivazione dell'account"
+
+#. Explanation: The English phrase "E-mail Confirmation" translates to Italian
+#. as "Conferma dell'email," which directly conveys the meaning of confirming
+#. an email. In this context, the placeholder "%s" in the original French
+#. translation does not need to be translated because it is a placeholder for
+#. the word "e-mail." Therefore, the Italian translation maintains the same
+#. semantic location and does not include any additional words or phrases.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:56
+msgid "E-mail Confirmation"
+msgstr "Conferma dell'email"
+
+#. Explanation: The English phrase "Greetings!" is an informal way to say
+#. hello, similar to the Italian "Ciao!". Both phrases are used in casual
+#. contexts and convey a friendly greeting.
+#. English sentence: "%(name)s is coming to visit.", French translation:
+#. "%(nom)s va venir nous rendre visite."
+#. Italian translation: "%(nome)s è venuto a trovarci."
+#. Explanation: The English placeholder "%(name)" represents the person's
+#. name, while in Italian, it becomes "%(nome)", which also signifies the
+#. person's name. Both phrases convey that someone is coming to visit.
+#. English sentence: "
Welcome to our website!
", French translation:
+#. "
Bienvenue sur notre site web!
"
+#. Italian translation: "
Benvenuto nel nostro sito web!
"
+#. Explanation: The HTML tag
is used for the main heading of a webpage.
+#. In this case, it conveys a welcoming message in both English and French,
+#. which translates to "Welcome to our website!" in Italian.
+#. English sentence: "%(city)s is known for its beautiful parks.", French
+#. translation: "%(ville) est connue pour ses jardins magnifiques."
+#. Italian translation: "%(città) è nota per i suoi bellissimi parchi."
+#. Explanation: The English placeholder "%(city)" represents the city's name,
+#. which in Italian becomes "%(città)", signifying the same location. Both
+#. phrases highlight that a particular city is famous for its beautiful parks.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:59
+msgid "Greetings!"
+msgstr "Ciao!"
+
+#. Explanation: The English sentence informs the recipient that they received
+#. a mail due to their attempt to create an account on the website. The
+#. Italian translation maintains this meaning by stating that the recipient
+#. received the message because they tried to set up an account on the site.
+#. The phrase "per confermare l'indirizzo email e attivare il tuo account"
+#. translates to "to confirm the email and activate your account," preserving
+#. the intent of the original sentence.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:60
+msgid ""
+"You received this mail because you attempted to make account on our website."
+" Please click on the link below to confirm the email and activate your "
+"account."
+msgstr ""
+"Hai ricevuto questo messaggio poiché hai tentato di creare un account sul "
+"nostro sito web. Per confermare l'indirizzo email e attivare il tuo account,"
+" clicca sul link qui sotto."
+
+#. Explanation: The English phrase "Please verify your e-mail" translates to
+#. Italian as "Per favore verifica la tua email," which maintains the polite
+#. tone and request for action. The French translation "Merci de vérfier ton
+#. email" is used as context, indicating that the request is similar in nature
+#. to a French request.
+#. HTML markers: "
Please verify your e-mail:
"
+#. Italian translation with placeholders: "%s verifica la sua email:"
+#. ```
+#.
%s verifica la sua email:
+#. ```
+#: src/verify_email/templates/verify_email/email_verification_msg.html:64
+msgid "Please verify your e-mail :"
+msgstr "Per favore verifica la tua email."
+
+#. Explanation: The English phrase "You'll be joining us right after the
+#. verification!" conveys that the action of joining will occur immediately
+#. following a verification process. In Italian, this is accurately translated
+#. as "Ti unirai appena dopo la verifica," which means "You will join us just
+#. after the verification." The use of "appena" (just) and "dopo" (after) in
+#. Italian maintains the same sense of immediacy as in the English sentence.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:73
+msgid "You'll be joining us right after the verification !"
+msgstr "Ti unirai appena dopo la verifica."
+
+#. Explanation: The English sentence conveys gratitude for joining and informs
+#. that the message was generated by a machine, while also advising not to
+#. respond. This is accurately translated into Italian as "Grazie per aver
+#. partecipato! Questo messaggio è stato generato da una macchina.
+#. Non rispondi a questo messaggio." The use of placeholders and HTML markers
+#. is preserved in the translation, with " " maintaining its function as a
+#. line breaker.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:77
+msgid ""
+"Thanks for joining! This mail machine generated. Do not reply to "
+"this mail"
+msgstr ""
+"Grazie per aver partecipato! Questo messaggio è stato generato da una "
+"macchina. Non rispondi a questo messaggio."
+
+#. Explanation: The English phrase "Log In" translates to Italian as "Accedi,"
+#. which means the same - to log in or sign in. Both phrases indicate the
+#. action of entering a system using credentials, and they are interchangeable
+#. in this context.
+#. ```
+#. "Accedi"
+#. ```
+#: src/verify_email/templates/verify_email/email_verification_successful.html:28
+msgid "Log In"
+msgstr "Accedi"
+
+#. Explanation: The English phrase "Link Expired!" translates to Italian as
+#. "Link scaduto!". This is a direct translation of the French phrase "Lien
+#. expiré!", which means "Link expired!". Both phrases convey the same
+#. meaning, indicating that a link has reached its expiration date.
+#: src/verify_email/templates/verify_email/link_expired.html:20
+msgid "Link Expired!"
+msgstr "Link scaduto!"
+
+#. Explanation: The English phrase "The link has lived its life :( Can not
+#. validate a dead link..." translates to Italian as "Il collegamento ha
+#. vissuto la sua vita :(". This translation maintains the emotional tone of
+#. the original sentence, indicating that the link is no longer functional or
+#. accessible due to being "dead". The colon and exclamation mark are
+#. preserved in their semantic location within the Italian text.
+#: src/verify_email/templates/verify_email/link_expired.html:26
+msgid "The link has lived its life :( Can not validate a dead link..."
+msgstr "Il collegamento ha vissuto la sua vita :(\"."
+
+#. Explanation: The English phrase "Request Another one" translates to Italian
+#. as "Chiedere un altro," which means "to ask for another." This translation
+#. maintains the meaning, tone, and nuance of the original English sentence.
+#. In this case, there are no placeholders or HTML markers to consider, so
+#. they remain in their original positions within the translated text.
+#: src/verify_email/templates/verify_email/link_expired.html:35
+msgid "Request Another one"
+msgstr "Chiedere un altro"
+
+#. Explanation: The English phrase "Request New Email for Verification"
+#. translates to Italian as "Richiedi un nuovo indirizzo email per la
+#. verifica," which literally means "Request a new email address for
+#. verification." In this context, the term "email" refers to an electronic
+#. mail address used for communication. The Italian translation preserves the
+#. meaning and tone of the original English sentence while adhering to proper
+#. grammar and punctuation.
+#. HTML markers: "
Request New Email for Verification
"
+#. Italian translation with placeholders: "%(request)s per la verifica di un
+#. nuovo indirizzo email"
+#: src/verify_email/templates/verify_email/request_new_email.html:18
+msgid "Request New Email for Verification"
+msgstr "Richiedi un nuovo indirizzo email per la verifica."
+
+#. Explanation: The English phrase "Request New Email" translates to Italian
+#. as "Richiedi un nuovo indirizzo email," which literally means "Request a
+#. new address email." In this context, the term "email" is used
+#. interchangeably with "indirizzo email," where "indirizzo" refers to an
+#. email address. The translation maintains this equivalence while preserving
+#. the meaning and tone of the original English sentence.
+#: src/verify_email/templates/verify_email/request_new_email.html:28
+msgid "Request New Email"
+msgstr "Richiedi un nuovo indirizzo email"
+
+#. Explanation: The English sentence indicates that the user's app should
+#. adjust a specific template. This is accurately translated into Italian as
+#. "Di solito, questo modello deve essere modificato dal tuo stesso template
+#. dell'applicazione," which conveys the same meaning in Italian.
+#: src/verify_email/templates/verify_email/request_new_email.html:33
+msgid "Usually this template needs to be changed by your own app's template"
+msgstr ""
+"Di solito, questo modello deve essere modificato dal tuo stesso template "
+"dell'applicazione"
+
+#. Explanation: The English phrase "Method not allowed" indicates that the
+#. requested action is forbidden, which translates directly to Italian as
+#. "Metodo non consentito." This maintains the meaning and tone of the
+#. original sentence.
+#. ```
+#. "Metodo non consentito"
+#. ```
+#: src/verify_email/views.py:48
+msgid "Method not allowed"
+msgstr "Metodo non consentito"
+
+#. Explanation: The Italian translation for "Verification Successful!" is
+#. "Verifica effettuata con successo!". This maintains the positive tone and
+#. affirmative nature of the English sentence, indicating that a verification
+#. process has been completed successfully.
+#: src/verify_email/views.py:60
+msgid "Verification Successful!"
+msgstr "Verifica effettuata con successo!"
+
+#. Explanation: The English phrase "There is something wrong with this
+#. link..." implies that the user has identified a problem or issue with a
+#. specific link. This meaning is preserved in the Italian translation, "C'è
+#. qualcosa che non va con questo collegamento...", where "qualcosa" means
+#. "something," and "che non va" translates to "that doesn't work." The phrase
+#. "with this link" is maintained as "con questo collegamento" in Italian.
+#: src/verify_email/views.py:74
+msgid "There is something wrong with this link..."
+msgstr "C'è qualcosa che non va con questo collegamento..."
+
+#. Explanation: The English phrase "Verification Failed!" translates to
+#. Italian as "Verifica fallita!". This translation maintains the negative
+#. connotation of the original English sentence, indicating that a
+#. verification process has not been successful. The Italian word order is
+#. preserved for clarity and naturalness.
+#: src/verify_email/views.py:75
+msgid "Verification Failed!"
+msgstr "Verifica fallita!"
+
+#. Explanation: The English phrase "The link has lived its life :( Request a
+#. new one!" conveys the idea that the link is no longer functional and needs
+#. to be replaced. This sentiment is preserved in the Italian translation,
+#. where "Il collegamento ha vissuto la sua vita :(" translates to "Il
+#. collegamento ha vissuto la sua vita :(," emphasizing its past
+#. functionality, and "Richiedere uno nuovo!" mirrors the English phrase's
+#. call for a new link. The Italian translation maintains the tone of urgency
+#. and the need for replacement, just as the French translation does in the
+#. context provided.
+#: src/verify_email/views.py:83
+msgid "The link has lived its life :( Request a new one!"
+msgstr "Il collegamento ha vissuto la sua vita :(\" Richiedere uno nuovo!"
+
+#. Explanation: The English phrase "Expired!" conveys the same meaning as the
+#. French "Expiré!". Both indicate that something has passed its due date or
+#. time. In Italian, "Scaduto!" is used to express this idea, maintaining the
+#. original tone and nuance.
+#: src/verify_email/views.py:84
+msgid "Expired!"
+msgstr "Scaduto!"
+
+#. Explanation: The English phrase "This link was modified before
+#. verification" indicates that the link's content or structure underwent
+#. changes prior to being checked for accuracy. This is accurately translated
+#. into Italian as "Questo collegamento è stato modificato prima della
+#. verifica," where "questo" means "this," "collegamento" translates to
+#. "link," and "è stato modificato" conveys the action of modification, while
+#. "prima della verifica" maintains the timeframe before verification.
+#: src/verify_email/views.py:94
+msgid "This link was modified before verification."
+msgstr "Questo collegamento è stato modificato prima della verifica."
+
+#. Explanation: The English sentence conveys that it is not possible to
+#. request another verification link due to the presence of a faulty link.
+#. This meaning is preserved in the Italian translation, "Non è possibile
+#. richiedere un altro link di verifica con il link difettoso," where "non è
+#. possibile" translates to "it is not possible," "richiedere" means "to
+#. request," "un altro" indicates "another," and "link di verifica"
+#. corresponds to "verification link." The French phrase "avec un lien
+#. défectueux" is translated as "con il link difettoso" in Italian,
+#. maintaining the same meaning.
+#: src/verify_email/views.py:95
+msgid "Cannot request another verification link with faulty link."
+msgstr ""
+"Non è possibile richiedere un altro link di verifica con il link difettoso."
+
+#. Explanation: The English phrase "Faulty Link Detected!" translates to
+#. Italian as "Link difettoso rilevato!". In this context, "rilevato" is the
+#. past participle of the verb "rilevare", which means "to detect". This
+#. maintains the meaning that a faulty link has been identified. The
+#. exclamation mark at the end of the English phrase is preserved in Italian
+#. as well, indicating urgency or importance.
+#: src/verify_email/views.py:96
+msgid "Faulty Link Detected!"
+msgstr "Link difettoso rilevato!"
+
+#. Explanation: This Italian translation maintains the meaning, tone, and
+#. nuance of the original English sentence. The phrase "You have exceeded the
+#. maximum verification requests!" is translated as "hai superato il numero
+#. massimo di richieste di verifica!", which conveys the same idea that the
+#. user has gone beyond the allowed limit for verification requests. The
+#. instruction to "Contact admin" in English is translated as "Contatta
+#. l'amministratore", preserving the intended action of reaching out to an
+#. administrator.
+#: src/verify_email/views.py:104 src/verify_email/views.py:193
+msgid "You have exceeded the maximum verification requests! Contact admin."
+msgstr ""
+"Hai superato il numero massimo di richieste di verifica! Contatta "
+"l'amministratore."
+
+#. Explanation: The English phrase "Maxed out!" is an exclamation indicating
+#. that something has reached its limit or full capacity. In this context, the
+#. Italian translation "Massimo!" conveys a similar meaning, emphasizing that
+#. something has achieved its maximum level or extent.
+#: src/verify_email/views.py:105 src/verify_email/views.py:194
+msgid "Maxed out!"
+msgstr "Massimo!"
+
+#. Explanation: The English sentence indicates that the provided link is
+#. either invalid or has already been used. This meaning is preserved in the
+#. Italian translation by using "non è valido" to express an invalid link and
+#. "è stato già utilizzato" to indicate it's been previously used. The phrase
+#. "non possiamo verificare la sua utilizzazione con questo link" translates
+#. to "we cannot verify its usage with this link," maintaining the original
+#. context.
+#: src/verify_email/views.py:113 src/verify_email/views.py:202
+msgid ""
+"This link is invalid or been used already, we cannot verify using this link."
+msgstr ""
+"Questo link non è valido o è stato già utilizzato, non possiamo verificare "
+"la sua utilizzazione con questo link."
+
+#. Explanation: The English phrase "Invalid Link" translates to Italian as
+#. "Link non valido," which directly conveys the same meaning. In this
+#. context, "non valido" means "invalid." The French translation "Lien
+#. invalide" also indicates an invalid link, so the Italian translation "Link
+#. non valido" maintains consistency with that interpretation.
+#: src/verify_email/views.py:114 src/verify_email/views.py:203
+msgid "Invalid Link"
+msgstr "Link non valido"
+
+#. Explanation: The English phrase "404 User not found" translates directly to
+#. Italian as "404 Utente non trovato," preserving the number and the meaning
+#. of the original sentence. In this case, there are no placeholders or HTML
+#. markers to consider, so they remain in their original positions within the
+#. translated text.
+#: src/verify_email/views.py:118
+msgid "404 User not found"
+msgstr "404 Utente non trovato"
+
+#. Explanation: The English phrase "User is already active" indicates that the
+#. user has been previously engaged or logged in. In Italian, this translates
+#. to "L'utente è già attivo," which means "The user is already active." The
+#. word order and verb tense are preserved to maintain the meaning of the
+#. original sentence.
+#. ```
+#. "L'utente è già attivo."
+#. ```
+#: src/verify_email/views.py:133
+msgid "User is already active"
+msgstr "L'utente è già attivo."
+
+#. Explanation: The English phrase "You have requested another verification
+#. email!" translates to Italian as "Hai richiesto un'altra email di
+#. conferma!". In this translation, the subject ("you") and verb ("have
+#. requested") remain consistent with their original meanings. The phrase
+#. "another verification email" is translated as "un'altra email di conferma",
+#. where "email" directly translates to "email" and "verification" is implied
+#. by the context of sending a confirmation message.
+#: src/verify_email/views.py:142 src/verify_email/views.py:165
+msgid "You have requested another verification email!"
+msgstr "Hai richiesto un'altra email di conferma!"
+
+#. Explanation: The English phrase "Your verification link has been sent"
+#. conveys the action of sending a link for verification. In Italian, this
+#. translates to "Il tuo link di verifica è stato inviato," which means "Your
+#. verification link has been sent." The use of "il tuo" (your) and "link di
+#. verifica" (verification link) maintains the original meaning while adhering
+#. to Italian grammar rules.
+#. HTML placeholder example:
+#. ```
+#. English sentence: "
You have received a new message from
+#. %(sender_name)s
", French translation: "
Vous avez reçu un nouveau
+#. message de %(sender_name)s
"
+#. ```
+#. Italian translation with placeholders:
+#. ```
+#. "
Hai ricevuto una nuova messaggio da %(sender_name)
"
+#. ```
+#: src/verify_email/views.py:143 src/verify_email/views.py:166
+msgid "Your verification link has been sent"
+msgstr "Il tuo link di verifica è stato inviato."
+
+#. Explanation: The English phrase "Email Sent!" translates to Italian as
+#. "Email inviato!". This is a straightforward translation where the verb
+#. "sent" in English corresponds directly to the Italian verb "invio", which
+#. means "to send". The exclamation mark remains unchanged, indicating that
+#. this is an affirmative statement.
+#. ```
+#. "Email inviato!"
+#. ```
+#: src/verify_email/views.py:144 src/verify_email/views.py:167
+msgid "Email Sent!"
+msgstr "Email inviato!"
+
+#. Explanation: The English phrase "Something went wrong during sending email"
+#. translates to Italian as "Qualcosa è andato storto durante la spedizione
+#. dell'email". In this context, "something" refers to the issue encountered
+#. while attempting to send an email. The Italian translation preserves this
+#. meaning by using "qualcosa", which means "something". The colon and
+#. parentheses in the original English sentence are maintained as placeholders
+#. in the Italian translation.
+#. ```
+#. "Qualcosa è andato storto durante la spedizione dell'email :-)"
+#. ```
+#: src/verify_email/views.py:171
+msgid "Something went wrong during sending email :("
+msgstr "Qualcosa è andato storto durante la spedizione dell'email :-)"
+
+#. Explanation: This Italian translation reflects the meaning of the French
+#. phrase, which indicates that the user cannot be found linked to the given
+#. email. The English sentence "User not found associated with given email!"
+#. conveys a similar message, emphasizing the absence of a user tied to the
+#. provided email address.
+#: src/verify_email/views.py:175
+msgid "User not found associated with given email!"
+msgstr "Utente non trovato associato all'indirizzo email dato!"
+
+#. Explanation: The English phrase "User Not Found" translates directly to
+#. Italian as "Utente non trovato," which means the same thing. There is no
+#. ambiguity in this translation, and it maintains the original meaning, tone,
+#. and nuance.
+#: src/verify_email/views.py:177
+msgid "User Not Found"
+msgstr "Utente non trovato"
+
+#. Explanation: The English phrase "Internal server error!" translates to
+#. Italian as "Errore di rete interna!". This reflects the meaning of the
+#. French phrase, which indicates an internal network issue causing a problem
+#. with the server. In this context, "errore" in Italian corresponds to
+#. "erreur" in French, and "di rete" translates to "de réseau", both
+#. indicating a network-related error.
+#: src/verify_email/views.py:181 src/verify_email/views.py:185
+msgid "Internal server error!"
+msgstr "Errore di rete interna!"
+
+#. Explanation: The English phrase "This user's account is already active"
+#. indicates that the account of a specific individual (the 'this user') is
+#. currently operational. This meaning is preserved in Italian as "Questo
+#. utente ha già un'account attivo," where "questo utente" refers to the same
+#. individual, and "un'account attivo" translates to "an already active
+#. account."
+#. ```
+#. "Questo utente ha già un'account attivo."
+#. ```
+#: src/verify_email/views.py:211
+msgid "This user's account is already active"
+msgstr "Questo utente ha già un'account attivo."
+
+#. Explanation: The Italian translation for "Already Verified!" is "Già
+#. verificato!". This reflects the meaning of the French phrase, which
+#. indicates that something has been confirmed or checked. In this context, it
+#. conveys a sense of completion or confirmation, similar to the English
+#. original.
+#: src/verify_email/views.py:212
+msgid "Already Verified!"
+msgstr "Già verificato!"
diff --git a/src/verify_email/locale/pt/LC_MESSAGES/django.mo b/src/verify_email/locale/pt/LC_MESSAGES/django.mo
new file mode 100644
index 0000000..4f2ee0f
Binary files /dev/null and b/src/verify_email/locale/pt/LC_MESSAGES/django.mo differ
diff --git a/src/verify_email/locale/pt/LC_MESSAGES/django.po b/src/verify_email/locale/pt/LC_MESSAGES/django.po
new file mode 100644
index 0000000..8b52ad8
--- /dev/null
+++ b/src/verify_email/locale/pt/LC_MESSAGES/django.po
@@ -0,0 +1,482 @@
+# Portuguese Translations for NO NAME FOUND app.
+# Copyright (C) 2025 Olivier LEVILLAIN
+# This file is distributed under the same license as the application.
+# This file was generated from ../Django-Verify-Email/src/verify_email/locale/fr/LC_MESSAGES/django.po by [Auto-po-lyglot](https://github.com/leolivier/auto-po-lyglot)
+# using the granite3.1-dense:2b model. Depending on the model, it may contain some errors and should be reviewed
+# by a human translator. Also depending on the model, each translation can be preceded by an explanation provided
+# by the model.
+# Olivier LEVILLAIN , 2025.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.1.0\n"
+"Report-Msgid-Bugs-To: olivier@levillain.eu\n"
+"POT-Creation-Date: 2025-02-02 15:02+0100\n"
+"PO-Revision-Date: 2025-02-02 16:33+00:00\n"
+"\n"
+"Last-Translator: Auto-po-lyglot using granite3.1-dense:2b (https://github.com/leolivier/auto-po-lyglot)\n"
+"Language-Team: French \n"
+"Language: PT\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. Explanation: The English phrase "Email Verification Mail" translates to
+#. Portuguese as "Mai de Verificação de Endereço de Email". In this
+#. translation, "Email" is translated as "Endereço de Email", which means
+#. "email address". The term "Verification" remains the same in Portuguese.
+#: src/verify_email/app_configurations.py:31
+msgid "Email Verification Mail"
+msgstr "Mai de Verificação de Endereço de Email"
+
+#. Explanation: The English word "email" directly translates to Portuguese as
+#. "email". There is no need for additional context or explanation, as the
+#. term is universally recognized and its meaning remains consistent across
+#. languages.
+#. ```
+#. "email"
+#. ```
+#: src/verify_email/app_configurations.py:36
+msgid "email"
+msgstr "Email"
+
+#. Explanation: This Portuguese translation reflects the meaning of the French
+#. phrase, which indicates that the user's email verification was successful
+#. and their account has been activated. The English sentence conveys a
+#. similar message, emphasizing that the user can now log in using their
+#. provided credentials. Both translations maintain the same tone and nuance,
+#. ensuring the recipient understands they have successfully verified their
+#. email and gained access to their account.
+#: src/verify_email/app_configurations.py:61
+msgid ""
+"Your Email is verified successfully and account has been activated. You can "
+"login with the credentials now..."
+msgstr ""
+"Seu seu email foi verificado com sucesso e o seu conta foi ativada. Agora "
+"você pode se logar com seus detalhes..."
+
+#. Explanation: The English sentence conveys that there is an issue with a
+#. specific link and the user cannot verify it. This meaning is preserved in
+#. Portuguese as "Há algo errado com este link," which translates to "There is
+#. something wrong with this link." The phrase "não é possível verificar o
+#. usuário" (cannot verify the user) is translated as "não é possível
+#. verificar o usuário..." to maintain the progressive aspect, indicating an
+#. ongoing process of verification.
+#: src/verify_email/app_configurations.py:77
+msgid "There is something wrong with this link, can't verify the user..."
+msgstr "Há algo errado com este link, não é possível verificar o usuário..."
+
+#. Explanation: The English phrase "Verify Email address" translates directly
+#. to Portuguese as "Verifique o endereço de e-mail". This maintains the
+#. meaning of checking or confirming an email address.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:10
+msgid "Verify Email address"
+msgstr "Verifique o endereço de e-mail"
+
+#. Explanation: The English phrase "Account Activation" translates directly to
+#. Portuguese as "Ativação da conta," where "da conta" refers to the account.
+#. This maintains the meaning and tone of the original sentence, indicating
+#. that an account is being activated.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:52
+msgid "Account Activation"
+msgstr "Ativação da conta"
+
+#. Explanation: The English phrase "E-mail Confirmation" translates directly
+#. to Portuguese as "Confirmação do e-mail," preserving the meaning and
+#. maintaining the same grammatical structure. In this context, "e-mail" is a
+#. noun in Portuguese, just as it is in English. The translation reflects the
+#. French equivalent "Confirmation de l'e-mail," which indicates that the
+#. action of confirmation pertains to an email.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:56
+msgid "E-mail Confirmation"
+msgstr "Confirmação do e-mail"
+
+#. Explanation: The English phrase "Greetings!" is a formal way to address
+#. someone, similar to the French "Salut!". In Portuguese, this informal
+#. greeting translates directly as "Olá!", which maintains the same level of
+#. formality and warmth.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:59
+msgid "Greetings!"
+msgstr "Olá!"
+
+#. Explanation: The English sentence conveys that the recipient received an
+#. email due to their attempt to create an account on the website. This is
+#. accurately translated into Portuguese as "Você recebeu esse e-mail porque
+#. tentou criar um cadastro em nosso site," which means "You received this
+#. email because you tried to create a registration on our site." The phrase
+#. "please click on the link below" is translated as "por favor, clique no
+#. link abaixo," meaning "please click on the link below." The action of
+#. confirming an email and activating an account is conveyed in Portuguese as
+#. "confirmar a sua conta de e-mail e ativar seu cadastro," which translates
+#. to "confirm your email address and activate your registration."
+#: src/verify_email/templates/verify_email/email_verification_msg.html:60
+msgid ""
+"You received this mail because you attempted to make account on our website."
+" Please click on the link below to confirm the email and activate your "
+"account."
+msgstr ""
+"Você recebeu esse e-mail porque tentou criar um cadastro em nosso site. Por "
+"favor, clique no link abaixo para confirmar a sua conta de e-mail e ativar "
+"seu cadastro."
+
+#. Explanation: The English phrase "Please verify your e-mail" is a polite
+#. request to check the validity of an electronic mail address. In Portuguese,
+#. this translates directly as "Por favor, verifique seu e-mail," which
+#. maintains the same tone and formality. The French translation "Merci de
+#. vérfier ton email" can be translated into Portuguese as "Por favor,
+#. verifique seu e-mail" to preserve the politeness and request nature of the
+#. original English sentence.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:64
+msgid "Please verify your e-mail :"
+msgstr "Por favor, verifique seu e-mail."
+
+#. Explanation: The English phrase "You'll be joining us right after the
+#. verification!" conveys that the action of joining will occur immediately
+#. following the verification process. This meaning is preserved in Portuguese
+#. as "Você se juntará a nós exatamente após a verificação," where
+#. "exatamente" means "exactly" and "após" means "after." The translation
+#. maintains the same tone, emphasis, and nuance of the original English
+#. sentence.
+#: src/verify_email/templates/verify_email/email_verification_msg.html:73
+msgid "You'll be joining us right after the verification !"
+msgstr "Você se juntará a nós exatamente após a verificação."
+
+#. Explanation: The English sentence is a polite greeting, acknowledging the
+#. recipient's participation in an event or group. In this case, it's a mail
+#. generated by a machine. The French translation accurately conveys this
+#. meaning while maintaining the tone and formality of the original text. The
+#. Portuguese translation follows suit, using "obrigado" for "thanks," "por se
+#. juntar" for "for joining," and "este e-mail foi gerado por uma máquina" to
+#. maintain the machine-generated aspect. The instruction to not respond is
+#. preserved as "não responda a este e-mail."
+#: src/verify_email/templates/verify_email/email_verification_msg.html:77
+msgid ""
+"Thanks for joining! This mail machine generated. Do not reply to "
+"this mail"
+msgstr ""
+"Obrigado por se juntar! Este e-mail foi gerado por uma máquina. "
+"Não responda a este e-mail."
+
+#. Explanation: The English phrase "Log In" translates to Portuguese as
+#. "Início de Sessão," which means "start of session." This is a common term
+#. used in login interfaces, indicating the beginning of an active user
+#. session.
+#: src/verify_email/templates/verify_email/email_verification_successful.html:28
+msgid "Log In"
+msgstr "Início de Sessão"
+
+#. Explanation: The English phrase "Link Expired!" conveys the same meaning as
+#. the French phrase "Lien expiré!". Both indicate that a link has reached its
+#. expiration date and is no longer functional. In Portuguese, this translates
+#. to "Link Expirou!", which maintains the same tone and nuance of urgency and
+#. finality. The use of exclamation marks in both English and French
+#. emphasizes the importance of the message.
+#: src/verify_email/templates/verify_email/link_expired.html:20
+msgid "Link Expired!"
+msgstr "Link Expirou!"
+
+#. Explanation: The English phrase "The link has lived its life :( Can not
+#. validate a dead link..." conveys that the link is no longer functional, as
+#. indicated by the emoticon ":(". In Portuguese, this meaning is preserved
+#. with "O link já viveu sua vida :(", where "já" means "has already" and
+#. "viveu" means "lived". The phrase "Can not validate a dead link..."
+#. translates to "Impossible de valider um lien mort...", where "impossível"
+#. means "impossible", "valide" means "validate", and "um lien mort" is the
+#. equivalent of "a dead link".
+#: src/verify_email/templates/verify_email/link_expired.html:26
+msgid "The link has lived its life :( Can not validate a dead link..."
+msgstr "O link já viveu sua vida :(\"."
+
+#. Explanation: The English phrase "Request Another one" translates to
+#. Portuguese as "Solicitar outro," which means "to ask for another." This
+#. translation maintains the meaning, tone, and nuance of the original English
+#. sentence. In this case, there are no placeholders or HTML markers to
+#. consider, so they remain in their original positions within the translated
+#. text.
+#: src/verify_email/templates/verify_email/link_expired.html:35
+msgid "Request Another one"
+msgstr "Solicitar outro"
+
+#. Explanation: The English phrase "Request New Email for Verification"
+#. translates to Portuguese as "Solicitar um novo email para verificação."
+#. This translation maintains the meaning of requesting a new email
+#. specifically for verification purposes. The French context, "Demander un
+#. nouveau mail de vérification," is consistent with this Portuguese
+#. translation, indicating that the action involves asking for a new email to
+#. be used in the verification process.
+#: src/verify_email/templates/verify_email/request_new_email.html:18
+msgid "Request New Email for Verification"
+msgstr "Solicitar um novo email para verificação"
+
+#. Explanation: The English phrase "Request New Email" translates to
+#. Portuguese as "Solicitar um novo e-mail". This means the same action of
+#. asking for a new email address, with "solicit" in Portuguese conveying the
+#. idea of making a request.
+#: src/verify_email/templates/verify_email/request_new_email.html:28
+msgid "Request New Email"
+msgstr "Solicitar um novo e-mail"
+
+#. Explanation: The English sentence indicates that the template usually needs
+#. to be modified by a specific app's template. This is accurately conveyed in
+#. Portuguese as "normalmente, este modelo precisa ser alterado pelo seu
+#. próprio template da aplicação," where "este modelo" translates to "this
+#. model," and "precisa ser alterado" maintains the meaning of needing
+#. modification. The phrase "pela sua própria template da aplicação" is a
+#. direct translation of "by your own app's template."
+#: src/verify_email/templates/verify_email/request_new_email.html:33
+msgid "Usually this template needs to be changed by your own app's template"
+msgstr ""
+"Normalmente, este modelo precisa ser alterado pelo seu próprio template da "
+"aplicação."
+
+#. Explanation: The English phrase "Method not allowed" indicates that an
+#. action or request is forbidden due to the method used. In this context,
+#. "method" refers to a specific way of performing an action or making a
+#. request. The French translation "Méthode interdite" directly conveys this
+#. meaning, translating to "forbidden method". Therefore, the Portuguese
+#. translation "Método não permitido" maintains the same nuance and preserves
+#. the original intent.
+#: src/verify_email/views.py:48
+msgid "Method not allowed"
+msgstr "Método não permitido"
+
+#. Explanation: The English phrase "Verification Successful!" translates
+#. directly to Portuguese as "Verificação bem-sucedida!". This direct
+#. translation maintains the positive affirmation of success in verification,
+#. preserving the tone and meaning from the original English sentence.
+#: src/verify_email/views.py:60
+msgid "Verification Successful!"
+msgstr "Verificação bem-sucedida!"
+
+#. Explanation: The English phrase "There is something wrong with this
+#. link..." conveys the idea that there's a problem or issue with a specific
+#. link. In French, "Quelque chose ne va pas avec ce lien..." translates to
+#. "Something is not right with this link...". This translation maintains the
+#. meaning and tone of the original English sentence while preserving the
+#. nuance of the French phrase. The Portuguese translation, "Há algo errado
+#. com este link...", also conveys a similar sense of an issue or problem
+#. associated with a particular link, ensuring consistency across languages.
+#: src/verify_email/views.py:74
+msgid "There is something wrong with this link..."
+msgstr "Há algo errado com este link..."
+
+#. Explanation: The English phrase "Verification Failed!" translates directly
+#. to Portuguese as "Verificação falhou!". This translation maintains the
+#. negative connotation and the action of verification failing, preserving the
+#. original meaning. The exclamation mark is also retained for emphasis in the
+#. Portuguese version.
+#: src/verify_email/views.py:75
+msgid "Verification Failed!"
+msgstr "Verificação falhou!"
+
+#. Explanation: The English sentence conveys that the link has served its
+#. purpose and is no longer functional, expressed as "The link has lived its
+#. life :(". This translates to Portuguese as "O link já passou por sua vida
+#. :(", which maintains the emotional tone of the original. The phrase
+#. "Request a new one!" in English is translated as "Solicite um novo!",
+#. preserving the imperative mood and the request for a replacement.
+#: src/verify_email/views.py:83
+msgid "The link has lived its life :( Request a new one!"
+msgstr "O link já passou por sua vida :(\". \"Solicite um novo!"
+
+#. Explanation: The English phrase "Expired!" is an exclamation indicating
+#. that something has passed its due date or time limit. In this case, the
+#. Portuguese translation "Expirado!" conveys the same meaning, using the same
+#. intonation and emphasis to express surprise or urgency.
+#: src/verify_email/views.py:84
+msgid "Expired!"
+msgstr "Expirado!"
+
+#. Explanation: The English phrase "This link was modified before
+#. verification" indicates that the link's content or structure underwent
+#. changes prior to being checked for accuracy. This meaning is preserved in
+#. Portuguese as "Este link foi alterado antes da verificação," where "este"
+#. translates to "this," "link" remains unchanged, "foi" means "was," and
+#. "alterado" conveys the action of modification. The French translation "Ce
+#. lien a été modifié avant vérification" is consistent with this Portuguese
+#. translation, as both phrases indicate that the link underwent changes prior
+#. to verification.
+#: src/verify_email/views.py:94
+msgid "This link was modified before verification."
+msgstr "Este link foi alterado antes da verificação."
+
+#. Explanation: The English sentence conveys that it is not feasible to
+#. request another verification link due to the presence of a faulty link.
+#. This meaning is preserved in Portuguese as "não é possível" (it is not
+#. possible), and "solicitar um segundo link de verificação" (to request
+#. another verification link) maintains the original structure. The French
+#. translation "Impossible de demander un autre lien de vérification avec un
+#. lien défectueux." is accurately translated into Portuguese as "não é
+#. possível solicitar um segundo link de verificação com um lien defeituoso."
+#: src/verify_email/views.py:95
+msgid "Cannot request another verification link with faulty link."
+msgstr ""
+"Não é possível solicitar um segundo link de verificação com um link "
+"defeituoso."
+
+#. Explanation: The English phrase "Faulty Link Detected!" translates to
+#. Portuguese as "Link defeituoso detectado!". In this context, "defeituoso"
+#. means "faulty", and the exclamation mark is preserved in Portuguese.
+#: src/verify_email/views.py:96
+msgid "Faulty Link Detected!"
+msgstr "Link defeituoso detectado!"
+
+#. Explanation: The English sentence "You have exceeded the maximum
+#. verification requests!" translates to Portuguese as "Você excedeu o limite
+#. máximo de solicitações de verificação!", which conveys the same meaning of
+#. exceeding a set limit for verification requests. The French translation "Tu
+#. as dépassé le nombre maximum de demandes de vérification ! Contacte
+#. l'administrateur." is accurately translated to Portuguese as "Você excedeu
+#. o limite máximo de solicitações de verificação! Entre em contato com o
+#. administrador." The use of "excedeu" in Portuguese maintains the same
+#. connotation of exceeding a limit, and "contacte" is translated to "entre em
+#. contato", both meaning "to contact".
+#: src/verify_email/views.py:104 src/verify_email/views.py:193
+msgid "You have exceeded the maximum verification requests! Contact admin."
+msgstr ""
+"Você excedeu o limite máximo de solicitações de verificação! Entre em "
+"contato com o administrador."
+
+#. Explanation: The English phrase "Maxed out!" is an exclamation indicating
+#. that something has reached its limit or capacity, often used in the context
+#. of credit cards. In Portuguese, this meaning is preserved by translating it
+#. as "Maximizado!", where "maximizado" means "maximized".
+#. ```
+#. "Maximizado!"
+#. ```
+#: src/verify_email/views.py:105 src/verify_email/views.py:194
+msgid "Maxed out!"
+msgstr "Maximizado!"
+
+#. Explanation: The English sentence conveys that the provided link is either
+#. invalid or has already been used. This meaning is preserved in Portuguese
+#. as "Este link não é válido ou já foi usado," which translates to "This link
+#. is not valid or has already been used." The phrase "we cannot verify using
+#. this link" is conveyed by "não podemos verificar usando este link," which
+#. means "we cannot verify with this link."
+#: src/verify_email/views.py:113 src/verify_email/views.py:202
+msgid ""
+"This link is invalid or been used already, we cannot verify using this link."
+msgstr ""
+"Este link não é válido ou já foi usado, não podemos verificar usando este "
+"link."
+
+#. Explanation: The English phrase "Invalid Link" translates directly to
+#. Portuguese as "Link inválido," which maintains the same meaning and tone.
+#. No ambiguity exists between the two languages, so no additional explanation
+#. is required.
+#: src/verify_email/views.py:114 src/verify_email/views.py:203
+msgid "Invalid Link"
+msgstr "Link inválido"
+
+#. Explanation: The English phrase "404 User not found" translates directly to
+#. Portuguese as "404 Usuário não encontrado," preserving the number and the
+#. meaning of the original sentence. In this case, there are no placeholders
+#. or HTML markers that need special attention, so they remain in their
+#. original positions.
+#: src/verify_email/views.py:118
+msgid "404 User not found"
+msgstr "404 Usuário não encontrado"
+
+#. Explanation: The English phrase "User is already active" indicates that the
+#. user has been previously engaged or logged in. In Portuguese, this
+#. translates to "O usuário já está ativo," where "O usuário" means "the user"
+#. and "está ativo" means "is already active."
+#. ```
+#. "O usuário já está ativo."
+#. ```
+#: src/verify_email/views.py:133
+msgid "User is already active"
+msgstr "O usuário já está ativo."
+
+#. Explanation: The English phrase "You have requested another verification
+#. email!" translates to Portuguese as "Você pediu outro e-mail de
+#. verificação!". In this translation, the subject ("you") remains consistent
+#. with the French context, which is "Tu" (French for "you"). The verb "have
+#. requested" in English corresponds to "pedir" in Portuguese and "demandé" in
+#. French. The phrase "another verification email" translates directly into
+#. Portuguese as "outro e-mail de verificação", preserving the meaning of
+#. sending a second confirmation email for security purposes.
+#: src/verify_email/views.py:142 src/verify_email/views.py:165
+msgid "You have requested another verification email!"
+msgstr "Você pediu outro e-mail de verificação!"
+
+#. Explanation: This Portuguese translation reflects the meaning of the French
+#. phrase, which indicates that a verification link was sent. The English
+#. sentence is straightforward and does not contain any ambiguity regarding
+#. the action performed (sending a link). Therefore, the Portuguese version "O
+#. seu link de verificação foi enviado" directly conveys this information
+#. while maintaining the original tone and nuance.
+#: src/verify_email/views.py:143 src/verify_email/views.py:166
+msgid "Your verification link has been sent"
+msgstr "O seu link de verificação foi enviado"
+
+#. Explanation: The English phrase "Email Sent!" translates to Portuguese as
+#. "E-mail enviado!". In this context, the exclamation mark indicates a
+#. positive action has been completed. The translation maintains this
+#. affirmative tone and nuance in Portuguese by using "enviado" instead of
+#. "enviada", which is the feminine form for "sent".
+#: src/verify_email/views.py:144 src/verify_email/views.py:167
+msgid "Email Sent!"
+msgstr "E-mail enviado!"
+
+#. Explanation: The English phrase "Something went wrong during sending email
+#. :" is translated into Portuguese as "Algo deu errado ao enviar o e-mail
+#. :(". This translation maintains the negative sentiment and the context of
+#. an issue occurring while sending an email. The colon and parentheses are
+#. preserved in their original positions, reflecting the structure of the
+#. English phrase.
+#: src/verify_email/views.py:171
+msgid "Something went wrong during sending email :("
+msgstr "Algo deu errado ao enviar o e-mail :-("
+
+#. Explanation: The English phrase "User not found associated with given
+#. email!" translates to Portuguese as "Usuário não encontrado associado às
+#. informações de e-mail fornecidas!". This translation maintains the meaning
+#. of the original sentence, indicating that a user cannot be located when
+#. linked to the provided email. The French context "Utilisateur non trouvé
+#. associé à l'email donné !" is consistent with this Portuguese translation,
+#. both conveying the idea that an associated user could not be identified
+#. based on the given email address.
+#: src/verify_email/views.py:175
+msgid "User not found associated with given email!"
+msgstr "Usuário não encontrado associado às informações de e-mail fornecidas!"
+
+#. Explanation: The English phrase "User Not Found" translates directly to
+#. Portuguese as "Usuário não encontrado," which maintains the same meaning
+#. and tone. No ambiguity exists in this translation, as both languages convey
+#. the exact message of a user not being located or found.
+#: src/verify_email/views.py:177
+msgid "User Not Found"
+msgstr "Usuário não encontrado"
+
+#. Explanation: The English phrase "Internal server error!" is a colloquial
+#. way to indicate that there has been an unexpected issue with the server,
+#. causing it to fail or behave erratically. This translation reflects this
+#. meaning in Portuguese as "Erro Interno do Servidor!". The exclamation mark
+#. remains unchanged, emphasizing the urgency of the message.
+#: src/verify_email/views.py:181 src/verify_email/views.py:185
+msgid "Internal server error!"
+msgstr "Erro Interno do Servidor!"
+
+#. Explanation: The English phrase "This user's account is already active"
+#. indicates that the user has an existing, functioning account. In
+#. Portuguese, this meaning is preserved by translating "user's account" as
+#. "cuenta do usuário," and "already active" as "já tem sua conta ativa."
+#. ```
+#. "Este usuário já tem sua conta ativa."
+#. ```
+#: src/verify_email/views.py:211
+msgid "This user's account is already active"
+msgstr "Este usuário já tem sua conta ativa."
+
+#. Explanation: The English phrase "Already Verified!" translates to
+#. Portuguese as "Já Verificado!". This translation maintains the affirmative
+#. tone and indicates that something has been confirmed or checked. The
+#. exclamation mark is also preserved, reflecting the emphasis in the original
+#. English sentence.
+#: src/verify_email/views.py:212
+msgid "Already Verified!"
+msgstr "Já Verificado!"
diff --git a/verify_email/migrations/0001_initial.py b/src/verify_email/migrations/0001_initial.py
similarity index 100%
rename from verify_email/migrations/0001_initial.py
rename to src/verify_email/migrations/0001_initial.py
diff --git a/verify_email/migrations/__init__.py b/src/verify_email/migrations/__init__.py
similarity index 100%
rename from verify_email/migrations/__init__.py
rename to src/verify_email/migrations/__init__.py
diff --git a/verify_email/models.py b/src/verify_email/models.py
similarity index 100%
rename from verify_email/models.py
rename to src/verify_email/models.py
diff --git a/verify_email/signals.py b/src/verify_email/signals.py
similarity index 100%
rename from verify_email/signals.py
rename to src/verify_email/signals.py
diff --git a/verify_email/templates/email_index.html b/src/verify_email/templates/email_index.html
similarity index 100%
rename from verify_email/templates/email_index.html
rename to src/verify_email/templates/email_index.html
diff --git a/verify_email/templates/verify_email/email_verification_failed.html b/src/verify_email/templates/verify_email/email_verification_failed.html
similarity index 100%
rename from verify_email/templates/verify_email/email_verification_failed.html
rename to src/verify_email/templates/verify_email/email_verification_failed.html
diff --git a/verify_email/templates/verify_email/email_verification_msg.html b/src/verify_email/templates/verify_email/email_verification_msg.html
similarity index 71%
rename from verify_email/templates/verify_email/email_verification_msg.html
rename to src/verify_email/templates/verify_email/email_verification_msg.html
index 50399df..30a24bc 100644
--- a/verify_email/templates/verify_email/email_verification_msg.html
+++ b/src/verify_email/templates/verify_email/email_verification_msg.html
@@ -1,3 +1,4 @@
+{%load i18n%}
@@ -6,7 +7,7 @@
- Verify Email address
+ {%trans "Verify Email address"%}