From 9b14e96804f0ff9d159bb35095678a2782b9873c Mon Sep 17 00:00:00 2001 From: leolivier Date: Thu, 8 Aug 2024 17:45:13 +0200 Subject: [PATCH 01/32] django 5.1 compatibility tries to fix https://github.com/foo290/Django-Verify-Email/issues/86 --- verify_email/token_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/verify_email/token_manager.py b/verify_email/token_manager.py index 585df01..3c15b18 100644 --- a/verify_email/token_manager.py +++ b/verify_email/token_manager.py @@ -50,7 +50,7 @@ def __init__(self): salt = self.settings.get('salt', raise_exception=False) sep = self.settings.get('sep', raise_exception=False) - super().__init__(key, sep, salt) + super().__init__(*, key, sep, salt) # Private : def __get_seconds(self, interval): From c9cd6902df6814e64c2705a73aa2cebab18ec46d Mon Sep 17 00:00:00 2001 From: leolivier Date: Thu, 8 Aug 2024 17:47:46 +0200 Subject: [PATCH 02/32] previous change was not done the right way --- verify_email/token_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/verify_email/token_manager.py b/verify_email/token_manager.py index 3c15b18..104db24 100644 --- a/verify_email/token_manager.py +++ b/verify_email/token_manager.py @@ -50,7 +50,7 @@ def __init__(self): salt = self.settings.get('salt', raise_exception=False) sep = self.settings.get('sep', raise_exception=False) - super().__init__(*, key, sep, salt) + super().__init__(key=key, sep=sep, salt=salt) # Private : def __get_seconds(self, interval): From ec7b72bdb3a73323d4fb818dfb6159095855fb52 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Thu, 8 Aug 2024 19:03:33 +0200 Subject: [PATCH 03/32] changed envt --- .github/workflows/python-publish.yml | 12 ++++++------ setup.cfg | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 854e31f..64213fd 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -1,5 +1,5 @@ -name: Upload Python Package +name: Upload Python Package to PyPi on: [push] @@ -9,19 +9,19 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: - python-version: '3.x' + python-version: '3.10' - name: Install dependencies run: | python -m pip install --upgrade pip pip install setuptools wheel twine - name: Build and publish env: - TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} - TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_SECRET_TOKEN }} run: | python setup.py sdist bdist_wheel twine upload --skip-existing dist/* diff --git a/setup.cfg b/setup.cfg index ea5d1c7..9ef3216 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,10 +1,10 @@ [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/ +version = 2.0.4 +author = leolivier +author_email = levillain.olivier@gamil.com +description = A Django app for email verification. Forked from foo290 s initial version +url = https://github.com/leolivier/Django-Verify-Email/ packages =setuptools.find_packages() classifiers = Environment :: Web Environment From 17003a8be2cfbb239f9024dc62fb1e2f3c6e7bdf Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Thu, 8 Aug 2024 19:17:28 +0200 Subject: [PATCH 04/32] publish on testpypi and release on pypi --- .github/workflows/python-publish.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 64213fd..fd5b93e 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -1,7 +1,13 @@ name: Upload Python Package to PyPi -on: [push] +on: + push: + branches: [] + tags-ignore: [] + + release: + types: [prereleased, published] jobs: deploy: @@ -22,6 +28,7 @@ jobs: env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_SECRET_TOKEN }} + PYPI_REPO: ${{ github.event_name == 'push' && '--repository testpypi' || '' }} run: | python setup.py sdist bdist_wheel - twine upload --skip-existing dist/* + twine upload $PYPI_REPO --skip-existing dist/* From 110ca8d06e4dd51b4293caf7f89dbf4642c7dbde Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Thu, 8 Aug 2024 19:24:35 +0200 Subject: [PATCH 05/32] use test secret for test pypi --- .github/workflows/python-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index fd5b93e..fe4970f 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -27,7 +27,7 @@ jobs: - name: Build and publish env: TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_SECRET_TOKEN }} + TWINE_PASSWORD: ${{ github.event_name == 'push' && secrets.TEST_PYPI_SECRET_TOKEN || secrets.PYPI_SECRET_TOKEN }} PYPI_REPO: ${{ github.event_name == 'push' && '--repository testpypi' || '' }} run: | python setup.py sdist bdist_wheel From f7975c3f76340d768d9e71bfbdb8ac675639ee0b Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Thu, 8 Aug 2024 19:37:19 +0200 Subject: [PATCH 06/32] change project name and version to be able to publish --- setup.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.cfg b/setup.cfg index 9ef3216..082baf5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] -name = Django-Verify-Email -version = 2.0.4 +name = django-email-validation +version = 0.9.0 author = leolivier author_email = levillain.olivier@gamil.com description = A Django app for email verification. Forked from foo290 s initial version From 6a370cde64ed712c6f35ede0f10d8d3316fdf331 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Fri, 9 Aug 2024 17:58:24 +0200 Subject: [PATCH 07/32] description --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 082baf5..98bbd8a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,7 +3,7 @@ name = django-email-validation version = 0.9.0 author = leolivier author_email = levillain.olivier@gamil.com -description = A Django app for email verification. Forked from foo290 s initial version +description = A Django app for email verification. Forked from foo290 s Django-Verify-Email v2.0.3 url = https://github.com/leolivier/Django-Verify-Email/ packages =setuptools.find_packages() classifiers = From 67db0c4fac89b9c4f97b59538a4c799dab683b89 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Fri, 9 Aug 2024 18:27:58 +0200 Subject: [PATCH 08/32] fixed wrong code when no form is provided --- verify_email/email_handler.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/verify_email/email_handler.py b/verify_email/email_handler.py index b3fae6f..257270a 100644 --- a/verify_email/email_handler.py +++ b/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 From c80096939f5660b6e133b0dd4d7118c000d0eae2 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Fri, 9 Aug 2024 19:05:36 +0200 Subject: [PATCH 09/32] raise exception on wrong http method --- verify_email/views.py | 134 +++++++++++++++++++++--------------------- 1 file changed, 68 insertions(+), 66 deletions(-) diff --git a/verify_email/views.py b/verify_email/views.py index 07873db..4af06e9 100644 --- a/verify_email/views.py +++ b/verify_email/views.py @@ -1,5 +1,6 @@ import logging +from django.forms import ValidationError from django.http import Http404, HttpResponse from django.urls import reverse from django.shortcuts import render, redirect @@ -42,77 +43,78 @@ def verify_user_and_activate(request, useremail, usertoken): verify the user's email and token and redirect'em accordingly. """ - if request.method == 'GET': - try: - verified = verify_user(useremail, usertoken) - if verified is True: - if login_page and not success_template: - messages.success(request, success_msg) - return redirect(to=login_page) - return render( - request, - template_name=success_template, - context={ - 'msg': success_msg, - 'status': 'Verification Successful!', - 'link': reverse(login_page) - } - ) - else: - # we dont know what went wrong... - raise ValueError - except (ValueError, TypeError) as error: - logger.error(f'[ERROR]: Something went wrong while verifying user, exception: {error}') - return render( - request, - template_name=failed_template, - context={ - 'msg': failed_msg, - 'minor_msg': 'There is something wrong with this link...', - 'status': 'Verification Failed!', - } - ) - except SignatureExpired: - return render( - request, - template_name=link_expired_template, - context={ - 'msg': 'The link has lived its life :( Request a new one!', - 'status': 'Expired!', - 'encoded_email': useremail, - 'encoded_token': usertoken - } - ) - except BadSignature: - return render( - request, - template_name=failed_template, - context={ - 'msg': 'This link was modified before verification.', - 'minor_msg': 'Cannot request another verification link with faulty link.', - 'status': 'Faulty Link Detected!', - } - ) - except MaxRetriesExceeded: - return render( - request, - template_name=failed_template, - context={ - 'msg': 'You have exceeded the maximum verification requests! Contact admin.', - 'status': 'Maxed out!', - } - ) - except InvalidToken: + if request.method != 'GET': + raise ValidationError('Method not allowed') + try: + verified = verify_user(useremail, usertoken) + if verified is True: + if login_page and not success_template: + messages.success(request, success_msg) + return redirect(to=login_page) return render( request, - template_name=failed_template, + template_name=success_template, context={ - 'msg': 'This link is invalid or been used already, we cannot verify using this link.', - 'status': 'Invalid Link', + 'msg': success_msg, + 'status': 'Verification Successful!', + 'link': reverse(login_page) } ) - except UserNotFound: - raise Http404("404 User not found") + else: + # we dont know what went wrong... + raise ValueError + except (ValueError, TypeError) as error: + logger.error(f'[ERROR]: Something went wrong while verifying user, exception: {error}') + return render( + request, + template_name=failed_template, + context={ + 'msg': failed_msg, + 'minor_msg': 'There is something wrong with this link...', + 'status': 'Verification Failed!', + } + ) + except SignatureExpired: + return render( + request, + template_name=link_expired_template, + context={ + 'msg': 'The link has lived its life :( Request a new one!', + 'status': 'Expired!', + 'encoded_email': useremail, + 'encoded_token': usertoken + } + ) + except BadSignature: + return render( + request, + template_name=failed_template, + context={ + 'msg': 'This link was modified before verification.', + 'minor_msg': 'Cannot request another verification link with faulty link.', + 'status': 'Faulty Link Detected!', + } + ) + except MaxRetriesExceeded: + return render( + request, + template_name=failed_template, + context={ + 'msg': 'You have exceeded the maximum verification requests! Contact admin.', + 'status': 'Maxed out!', + } + ) + except InvalidToken: + return render( + request, + template_name=failed_template, + context={ + 'msg': 'This link is invalid or been used already, we cannot verify using this link.', + 'status': 'Invalid Link', + } + ) + except UserNotFound: + raise Http404("404 User not found") def request_new_link(request, useremail=None, usertoken=None): From dc91ff64f894ea90731aa23ca956623af40705ff Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Fri, 9 Aug 2024 19:14:28 +0200 Subject: [PATCH 10/32] changed version --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 98bbd8a..dba019a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = django-email-validation -version = 0.9.0 +version = 0.9.1 author = leolivier author_email = levillain.olivier@gamil.com description = A Django app for email verification. Forked from foo290 s Django-Verify-Email v2.0.3 From 82713662553d67991c6305bdf85f28d5fae4a8a8 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Fri, 9 Aug 2024 21:15:34 +0200 Subject: [PATCH 11/32] 1rst try to modernize the packaging --- .github/workflows/python-publish.yml | 22 ++++++----- README.md | 39 ++++++++++++++++--- pyproject.toml | 32 +++++++++++++++ setup.cfg | 20 ---------- setup.py | 9 ----- src/verify_email/__init__.py | 1 + {verify_email => src/verify_email}/admin.py | 0 .../verify_email}/app_configurations.py | 0 {verify_email => src/verify_email}/apps.py | 0 {verify_email => src/verify_email}/confirm.py | 0 .../verify_email}/email_handler.py | 0 {verify_email => src/verify_email}/errors.py | 0 {verify_email => src/verify_email}/forms.py | 0 .../verify_email}/migrations/0001_initial.py | 0 .../verify_email}/migrations/__init__.py | 0 {verify_email => src/verify_email}/models.py | 0 {verify_email => src/verify_email}/signals.py | 0 .../verify_email}/templates/email_index.html | 0 .../email_verification_failed.html | 0 .../verify_email/email_verification_msg.html | 0 .../email_verification_successful.html | 0 .../templates/verify_email/link_expired.html | 0 .../verify_email/new_email_sent.html | 0 .../verify_email/request_new_email.html | 0 {verify_email => src/verify_email}/tests.py | 0 .../verify_email}/token_manager.py | 0 {verify_email => src/verify_email}/urls.py | 0 {verify_email => src/verify_email}/views.py | 0 verify_email/__init__.py | 3 -- 29 files changed, 79 insertions(+), 47 deletions(-) create mode 100644 pyproject.toml delete mode 100644 setup.cfg delete mode 100644 setup.py create mode 100644 src/verify_email/__init__.py rename {verify_email => src/verify_email}/admin.py (100%) rename {verify_email => src/verify_email}/app_configurations.py (100%) rename {verify_email => src/verify_email}/apps.py (100%) rename {verify_email => src/verify_email}/confirm.py (100%) rename {verify_email => src/verify_email}/email_handler.py (100%) rename {verify_email => src/verify_email}/errors.py (100%) rename {verify_email => src/verify_email}/forms.py (100%) rename {verify_email => src/verify_email}/migrations/0001_initial.py (100%) rename {verify_email => src/verify_email}/migrations/__init__.py (100%) rename {verify_email => src/verify_email}/models.py (100%) rename {verify_email => src/verify_email}/signals.py (100%) rename {verify_email => src/verify_email}/templates/email_index.html (100%) rename {verify_email => src/verify_email}/templates/verify_email/email_verification_failed.html (100%) rename {verify_email => src/verify_email}/templates/verify_email/email_verification_msg.html (100%) rename {verify_email => src/verify_email}/templates/verify_email/email_verification_successful.html (100%) rename {verify_email => src/verify_email}/templates/verify_email/link_expired.html (100%) rename {verify_email => src/verify_email}/templates/verify_email/new_email_sent.html (100%) rename {verify_email => src/verify_email}/templates/verify_email/request_new_email.html (100%) rename {verify_email => src/verify_email}/tests.py (100%) rename {verify_email => src/verify_email}/token_manager.py (100%) rename {verify_email => src/verify_email}/urls.py (100%) rename {verify_email => src/verify_email}/views.py (100%) delete mode 100644 verify_email/__init__.py diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index fe4970f..6861aff 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -19,16 +19,20 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.6' - name: Install dependencies run: | python -m pip install --upgrade pip - pip install setuptools wheel twine - - name: Build and publish + python3 -m pip install --upgrade build + - name: Build package + run: python -m build + - name: Publish package + uses: pypa/gh-action-pypi-publish@release/v1 env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ github.event_name == 'push' && secrets.TEST_PYPI_SECRET_TOKEN || secrets.PYPI_SECRET_TOKEN }} - PYPI_REPO: ${{ github.event_name == 'push' && '--repository testpypi' || '' }} - run: | - python setup.py sdist bdist_wheel - twine upload $PYPI_REPO --skip-existing dist/* + name: ${{ github.event_name == 'push' && 'testpypi' || 'pypi' }} + url: ${{ github.event_name == 'push' && 'https://test.pypi.org/p/' || 'https://pypi.org/project/' }}Django-Verify-Email + with: + user: __token__ + password: ${{ github.event_name == 'push' && secrets.TEST_PYPI_SECRET_TOKEN || secrets.PYPI_SECRET_TOKEN }} + repository-url: ${{ github.event_name == 'push' && 'https://test.pypi.org/legacy/' || 'https://pypi.org/legacy/' }} + diff --git a/README.md b/README.md index 00ee391..61dc10e 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,43 @@ -

Email-Verification for Django

+# 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/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..d3057df --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,32 @@ +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[project] +name = "django-email-validation" +version = "2.0.4" +#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=["binascii", "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" \ No newline at end of file diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index dba019a..0000000 --- a/setup.cfg +++ /dev/null @@ -1,20 +0,0 @@ -[metadata] -name = django-email-validation -version = 0.9.1 -author = leolivier -author_email = levillain.olivier@gamil.com -description = A Django app for email verification. Forked from foo290 s Django-Verify-Email v2.0.3 -url = https://github.com/leolivier/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 100% rename from verify_email/app_configurations.py rename to src/verify_email/app_configurations.py 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 100% rename from verify_email/email_handler.py rename to src/verify_email/email_handler.py 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/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 100% rename from verify_email/templates/verify_email/email_verification_msg.html rename to src/verify_email/templates/verify_email/email_verification_msg.html diff --git a/verify_email/templates/verify_email/email_verification_successful.html b/src/verify_email/templates/verify_email/email_verification_successful.html similarity index 100% rename from verify_email/templates/verify_email/email_verification_successful.html rename to src/verify_email/templates/verify_email/email_verification_successful.html diff --git a/verify_email/templates/verify_email/link_expired.html b/src/verify_email/templates/verify_email/link_expired.html similarity index 100% rename from verify_email/templates/verify_email/link_expired.html rename to src/verify_email/templates/verify_email/link_expired.html diff --git a/verify_email/templates/verify_email/new_email_sent.html b/src/verify_email/templates/verify_email/new_email_sent.html similarity index 100% rename from verify_email/templates/verify_email/new_email_sent.html rename to src/verify_email/templates/verify_email/new_email_sent.html diff --git a/verify_email/templates/verify_email/request_new_email.html b/src/verify_email/templates/verify_email/request_new_email.html similarity index 100% rename from verify_email/templates/verify_email/request_new_email.html rename to src/verify_email/templates/verify_email/request_new_email.html diff --git a/verify_email/tests.py b/src/verify_email/tests.py similarity index 100% rename from verify_email/tests.py rename to src/verify_email/tests.py diff --git a/verify_email/token_manager.py b/src/verify_email/token_manager.py similarity index 100% rename from verify_email/token_manager.py rename to src/verify_email/token_manager.py diff --git a/verify_email/urls.py b/src/verify_email/urls.py similarity index 100% rename from verify_email/urls.py rename to src/verify_email/urls.py diff --git a/verify_email/views.py b/src/verify_email/views.py similarity index 100% rename from verify_email/views.py rename to src/verify_email/views.py diff --git a/verify_email/__init__.py b/verify_email/__init__.py deleted file mode 100644 index 29e0ad4..0000000 --- a/verify_email/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .email_handler import * - - From e38a2a6f6516baf8fd3a46ed47ccb57ea3b3748a Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Fri, 9 Aug 2024 21:16:54 +0200 Subject: [PATCH 12/32] upgrade python version --- .github/workflows/python-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 6861aff..032ab7c 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -19,7 +19,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.6' + python-version: '3.8' - name: Install dependencies run: | python -m pip install --upgrade pip From 0aab81c9a567a8b7e1023adb50da42b719a5f6e0 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Fri, 9 Aug 2024 21:18:12 +0200 Subject: [PATCH 13/32] typo --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d3057df..927fcab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ name = "django-email-validation" version = "2.0.4" #dynamic = ["version"] authors = [ - { name="Nitin Sharma", email="ns290670@gamil.com"} + { name="Nitin Sharma", email="ns290670@gamil.com"}, { name="Olivier LEVILLAIN", email="levillain.olivier@gmail.com" }, ] description = " A Django app for email verification." From 9d706da1a176f0095a918c1b901761448a475a65 Mon Sep 17 00:00:00 2001 From: leolivier Date: Fri, 9 Aug 2024 22:16:21 +0200 Subject: [PATCH 14/32] changed package and project name --- pyproject.toml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 927fcab..23a38a0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,9 @@ -[build-system] +I'll[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] -name = "django-email-validation" +name = "Django-Verify-Email" version = "2.0.4" #dynamic = ["version"] authors = [ @@ -29,4 +29,7 @@ keywords = ["email", "validation", "check"] 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" \ No newline at end of file +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 From 042b952286844a186e67f802f0799240535ce501 Mon Sep 17 00:00:00 2001 From: leolivier Date: Fri, 9 Aug 2024 22:17:43 +0200 Subject: [PATCH 15/32] typo --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 23a38a0..09f6e4e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,4 +1,4 @@ -I'll[build-system] +[build-system] requires = ["hatchling"] build-backend = "hatchling.build" From adcf2ed25555f9d7aa474630c787aec849a491e7 Mon Sep 17 00:00:00 2001 From: leolivier Date: Fri, 9 Aug 2024 22:19:30 +0200 Subject: [PATCH 16/32] yet another typo --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 09f6e4e..c817999 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,5 +31,5 @@ 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] +[tool.hatch.build.targets.wheel] packages = ["src/verify_email"] \ No newline at end of file From d42b143fe55b43b78a0cabf8abb8d72ff84f38a7 Mon Sep 17 00:00:00 2001 From: leolivier Date: Fri, 9 Aug 2024 22:23:49 +0200 Subject: [PATCH 17/32] use another project name to be allowed to upload to pypi --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c817999..2e80b1a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ requires = ["hatchling"] build-backend = "hatchling.build" [project] -name = "Django-Verify-Email" +name = "django-email-verification" version = "2.0.4" #dynamic = ["version"] authors = [ From cee5b700b89306f34f0e86dde3f394ca2f882c79 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sat, 10 Aug 2024 13:24:30 +0200 Subject: [PATCH 18/32] refactored to use trusted publishing --- .github/workflows/python-publish.yml | 64 +++++++++++++++++++--------- 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 032ab7c..c40dd9f 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -10,29 +10,55 @@ on: types: [prereleased, published] jobs: + build: + runs-on: ubuntu-latest + name: build python package + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.8' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python3 -m pip install --upgrade build + - name: Build package + run: python -m build + deploy: + if: github.event_name == 'release' + needs: build + runs-on: ubuntu-latest + name: Upload Python Package to PyPi on release + environment: + name: pypi-release + url: https://pypi.org/p/django-email-validation + + permissions: + id-token: write # IMPORTANT: this permission is mandatory for trusted publishing + + steps: + - name: Publish package to pypi if release + uses: pypa/gh-action-pypi-publish@release/v1 + + deploy-test: + if: github.event_name == 'push' + needs: build runs-on: ubuntu-latest + name: Upload Python Package to Test PyPi on push + + environment: + name: pypi-test + url: https://test.pypi.org/p/django-email-validation + + permissions: + id-token: write # IMPORTANT: this permission is mandatory for trusted publishing steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: '3.8' - - name: Install dependencies - run: | - python -m pip install --upgrade pip - python3 -m pip install --upgrade build - - name: Build package - run: python -m build - - name: Publish package + - name: Publish package to test.pypi if push uses: pypa/gh-action-pypi-publish@release/v1 - env: - name: ${{ github.event_name == 'push' && 'testpypi' || 'pypi' }} - url: ${{ github.event_name == 'push' && 'https://test.pypi.org/p/' || 'https://pypi.org/project/' }}Django-Verify-Email with: - user: __token__ - password: ${{ github.event_name == 'push' && secrets.TEST_PYPI_SECRET_TOKEN || secrets.PYPI_SECRET_TOKEN }} - repository-url: ${{ github.event_name == 'push' && 'https://test.pypi.org/legacy/' || 'https://pypi.org/legacy/' }} - + repository-url: https://test.pypi.org/legacy/ + \ No newline at end of file From e5a79e2add9fc4905fc903a5084dfff3db1d28c9 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sat, 10 Aug 2024 13:36:30 +0200 Subject: [PATCH 19/32] added upload/download dist --- .github/workflows/python-publish.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index c40dd9f..71832d8 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -25,6 +25,10 @@ jobs: python3 -m pip install --upgrade build - name: Build package run: python -m build + - uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/ deploy: if: github.event_name == 'release' @@ -40,6 +44,9 @@ jobs: id-token: write # IMPORTANT: this permission is mandatory for trusted publishing steps: + - uses: actions/download-artifact@v4 + with: + name: dist - name: Publish package to pypi if release uses: pypa/gh-action-pypi-publish@release/v1 @@ -57,6 +64,9 @@ jobs: id-token: write # IMPORTANT: this permission is mandatory for trusted publishing steps: + - uses: actions/download-artifact@v4 + with: + name: dist - name: Publish package to test.pypi if push uses: pypa/gh-action-pypi-publish@release/v1 with: From 504b7c512151009930bc3189c6d6af72febbda1b Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sat, 10 Aug 2024 13:41:23 +0200 Subject: [PATCH 20/32] changed path of upload --- .github/workflows/python-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 71832d8..c011190 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -28,7 +28,7 @@ jobs: - uses: actions/upload-artifact@v4 with: name: dist - path: dist/ + path: dist/* deploy: if: github.event_name == 'release' From 145e3dcdfd988ae3846f85915b32a43f7d629b10 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sat, 10 Aug 2024 19:54:18 +0200 Subject: [PATCH 21/32] added manual unzip of dist --- .github/workflows/python-publish.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index c011190..6b6a7ee 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -28,7 +28,7 @@ jobs: - uses: actions/upload-artifact@v4 with: name: dist - path: dist/* + path: dist/ deploy: if: github.event_name == 'release' @@ -47,6 +47,8 @@ jobs: - uses: actions/download-artifact@v4 with: name: dist + - name: Unzip artifact + run: unzip dist.zip -d dist - name: Publish package to pypi if release uses: pypa/gh-action-pypi-publish@release/v1 @@ -67,6 +69,8 @@ jobs: - uses: actions/download-artifact@v4 with: name: dist + - name: Unzip artifact + run: unzip dist.zip -d dist - name: Publish package to test.pypi if push uses: pypa/gh-action-pypi-publish@release/v1 with: From 550ddbdee27eab8107dead76a1f4f5c52cd8736c Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sat, 10 Aug 2024 19:58:58 +0200 Subject: [PATCH 22/32] unzip using the action itself --- .github/workflows/python-publish.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 6b6a7ee..0f42036 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -47,8 +47,7 @@ jobs: - uses: actions/download-artifact@v4 with: name: dist - - name: Unzip artifact - run: unzip dist.zip -d dist + path: dist/ - name: Publish package to pypi if release uses: pypa/gh-action-pypi-publish@release/v1 @@ -69,8 +68,7 @@ jobs: - uses: actions/download-artifact@v4 with: name: dist - - name: Unzip artifact - run: unzip dist.zip -d dist + path: dist/ - name: Publish package to test.pypi if push uses: pypa/gh-action-pypi-publish@release/v1 with: From 5f2c94eb4e75a17178a40a30c8b831dcf8086900 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sat, 10 Aug 2024 20:29:08 +0200 Subject: [PATCH 23/32] OIDC Connect error. Tries w/o url on ChatGPT advice --- .github/workflows/python-publish.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 0f42036..4a39c09 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -59,7 +59,6 @@ jobs: environment: name: pypi-test - url: https://test.pypi.org/p/django-email-validation permissions: id-token: write # IMPORTANT: this permission is mandatory for trusted publishing From 7f892f43134602b554b6151dcfeb2aca308453cc Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sat, 10 Aug 2024 20:31:57 +0200 Subject: [PATCH 24/32] verbose try --- .github/workflows/python-publish.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 4a39c09..ea26b00 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -72,4 +72,5 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 with: repository-url: https://test.pypi.org/legacy/ + verbose: true \ No newline at end of file From bc8ac98fa1cce2ec415feaa0e2ba95dd3013295b Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sat, 10 Aug 2024 20:39:29 +0200 Subject: [PATCH 25/32] removed all unused urls + changed publisher on test.pypi.org --- .github/workflows/python-publish.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index ea26b00..26c9146 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -38,10 +38,9 @@ jobs: environment: name: pypi-release - url: https://pypi.org/p/django-email-validation permissions: - id-token: write # IMPORTANT: this permission is mandatory for trusted publishing + id-token: write steps: - uses: actions/download-artifact@v4 @@ -61,7 +60,7 @@ jobs: name: pypi-test permissions: - id-token: write # IMPORTANT: this permission is mandatory for trusted publishing + id-token: write steps: - uses: actions/download-artifact@v4 From 4586b66ffc4759b3047f5b673a4bf6afd5997588 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sat, 10 Aug 2024 20:44:07 +0200 Subject: [PATCH 26/32] OIDC issue is due to the project name --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 2e80b1a..8708ba7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ requires = ["hatchling"] build-backend = "hatchling.build" [project] -name = "django-email-verification" +name = "django-email-validation" version = "2.0.4" #dynamic = ["version"] authors = [ From 4010e37ae817e11ecb0360bf5db6eea595f0cba1 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sat, 10 Aug 2024 20:50:05 +0200 Subject: [PATCH 27/32] removed verbose --- .github/workflows/python-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 26c9146..7297c3b 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -71,5 +71,5 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 with: repository-url: https://test.pypi.org/legacy/ - verbose: true + \ No newline at end of file From 6e2cfcc75ed2de5c9daced02b6a3600ebb786ca7 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sat, 10 Aug 2024 20:57:40 +0200 Subject: [PATCH 28/32] removed binascii from dependencies --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8708ba7..30df346 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ authors = [ description = " A Django app for email verification." readme = "README.md" requires-python = ">=3.6" -dependencies=["binascii", "django"] +dependencies=["django"] classifiers = [ "Environment :: Web Environment", "Framework :: Django CMS :: 3.8", From c7b2982b1341cbe4267b19ea3fc39267e9630b77 Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sun, 11 Aug 2024 10:26:06 +0200 Subject: [PATCH 29/32] moved to v2.0.5 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 30df346..6c496c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "django-email-validation" -version = "2.0.4" +version = "2.0.5" #dynamic = ["version"] authors = [ { name="Nitin Sharma", email="ns290670@gamil.com"}, From 9aceedac4d4573bb7cbab9226667cb6a04bafaeb Mon Sep 17 00:00:00 2001 From: Olivier LEVILLAIN Date: Sun, 2 Feb 2025 18:20:36 +0100 Subject: [PATCH 30/32] localization - 1rst try --- manage.py | 22 + pyproject.toml | 2 +- src/verify_email/app_configurations.py | 11 +- .../locale/de/LC_MESSAGES/django.po | 506 +++++++++++++++++ .../locale/es/LC_MESSAGES/django.po | 530 ++++++++++++++++++ .../locale/fr/LC_MESSAGES/django.po | 203 +++++++ .../locale/it/LC_MESSAGES/django.po | 520 +++++++++++++++++ .../locale/pt/LC_MESSAGES/django.po | 482 ++++++++++++++++ .../verify_email/email_verification_msg.html | 18 +- .../email_verification_successful.html | 4 +- .../templates/verify_email/link_expired.html | 8 +- .../verify_email/request_new_email.html | 8 +- src/verify_email/views.py | 65 +-- 13 files changed, 2322 insertions(+), 57 deletions(-) create mode 100755 manage.py create mode 100644 src/verify_email/locale/de/LC_MESSAGES/django.po create mode 100644 src/verify_email/locale/es/LC_MESSAGES/django.po create mode 100644 src/verify_email/locale/fr/LC_MESSAGES/django.po create mode 100644 src/verify_email/locale/it/LC_MESSAGES/django.po create mode 100644 src/verify_email/locale/pt/LC_MESSAGES/django.po 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 index 6c496c7..97b76a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "django-email-validation" -version = "2.0.5" +version = "2.1" #dynamic = ["version"] authors = [ { name="Nitin Sharma", email="ns290670@gamil.com"}, diff --git a/src/verify_email/app_configurations.py b/src/verify_email/app_configurations.py index 5efa7b5..ffd8621 100644 --- a/src/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/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.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.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.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.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/src/verify_email/templates/verify_email/email_verification_msg.html b/src/verify_email/templates/verify_email/email_verification_msg.html index 50399df..30a24bc 100644 --- a/src/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"%}