mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-05-02 21:44:19 +02:00
Compare commits
108 Commits
0.19.0
...
fix-procra
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d72ff3cdf5 | ||
|
|
63c69e5c6a | ||
|
|
78171183cc | ||
|
|
34a2b6bfd4 | ||
|
|
8fc11b0acf | ||
|
|
9a30a0d3c0 | ||
|
|
10eecd09ff | ||
|
|
2cfb3fb12e | ||
|
|
47af8b135b | ||
|
|
39d0e63375 | ||
|
|
792154eba2 | ||
|
|
dc76ed3156 | ||
|
|
e627dd50be | ||
|
|
5527389196 | ||
|
|
be24ca014e | ||
|
|
7c7056536e | ||
|
|
66d5d7a83b | ||
|
|
4d3ce087d6 | ||
|
|
aeaf9fac43 | ||
|
|
dcedf53b83 | ||
|
|
549648bd6b | ||
|
|
79149abdd2 | ||
|
|
d66d1530bb | ||
|
|
4b9b6484d3 | ||
|
|
a02944bdae | ||
|
|
3ede5304f1 | ||
|
|
27041695b8 | ||
|
|
0c927a2fe9 | ||
|
|
c52db80c64 | ||
|
|
330ce8069c | ||
|
|
2989f11b01 | ||
|
|
738bb7fb74 | ||
|
|
79e50cd853 | ||
|
|
0a23c3ad5b | ||
|
|
43c7749102 | ||
|
|
c1c4ccda8c | ||
|
|
615a689c61 | ||
|
|
c5ccc42f99 | ||
|
|
2baa8b21e8 | ||
|
|
2e554141ba | ||
|
|
73ec6dc0fe | ||
|
|
e19449ff99 | ||
|
|
e81651119c | ||
|
|
55e9ef1b3f | ||
|
|
c414179135 | ||
|
|
14c507de0f | ||
|
|
4722690fe9 | ||
|
|
493619a4ff | ||
|
|
fb4aec88f1 | ||
|
|
4a35e770a4 | ||
|
|
83b81edbae | ||
|
|
a7dc2c955e | ||
|
|
ce2ae562c6 | ||
|
|
de2881ffd4 | ||
|
|
838bf22498 | ||
|
|
d3797ae4a5 | ||
|
|
0532397afd | ||
|
|
8106dc58e5 | ||
|
|
5986cf675b | ||
|
|
80da9142f1 | ||
|
|
766516d248 | ||
|
|
3fd0fba1b8 | ||
|
|
c787565c04 | ||
|
|
0413921dbe | ||
|
|
9ecf8279b4 | ||
|
|
86cf625158 | ||
|
|
ea097ab6f0 | ||
|
|
b1201b51bb | ||
|
|
4c1d20215c | ||
|
|
27e85c4776 | ||
|
|
5a73cd20da | ||
|
|
e305fab300 | ||
|
|
c11f525373 | ||
|
|
ea5d86dbf8 | ||
|
|
a1d3539e3c | ||
|
|
1028a11c8b | ||
|
|
e387a5e2a8 | ||
|
|
624dc382cf | ||
|
|
f88699b333 | ||
|
|
ca98dc073b | ||
|
|
63ba7af3c8 | ||
|
|
2d0dee4a9b | ||
|
|
0000a9ee03 | ||
|
|
41adb37fdb | ||
|
|
496651173e | ||
|
|
8836f06b80 | ||
|
|
e98a48b3a7 | ||
|
|
f9bc9f449b | ||
|
|
26eb1ae813 | ||
|
|
29a2cb9813 | ||
|
|
be79e1b25a | ||
|
|
3fd08466a7 | ||
|
|
6896cdcdca | ||
|
|
2532930a64 | ||
|
|
24a1ef2d0a | ||
|
|
163f2f4e5b | ||
|
|
ede63acf5f | ||
|
|
a8ba3d8754 | ||
|
|
e2f1156264 | ||
|
|
d5bbad7887 | ||
|
|
7ebacff6e4 | ||
|
|
df8ef5d04c | ||
|
|
fa2a8b8c65 | ||
|
|
e44ac5dab6 | ||
|
|
f9261d1283 | ||
|
|
4c73c1cae5 | ||
|
|
0315a56f88 | ||
|
|
44d6b8b53c |
29
.vscode/launch.json
vendored
Normal file
29
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Docker: Dev",
|
||||
"type": "node-terminal",
|
||||
"request": "launch",
|
||||
"command": "docker compose --env-file .env -f docker-compose.dev.yml up --build",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"postDebugTask": "Docker: Dev Down"
|
||||
},
|
||||
{
|
||||
"name": "Docker: Dev (no rebuild)",
|
||||
"type": "node-terminal",
|
||||
"request": "launch",
|
||||
"command": "docker compose --env-file .env -f docker-compose.dev.yml up",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"postDebugTask": "Docker: Dev Down"
|
||||
},
|
||||
{
|
||||
"name": "Docker: Prod",
|
||||
"type": "node-terminal",
|
||||
"request": "launch",
|
||||
"command": "docker compose --env-file .prod.env -f docker-compose.prod.yml up --build",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"postDebugTask": "Docker: Prod Down"
|
||||
}
|
||||
]
|
||||
}
|
||||
119
.vscode/tasks.json
vendored
Normal file
119
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Docker: Dev",
|
||||
"type": "shell",
|
||||
"command": "docker",
|
||||
"args": [
|
||||
"compose",
|
||||
"--env-file",
|
||||
".env",
|
||||
"-f",
|
||||
"docker-compose.dev.yml",
|
||||
"up",
|
||||
"--build"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
"group": "build",
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Docker: Dev (no rebuild)",
|
||||
"type": "shell",
|
||||
"command": "docker",
|
||||
"args": [
|
||||
"compose",
|
||||
"--env-file",
|
||||
".env",
|
||||
"-f",
|
||||
"docker-compose.dev.yml",
|
||||
"up"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Docker: Dev Refresh Vite Deps",
|
||||
"type": "shell",
|
||||
"command": "docker compose --env-file .env -f docker-compose.dev.yml rm -sfv vite; docker compose --env-file .env -f docker-compose.dev.yml up --build",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Docker: Dev Down",
|
||||
"type": "shell",
|
||||
"command": "docker",
|
||||
"args": [
|
||||
"compose",
|
||||
"--env-file",
|
||||
".env",
|
||||
"-f",
|
||||
"docker-compose.dev.yml",
|
||||
"down"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Docker: Prod",
|
||||
"type": "shell",
|
||||
"command": "docker",
|
||||
"args": [
|
||||
"compose",
|
||||
"--env-file",
|
||||
".prod.env",
|
||||
"-f",
|
||||
"docker-compose.prod.yml",
|
||||
"up",
|
||||
"--build"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Docker: Prod Down",
|
||||
"type": "shell",
|
||||
"command": "docker",
|
||||
"args": [
|
||||
"compose",
|
||||
"--env-file",
|
||||
".prod.env",
|
||||
"-f",
|
||||
"docker-compose.prod.yml",
|
||||
"down"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Django: Runserver localhost:8000",
|
||||
"type": "shell",
|
||||
"command": "${command:python.interpreterPath}",
|
||||
"args": [
|
||||
"manage.py",
|
||||
"runserver",
|
||||
"localhost:8000"
|
||||
],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/app",
|
||||
"env": {
|
||||
"PYTHONUNBUFFERED": "1"
|
||||
}
|
||||
},
|
||||
"problemMatcher": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -157,6 +157,13 @@ WYGIWYH supports login via OpenID Connect (OIDC) through `django-allauth`. This
|
||||
> [!NOTE]
|
||||
> Currently only OpenID Connect is supported as a provider, open an issue if you need something else.
|
||||
|
||||
> [!Caution]
|
||||
> WYGIWYH automatically connects OIDC accounts to existing local accounts with matching email addresses.
|
||||
> This means if a user already exists with email `user@example.com` and someone logs in via OIDC with the same email, the OIDC account will be automatically linked to the existing account without requiring user confirmation.
|
||||
> This is only recommended for trusted OIDC providers that verify email addresses and where you control who can create accounts.
|
||||
|
||||
### Configuration
|
||||
|
||||
To configure OIDC, you need to set the following environment variables:
|
||||
|
||||
| Variable | Description |
|
||||
|
||||
@@ -376,8 +376,10 @@ ACCOUNT_EMAIL_VERIFICATION = "none"
|
||||
SOCIALACCOUNT_LOGIN_ON_GET = True
|
||||
SOCIALACCOUNT_ONLY = True
|
||||
SOCIALACCOUNT_AUTO_SIGNUP = os.getenv("OIDC_ALLOW_SIGNUP", "true").lower() == "true"
|
||||
SOCIALACCOUNT_EMAIL_AUTHENTICATION = True
|
||||
SOCIALACCOUNT_EMAIL_AUTHENTICATION_AUTO_CONNECT = True
|
||||
ACCOUNT_ADAPTER = "allauth.account.adapter.DefaultAccountAdapter"
|
||||
SOCIALACCOUNT_ADAPTER = "allauth.socialaccount.adapter.DefaultSocialAccountAdapter"
|
||||
SOCIALACCOUNT_ADAPTER = "apps.users.adapters.AutoConnectSocialAccountAdapter"
|
||||
|
||||
# CRISPY FORMS
|
||||
CRISPY_ALLOWED_TEMPLATE_PACKS = [
|
||||
@@ -390,6 +392,10 @@ SESSION_EXPIRE_AT_BROWSER_CLOSE = False
|
||||
SESSION_COOKIE_AGE = int(os.getenv("SESSION_EXPIRY_TIME", 2678400)) # 31 days
|
||||
SESSION_COOKIE_SECURE = os.getenv("HTTPS_ENABLED", "false").lower() == "true"
|
||||
|
||||
HTTPS_ENABLED = os.getenv("HTTPS_ENABLED", "false").lower() == "true"
|
||||
ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https" if HTTPS_ENABLED else "http"
|
||||
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") if HTTPS_ENABLED else None
|
||||
|
||||
DEBUG_TOOLBAR_CONFIG = {
|
||||
"ROOT_TAG_EXTRA_ATTRS": "hx-preserve",
|
||||
# "SHOW_TOOLBAR_CALLBACK": lambda r: False, # disables it
|
||||
@@ -458,7 +464,7 @@ SPECTACULAR_SETTINGS = {
|
||||
if "procrastinate" in sys.argv:
|
||||
LOGGING = {
|
||||
"version": 1,
|
||||
"disable_existing_loggers": False,
|
||||
"disable_existing_loggers": True,
|
||||
"formatters": {
|
||||
"standard": {
|
||||
"format": "[%(asctime)s] - %(levelname)s - %(name)s - %(message)s",
|
||||
@@ -466,26 +472,19 @@ if "procrastinate" in sys.argv:
|
||||
},
|
||||
},
|
||||
"handlers": {
|
||||
"procrastinate": {
|
||||
"level": "INFO",
|
||||
"class": "logging.StreamHandler",
|
||||
"formatter": "standard",
|
||||
},
|
||||
"console": {
|
||||
"class": "logging.StreamHandler",
|
||||
"formatter": "standard",
|
||||
"level": "INFO",
|
||||
},
|
||||
},
|
||||
"root": {
|
||||
"handlers": ["console"],
|
||||
"level": "INFO",
|
||||
},
|
||||
"loggers": {
|
||||
"procrastinate": {
|
||||
"handlers": ["procrastinate"],
|
||||
"propagate": False,
|
||||
},
|
||||
"root": {
|
||||
"handlers": ["console"],
|
||||
"level": "INFO",
|
||||
"propagate": False,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -505,19 +504,20 @@ else:
|
||||
"formatter": "standard",
|
||||
"level": "INFO",
|
||||
},
|
||||
"procrastinate": {
|
||||
"level": "INFO",
|
||||
"class": "logging.StreamHandler",
|
||||
},
|
||||
},
|
||||
"root": {
|
||||
"handlers": ["console"],
|
||||
"level": "INFO",
|
||||
},
|
||||
"loggers": {
|
||||
"procrastinate": {
|
||||
"handlers": None,
|
||||
"handlers": [],
|
||||
"propagate": False,
|
||||
},
|
||||
"root": {
|
||||
"allauth": {
|
||||
"handlers": ["console"],
|
||||
"level": "INFO",
|
||||
"level": "DEBUG",
|
||||
"propagate": False,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -90,10 +90,10 @@ class AccountBalanceAPITests(TestCase):
|
||||
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
|
||||
|
||||
def test_get_balance_unauthenticated(self):
|
||||
"""Test unauthenticated request returns 403"""
|
||||
"""Test unauthenticated request returns 401"""
|
||||
unauthenticated_client = APIClient()
|
||||
response = unauthenticated_client.get(
|
||||
f"/api/accounts/{self.account.id}/balance/"
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
@@ -159,7 +159,7 @@ column_mapping:
|
||||
self.assertIn("import_run_id", response.data)
|
||||
|
||||
def test_unauthenticated_request(self):
|
||||
"""Test unauthenticated request returns 403"""
|
||||
"""Test unauthenticated request returns 401"""
|
||||
unauthenticated_client = APIClient()
|
||||
|
||||
csv_content = b"date,description,amount\n2025-01-01,Test,100"
|
||||
@@ -173,7 +173,7 @@ column_mapping:
|
||||
format="multipart",
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
|
||||
@override_settings(
|
||||
@@ -266,11 +266,11 @@ column_mapping:
|
||||
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
|
||||
|
||||
def test_profiles_unauthenticated(self):
|
||||
"""Test unauthenticated request returns 403"""
|
||||
"""Test unauthenticated request returns 401"""
|
||||
unauthenticated_client = APIClient()
|
||||
response = unauthenticated_client.get("/api/import/profiles/")
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
|
||||
@override_settings(
|
||||
@@ -397,8 +397,8 @@ column_mapping:
|
||||
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
|
||||
|
||||
def test_runs_unauthenticated(self):
|
||||
"""Test unauthenticated request returns 403"""
|
||||
"""Test unauthenticated request returns 401"""
|
||||
unauthenticated_client = APIClient()
|
||||
response = unauthenticated_client.get("/api/import/runs/")
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
|
||||
|
||||
@@ -1,6 +1,47 @@
|
||||
import functools
|
||||
import inspect
|
||||
|
||||
import procrastinate
|
||||
from django.db import close_old_connections
|
||||
|
||||
|
||||
_CONNECTION_CLEANUP_WRAPPED = "_wygiwyh_connection_cleanup_wrapped"
|
||||
|
||||
|
||||
def _wrap_task_with_django_connection_cleanup(task):
|
||||
if getattr(task.func, _CONNECTION_CLEANUP_WRAPPED, False):
|
||||
return
|
||||
|
||||
func = task.func
|
||||
|
||||
if inspect.iscoroutinefunction(func):
|
||||
|
||||
@functools.wraps(func)
|
||||
async def async_wrapped(*args, **kwargs):
|
||||
close_old_connections()
|
||||
try:
|
||||
return await func(*args, **kwargs)
|
||||
finally:
|
||||
close_old_connections()
|
||||
|
||||
wrapped = async_wrapped
|
||||
else:
|
||||
|
||||
@functools.wraps(func)
|
||||
def sync_wrapped(*args, **kwargs):
|
||||
close_old_connections()
|
||||
try:
|
||||
return func(*args, **kwargs)
|
||||
finally:
|
||||
close_old_connections()
|
||||
|
||||
wrapped = sync_wrapped
|
||||
|
||||
setattr(wrapped, _CONNECTION_CLEANUP_WRAPPED, True)
|
||||
task.func = wrapped
|
||||
|
||||
|
||||
def on_app_ready(app: procrastinate.App):
|
||||
"""This function is ran upon procrastinate initialization."""
|
||||
...
|
||||
for task in set(app.tasks.values()):
|
||||
_wrap_task_with_django_connection_cleanup(task)
|
||||
|
||||
1
app/apps/common/tests/__init__.py
Normal file
1
app/apps/common/tests/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
89
app/apps/common/tests/test_procrastinate.py
Normal file
89
app/apps/common/tests/test_procrastinate.py
Normal file
@@ -0,0 +1,89 @@
|
||||
from unittest.mock import patch
|
||||
|
||||
import procrastinate
|
||||
from django.db import connection
|
||||
from django.test import SimpleTestCase, TransactionTestCase
|
||||
from procrastinate.testing import InMemoryConnector
|
||||
|
||||
from apps.common.procrastinate import on_app_ready
|
||||
|
||||
|
||||
def make_app_with_task(func):
|
||||
app = procrastinate.App(connector=InMemoryConnector())
|
||||
task = app.task(name="sample_task")(func)
|
||||
|
||||
return app, task
|
||||
|
||||
|
||||
class ProcrastinateConnectionCleanupTests(SimpleTestCase):
|
||||
def test_app_ready_closes_old_connections_around_sync_tasks(self):
|
||||
calls = []
|
||||
|
||||
def sample_task(value):
|
||||
calls.append(("task", value))
|
||||
return value * 2
|
||||
|
||||
app, task = make_app_with_task(sample_task)
|
||||
|
||||
with patch(
|
||||
"apps.common.procrastinate.close_old_connections",
|
||||
create=True,
|
||||
side_effect=lambda: calls.append(("cleanup", None)),
|
||||
):
|
||||
on_app_ready(app)
|
||||
|
||||
result = task.func(3)
|
||||
|
||||
self.assertEqual(result, 6)
|
||||
self.assertEqual(
|
||||
calls,
|
||||
[
|
||||
("cleanup", None),
|
||||
("task", 3),
|
||||
("cleanup", None),
|
||||
],
|
||||
)
|
||||
|
||||
def test_app_ready_closes_old_connections_when_sync_task_raises(self):
|
||||
calls = []
|
||||
|
||||
def sample_task():
|
||||
calls.append(("task", None))
|
||||
raise RuntimeError("boom")
|
||||
|
||||
app, task = make_app_with_task(sample_task)
|
||||
|
||||
with patch(
|
||||
"apps.common.procrastinate.close_old_connections",
|
||||
create=True,
|
||||
side_effect=lambda: calls.append(("cleanup", None)),
|
||||
):
|
||||
on_app_ready(app)
|
||||
|
||||
with self.assertRaises(RuntimeError):
|
||||
task.func()
|
||||
|
||||
self.assertEqual(
|
||||
calls,
|
||||
[
|
||||
("cleanup", None),
|
||||
("task", None),
|
||||
("cleanup", None),
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
class ProcrastinateConnectionRecoveryTests(TransactionTestCase):
|
||||
def test_wrapped_task_recovers_from_closed_django_connection(self):
|
||||
def sample_task():
|
||||
with connection.cursor() as cursor:
|
||||
cursor.execute("SELECT 1")
|
||||
return cursor.fetchone()[0]
|
||||
|
||||
app, task = make_app_with_task(sample_task)
|
||||
on_app_ready(app)
|
||||
|
||||
connection.ensure_connection()
|
||||
connection.connection.close()
|
||||
|
||||
self.assertEqual(task.func(), 1)
|
||||
@@ -106,6 +106,17 @@ class ExcelImportSettings(BaseModel):
|
||||
sheets: list[str] | str = "*"
|
||||
|
||||
|
||||
class QIFImportSettings(BaseModel):
|
||||
skip_errors: bool = Field(
|
||||
default=False,
|
||||
description="If True, errors during import will be logged and skipped",
|
||||
)
|
||||
file_type: Literal["qif"] = "qif"
|
||||
importing: Literal["transactions"] = "transactions"
|
||||
encoding: str = Field(default="utf-8", description="File encoding")
|
||||
date_format: str = Field(..., description="Date format (e.g. %d/%m/%Y)")
|
||||
|
||||
|
||||
class ColumnMapping(BaseModel):
|
||||
source: Optional[str] | Optional[list[str]] = Field(
|
||||
default=None,
|
||||
@@ -342,7 +353,7 @@ class CurrencyExchangeMapping(ColumnMapping):
|
||||
|
||||
|
||||
class ImportProfileSchema(BaseModel):
|
||||
settings: CSVImportSettings | ExcelImportSettings
|
||||
settings: CSVImportSettings | ExcelImportSettings | QIFImportSettings
|
||||
mapping: Dict[
|
||||
str,
|
||||
TransactionAccountMapping
|
||||
|
||||
@@ -3,6 +3,8 @@ import hashlib
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
import zipfile
|
||||
from django.db import transaction
|
||||
from datetime import datetime, date
|
||||
from decimal import Decimal, InvalidOperation
|
||||
from typing import Dict, Any, Literal, Union
|
||||
@@ -11,6 +13,7 @@ import openpyxl
|
||||
import xlrd
|
||||
import yaml
|
||||
from cachalot.api import cachalot_disabled
|
||||
from django.core.exceptions import FieldDoesNotExist
|
||||
from django.utils import timezone
|
||||
from openpyxl.utils.exceptions import InvalidFileException
|
||||
|
||||
@@ -363,7 +366,7 @@ class ImportService:
|
||||
try:
|
||||
if entities_mapping:
|
||||
if entities_mapping.type == "id":
|
||||
entity = TransactionTag.objects.filter(
|
||||
entity = TransactionEntity.objects.filter(
|
||||
id=entity_name
|
||||
).first()
|
||||
else: # name
|
||||
@@ -460,12 +463,12 @@ class ImportService:
|
||||
for field in rule.fields:
|
||||
if field in transaction_data:
|
||||
value = transaction_data[field]
|
||||
# Use __iexact only for string fields; non-string types
|
||||
# (date, Decimal, bool, int, etc.) don't support UPPER()
|
||||
if rule.match_type == "strict" or not isinstance(value, str):
|
||||
query = query.filter(**{field: value})
|
||||
else: # lax matching for strings only
|
||||
query = query.filter(**{f"{field}__iexact": value})
|
||||
query = self._apply_deduplication_filter(
|
||||
query=query,
|
||||
field=field,
|
||||
value=value,
|
||||
match_type=rule.match_type,
|
||||
)
|
||||
|
||||
# If we found any matching transaction, it's a duplicate
|
||||
if query.exists():
|
||||
@@ -473,6 +476,71 @@ class ImportService:
|
||||
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def _is_int_like(value: Any) -> bool:
|
||||
try:
|
||||
int(value)
|
||||
except (TypeError, ValueError):
|
||||
return False
|
||||
return True
|
||||
|
||||
def _apply_deduplication_filter(
|
||||
self,
|
||||
query,
|
||||
field: str,
|
||||
value: Any,
|
||||
match_type: Literal["lax", "strict"],
|
||||
):
|
||||
if isinstance(value, list):
|
||||
return self._apply_list_deduplication_filter(
|
||||
query=query,
|
||||
field=field,
|
||||
values=value,
|
||||
match_type=match_type,
|
||||
)
|
||||
|
||||
# Use __iexact only for string fields; non-string types
|
||||
# (date, Decimal, bool, int, etc.) don't support UPPER()
|
||||
if match_type == "strict" or not isinstance(value, str):
|
||||
return query.filter(**{field: value})
|
||||
|
||||
return query.filter(**{f"{field}__iexact": value})
|
||||
|
||||
def _apply_list_deduplication_filter(
|
||||
self,
|
||||
query,
|
||||
field: str,
|
||||
values: list[Any],
|
||||
match_type: Literal["lax", "strict"],
|
||||
):
|
||||
clean_values = [v for v in values if v not in (None, "")]
|
||||
if not clean_values:
|
||||
return query
|
||||
|
||||
try:
|
||||
model_field = Transaction._meta.get_field(field)
|
||||
except FieldDoesNotExist:
|
||||
return query.filter(**{f"{field}__in": clean_values})
|
||||
|
||||
if getattr(model_field, "many_to_many", False):
|
||||
# For m2m fields (e.g., entities/tags), apply one filter per value so
|
||||
# all provided values must be present in the matched transaction.
|
||||
if all(self._is_int_like(v) for v in clean_values):
|
||||
for value in clean_values:
|
||||
query = query.filter(**{f"{field}__id": int(value)})
|
||||
else:
|
||||
for value in clean_values:
|
||||
lookup = (
|
||||
f"{field}__name"
|
||||
if match_type == "strict"
|
||||
else f"{field}__name__iexact"
|
||||
)
|
||||
query = query.filter(**{lookup: str(value).strip()})
|
||||
|
||||
return query.distinct()
|
||||
|
||||
return query.filter(**{f"{field}__in": clean_values})
|
||||
|
||||
def _coerce_type(
|
||||
self, value: str, mapping: version_1.ColumnMapping
|
||||
) -> Union[str, int, bool, Decimal, datetime, list, None]:
|
||||
@@ -845,6 +913,219 @@ class ImportService:
|
||||
f"Invalid {self.settings.file_type.upper()} file format: {str(e)}"
|
||||
)
|
||||
|
||||
def _parse_and_import_qif(self, content_lines: list[str], filename: str) -> None:
|
||||
# Infer account from filename (remove extension)
|
||||
account_name = os.path.splitext(os.path.basename(filename))[0]
|
||||
|
||||
current_transaction = {}
|
||||
raw_lines_buffer = []
|
||||
|
||||
account = Account.objects.filter(name=account_name).first()
|
||||
if not account:
|
||||
raise ValueError(f"Account '{account_name}' not found.")
|
||||
|
||||
row_number = 0
|
||||
for line in content_lines:
|
||||
row_number += 1
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
|
||||
raw_lines_buffer.append(line)
|
||||
|
||||
if line == "^":
|
||||
if current_transaction:
|
||||
# Deduplication using hash of raw lines
|
||||
raw_content = "".join(raw_lines_buffer)
|
||||
internal_id = hashlib.sha256(
|
||||
raw_content.encode("utf-8")
|
||||
).hexdigest()
|
||||
|
||||
# Reset buffer for next transaction
|
||||
raw_lines_buffer = []
|
||||
|
||||
try:
|
||||
with transaction.atomic():
|
||||
if Transaction.objects.filter(
|
||||
internal_id=internal_id
|
||||
).exists():
|
||||
self._increment_totals("skipped", 1)
|
||||
self._log(
|
||||
"info",
|
||||
f"Skipped duplicate transaction from {filename}",
|
||||
)
|
||||
current_transaction = {}
|
||||
continue
|
||||
|
||||
# Handle Account
|
||||
if account:
|
||||
current_transaction["account"] = account
|
||||
else:
|
||||
acc = Account.objects.filter(name=account_name).first()
|
||||
if acc:
|
||||
current_transaction["account"] = acc
|
||||
else:
|
||||
raise ValueError(
|
||||
f"Account '{account_name}' not found."
|
||||
)
|
||||
|
||||
current_transaction["internal_id"] = internal_id
|
||||
|
||||
# Handle Description/Memo mapping
|
||||
if "memo" in current_transaction:
|
||||
current_transaction["description"] = (
|
||||
current_transaction.pop("memo")
|
||||
)
|
||||
|
||||
# Handle Payee mapping
|
||||
entities = []
|
||||
if "payee" in current_transaction:
|
||||
payee_name = current_transaction.pop("payee")
|
||||
# "Treat the payee (P) as the entity. Use existing or create"
|
||||
entity, _ = TransactionEntity.objects.get_or_create(
|
||||
name=payee_name
|
||||
)
|
||||
entities.append(entity)
|
||||
|
||||
# Handle Label/Category
|
||||
category = None
|
||||
tags = []
|
||||
if "label" in current_transaction:
|
||||
label = current_transaction.pop("label")
|
||||
if label.startswith("[") and label.endswith("]"):
|
||||
# Transfer: set label as description, ignore category/tags
|
||||
clean_label = label[1:-1]
|
||||
current_transaction["description"] = clean_label
|
||||
else:
|
||||
parts = label.split(":")
|
||||
if parts:
|
||||
cat_name = parts[0].strip()
|
||||
if cat_name:
|
||||
category, _ = (
|
||||
TransactionCategory.objects.get_or_create(
|
||||
name=cat_name
|
||||
)
|
||||
)
|
||||
|
||||
if len(parts) > 1:
|
||||
for tag_name in parts[1:]:
|
||||
tag_name = tag_name.strip()
|
||||
if tag_name:
|
||||
tag, _ = (
|
||||
TransactionTag.objects.get_or_create(
|
||||
name=tag_name
|
||||
)
|
||||
)
|
||||
tags.append(tag)
|
||||
|
||||
current_transaction["category"] = category
|
||||
|
||||
# Create transaction
|
||||
new_trans = Transaction.objects.create(
|
||||
**current_transaction
|
||||
)
|
||||
if entities:
|
||||
new_trans.entities.set(entities)
|
||||
if tags:
|
||||
new_trans.tags.set(tags)
|
||||
|
||||
self.import_run.transactions.add(new_trans)
|
||||
self._increment_totals("successful", 1)
|
||||
|
||||
except Exception as e:
|
||||
if not self.settings.skip_errors:
|
||||
raise e
|
||||
self._log(
|
||||
"warning",
|
||||
f"Error processing transaction in {filename}: {str(e)}",
|
||||
)
|
||||
self._increment_totals("failed", 1)
|
||||
|
||||
# Reset for next transaction
|
||||
current_transaction = {}
|
||||
else:
|
||||
# Empty transaction record (orphaned ^)
|
||||
raw_lines_buffer = []
|
||||
pass
|
||||
self._increment_totals("processed", 1)
|
||||
continue
|
||||
|
||||
if line.startswith("!"):
|
||||
continue
|
||||
|
||||
code = line[0]
|
||||
value = line[1:]
|
||||
|
||||
if code == "D":
|
||||
try:
|
||||
current_transaction["date"] = datetime.strptime(
|
||||
value, self.settings.date_format
|
||||
).date()
|
||||
except ValueError:
|
||||
self._log(
|
||||
"warning",
|
||||
f"Could not parse date '{value}' using format '{self.settings.date_format}' in {filename}",
|
||||
)
|
||||
if not self.settings.skip_errors:
|
||||
raise ValueError(f"Invalid date format '{value}'")
|
||||
|
||||
elif code == "T":
|
||||
try:
|
||||
cleaned_value = value.replace(",", "")
|
||||
amount = Decimal(cleaned_value)
|
||||
if amount < 0:
|
||||
current_transaction["type"] = Transaction.Type.EXPENSE
|
||||
current_transaction["amount"] = abs(amount)
|
||||
else:
|
||||
current_transaction["type"] = Transaction.Type.INCOME
|
||||
current_transaction["amount"] = amount
|
||||
except InvalidOperation:
|
||||
self._log(
|
||||
"warning", f"Could not parse amount '{value}' in {filename}"
|
||||
)
|
||||
if not self.settings.skip_errors:
|
||||
raise ValueError(f"Invalid amount format '{value}'")
|
||||
|
||||
elif code == "P":
|
||||
current_transaction["payee"] = value
|
||||
elif code == "M":
|
||||
current_transaction["memo"] = value
|
||||
elif code == "L":
|
||||
current_transaction["label"] = value
|
||||
elif code == "N":
|
||||
pass
|
||||
|
||||
def _process_qif(self, file_path):
|
||||
def process_logic():
|
||||
if zipfile.is_zipfile(file_path):
|
||||
try:
|
||||
with zipfile.ZipFile(file_path, "r") as zf:
|
||||
for filename in zf.namelist():
|
||||
if filename.lower().endswith(
|
||||
".qif"
|
||||
) and not filename.startswith("__MACOSX"):
|
||||
self._log(
|
||||
"info", f"Processing QIF from ZIP: {filename}"
|
||||
)
|
||||
with zf.open(filename) as f:
|
||||
content = f.read().decode(self.settings.encoding)
|
||||
self._parse_and_import_qif(
|
||||
content.splitlines(), filename
|
||||
)
|
||||
except Exception as e:
|
||||
raise ValueError(f"Error processing ZIP file: {str(e)}")
|
||||
else:
|
||||
with open(file_path, "r", encoding=self.settings.encoding) as f:
|
||||
self._parse_and_import_qif(
|
||||
f.readlines(), os.path.basename(file_path)
|
||||
)
|
||||
|
||||
if not self.settings.skip_errors:
|
||||
with transaction.atomic():
|
||||
process_logic()
|
||||
else:
|
||||
process_logic()
|
||||
|
||||
def _validate_file_path(self, file_path: str) -> str:
|
||||
"""
|
||||
Validates that the file path is within the allowed temporary directory.
|
||||
@@ -871,6 +1152,8 @@ class ImportService:
|
||||
self._process_csv(file_path)
|
||||
elif isinstance(self.settings, version_1.ExcelImportSettings):
|
||||
self._process_excel(file_path)
|
||||
elif isinstance(self.settings, version_1.QIFImportSettings):
|
||||
self._process_qif(file_path)
|
||||
|
||||
self._update_status("FINISHED")
|
||||
self._log(
|
||||
|
||||
@@ -15,7 +15,7 @@ from apps.accounts.models import Account, AccountGroup
|
||||
from apps.currencies.models import Currency
|
||||
from apps.import_app.models import ImportProfile, ImportRun
|
||||
from apps.import_app.services.v1 import ImportService
|
||||
from apps.transactions.models import Transaction
|
||||
from apps.transactions.models import Transaction, TransactionEntity
|
||||
|
||||
|
||||
class DeduplicationTests(TestCase):
|
||||
@@ -273,3 +273,39 @@ deduplication:
|
||||
}
|
||||
)
|
||||
self.assertTrue(is_duplicate)
|
||||
|
||||
def test_deduplication_with_entities_list_value(self):
|
||||
"""Test that list values for m2m entities deduplicate correctly."""
|
||||
entity = TransactionEntity.objects.create(name="DB Vertrieb GmbH")
|
||||
self.existing_transaction.entities.add(entity)
|
||||
|
||||
service = self._create_import_service_with_deduplication(
|
||||
fields=["date", "amount", "entities"], match_type="strict"
|
||||
)
|
||||
|
||||
is_duplicate = service._check_duplicate_transaction(
|
||||
{
|
||||
"date": date(2024, 1, 15),
|
||||
"amount": Decimal("100.00"),
|
||||
"entities": ["DB Vertrieb GmbH"],
|
||||
}
|
||||
)
|
||||
self.assertTrue(is_duplicate)
|
||||
|
||||
def test_deduplication_with_entities_list_value_not_matching(self):
|
||||
"""Test that non-matching entity list values are not marked duplicate."""
|
||||
entity = TransactionEntity.objects.create(name="DB Vertrieb GmbH")
|
||||
self.existing_transaction.entities.add(entity)
|
||||
|
||||
service = self._create_import_service_with_deduplication(
|
||||
fields=["date", "amount", "entities"], match_type="strict"
|
||||
)
|
||||
|
||||
is_duplicate = service._check_duplicate_transaction(
|
||||
{
|
||||
"date": date(2024, 1, 15),
|
||||
"amount": Decimal("100.00"),
|
||||
"entities": ["Different Entity"],
|
||||
}
|
||||
)
|
||||
self.assertFalse(is_duplicate)
|
||||
|
||||
259
app/apps/import_app/tests/test_qif_import.py
Normal file
259
app/apps/import_app/tests/test_qif_import.py
Normal file
@@ -0,0 +1,259 @@
|
||||
from decimal import Decimal
|
||||
import os
|
||||
import shutil
|
||||
from django.test import TestCase
|
||||
from django.contrib.auth import get_user_model
|
||||
from apps.accounts.models import Account, AccountGroup
|
||||
from apps.currencies.models import Currency
|
||||
from apps.common.middleware.thread_local import write_current_user, delete_current_user
|
||||
from apps.import_app.models import ImportProfile, ImportRun
|
||||
from apps.import_app.services.v1 import ImportService
|
||||
from apps.transactions.models import (
|
||||
Transaction,
|
||||
)
|
||||
|
||||
|
||||
class QIFImportTests(TestCase):
|
||||
def setUp(self):
|
||||
# Patch TEMP_DIR for testing
|
||||
self.original_temp_dir = ImportService.TEMP_DIR
|
||||
self.test_dir = os.path.abspath("temp_test_import")
|
||||
ImportService.TEMP_DIR = self.test_dir
|
||||
os.makedirs(self.test_dir, exist_ok=True)
|
||||
|
||||
# Create user and set context
|
||||
User = get_user_model()
|
||||
self.user = User.objects.create_user(
|
||||
email="test@example.com", password="password"
|
||||
)
|
||||
write_current_user(self.user)
|
||||
|
||||
self.currency = Currency.objects.create(
|
||||
code="BRL", name="Real", decimal_places=2, prefix="R$ "
|
||||
)
|
||||
self.group = AccountGroup.objects.create(name="Test Group", owner=self.user)
|
||||
self.account = Account.objects.create(
|
||||
name="bradesco-checking",
|
||||
group=self.group,
|
||||
currency=self.currency,
|
||||
owner=self.user,
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
delete_current_user()
|
||||
ImportService.TEMP_DIR = self.original_temp_dir
|
||||
if os.path.exists(self.test_dir):
|
||||
shutil.rmtree(self.test_dir)
|
||||
|
||||
def test_import_single_qif_valid_mapping(self):
|
||||
content = """!Type:Bank
|
||||
D04/01/2015
|
||||
T8069.46
|
||||
PMy Payee -> Entity
|
||||
MNote -> Desc
|
||||
LOld Cat:New Tag
|
||||
^
|
||||
D05/01/2015
|
||||
T-100.00
|
||||
PSupermarket
|
||||
MWeekly shopping
|
||||
L[Transfer]
|
||||
^
|
||||
"""
|
||||
filename = "bradesco-checking.qif"
|
||||
file_path = os.path.join(self.test_dir, filename)
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
yaml_config = """
|
||||
settings:
|
||||
file_type: qif
|
||||
importing: transactions
|
||||
date_format: "%d/%m/%Y"
|
||||
mapping: {}
|
||||
"""
|
||||
profile = ImportProfile.objects.create(
|
||||
name="QIF Profile",
|
||||
yaml_config=yaml_config,
|
||||
version=ImportProfile.Versions.VERSION_1,
|
||||
)
|
||||
run = ImportRun.objects.create(profile=profile, file_name=filename)
|
||||
service = ImportService(run)
|
||||
|
||||
service.process_file(file_path)
|
||||
|
||||
self.assertEqual(Transaction.objects.count(), 2)
|
||||
|
||||
# Transaction 1: Income, Category+Tag
|
||||
t1 = Transaction.objects.get(description="Note -> Desc")
|
||||
self.assertEqual(t1.amount, Decimal("8069.46"))
|
||||
self.assertEqual(t1.type, Transaction.Type.INCOME)
|
||||
self.assertEqual(t1.category.name, "Old Cat")
|
||||
self.assertTrue(t1.tags.filter(name="New Tag").exists())
|
||||
self.assertTrue(t1.entities.filter(name="My Payee -> Entity").exists())
|
||||
self.assertEqual(t1.account, self.account)
|
||||
|
||||
# Transaction 2: Expense, Transfer ([Transfer] -> Description)
|
||||
t2 = Transaction.objects.get(description="Transfer")
|
||||
self.assertEqual(t2.amount, Decimal("100.00"))
|
||||
self.assertEqual(t2.type, Transaction.Type.EXPENSE)
|
||||
self.assertIsNone(t2.category)
|
||||
self.assertFalse(t2.tags.exists())
|
||||
self.assertTrue(t2.entities.filter(name="Supermarket").exists())
|
||||
self.assertEqual(t2.description, "Transfer")
|
||||
|
||||
def test_import_deduplication_hash(self):
|
||||
# Same content twice. Should result in only 1 transaction due to hash deduplication.
|
||||
content = """!Type:Bank
|
||||
D04/01/2015
|
||||
T100.00
|
||||
POK
|
||||
^
|
||||
"""
|
||||
filename = "bradesco-checking.qif"
|
||||
file_path = os.path.join(self.test_dir, filename)
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
yaml_config = """
|
||||
settings:
|
||||
file_type: qif
|
||||
importing: transactions
|
||||
date_format: "%d/%m/%Y"
|
||||
mapping: {}
|
||||
"""
|
||||
profile = ImportProfile.objects.create(
|
||||
name="QIF Profile",
|
||||
yaml_config=yaml_config,
|
||||
version=ImportProfile.Versions.VERSION_1,
|
||||
)
|
||||
run = ImportRun.objects.create(profile=profile, file_name=filename)
|
||||
service = ImportService(run)
|
||||
|
||||
# First run
|
||||
service.process_file(file_path)
|
||||
self.assertEqual(Transaction.objects.count(), 1)
|
||||
|
||||
# Service deletes file after processing, so recreate it for second run
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
# Second run - Duplicate content
|
||||
service.process_file(file_path)
|
||||
self.assertEqual(Transaction.objects.count(), 1)
|
||||
|
||||
def test_import_strict_error_rollback(self):
|
||||
# atomic check.
|
||||
# Transaction 1 valid, Transaction 2 invalid date.
|
||||
content = """!Type:Bank
|
||||
D04/01/2015
|
||||
T100.00
|
||||
POK
|
||||
^
|
||||
DINVALID
|
||||
T100.00
|
||||
PBad
|
||||
^
|
||||
"""
|
||||
filename = "bradesco-checking.qif"
|
||||
file_path = os.path.join(self.test_dir, filename)
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
yaml_config = """
|
||||
settings:
|
||||
file_type: qif
|
||||
importing: transactions
|
||||
date_format: "%d/%m/%Y"
|
||||
skip_errors: false
|
||||
mapping: {}
|
||||
"""
|
||||
profile = ImportProfile.objects.create(
|
||||
name="QIF Profile",
|
||||
yaml_config=yaml_config,
|
||||
version=ImportProfile.Versions.VERSION_1,
|
||||
)
|
||||
run = ImportRun.objects.create(profile=profile, file_name=filename)
|
||||
service = ImportService(run)
|
||||
|
||||
with self.assertRaises(Exception) as cm:
|
||||
service.process_file(file_path)
|
||||
self.assertEqual(str(cm.exception), "Import failed")
|
||||
|
||||
# Should be 0 transactions because of atomic rollback
|
||||
self.assertEqual(Transaction.objects.count(), 0)
|
||||
|
||||
def test_import_missing_account(self):
|
||||
# File with account name that doesn't exist
|
||||
content = """!Type:Bank
|
||||
D04/01/2015
|
||||
T100.00
|
||||
POK
|
||||
^
|
||||
"""
|
||||
filename = "missing-account.qif"
|
||||
file_path = os.path.join(self.test_dir, filename)
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
yaml_config = """
|
||||
settings:
|
||||
file_type: qif
|
||||
importing: transactions
|
||||
date_format: "%d/%m/%Y"
|
||||
mapping: {}
|
||||
"""
|
||||
profile = ImportProfile.objects.create(
|
||||
name="QIF Profile",
|
||||
yaml_config=yaml_config,
|
||||
version=ImportProfile.Versions.VERSION_1,
|
||||
)
|
||||
run = ImportRun.objects.create(profile=profile, file_name=filename)
|
||||
service = ImportService(run)
|
||||
|
||||
# Should fail because account doesn't exist
|
||||
with self.assertRaises(Exception) as cm:
|
||||
service.process_file(file_path)
|
||||
self.assertEqual(str(cm.exception), "Import failed")
|
||||
|
||||
def test_import_skip_errors(self):
|
||||
# skip_errors: true.
|
||||
# Transaction 1 valid, Transaction 2 invalid date.
|
||||
content = """!Type:Bank
|
||||
D04/01/2015
|
||||
T100.00
|
||||
POK
|
||||
^
|
||||
DINVALID
|
||||
T100.00
|
||||
PBad
|
||||
^
|
||||
"""
|
||||
filename = "bradesco-checking.qif"
|
||||
file_path = os.path.join(self.test_dir, filename)
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
yaml_config = """
|
||||
settings:
|
||||
file_type: qif
|
||||
importing: transactions
|
||||
date_format: "%d/%m/%Y"
|
||||
skip_errors: true
|
||||
mapping: {}
|
||||
"""
|
||||
profile = ImportProfile.objects.create(
|
||||
name="QIF Profile",
|
||||
yaml_config=yaml_config,
|
||||
version=ImportProfile.Versions.VERSION_1,
|
||||
)
|
||||
run = ImportRun.objects.create(profile=profile, file_name=filename)
|
||||
service = ImportService(run)
|
||||
|
||||
service.process_file(file_path)
|
||||
|
||||
# Should be 1 transaction (valid one)
|
||||
self.assertEqual(Transaction.objects.count(), 1)
|
||||
self.assertEqual(
|
||||
Transaction.objects.first().description, ""
|
||||
) # empty desc if no memo
|
||||
@@ -365,7 +365,9 @@ def check_for_transaction_rules(
|
||||
|
||||
if processed_action.set_category:
|
||||
value = simple.eval(processed_action.set_category)
|
||||
if isinstance(value, int):
|
||||
if value is None:
|
||||
transaction.category = None
|
||||
elif isinstance(value, int):
|
||||
transaction.category = TransactionCategory.objects.get(id=value)
|
||||
else:
|
||||
transaction.category = TransactionCategory.objects.get(name=value)
|
||||
@@ -458,7 +460,9 @@ def check_for_transaction_rules(
|
||||
transaction.account = account
|
||||
|
||||
elif field == TransactionRuleAction.Field.category:
|
||||
if isinstance(new_value, int):
|
||||
if new_value is None:
|
||||
transaction.category = None
|
||||
elif isinstance(new_value, int):
|
||||
category = TransactionCategory.objects.get(id=new_value)
|
||||
transaction.category = category
|
||||
elif isinstance(new_value, str):
|
||||
|
||||
1
app/apps/rules/tests/__init__.py
Normal file
1
app/apps/rules/tests/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
82
app/apps/rules/tests/test_tasks.py
Normal file
82
app/apps/rules/tests/test_tasks.py
Normal file
@@ -0,0 +1,82 @@
|
||||
from datetime import date
|
||||
from decimal import Decimal
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.test import TransactionTestCase
|
||||
|
||||
from apps.accounts.models import Account
|
||||
from apps.currencies.models import Currency
|
||||
from apps.rules.models import TransactionRule, UpdateOrCreateTransactionRuleAction
|
||||
from apps.rules.tasks import check_for_transaction_rules
|
||||
from apps.transactions.models import Transaction
|
||||
|
||||
|
||||
def run_check_for_transaction_rules_without_worker_wrapper(**kwargs):
|
||||
task_func = check_for_transaction_rules.func
|
||||
task_func = getattr(task_func, "__wrapped__", task_func)
|
||||
|
||||
return task_func(**kwargs)
|
||||
|
||||
|
||||
class CheckForTransactionRulesTests(TransactionTestCase):
|
||||
def setUp(self):
|
||||
User = get_user_model()
|
||||
self.user = User.objects.create_user(
|
||||
email="rules@example.com",
|
||||
password="testpass123",
|
||||
)
|
||||
self.currency = Currency.objects.create(
|
||||
code="USD",
|
||||
name="US Dollar",
|
||||
decimal_places=2,
|
||||
)
|
||||
self.account = Account.objects.create(
|
||||
name="Main Account",
|
||||
currency=self.currency,
|
||||
owner=self.user,
|
||||
)
|
||||
|
||||
@patch("apps.rules.signals.check_for_transaction_rules.defer")
|
||||
def test_update_or_create_action_can_clear_category_from_none_expression(
|
||||
self, mock_defer
|
||||
):
|
||||
source_transaction = Transaction.objects.create(
|
||||
account=self.account,
|
||||
type=Transaction.Type.EXPENSE,
|
||||
amount=Decimal("10.00"),
|
||||
date=date(2026, 5, 4),
|
||||
reference_date=date(2026, 5, 1),
|
||||
description="Source without category",
|
||||
category=None,
|
||||
owner=self.user,
|
||||
)
|
||||
rule = TransactionRule.objects.create(
|
||||
active=True,
|
||||
on_create=False,
|
||||
on_update=True,
|
||||
name="Copy transaction",
|
||||
trigger="True",
|
||||
owner=self.user,
|
||||
)
|
||||
UpdateOrCreateTransactionRuleAction.objects.create(
|
||||
rule=rule,
|
||||
set_account="account_id",
|
||||
set_type="'EX'",
|
||||
set_date="date",
|
||||
set_reference_date="reference_date",
|
||||
set_amount="amount",
|
||||
set_description="'Generated transaction'",
|
||||
set_category="category_name",
|
||||
)
|
||||
|
||||
run_check_for_transaction_rules_without_worker_wrapper(
|
||||
instance_id=source_transaction.id,
|
||||
user_id=self.user.id,
|
||||
signal="transaction_updated",
|
||||
)
|
||||
|
||||
generated_transaction = Transaction.objects.get(
|
||||
description="Generated transaction"
|
||||
)
|
||||
self.assertIsNone(generated_transaction.category)
|
||||
@@ -5,6 +5,7 @@ from apps.common.fields.forms.dynamic_select import (
|
||||
DynamicModelChoiceField,
|
||||
DynamicModelMultipleChoiceField,
|
||||
)
|
||||
from apps.common.middleware.thread_local import get_current_user
|
||||
from apps.common.widgets.crispy.daisyui import Switch
|
||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||
from apps.common.widgets.datepicker import AirDatePickerInput, AirMonthYearPickerInput
|
||||
@@ -116,6 +117,9 @@ class TransactionForm(forms.ModelForm):
|
||||
self.fields["account"].queryset = Account.objects.filter(
|
||||
is_archived=False,
|
||||
)
|
||||
user_settings = get_current_user().settings
|
||||
if user_settings.default_account:
|
||||
self.fields["account"].initial = user_settings.default_account
|
||||
|
||||
self.fields["category"].queryset = TransactionCategory.objects.filter(
|
||||
active=True
|
||||
@@ -768,6 +772,9 @@ class InstallmentPlanForm(forms.ModelForm):
|
||||
).distinct()
|
||||
else:
|
||||
self.fields["account"].queryset = Account.objects.filter(is_archived=False)
|
||||
user_settings = get_current_user().settings
|
||||
if user_settings.default_account:
|
||||
self.fields["account"].initial = user_settings.default_account
|
||||
|
||||
self.fields["category"].queryset = TransactionCategory.objects.filter(
|
||||
active=True
|
||||
@@ -1010,6 +1017,10 @@ class RecurringTransactionForm(forms.ModelForm):
|
||||
).distinct()
|
||||
else:
|
||||
self.fields["account"].queryset = Account.objects.filter(is_archived=False)
|
||||
|
||||
user_settings = get_current_user().settings
|
||||
if user_settings.default_account:
|
||||
self.fields["account"].initial = user_settings.default_account
|
||||
|
||||
self.fields["category"].queryset = TransactionCategory.objects.filter(
|
||||
active=True
|
||||
|
||||
75
app/apps/users/adapters.py
Normal file
75
app/apps/users/adapters.py
Normal file
@@ -0,0 +1,75 @@
|
||||
import logging
|
||||
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
|
||||
from django.contrib.auth import get_user_model
|
||||
|
||||
User = get_user_model()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class AutoConnectSocialAccountAdapter(DefaultSocialAccountAdapter):
|
||||
"""
|
||||
Custom adapter to automatically connect social accounts to existing users
|
||||
with the same email address.
|
||||
|
||||
SECURITY WARNING:
|
||||
This adapter automatically connects OIDC accounts to existing local accounts
|
||||
based on email matching.
|
||||
|
||||
If your OIDC provider allows unverified emails, this could lead to
|
||||
ACCOUNT TAKEOVER attacks where an attacker creates an OIDC account
|
||||
with someone else's email and gains access to their account.
|
||||
"""
|
||||
|
||||
def pre_social_login(self, request, sociallogin):
|
||||
"""
|
||||
Invoked just after a user successfully authenticates via a
|
||||
social provider, but before the login is actually processed.
|
||||
|
||||
If a user with the same email already exists, connect the social
|
||||
account to that existing user instead of creating a new account.
|
||||
"""
|
||||
# If the social account is already connected to a user, do nothing
|
||||
if sociallogin.is_existing:
|
||||
return
|
||||
|
||||
# Check if we have an email from the social provider
|
||||
if not sociallogin.email_addresses:
|
||||
logger.warning(
|
||||
"OIDC login attempted without email address. "
|
||||
f"Provider: {sociallogin.account.provider}"
|
||||
)
|
||||
return
|
||||
|
||||
# Get the email from the social login
|
||||
email = sociallogin.email_addresses[0].email.lower()
|
||||
|
||||
# Try to find an existing user with this email
|
||||
try:
|
||||
user = User.objects.get(email__iexact=email)
|
||||
|
||||
# Log this connection for security audit trail
|
||||
logger.info(
|
||||
f"Auto-connecting OIDC account to existing user. "
|
||||
f"Email: {email}, Provider: {sociallogin.account.provider}, "
|
||||
f"User ID: {user.id}"
|
||||
)
|
||||
|
||||
# Connect the social account to the existing user
|
||||
sociallogin.connect(request, user)
|
||||
|
||||
except User.DoesNotExist:
|
||||
# No user with this email exists, proceed with normal signup flow
|
||||
logger.debug(
|
||||
f"No existing user found for email {email}. "
|
||||
"Proceeding with new account creation."
|
||||
)
|
||||
pass
|
||||
except User.MultipleObjectsReturned:
|
||||
# Multiple users with the same email (shouldn't happen with unique constraint)
|
||||
logger.error(
|
||||
f"Multiple users found with email {email}. "
|
||||
"This should not happen with unique constraint. "
|
||||
"Blocking auto-connect."
|
||||
)
|
||||
# Let the default behavior handle this
|
||||
pass
|
||||
@@ -1,6 +1,8 @@
|
||||
from apps.common.middleware.thread_local import get_current_user
|
||||
from apps.common.widgets.crispy.submit import NoClassSubmit
|
||||
from apps.common.widgets.tom_select import TomSelect
|
||||
from apps.users.models import UserSettings
|
||||
from apps.accounts.models import Account
|
||||
from crispy_forms.bootstrap import (
|
||||
FormActions,
|
||||
)
|
||||
@@ -116,6 +118,15 @@ class UserSettingsForm(forms.ModelForm):
|
||||
label=_("Number Format"),
|
||||
)
|
||||
|
||||
default_account = forms.ModelChoiceField(
|
||||
queryset=Account.objects.filter(
|
||||
is_archived=False,
|
||||
),
|
||||
label=_("Default Account"),
|
||||
widget=TomSelect(clear_button=False, group_by="group"),
|
||||
required=False,
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = UserSettings
|
||||
fields = [
|
||||
@@ -126,11 +137,19 @@ class UserSettingsForm(forms.ModelForm):
|
||||
"datetime_format",
|
||||
"number_format",
|
||||
"volume",
|
||||
"default_account",
|
||||
]
|
||||
widgets = {
|
||||
"default_account": TomSelect(clear_button=False, group_by="group"),
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self.fields["default_account"].queryset = Account.objects.filter(
|
||||
is_archived=False,
|
||||
)
|
||||
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_tag = False
|
||||
self.helper.form_method = "post"
|
||||
@@ -143,6 +162,7 @@ class UserSettingsForm(forms.ModelForm):
|
||||
"number_format",
|
||||
HTML('<hr class="hr my-3" />'),
|
||||
"start_page",
|
||||
"default_account",
|
||||
HTML('<hr class="hr my-3" />'),
|
||||
"volume",
|
||||
FormActions(
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# Generated by Django 5.2.9 on 2026-02-15 21:35
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("accounts", "0016_account_untracked_by"),
|
||||
("users", "0023_alter_usersettings_timezone"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="usersettings",
|
||||
name="default_account",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
to="accounts.account",
|
||||
verbose_name="Default account",
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Generated by Django 5.2.9 on 2026-02-16 01:32
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('accounts', '0016_account_untracked_by'),
|
||||
('users', '0024_usersettings_default_account'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='usersettings',
|
||||
name='default_account',
|
||||
field=models.ForeignKey(blank=True, help_text='Selects the account by default when creating new transactions', null=True, on_delete=django.db.models.deletion.SET_NULL, to='accounts.account', verbose_name='Default account'),
|
||||
),
|
||||
]
|
||||
@@ -510,6 +510,14 @@ class UserSettings(models.Model):
|
||||
default=StartPage.MONTHLY,
|
||||
verbose_name=_("Start page"),
|
||||
)
|
||||
default_account = models.ForeignKey(
|
||||
"accounts.Account",
|
||||
on_delete=models.SET_NULL,
|
||||
verbose_name=_("Default account"),
|
||||
help_text=_("Selects the account by default when creating new transactions"),
|
||||
blank=True,
|
||||
null=True,
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.user.email}'s settings"
|
||||
|
||||
10
app/import_presets/qif_standard/config.yml
Normal file
10
app/import_presets/qif_standard/config.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
settings:
|
||||
file_type: qif
|
||||
importing: transactions
|
||||
encoding: cp1252
|
||||
date_format: "%d/%m/%Y"
|
||||
skip_errors: true
|
||||
|
||||
mapping: {}
|
||||
|
||||
deduplicate: []
|
||||
7
app/import_presets/qif_standard/manifest.json
Normal file
7
app/import_presets/qif_standard/manifest.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"author": "eitchtee",
|
||||
"description": "Standard QIF Import. Mapping is automatic.",
|
||||
"schema_version": 1,
|
||||
"name": "Standard QIF",
|
||||
"message": "Account is inferred from filename (e.g., 'Checking.qif' -> Account 'Checking').\nYou might need to change the date format to match the date format on your file."
|
||||
}
|
||||
@@ -7,9 +7,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"PO-Revision-Date: 2025-11-01 01:17+0000\n"
|
||||
"Last-Translator: mlystopad <mlystopadt@gmail.com>\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: 2026-04-09 11:24+0000\n"
|
||||
"Last-Translator: LordTimothyHKIT <tim.hofstetter@hkit.ch>\n"
|
||||
"Language-Team: German <https://translations.herculino.com/projects/wygiwyh/"
|
||||
"app/de/>\n"
|
||||
"Language: de\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.14\n"
|
||||
"X-Generator: Weblate 5.16.2\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
msgid "Group name"
|
||||
@@ -27,12 +27,12 @@ msgstr "Gruppe Name"
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -43,11 +43,11 @@ msgstr "Aktualisierung"
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr "Hinzufügen"
|
||||
@@ -63,10 +63,10 @@ msgstr "Neuer Saldo"
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -80,10 +80,10 @@ msgstr "Kategorie"
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -167,9 +167,9 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -254,11 +254,11 @@ msgstr "Konto erfolgreich gelöscht"
|
||||
|
||||
#: apps/accounts/views/accounts.py:165
|
||||
msgid "Account is now tracked"
|
||||
msgstr ""
|
||||
msgstr "Konto wird verfolgt"
|
||||
|
||||
#: apps/accounts/views/accounts.py:168
|
||||
msgid "Account is now untracked"
|
||||
msgstr ""
|
||||
msgstr "Konto wird nicht mehr gefolgt"
|
||||
|
||||
#: apps/accounts/views/balance.py:67
|
||||
msgid "Balance reconciliation"
|
||||
@@ -298,7 +298,7 @@ msgstr "Entweder \"Datum\" oder \"Referenzdatum\" müssen angegeben werden."
|
||||
|
||||
#: apps/common/admin.py:5
|
||||
msgid "Make public"
|
||||
msgstr ""
|
||||
msgstr "Veröffentlichen"
|
||||
|
||||
#: apps/common/admin.py:10
|
||||
#, fuzzy
|
||||
@@ -356,7 +356,7 @@ msgstr ""
|
||||
"Privat: Nur für den Besitzer und geteilte Nutzer sichtbar.<br/>Öffentlich: "
|
||||
"Sichtbar für alle Nutzer. Nur bearbeitbar durch Besitzer."
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr "Speichern"
|
||||
|
||||
@@ -492,8 +492,8 @@ msgstr "Suffix"
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -633,8 +633,6 @@ msgstr ""
|
||||
"Konto wird der Kurs der entsprechenden Umrechnungs-Währung abgerufen."
|
||||
|
||||
#: apps/currencies/models.py:162
|
||||
#, fuzzy
|
||||
#| msgid "Edit exchange rate"
|
||||
msgid "Single exchange rate"
|
||||
msgstr "Umrechnungskurs bearbeiten"
|
||||
|
||||
@@ -718,11 +716,11 @@ msgstr "Dienst erfolgreich in die Warteschlange eingereiht"
|
||||
msgid "Create transaction"
|
||||
msgstr "Erstelle Transaktion"
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr "Startkonto"
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr "Zielkonto"
|
||||
|
||||
@@ -749,7 +747,7 @@ msgstr "Verknüpfe Transaktion"
|
||||
msgid "You must provide an account."
|
||||
msgstr "Du musst ein Konto angeben."
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr "Start- und Zielkonten müssen unterschiedlich sein."
|
||||
|
||||
@@ -768,7 +766,7 @@ msgstr "Startwährung"
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -854,9 +852,9 @@ msgstr "Kategorien"
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1099,7 +1097,7 @@ msgstr "Falls..."
|
||||
|
||||
#: apps/rules/forms.py:53
|
||||
msgid "You can add actions to this rule in the next screen."
|
||||
msgstr ""
|
||||
msgstr "Transaktionen zur Regeln kannst du im nächsten Fenster eingeben."
|
||||
|
||||
#: apps/rules/forms.py:76
|
||||
msgid "Set field"
|
||||
@@ -1112,8 +1110,6 @@ msgstr "Zu"
|
||||
#: apps/rules/forms.py:78 apps/rules/forms.py:158 apps/rules/models.py:20
|
||||
#: apps/rules/models.py:62 apps/rules/models.py:323
|
||||
#: templates/rules/fragments/list.html:23
|
||||
#, fuzzy
|
||||
#| msgid "Order by"
|
||||
msgid "Order"
|
||||
msgstr "Sortieren nach"
|
||||
|
||||
@@ -1130,7 +1126,7 @@ msgid "Operator"
|
||||
msgstr "Bediener"
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1138,7 +1134,7 @@ msgstr "Typ"
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1147,15 +1143,15 @@ msgid "Paid"
|
||||
msgstr "Bezahlt"
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr "Referenzdatum"
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1167,7 +1163,7 @@ msgstr "Betrag"
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1186,7 +1182,7 @@ msgid "Internal ID"
|
||||
msgstr "Interne ID"
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1219,17 +1215,15 @@ msgstr ""
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:117
|
||||
msgid "Test"
|
||||
msgstr ""
|
||||
msgstr "Test"
|
||||
|
||||
#: apps/rules/models.py:15
|
||||
msgid "Trigger"
|
||||
msgstr "Auslöser"
|
||||
|
||||
#: apps/rules/models.py:17
|
||||
#, fuzzy
|
||||
#| msgid "Recurrence"
|
||||
msgid "Sequenced"
|
||||
msgstr "Regelmäßigkeit"
|
||||
msgstr "Regelmäßig"
|
||||
|
||||
#: apps/rules/models.py:26
|
||||
msgid "Transaction rule"
|
||||
@@ -1370,10 +1364,8 @@ msgid "Transaction Type"
|
||||
msgstr "Transaktionstyp"
|
||||
|
||||
#: apps/transactions/filters.py:89
|
||||
#, fuzzy
|
||||
#| msgid "Status"
|
||||
msgid "Mute Status"
|
||||
msgstr "Status"
|
||||
msgstr "Stummschalten"
|
||||
|
||||
#: apps/transactions/filters.py:94
|
||||
msgid "Date from"
|
||||
@@ -1396,16 +1388,12 @@ msgid "Amount max"
|
||||
msgstr "Betrag Maximum"
|
||||
|
||||
#: apps/transactions/filters.py:202
|
||||
#, fuzzy
|
||||
#| msgid "Categories"
|
||||
msgid "Categorized"
|
||||
msgstr "Kategorien"
|
||||
msgstr "Kategorisiert"
|
||||
|
||||
#: apps/transactions/filters.py:209
|
||||
#, fuzzy
|
||||
#| msgid "Untagged"
|
||||
msgid "Tagged"
|
||||
msgstr "Unmarkiert"
|
||||
msgstr "Markiert"
|
||||
|
||||
#: apps/transactions/filters.py:209
|
||||
#: templates/insights/fragments/category_overview/index.html:189
|
||||
@@ -1415,77 +1403,70 @@ msgid "Untagged"
|
||||
msgstr "Unmarkiert"
|
||||
|
||||
#: apps/transactions/filters.py:215
|
||||
#, fuzzy
|
||||
#| msgid "Add entity"
|
||||
msgid "Any entity"
|
||||
msgstr "Entität hinzufügen"
|
||||
msgstr "Jegliche Entität"
|
||||
|
||||
#: apps/transactions/filters.py:216
|
||||
#: templates/insights/fragments/category_overview/index.html:282
|
||||
#: templates/insights/fragments/month_by_month.html:123
|
||||
#: templates/insights/fragments/year_by_year.html:77
|
||||
#, fuzzy
|
||||
#| msgid "No entities"
|
||||
msgid "No entity"
|
||||
msgstr "Keine Entitäten"
|
||||
msgstr "Keine Entität"
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr "Mehr"
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr "Speichern und ähnliches hinzufügen"
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr "Speichern und etwas neu hinzufügen"
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
"Stummgeschaltete Transaktionen werden nicht in der monatlichen Übersicht "
|
||||
"berücksichtigt"
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr "Startbetrag"
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr "Zielbetrag"
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr "Transfer"
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr "Tagname"
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr "Entitätsname"
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr "Kategoriename"
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#, fuzzy
|
||||
#| msgid "Muted categories won't count towards your monthly total"
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr "Ausgeblendete Kategorien zählen nicht zu deiner Monatsübersicht"
|
||||
msgstr ""
|
||||
"Ausgeblendete Kategorien werden nicht bei deiner Monatsübersicht angezeigt"
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#, fuzzy
|
||||
#| msgid "Filter transactions"
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr "Transaktionen filtern"
|
||||
msgstr "künftige Transaktionen"
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr "Enddatum sollte hinter dem Startdatum liegen"
|
||||
|
||||
@@ -1666,7 +1647,7 @@ msgstr "Wiederholungsintervall"
|
||||
|
||||
#: apps/transactions/models.py:803
|
||||
msgid "Keep at most"
|
||||
msgstr ""
|
||||
msgstr "Höchtens"
|
||||
|
||||
#: apps/transactions/models.py:807
|
||||
msgid "Last Generated Date"
|
||||
@@ -1878,24 +1859,24 @@ msgstr "Berechtigungen"
|
||||
msgid "Important dates"
|
||||
msgstr "Wichtige Daten"
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr "E-Mail"
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr "Ungültige E-Mail oder Passwort"
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr "Dieses Konto ist deaktiviert"
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1903,19 +1884,23 @@ msgstr "Dieses Konto ist deaktiviert"
|
||||
msgid "Default"
|
||||
msgstr "Standard"
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr "Datumsformat"
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr "Datums- und Zeitformat"
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr "Zahlenformat"
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
msgid "Default Account"
|
||||
msgstr "Standart Konto"
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1926,25 +1911,25 @@ msgstr ""
|
||||
"angezeigt werden.\n"
|
||||
"Hilf mit WYGIWYH in deine Sprache zu übersetzten: %(translation_link)s"
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr "Neues Passwort"
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr "Leer lassen um Passwort zu belassen."
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr "Bestätige das neue Passwort"
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
msgstr "Abwählen um den Nutzer zu deaktivieren. Besser als gleich zu löschen."
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
@@ -1952,35 +1937,35 @@ msgstr ""
|
||||
"Anwählen damit der Nutzer alle Berechtigungen hat, ohne diese explizit "
|
||||
"hinzuzufügen."
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr "Diese E-Mail-Adresse wird bereits von jemand anders benutzt."
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Die eingegebenen Passwörter stimmen nicht überein."
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr "Bitte bestätige dein neues Passwort."
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr "Bitte gebe erst dein neues Passwort ein."
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr "Du kannst deinen Nutzer nicht hier deaktivieren."
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr "Sie können die Adminberechtigungen nicht vom letzten Admin entfernen."
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr "Du kannst deinen eigenen Superuser-Status nicht hier entfernen."
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits."
|
||||
|
||||
@@ -2024,6 +2009,20 @@ msgstr "Zeitzone"
|
||||
msgid "Start page"
|
||||
msgstr "Startseite"
|
||||
|
||||
#: apps/users/models.py:516
|
||||
msgid "Default account"
|
||||
msgstr "Standartkonto"
|
||||
|
||||
#: apps/users/models.py:517
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Deactivated tags won't be able to be selected when creating new "
|
||||
#| "transactions"
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr ""
|
||||
"Deaktivierte Tags können bei der Erstellung neuer Transaktionen nicht "
|
||||
"ausgewählt werden"
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr "Beträge sind nun versteckt"
|
||||
@@ -2265,11 +2264,11 @@ msgstr "Ist Vermögenswert"
|
||||
|
||||
#: templates/accounts/fragments/list.html:62
|
||||
msgid "Track"
|
||||
msgstr ""
|
||||
msgstr "Verfolgen"
|
||||
|
||||
#: templates/accounts/fragments/list.html:62
|
||||
msgid "Untrack"
|
||||
msgstr ""
|
||||
msgstr "Entfolgen"
|
||||
|
||||
#: templates/accounts/fragments/list.html:93
|
||||
msgid "No accounts"
|
||||
@@ -2359,10 +2358,8 @@ msgid "Show on summaries"
|
||||
msgstr "Anzeigen auf Zusammenfassungen"
|
||||
|
||||
#: templates/cotton/transaction/item.html:177
|
||||
#, fuzzy
|
||||
#| msgid "Controlled by category"
|
||||
msgid "Controlled by account"
|
||||
msgstr "Gesteuert durch Kategorie"
|
||||
msgstr "Gesteuert durch Konto"
|
||||
|
||||
#: templates/cotton/transaction/item.html:188
|
||||
msgid "Controlled by category"
|
||||
@@ -2881,6 +2878,10 @@ msgstr ""
|
||||
"Versuche die Seite neu zu laden oder überprüfe die Konsole für mehr "
|
||||
"Informationen."
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
@@ -2889,6 +2890,20 @@ msgstr "Abbrechen"
|
||||
msgid "Confirm"
|
||||
msgstr "Bestätigen"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
#, fuzzy
|
||||
#| msgid "Refresh"
|
||||
msgid "Refreshing"
|
||||
msgstr "Aktualisieren"
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr "Einblicke"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -26,12 +26,12 @@ msgstr ""
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -42,11 +42,11 @@ msgstr ""
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
@@ -62,10 +62,10 @@ msgstr ""
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -79,10 +79,10 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -163,9 +163,9 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -344,7 +344,7 @@ msgid ""
|
||||
"owner.<br/>Public: Shown for all users. Only editable by the owner."
|
||||
msgstr ""
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
@@ -480,8 +480,8 @@ msgstr ""
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -696,11 +696,11 @@ msgstr ""
|
||||
msgid "Create transaction"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr ""
|
||||
|
||||
@@ -725,7 +725,7 @@ msgstr ""
|
||||
msgid "You must provide an account."
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr ""
|
||||
|
||||
@@ -744,7 +744,7 @@ msgstr ""
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -830,9 +830,9 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1102,7 +1102,7 @@ msgid "Operator"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1110,7 +1110,7 @@ msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1119,15 +1119,15 @@ msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1139,7 +1139,7 @@ msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1158,7 +1158,7 @@ msgid "Internal ID"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1378,57 +1378,57 @@ msgstr ""
|
||||
msgid "No entity"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr ""
|
||||
|
||||
@@ -1814,24 +1814,24 @@ msgstr ""
|
||||
msgid "Important dates"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1839,19 +1839,23 @@ msgstr ""
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
msgid "Default Account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1859,59 +1863,59 @@ msgid ""
|
||||
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr ""
|
||||
|
||||
@@ -1955,6 +1959,14 @@ msgstr ""
|
||||
msgid "Start page"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/models.py:516
|
||||
msgid "Default account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/models.py:517
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr ""
|
||||
@@ -2798,6 +2810,10 @@ msgstr ""
|
||||
msgid "Try reloading the page or check the console for more information."
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
@@ -2806,6 +2822,18 @@ msgstr ""
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
msgid "Refreshing"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr ""
|
||||
|
||||
@@ -7,9 +7,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"PO-Revision-Date: 2025-12-16 05:24+0000\n"
|
||||
"Last-Translator: BRodolfo <simplysmartbydesign@gmail.com>\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: 2026-02-24 01:24+0000\n"
|
||||
"Last-Translator: Juan David Afanador <juanafanador07@gmail.com>\n"
|
||||
"Language-Team: Spanish <https://translations.herculino.com/projects/wygiwyh/"
|
||||
"app/es/>\n"
|
||||
"Language: es\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.14.3\n"
|
||||
"X-Generator: Weblate 5.16\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
msgid "Group name"
|
||||
@@ -27,12 +27,12 @@ msgstr "Nombre del Grupo"
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -43,11 +43,11 @@ msgstr "Actualizar"
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr "Agregar"
|
||||
@@ -63,10 +63,10 @@ msgstr "Nuevo balance"
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -80,10 +80,10 @@ msgstr "Categoría"
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -165,9 +165,9 @@ msgstr "Las cuentas archivadas no aparecen ni cuentan para su patrimonio neto"
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -353,7 +353,7 @@ msgstr ""
|
||||
"compartido. Solo el propietario puede editarlo.<br/>Público: Visible para "
|
||||
"todos los usuarios. Solo el propietario puede editarlo."
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
@@ -489,8 +489,8 @@ msgstr "Sufijo"
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -717,11 +717,11 @@ msgstr "Servicios agregados a la cola con éxito"
|
||||
msgid "Create transaction"
|
||||
msgstr "Crear transacción"
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr "Cuenta de Origen"
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr "Cuenta de Destino"
|
||||
|
||||
@@ -746,7 +746,7 @@ msgstr "Enlazar transacción"
|
||||
msgid "You must provide an account."
|
||||
msgstr "Debes proporcionar una cuenta."
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr "Las cuentas de origen y destino deben ser diferentes."
|
||||
|
||||
@@ -765,7 +765,7 @@ msgstr "Moneda de pago"
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -851,9 +851,9 @@ msgstr "Categorías"
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1124,7 +1124,7 @@ msgid "Operator"
|
||||
msgstr "Operador"
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1132,7 +1132,7 @@ msgstr "Tipo"
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1141,15 +1141,15 @@ msgid "Paid"
|
||||
msgstr "Pagado"
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr "Fecha de Referencia"
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1161,7 +1161,7 @@ msgstr "Monto"
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1180,7 +1180,7 @@ msgid "Internal ID"
|
||||
msgstr "ID Interno"
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1353,10 +1353,8 @@ msgid "Transaction Type"
|
||||
msgstr "Tipo de Transacción"
|
||||
|
||||
#: apps/transactions/filters.py:89
|
||||
#, fuzzy
|
||||
#| msgid "Status"
|
||||
msgid "Mute Status"
|
||||
msgstr "Estado"
|
||||
msgstr "Silenciada"
|
||||
|
||||
#: apps/transactions/filters.py:94
|
||||
msgid "Date from"
|
||||
@@ -1404,59 +1402,59 @@ msgstr "Cualquier entidad"
|
||||
msgid "No entity"
|
||||
msgstr "Ninguna entidad"
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr "Más"
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr "Guardar y añadir similar"
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr "Guardar y añadir otro"
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
"Las transacciones silenciadas no se mostrarán en los resúmenes mensuales"
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr "Monto de Origen"
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr "Monto de Destino"
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr "Transferir"
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr "Nombre de etiqueta"
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr "Nombre de Entidad"
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr "Nombre de Categoría"
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
"Las categorías silenciadas no serán mostradas en los resúmenes mensuales"
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr "transacciones futuras"
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr "La fecha de fin debe ser posterior a la fecha de inicio"
|
||||
|
||||
@@ -1848,24 +1846,24 @@ msgstr "Permisos"
|
||||
msgid "Important dates"
|
||||
msgstr "Fechas Importantes"
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr "Correo Electrónico"
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr "Correo o contraseña no válidos"
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr "Esta cuenta está desactivada"
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1873,19 +1871,23 @@ msgstr "Esta cuenta está desactivada"
|
||||
msgid "Default"
|
||||
msgstr "Por Defecto"
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr "Formato de Fecha"
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr "Formato de Fecha y Hora"
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr "Formato de Número"
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
msgid "Default Account"
|
||||
msgstr "Cuenta por Defecto"
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1896,19 +1898,19 @@ msgstr ""
|
||||
"y las fechas\n"
|
||||
"Ayude a traducir WYGIWYH a su idioma en %(translation_link)s"
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr "Nueva Contraseña"
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr "Deje en blanco para mantener la contraseña actual."
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr "Confirmar nueva contraseña"
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
@@ -1916,7 +1918,7 @@ msgstr ""
|
||||
"Establece si este usuario debe ser tratado como activo. Desmarque esta "
|
||||
"opción en lugar de borrar cuentas."
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
@@ -1924,36 +1926,36 @@ msgstr ""
|
||||
"Establece que este usuario tiene todos los permisos sin asignárselos "
|
||||
"expresamente."
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr "Esta dirección de correo es usada por otra cuenta."
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Los dos campos de contraseñas no coinciden."
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr "Por favor, confirme su nueva contraseña."
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr "Por favor, introduzca su nueva contraseña."
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr "No puede desactivar su propia cuenta usando este formulario."
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr "No se puede eliminar el estado del último superusuario."
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr ""
|
||||
"No puedes eliminar tu propio estado de superusuario usando este formulario."
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr "Ya existe un usuario con este correo."
|
||||
|
||||
@@ -1997,6 +1999,14 @@ msgstr "Zona Horaria"
|
||||
msgid "Start page"
|
||||
msgstr "Página de Inicio"
|
||||
|
||||
#: apps/users/models.py:516
|
||||
msgid "Default account"
|
||||
msgstr "Cuenta por Defecto"
|
||||
|
||||
#: apps/users/models.py:517
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr "Usa la cuenta como predeterminada al crear nuevas transacciones"
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr "Los montos de las transacciones ahora están ocultos"
|
||||
@@ -2696,8 +2706,8 @@ msgstr "Última sincronización"
|
||||
#, python-format
|
||||
msgid "%(counter)s consecutive failure"
|
||||
msgid_plural "%(counter)s consecutive failures"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%(counter)s fallo consecutivo"
|
||||
msgstr[1] "%(counter)s fallos consecutivos"
|
||||
|
||||
#: templates/exchange_rates_services/fragments/list.html:69
|
||||
msgid "currencies"
|
||||
@@ -2844,6 +2854,10 @@ msgid "Try reloading the page or check the console for more information."
|
||||
msgstr ""
|
||||
"Intenta recargar la página o revisa la consola para obtener más información."
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr "Refrescar"
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
@@ -2852,6 +2866,18 @@ msgstr "Cancelar"
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmar"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr "Desliza hacia abajo para refrescar"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr "Suelta para refrescar"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
msgid "Refreshing"
|
||||
msgstr "Refrescando"
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr "Análisis"
|
||||
@@ -3012,72 +3038,60 @@ msgstr "No hay transacciones recientes"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:86
|
||||
#: templates/insights/fragments/year_by_year.html:54
|
||||
#, fuzzy
|
||||
#| msgid "Tags"
|
||||
msgid "Tag"
|
||||
msgstr "Etiquetas"
|
||||
msgstr "Etiqueta"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:94
|
||||
msgid "Jan"
|
||||
msgstr ""
|
||||
msgstr "Ene"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:95
|
||||
msgid "Feb"
|
||||
msgstr ""
|
||||
msgstr "Feb"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:96
|
||||
#, fuzzy
|
||||
#| msgid "Max"
|
||||
msgid "Mar"
|
||||
msgstr "Máximo"
|
||||
msgstr "Mar"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:97
|
||||
msgid "Apr"
|
||||
msgstr ""
|
||||
msgstr "Abr"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:98
|
||||
#, fuzzy
|
||||
#| msgid "Max"
|
||||
msgid "May"
|
||||
msgstr "Máximo"
|
||||
msgstr "May"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:99
|
||||
msgid "Jun"
|
||||
msgstr ""
|
||||
msgstr "Jun"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:100
|
||||
msgid "Jul"
|
||||
msgstr ""
|
||||
msgstr "Jul"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:101
|
||||
msgid "Aug"
|
||||
msgstr ""
|
||||
msgstr "Ago"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:102
|
||||
#, fuzzy
|
||||
#| msgid "Set"
|
||||
msgid "Sep"
|
||||
msgstr "Establecer"
|
||||
msgstr "Sep"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:103
|
||||
msgid "Oct"
|
||||
msgstr ""
|
||||
msgstr "Oct"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:104
|
||||
#, fuzzy
|
||||
#| msgid "Now"
|
||||
msgid "Nov"
|
||||
msgstr "Ahora"
|
||||
msgstr "Nov"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:105
|
||||
msgid "Dec"
|
||||
msgstr ""
|
||||
msgstr "Dic"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:248
|
||||
#, fuzzy
|
||||
#| msgid "No transactions on this date"
|
||||
msgid "No transactions for this year"
|
||||
msgstr "No hay transacciones en esta fecha"
|
||||
msgstr "No hay transacciones en este año"
|
||||
|
||||
#: templates/insights/fragments/sankey.html:100
|
||||
msgid "From"
|
||||
@@ -3088,10 +3102,8 @@ msgid "Percentage"
|
||||
msgstr "Porcentaje"
|
||||
|
||||
#: templates/insights/fragments/year_by_year.html:202
|
||||
#, fuzzy
|
||||
#| msgid "transactions"
|
||||
msgid "No transactions"
|
||||
msgstr "transacciones"
|
||||
msgstr "No hay transacciones"
|
||||
|
||||
#: templates/insights/pages/index.html:37
|
||||
msgid "Month"
|
||||
@@ -3143,14 +3155,12 @@ msgid "Emergency Fund"
|
||||
msgstr "Fondo de Emergencia"
|
||||
|
||||
#: templates/insights/pages/index.html:127
|
||||
#, fuzzy
|
||||
#| msgid "Yearly by account"
|
||||
msgid "Year by Year"
|
||||
msgstr "Anual por cuenta"
|
||||
msgstr "Año por año"
|
||||
|
||||
#: templates/insights/pages/index.html:132
|
||||
msgid "Month by Month"
|
||||
msgstr ""
|
||||
msgstr "Mes por mes"
|
||||
|
||||
#: templates/installment_plans/fragments/add.html:5
|
||||
msgid "Add installment plan"
|
||||
@@ -3228,7 +3238,7 @@ msgstr "Ítem"
|
||||
#: templates/monthly_overview/fragments/list.html:15
|
||||
#: templates/transactions/fragments/list_all.html:15
|
||||
msgid "late"
|
||||
msgstr ""
|
||||
msgstr "Transacciones tardías"
|
||||
|
||||
#: templates/monthly_overview/fragments/list.html:58
|
||||
msgid "No transactions this month"
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"PO-Revision-Date: 2025-10-07 20:17+0000\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: 2026-02-23 08:24+0000\n"
|
||||
"Last-Translator: Erwan Colin <zephone@protonmail.com>\n"
|
||||
"Language-Team: French <https://translations.herculino.com/projects/wygiwyh/"
|
||||
"app/fr/>\n"
|
||||
@@ -17,22 +17,22 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.13.3\n"
|
||||
"X-Generator: Weblate 5.15.2\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
msgid "Group name"
|
||||
msgstr "Nom de groupe"
|
||||
msgstr "Nom du groupe"
|
||||
|
||||
#: apps/accounts/forms.py:39 apps/accounts/forms.py:105
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -43,11 +43,11 @@ msgstr "Mise à jour"
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr "Ajouter"
|
||||
@@ -63,10 +63,10 @@ msgstr "Nouveau solde"
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -80,10 +80,10 @@ msgstr "Catégorie"
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -167,9 +167,9 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -355,7 +355,7 @@ msgstr ""
|
||||
"partagés. Seulement modifiable par le propriétaire.<br/> Publique : Visible "
|
||||
"par tous. Seulement modifiable par le propriétaire."
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr "Sauvegarder"
|
||||
|
||||
@@ -491,8 +491,8 @@ msgstr "Suffixe"
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -717,11 +717,11 @@ msgstr "Services ajouté à la file avec succès"
|
||||
msgid "Create transaction"
|
||||
msgstr "Créer une transaction"
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr "Compte originateur"
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr "Compte bénéficiaire"
|
||||
|
||||
@@ -746,7 +746,7 @@ msgstr "Lié transaction"
|
||||
msgid "You must provide an account."
|
||||
msgstr "Vous devez fournir un compte."
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr ""
|
||||
"Le compte originateur et le compte bénéficiaire doivent être différent."
|
||||
@@ -766,7 +766,7 @@ msgstr "Devise de paiement"
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -852,9 +852,9 @@ msgstr "Catégories"
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1097,7 +1097,7 @@ msgstr "Si..."
|
||||
|
||||
#: apps/rules/forms.py:53
|
||||
msgid "You can add actions to this rule in the next screen."
|
||||
msgstr ""
|
||||
msgstr "Vous pouvez ajouter des actions à cette règle dans le prochain écran."
|
||||
|
||||
#: apps/rules/forms.py:76
|
||||
msgid "Set field"
|
||||
@@ -1126,7 +1126,7 @@ msgid "Operator"
|
||||
msgstr "Opérateur"
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1134,7 +1134,7 @@ msgstr "Type"
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1143,15 +1143,15 @@ msgid "Paid"
|
||||
msgstr "Payé"
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr "Date de référence"
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1163,7 +1163,7 @@ msgstr "Montant"
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1182,7 +1182,7 @@ msgid "Internal ID"
|
||||
msgstr "ID interne"
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1357,10 +1357,8 @@ msgid "Transaction Type"
|
||||
msgstr "Type de transaction"
|
||||
|
||||
#: apps/transactions/filters.py:89
|
||||
#, fuzzy
|
||||
#| msgid "Status"
|
||||
msgid "Mute Status"
|
||||
msgstr "Statut"
|
||||
msgstr "Ignorer le statut"
|
||||
|
||||
#: apps/transactions/filters.py:94
|
||||
msgid "Date from"
|
||||
@@ -1408,59 +1406,59 @@ msgstr "N'importe quelle entité"
|
||||
msgid "No entity"
|
||||
msgstr "Pas d'entité"
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr "Plus"
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr "Enregistrer et ajouter des semblables"
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr "Enregistrer et ajouter un autre"
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
"Les transactions silencieuses ne sont pas affichées dans les résumés mensuels"
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr "Montant de départ"
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr "Montant d'arrivée"
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr "Virement"
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr "Libellé de l'étiquette"
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr "Nom d'entité"
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr "Nom de catégorie"
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
"Les catégories silencieuses ne compteront pas dans votre résumé mensuel"
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr "Transactions à venir"
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr "La date de fin doit être ultérieure à la date de début"
|
||||
|
||||
@@ -1852,24 +1850,24 @@ msgstr "Permissions"
|
||||
msgid "Important dates"
|
||||
msgstr "Dates importantes"
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr "E-mail ou mot de passe invalide"
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr "Ce compte est désactivé"
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1877,19 +1875,25 @@ msgstr "Ce compte est désactivé"
|
||||
msgid "Default"
|
||||
msgstr "Par défaut"
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr "Format de date"
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr "Format de l'heure"
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr "Format numérique"
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
#, fuzzy
|
||||
#| msgid "Target Accounts"
|
||||
msgid "Default Account"
|
||||
msgstr "Comptes cibles"
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1901,19 +1905,19 @@ msgstr ""
|
||||
"Considérez d'aider à la traduction de WYGIWYH dans votre langue sur "
|
||||
"%(translation_link)s"
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr "Nouveau mot de passe"
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr "Laisser vide pour garder le mot de passe actuel."
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr "Confirmer le nouveau mot de passe"
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
@@ -1921,7 +1925,7 @@ msgstr ""
|
||||
"Indique si cet utilisateur doit être traité comme actif. Désélectionnez ceci "
|
||||
"plutôt que supprimer des comptes."
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
@@ -1929,40 +1933,40 @@ msgstr ""
|
||||
"Définir que cet utilisateur a toutes les permissions sans les assigner "
|
||||
"explicitement."
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr ""
|
||||
"Cette adresse email est déjà utiliser dans un autre compte utilisateur."
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Les deux mot de passe ne correspondent pas."
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr "Merci de confirmer votre mot de passe."
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr "Merci d'indiquer d'abord le nouveau mot de passe."
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas désactiver votre propre compte utilisateur avec ce "
|
||||
"formulaire."
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr "Impossible de supprimer le statut du dernier super utilisateur."
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas supprimer votre propre statut de super utilisateur via ce "
|
||||
"formulaire."
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr "Un utilisateur avec cette adresse email existe déjà."
|
||||
|
||||
@@ -2006,6 +2010,22 @@ msgstr "Fuseau horaire"
|
||||
msgid "Start page"
|
||||
msgstr "Page d'accueil"
|
||||
|
||||
#: apps/users/models.py:516
|
||||
#, fuzzy
|
||||
#| msgid "Asset account"
|
||||
msgid "Default account"
|
||||
msgstr "Compte d'actif"
|
||||
|
||||
#: apps/users/models.py:517
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Deactivated tags won't be able to be selected when creating new "
|
||||
#| "transactions"
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr ""
|
||||
"Les étiquettes désactivées ne pourront pas être sélectionnées lors de la "
|
||||
"création de nouvelles transactions"
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr "Les montants des transactions sont maintenant masqués"
|
||||
@@ -2032,7 +2052,7 @@ msgstr "Ajouter un groupe de comptes"
|
||||
|
||||
#: templates/account_groups/fragments/edit.html:5
|
||||
msgid "Edit account group"
|
||||
msgstr "Editer un groupe de comptes"
|
||||
msgstr "Éditer un groupe de comptes"
|
||||
|
||||
#: templates/account_groups/fragments/list.html:29
|
||||
#: templates/accounts/fragments/list.html:34
|
||||
@@ -2075,7 +2095,7 @@ msgstr "Actions"
|
||||
#: templates/tags/fragments/table.html:28
|
||||
#: templates/users/fragments/list.html:39
|
||||
msgid "Edit"
|
||||
msgstr "Editer"
|
||||
msgstr "Éditer"
|
||||
|
||||
#: templates/account_groups/fragments/list.html:39
|
||||
#: templates/accounts/fragments/list.html:44
|
||||
@@ -2420,12 +2440,10 @@ msgstr "Tout désélectionner"
|
||||
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:46
|
||||
msgid "Invert election"
|
||||
msgstr ""
|
||||
msgstr "Inverser la sélection"
|
||||
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:59
|
||||
#: templates/cotton/ui/transactions_action_bar.html:84
|
||||
#, fuzzy
|
||||
#| msgid "Yes, delete them!"
|
||||
msgid "Yes, delete them!"
|
||||
msgstr "Oui, supprime !"
|
||||
|
||||
@@ -2443,8 +2461,6 @@ msgstr "Oui, supprime !"
|
||||
#: templates/cotton/ui/transactions_action_bar.html:191
|
||||
#: templates/cotton/ui/transactions_action_bar.html:207
|
||||
#: templates/cotton/ui/transactions_action_bar.html:223
|
||||
#, fuzzy
|
||||
#| msgid "copied!"
|
||||
msgid "copied!"
|
||||
msgstr "Copié !"
|
||||
|
||||
@@ -2479,10 +2495,8 @@ msgid "Count"
|
||||
msgstr "Compteur"
|
||||
|
||||
#: templates/cotton/ui/percentage_distribution.html:4
|
||||
#, fuzzy
|
||||
#| msgid "Income/Expense by Account"
|
||||
msgid "Income and Expense Percentages"
|
||||
msgstr "Revenu/Dépense par comptes"
|
||||
msgstr "Pourcentage de revenus et dépenses"
|
||||
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:25
|
||||
#: templates/cotton/ui/transactions_fab.html:27
|
||||
@@ -2501,7 +2515,7 @@ msgstr "Balance"
|
||||
|
||||
#: templates/cotton/ui/transactions_action_bar.html:46
|
||||
msgid "Invert selection"
|
||||
msgstr ""
|
||||
msgstr "Inverser la sélection"
|
||||
|
||||
#: templates/cotton/ui/transactions_action_bar.html:66
|
||||
msgid "Mark as unpaid"
|
||||
@@ -2711,8 +2725,8 @@ msgstr "Dernière récupération"
|
||||
#, python-format
|
||||
msgid "%(counter)s consecutive failure"
|
||||
msgid_plural "%(counter)s consecutive failures"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%(counter)s erreur consécutive"
|
||||
msgstr[1] "%(counter)s erreurs consécutives"
|
||||
|
||||
#: templates/exchange_rates_services/fragments/list.html:69
|
||||
msgid "currencies"
|
||||
@@ -2823,7 +2837,7 @@ msgstr "Activer la navigation"
|
||||
|
||||
#: templates/includes/navbar/user_menu.html:4
|
||||
msgid "Toggle theme"
|
||||
msgstr ""
|
||||
msgstr "Basculer le thème"
|
||||
|
||||
#: templates/includes/navbar/user_menu.html:31
|
||||
msgid "Settings"
|
||||
@@ -2863,6 +2877,10 @@ msgstr ""
|
||||
"Essayer de rafraichir la page ou de consulter la console pour plus "
|
||||
"d'informations."
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
@@ -2871,6 +2889,20 @@ msgstr "Annuler"
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmer"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
#, fuzzy
|
||||
#| msgid "Refresh"
|
||||
msgid "Refreshing"
|
||||
msgstr "Rafraichir"
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr "Aperçus"
|
||||
@@ -3031,72 +3063,60 @@ msgstr "Aucunes transactions récentes"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:86
|
||||
#: templates/insights/fragments/year_by_year.html:54
|
||||
#, fuzzy
|
||||
#| msgid "Tags"
|
||||
msgid "Tag"
|
||||
msgstr "Etiquettes"
|
||||
msgstr "Etiquette"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:94
|
||||
msgid "Jan"
|
||||
msgstr ""
|
||||
msgstr "Jan"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:95
|
||||
msgid "Feb"
|
||||
msgstr ""
|
||||
msgstr "Fév"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:96
|
||||
#, fuzzy
|
||||
#| msgid "Max"
|
||||
msgid "Mar"
|
||||
msgstr "Max"
|
||||
msgstr "Mar"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:97
|
||||
msgid "Apr"
|
||||
msgstr ""
|
||||
msgstr "Avr"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:98
|
||||
#, fuzzy
|
||||
#| msgid "Max"
|
||||
msgid "May"
|
||||
msgstr "Max"
|
||||
msgstr "Mai"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:99
|
||||
msgid "Jun"
|
||||
msgstr ""
|
||||
msgstr "Juin"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:100
|
||||
msgid "Jul"
|
||||
msgstr ""
|
||||
msgstr "Jui"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:101
|
||||
msgid "Aug"
|
||||
msgstr ""
|
||||
msgstr "Aou"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:102
|
||||
#, fuzzy
|
||||
#| msgid "Set"
|
||||
msgid "Sep"
|
||||
msgstr "Définir"
|
||||
msgstr "Sep"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:103
|
||||
msgid "Oct"
|
||||
msgstr ""
|
||||
msgstr "Oct"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:104
|
||||
#, fuzzy
|
||||
#| msgid "Now"
|
||||
msgid "Nov"
|
||||
msgstr "Maintenant"
|
||||
msgstr "Nov"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:105
|
||||
msgid "Dec"
|
||||
msgstr ""
|
||||
msgstr "Déc"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:248
|
||||
#, fuzzy
|
||||
#| msgid "No transactions on this date"
|
||||
msgid "No transactions for this year"
|
||||
msgstr "Aucunes transactions à cette date"
|
||||
msgstr "Aucunes transactions pour cette année"
|
||||
|
||||
#: templates/insights/fragments/sankey.html:100
|
||||
msgid "From"
|
||||
@@ -3107,10 +3127,8 @@ msgid "Percentage"
|
||||
msgstr "Pourcentage"
|
||||
|
||||
#: templates/insights/fragments/year_by_year.html:202
|
||||
#, fuzzy
|
||||
#| msgid "transactions"
|
||||
msgid "No transactions"
|
||||
msgstr "transactions"
|
||||
msgstr "Pas de transactions"
|
||||
|
||||
#: templates/insights/pages/index.html:37
|
||||
msgid "Month"
|
||||
@@ -3162,14 +3180,12 @@ msgid "Emergency Fund"
|
||||
msgstr "Fonds de secours"
|
||||
|
||||
#: templates/insights/pages/index.html:127
|
||||
#, fuzzy
|
||||
#| msgid "Yearly by account"
|
||||
msgid "Year by Year"
|
||||
msgstr "Annuel par comptes"
|
||||
msgstr "Année par année"
|
||||
|
||||
#: templates/insights/pages/index.html:132
|
||||
msgid "Month by Month"
|
||||
msgstr ""
|
||||
msgstr "Mois par mois"
|
||||
|
||||
#: templates/installment_plans/fragments/add.html:5
|
||||
msgid "Add installment plan"
|
||||
@@ -3249,7 +3265,7 @@ msgstr "Eléments"
|
||||
#: templates/monthly_overview/fragments/list.html:15
|
||||
#: templates/transactions/fragments/list_all.html:15
|
||||
msgid "late"
|
||||
msgstr ""
|
||||
msgstr "En retard"
|
||||
|
||||
#: templates/monthly_overview/fragments/list.html:58
|
||||
msgid "No transactions this month"
|
||||
@@ -3515,10 +3531,8 @@ msgid "This rule has no actions"
|
||||
msgstr "Cette règle n'a pas d'actions"
|
||||
|
||||
#: templates/rules/fragments/transaction_rule/view.html:140
|
||||
#, fuzzy
|
||||
#| msgid "Add notes to transactions"
|
||||
msgid "Add new action"
|
||||
msgstr "Ajouter des notes aux transactions"
|
||||
msgstr "Ajouter une nouvelle action"
|
||||
|
||||
#: templates/rules/fragments/transaction_rule/view.html:145
|
||||
msgid "Edit Transaction"
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: 2026-01-10 03:09+0000\n"
|
||||
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
|
||||
"Language-Team: Hungarian <https://translations.herculino.com/projects/"
|
||||
@@ -27,12 +27,12 @@ msgstr "Csoport neve"
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -43,11 +43,11 @@ msgstr "Frissítés"
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr "Hozzáadás"
|
||||
@@ -63,10 +63,10 @@ msgstr "Új egyenleg"
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -80,10 +80,10 @@ msgstr "Kategória"
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -168,9 +168,9 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -350,7 +350,7 @@ msgid ""
|
||||
"owner.<br/>Public: Shown for all users. Only editable by the owner."
|
||||
msgstr ""
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr "Mentés"
|
||||
|
||||
@@ -486,8 +486,8 @@ msgstr "Utótag"
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -702,11 +702,11 @@ msgstr ""
|
||||
msgid "Create transaction"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr "Forrás számla"
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr "Cél számla"
|
||||
|
||||
@@ -731,7 +731,7 @@ msgstr "Tranzakció csatolása"
|
||||
msgid "You must provide an account."
|
||||
msgstr "Meg kell adnia egy számlát."
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr ""
|
||||
|
||||
@@ -750,7 +750,7 @@ msgstr ""
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -836,9 +836,9 @@ msgstr "Kategóriák"
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1108,7 +1108,7 @@ msgid "Operator"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1116,7 +1116,7 @@ msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1125,15 +1125,15 @@ msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1145,7 +1145,7 @@ msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1164,7 +1164,7 @@ msgid "Internal ID"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1384,57 +1384,57 @@ msgstr ""
|
||||
msgid "No entity"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr ""
|
||||
|
||||
@@ -1820,24 +1820,24 @@ msgstr ""
|
||||
msgid "Important dates"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1845,19 +1845,25 @@ msgstr ""
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
#, fuzzy
|
||||
#| msgid "Target Accounts"
|
||||
msgid "Default Account"
|
||||
msgstr "Cél számlák"
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1865,59 +1871,59 @@ msgid ""
|
||||
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr ""
|
||||
|
||||
@@ -1961,6 +1967,16 @@ msgstr ""
|
||||
msgid "Start page"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/models.py:516
|
||||
#, fuzzy
|
||||
#| msgid "Asset account"
|
||||
msgid "Default account"
|
||||
msgstr "Eszközszámla"
|
||||
|
||||
#: apps/users/models.py:517
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr ""
|
||||
@@ -2804,6 +2820,10 @@ msgstr ""
|
||||
msgid "Try reloading the page or check the console for more information."
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
@@ -2812,6 +2832,18 @@ msgstr ""
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
msgid "Refreshing"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr ""
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
@@ -25,12 +25,12 @@ msgstr ""
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -41,11 +41,11 @@ msgstr ""
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
@@ -61,10 +61,10 @@ msgstr ""
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -78,10 +78,10 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -162,9 +162,9 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -343,7 +343,7 @@ msgid ""
|
||||
"owner.<br/>Public: Shown for all users. Only editable by the owner."
|
||||
msgstr ""
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
@@ -479,8 +479,8 @@ msgstr ""
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -695,11 +695,11 @@ msgstr ""
|
||||
msgid "Create transaction"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr ""
|
||||
|
||||
@@ -724,7 +724,7 @@ msgstr ""
|
||||
msgid "You must provide an account."
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr ""
|
||||
|
||||
@@ -743,7 +743,7 @@ msgstr ""
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -829,9 +829,9 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1101,7 +1101,7 @@ msgid "Operator"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1109,7 +1109,7 @@ msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1118,15 +1118,15 @@ msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1138,7 +1138,7 @@ msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1157,7 +1157,7 @@ msgid "Internal ID"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1377,57 +1377,57 @@ msgstr ""
|
||||
msgid "No entity"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr ""
|
||||
|
||||
@@ -1813,24 +1813,24 @@ msgstr ""
|
||||
msgid "Important dates"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1838,19 +1838,23 @@ msgstr ""
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
msgid "Default Account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1858,59 +1862,59 @@ msgid ""
|
||||
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr ""
|
||||
|
||||
@@ -1954,6 +1958,14 @@ msgstr ""
|
||||
msgid "Start page"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/models.py:516
|
||||
msgid "Default account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/models.py:517
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr ""
|
||||
@@ -2796,6 +2808,10 @@ msgstr ""
|
||||
msgid "Try reloading the page or check the console for more information."
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
@@ -2804,6 +2820,18 @@ msgstr ""
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
msgid "Refreshing"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr ""
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: 2025-12-28 22:24+0000\n"
|
||||
"Last-Translator: icovada <federico.tabbo@networktocode.com>\n"
|
||||
"Language-Team: Italian <https://translations.herculino.com/projects/wygiwyh/"
|
||||
@@ -27,12 +27,12 @@ msgstr "Nome del gruppo"
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -43,11 +43,11 @@ msgstr "Aggiorna"
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr "Aggiungi"
|
||||
@@ -63,10 +63,10 @@ msgstr "Nuovo saldo"
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -80,10 +80,10 @@ msgstr "Categoria"
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -167,9 +167,9 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -355,7 +355,7 @@ msgstr ""
|
||||
"Modificabile solo dal proprietario.<br/>Pubblico: visibile da tutti gli "
|
||||
"utenti. Modificabile solo dal proprietario."
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr "Salva"
|
||||
|
||||
@@ -491,8 +491,8 @@ msgstr "Suffisso"
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -718,11 +718,11 @@ msgstr "Servizi accodati con successo"
|
||||
msgid "Create transaction"
|
||||
msgstr "Crea transazione"
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr "Da conto"
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr "A conto"
|
||||
|
||||
@@ -747,7 +747,7 @@ msgstr "Collega transazione"
|
||||
msgid "You must provide an account."
|
||||
msgstr "Devi fornire un conto."
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr "I conti di origine e destinazione devono essere diversi."
|
||||
|
||||
@@ -766,7 +766,7 @@ msgstr "Valuta di pagamento"
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -852,9 +852,9 @@ msgstr "Categorie"
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1127,7 +1127,7 @@ msgid "Operator"
|
||||
msgstr "Operatore"
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1135,7 +1135,7 @@ msgstr "Tipo"
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1144,15 +1144,15 @@ msgid "Paid"
|
||||
msgstr "Pagato"
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr "Data di riferimento"
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1164,7 +1164,7 @@ msgstr "Importo"
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1183,7 +1183,7 @@ msgid "Internal ID"
|
||||
msgstr "ID Interno"
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1407,59 +1407,59 @@ msgstr "Qualsiasi beneficiario"
|
||||
msgid "No entity"
|
||||
msgstr "Nessun beneficiario"
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr "Di più"
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr "Salva e aggiungi simile"
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr "Salva e aggiungi un'altra"
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
"Le transazioni silenziate non verranno visualizzate nei riepiloghi mensili"
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr "Da importo"
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr "A importo"
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr "Trasferimento"
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr "Nome tag"
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr "Nome beneficiario"
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr "Nome categoria"
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
"Le categorie silenziate non verranno visualizzate nei riepiloghi mensili"
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr "transazioni future"
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr "La data di fine deve essere dopo la data d'inizio"
|
||||
|
||||
@@ -1851,24 +1851,24 @@ msgstr "Permessi"
|
||||
msgid "Important dates"
|
||||
msgstr "Date importanti"
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr "E-mail o password non valide"
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr "Questo account è disattivato"
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1876,19 +1876,25 @@ msgstr "Questo account è disattivato"
|
||||
msgid "Default"
|
||||
msgstr "Predefinito"
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr "Formato data"
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr "Formato data e ora"
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr "Formato numerico"
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
#, fuzzy
|
||||
#| msgid "Target Accounts"
|
||||
msgid "Default Account"
|
||||
msgstr "Conti target"
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1900,19 +1906,19 @@ msgstr ""
|
||||
"Considera la possibilità di contribuire alla traduzione di WYGIWYH nella tua "
|
||||
"lingua su %(translation_link)s"
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr "Nuova Password"
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr "Lascia vuoto per mantenere la password attuale."
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr "Conferma nuova password"
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
@@ -1920,7 +1926,7 @@ msgstr ""
|
||||
"Indica se questo utente deve essere considerato attivo. Deseleziona questa "
|
||||
"opzione invece di eliminare gli account."
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
@@ -1928,37 +1934,37 @@ msgstr ""
|
||||
"Indica che questo utente ha tutte le autorizzazioni senza assegnarle "
|
||||
"esplicitamente."
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr "Questo indirizzo email è già utilizzato da un altro account."
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "I due campi password non corrispondono."
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr "Conferma la nuova password."
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr "Inserisci prima la nuova password."
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr "Non è possibile disattivare il proprio account tramite questo modulo."
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr "Impossibile rimuovere lo stato dall'ultimo superutente."
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr ""
|
||||
"Non è possibile rimuovere il proprio stato di superutente tramite questo "
|
||||
"modulo."
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr "Esiste già un utente con questo indirizzo email."
|
||||
|
||||
@@ -2002,6 +2008,22 @@ msgstr "Fuso orario"
|
||||
msgid "Start page"
|
||||
msgstr "Pagina iniziale"
|
||||
|
||||
#: apps/users/models.py:516
|
||||
#, fuzzy
|
||||
#| msgid "Asset account"
|
||||
msgid "Default account"
|
||||
msgstr "Conto patrimoniale"
|
||||
|
||||
#: apps/users/models.py:517
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Deactivated tags won't be able to be selected when creating new "
|
||||
#| "transactions"
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr ""
|
||||
"I tag disattivati non potranno essere selezionati durante la creazione di "
|
||||
"nuove transazioni"
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr "Gli importi delle transazioni sono nascosti"
|
||||
@@ -2853,6 +2875,10 @@ msgstr ""
|
||||
"Prova a ricaricare la pagina o controlla la console per maggiori "
|
||||
"informazioni."
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
@@ -2861,6 +2887,20 @@ msgstr "Annulla"
|
||||
msgid "Confirm"
|
||||
msgstr "Conferma"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
#, fuzzy
|
||||
#| msgid "Refresh"
|
||||
msgid "Refreshing"
|
||||
msgstr "Aggiorna"
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr "Analisi"
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"PO-Revision-Date: 2026-01-11 13:24+0000\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: 2026-02-17 18:24+0000\n"
|
||||
"Last-Translator: Dimitri Decrock <dj.flashpower@gmail.com>\n"
|
||||
"Language-Team: Dutch <https://translations.herculino.com/projects/wygiwyh/"
|
||||
"app/nl/>\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.15.1\n"
|
||||
"X-Generator: Weblate 5.15.2\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
msgid "Group name"
|
||||
@@ -27,12 +27,12 @@ msgstr "Groepsnaam"
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -43,11 +43,11 @@ msgstr "Bijwerken"
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr "Toevoegen"
|
||||
@@ -63,10 +63,10 @@ msgstr "Nieuw saldo"
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -80,10 +80,10 @@ msgstr "Categorie"
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -168,9 +168,9 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -355,7 +355,7 @@ msgstr ""
|
||||
"bewerkbaar door de eigenaar.<br/>Publiek: Weergegeven voor alle gebruikers. "
|
||||
"Alleen bewerkbaar door de eigenaar."
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr "Opslaan"
|
||||
|
||||
@@ -491,8 +491,8 @@ msgstr "Achtervoegsel"
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -718,11 +718,11 @@ msgstr "Diensten succesvol in de wachtrij geplaatst"
|
||||
msgid "Create transaction"
|
||||
msgstr "Maak verrichtingen"
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr "Van rekening"
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr "Naar rekening"
|
||||
|
||||
@@ -748,7 +748,7 @@ msgstr "Koppel verrichting"
|
||||
msgid "You must provide an account."
|
||||
msgstr "Je moet een account opgeven."
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr "Van en Naar rekening moeten verschillend zijn."
|
||||
|
||||
@@ -767,7 +767,7 @@ msgstr "Betaal Munteenheid"
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -853,9 +853,9 @@ msgstr "Categorieën"
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1127,7 +1127,7 @@ msgid "Operator"
|
||||
msgstr "Operator"
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1135,7 +1135,7 @@ msgstr "Soort"
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1144,15 +1144,15 @@ msgid "Paid"
|
||||
msgstr "Betaald"
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr "Referentiedatum"
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1164,7 +1164,7 @@ msgstr "Bedrag"
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1183,7 +1183,7 @@ msgid "Internal ID"
|
||||
msgstr "Interne ID"
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1405,57 +1405,57 @@ msgstr "Elk bedrijf"
|
||||
msgid "No entity"
|
||||
msgstr "Geen bedrijf"
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr "Meer"
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr "Opslaan en vergelijkbaar toevoegen"
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr "Opslaan en een andere toevoegen"
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr "Gedempte transacties worden niet weergegeven in maandoverzichten"
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr "Van Bedrag"
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr "Naar Bedrag"
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr "Overschrijving"
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr "Labelnaam"
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr "Naam van bedrijf"
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr "Naam van categorie"
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr "Gedempte categorieën worden niet weergegeven in maandoverzichten"
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr "toekomstige verrichtingen"
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr "De einddatum moet na de begindatum vallen"
|
||||
|
||||
@@ -1847,24 +1847,24 @@ msgstr "Rechten"
|
||||
msgid "Important dates"
|
||||
msgstr "Belangrijke datums"
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr "E-mailadres"
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr "Wachtwoord"
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr "Ongeldig e-mailadres of wachtwoord"
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr "Deze gebruiker is gedeactiveerd"
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1872,19 +1872,23 @@ msgstr "Deze gebruiker is gedeactiveerd"
|
||||
msgid "Default"
|
||||
msgstr "Standaard"
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr "Datumnotatie"
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr "Tijdsnotatie"
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr "Schrijfwijze Nummers"
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
msgid "Default Account"
|
||||
msgstr "Standaard Rekening"
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1895,19 +1899,19 @@ msgstr ""
|
||||
"weergegeven\n"
|
||||
"Overweeg om WYGIWYH te helpen vertalen naar jouw taal op %(translation_link)s"
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr "Nieuw Wachtwoord"
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr "Laat leeg om het huidige wachtwoord te behouden."
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr "Bevestig Nieuw Wachtwoord"
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
@@ -1915,7 +1919,7 @@ msgstr ""
|
||||
"Geeft aan of deze gebruiker als actief moet worden behandeld. Deselecteer "
|
||||
"dit in plaats van accounts te verwijderen."
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
@@ -1923,35 +1927,35 @@ msgstr ""
|
||||
"Geeft aan dat deze gebruiker alle rechten heeft zonder ze expliciet toe te "
|
||||
"kennen."
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr "Dit e-mailadres wordt al gebruikt door een ander account."
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "De twee wachtwoordvelden komen niet overeen."
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr "Bevestig je nieuwe wachtwoord."
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr "Geef eerst het nieuwe wachtwoord op."
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr "Je kunt je eigen account niet deactiveren met dit formulier."
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr "Kan de status van de laatste Hoofdadmin niet verwijderen."
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr "Je kunt je eigen hoofdadminrechten niet verwijderen met dit formulier."
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr "Er bestaat al een gebruiker met dit e-mailadres."
|
||||
|
||||
@@ -1995,6 +1999,15 @@ msgstr "Tijdszone"
|
||||
msgid "Start page"
|
||||
msgstr "Startpagina"
|
||||
|
||||
#: apps/users/models.py:516
|
||||
msgid "Default account"
|
||||
msgstr "Standaard rekening"
|
||||
|
||||
#: apps/users/models.py:517
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr ""
|
||||
"Selecteer het account automatisch bij het maken van nieuwe verrichtingen"
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr "Verrichtingsbedragen worden nu verborgen"
|
||||
@@ -2843,6 +2856,10 @@ msgstr ""
|
||||
"Probeer de pagina opnieuw te laden of controleer de console voor meer "
|
||||
"informatie."
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr "Herlaad"
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleer"
|
||||
@@ -2851,6 +2868,18 @@ msgstr "Annuleer"
|
||||
msgid "Confirm"
|
||||
msgstr "Bevestig"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr "Trek omlaag om te vernieuwen"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr "Loslaten om te vernieuwen"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
msgid "Refreshing"
|
||||
msgstr "Vernieuwen"
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr "Inzichten"
|
||||
@@ -3770,11 +3799,6 @@ msgstr "Jaaroverzicht"
|
||||
#~ msgid "Internal ID Operator"
|
||||
#~ msgstr "Interne ID"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "Account"
|
||||
#~ msgid "Set Account"
|
||||
#~ msgstr "Rekening"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "Recurrence Type"
|
||||
#~ msgid "Set Type"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"PO-Revision-Date: 2026-01-11 16:55+0000\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: 2026-04-30 02:24+0000\n"
|
||||
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
|
||||
"Language-Team: Portuguese (Brazil) <https://translations.herculino.com/"
|
||||
"projects/wygiwyh/app/pt_BR/>\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.15.1\n"
|
||||
"X-Generator: Weblate 5.17\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
msgid "Group name"
|
||||
@@ -27,12 +27,12 @@ msgstr "Nome do grupo"
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -43,11 +43,11 @@ msgstr "Atualizar"
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr "Adicionar"
|
||||
@@ -63,10 +63,10 @@ msgstr "Novo saldo"
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -80,10 +80,10 @@ msgstr "Categoria"
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -167,9 +167,9 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -353,7 +353,7 @@ msgstr ""
|
||||
"Somente editável pelo proprietário.<br/>Público: Exibido para todos os "
|
||||
"usuários. Somente editável pelo proprietário."
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr "Salvar"
|
||||
|
||||
@@ -489,8 +489,8 @@ msgstr "Sufixo"
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -717,11 +717,11 @@ msgstr "Serviços marcados para execução com sucesso"
|
||||
msgid "Create transaction"
|
||||
msgstr "Criar transação"
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr "Conta de origem"
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr "Conta de destino"
|
||||
|
||||
@@ -746,7 +746,7 @@ msgstr "Conectar transação"
|
||||
msgid "You must provide an account."
|
||||
msgstr "Você deve informar uma conta."
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr "As contas De e Para devem ser diferentes."
|
||||
|
||||
@@ -765,7 +765,7 @@ msgstr "Moeda de pagamento"
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -851,9 +851,9 @@ msgstr "Categorias"
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1125,7 +1125,7 @@ msgid "Operator"
|
||||
msgstr "Operador"
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1133,7 +1133,7 @@ msgstr "Tipo"
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1142,15 +1142,15 @@ msgid "Paid"
|
||||
msgstr "Pago"
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr "Data de Referência"
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1162,7 +1162,7 @@ msgstr "Quantia"
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1181,7 +1181,7 @@ msgid "Internal ID"
|
||||
msgstr "ID Interna"
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1403,57 +1403,57 @@ msgstr "Qualquer entidade"
|
||||
msgid "No entity"
|
||||
msgstr "Sem entidade"
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr "Mais"
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr "Salvar e adicionar similar"
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr "Salvar e adicionar outra"
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr "Transações silenciadas não apareceram nos sumários mensais"
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr "Quantia de origem"
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr "Quantia de destino"
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr "Transferir"
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr "Nome da Tag"
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr "Nome da entidade"
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr "Nome da Categoria"
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr "Categorias silenciadas não apareceram nos sumários mensais"
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr "transações futuras"
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr "Data final deve ser após data inicial"
|
||||
|
||||
@@ -1844,24 +1844,24 @@ msgstr "Permissões"
|
||||
msgid "Important dates"
|
||||
msgstr "Datas importantes"
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr "Senha"
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr "E-mail ou senha inválidos"
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr "Essa conta está desativada"
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1869,19 +1869,23 @@ msgstr "Essa conta está desativada"
|
||||
msgid "Default"
|
||||
msgstr "Padrão"
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr "Formato de Data"
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr "Formato de Data e Hora"
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr "Formato de Número"
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
msgid "Default Account"
|
||||
msgstr "Conta Padrão"
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1892,19 +1896,19 @@ msgstr ""
|
||||
"são exibidos\n"
|
||||
"Considere ajudar a traduzir WYGIWYH para seu idioma em %(translation_link)s"
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr "Nova senha"
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr "Deixe em branco para usar a senha atual."
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr "Confirmar nova senha"
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
@@ -1912,7 +1916,7 @@ msgstr ""
|
||||
"Designa se esse usuário deve ser tratado como ativo. Desmarque essa opção em "
|
||||
"vez de excluir usuários."
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
@@ -1920,37 +1924,37 @@ msgstr ""
|
||||
"Designa que esse usuário tem todas as permissões sem atribuí-las "
|
||||
"explicitamente."
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr "Esse endereço de e-mail já está sendo usado por outra conta."
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Os dois campos de senha não coincidem."
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr "Confirme sua nova senha."
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr "Digite a nova senha primeiro."
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr "Não é possível desativar sua própria conta usando esse formulário."
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr "Não é possível remover o status do último superusuário."
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr ""
|
||||
"Não é possível remover seu próprio status de superusuário usando esse "
|
||||
"formulário."
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr "Já existe um usuário com esse endereço de e-mail."
|
||||
|
||||
@@ -1994,6 +1998,14 @@ msgstr "Fuso horário"
|
||||
msgid "Start page"
|
||||
msgstr "Página inicial"
|
||||
|
||||
#: apps/users/models.py:516
|
||||
msgid "Default account"
|
||||
msgstr "Conta Padrão"
|
||||
|
||||
#: apps/users/models.py:517
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr "Seleciona a conta por padrão ao criar novas transações"
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr "Os valores das transações agora estão ocultos"
|
||||
@@ -2842,6 +2854,10 @@ msgid "Try reloading the page or check the console for more information."
|
||||
msgstr ""
|
||||
"Tente recarregar a página ou verifique o console para obter mais informações."
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr "Recarregar"
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
@@ -2850,6 +2866,18 @@ msgstr "Cancelar"
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmar"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr "Puxe para baixo para atualizar"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr "Solte para atualizar"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
msgid "Refreshing"
|
||||
msgstr "Atualizando"
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr "Insights"
|
||||
@@ -3031,7 +3059,7 @@ msgstr "Abr"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:98
|
||||
msgid "May"
|
||||
msgstr "Mai"
|
||||
msgstr "Maio"
|
||||
|
||||
#: templates/insights/fragments/month_by_month.html:99
|
||||
msgid "Jun"
|
||||
@@ -3775,11 +3803,6 @@ msgstr "Visão Anual"
|
||||
#~ msgid "Internal ID Operator"
|
||||
#~ msgstr "ID Interna"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "Account"
|
||||
#~ msgid "Set Account"
|
||||
#~ msgstr "Conta"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "Service Type"
|
||||
#~ msgid "Set Type"
|
||||
|
||||
3613
app/locale/ru/LC_MESSAGES/django.po
Normal file
3613
app/locale/ru/LC_MESSAGES/django.po
Normal file
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: 2025-04-14 06:16+0000\n"
|
||||
"Last-Translator: Emil <emil.bjorkroth@gmail.com>\n"
|
||||
"Language-Team: Swedish <https://translations.herculino.com/projects/wygiwyh/"
|
||||
@@ -27,12 +27,12 @@ msgstr ""
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -43,11 +43,11 @@ msgstr "Uppdatera"
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
@@ -63,10 +63,10 @@ msgstr ""
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -80,10 +80,10 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -164,9 +164,9 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -345,7 +345,7 @@ msgid ""
|
||||
"owner.<br/>Public: Shown for all users. Only editable by the owner."
|
||||
msgstr ""
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
@@ -481,8 +481,8 @@ msgstr ""
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -697,11 +697,11 @@ msgstr ""
|
||||
msgid "Create transaction"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr ""
|
||||
|
||||
@@ -726,7 +726,7 @@ msgstr ""
|
||||
msgid "You must provide an account."
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr ""
|
||||
|
||||
@@ -745,7 +745,7 @@ msgstr ""
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -831,9 +831,9 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1103,7 +1103,7 @@ msgid "Operator"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1111,7 +1111,7 @@ msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1120,15 +1120,15 @@ msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1140,7 +1140,7 @@ msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1159,7 +1159,7 @@ msgid "Internal ID"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1379,57 +1379,57 @@ msgstr ""
|
||||
msgid "No entity"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr ""
|
||||
|
||||
@@ -1815,24 +1815,24 @@ msgstr ""
|
||||
msgid "Important dates"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1840,19 +1840,23 @@ msgstr ""
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
msgid "Default Account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1860,59 +1864,59 @@ msgid ""
|
||||
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr ""
|
||||
|
||||
@@ -1956,6 +1960,14 @@ msgstr ""
|
||||
msgid "Start page"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/models.py:516
|
||||
msgid "Default account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/models.py:517
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr ""
|
||||
@@ -2799,6 +2811,10 @@ msgstr ""
|
||||
msgid "Try reloading the page or check the console for more information."
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
@@ -2807,6 +2823,18 @@ msgstr ""
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
msgid "Refreshing"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr ""
|
||||
|
||||
3577
app/locale/sw/LC_MESSAGES/django.po
Normal file
3577
app/locale/sw/LC_MESSAGES/django.po
Normal file
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: 2025-11-01 01:17+0000\n"
|
||||
"Last-Translator: mlystopad <mlystopadt@gmail.com>\n"
|
||||
"Language-Team: Ukrainian <https://translations.herculino.com/projects/"
|
||||
@@ -28,12 +28,12 @@ msgstr "Назва групи"
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -44,11 +44,11 @@ msgstr "Оновлення"
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr "Додати"
|
||||
@@ -64,10 +64,10 @@ msgstr "Новий баланс"
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -81,10 +81,10 @@ msgstr "Категорія"
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -169,9 +169,9 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -357,7 +357,7 @@ msgstr ""
|
||||
"доступом. Редагувати може лише власник.<br/> Public: Відображається для всіх "
|
||||
"користувачів. Редагувати може лише власник."
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr "Зберегти"
|
||||
|
||||
@@ -499,8 +499,8 @@ msgstr "Суфікс"
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -727,11 +727,11 @@ msgstr "Сервіси успішно поставлено в чергу"
|
||||
msgid "Create transaction"
|
||||
msgstr "Створити транзакцію"
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr "З Рахунку"
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr "На рахунок"
|
||||
|
||||
@@ -756,7 +756,7 @@ msgstr "Пов’язати транзакцію"
|
||||
msgid "You must provide an account."
|
||||
msgstr "Необхідно вказати рахунок."
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr "Рахунки «З» та «На» повинні бути різними."
|
||||
|
||||
@@ -775,7 +775,7 @@ msgstr "Валюта платежу"
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -861,9 +861,9 @@ msgstr "Категорії"
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1135,7 +1135,7 @@ msgid "Operator"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1143,7 +1143,7 @@ msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1152,15 +1152,15 @@ msgid "Paid"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1172,7 +1172,7 @@ msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1191,7 +1191,7 @@ msgid "Internal ID"
|
||||
msgstr ""
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1413,57 +1413,57 @@ msgstr ""
|
||||
msgid "No entity"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr ""
|
||||
|
||||
@@ -1851,24 +1851,24 @@ msgstr ""
|
||||
msgid "Important dates"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1876,19 +1876,25 @@ msgstr ""
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
#, fuzzy
|
||||
#| msgid "Target Accounts"
|
||||
msgid "Default Account"
|
||||
msgstr "Цільові Рахунки"
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1896,59 +1902,59 @@ msgid ""
|
||||
"Consider helping translate WYGIWYH to your language at %(translation_link)s"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr ""
|
||||
|
||||
@@ -1992,6 +1998,15 @@ msgstr ""
|
||||
msgid "Start page"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/models.py:516
|
||||
#, fuzzy
|
||||
msgid "Default account"
|
||||
msgstr "Рахунок активу"
|
||||
|
||||
#: apps/users/models.py:517
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr ""
|
||||
@@ -2836,6 +2851,10 @@ msgstr ""
|
||||
msgid "Try reloading the page or check the console for more information."
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
@@ -2844,6 +2863,18 @@ msgstr ""
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
msgid "Refreshing"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr ""
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-01-10 20:50+0000\n"
|
||||
"POT-Creation-Date: 2026-02-16 02:24+0000\n"
|
||||
"PO-Revision-Date: 2025-10-08 16:17+0000\n"
|
||||
"Last-Translator: doody <doodykimo@gmail.com>\n"
|
||||
"Language-Team: Chinese (Traditional Han script) <https://translations."
|
||||
@@ -27,12 +27,12 @@ msgstr "群組名稱"
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:87
|
||||
#: apps/currencies/forms.py:136 apps/dca/forms.py:46 apps/dca/forms.py:205
|
||||
#: apps/import_app/forms.py:32 apps/rules/forms.py:60 apps/rules/forms.py:100
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:197
|
||||
#: apps/transactions/forms.py:361 apps/transactions/forms.py:480
|
||||
#: apps/transactions/forms.py:821 apps/transactions/forms.py:860
|
||||
#: apps/transactions/forms.py:888 apps/transactions/forms.py:919
|
||||
#: apps/transactions/forms.py:1065 apps/users/forms.py:222
|
||||
#: apps/users/forms.py:380
|
||||
#: apps/rules/forms.py:385 apps/transactions/forms.py:201
|
||||
#: apps/transactions/forms.py:365 apps/transactions/forms.py:484
|
||||
#: apps/transactions/forms.py:828 apps/transactions/forms.py:867
|
||||
#: apps/transactions/forms.py:895 apps/transactions/forms.py:926
|
||||
#: apps/transactions/forms.py:1076 apps/users/forms.py:242
|
||||
#: apps/users/forms.py:400
|
||||
#: templates/rules/fragments/transaction_rule/dry_run/updated.html:5
|
||||
#: templates/rules/fragments/transaction_rule/view.html:128
|
||||
msgid "Update"
|
||||
@@ -43,11 +43,11 @@ msgstr "更新"
|
||||
#: apps/currencies/forms.py:93 apps/currencies/forms.py:142
|
||||
#: apps/dca/forms.py:52 apps/dca/forms.py:211 apps/import_app/forms.py:38
|
||||
#: apps/rules/forms.py:66 apps/rules/forms.py:106 apps/rules/forms.py:391
|
||||
#: apps/transactions/forms.py:184 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:368 apps/transactions/forms.py:827
|
||||
#: apps/transactions/forms.py:866 apps/transactions/forms.py:894
|
||||
#: apps/transactions/forms.py:925 apps/transactions/forms.py:1071
|
||||
#: apps/users/forms.py:228 apps/users/forms.py:386
|
||||
#: apps/transactions/forms.py:188 apps/transactions/forms.py:208
|
||||
#: apps/transactions/forms.py:372 apps/transactions/forms.py:834
|
||||
#: apps/transactions/forms.py:873 apps/transactions/forms.py:901
|
||||
#: apps/transactions/forms.py:932 apps/transactions/forms.py:1082
|
||||
#: apps/users/forms.py:248 apps/users/forms.py:406
|
||||
#: templates/mini_tools/unit_price_calculator.html:168
|
||||
msgid "Add"
|
||||
msgstr "新增"
|
||||
@@ -63,10 +63,10 @@ msgstr "新的餘額"
|
||||
#: apps/accounts/forms.py:125 apps/dca/forms.py:79 apps/dca/forms.py:86
|
||||
#: apps/insights/forms.py:117 apps/rules/forms.py:181 apps/rules/forms.py:197
|
||||
#: apps/rules/models.py:44 apps/rules/models.py:311
|
||||
#: apps/transactions/forms.py:43 apps/transactions/forms.py:251
|
||||
#: apps/transactions/forms.py:419 apps/transactions/forms.py:516
|
||||
#: apps/transactions/forms.py:523 apps/transactions/forms.py:707
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:322
|
||||
#: apps/transactions/forms.py:44 apps/transactions/forms.py:255
|
||||
#: apps/transactions/forms.py:423 apps/transactions/forms.py:520
|
||||
#: apps/transactions/forms.py:527 apps/transactions/forms.py:711
|
||||
#: apps/transactions/forms.py:955 apps/transactions/models.py:322
|
||||
#: apps/transactions/models.py:578 apps/transactions/models.py:778
|
||||
#: apps/transactions/models.py:1026
|
||||
#: templates/insights/fragments/category_overview/index.html:86
|
||||
@@ -80,10 +80,10 @@ msgstr "分類"
|
||||
#: apps/export_app/forms.py:43 apps/export_app/forms.py:132
|
||||
#: apps/rules/forms.py:184 apps/rules/forms.py:194 apps/rules/models.py:45
|
||||
#: apps/rules/models.py:315 apps/transactions/filters.py:73
|
||||
#: apps/transactions/forms.py:51 apps/transactions/forms.py:259
|
||||
#: apps/transactions/forms.py:427 apps/transactions/forms.py:532
|
||||
#: apps/transactions/forms.py:540 apps/transactions/forms.py:700
|
||||
#: apps/transactions/forms.py:941 apps/transactions/models.py:328
|
||||
#: apps/transactions/forms.py:52 apps/transactions/forms.py:263
|
||||
#: apps/transactions/forms.py:431 apps/transactions/forms.py:536
|
||||
#: apps/transactions/forms.py:544 apps/transactions/forms.py:704
|
||||
#: apps/transactions/forms.py:948 apps/transactions/models.py:328
|
||||
#: apps/transactions/models.py:580 apps/transactions/models.py:782
|
||||
#: apps/transactions/models.py:1032 templates/includes/sidebar.html:150
|
||||
#: templates/insights/fragments/category_overview/index.html:40
|
||||
@@ -164,9 +164,9 @@ msgstr "封存的帳戶不會在淨資產中被計算或顯示"
|
||||
|
||||
#: apps/accounts/models.py:75 apps/rules/forms.py:173 apps/rules/forms.py:187
|
||||
#: apps/rules/models.py:35 apps/rules/models.py:267
|
||||
#: apps/transactions/forms.py:63 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:386 apps/transactions/forms.py:692
|
||||
#: apps/transactions/forms.py:933 apps/transactions/models.py:294
|
||||
#: apps/transactions/forms.py:64 apps/transactions/forms.py:275
|
||||
#: apps/transactions/forms.py:390 apps/transactions/forms.py:696
|
||||
#: apps/transactions/forms.py:940 apps/transactions/models.py:294
|
||||
#: apps/transactions/models.py:538 apps/transactions/models.py:760
|
||||
#: apps/transactions/models.py:1000
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -349,7 +349,7 @@ msgstr ""
|
||||
"私人:只會顯示給擁有者或著已分享的使用者。只有擁有者可以編輯這個選項。<br/>公"
|
||||
"開:所有使用者都可以看到。只有擁有者可以編輯這個選項。"
|
||||
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:149
|
||||
#: apps/common/forms.py:76 apps/users/forms.py:169
|
||||
msgid "Save"
|
||||
msgstr "儲存"
|
||||
|
||||
@@ -479,8 +479,8 @@ msgstr "後綴"
|
||||
|
||||
#: apps/currencies/forms.py:66 apps/dca/models.py:158 apps/rules/forms.py:176
|
||||
#: apps/rules/forms.py:190 apps/rules/models.py:38 apps/rules/models.py:279
|
||||
#: apps/transactions/forms.py:67 apps/transactions/forms.py:391
|
||||
#: apps/transactions/forms.py:544 apps/transactions/models.py:304
|
||||
#: apps/transactions/forms.py:68 apps/transactions/forms.py:395
|
||||
#: apps/transactions/forms.py:548 apps/transactions/models.py:304
|
||||
#: templates/dca/fragments/strategy/details.html:49
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
#: templates/exchange_rates_services/fragments/table.html:11
|
||||
@@ -697,11 +697,11 @@ msgstr "成功排程服務"
|
||||
msgid "Create transaction"
|
||||
msgstr "建立交易"
|
||||
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:491
|
||||
#: apps/dca/forms.py:64 apps/transactions/forms.py:495
|
||||
msgid "From Account"
|
||||
msgstr "來源帳戶"
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:496
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:500
|
||||
msgid "To Account"
|
||||
msgstr "目標帳戶"
|
||||
|
||||
@@ -726,7 +726,7 @@ msgstr "連結交易"
|
||||
msgid "You must provide an account."
|
||||
msgstr "務必選擇一個帳戶。"
|
||||
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:638
|
||||
#: apps/dca/forms.py:290 apps/transactions/forms.py:642
|
||||
msgid "From and To accounts must be different."
|
||||
msgstr "來源跟目標帳戶不得相同。"
|
||||
|
||||
@@ -745,7 +745,7 @@ msgstr "交易貨幣"
|
||||
|
||||
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:180
|
||||
#: apps/rules/forms.py:196 apps/rules/models.py:43 apps/rules/models.py:295
|
||||
#: apps/transactions/forms.py:413 apps/transactions/forms.py:560
|
||||
#: apps/transactions/forms.py:417 apps/transactions/forms.py:564
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:587
|
||||
#: apps/transactions/models.py:788 apps/transactions/models.py:1022
|
||||
msgid "Notes"
|
||||
@@ -831,9 +831,9 @@ msgstr "類別"
|
||||
#: apps/export_app/forms.py:49 apps/export_app/forms.py:133
|
||||
#: apps/rules/forms.py:185 apps/rules/forms.py:195 apps/rules/models.py:46
|
||||
#: apps/rules/models.py:307 apps/transactions/filters.py:78
|
||||
#: apps/transactions/forms.py:59 apps/transactions/forms.py:267
|
||||
#: apps/transactions/forms.py:435 apps/transactions/forms.py:715
|
||||
#: apps/transactions/forms.py:956 apps/transactions/models.py:277
|
||||
#: apps/transactions/forms.py:60 apps/transactions/forms.py:271
|
||||
#: apps/transactions/forms.py:439 apps/transactions/forms.py:719
|
||||
#: apps/transactions/forms.py:963 apps/transactions/models.py:277
|
||||
#: apps/transactions/models.py:333 apps/transactions/models.py:583
|
||||
#: apps/transactions/models.py:785 apps/transactions/models.py:1037
|
||||
#: templates/entities/fragments/list.html:9
|
||||
@@ -1103,7 +1103,7 @@ msgid "Operator"
|
||||
msgstr "運算子"
|
||||
|
||||
#: apps/rules/forms.py:174 apps/rules/forms.py:188 apps/rules/models.py:36
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:377
|
||||
#: apps/rules/models.py:271 apps/transactions/forms.py:381
|
||||
#: apps/transactions/models.py:301 apps/transactions/models.py:543
|
||||
#: apps/transactions/models.py:766 apps/transactions/models.py:1007
|
||||
msgid "Type"
|
||||
@@ -1111,7 +1111,7 @@ msgstr "種類"
|
||||
|
||||
#: apps/rules/forms.py:175 apps/rules/forms.py:189 apps/rules/models.py:37
|
||||
#: apps/rules/models.py:275 apps/transactions/filters.py:22
|
||||
#: apps/transactions/forms.py:381 apps/transactions/models.py:303
|
||||
#: apps/transactions/forms.py:385 apps/transactions/models.py:303
|
||||
#: apps/transactions/models.py:1009 templates/cotton/transaction/item.html:20
|
||||
#: templates/cotton/transaction/item.html:31
|
||||
#: templates/transactions/widgets/paid_toggle_button.html:10
|
||||
@@ -1120,15 +1120,15 @@ msgid "Paid"
|
||||
msgstr "已支付"
|
||||
|
||||
#: apps/rules/forms.py:177 apps/rules/forms.py:191 apps/rules/models.py:39
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:71
|
||||
#: apps/transactions/forms.py:397 apps/transactions/forms.py:547
|
||||
#: apps/transactions/forms.py:721 apps/transactions/models.py:305
|
||||
#: apps/rules/models.py:283 apps/transactions/forms.py:72
|
||||
#: apps/transactions/forms.py:401 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:725 apps/transactions/models.py:305
|
||||
#: apps/transactions/models.py:561 apps/transactions/models.py:790
|
||||
msgid "Reference Date"
|
||||
msgstr "起算日"
|
||||
|
||||
#: apps/rules/forms.py:178 apps/rules/forms.py:192 apps/rules/models.py:41
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:404
|
||||
#: apps/rules/models.py:287 apps/transactions/forms.py:408
|
||||
#: apps/transactions/models.py:311 apps/transactions/models.py:771
|
||||
#: apps/transactions/models.py:1015
|
||||
#: templates/insights/fragments/sankey.html:102
|
||||
@@ -1140,7 +1140,7 @@ msgstr "金額"
|
||||
|
||||
#: apps/rules/forms.py:179 apps/rules/forms.py:193 apps/rules/models.py:14
|
||||
#: apps/rules/models.py:42 apps/rules/models.py:291
|
||||
#: apps/transactions/forms.py:408 apps/transactions/forms.py:551
|
||||
#: apps/transactions/forms.py:412 apps/transactions/forms.py:555
|
||||
#: apps/transactions/models.py:316 apps/transactions/models.py:545
|
||||
#: apps/transactions/models.py:774 apps/transactions/models.py:1020
|
||||
msgid "Description"
|
||||
@@ -1159,7 +1159,7 @@ msgid "Internal ID"
|
||||
msgstr "內部ID"
|
||||
|
||||
#: apps/rules/forms.py:186 apps/rules/forms.py:200 apps/rules/models.py:40
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:564
|
||||
#: apps/rules/models.py:319 apps/transactions/forms.py:568
|
||||
#: apps/transactions/models.py:215 apps/transactions/models.py:306
|
||||
#: apps/transactions/models.py:1010
|
||||
msgid "Mute"
|
||||
@@ -1381,57 +1381,57 @@ msgstr "任何實體"
|
||||
msgid "No entity"
|
||||
msgstr "無實體"
|
||||
|
||||
#: apps/transactions/forms.py:170
|
||||
#: apps/transactions/forms.py:174
|
||||
msgid "More"
|
||||
msgstr "更多"
|
||||
|
||||
#: apps/transactions/forms.py:207
|
||||
#: apps/transactions/forms.py:211
|
||||
msgid "Save and add similar"
|
||||
msgstr "儲存並新增類似"
|
||||
|
||||
#: apps/transactions/forms.py:212
|
||||
#: apps/transactions/forms.py:216
|
||||
msgid "Save and add another"
|
||||
msgstr "儲存並新增另一個"
|
||||
|
||||
#: apps/transactions/forms.py:295 apps/transactions/forms.py:567
|
||||
#: apps/transactions/forms.py:299 apps/transactions/forms.py:571
|
||||
msgid "Muted transactions won't be displayed on monthly summaries"
|
||||
msgstr "每月總結不會顯示已經靜音的交易"
|
||||
|
||||
#: apps/transactions/forms.py:503
|
||||
#: apps/transactions/forms.py:507
|
||||
msgid "From Amount"
|
||||
msgstr "原始金額"
|
||||
|
||||
#: apps/transactions/forms.py:508
|
||||
#: apps/transactions/forms.py:512
|
||||
msgid "To Amount"
|
||||
msgstr "目標金額"
|
||||
|
||||
#: apps/transactions/forms.py:606
|
||||
#: apps/transactions/forms.py:610
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr "轉帳"
|
||||
|
||||
#: apps/transactions/forms.py:847
|
||||
#: apps/transactions/forms.py:854
|
||||
msgid "Tag name"
|
||||
msgstr "標籤名稱"
|
||||
|
||||
#: apps/transactions/forms.py:875
|
||||
#: apps/transactions/forms.py:882
|
||||
msgid "Entity name"
|
||||
msgstr "實體名稱"
|
||||
|
||||
#: apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:910
|
||||
msgid "Category name"
|
||||
msgstr "分類名稱"
|
||||
|
||||
#: apps/transactions/forms.py:905
|
||||
#: apps/transactions/forms.py:912
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr "靜音的分類不會顯示在每個月的總結中"
|
||||
|
||||
#: apps/transactions/forms.py:1055
|
||||
#: apps/transactions/forms.py:1066
|
||||
msgid "future transactions"
|
||||
msgstr "未來的交易"
|
||||
|
||||
#: apps/transactions/forms.py:1081
|
||||
#: apps/transactions/forms.py:1092
|
||||
msgid "End date should be after the start date"
|
||||
msgstr "結束日期應該大於起始日期"
|
||||
|
||||
@@ -1811,24 +1811,24 @@ msgstr "權限"
|
||||
msgid "Important dates"
|
||||
msgstr "重要的日子"
|
||||
|
||||
#: apps/users/forms.py:22 apps/users/forms.py:26 apps/users/models.py:451
|
||||
#: apps/users/forms.py:24 apps/users/forms.py:28 apps/users/models.py:451
|
||||
#: templates/users/login.html:18
|
||||
msgid "E-mail"
|
||||
msgstr "電子郵件"
|
||||
|
||||
#: apps/users/forms.py:33 apps/users/forms.py:38 templates/users/login.html:19
|
||||
#: apps/users/forms.py:35 apps/users/forms.py:40 templates/users/login.html:19
|
||||
msgid "Password"
|
||||
msgstr "密碼"
|
||||
|
||||
#: apps/users/forms.py:45
|
||||
#: apps/users/forms.py:47
|
||||
msgid "Invalid e-mail or password"
|
||||
msgstr "無效的電子郵件或著密碼"
|
||||
|
||||
#: apps/users/forms.py:46
|
||||
#: apps/users/forms.py:48
|
||||
msgid "This account is deactivated"
|
||||
msgstr "這個帳號已經被停用"
|
||||
|
||||
#: apps/users/forms.py:62 apps/users/forms.py:75 apps/users/forms.py:97
|
||||
#: apps/users/forms.py:64 apps/users/forms.py:77 apps/users/forms.py:99
|
||||
#: templates/monthly_overview/pages/overview.html:98
|
||||
#: templates/monthly_overview/pages/overview.html:245
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
@@ -1836,19 +1836,25 @@ msgstr "這個帳號已經被停用"
|
||||
msgid "Default"
|
||||
msgstr "預設"
|
||||
|
||||
#: apps/users/forms.py:105 apps/users/models.py:484
|
||||
#: apps/users/forms.py:107 apps/users/models.py:484
|
||||
msgid "Date Format"
|
||||
msgstr "日期格式"
|
||||
|
||||
#: apps/users/forms.py:110 apps/users/models.py:489
|
||||
#: apps/users/forms.py:112 apps/users/models.py:489
|
||||
msgid "Datetime Format"
|
||||
msgstr "日期時間格式"
|
||||
|
||||
#: apps/users/forms.py:116 apps/users/models.py:492
|
||||
#: apps/users/forms.py:118 apps/users/models.py:492
|
||||
msgid "Number Format"
|
||||
msgstr "數字格式"
|
||||
|
||||
#: apps/users/forms.py:154
|
||||
#: apps/users/forms.py:125
|
||||
#, fuzzy
|
||||
#| msgid "Target Accounts"
|
||||
msgid "Default Account"
|
||||
msgstr "目標帳戶"
|
||||
|
||||
#: apps/users/forms.py:174
|
||||
#, python-format
|
||||
msgid ""
|
||||
"This changes the language (if available) and how numbers and dates are "
|
||||
@@ -1858,59 +1864,59 @@ msgstr ""
|
||||
"這會改變語言(如果支援的話)以及數字和日期的顯示方式\n"
|
||||
"若您有興趣也可以到%(translation_link)s幫助WYGIWYH進行翻譯"
|
||||
|
||||
#: apps/users/forms.py:163
|
||||
#: apps/users/forms.py:183
|
||||
msgid "New Password"
|
||||
msgstr "新密碼"
|
||||
|
||||
#: apps/users/forms.py:166
|
||||
#: apps/users/forms.py:186
|
||||
msgid "Leave blank to keep the current password."
|
||||
msgstr "若不想改變密碼請留白。"
|
||||
|
||||
#: apps/users/forms.py:169
|
||||
#: apps/users/forms.py:189
|
||||
msgid "Confirm New Password"
|
||||
msgstr "確認新密碼"
|
||||
|
||||
#: apps/users/forms.py:181 apps/users/forms.py:338
|
||||
#: apps/users/forms.py:201 apps/users/forms.py:358
|
||||
msgid ""
|
||||
"Designates whether this user should be treated as active. Unselect this "
|
||||
"instead of deleting accounts."
|
||||
msgstr "指定這個使用者是否為啟用狀態,如果沒有選擇的話帳號將無法使用。"
|
||||
|
||||
#: apps/users/forms.py:184 apps/users/forms.py:341
|
||||
#: apps/users/forms.py:204 apps/users/forms.py:361
|
||||
msgid ""
|
||||
"Designates that this user has all permissions without explicitly assigning "
|
||||
"them."
|
||||
msgstr "指定這個使用者是否擁有全部的權限。"
|
||||
|
||||
#: apps/users/forms.py:251
|
||||
#: apps/users/forms.py:271
|
||||
msgid "This email address is already in use by another account."
|
||||
msgstr "這個email已經被另一個帳號使用。"
|
||||
|
||||
#: apps/users/forms.py:259
|
||||
#: apps/users/forms.py:279
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "兩個密碼欄位的內容不符。"
|
||||
|
||||
#: apps/users/forms.py:261
|
||||
#: apps/users/forms.py:281
|
||||
msgid "Please confirm your new password."
|
||||
msgstr "請確認你的新密碼。"
|
||||
|
||||
#: apps/users/forms.py:263
|
||||
#: apps/users/forms.py:283
|
||||
msgid "Please enter the new password first."
|
||||
msgstr "請先輸入新的密碼。"
|
||||
|
||||
#: apps/users/forms.py:283
|
||||
#: apps/users/forms.py:303
|
||||
msgid "You cannot deactivate your own account using this form."
|
||||
msgstr "無法透過這個頁面停止自己的帳號。"
|
||||
|
||||
#: apps/users/forms.py:296
|
||||
#: apps/users/forms.py:316
|
||||
msgid "Cannot remove status from the last superuser."
|
||||
msgstr "最後一位超級使用者無法移除這個權限。"
|
||||
|
||||
#: apps/users/forms.py:302
|
||||
#: apps/users/forms.py:322
|
||||
msgid "You cannot remove your own superuser status using this form."
|
||||
msgstr "無法使用這個頁面移除自己的超級使用者權限。"
|
||||
|
||||
#: apps/users/forms.py:395
|
||||
#: apps/users/forms.py:415
|
||||
msgid "A user with this email address already exists."
|
||||
msgstr "這個電子郵件的使用者已經存在。"
|
||||
|
||||
@@ -1954,6 +1960,20 @@ msgstr "時區"
|
||||
msgid "Start page"
|
||||
msgstr "起始頁面"
|
||||
|
||||
#: apps/users/models.py:516
|
||||
#, fuzzy
|
||||
#| msgid "Asset account"
|
||||
msgid "Default account"
|
||||
msgstr "資產帳戶"
|
||||
|
||||
#: apps/users/models.py:517
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Deactivated tags won't be able to be selected when creating new "
|
||||
#| "transactions"
|
||||
msgid "Selects the account by default when creating new transactions"
|
||||
msgstr "新增交易的時候無法選擇停用的標籤"
|
||||
|
||||
#: apps/users/views.py:67
|
||||
msgid "Transaction amounts are now hidden"
|
||||
msgstr "已隱藏交易金額"
|
||||
@@ -2802,6 +2822,10 @@ msgstr "讀取資料時發生錯誤"
|
||||
msgid "Try reloading the page or check the console for more information."
|
||||
msgstr "請重新整理頁面或在主控台中尋找更多資訊。"
|
||||
|
||||
#: templates/includes/scripts/hyperscript/htmx_error_handler.html:24
|
||||
msgid "Reload"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/hyperscript/swal.html:13
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
@@ -2810,6 +2834,20 @@ msgstr "取消"
|
||||
msgid "Confirm"
|
||||
msgstr "確認"
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:4
|
||||
msgid "Pull down to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:5
|
||||
msgid "Release to refresh"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/scripts/pull_to_refresh_i18n.html:6
|
||||
#, fuzzy
|
||||
#| msgid "Refresh"
|
||||
msgid "Refreshing"
|
||||
msgstr "重新整理"
|
||||
|
||||
#: templates/includes/sidebar.html:69 templates/insights/pages/index.html:5
|
||||
msgid "Insights"
|
||||
msgstr "深入瞭解"
|
||||
|
||||
@@ -9,9 +9,10 @@
|
||||
{% include 'includes/scripts/hyperscript/sounds.html' %}
|
||||
{% include 'includes/scripts/hyperscript/swal.html' %}
|
||||
{% include 'includes/scripts/hyperscript/autosize.html' %}
|
||||
{% include 'includes/scripts/pull_to_refresh_i18n.html' %}
|
||||
|
||||
<script defer>
|
||||
let tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
||||
var tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
||||
if (!tz) {
|
||||
tz = "UTC"
|
||||
}
|
||||
|
||||
@@ -20,11 +20,16 @@ behavior htmx_error_handler
|
||||
text: '{% trans "Try reloading the page or check the console for more information." %}',
|
||||
icon: 'error',
|
||||
timer: 60000,
|
||||
showDenyButton: true,
|
||||
denyButtonText: '{% trans "Reload" %}',
|
||||
customClass: {
|
||||
confirmButton: 'btn btn-primary'
|
||||
confirmButton: 'btn btn-primary',
|
||||
denyButton: 'btn btn-error',
|
||||
actions: 'gap-2'
|
||||
},
|
||||
buttonsStyling: false
|
||||
})
|
||||
buttonsStyling: false,
|
||||
reverseButtons: true
|
||||
}) then if it.isDenied call location.reload()
|
||||
end
|
||||
then log event
|
||||
then halt the event
|
||||
|
||||
6
app/templates/includes/scripts/pull_to_refresh_i18n.html
Normal file
6
app/templates/includes/scripts/pull_to_refresh_i18n.html
Normal file
@@ -0,0 +1,6 @@
|
||||
{% load i18n %}
|
||||
<span id="ptr-i18n"
|
||||
class="hidden"
|
||||
data-pull="{% translate 'Pull down to refresh' %}"
|
||||
data-release="{% translate 'Release to refresh' %}"
|
||||
data-refreshing="{% translate 'Refreshing' %}"></span>
|
||||
@@ -268,7 +268,7 @@
|
||||
</div>
|
||||
|
||||
{# Filter transactions form #}
|
||||
<div class="z-1" x-show="filterOpen" x-collapse>
|
||||
<div class="z-1" x-show="filterOpen" x-collapse x-cloak>
|
||||
<div class="card card-body bg-base-200 mt-2">
|
||||
<div class="text-right">
|
||||
<button class="btn btn-outline btn-error btn-sm w-fit"
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
</div>
|
||||
|
||||
{# Filter transactions form #}
|
||||
<div class="z-1" x-show="filterOpen" x-collapse>
|
||||
<div class="z-1" x-show="filterOpen" x-collapse x-cloak>
|
||||
<div class="card card-body bg-base-200 mt-2">
|
||||
<div class="text-right">
|
||||
<button class="btn btn-outline btn-error btn-sm w-fit"
|
||||
|
||||
@@ -2,9 +2,9 @@ FROM node:lts-alpine
|
||||
|
||||
WORKDIR /usr/src/frontend
|
||||
|
||||
COPY ./frontend/package.json .
|
||||
COPY ./frontend/package.json ./frontend/package-lock.json ./
|
||||
|
||||
RUN npm install --verbose && npm cache clean --force
|
||||
RUN npm ci --verbose && npm cache clean --force
|
||||
|
||||
ENV PATH ./node_modules/.bin/:$PATH
|
||||
|
||||
|
||||
575
frontend/package-lock.json
generated
575
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -30,18 +30,19 @@
|
||||
"bootstrap": "^5.3.8",
|
||||
"chart.js": "^4.5.1",
|
||||
"chartjs-chart-sankey": "^0.14.0",
|
||||
"daisyui": "^5.5.5",
|
||||
"daisyui": "5.5.19",
|
||||
"htmx.org": "^2.0.8",
|
||||
"hyperscript.org": "^0.9.14",
|
||||
"mathjs": "^15.1.0",
|
||||
"mathjs": "^15.2.0",
|
||||
"postcss": "^8.5.6",
|
||||
"pulltorefreshjs": "^0.1.22",
|
||||
"sass": "^1.94.0",
|
||||
"sweetalert2": "^11.26.3",
|
||||
"tailwindcss": "^4.1.17",
|
||||
"tippy.js": "^6.3.7",
|
||||
"tom-select": "^2.4.3",
|
||||
"tw-bootstrap-grid": "^1.3.2",
|
||||
"vite": "7.2.2"
|
||||
"vite": "7.3.2"
|
||||
},
|
||||
"resolutions": {
|
||||
"rollup": "npm:@rollup/wasm-node"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import _hyperscript from 'hyperscript.org/dist/_hyperscript.min';
|
||||
import _hyperscript from 'hyperscript.org';
|
||||
import './_htmx.js';
|
||||
import Alpine from "alpinejs";
|
||||
import mask from '@alpinejs/mask';
|
||||
@@ -6,7 +6,10 @@ import collapse from '@alpinejs/collapse'
|
||||
import { create, all } from 'mathjs';
|
||||
|
||||
window.Alpine = Alpine;
|
||||
window._hyperscript = _hyperscript;
|
||||
if (!window._hyperscript) {
|
||||
window._hyperscript = _hyperscript;
|
||||
_hyperscript.browserInit();
|
||||
}
|
||||
window.math = create(all, {
|
||||
number: 'BigNumber',
|
||||
});
|
||||
@@ -15,8 +18,6 @@ Alpine.plugin(mask);
|
||||
Alpine.plugin(collapse);
|
||||
Alpine.start();
|
||||
|
||||
_hyperscript.browserInit();
|
||||
|
||||
const successAudio = new Audio("/static/sounds/success.mp3");
|
||||
const popAudio = new Audio("/static/sounds/pop.mp3");
|
||||
window.paidSound = successAudio;
|
||||
|
||||
112
frontend/src/js/pulltorefresh.js
Normal file
112
frontend/src/js/pulltorefresh.js
Normal file
@@ -0,0 +1,112 @@
|
||||
import PullToRefresh from 'pulltorefreshjs';
|
||||
|
||||
const isOverlayOpen = () => !!document.querySelector('.offcanvas.show, .swal2-container');
|
||||
|
||||
const isIosPwa = () => {
|
||||
const ua = window.navigator.userAgent.toLowerCase();
|
||||
const isIos = /iphone|ipad|ipod/.test(ua) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
|
||||
const isStandalone = window.navigator.standalone === true || window.matchMedia('(display-mode: standalone)').matches;
|
||||
return isIos && isStandalone;
|
||||
};
|
||||
|
||||
const ptrMarkup = `
|
||||
<div class="__PREFIX__box">
|
||||
<div class="__PREFIX__content">
|
||||
<div class="__PREFIX__icon"></div>
|
||||
<div class="__PREFIX__text"></div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
const ptrStyles = `
|
||||
.__PREFIX__ptr {
|
||||
box-shadow: inset 0 -3px 5px rgba(0, 0, 0, 0.12);
|
||||
pointer-events: none;
|
||||
font-size: 0.85em;
|
||||
font-weight: bold;
|
||||
top: 0;
|
||||
height: 0;
|
||||
transition: height 0.3s, min-height 0.3s;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
align-content: stretch;
|
||||
}
|
||||
|
||||
.__PREFIX__box {
|
||||
padding: 10px;
|
||||
flex-basis: 100%;
|
||||
}
|
||||
|
||||
.__PREFIX__pull {
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.__PREFIX__text {
|
||||
margin-top: .33em;
|
||||
color: var(--color-base-content);
|
||||
}
|
||||
|
||||
.__PREFIX__icon {
|
||||
color: var(--color-base-content);
|
||||
transition: transform .3s;
|
||||
}
|
||||
|
||||
/*
|
||||
When at the top of the page, disable vertical overscroll so passive touch
|
||||
listeners can take over.
|
||||
*/
|
||||
.__PREFIX__top {
|
||||
touch-action: pan-x pan-down pinch-zoom;
|
||||
}
|
||||
|
||||
.__PREFIX__release .__PREFIX__icon {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
`;
|
||||
|
||||
const getPtrStrings = () => {
|
||||
const ptrStringsEl = document.querySelector('#ptr-i18n');
|
||||
return {
|
||||
pull: ptrStringsEl?.dataset.pull,
|
||||
release: ptrStringsEl?.dataset.release,
|
||||
refreshing: ptrStringsEl?.dataset.refreshing
|
||||
};
|
||||
};
|
||||
|
||||
const initPullToRefresh = () => {
|
||||
const ptrStrings = getPtrStrings();
|
||||
|
||||
PullToRefresh.destroyAll();
|
||||
let ptr = PullToRefresh.init({
|
||||
mainElement: 'body',
|
||||
triggerElement: '#content',
|
||||
getMarkup() {
|
||||
return ptrMarkup;
|
||||
},
|
||||
getStyles() {
|
||||
return ptrStyles;
|
||||
},
|
||||
instructionsPullToRefresh: ptrStrings.pull || 'Pull down to refresh',
|
||||
instructionsReleaseToRefresh: ptrStrings.release || 'Release to refresh',
|
||||
instructionsRefreshing: ptrStrings.refreshing || 'Refreshing',
|
||||
shouldPullToRefresh() {
|
||||
return isIosPwa() && !isOverlayOpen() && window.scrollY === 0;
|
||||
},
|
||||
onRefresh() {
|
||||
window.location.reload();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (isIosPwa()) {
|
||||
initPullToRefresh();
|
||||
|
||||
document.body.addEventListener('htmx:afterSwap', (event) => {
|
||||
if (event.detail.target === document.body) {
|
||||
initPullToRefresh();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -4,6 +4,15 @@ import '../styles/_tom-select.scss'
|
||||
|
||||
|
||||
window.TomSelect = function createDynamicTomSelect(element) {
|
||||
const schedulePopperUpdate = function (instance) {
|
||||
// Wait for TomSelect DOM updates before recalculating dropdown position.
|
||||
requestAnimationFrame(() => {
|
||||
if (instance.popper) {
|
||||
instance.popper.update();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// Basic configuration
|
||||
const config = {
|
||||
plugins: {},
|
||||
@@ -27,10 +36,16 @@ window.TomSelect = function createDynamicTomSelect(element) {
|
||||
this.popper = Popper.createPopper(this.control, this.dropdown, {
|
||||
placement: "bottom-start",
|
||||
modifiers: [
|
||||
{
|
||||
name: "offset",
|
||||
options: {
|
||||
offset: [0, 4],
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "sameWidth",
|
||||
enabled: true,
|
||||
fn: ({state}) => {
|
||||
fn: ({ state }) => {
|
||||
state.styles.popper.width = `${state.rects.reference.width}px`;
|
||||
},
|
||||
phase: "beforeWrite",
|
||||
@@ -48,8 +63,17 @@ window.TomSelect = function createDynamicTomSelect(element) {
|
||||
|
||||
},
|
||||
onDropdownOpen: function () {
|
||||
this.popper.update();
|
||||
}
|
||||
schedulePopperUpdate(this);
|
||||
},
|
||||
onItemAdd: function () {
|
||||
schedulePopperUpdate(this);
|
||||
},
|
||||
onItemRemove: function () {
|
||||
schedulePopperUpdate(this);
|
||||
},
|
||||
onClear: function () {
|
||||
schedulePopperUpdate(this);
|
||||
},
|
||||
};
|
||||
|
||||
if (element.dataset.checkboxes === 'true') {
|
||||
|
||||
@@ -10,3 +10,4 @@ import './js/sweetalert2.js';
|
||||
import './js/style.js';
|
||||
import './js/_utils.js';
|
||||
import './js/hide_amounts.js';
|
||||
import './js/pulltorefresh.js';
|
||||
|
||||
3
frontend/src/plugins/tw-bootstrap-grid-plugin.js
Normal file
3
frontend/src/plugins/tw-bootstrap-grid-plugin.js
Normal file
@@ -0,0 +1,3 @@
|
||||
import twBootstrapGrid from "tw-bootstrap-grid";
|
||||
|
||||
export default twBootstrapGrid;
|
||||
@@ -4,7 +4,7 @@
|
||||
themes: wygiwyh_dark --default, wygiwyh_light;
|
||||
logs: true;
|
||||
}
|
||||
@plugin "tw-bootstrap-grid";
|
||||
@plugin "../plugins/tw-bootstrap-grid-plugin.js";
|
||||
|
||||
@plugin "daisyui/theme" {
|
||||
name: "wygiwyh_light";
|
||||
|
||||
@@ -51,10 +51,44 @@ export default defineConfig({
|
||||
manifest: 'manifest.json',
|
||||
emptyOutDir: true,
|
||||
target: 'es2017',
|
||||
chunkSizeWarningLimit: 800,
|
||||
rollupOptions: {
|
||||
input: rollupInputs,
|
||||
output: {
|
||||
chunkFileNames: undefined,
|
||||
manualChunks(id) {
|
||||
if (!id.includes('node_modules')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (id.includes('/chart.js/') || id.includes('/chartjs-chart-sankey/')) {
|
||||
return 'vendor-chart';
|
||||
}
|
||||
|
||||
if (id.includes('/mathjs/')) {
|
||||
return 'vendor-math';
|
||||
}
|
||||
|
||||
if (
|
||||
id.includes('/alpinejs/') ||
|
||||
id.includes('/@alpinejs/') ||
|
||||
id.includes('/htmx.org/') ||
|
||||
id.includes('/hyperscript.org/')
|
||||
) {
|
||||
return 'vendor-interaction';
|
||||
}
|
||||
|
||||
if (
|
||||
id.includes('/bootstrap/') ||
|
||||
id.includes('/@popperjs/') ||
|
||||
id.includes('/sweetalert2/') ||
|
||||
id.includes('/tippy.js/') ||
|
||||
id.includes('/tom-select/') ||
|
||||
id.includes('/air-datepicker/')
|
||||
) {
|
||||
return 'vendor-ui';
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -6,8 +6,8 @@ readme = "README.md"
|
||||
requires-python = ">=3.11"
|
||||
dependencies = [
|
||||
"crispy-bootstrap5==2025.6",
|
||||
"django~=5.2.9",
|
||||
"django-allauth[socialaccount]~=65.13.1",
|
||||
"django~=5.2.13",
|
||||
"django-allauth[socialaccount]~=65.14.1",
|
||||
"django-browser-reload==1.21.0",
|
||||
"django-cachalot~=2.8.0",
|
||||
"django-cotton<2.3.0",
|
||||
@@ -24,12 +24,12 @@ dependencies = [
|
||||
"mistune~=3.1.3",
|
||||
"openpyxl~=3.1.5",
|
||||
"procrastinate[django]~=3.5.3",
|
||||
"psycopg[binary,pool]==3.2.9",
|
||||
"psycopg[binary,pool]==3.3.3",
|
||||
"pydantic~=2.12.3",
|
||||
"python-dateutil~=2.9.0.post0",
|
||||
"pytz>=2025.2",
|
||||
"pyyaml~=6.0.2",
|
||||
"requests~=2.32.5",
|
||||
"requests~=2.33.0",
|
||||
"simpleeval~=1.0.3",
|
||||
"watchfiles==1.1.1",
|
||||
"whitenoise[brotli]==6.11.0",
|
||||
|
||||
232
uv.lock
generated
232
uv.lock
generated
@@ -270,64 +270,61 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "cryptography"
|
||||
version = "46.0.3"
|
||||
version = "46.0.7"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/9f/33/c00162f49c0e2fe8064a62cb92b93e50c74a72bc370ab92f86112b33ff62/cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", size = 749258, upload-time = "2025-10-15T23:18:31.74Z" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/47/93/ac8f3d5ff04d54bc814e961a43ae5b0b146154c89c61b47bb07557679b18/cryptography-46.0.7.tar.gz", hash = "sha256:e4cfd68c5f3e0bfdad0d38e023239b96a2fe84146481852dffbcca442c245aa5", size = 750652, upload-time = "2026-04-08T01:57:54.692Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/1d/42/9c391dd801d6cf0d561b5890549d4b27bafcc53b39c31a817e69d87c625b/cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", size = 7225004, upload-time = "2025-10-15T23:16:52.239Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1c/67/38769ca6b65f07461eb200e85fc1639b438bdc667be02cf7f2cd6a64601c/cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", size = 4296667, upload-time = "2025-10-15T23:16:54.369Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/5c/49/498c86566a1d80e978b42f0d702795f69887005548c041636df6ae1ca64c/cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", size = 4450807, upload-time = "2025-10-15T23:16:56.414Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/4b/0a/863a3604112174c8624a2ac3c038662d9e59970c7f926acdcfaed8d61142/cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", size = 4299615, upload-time = "2025-10-15T23:16:58.442Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/64/02/b73a533f6b64a69f3cd3872acb6ebc12aef924d8d103133bb3ea750dc703/cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", size = 4016800, upload-time = "2025-10-15T23:17:00.378Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/25/d5/16e41afbfa450cde85a3b7ec599bebefaef16b5c6ba4ec49a3532336ed72/cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", size = 4984707, upload-time = "2025-10-15T23:17:01.98Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", size = 4482541, upload-time = "2025-10-15T23:17:04.078Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/78/f6/50736d40d97e8483172f1bb6e698895b92a223dba513b0ca6f06b2365339/cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", size = 4299464, upload-time = "2025-10-15T23:17:05.483Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/00/de/d8e26b1a855f19d9994a19c702fa2e93b0456beccbcfe437eda00e0701f2/cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", size = 4950838, upload-time = "2025-10-15T23:17:07.425Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/8f/29/798fc4ec461a1c9e9f735f2fc58741b0daae30688f41b2497dcbc9ed1355/cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", size = 4481596, upload-time = "2025-10-15T23:17:09.343Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/15/8d/03cd48b20a573adfff7652b76271078e3045b9f49387920e7f1f631d125e/cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", size = 4426782, upload-time = "2025-10-15T23:17:11.22Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/fa/b1/ebacbfe53317d55cf33165bda24c86523497a6881f339f9aae5c2e13e57b/cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", size = 4698381, upload-time = "2025-10-15T23:17:12.829Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/96/92/8a6a9525893325fc057a01f654d7efc2c64b9de90413adcf605a85744ff4/cryptography-46.0.3-cp311-abi3-win32.whl", hash = "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018", size = 3055988, upload-time = "2025-10-15T23:17:14.65Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7e/bf/80fbf45253ea585a1e492a6a17efcb93467701fa79e71550a430c5e60df0/cryptography-46.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb", size = 3514451, upload-time = "2025-10-15T23:17:16.142Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2e/af/9b302da4c87b0beb9db4e756386a7c6c5b8003cd0e742277888d352ae91d/cryptography-46.0.3-cp311-abi3-win_arm64.whl", hash = "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c", size = 2928007, upload-time = "2025-10-15T23:17:18.04Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f5/e2/a510aa736755bffa9d2f75029c229111a1d02f8ecd5de03078f4c18d91a3/cryptography-46.0.3-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217", size = 7158012, upload-time = "2025-10-15T23:17:19.982Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/73/dc/9aa866fbdbb95b02e7f9d086f1fccfeebf8953509b87e3f28fff927ff8a0/cryptography-46.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5", size = 4288728, upload-time = "2025-10-15T23:17:21.527Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c5/fd/bc1daf8230eaa075184cbbf5f8cd00ba9db4fd32d63fb83da4671b72ed8a/cryptography-46.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715", size = 4435078, upload-time = "2025-10-15T23:17:23.042Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/82/98/d3bd5407ce4c60017f8ff9e63ffee4200ab3e23fe05b765cab805a7db008/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54", size = 4293460, upload-time = "2025-10-15T23:17:24.885Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/26/e9/e23e7900983c2b8af7a08098db406cf989d7f09caea7897e347598d4cd5b/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459", size = 3995237, upload-time = "2025-10-15T23:17:26.449Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/91/15/af68c509d4a138cfe299d0d7ddb14afba15233223ebd933b4bbdbc7155d3/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422", size = 4967344, upload-time = "2025-10-15T23:17:28.06Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/ca/e3/8643d077c53868b681af077edf6b3cb58288b5423610f21c62aadcbe99f4/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7", size = 4466564, upload-time = "2025-10-15T23:17:29.665Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/0e/43/c1e8726fa59c236ff477ff2b5dc071e54b21e5a1e51aa2cee1676f1c986f/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044", size = 4292415, upload-time = "2025-10-15T23:17:31.686Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/42/f9/2f8fefdb1aee8a8e3256a0568cffc4e6d517b256a2fe97a029b3f1b9fe7e/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665", size = 4931457, upload-time = "2025-10-15T23:17:33.478Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/79/30/9b54127a9a778ccd6d27c3da7563e9f2d341826075ceab89ae3b41bf5be2/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3", size = 4466074, upload-time = "2025-10-15T23:17:35.158Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/ac/68/b4f4a10928e26c941b1b6a179143af9f4d27d88fe84a6a3c53592d2e76bf/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20", size = 4420569, upload-time = "2025-10-15T23:17:37.188Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a3/49/3746dab4c0d1979888f125226357d3262a6dd40e114ac29e3d2abdf1ec55/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de", size = 4681941, upload-time = "2025-10-15T23:17:39.236Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/fd/30/27654c1dbaf7e4a3531fa1fc77986d04aefa4d6d78259a62c9dc13d7ad36/cryptography-46.0.3-cp314-cp314t-win32.whl", hash = "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914", size = 3022339, upload-time = "2025-10-15T23:17:40.888Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f6/30/640f34ccd4d2a1bc88367b54b926b781b5a018d65f404d409aba76a84b1c/cryptography-46.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db", size = 3494315, upload-time = "2025-10-15T23:17:42.769Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/ba/8b/88cc7e3bd0a8e7b861f26981f7b820e1f46aa9d26cc482d0feba0ecb4919/cryptography-46.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21", size = 2919331, upload-time = "2025-10-15T23:17:44.468Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/fd/23/45fe7f376a7df8daf6da3556603b36f53475a99ce4faacb6ba2cf3d82021/cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", size = 7218248, upload-time = "2025-10-15T23:17:46.294Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/27/32/b68d27471372737054cbd34c84981f9edbc24fe67ca225d389799614e27f/cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", size = 4294089, upload-time = "2025-10-15T23:17:48.269Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/26/42/fa8389d4478368743e24e61eea78846a0006caffaf72ea24a15159215a14/cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", size = 4440029, upload-time = "2025-10-15T23:17:49.837Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/5f/eb/f483db0ec5ac040824f269e93dd2bd8a21ecd1027e77ad7bdf6914f2fd80/cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", size = 4297222, upload-time = "2025-10-15T23:17:51.357Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/fd/cf/da9502c4e1912cb1da3807ea3618a6829bee8207456fbbeebc361ec38ba3/cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", size = 4012280, upload-time = "2025-10-15T23:17:52.964Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/6b/8f/9adb86b93330e0df8b3dcf03eae67c33ba89958fc2e03862ef1ac2b42465/cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", size = 4978958, upload-time = "2025-10-15T23:17:54.965Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d1/a0/5fa77988289c34bdb9f913f5606ecc9ada1adb5ae870bd0d1054a7021cc4/cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", size = 4473714, upload-time = "2025-10-15T23:17:56.754Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/14/e5/fc82d72a58d41c393697aa18c9abe5ae1214ff6f2a5c18ac470f92777895/cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", size = 4296970, upload-time = "2025-10-15T23:17:58.588Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/78/06/5663ed35438d0b09056973994f1aec467492b33bd31da36e468b01ec1097/cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", size = 4940236, upload-time = "2025-10-15T23:18:00.897Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/fc/59/873633f3f2dcd8a053b8dd1d38f783043b5fce589c0f6988bf55ef57e43e/cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", size = 4472642, upload-time = "2025-10-15T23:18:02.749Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/3d/39/8e71f3930e40f6877737d6f69248cf74d4e34b886a3967d32f919cc50d3b/cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", size = 4423126, upload-time = "2025-10-15T23:18:04.85Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/cd/c7/f65027c2810e14c3e7268353b1681932b87e5a48e65505d8cc17c99e36ae/cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", size = 4686573, upload-time = "2025-10-15T23:18:06.908Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/0a/6e/1c8331ddf91ca4730ab3086a0f1be19c65510a33b5a441cb334e7a2d2560/cryptography-46.0.3-cp38-abi3-win32.whl", hash = "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df", size = 3036695, upload-time = "2025-10-15T23:18:08.672Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/90/45/b0d691df20633eff80955a0fc7695ff9051ffce8b69741444bd9ed7bd0db/cryptography-46.0.3-cp38-abi3-win_amd64.whl", hash = "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f", size = 3501720, upload-time = "2025-10-15T23:18:10.632Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/e8/cb/2da4cc83f5edb9c3257d09e1e7ab7b23f049c7962cae8d842bbef0a9cec9/cryptography-46.0.3-cp38-abi3-win_arm64.whl", hash = "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372", size = 2918740, upload-time = "2025-10-15T23:18:12.277Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/06/8a/e60e46adab4362a682cf142c7dcb5bf79b782ab2199b0dcb81f55970807f/cryptography-46.0.3-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7ce938a99998ed3c8aa7e7272dca1a610401ede816d36d0693907d863b10d9ea", size = 3698132, upload-time = "2025-10-15T23:18:17.056Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/da/38/f59940ec4ee91e93d3311f7532671a5cef5570eb04a144bf203b58552d11/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:191bb60a7be5e6f54e30ba16fdfae78ad3a342a0599eb4193ba88e3f3d6e185b", size = 4243992, upload-time = "2025-10-15T23:18:18.695Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/b0/0c/35b3d92ddebfdfda76bb485738306545817253d0a3ded0bfe80ef8e67aa5/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c70cc23f12726be8f8bc72e41d5065d77e4515efae3690326764ea1b07845cfb", size = 4409944, upload-time = "2025-10-15T23:18:20.597Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/99/55/181022996c4063fc0e7666a47049a1ca705abb9c8a13830f074edb347495/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:9394673a9f4de09e28b5356e7fff97d778f8abad85c9d5ac4a4b7e25a0de7717", size = 4242957, upload-time = "2025-10-15T23:18:22.18Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/ba/af/72cd6ef29f9c5f731251acadaeb821559fe25f10852f44a63374c9ca08c1/cryptography-46.0.3-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:94cd0549accc38d1494e1f8de71eca837d0509d0d44bf11d158524b0e12cebf9", size = 4409447, upload-time = "2025-10-15T23:18:24.209Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/0d/c3/e90f4a4feae6410f914f8ebac129b9ae7a8c92eb60a638012dde42030a9d/cryptography-46.0.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6b5063083824e5509fdba180721d55909ffacccc8adbec85268b48439423d78c", size = 3438528, upload-time = "2025-10-15T23:18:26.227Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/0b/5d/4a8f770695d73be252331e60e526291e3df0c9b27556a90a6b47bccca4c2/cryptography-46.0.7-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:ea42cbe97209df307fdc3b155f1b6fa2577c0defa8f1f7d3be7d31d189108ad4", size = 7179869, upload-time = "2026-04-08T01:56:17.157Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/5f/45/6d80dc379b0bbc1f9d1e429f42e4cb9e1d319c7a8201beffd967c516ea01/cryptography-46.0.7-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b36a4695e29fe69215d75960b22577197aca3f7a25b9cf9d165dcfe9d80bc325", size = 4275492, upload-time = "2026-04-08T01:56:19.36Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/4a/9a/1765afe9f572e239c3469f2cb429f3ba7b31878c893b246b4b2994ffe2fe/cryptography-46.0.7-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5ad9ef796328c5e3c4ceed237a183f5d41d21150f972455a9d926593a1dcb308", size = 4426670, upload-time = "2026-04-08T01:56:21.415Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/8f/3e/af9246aaf23cd4ee060699adab1e47ced3f5f7e7a8ffdd339f817b446462/cryptography-46.0.7-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:73510b83623e080a2c35c62c15298096e2a5dc8d51c3b4e1740211839d0dea77", size = 4280275, upload-time = "2026-04-08T01:56:23.539Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/0f/54/6bbbfc5efe86f9d71041827b793c24811a017c6ac0fd12883e4caa86b8ed/cryptography-46.0.7-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cbd5fb06b62bd0721e1170273d3f4d5a277044c47ca27ee257025146c34cbdd1", size = 4928402, upload-time = "2026-04-08T01:56:25.624Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2d/cf/054b9d8220f81509939599c8bdbc0c408dbd2bdd41688616a20731371fe0/cryptography-46.0.7-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:420b1e4109cc95f0e5700eed79908cef9268265c773d3a66f7af1eef53d409ef", size = 4459985, upload-time = "2026-04-08T01:56:27.309Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f9/46/4e4e9c6040fb01c7467d47217d2f882daddeb8828f7df800cb806d8a2288/cryptography-46.0.7-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:24402210aa54baae71d99441d15bb5a1919c195398a87b563df84468160a65de", size = 3990652, upload-time = "2026-04-08T01:56:29.095Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/36/5f/313586c3be5a2fbe87e4c9a254207b860155a8e1f3cca99f9910008e7d08/cryptography-46.0.7-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:8a469028a86f12eb7d2fe97162d0634026d92a21f3ae0ac87ed1c4a447886c83", size = 4279805, upload-time = "2026-04-08T01:56:30.928Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/69/33/60dfc4595f334a2082749673386a4d05e4f0cf4df8248e63b2c3437585f2/cryptography-46.0.7-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9694078c5d44c157ef3162e3bf3946510b857df5a3955458381d1c7cfc143ddb", size = 4892883, upload-time = "2026-04-08T01:56:32.614Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c7/0b/333ddab4270c4f5b972f980adef4faa66951a4aaf646ca067af597f15563/cryptography-46.0.7-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:42a1e5f98abb6391717978baf9f90dc28a743b7d9be7f0751a6f56a75d14065b", size = 4459756, upload-time = "2026-04-08T01:56:34.306Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d2/14/633913398b43b75f1234834170947957c6b623d1701ffc7a9600da907e89/cryptography-46.0.7-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:91bbcb08347344f810cbe49065914fe048949648f6bd5c2519f34619142bbe85", size = 4410244, upload-time = "2026-04-08T01:56:35.977Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/10/f2/19ceb3b3dc14009373432af0c13f46aa08e3ce334ec6eff13492e1812ccd/cryptography-46.0.7-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5d1c02a14ceb9148cc7816249f64f623fbfee39e8c03b3650d842ad3f34d637e", size = 4674868, upload-time = "2026-04-08T01:56:38.034Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1a/bb/a5c213c19ee94b15dfccc48f363738633a493812687f5567addbcbba9f6f/cryptography-46.0.7-cp311-abi3-win32.whl", hash = "sha256:d23c8ca48e44ee015cd0a54aeccdf9f09004eba9fc96f38c911011d9ff1bd457", size = 3026504, upload-time = "2026-04-08T01:56:39.666Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2b/02/7788f9fefa1d060ca68717c3901ae7fffa21ee087a90b7f23c7a603c32ae/cryptography-46.0.7-cp311-abi3-win_amd64.whl", hash = "sha256:397655da831414d165029da9bc483bed2fe0e75dde6a1523ec2fe63f3c46046b", size = 3488363, upload-time = "2026-04-08T01:56:41.893Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7b/56/15619b210e689c5403bb0540e4cb7dbf11a6bf42e483b7644e471a2812b3/cryptography-46.0.7-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:d151173275e1728cf7839aaa80c34fe550c04ddb27b34f48c232193df8db5842", size = 7119671, upload-time = "2026-04-08T01:56:44Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/74/66/e3ce040721b0b5599e175ba91ab08884c75928fbeb74597dd10ef13505d2/cryptography-46.0.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:db0f493b9181c7820c8134437eb8b0b4792085d37dbb24da050476ccb664e59c", size = 4268551, upload-time = "2026-04-08T01:56:46.071Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/03/11/5e395f961d6868269835dee1bafec6a1ac176505a167f68b7d8818431068/cryptography-46.0.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ebd6daf519b9f189f85c479427bbd6e9c9037862cf8fe89ee35503bd209ed902", size = 4408887, upload-time = "2026-04-08T01:56:47.718Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/40/53/8ed1cf4c3b9c8e611e7122fb56f1c32d09e1fff0f1d77e78d9ff7c82653e/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:b7b412817be92117ec5ed95f880defe9cf18a832e8cafacf0a22337dc1981b4d", size = 4271354, upload-time = "2026-04-08T01:56:49.312Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/50/46/cf71e26025c2e767c5609162c866a78e8a2915bbcfa408b7ca495c6140c4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:fbfd0e5f273877695cb93baf14b185f4878128b250cc9f8e617ea0c025dfb022", size = 4905845, upload-time = "2026-04-08T01:56:50.916Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c0/ea/01276740375bac6249d0a971ebdf6b4dc9ead0ee0a34ef3b5a88c1a9b0d4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:ffca7aa1d00cf7d6469b988c581598f2259e46215e0140af408966a24cf086ce", size = 4444641, upload-time = "2026-04-08T01:56:52.882Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/3d/4c/7d258f169ae71230f25d9f3d06caabcff8c3baf0978e2b7d65e0acac3827/cryptography-46.0.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:60627cf07e0d9274338521205899337c5d18249db56865f943cbe753aa96f40f", size = 3967749, upload-time = "2026-04-08T01:56:54.597Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/b5/2a/2ea0767cad19e71b3530e4cad9605d0b5e338b6a1e72c37c9c1ceb86c333/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:80406c3065e2c55d7f49a9550fe0c49b3f12e5bfff5dedb727e319e1afb9bf99", size = 4270942, upload-time = "2026-04-08T01:56:56.416Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/41/3d/fe14df95a83319af25717677e956567a105bb6ab25641acaa093db79975d/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:c5b1ccd1239f48b7151a65bc6dd54bcfcc15e028c8ac126d3fada09db0e07ef1", size = 4871079, upload-time = "2026-04-08T01:56:58.31Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/9c/59/4a479e0f36f8f378d397f4eab4c850b4ffb79a2f0d58704b8fa0703ddc11/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d5f7520159cd9c2154eb61eb67548ca05c5774d39e9c2c4339fd793fe7d097b2", size = 4443999, upload-time = "2026-04-08T01:57:00.508Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/28/17/b59a741645822ec6d04732b43c5d35e4ef58be7bfa84a81e5ae6f05a1d33/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fcd8eac50d9138c1d7fc53a653ba60a2bee81a505f9f8850b6b2888555a45d0e", size = 4399191, upload-time = "2026-04-08T01:57:02.654Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/59/6a/bb2e166d6d0e0955f1e9ff70f10ec4b2824c9cfcdb4da772c7dd69cc7d80/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:65814c60f8cc400c63131584e3e1fad01235edba2614b61fbfbfa954082db0ee", size = 4655782, upload-time = "2026-04-08T01:57:04.592Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/95/b6/3da51d48415bcb63b00dc17c2eff3a651b7c4fed484308d0f19b30e8cb2c/cryptography-46.0.7-cp314-cp314t-win32.whl", hash = "sha256:fdd1736fed309b4300346f88f74cd120c27c56852c3838cab416e7a166f67298", size = 3002227, upload-time = "2026-04-08T01:57:06.91Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/32/a8/9f0e4ed57ec9cebe506e58db11ae472972ecb0c659e4d52bbaee80ca340a/cryptography-46.0.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e06acf3c99be55aa3b516397fe42f5855597f430add9c17fa46bf2e0fb34c9bb", size = 3475332, upload-time = "2026-04-08T01:57:08.807Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a7/7f/cd42fc3614386bc0c12f0cb3c4ae1fc2bbca5c9662dfed031514911d513d/cryptography-46.0.7-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:462ad5cb1c148a22b2e3bcc5ad52504dff325d17daf5df8d88c17dda1f75f2a4", size = 7165618, upload-time = "2026-04-08T01:57:10.645Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a5/d0/36a49f0262d2319139d2829f773f1b97ef8aef7f97e6e5bd21455e5a8fb5/cryptography-46.0.7-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:84d4cced91f0f159a7ddacad249cc077e63195c36aac40b4150e7a57e84fffe7", size = 4270628, upload-time = "2026-04-08T01:57:12.885Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/8a/6c/1a42450f464dda6ffbe578a911f773e54dd48c10f9895a23a7e88b3e7db5/cryptography-46.0.7-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:128c5edfe5e5938b86b03941e94fac9ee793a94452ad1365c9fc3f4f62216832", size = 4415405, upload-time = "2026-04-08T01:57:14.923Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/9a/92/4ed714dbe93a066dc1f4b4581a464d2d7dbec9046f7c8b7016f5286329e2/cryptography-46.0.7-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5e51be372b26ef4ba3de3c167cd3d1022934bc838ae9eaad7e644986d2a3d163", size = 4272715, upload-time = "2026-04-08T01:57:16.638Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/b7/e6/a26b84096eddd51494bba19111f8fffe976f6a09f132706f8f1bf03f51f7/cryptography-46.0.7-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cdf1a610ef82abb396451862739e3fc93b071c844399e15b90726ef7470eeaf2", size = 4918400, upload-time = "2026-04-08T01:57:19.021Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c7/08/ffd537b605568a148543ac3c2b239708ae0bd635064bab41359252ef88ed/cryptography-46.0.7-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1d25aee46d0c6f1a501adcddb2d2fee4b979381346a78558ed13e50aa8a59067", size = 4450634, upload-time = "2026-04-08T01:57:21.185Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/16/01/0cd51dd86ab5b9befe0d031e276510491976c3a80e9f6e31810cce46c4ad/cryptography-46.0.7-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:cdfbe22376065ffcf8be74dc9a909f032df19bc58a699456a21712d6e5eabfd0", size = 3985233, upload-time = "2026-04-08T01:57:22.862Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/92/49/819d6ed3a7d9349c2939f81b500a738cb733ab62fbecdbc1e38e83d45e12/cryptography-46.0.7-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:abad9dac36cbf55de6eb49badd4016806b3165d396f64925bf2999bcb67837ba", size = 4271955, upload-time = "2026-04-08T01:57:24.814Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/80/07/ad9b3c56ebb95ed2473d46df0847357e01583f4c52a85754d1a55e29e4d0/cryptography-46.0.7-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:935ce7e3cfdb53e3536119a542b839bb94ec1ad081013e9ab9b7cfd478b05006", size = 4879888, upload-time = "2026-04-08T01:57:26.88Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/b8/c7/201d3d58f30c4c2bdbe9b03844c291feb77c20511cc3586daf7edc12a47b/cryptography-46.0.7-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:35719dc79d4730d30f1c2b6474bd6acda36ae2dfae1e3c16f2051f215df33ce0", size = 4449961, upload-time = "2026-04-08T01:57:29.068Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a5/ef/649750cbf96f3033c3c976e112265c33906f8e462291a33d77f90356548c/cryptography-46.0.7-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7bbc6ccf49d05ac8f7d7b5e2e2c33830d4fe2061def88210a126d130d7f71a85", size = 4401696, upload-time = "2026-04-08T01:57:31.029Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/41/52/a8908dcb1a389a459a29008c29966c1d552588d4ae6d43f3a1a4512e0ebe/cryptography-46.0.7-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a1529d614f44b863a7b480c6d000fe93b59acee9c82ffa027cfadc77521a9f5e", size = 4664256, upload-time = "2026-04-08T01:57:33.144Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/4b/fa/f0ab06238e899cc3fb332623f337a7364f36f4bb3f2534c2bb95a35b132c/cryptography-46.0.7-cp38-abi3-win32.whl", hash = "sha256:f247c8c1a1fb45e12586afbb436ef21ff1e80670b2861a90353d9b025583d246", size = 3013001, upload-time = "2026-04-08T01:57:34.933Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d2/f1/00ce3bde3ca542d1acd8f8cfa38e446840945aa6363f9b74746394b14127/cryptography-46.0.7-cp38-abi3-win_amd64.whl", hash = "sha256:506c4ff91eff4f82bdac7633318a526b1d1309fc07ca76a3ad182cb5b686d6d3", size = 3472985, upload-time = "2026-04-08T01:57:36.714Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/63/0c/dca8abb64e7ca4f6b2978769f6fea5ad06686a190cec381f0a796fdcaaba/cryptography-46.0.7-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc9ab8856ae6cf7c9358430e49b368f3108f050031442eaeb6b9d87e4dcf4e4f", size = 3476879, upload-time = "2026-04-08T01:57:38.664Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/3a/ea/075aac6a84b7c271578d81a2f9968acb6e273002408729f2ddff517fed4a/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d3b99c535a9de0adced13d159c5a9cf65c325601aa30f4be08afd680643e9c15", size = 4219700, upload-time = "2026-04-08T01:57:40.625Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/6c/7b/1c55db7242b5e5612b29fc7a630e91ee7a6e3c8e7bf5406d22e206875fbd/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d02c738dacda7dc2a74d1b2b3177042009d5cab7c7079db74afc19e56ca1b455", size = 4385982, upload-time = "2026-04-08T01:57:42.725Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/cb/da/9870eec4b69c63ef5925bf7d8342b7e13bc2ee3d47791461c4e49ca212f4/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:04959522f938493042d595a736e7dbdff6eb6cc2339c11465b3ff89343b65f65", size = 4219115, upload-time = "2026-04-08T01:57:44.939Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f4/72/05aa5832b82dd341969e9a734d1812a6aadb088d9eb6f0430fc337cc5a8f/cryptography-46.0.7-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:3986ac1dee6def53797289999eabe84798ad7817f3e97779b5061a95b0ee4968", size = 4385479, upload-time = "2026-04-08T01:57:46.86Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/20/2a/1b016902351a523aa2bd446b50a5bc1175d7a7d1cf90fe2ef904f9b84ebc/cryptography-46.0.7-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:258514877e15963bd43b558917bc9f54cf7cf866c38aa576ebf47a77ddbc43a4", size = 3412829, upload-time = "2026-04-08T01:57:48.874Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -341,29 +338,29 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "django"
|
||||
version = "5.2.9"
|
||||
version = "5.2.13"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "asgiref" },
|
||||
{ name = "sqlparse" },
|
||||
{ name = "tzdata", marker = "sys_platform == 'win32'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/eb/1c/188ce85ee380f714b704283013434976df8d3a2df8e735221a02605b6794/django-5.2.9.tar.gz", hash = "sha256:16b5ccfc5e8c27e6c0561af551d2ea32852d7352c67d452ae3e76b4f6b2ca495", size = 10848762, upload-time = "2025-12-02T14:01:08.418Z" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/1f/c5/c69e338eb2959f641045802e5ea87ca4bf5ac90c5fd08953ca10742fad51/django-5.2.13.tar.gz", hash = "sha256:a31589db5188d074c63f0945c3888fad104627dfcc236fb2b97f71f89da33bc4", size = 10890368, upload-time = "2026-04-07T14:02:15.072Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/17/b0/7f42bfc38b8f19b78546d47147e083ed06e12fc29c42da95655e0962c6c2/django-5.2.9-py3-none-any.whl", hash = "sha256:3a4ea88a70370557ab1930b332fd2887a9f48654261cdffda663fef5976bb00a", size = 8290652, upload-time = "2025-12-02T14:01:03.485Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/59/b1/51ab36b2eefcf8cdb9338c7188668a157e29e30306bfc98a379704c9e10d/django-5.2.13-py3-none-any.whl", hash = "sha256:5788fce61da23788a8ce6f02583765ab060d396720924789f97fa42119d37f7a", size = 8310982, upload-time = "2026-04-07T14:02:08.883Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django-allauth"
|
||||
version = "65.13.1"
|
||||
version = "65.14.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "asgiref" },
|
||||
{ name = "django" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/e0/b7/42a048ba1dedbb6b553f5376a6126b1c753c10c70d1edab8f94c560c8066/django_allauth-65.13.1.tar.gz", hash = "sha256:2af0d07812f8c1a8e3732feaabe6a9db5ecf3fad6b45b6a0f7fd825f656c5a15", size = 1983857, upload-time = "2025-11-20T16:34:40.811Z" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/f0/fc/d36b857ff3e367dc9d09af41d908c0f3c26688e6078ace26a1f29339f860/django_allauth-65.14.3.tar.gz", hash = "sha256:548eef76ab85f6e48f46f98437abf22acf0e834f73e9915fb6cc3f31a0dcdf4d", size = 2029142, upload-time = "2026-02-13T18:40:52.441Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/d8/98/9d44ae1468abfdb521d651fb67f914165c7812dfdd97be16190c9b1cc246/django_allauth-65.13.1-py3-none-any.whl", hash = "sha256:2887294beedfd108b4b52ebd182e0ed373deaeb927fc5a22f77bbde3174704a6", size = 1787349, upload-time = "2025-11-20T16:34:37.354Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/08/7c/0613ef129685b59e4ffbe592788fd76461fb1947743f89d1874b7d70dc83/django_allauth-65.14.3-py3-none-any.whl", hash = "sha256:1d8e1127bdffceb8001bdd9bafbf97661f81e92f4b7bd4f6e799167b0311286d", size = 1828808, upload-time = "2026-02-13T18:41:04.665Z" },
|
||||
]
|
||||
|
||||
[package.optional-dependencies]
|
||||
@@ -655,15 +652,15 @@ django = [
|
||||
|
||||
[[package]]
|
||||
name = "psycopg"
|
||||
version = "3.2.9"
|
||||
version = "3.3.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
||||
{ name = "tzdata", marker = "sys_platform == 'win32'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/27/4a/93a6ab570a8d1a4ad171a1f4256e205ce48d828781312c0bbaff36380ecb/psycopg-3.2.9.tar.gz", hash = "sha256:2fbb46fcd17bc81f993f28c47f1ebea38d66ae97cc2dbc3cad73b37cefbff700", size = 158122, upload-time = "2025-05-13T16:11:15.533Z" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/d3/b6/379d0a960f8f435ec78720462fd94c4863e7a31237cf81bf76d0af5883bf/psycopg-3.3.3.tar.gz", hash = "sha256:5e9a47458b3c1583326513b2556a2a9473a1001a56c9efe9e587245b43148dd9", size = 165624, upload-time = "2026-02-18T16:52:16.546Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/44/b0/a73c195a56eb6b92e937a5ca58521a5c3346fb233345adc80fd3e2f542e2/psycopg-3.2.9-py3-none-any.whl", hash = "sha256:01a8dadccdaac2123c916208c96e06631641c0566b22005493f09663c7a8d3b6", size = 202705, upload-time = "2025-05-13T16:06:26.584Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c8/5b/181e2e3becb7672b502f0ed7f16ed7352aca7c109cfb94cf3878a9186db9/psycopg-3.3.3-py3-none-any.whl", hash = "sha256:f96525a72bcfade6584ab17e89de415ff360748c766f0106959144dcbb38c698", size = 212768, upload-time = "2026-02-18T16:46:27.365Z" },
|
||||
]
|
||||
|
||||
[package.optional-dependencies]
|
||||
@@ -676,42 +673,53 @@ pool = [
|
||||
|
||||
[[package]]
|
||||
name = "psycopg-binary"
|
||||
version = "3.2.9"
|
||||
version = "3.3.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/b6/84/259ea58aca48e03c3c793b4ccfe39ed63db7b8081ef784d039330d9eed96/psycopg_binary-3.2.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2504e9fd94eabe545d20cddcc2ff0da86ee55d76329e1ab92ecfcc6c0a8156c4", size = 4040785, upload-time = "2025-05-13T16:07:07.569Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/25/22/ce58ffda2b7e36e45042b4d67f1bbd4dd2ccf4cfd2649696685c61046475/psycopg_binary-3.2.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:093a0c079dd6228a7f3c3d82b906b41964eaa062a9a8c19f45ab4984bf4e872b", size = 4087601, upload-time = "2025-05-13T16:07:11.75Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c6/4f/b043e85268650c245025e80039b79663d8986f857bc3d3a72b1de67f3550/psycopg_binary-3.2.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:387c87b51d72442708e7a853e7e7642717e704d59571da2f3b29e748be58c78a", size = 4676524, upload-time = "2025-05-13T16:07:17.038Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/da/29/7afbfbd3740ea52fda488db190ef2ef2a9ff7379b85501a2142fb9f7dd56/psycopg_binary-3.2.9-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9ac10a2ebe93a102a326415b330fff7512f01a9401406896e78a81d75d6eddc", size = 4495671, upload-time = "2025-05-13T16:07:21.709Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/ea/eb/df69112d18a938cbb74efa1573082248437fa663ba66baf2cdba8a95a2d0/psycopg_binary-3.2.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72fdbda5b4c2a6a72320857ef503a6589f56d46821592d4377c8c8604810342b", size = 4768132, upload-time = "2025-05-13T16:07:25.818Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/76/fe/4803b20220c04f508f50afee9169268553f46d6eed99640a08c8c1e76409/psycopg_binary-3.2.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f34e88940833d46108f949fdc1fcfb74d6b5ae076550cd67ab59ef47555dba95", size = 4458394, upload-time = "2025-05-13T16:07:29.148Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/0f/0f/5ecc64607ef6f62b04e610b7837b1a802ca6f7cb7211339f5d166d55f1dd/psycopg_binary-3.2.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a3e0f89fe35cb03ff1646ab663dabf496477bab2a072315192dbaa6928862891", size = 3776879, upload-time = "2025-05-13T16:07:32.503Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c8/d8/1c3d6e99b7db67946d0eac2cd15d10a79aa7b1e3222ce4aa8e7df72027f5/psycopg_binary-3.2.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6afb3e62f2a3456f2180a4eef6b03177788df7ce938036ff7f09b696d418d186", size = 3333329, upload-time = "2025-05-13T16:07:35.555Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d7/02/a4e82099816559f558ccaf2b6945097973624dc58d5d1c91eb1e54e5a8e9/psycopg_binary-3.2.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:cc19ed5c7afca3f6b298bfc35a6baa27adb2019670d15c32d0bb8f780f7d560d", size = 3435683, upload-time = "2025-05-13T16:07:37.863Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/91/e4/f27055290d58e8818bed8a297162a096ef7f8ecdf01d98772d4b02af46c4/psycopg_binary-3.2.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bc75f63653ce4ec764c8f8c8b0ad9423e23021e1c34a84eb5f4ecac8538a4a4a", size = 3497124, upload-time = "2025-05-13T16:07:40.567Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/67/3d/17ed07579625529534605eeaeba34f0536754a5667dbf20ea2624fc80614/psycopg_binary-3.2.9-cp311-cp311-win_amd64.whl", hash = "sha256:3db3ba3c470801e94836ad78bf11fd5fab22e71b0c77343a1ee95d693879937a", size = 2939520, upload-time = "2025-05-13T16:07:45.467Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/29/6f/ec9957e37a606cd7564412e03f41f1b3c3637a5be018d0849914cb06e674/psycopg_binary-3.2.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:be7d650a434921a6b1ebe3fff324dbc2364393eb29d7672e638ce3e21076974e", size = 4022205, upload-time = "2025-05-13T16:07:48.195Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/6b/ba/497b8bea72b20a862ac95a94386967b745a472d9ddc88bc3f32d5d5f0d43/psycopg_binary-3.2.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6a76b4722a529390683c0304501f238b365a46b1e5fb6b7249dbc0ad6fea51a0", size = 4083795, upload-time = "2025-05-13T16:07:50.917Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/42/07/af9503e8e8bdad3911fd88e10e6a29240f9feaa99f57d6fac4a18b16f5a0/psycopg_binary-3.2.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96a551e4683f1c307cfc3d9a05fec62c00a7264f320c9962a67a543e3ce0d8ff", size = 4655043, upload-time = "2025-05-13T16:07:54.857Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/28/ed/aff8c9850df1648cc6a5cc7a381f11ee78d98a6b807edd4a5ae276ad60ad/psycopg_binary-3.2.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61d0a6ceed8f08c75a395bc28cb648a81cf8dee75ba4650093ad1a24a51c8724", size = 4477972, upload-time = "2025-05-13T16:07:57.925Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/5c/bd/8e9d1b77ec1a632818fe2f457c3a65af83c68710c4c162d6866947d08cc5/psycopg_binary-3.2.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad280bbd409bf598683dda82232f5215cfc5f2b1bf0854e409b4d0c44a113b1d", size = 4737516, upload-time = "2025-05-13T16:08:01.616Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/46/ec/222238f774cd5a0881f3f3b18fb86daceae89cc410f91ef6a9fb4556f236/psycopg_binary-3.2.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76eddaf7fef1d0994e3d536ad48aa75034663d3a07f6f7e3e601105ae73aeff6", size = 4436160, upload-time = "2025-05-13T16:08:04.278Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/37/78/af5af2a1b296eeca54ea7592cd19284739a844974c9747e516707e7b3b39/psycopg_binary-3.2.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:52e239cd66c4158e412318fbe028cd94b0ef21b0707f56dcb4bdc250ee58fd40", size = 3753518, upload-time = "2025-05-13T16:08:07.567Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/ec/ac/8a3ed39ea069402e9e6e6a2f79d81a71879708b31cc3454283314994b1ae/psycopg_binary-3.2.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:08bf9d5eabba160dd4f6ad247cf12f229cc19d2458511cab2eb9647f42fa6795", size = 3313598, upload-time = "2025-05-13T16:08:09.999Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/da/43/26549af068347c808fbfe5f07d2fa8cef747cfff7c695136172991d2378b/psycopg_binary-3.2.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1b2cf018168cad87580e67bdde38ff5e51511112f1ce6ce9a8336871f465c19a", size = 3407289, upload-time = "2025-05-13T16:08:12.66Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/67/55/ea8d227c77df8e8aec880ded398316735add8fda5eb4ff5cc96fac11e964/psycopg_binary-3.2.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:14f64d1ac6942ff089fc7e926440f7a5ced062e2ed0949d7d2d680dc5c00e2d4", size = 3472493, upload-time = "2025-05-13T16:08:15.672Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/3c/02/6ff2a5bc53c3cd653d281666728e29121149179c73fddefb1e437024c192/psycopg_binary-3.2.9-cp312-cp312-win_amd64.whl", hash = "sha256:7a838852e5afb6b4126f93eb409516a8c02a49b788f4df8b6469a40c2157fa21", size = 2927400, upload-time = "2025-05-13T16:08:18.652Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/28/0b/f61ff4e9f23396aca674ed4d5c9a5b7323738021d5d72d36d8b865b3deaf/psycopg_binary-3.2.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:98bbe35b5ad24a782c7bf267596638d78aa0e87abc7837bdac5b2a2ab954179e", size = 4017127, upload-time = "2025-05-13T16:08:21.391Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/bc/00/7e181fb1179fbfc24493738b61efd0453d4b70a0c4b12728e2b82db355fd/psycopg_binary-3.2.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:72691a1615ebb42da8b636c5ca9f2b71f266be9e172f66209a361c175b7842c5", size = 4080322, upload-time = "2025-05-13T16:08:24.049Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/58/fd/94fc267c1d1392c4211e54ccb943be96ea4032e761573cf1047951887494/psycopg_binary-3.2.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25ab464bfba8c401f5536d5aa95f0ca1dd8257b5202eede04019b4415f491351", size = 4655097, upload-time = "2025-05-13T16:08:27.376Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/41/17/31b3acf43de0b2ba83eac5878ff0dea5a608ca2a5c5dd48067999503a9de/psycopg_binary-3.2.9-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e8aeefebe752f46e3c4b769e53f1d4ad71208fe1150975ef7662c22cca80fab", size = 4482114, upload-time = "2025-05-13T16:08:30.781Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/85/78/b4d75e5fd5a85e17f2beb977abbba3389d11a4536b116205846b0e1cf744/psycopg_binary-3.2.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7e4e4dd177a8665c9ce86bc9caae2ab3aa9360b7ce7ec01827ea1baea9ff748", size = 4737693, upload-time = "2025-05-13T16:08:34.625Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/3b/95/7325a8550e3388b00b5e54f4ced5e7346b531eb4573bf054c3dbbfdc14fe/psycopg_binary-3.2.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fc2915949e5c1ea27a851f7a472a7da7d0a40d679f0a31e42f1022f3c562e87", size = 4437423, upload-time = "2025-05-13T16:08:37.444Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1a/db/cef77d08e59910d483df4ee6da8af51c03bb597f500f1fe818f0f3b925d3/psycopg_binary-3.2.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a1fa38a4687b14f517f049477178093c39c2a10fdcced21116f47c017516498f", size = 3758667, upload-time = "2025-05-13T16:08:40.116Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/95/3e/252fcbffb47189aa84d723b54682e1bb6d05c8875fa50ce1ada914ae6e28/psycopg_binary-3.2.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5be8292d07a3ab828dc95b5ee6b69ca0a5b2e579a577b39671f4f5b47116dfd2", size = 3320576, upload-time = "2025-05-13T16:08:43.243Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/1c/cd/9b5583936515d085a1bec32b45289ceb53b80d9ce1cea0fef4c782dc41a7/psycopg_binary-3.2.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:778588ca9897b6c6bab39b0d3034efff4c5438f5e3bd52fda3914175498202f9", size = 3411439, upload-time = "2025-05-13T16:08:47.321Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/45/6b/6f1164ea1634c87956cdb6db759e0b8c5827f989ee3cdff0f5c70e8331f2/psycopg_binary-3.2.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f0d5b3af045a187aedbd7ed5fc513bd933a97aaff78e61c3745b330792c4345b", size = 3477477, upload-time = "2025-05-13T16:08:51.166Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7b/1d/bf54cfec79377929da600c16114f0da77a5f1670f45e0c3af9fcd36879bc/psycopg_binary-3.2.9-cp313-cp313-win_amd64.whl", hash = "sha256:2290bc146a1b6a9730350f695e8b670e1d1feb8446597bed0bbe7c3c30e0abcb", size = 2928009, upload-time = "2025-05-13T16:08:53.67Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/be/c0/b389119dd754483d316805260f3e73cdcad97925839107cc7a296f6132b1/psycopg_binary-3.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a89bb9ee11177b2995d87186b1d9fa892d8ea725e85eab28c6525e4cc14ee048", size = 4609740, upload-time = "2026-02-18T16:47:51.093Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/cf/e3/9976eef20f61840285174d360da4c820a311ab39d6b82fa09fbb545be825/psycopg_binary-3.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f7d0cf072c6fbac3795b08c98ef9ea013f11db609659dcfc6b1f6cc31f9e181", size = 4676837, upload-time = "2026-02-18T16:47:55.523Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/9f/f2/d28ba2f7404fd7f68d41e8a11df86313bd646258244cb12a8dd83b868a97/psycopg_binary-3.3.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:90eecd93073922f085967f3ed3a98ba8c325cbbc8c1a204e300282abd2369e13", size = 5497070, upload-time = "2026-02-18T16:47:59.929Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/de/2f/6c5c54b815edeb30a281cfcea96dc93b3bb6be939aea022f00cab7aa1420/psycopg_binary-3.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dac7ee2f88b4d7bb12837989ca354c38d400eeb21bce3b73dac02622f0a3c8d6", size = 5172410, upload-time = "2026-02-18T16:48:05.665Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/51/75/8206c7008b57de03c1ada46bd3110cc3743f3fd9ed52031c4601401d766d/psycopg_binary-3.3.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b62cf8784eb6d35beaee1056d54caf94ec6ecf2b7552395e305518ab61eb8fd2", size = 6763408, upload-time = "2026-02-18T16:48:13.541Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d4/5a/ea1641a1e6c8c8b3454b0fcb43c3045133a8b703e6e824fae134088e63bd/psycopg_binary-3.3.3-cp311-cp311-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a39f34c9b18e8f6794cca17bfbcd64572ca2482318db644268049f8c738f35a6", size = 5006255, upload-time = "2026-02-18T16:48:22.176Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/aa/fb/538df099bf55ae1637d52d7ccb6b9620b535a40f4c733897ac2b7bb9e14c/psycopg_binary-3.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:883d68d48ca9ff3cb3d10c5fdebea02c79b48eecacdddbf7cce6e7cdbdc216b8", size = 4532694, upload-time = "2026-02-18T16:48:27.338Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a1/d1/00780c0e187ea3c13dfc53bd7060654b2232cd30df562aac91a5f1c545ac/psycopg_binary-3.3.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:cab7bc3d288d37a80aa8c0820033250c95e40b1c2b5c57cf59827b19c2a8b69d", size = 4222833, upload-time = "2026-02-18T16:48:31.221Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7a/34/a07f1ff713c51d64dc9f19f2c32be80299a2055d5d109d5853662b922cb4/psycopg_binary-3.3.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:56c767007ca959ca32f796b42379fc7e1ae2ed085d29f20b05b3fc394f3715cc", size = 3952818, upload-time = "2026-02-18T16:48:35.869Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d3/67/d33f268a7759b4445f3c9b5a181039b01af8c8263c865c1be7a6444d4749/psycopg_binary-3.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:da2f331a01af232259a21573a01338530c6016dcfad74626c01330535bcd8628", size = 4258061, upload-time = "2026-02-18T16:48:41.365Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/b4/3b/0d8d2c5e8e29ccc07d28c8af38445d9d9abcd238d590186cac82ee71fc84/psycopg_binary-3.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:19f93235ece6dbfc4036b5e4f6d8b13f0b8f2b3eeb8b0bd2936d406991bcdd40", size = 3558915, upload-time = "2026-02-18T16:48:46.679Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/90/15/021be5c0cbc5b7c1ab46e91cc3434eb42569f79a0592e67b8d25e66d844d/psycopg_binary-3.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6698dbab5bcef8fdb570fc9d35fd9ac52041771bfcfe6fd0fc5f5c4e36f1e99d", size = 4591170, upload-time = "2026-02-18T16:48:55.594Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f1/54/a60211c346c9a2f8c6b272b5f2bbe21f6e11800ce7f61e99ba75cf8b63e1/psycopg_binary-3.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:329ff393441e75f10b673ae99ab45276887993d49e65f141da20d915c05aafd8", size = 4670009, upload-time = "2026-02-18T16:49:03.608Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c1/53/ac7c18671347c553362aadbf65f92786eef9540676ca24114cc02f5be405/psycopg_binary-3.3.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:eb072949b8ebf4082ae24289a2b0fd724da9adc8f22743409d6fd718ddb379df", size = 5469735, upload-time = "2026-02-18T16:49:10.128Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/7f/c3/4f4e040902b82a344eff1c736cde2f2720f127fe939c7e7565706f96dd44/psycopg_binary-3.3.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:263a24f39f26e19ed7fc982d7859a36f17841b05bebad3eb47bb9cd2dd785351", size = 5152919, upload-time = "2026-02-18T16:49:16.335Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/0c/e7/d929679c6a5c212bcf738806c7c89f5b3d0919f2e1685a0e08d6ff877945/psycopg_binary-3.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5152d50798c2fa5bd9b68ec68eb68a1b71b95126c1d70adaa1a08cd5eefdc23d", size = 6738785, upload-time = "2026-02-18T16:49:22.687Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/69/b0/09703aeb69a9443d232d7b5318d58742e8ca51ff79f90ffe6b88f1db45e7/psycopg_binary-3.3.3-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9d6a1e56dd267848edb824dbeb08cf5bac649e02ee0b03ba883ba3f4f0bd54f2", size = 4979008, upload-time = "2026-02-18T16:49:27.313Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/cc/a6/e662558b793c6e13a7473b970fee327d635270e41eded3090ef14045a6a5/psycopg_binary-3.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73eaaf4bb04709f545606c1db2f65f4000e8a04cdbf3e00d165a23004692093e", size = 4508255, upload-time = "2026-02-18T16:49:31.575Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/5f/7f/0f8b2e1d5e0093921b6f324a948a5c740c1447fbb45e97acaf50241d0f39/psycopg_binary-3.3.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:162e5675efb4704192411eaf8e00d07f7960b679cd3306e7efb120bb8d9456cc", size = 4189166, upload-time = "2026-02-18T16:49:35.801Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/92/ec/ce2e91c33bc8d10b00c87e2f6b0fb570641a6a60042d6a9ae35658a3a797/psycopg_binary-3.3.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:fab6b5e37715885c69f5d091f6ff229be71e235f272ebaa35158d5a46fd548a0", size = 3924544, upload-time = "2026-02-18T16:49:41.129Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c5/2f/7718141485f73a924205af60041c392938852aa447a94c8cbd222ff389a1/psycopg_binary-3.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a4aab31bd6d1057f287c96c0effca3a25584eb9cc702f282ecb96ded7814e830", size = 4235297, upload-time = "2026-02-18T16:49:46.726Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/57/f9/1add717e2643a003bbde31b1b220172e64fbc0cb09f06429820c9173f7fc/psycopg_binary-3.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:59aa31fe11a0e1d1bcc2ce37ed35fe2ac84cd65bb9036d049b1a1c39064d0f14", size = 3547659, upload-time = "2026-02-18T16:49:52.999Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/03/0a/cac9fdf1df16a269ba0e5f0f06cac61f826c94cadb39df028cdfe19d3a33/psycopg_binary-3.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05f32239aec25c5fb15f7948cffdc2dc0dac098e48b80a140e4ba32b572a2e7d", size = 4590414, upload-time = "2026-02-18T16:50:01.441Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/9c/c0/d8f8508fbf440edbc0099b1abff33003cd80c9e66eb3a1e78834e3fb4fb9/psycopg_binary-3.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7c84f9d214f2d1de2fafebc17fa68ac3f6561a59e291553dfc45ad299f4898c1", size = 4669021, upload-time = "2026-02-18T16:50:08.803Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/04/05/097016b77e343b4568feddf12c72171fc513acef9a4214d21b9478569068/psycopg_binary-3.3.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e77957d2ba17cada11be09a5066d93026cdb61ada7c8893101d7fe1c6e1f3925", size = 5467453, upload-time = "2026-02-18T16:50:14.985Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/91/23/73244e5feb55b5ca109cede6e97f32ef45189f0fdac4c80d75c99862729d/psycopg_binary-3.3.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:42961609ac07c232a427da7c87a468d3c82fee6762c220f38e37cfdacb2b178d", size = 5151135, upload-time = "2026-02-18T16:50:24.82Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/11/49/5309473b9803b207682095201d8708bbc7842ddf3f192488a69204e36455/psycopg_binary-3.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ae07a3114313dd91fce686cab2f4c44af094398519af0e0f854bc707e1aeedf1", size = 6737315, upload-time = "2026-02-18T16:50:35.106Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/d4/5d/03abe74ef34d460b33c4d9662bf6ec1dd38888324323c1a1752133c10377/psycopg_binary-3.3.3-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d257c58d7b36a621dcce1d01476ad8b60f12d80eb1406aee4cf796f88b2ae482", size = 4979783, upload-time = "2026-02-18T16:50:42.067Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f0/6c/3fbf8e604e15f2f3752900434046c00c90bb8764305a1b81112bff30ba24/psycopg_binary-3.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:07c7211f9327d522c9c47560cae00a4ecf6687f4e02d779d035dd3177b41cb12", size = 4509023, upload-time = "2026-02-18T16:50:50.116Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/9c/6b/1a06b43b7c7af756c80b67eac8bfaa51d77e68635a8a8d246e4f0bb7604a/psycopg_binary-3.3.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:8e7e9eca9b363dbedeceeadd8be97149d2499081f3c52d141d7cd1f395a91f83", size = 4185874, upload-time = "2026-02-18T16:50:55.97Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2b/d3/bf49e3dcaadba510170c8d111e5e69e5ae3f981c1554c5bb71c75ce354bb/psycopg_binary-3.3.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:cb85b1d5702877c16f28d7b92ba030c1f49ebcc9b87d03d8c10bf45a2f1c7508", size = 3925668, upload-time = "2026-02-18T16:51:03.299Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/f8/92/0aac830ed6a944fe334404e1687a074e4215630725753f0e3e9a9a595b62/psycopg_binary-3.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4d4606c84d04b80f9138d72f1e28c6c02dc5ae0c7b8f3f8aaf89c681ce1cd1b1", size = 4234973, upload-time = "2026-02-18T16:51:09.097Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2e/96/102244653ee5a143ece5afe33f00f52fe64e389dfce8dbc87580c6d70d3d/psycopg_binary-3.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:74eae563166ebf74e8d950ff359be037b85723d99ca83f57d9b244a871d6c13b", size = 3551342, upload-time = "2026-02-18T16:51:13.892Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/a2/71/7a57e5b12275fe7e7d84d54113f0226080423a869118419c9106c083a21c/psycopg_binary-3.3.3-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:497852c5eaf1f0c2d88ab74a64a8097c099deac0c71de1cbcf18659a8a04a4b2", size = 4607368, upload-time = "2026-02-18T16:51:19.295Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c7/04/cb834f120f2b2c10d4003515ef9ca9d688115b9431735e3936ae48549af8/psycopg_binary-3.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:258d1ea53464d29768bf25930f43291949f4c7becc706f6e220c515a63a24edd", size = 4687047, upload-time = "2026-02-18T16:51:23.84Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/40/e9/47a69692d3da9704468041aa5ed3ad6fc7f6bb1a5ae788d261a26bbca6c7/psycopg_binary-3.3.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:111c59897a452196116db12e7f608da472fbff000693a21040e35fc978b23430", size = 5487096, upload-time = "2026-02-18T16:51:29.645Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/0b/b6/0e0dd6a2f802864a4ae3dbadf4ec620f05e3904c7842b326aafc43e5f464/psycopg_binary-3.3.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:17bb6600e2455993946385249a3c3d0af52cd70c1c1cdbf712e9d696d0b0bf1b", size = 5168720, upload-time = "2026-02-18T16:51:36.499Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/6f/0d/977af38ac19a6b55d22dff508bd743fd7c1901e1b73657e7937c7cccb0a3/psycopg_binary-3.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:642050398583d61c9856210568eb09a8e4f2fe8224bf3be21b67a370e677eead", size = 6762076, upload-time = "2026-02-18T16:51:43.167Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/34/40/912a39d48322cf86895c0eaf2d5b95cb899402443faefd4b09abbba6b6e1/psycopg_binary-3.3.3-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:533efe6dc3a7cba5e2a84e38970786bb966306863e45f3db152007e9f48638a6", size = 4997623, upload-time = "2026-02-18T16:51:47.707Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/98/0c/c14d0e259c65dc7be854d926993f151077887391d5a081118907a9d89603/psycopg_binary-3.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5958dbf28b77ce2033482f6cb9ef04d43f5d8f4b7636e6963d5626f000efb23e", size = 4532096, upload-time = "2026-02-18T16:51:51.421Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/39/21/8b7c50a194cfca6ea0fd4d1f276158307785775426e90700ab2eba5cd623/psycopg_binary-3.3.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:a6af77b6626ce92b5817bf294b4d45ec1a6161dba80fc2d82cdffdd6814fd023", size = 4208884, upload-time = "2026-02-18T16:51:57.336Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/c7/2c/a4981bf42cf30ebba0424971d7ce70a222ae9b82594c42fc3f2105d7b525/psycopg_binary-3.3.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:47f06fcbe8542b4d96d7392c476a74ada521c5aebdb41c3c0155f6595fc14c8d", size = 3944542, upload-time = "2026-02-18T16:52:04.266Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/60/e9/b7c29b56aa0b85a4e0c4d89db691c1ceef08f46a356369144430c155a2f5/psycopg_binary-3.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e7800e6c6b5dc4b0ca7cc7370f770f53ac83886b76afda0848065a674231e856", size = 4254339, upload-time = "2026-02-18T16:52:10.444Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/98/5a/291d89f44d3820fffb7a04ebc8f3ef5dda4f542f44a5daea0c55a84abf45/psycopg_binary-3.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:165f22ab5a9513a3d7425ffb7fcc7955ed8ccaeef6d37e369d6cc1dff1582383", size = 3652796, upload-time = "2026-02-18T16:52:14.02Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -849,11 +857,11 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "pyjwt"
|
||||
version = "2.10.1"
|
||||
version = "2.12.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload-time = "2024-11-28T03:43:29.933Z" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/a8/10/e8192be5f38f3e8e7e046716de4cae33d56fd5ae08927a823bb916be36c1/pyjwt-2.12.0.tar.gz", hash = "sha256:2f62390b667cd8257de560b850bb5a883102a388829274147f1d724453f8fb02", size = 102511, upload-time = "2026-03-12T17:15:30.831Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload-time = "2024-11-28T03:43:27.893Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/15/70/70f895f404d363d291dcf62c12c85fdd47619ad9674ac0f53364d035925a/pyjwt-2.12.0-py3-none-any.whl", hash = "sha256:9bb459d1bdd0387967d287f5656bf7ec2b9a26645d1961628cda1764e087fd6e", size = 29700, upload-time = "2026-03-12T17:15:29.257Z" },
|
||||
]
|
||||
|
||||
[package.optional-dependencies]
|
||||
@@ -953,7 +961,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "requests"
|
||||
version = "2.32.5"
|
||||
version = "2.33.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "certifi" },
|
||||
@@ -961,9 +969,9 @@ dependencies = [
|
||||
{ name = "idna" },
|
||||
{ name = "urllib3" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/34/64/8860370b167a9721e8956ae116825caff829224fbca0ca6e7bf8ddef8430/requests-2.33.0.tar.gz", hash = "sha256:c7ebc5e8b0f21837386ad0e1c8fe8b829fa5f544d8df3b2253bff14ef29d7652", size = 134232, upload-time = "2026-03-25T15:10:41.586Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl", hash = "sha256:3324635456fa185245e24865e810cecec7b4caf933d7eb133dcde67d48cee69b", size = 65017, upload-time = "2026-03-25T15:10:40.382Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1076,11 +1084,11 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "simpleeval"
|
||||
version = "1.0.3"
|
||||
version = "1.0.5"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358, upload-time = "2024-11-02T10:29:46.912Z" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/92/ea/42430694f12bfb20ac00f1c4ae0e489ef23b302ea6abe6266934bb749bf6/simpleeval-1.0.5.tar.gz", hash = "sha256:b6b7933fffe13a345ada9917f8579c72e7b8afcfb7f7759b18fdd068aaa60486", size = 40853, upload-time = "2026-03-13T09:22:49.449Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762, upload-time = "2024-11-02T10:29:45.706Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/2e/9c/43d7a2845fdf72f21572a0d7c33076cb69c2c73db9a297a5bfc6b87ebb54/simpleeval-1.0.5-py3-none-any.whl", hash = "sha256:c0de42a9f7849b7bc8c51338295341126f103a2a86beceffebafd9388e3cdfce", size = 18608, upload-time = "2026-03-13T09:22:47.875Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1151,11 +1159,11 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "urllib3"
|
||||
version = "2.6.2"
|
||||
version = "2.6.3"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hash = "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797", size = 432930, upload-time = "2025-12-11T15:56:40.252Z" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl", hash = "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd", size = 131182, upload-time = "2025-12-11T15:56:38.584Z" },
|
||||
{ url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1297,8 +1305,8 @@ dependencies = [
|
||||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "crispy-bootstrap5", specifier = "==2025.6" },
|
||||
{ name = "django", specifier = "~=5.2.9" },
|
||||
{ name = "django-allauth", extras = ["socialaccount"], specifier = "~=65.13.1" },
|
||||
{ name = "django", specifier = "~=5.2.13" },
|
||||
{ name = "django-allauth", extras = ["socialaccount"], specifier = "~=65.14.1" },
|
||||
{ name = "django-browser-reload", specifier = "==1.21.0" },
|
||||
{ name = "django-cachalot", specifier = "~=2.8.0" },
|
||||
{ name = "django-cotton", specifier = "<2.3.0" },
|
||||
@@ -1315,12 +1323,12 @@ requires-dist = [
|
||||
{ name = "mistune", specifier = "~=3.1.3" },
|
||||
{ name = "openpyxl", specifier = "~=3.1.5" },
|
||||
{ name = "procrastinate", extras = ["django"], specifier = "~=3.5.3" },
|
||||
{ name = "psycopg", extras = ["binary", "pool"], specifier = "==3.2.9" },
|
||||
{ name = "psycopg", extras = ["binary", "pool"], specifier = "==3.3.3" },
|
||||
{ name = "pydantic", specifier = "~=2.12.3" },
|
||||
{ name = "python-dateutil", specifier = "~=2.9.0.post0" },
|
||||
{ name = "pytz", specifier = ">=2025.2" },
|
||||
{ name = "pyyaml", specifier = "~=6.0.2" },
|
||||
{ name = "requests", specifier = "~=2.32.5" },
|
||||
{ name = "requests", specifier = "~=2.33.0" },
|
||||
{ name = "simpleeval", specifier = "~=1.0.3" },
|
||||
{ name = "watchfiles", specifier = "==1.1.1" },
|
||||
{ name = "whitenoise", extras = ["brotli"], specifier = "==6.11.0" },
|
||||
|
||||
Reference in New Issue
Block a user