chore: automatic commit 2025-04-30 12:48
This commit is contained in:
79
venv/lib/python3.11/site-packages/wtforms/__init__.py
Normal file
79
venv/lib/python3.11/site-packages/wtforms/__init__.py
Normal file
@@ -0,0 +1,79 @@
|
||||
from wtforms import validators
|
||||
from wtforms import widgets
|
||||
from wtforms.fields.choices import RadioField
|
||||
from wtforms.fields.choices import SelectField
|
||||
from wtforms.fields.choices import SelectFieldBase
|
||||
from wtforms.fields.choices import SelectMultipleField
|
||||
from wtforms.fields.core import Field
|
||||
from wtforms.fields.core import Flags
|
||||
from wtforms.fields.core import Label
|
||||
from wtforms.fields.datetime import DateField
|
||||
from wtforms.fields.datetime import DateTimeField
|
||||
from wtforms.fields.datetime import DateTimeLocalField
|
||||
from wtforms.fields.datetime import MonthField
|
||||
from wtforms.fields.datetime import TimeField
|
||||
from wtforms.fields.datetime import WeekField
|
||||
from wtforms.fields.form import FormField
|
||||
from wtforms.fields.list import FieldList
|
||||
from wtforms.fields.numeric import DecimalField
|
||||
from wtforms.fields.numeric import DecimalRangeField
|
||||
from wtforms.fields.numeric import FloatField
|
||||
from wtforms.fields.numeric import IntegerField
|
||||
from wtforms.fields.numeric import IntegerRangeField
|
||||
from wtforms.fields.simple import BooleanField
|
||||
from wtforms.fields.simple import ColorField
|
||||
from wtforms.fields.simple import EmailField
|
||||
from wtforms.fields.simple import FileField
|
||||
from wtforms.fields.simple import HiddenField
|
||||
from wtforms.fields.simple import MultipleFileField
|
||||
from wtforms.fields.simple import PasswordField
|
||||
from wtforms.fields.simple import SearchField
|
||||
from wtforms.fields.simple import StringField
|
||||
from wtforms.fields.simple import SubmitField
|
||||
from wtforms.fields.simple import TelField
|
||||
from wtforms.fields.simple import TextAreaField
|
||||
from wtforms.fields.simple import URLField
|
||||
from wtforms.form import Form
|
||||
from wtforms.validators import ValidationError
|
||||
|
||||
__version__ = "3.2.1"
|
||||
|
||||
__all__ = [
|
||||
"validators",
|
||||
"widgets",
|
||||
"Form",
|
||||
"ValidationError",
|
||||
"SelectField",
|
||||
"SelectMultipleField",
|
||||
"SelectFieldBase",
|
||||
"RadioField",
|
||||
"Field",
|
||||
"Flags",
|
||||
"Label",
|
||||
"DateTimeField",
|
||||
"DateField",
|
||||
"TimeField",
|
||||
"MonthField",
|
||||
"DateTimeLocalField",
|
||||
"WeekField",
|
||||
"FormField",
|
||||
"FieldList",
|
||||
"IntegerField",
|
||||
"DecimalField",
|
||||
"FloatField",
|
||||
"IntegerRangeField",
|
||||
"DecimalRangeField",
|
||||
"BooleanField",
|
||||
"TextAreaField",
|
||||
"PasswordField",
|
||||
"FileField",
|
||||
"MultipleFileField",
|
||||
"HiddenField",
|
||||
"SearchField",
|
||||
"SubmitField",
|
||||
"StringField",
|
||||
"TelField",
|
||||
"URLField",
|
||||
"EmailField",
|
||||
"ColorField",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
96
venv/lib/python3.11/site-packages/wtforms/csrf/core.py
Normal file
96
venv/lib/python3.11/site-packages/wtforms/csrf/core.py
Normal file
@@ -0,0 +1,96 @@
|
||||
from wtforms.fields import HiddenField
|
||||
from wtforms.validators import ValidationError
|
||||
|
||||
__all__ = ("CSRFTokenField", "CSRF")
|
||||
|
||||
|
||||
class CSRFTokenField(HiddenField):
|
||||
"""
|
||||
A subclass of HiddenField designed for sending the CSRF token that is used
|
||||
for most CSRF protection schemes.
|
||||
|
||||
Notably different from a normal field, this field always renders the
|
||||
current token regardless of the submitted value, and also will not be
|
||||
populated over to object data via populate_obj
|
||||
"""
|
||||
|
||||
current_token = None
|
||||
|
||||
def __init__(self, *args, **kw):
|
||||
self.csrf_impl = kw.pop("csrf_impl")
|
||||
super().__init__(*args, **kw)
|
||||
|
||||
def _value(self):
|
||||
"""
|
||||
We want to always return the current token on render, regardless of
|
||||
whether a good or bad token was passed.
|
||||
"""
|
||||
return self.current_token
|
||||
|
||||
def populate_obj(self, *args):
|
||||
"""
|
||||
Don't populate objects with the CSRF token
|
||||
"""
|
||||
pass
|
||||
|
||||
def pre_validate(self, form):
|
||||
"""
|
||||
Handle validation of this token field.
|
||||
"""
|
||||
self.csrf_impl.validate_csrf_token(form, self)
|
||||
|
||||
def process(self, *args, **kwargs):
|
||||
super().process(*args, **kwargs)
|
||||
self.current_token = self.csrf_impl.generate_csrf_token(self)
|
||||
|
||||
|
||||
class CSRF:
|
||||
field_class = CSRFTokenField
|
||||
|
||||
def setup_form(self, form):
|
||||
"""
|
||||
Receive the form we're attached to and set up fields.
|
||||
|
||||
The default implementation creates a single field of
|
||||
type :attr:`field_class` with name taken from the
|
||||
``csrf_field_name`` of the class meta.
|
||||
|
||||
:param form:
|
||||
The form instance we're attaching to.
|
||||
:return:
|
||||
A sequence of `(field_name, unbound_field)` 2-tuples which
|
||||
are unbound fields to be added to the form.
|
||||
"""
|
||||
meta = form.meta
|
||||
field_name = meta.csrf_field_name
|
||||
unbound_field = self.field_class(label="CSRF Token", csrf_impl=self)
|
||||
return [(field_name, unbound_field)]
|
||||
|
||||
def generate_csrf_token(self, csrf_token_field):
|
||||
"""
|
||||
Implementations must override this to provide a method with which one
|
||||
can get a CSRF token for this form.
|
||||
|
||||
A CSRF token is usually a string that is generated deterministically
|
||||
based on some sort of user data, though it can be anything which you
|
||||
can validate on a subsequent request.
|
||||
|
||||
:param csrf_token_field:
|
||||
The field which is being used for CSRF.
|
||||
:return:
|
||||
A generated CSRF string.
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
def validate_csrf_token(self, form, field):
|
||||
"""
|
||||
Override this method to provide custom CSRF validation logic.
|
||||
|
||||
The default CSRF validation logic simply checks if the recently
|
||||
generated token equals the one we received as formdata.
|
||||
|
||||
:param form: The form which has this CSRF token.
|
||||
:param field: The CSRF token field.
|
||||
"""
|
||||
if field.current_token != field.data:
|
||||
raise ValidationError(field.gettext("Invalid CSRF Token."))
|
||||
93
venv/lib/python3.11/site-packages/wtforms/csrf/session.py
Normal file
93
venv/lib/python3.11/site-packages/wtforms/csrf/session.py
Normal file
@@ -0,0 +1,93 @@
|
||||
"""
|
||||
A provided CSRF implementation which puts CSRF data in a session.
|
||||
|
||||
This can be used fairly comfortably with many `request.session` type
|
||||
objects, including the Werkzeug/Flask session store, Django sessions, and
|
||||
potentially other similar objects which use a dict-like API for storing
|
||||
session keys.
|
||||
|
||||
The basic concept is a randomly generated value is stored in the user's
|
||||
session, and an hmac-sha1 of it (along with an optional expiration time,
|
||||
for extra security) is used as the value of the csrf_token. If this token
|
||||
validates with the hmac of the random value + expiration time, and the
|
||||
expiration time is not passed, the CSRF validation will pass.
|
||||
"""
|
||||
|
||||
import hmac
|
||||
import os
|
||||
from datetime import datetime
|
||||
from datetime import timedelta
|
||||
from hashlib import sha1
|
||||
|
||||
from ..validators import ValidationError
|
||||
from .core import CSRF
|
||||
|
||||
__all__ = ("SessionCSRF",)
|
||||
|
||||
|
||||
class SessionCSRF(CSRF):
|
||||
TIME_FORMAT = "%Y%m%d%H%M%S"
|
||||
|
||||
def setup_form(self, form):
|
||||
self.form_meta = form.meta
|
||||
return super().setup_form(form)
|
||||
|
||||
def generate_csrf_token(self, csrf_token_field):
|
||||
meta = self.form_meta
|
||||
if meta.csrf_secret is None:
|
||||
raise Exception(
|
||||
"must set `csrf_secret` on class Meta for SessionCSRF to work"
|
||||
)
|
||||
if meta.csrf_context is None:
|
||||
raise TypeError("Must provide a session-like object as csrf context")
|
||||
|
||||
session = self.session
|
||||
|
||||
if "csrf" not in session:
|
||||
session["csrf"] = sha1(os.urandom(64)).hexdigest()
|
||||
|
||||
if self.time_limit:
|
||||
expires = (self.now() + self.time_limit).strftime(self.TIME_FORMAT)
|
||||
csrf_build = "{}{}".format(session["csrf"], expires)
|
||||
else:
|
||||
expires = ""
|
||||
csrf_build = session["csrf"]
|
||||
|
||||
hmac_csrf = hmac.new(
|
||||
meta.csrf_secret, csrf_build.encode("utf8"), digestmod=sha1
|
||||
)
|
||||
return f"{expires}##{hmac_csrf.hexdigest()}"
|
||||
|
||||
def validate_csrf_token(self, form, field):
|
||||
meta = self.form_meta
|
||||
if not field.data or "##" not in field.data:
|
||||
raise ValidationError(field.gettext("CSRF token missing."))
|
||||
|
||||
expires, hmac_csrf = field.data.split("##", 1)
|
||||
|
||||
check_val = (self.session["csrf"] + expires).encode("utf8")
|
||||
|
||||
hmac_compare = hmac.new(meta.csrf_secret, check_val, digestmod=sha1)
|
||||
if hmac_compare.hexdigest() != hmac_csrf:
|
||||
raise ValidationError(field.gettext("CSRF failed."))
|
||||
|
||||
if self.time_limit:
|
||||
now_formatted = self.now().strftime(self.TIME_FORMAT)
|
||||
if now_formatted > expires:
|
||||
raise ValidationError(field.gettext("CSRF token expired."))
|
||||
|
||||
def now(self):
|
||||
"""
|
||||
Get the current time. Used for test mocking/overriding mainly.
|
||||
"""
|
||||
return datetime.now()
|
||||
|
||||
@property
|
||||
def time_limit(self):
|
||||
return getattr(self.form_meta, "csrf_time_limit", timedelta(minutes=30))
|
||||
|
||||
@property
|
||||
def session(self):
|
||||
return getattr(
|
||||
self.form_meta.csrf_context, "session", self.form_meta.csrf_context
|
||||
)
|
||||
71
venv/lib/python3.11/site-packages/wtforms/fields/__init__.py
Normal file
71
venv/lib/python3.11/site-packages/wtforms/fields/__init__.py
Normal file
@@ -0,0 +1,71 @@
|
||||
from wtforms.fields.choices import RadioField
|
||||
from wtforms.fields.choices import SelectField
|
||||
from wtforms.fields.choices import SelectFieldBase
|
||||
from wtforms.fields.choices import SelectMultipleField
|
||||
from wtforms.fields.core import Field
|
||||
from wtforms.fields.core import Flags
|
||||
from wtforms.fields.core import Label
|
||||
from wtforms.fields.datetime import DateField
|
||||
from wtforms.fields.datetime import DateTimeField
|
||||
from wtforms.fields.datetime import DateTimeLocalField
|
||||
from wtforms.fields.datetime import MonthField
|
||||
from wtforms.fields.datetime import TimeField
|
||||
from wtforms.fields.datetime import WeekField
|
||||
from wtforms.fields.form import FormField
|
||||
from wtforms.fields.list import FieldList
|
||||
from wtforms.fields.numeric import DecimalField
|
||||
from wtforms.fields.numeric import DecimalRangeField
|
||||
from wtforms.fields.numeric import FloatField
|
||||
from wtforms.fields.numeric import IntegerField
|
||||
from wtforms.fields.numeric import IntegerRangeField
|
||||
from wtforms.fields.simple import BooleanField
|
||||
from wtforms.fields.simple import ColorField
|
||||
from wtforms.fields.simple import EmailField
|
||||
from wtforms.fields.simple import FileField
|
||||
from wtforms.fields.simple import HiddenField
|
||||
from wtforms.fields.simple import MultipleFileField
|
||||
from wtforms.fields.simple import PasswordField
|
||||
from wtforms.fields.simple import SearchField
|
||||
from wtforms.fields.simple import StringField
|
||||
from wtforms.fields.simple import SubmitField
|
||||
from wtforms.fields.simple import TelField
|
||||
from wtforms.fields.simple import TextAreaField
|
||||
from wtforms.fields.simple import URLField
|
||||
from wtforms.utils import unset_value as _unset_value
|
||||
|
||||
__all__ = [
|
||||
"Field",
|
||||
"Flags",
|
||||
"Label",
|
||||
"SelectField",
|
||||
"SelectMultipleField",
|
||||
"SelectFieldBase",
|
||||
"RadioField",
|
||||
"DateTimeField",
|
||||
"DateField",
|
||||
"TimeField",
|
||||
"MonthField",
|
||||
"DateTimeLocalField",
|
||||
"WeekField",
|
||||
"FormField",
|
||||
"IntegerField",
|
||||
"DecimalField",
|
||||
"FloatField",
|
||||
"IntegerRangeField",
|
||||
"DecimalRangeField",
|
||||
"BooleanField",
|
||||
"TextAreaField",
|
||||
"PasswordField",
|
||||
"FileField",
|
||||
"MultipleFileField",
|
||||
"HiddenField",
|
||||
"SearchField",
|
||||
"SubmitField",
|
||||
"StringField",
|
||||
"TelField",
|
||||
"URLField",
|
||||
"EmailField",
|
||||
"ColorField",
|
||||
"FieldList",
|
||||
"_unset_value",
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
229
venv/lib/python3.11/site-packages/wtforms/fields/choices.py
Normal file
229
venv/lib/python3.11/site-packages/wtforms/fields/choices.py
Normal file
@@ -0,0 +1,229 @@
|
||||
import itertools
|
||||
|
||||
from wtforms import widgets
|
||||
from wtforms.fields.core import Field
|
||||
from wtforms.validators import ValidationError
|
||||
|
||||
__all__ = (
|
||||
"SelectField",
|
||||
"SelectMultipleField",
|
||||
"RadioField",
|
||||
)
|
||||
|
||||
|
||||
class SelectFieldBase(Field):
|
||||
option_widget = widgets.Option()
|
||||
|
||||
"""
|
||||
Base class for fields which can be iterated to produce options.
|
||||
|
||||
This isn't a field, but an abstract base class for fields which want to
|
||||
provide this functionality.
|
||||
"""
|
||||
|
||||
def __init__(self, label=None, validators=None, option_widget=None, **kwargs):
|
||||
super().__init__(label, validators, **kwargs)
|
||||
|
||||
if option_widget is not None:
|
||||
self.option_widget = option_widget
|
||||
|
||||
def iter_choices(self):
|
||||
"""
|
||||
Provides data for choice widget rendering. Must return a sequence or
|
||||
iterable of (value, label, selected, render_kw) tuples.
|
||||
"""
|
||||
raise NotImplementedError()
|
||||
|
||||
def has_groups(self):
|
||||
return False
|
||||
|
||||
def iter_groups(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
def __iter__(self):
|
||||
opts = dict(
|
||||
widget=self.option_widget,
|
||||
validators=self.validators,
|
||||
name=self.name,
|
||||
render_kw=self.render_kw,
|
||||
_form=None,
|
||||
_meta=self.meta,
|
||||
)
|
||||
for i, choice in enumerate(self.iter_choices()):
|
||||
if len(choice) == 4:
|
||||
value, label, checked, render_kw = choice
|
||||
else:
|
||||
value, label, checked = choice
|
||||
render_kw = {}
|
||||
|
||||
opt = self._Option(
|
||||
label=label, id="%s-%d" % (self.id, i), **opts, **render_kw
|
||||
)
|
||||
opt.process(None, value)
|
||||
opt.checked = checked
|
||||
yield opt
|
||||
|
||||
class _Option(Field):
|
||||
checked = False
|
||||
|
||||
def _value(self):
|
||||
return str(self.data)
|
||||
|
||||
|
||||
class SelectField(SelectFieldBase):
|
||||
widget = widgets.Select()
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
label=None,
|
||||
validators=None,
|
||||
coerce=str,
|
||||
choices=None,
|
||||
validate_choice=True,
|
||||
**kwargs,
|
||||
):
|
||||
super().__init__(label, validators, **kwargs)
|
||||
self.coerce = coerce
|
||||
if callable(choices):
|
||||
choices = choices()
|
||||
if choices is not None:
|
||||
self.choices = choices if isinstance(choices, dict) else list(choices)
|
||||
else:
|
||||
self.choices = None
|
||||
self.validate_choice = validate_choice
|
||||
|
||||
def iter_choices(self):
|
||||
if not self.choices:
|
||||
choices = []
|
||||
elif isinstance(self.choices, dict):
|
||||
choices = list(itertools.chain.from_iterable(self.choices.values()))
|
||||
else:
|
||||
choices = self.choices
|
||||
|
||||
return self._choices_generator(choices)
|
||||
|
||||
def has_groups(self):
|
||||
return isinstance(self.choices, dict)
|
||||
|
||||
def iter_groups(self):
|
||||
if isinstance(self.choices, dict):
|
||||
for label, choices in self.choices.items():
|
||||
yield (label, self._choices_generator(choices))
|
||||
|
||||
def _choices_generator(self, choices):
|
||||
if not choices:
|
||||
_choices = []
|
||||
|
||||
elif isinstance(choices[0], (list, tuple)):
|
||||
_choices = choices
|
||||
|
||||
else:
|
||||
_choices = zip(choices, choices)
|
||||
|
||||
for value, label, *other_args in _choices:
|
||||
selected = self.coerce(value) == self.data
|
||||
render_kw = other_args[0] if len(other_args) else {}
|
||||
yield (value, label, selected, render_kw)
|
||||
|
||||
def process_data(self, value):
|
||||
try:
|
||||
# If value is None, don't coerce to a value
|
||||
self.data = self.coerce(value) if value is not None else None
|
||||
except (ValueError, TypeError):
|
||||
self.data = None
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
if not valuelist:
|
||||
return
|
||||
|
||||
try:
|
||||
self.data = self.coerce(valuelist[0])
|
||||
except ValueError as exc:
|
||||
raise ValueError(self.gettext("Invalid Choice: could not coerce.")) from exc
|
||||
|
||||
def pre_validate(self, form):
|
||||
if not self.validate_choice:
|
||||
return
|
||||
|
||||
if self.choices is None:
|
||||
raise TypeError(self.gettext("Choices cannot be None."))
|
||||
|
||||
for _, _, match, *_ in self.iter_choices():
|
||||
if match:
|
||||
break
|
||||
else:
|
||||
raise ValidationError(self.gettext("Not a valid choice."))
|
||||
|
||||
|
||||
class SelectMultipleField(SelectField):
|
||||
"""
|
||||
No different from a normal select field, except this one can take (and
|
||||
validate) multiple choices. You'll need to specify the HTML `size`
|
||||
attribute to the select field when rendering.
|
||||
"""
|
||||
|
||||
widget = widgets.Select(multiple=True)
|
||||
|
||||
def _choices_generator(self, choices):
|
||||
if not choices:
|
||||
_choices = []
|
||||
|
||||
elif isinstance(choices[0], (list, tuple)):
|
||||
_choices = choices
|
||||
|
||||
else:
|
||||
_choices = zip(choices, choices)
|
||||
|
||||
for value, label, *other_args in _choices:
|
||||
selected = self.data is not None and self.coerce(value) in self.data
|
||||
render_kw = other_args[0] if len(other_args) else {}
|
||||
yield (value, label, selected, render_kw)
|
||||
|
||||
def process_data(self, value):
|
||||
try:
|
||||
self.data = list(self.coerce(v) for v in value)
|
||||
except (ValueError, TypeError):
|
||||
self.data = None
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
try:
|
||||
self.data = list(self.coerce(x) for x in valuelist)
|
||||
except ValueError as exc:
|
||||
raise ValueError(
|
||||
self.gettext(
|
||||
"Invalid choice(s): one or more data inputs could not be coerced."
|
||||
)
|
||||
) from exc
|
||||
|
||||
def pre_validate(self, form):
|
||||
if not self.validate_choice or not self.data:
|
||||
return
|
||||
|
||||
if self.choices is None:
|
||||
raise TypeError(self.gettext("Choices cannot be None."))
|
||||
|
||||
acceptable = [self.coerce(choice[0]) for choice in self.iter_choices()]
|
||||
if any(data not in acceptable for data in self.data):
|
||||
unacceptable = [
|
||||
str(data) for data in set(self.data) if data not in acceptable
|
||||
]
|
||||
raise ValidationError(
|
||||
self.ngettext(
|
||||
"'%(value)s' is not a valid choice for this field.",
|
||||
"'%(value)s' are not valid choices for this field.",
|
||||
len(unacceptable),
|
||||
)
|
||||
% dict(value="', '".join(unacceptable))
|
||||
)
|
||||
|
||||
|
||||
class RadioField(SelectField):
|
||||
"""
|
||||
Like a SelectField, except displays a list of radio buttons.
|
||||
|
||||
Iterating the field will produce subfields (each containing a label as
|
||||
well) in order to allow custom rendering of the individual radio fields.
|
||||
"""
|
||||
|
||||
widget = widgets.ListWidget(prefix_label=False)
|
||||
option_widget = widgets.RadioInput()
|
||||
448
venv/lib/python3.11/site-packages/wtforms/fields/core.py
Normal file
448
venv/lib/python3.11/site-packages/wtforms/fields/core.py
Normal file
@@ -0,0 +1,448 @@
|
||||
import inspect
|
||||
import itertools
|
||||
|
||||
from markupsafe import escape
|
||||
from markupsafe import Markup
|
||||
|
||||
from wtforms import widgets
|
||||
from wtforms.i18n import DummyTranslations
|
||||
from wtforms.utils import unset_value
|
||||
from wtforms.validators import StopValidation
|
||||
from wtforms.validators import ValidationError
|
||||
|
||||
|
||||
class Field:
|
||||
"""
|
||||
Field base class
|
||||
"""
|
||||
|
||||
errors = tuple()
|
||||
process_errors = tuple()
|
||||
raw_data = None
|
||||
validators = tuple()
|
||||
widget = None
|
||||
_formfield = True
|
||||
_translations = DummyTranslations()
|
||||
do_not_call_in_templates = True # Allow Django 1.4 traversal
|
||||
|
||||
def __new__(cls, *args, **kwargs):
|
||||
if "_form" in kwargs:
|
||||
return super().__new__(cls)
|
||||
else:
|
||||
return UnboundField(cls, *args, **kwargs)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
label=None,
|
||||
validators=None,
|
||||
filters=(),
|
||||
description="",
|
||||
id=None,
|
||||
default=None,
|
||||
widget=None,
|
||||
render_kw=None,
|
||||
name=None,
|
||||
_form=None,
|
||||
_prefix="",
|
||||
_translations=None,
|
||||
_meta=None,
|
||||
):
|
||||
"""
|
||||
Construct a new field.
|
||||
|
||||
:param label:
|
||||
The label of the field.
|
||||
:param validators:
|
||||
A sequence of validators to call when `validate` is called.
|
||||
:param filters:
|
||||
A sequence of callable which are run by :meth:`~Field.process`
|
||||
to filter or transform the input data. For example
|
||||
``StringForm(filters=[str.strip, str.upper])``.
|
||||
Note that filters are applied after processing the default and
|
||||
incoming data, but before validation.
|
||||
:param description:
|
||||
A description for the field, typically used for help text.
|
||||
:param id:
|
||||
An id to use for the field. A reasonable default is set by the form,
|
||||
and you shouldn't need to set this manually.
|
||||
:param default:
|
||||
The default value to assign to the field, if no form or object
|
||||
input is provided. May be a callable.
|
||||
:param widget:
|
||||
If provided, overrides the widget used to render the field.
|
||||
:param dict render_kw:
|
||||
If provided, a dictionary which provides default keywords that
|
||||
will be given to the widget at render time.
|
||||
:param name:
|
||||
The HTML name of this field. The default value is the Python
|
||||
attribute name.
|
||||
:param _form:
|
||||
The form holding this field. It is passed by the form itself during
|
||||
construction. You should never pass this value yourself.
|
||||
:param _prefix:
|
||||
The prefix to prepend to the form name of this field, passed by
|
||||
the enclosing form during construction.
|
||||
:param _translations:
|
||||
A translations object providing message translations. Usually
|
||||
passed by the enclosing form during construction. See
|
||||
:doc:`I18n docs <i18n>` for information on message translations.
|
||||
:param _meta:
|
||||
If provided, this is the 'meta' instance from the form. You usually
|
||||
don't pass this yourself.
|
||||
|
||||
If `_form` isn't provided, an :class:`UnboundField` will be
|
||||
returned instead. Call its :func:`bind` method with a form instance and
|
||||
a name to construct the field.
|
||||
"""
|
||||
if _translations is not None:
|
||||
self._translations = _translations
|
||||
|
||||
if _meta is not None:
|
||||
self.meta = _meta
|
||||
elif _form is not None:
|
||||
self.meta = _form.meta
|
||||
else:
|
||||
raise TypeError("Must provide one of _form or _meta")
|
||||
|
||||
self.default = default
|
||||
self.description = description
|
||||
self.render_kw = render_kw
|
||||
self.filters = filters
|
||||
self.flags = Flags()
|
||||
self.name = _prefix + name
|
||||
self.short_name = name
|
||||
self.type = type(self).__name__
|
||||
|
||||
self.check_validators(validators)
|
||||
self.validators = validators or self.validators
|
||||
|
||||
self.id = id or self.name
|
||||
self.label = Label(
|
||||
self.id,
|
||||
label
|
||||
if label is not None
|
||||
else self.gettext(name.replace("_", " ").title()),
|
||||
)
|
||||
|
||||
if widget is not None:
|
||||
self.widget = widget
|
||||
|
||||
for v in itertools.chain(self.validators, [self.widget]):
|
||||
flags = getattr(v, "field_flags", {})
|
||||
|
||||
for k, v in flags.items():
|
||||
setattr(self.flags, k, v)
|
||||
|
||||
def __str__(self):
|
||||
"""
|
||||
Returns a HTML representation of the field. For more powerful rendering,
|
||||
see the `__call__` method.
|
||||
"""
|
||||
return self()
|
||||
|
||||
def __html__(self):
|
||||
"""
|
||||
Returns a HTML representation of the field. For more powerful rendering,
|
||||
see the :meth:`__call__` method.
|
||||
"""
|
||||
return self()
|
||||
|
||||
def __call__(self, **kwargs):
|
||||
"""
|
||||
Render this field as HTML, using keyword args as additional attributes.
|
||||
|
||||
This delegates rendering to
|
||||
:meth:`meta.render_field <wtforms.meta.DefaultMeta.render_field>`
|
||||
whose default behavior is to call the field's widget, passing any
|
||||
keyword arguments from this call along to the widget.
|
||||
|
||||
In all of the WTForms HTML widgets, keyword arguments are turned to
|
||||
HTML attributes, though in theory a widget is free to do anything it
|
||||
wants with the supplied keyword arguments, and widgets don't have to
|
||||
even do anything related to HTML.
|
||||
"""
|
||||
return self.meta.render_field(self, kwargs)
|
||||
|
||||
@classmethod
|
||||
def check_validators(cls, validators):
|
||||
if validators is not None:
|
||||
for validator in validators:
|
||||
if not callable(validator):
|
||||
raise TypeError(
|
||||
f"{validator} is not a valid validator because it is not "
|
||||
"callable"
|
||||
)
|
||||
|
||||
if inspect.isclass(validator):
|
||||
raise TypeError(
|
||||
f"{validator} is not a valid validator because it is a class, "
|
||||
"it should be an instance"
|
||||
)
|
||||
|
||||
def gettext(self, string):
|
||||
"""
|
||||
Get a translation for the given message.
|
||||
|
||||
This proxies for the internal translations object.
|
||||
|
||||
:param string: A string to be translated.
|
||||
:return: A string which is the translated output.
|
||||
"""
|
||||
return self._translations.gettext(string)
|
||||
|
||||
def ngettext(self, singular, plural, n):
|
||||
"""
|
||||
Get a translation for a message which can be pluralized.
|
||||
|
||||
:param str singular: The singular form of the message.
|
||||
:param str plural: The plural form of the message.
|
||||
:param int n: The number of elements this message is referring to
|
||||
"""
|
||||
return self._translations.ngettext(singular, plural, n)
|
||||
|
||||
def validate(self, form, extra_validators=()):
|
||||
"""
|
||||
Validates the field and returns True or False. `self.errors` will
|
||||
contain any errors raised during validation. This is usually only
|
||||
called by `Form.validate`.
|
||||
|
||||
Subfields shouldn't override this, but rather override either
|
||||
`pre_validate`, `post_validate` or both, depending on needs.
|
||||
|
||||
:param form: The form the field belongs to.
|
||||
:param extra_validators: A sequence of extra validators to run.
|
||||
"""
|
||||
self.errors = list(self.process_errors)
|
||||
stop_validation = False
|
||||
|
||||
# Check the type of extra_validators
|
||||
self.check_validators(extra_validators)
|
||||
|
||||
# Call pre_validate
|
||||
try:
|
||||
self.pre_validate(form)
|
||||
except StopValidation as e:
|
||||
if e.args and e.args[0]:
|
||||
self.errors.append(e.args[0])
|
||||
stop_validation = True
|
||||
except ValidationError as e:
|
||||
self.errors.append(e.args[0])
|
||||
|
||||
# Run validators
|
||||
if not stop_validation:
|
||||
chain = itertools.chain(self.validators, extra_validators)
|
||||
stop_validation = self._run_validation_chain(form, chain)
|
||||
|
||||
# Call post_validate
|
||||
try:
|
||||
self.post_validate(form, stop_validation)
|
||||
except ValidationError as e:
|
||||
self.errors.append(e.args[0])
|
||||
|
||||
return len(self.errors) == 0
|
||||
|
||||
def _run_validation_chain(self, form, validators):
|
||||
"""
|
||||
Run a validation chain, stopping if any validator raises StopValidation.
|
||||
|
||||
:param form: The Form instance this field belongs to.
|
||||
:param validators: a sequence or iterable of validator callables.
|
||||
:return: True if validation was stopped, False otherwise.
|
||||
"""
|
||||
for validator in validators:
|
||||
try:
|
||||
validator(form, self)
|
||||
except StopValidation as e:
|
||||
if e.args and e.args[0]:
|
||||
self.errors.append(e.args[0])
|
||||
return True
|
||||
except ValidationError as e:
|
||||
self.errors.append(e.args[0])
|
||||
|
||||
return False
|
||||
|
||||
def pre_validate(self, form):
|
||||
"""
|
||||
Override if you need field-level validation. Runs before any other
|
||||
validators.
|
||||
|
||||
:param form: The form the field belongs to.
|
||||
"""
|
||||
pass
|
||||
|
||||
def post_validate(self, form, validation_stopped):
|
||||
"""
|
||||
Override if you need to run any field-level validation tasks after
|
||||
normal validation. This shouldn't be needed in most cases.
|
||||
|
||||
:param form: The form the field belongs to.
|
||||
:param validation_stopped:
|
||||
`True` if any validator raised StopValidation.
|
||||
"""
|
||||
pass
|
||||
|
||||
def process(self, formdata, data=unset_value, extra_filters=None):
|
||||
"""
|
||||
Process incoming data, calling process_data, process_formdata as needed,
|
||||
and run filters.
|
||||
|
||||
If `data` is not provided, process_data will be called on the field's
|
||||
default.
|
||||
|
||||
Field subclasses usually won't override this, instead overriding the
|
||||
process_formdata and process_data methods. Only override this for
|
||||
special advanced processing, such as when a field encapsulates many
|
||||
inputs.
|
||||
|
||||
:param extra_filters: A sequence of extra filters to run.
|
||||
"""
|
||||
self.process_errors = []
|
||||
if data is unset_value:
|
||||
try:
|
||||
data = self.default()
|
||||
except TypeError:
|
||||
data = self.default
|
||||
|
||||
self.object_data = data
|
||||
|
||||
try:
|
||||
self.process_data(data)
|
||||
except ValueError as e:
|
||||
self.process_errors.append(e.args[0])
|
||||
|
||||
if formdata is not None:
|
||||
if self.name in formdata:
|
||||
self.raw_data = formdata.getlist(self.name)
|
||||
else:
|
||||
self.raw_data = []
|
||||
|
||||
try:
|
||||
self.process_formdata(self.raw_data)
|
||||
except ValueError as e:
|
||||
self.process_errors.append(e.args[0])
|
||||
|
||||
try:
|
||||
for filter in itertools.chain(self.filters, extra_filters or []):
|
||||
self.data = filter(self.data)
|
||||
except ValueError as e:
|
||||
self.process_errors.append(e.args[0])
|
||||
|
||||
def process_data(self, value):
|
||||
"""
|
||||
Process the Python data applied to this field and store the result.
|
||||
|
||||
This will be called during form construction by the form's `kwargs` or
|
||||
`obj` argument.
|
||||
|
||||
:param value: The python object containing the value to process.
|
||||
"""
|
||||
self.data = value
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
"""
|
||||
Process data received over the wire from a form.
|
||||
|
||||
This will be called during form construction with data supplied
|
||||
through the `formdata` argument.
|
||||
|
||||
:param valuelist: A list of strings to process.
|
||||
"""
|
||||
if valuelist:
|
||||
self.data = valuelist[0]
|
||||
|
||||
def populate_obj(self, obj, name):
|
||||
"""
|
||||
Populates `obj.<name>` with the field's data.
|
||||
|
||||
:note: This is a destructive operation. If `obj.<name>` already exists,
|
||||
it will be overridden. Use with caution.
|
||||
"""
|
||||
setattr(obj, name, self.data)
|
||||
|
||||
|
||||
class UnboundField:
|
||||
_formfield = True
|
||||
creation_counter = 0
|
||||
|
||||
def __init__(self, field_class, *args, name=None, **kwargs):
|
||||
UnboundField.creation_counter += 1
|
||||
self.field_class = field_class
|
||||
self.args = args
|
||||
self.name = name
|
||||
self.kwargs = kwargs
|
||||
self.creation_counter = UnboundField.creation_counter
|
||||
validators = kwargs.get("validators")
|
||||
if validators:
|
||||
self.field_class.check_validators(validators)
|
||||
|
||||
def bind(self, form, name, prefix="", translations=None, **kwargs):
|
||||
kw = dict(
|
||||
self.kwargs,
|
||||
name=name,
|
||||
_form=form,
|
||||
_prefix=prefix,
|
||||
_translations=translations,
|
||||
**kwargs,
|
||||
)
|
||||
return self.field_class(*self.args, **kw)
|
||||
|
||||
def __repr__(self):
|
||||
return (
|
||||
"<UnboundField("
|
||||
f"{self.field_class.__name__}, {self.args!r}, {self.kwargs!r}"
|
||||
")>"
|
||||
)
|
||||
|
||||
|
||||
class Flags:
|
||||
"""
|
||||
Holds a set of flags as attributes.
|
||||
|
||||
Accessing a non-existing attribute returns None for its value.
|
||||
"""
|
||||
|
||||
def __getattr__(self, name):
|
||||
if name.startswith("_"):
|
||||
return super().__getattr__(name)
|
||||
return None
|
||||
|
||||
def __contains__(self, name):
|
||||
return getattr(self, name)
|
||||
|
||||
def __repr__(self):
|
||||
flags = (
|
||||
f"{name}={getattr(self, name)}"
|
||||
for name in dir(self)
|
||||
if not name.startswith("_")
|
||||
)
|
||||
flags = ", ".join(flags)
|
||||
return f"<wtforms.fields.Flags: {{{flags}}}>"
|
||||
|
||||
|
||||
class Label:
|
||||
"""
|
||||
An HTML form label.
|
||||
"""
|
||||
|
||||
def __init__(self, field_id, text):
|
||||
self.field_id = field_id
|
||||
self.text = text
|
||||
|
||||
def __str__(self):
|
||||
return self()
|
||||
|
||||
def __html__(self):
|
||||
return self()
|
||||
|
||||
def __call__(self, text=None, **kwargs):
|
||||
if "for_" in kwargs:
|
||||
kwargs["for"] = kwargs.pop("for_")
|
||||
else:
|
||||
kwargs.setdefault("for", self.field_id)
|
||||
|
||||
attributes = widgets.html_params(**kwargs)
|
||||
text = escape(text or self.text)
|
||||
return Markup(f"<label {attributes}>{text}</label>")
|
||||
|
||||
def __repr__(self):
|
||||
return f"Label({self.field_id!r}, {self.text!r})"
|
||||
170
venv/lib/python3.11/site-packages/wtforms/fields/datetime.py
Normal file
170
venv/lib/python3.11/site-packages/wtforms/fields/datetime.py
Normal file
@@ -0,0 +1,170 @@
|
||||
import datetime
|
||||
|
||||
from wtforms import widgets
|
||||
from wtforms.fields.core import Field
|
||||
from wtforms.utils import clean_datetime_format_for_strptime
|
||||
|
||||
__all__ = (
|
||||
"DateTimeField",
|
||||
"DateField",
|
||||
"TimeField",
|
||||
"MonthField",
|
||||
"DateTimeLocalField",
|
||||
"WeekField",
|
||||
)
|
||||
|
||||
|
||||
class DateTimeField(Field):
|
||||
"""
|
||||
A text field which stores a :class:`datetime.datetime` matching one or
|
||||
several formats. If ``format`` is a list, any input value matching any
|
||||
format will be accepted, and the first format in the list will be used
|
||||
to produce HTML values.
|
||||
"""
|
||||
|
||||
widget = widgets.DateTimeInput()
|
||||
|
||||
def __init__(
|
||||
self, label=None, validators=None, format="%Y-%m-%d %H:%M:%S", **kwargs
|
||||
):
|
||||
super().__init__(label, validators, **kwargs)
|
||||
self.format = format if isinstance(format, list) else [format]
|
||||
self.strptime_format = clean_datetime_format_for_strptime(self.format)
|
||||
|
||||
def _value(self):
|
||||
if self.raw_data:
|
||||
return " ".join(self.raw_data)
|
||||
format = self.format[0]
|
||||
return self.data and self.data.strftime(format) or ""
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
if not valuelist:
|
||||
return
|
||||
|
||||
date_str = " ".join(valuelist)
|
||||
for format in self.strptime_format:
|
||||
try:
|
||||
self.data = datetime.datetime.strptime(date_str, format)
|
||||
return
|
||||
except ValueError:
|
||||
self.data = None
|
||||
|
||||
raise ValueError(self.gettext("Not a valid datetime value."))
|
||||
|
||||
|
||||
class DateField(DateTimeField):
|
||||
"""
|
||||
Same as :class:`~wtforms.fields.DateTimeField`, except stores a
|
||||
:class:`datetime.date`.
|
||||
"""
|
||||
|
||||
widget = widgets.DateInput()
|
||||
|
||||
def __init__(self, label=None, validators=None, format="%Y-%m-%d", **kwargs):
|
||||
super().__init__(label, validators, format, **kwargs)
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
if not valuelist:
|
||||
return
|
||||
|
||||
date_str = " ".join(valuelist)
|
||||
for format in self.strptime_format:
|
||||
try:
|
||||
self.data = datetime.datetime.strptime(date_str, format).date()
|
||||
return
|
||||
except ValueError:
|
||||
self.data = None
|
||||
|
||||
raise ValueError(self.gettext("Not a valid date value."))
|
||||
|
||||
|
||||
class TimeField(DateTimeField):
|
||||
"""
|
||||
Same as :class:`~wtforms.fields.DateTimeField`, except stores a
|
||||
:class:`datetime.time`.
|
||||
"""
|
||||
|
||||
widget = widgets.TimeInput()
|
||||
|
||||
def __init__(self, label=None, validators=None, format="%H:%M", **kwargs):
|
||||
super().__init__(label, validators, format, **kwargs)
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
if not valuelist:
|
||||
return
|
||||
|
||||
time_str = " ".join(valuelist)
|
||||
for format in self.strptime_format:
|
||||
try:
|
||||
self.data = datetime.datetime.strptime(time_str, format).time()
|
||||
return
|
||||
except ValueError:
|
||||
self.data = None
|
||||
|
||||
raise ValueError(self.gettext("Not a valid time value."))
|
||||
|
||||
|
||||
class MonthField(DateField):
|
||||
"""
|
||||
Same as :class:`~wtforms.fields.DateField`, except represents a month,
|
||||
stores a :class:`datetime.date` with `day = 1`.
|
||||
"""
|
||||
|
||||
widget = widgets.MonthInput()
|
||||
|
||||
def __init__(self, label=None, validators=None, format="%Y-%m", **kwargs):
|
||||
super().__init__(label, validators, format, **kwargs)
|
||||
|
||||
|
||||
class WeekField(DateField):
|
||||
"""
|
||||
Same as :class:`~wtforms.fields.DateField`, except represents a week,
|
||||
stores a :class:`datetime.date` of the monday of the given week.
|
||||
"""
|
||||
|
||||
widget = widgets.WeekInput()
|
||||
|
||||
def __init__(self, label=None, validators=None, format="%Y-W%W", **kwargs):
|
||||
super().__init__(label, validators, format, **kwargs)
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
if not valuelist:
|
||||
return
|
||||
|
||||
time_str = " ".join(valuelist)
|
||||
for format in self.strptime_format:
|
||||
try:
|
||||
if "%w" not in format:
|
||||
# The '%w' week starting day is needed. This defaults it to monday
|
||||
# like ISO 8601 indicates.
|
||||
self.data = datetime.datetime.strptime(
|
||||
f"{time_str}-1", f"{format}-%w"
|
||||
).date()
|
||||
else:
|
||||
self.data = datetime.datetime.strptime(time_str, format).date()
|
||||
return
|
||||
except ValueError:
|
||||
self.data = None
|
||||
|
||||
raise ValueError(self.gettext("Not a valid week value."))
|
||||
|
||||
|
||||
class DateTimeLocalField(DateTimeField):
|
||||
"""
|
||||
Same as :class:`~wtforms.fields.DateTimeField`, but represents an
|
||||
``<input type="datetime-local">``.
|
||||
"""
|
||||
|
||||
widget = widgets.DateTimeLocalInput()
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
kwargs.setdefault(
|
||||
"format",
|
||||
[
|
||||
"%Y-%m-%d %H:%M:%S",
|
||||
"%Y-%m-%dT%H:%M:%S",
|
||||
"%Y-%m-%d %H:%M",
|
||||
"%Y-%m-%dT%H:%M",
|
||||
],
|
||||
)
|
||||
super().__init__(*args, **kwargs)
|
||||
98
venv/lib/python3.11/site-packages/wtforms/fields/form.py
Normal file
98
venv/lib/python3.11/site-packages/wtforms/fields/form.py
Normal file
@@ -0,0 +1,98 @@
|
||||
from wtforms.utils import unset_value
|
||||
|
||||
from .. import widgets
|
||||
from .core import Field
|
||||
|
||||
__all__ = ("FormField",)
|
||||
|
||||
|
||||
class FormField(Field):
|
||||
"""
|
||||
Encapsulate a form as a field in another form.
|
||||
|
||||
:param form_class:
|
||||
A subclass of Form that will be encapsulated.
|
||||
:param separator:
|
||||
A string which will be suffixed to this field's name to create the
|
||||
prefix to enclosed fields. The default is fine for most uses.
|
||||
"""
|
||||
|
||||
widget = widgets.TableWidget()
|
||||
|
||||
def __init__(
|
||||
self, form_class, label=None, validators=None, separator="-", **kwargs
|
||||
):
|
||||
super().__init__(label, validators, **kwargs)
|
||||
self.form_class = form_class
|
||||
self.separator = separator
|
||||
self._obj = None
|
||||
if self.filters:
|
||||
raise TypeError(
|
||||
"FormField cannot take filters, as the encapsulated"
|
||||
" data is not mutable."
|
||||
)
|
||||
if validators:
|
||||
raise TypeError(
|
||||
"FormField does not accept any validators. Instead,"
|
||||
" define them on the enclosed form."
|
||||
)
|
||||
|
||||
def process(self, formdata, data=unset_value, extra_filters=None):
|
||||
if extra_filters:
|
||||
raise TypeError(
|
||||
"FormField cannot take filters, as the encapsulated"
|
||||
"data is not mutable."
|
||||
)
|
||||
|
||||
if data is unset_value:
|
||||
try:
|
||||
data = self.default()
|
||||
except TypeError:
|
||||
data = self.default
|
||||
self._obj = data
|
||||
|
||||
self.object_data = data
|
||||
|
||||
prefix = self.name + self.separator
|
||||
if isinstance(data, dict):
|
||||
self.form = self.form_class(formdata=formdata, prefix=prefix, **data)
|
||||
else:
|
||||
self.form = self.form_class(formdata=formdata, obj=data, prefix=prefix)
|
||||
|
||||
def validate(self, form, extra_validators=()):
|
||||
if extra_validators:
|
||||
raise TypeError(
|
||||
"FormField does not accept in-line validators, as it"
|
||||
" gets errors from the enclosed form."
|
||||
)
|
||||
return self.form.validate()
|
||||
|
||||
def populate_obj(self, obj, name):
|
||||
candidate = getattr(obj, name, None)
|
||||
if candidate is None:
|
||||
if self._obj is None:
|
||||
raise TypeError(
|
||||
"populate_obj: cannot find a value to populate from"
|
||||
" the provided obj or input data/defaults"
|
||||
)
|
||||
candidate = self._obj
|
||||
|
||||
self.form.populate_obj(candidate)
|
||||
setattr(obj, name, candidate)
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.form)
|
||||
|
||||
def __getitem__(self, name):
|
||||
return self.form[name]
|
||||
|
||||
def __getattr__(self, name):
|
||||
return getattr(self.form, name)
|
||||
|
||||
@property
|
||||
def data(self):
|
||||
return self.form.data
|
||||
|
||||
@property
|
||||
def errors(self):
|
||||
return self.form.errors
|
||||
202
venv/lib/python3.11/site-packages/wtforms/fields/list.py
Normal file
202
venv/lib/python3.11/site-packages/wtforms/fields/list.py
Normal file
@@ -0,0 +1,202 @@
|
||||
import itertools
|
||||
|
||||
from wtforms.utils import unset_value
|
||||
|
||||
from .. import widgets
|
||||
from .core import Field
|
||||
from .core import UnboundField
|
||||
|
||||
__all__ = ("FieldList",)
|
||||
|
||||
|
||||
class FieldList(Field):
|
||||
"""
|
||||
Encapsulate an ordered list of multiple instances of the same field type,
|
||||
keeping data as a list.
|
||||
|
||||
>>> authors = FieldList(StringField('Name', [validators.DataRequired()]))
|
||||
|
||||
:param unbound_field:
|
||||
A partially-instantiated field definition, just like that would be
|
||||
defined on a form directly.
|
||||
:param min_entries:
|
||||
if provided, always have at least this many entries on the field,
|
||||
creating blank ones if the provided input does not specify a sufficient
|
||||
amount.
|
||||
:param max_entries:
|
||||
accept no more than this many entries as input, even if more exist in
|
||||
formdata.
|
||||
:param separator:
|
||||
A string which will be suffixed to this field's name to create the
|
||||
prefix to enclosed list entries. The default is fine for most uses.
|
||||
"""
|
||||
|
||||
widget = widgets.ListWidget()
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
unbound_field,
|
||||
label=None,
|
||||
validators=None,
|
||||
min_entries=0,
|
||||
max_entries=None,
|
||||
separator="-",
|
||||
default=(),
|
||||
**kwargs,
|
||||
):
|
||||
super().__init__(label, validators, default=default, **kwargs)
|
||||
if self.filters:
|
||||
raise TypeError(
|
||||
"FieldList does not accept any filters. Instead, define"
|
||||
" them on the enclosed field."
|
||||
)
|
||||
assert isinstance(
|
||||
unbound_field, UnboundField
|
||||
), "Field must be unbound, not a field class"
|
||||
self.unbound_field = unbound_field
|
||||
self.min_entries = min_entries
|
||||
self.max_entries = max_entries
|
||||
self.last_index = -1
|
||||
self._prefix = kwargs.get("_prefix", "")
|
||||
self._separator = separator
|
||||
self._field_separator = unbound_field.kwargs.get("separator", "-")
|
||||
|
||||
def process(self, formdata, data=unset_value, extra_filters=None):
|
||||
if extra_filters:
|
||||
raise TypeError(
|
||||
"FieldList does not accept any filters. Instead, define"
|
||||
" them on the enclosed field."
|
||||
)
|
||||
|
||||
self.entries = []
|
||||
if data is unset_value or not data:
|
||||
try:
|
||||
data = self.default()
|
||||
except TypeError:
|
||||
data = self.default
|
||||
|
||||
self.object_data = data
|
||||
|
||||
if formdata:
|
||||
indices = sorted(set(self._extract_indices(self.name, formdata)))
|
||||
if self.max_entries:
|
||||
indices = indices[: self.max_entries]
|
||||
|
||||
idata = iter(data)
|
||||
for index in indices:
|
||||
try:
|
||||
obj_data = next(idata)
|
||||
except StopIteration:
|
||||
obj_data = unset_value
|
||||
self._add_entry(formdata, obj_data, index=index)
|
||||
else:
|
||||
for obj_data in data:
|
||||
self._add_entry(formdata, obj_data)
|
||||
|
||||
while len(self.entries) < self.min_entries:
|
||||
self._add_entry(formdata)
|
||||
|
||||
def _extract_indices(self, prefix, formdata):
|
||||
"""
|
||||
Yield indices of any keys with given prefix.
|
||||
|
||||
formdata must be an object which will produce keys when iterated. For
|
||||
example, if field 'foo' contains keys 'foo-0-bar', 'foo-1-baz', then
|
||||
the numbers 0 and 1 will be yielded, but not necessarily in order.
|
||||
"""
|
||||
offset = len(prefix) + 1
|
||||
for k in formdata:
|
||||
if k.startswith(prefix):
|
||||
k = k[offset:].split(self._field_separator, 1)[0]
|
||||
if k.isdigit():
|
||||
yield int(k)
|
||||
|
||||
def validate(self, form, extra_validators=()):
|
||||
"""
|
||||
Validate this FieldList.
|
||||
|
||||
Note that FieldList validation differs from normal field validation in
|
||||
that FieldList validates all its enclosed fields first before running any
|
||||
of its own validators.
|
||||
"""
|
||||
self.errors = []
|
||||
|
||||
# Run validators on all entries within
|
||||
for subfield in self.entries:
|
||||
subfield.validate(form)
|
||||
self.errors.append(subfield.errors)
|
||||
|
||||
if not any(x for x in self.errors):
|
||||
self.errors = []
|
||||
|
||||
chain = itertools.chain(self.validators, extra_validators)
|
||||
self._run_validation_chain(form, chain)
|
||||
|
||||
return len(self.errors) == 0
|
||||
|
||||
def populate_obj(self, obj, name):
|
||||
values = getattr(obj, name, None)
|
||||
try:
|
||||
ivalues = iter(values)
|
||||
except TypeError:
|
||||
ivalues = iter([])
|
||||
|
||||
candidates = itertools.chain(ivalues, itertools.repeat(None))
|
||||
_fake = type("_fake", (object,), {})
|
||||
output = []
|
||||
for field, data in zip(self.entries, candidates):
|
||||
fake_obj = _fake()
|
||||
fake_obj.data = data
|
||||
field.populate_obj(fake_obj, "data")
|
||||
output.append(fake_obj.data)
|
||||
|
||||
setattr(obj, name, output)
|
||||
|
||||
def _add_entry(self, formdata=None, data=unset_value, index=None):
|
||||
assert (
|
||||
not self.max_entries or len(self.entries) < self.max_entries
|
||||
), "You cannot have more than max_entries entries in this FieldList"
|
||||
if index is None:
|
||||
index = self.last_index + 1
|
||||
self.last_index = index
|
||||
name = f"{self.short_name}{self._separator}{index}"
|
||||
id = f"{self.id}{self._separator}{index}"
|
||||
field = self.unbound_field.bind(
|
||||
form=None,
|
||||
name=name,
|
||||
prefix=self._prefix,
|
||||
id=id,
|
||||
_meta=self.meta,
|
||||
translations=self._translations,
|
||||
)
|
||||
field.process(formdata, data)
|
||||
self.entries.append(field)
|
||||
return field
|
||||
|
||||
def append_entry(self, data=unset_value):
|
||||
"""
|
||||
Create a new entry with optional default data.
|
||||
|
||||
Entries added in this way will *not* receive formdata however, and can
|
||||
only receive object data.
|
||||
"""
|
||||
return self._add_entry(data=data)
|
||||
|
||||
def pop_entry(self):
|
||||
"""Removes the last entry from the list and returns it."""
|
||||
entry = self.entries.pop()
|
||||
self.last_index -= 1
|
||||
return entry
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.entries)
|
||||
|
||||
def __len__(self):
|
||||
return len(self.entries)
|
||||
|
||||
def __getitem__(self, index):
|
||||
return self.entries[index]
|
||||
|
||||
@property
|
||||
def data(self):
|
||||
return [f.data for f in self.entries]
|
||||
213
venv/lib/python3.11/site-packages/wtforms/fields/numeric.py
Normal file
213
venv/lib/python3.11/site-packages/wtforms/fields/numeric.py
Normal file
@@ -0,0 +1,213 @@
|
||||
import decimal
|
||||
|
||||
from wtforms import widgets
|
||||
from wtforms.fields.core import Field
|
||||
from wtforms.utils import unset_value
|
||||
|
||||
__all__ = (
|
||||
"IntegerField",
|
||||
"DecimalField",
|
||||
"FloatField",
|
||||
"IntegerRangeField",
|
||||
"DecimalRangeField",
|
||||
)
|
||||
|
||||
|
||||
class LocaleAwareNumberField(Field):
|
||||
"""
|
||||
Base class for implementing locale-aware number parsing.
|
||||
|
||||
Locale-aware numbers require the 'babel' package to be present.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
label=None,
|
||||
validators=None,
|
||||
use_locale=False,
|
||||
number_format=None,
|
||||
**kwargs,
|
||||
):
|
||||
super().__init__(label, validators, **kwargs)
|
||||
self.use_locale = use_locale
|
||||
if use_locale:
|
||||
self.number_format = number_format
|
||||
self.locale = kwargs["_form"].meta.locales[0]
|
||||
self._init_babel()
|
||||
|
||||
def _init_babel(self):
|
||||
try:
|
||||
from babel import numbers
|
||||
|
||||
self.babel_numbers = numbers
|
||||
except ImportError as exc:
|
||||
raise ImportError(
|
||||
"Using locale-aware decimals requires the babel library."
|
||||
) from exc
|
||||
|
||||
def _parse_decimal(self, value):
|
||||
return self.babel_numbers.parse_decimal(value, self.locale)
|
||||
|
||||
def _format_decimal(self, value):
|
||||
return self.babel_numbers.format_decimal(value, self.number_format, self.locale)
|
||||
|
||||
|
||||
class IntegerField(Field):
|
||||
"""
|
||||
A text field, except all input is coerced to an integer. Erroneous input
|
||||
is ignored and will not be accepted as a value.
|
||||
"""
|
||||
|
||||
widget = widgets.NumberInput()
|
||||
|
||||
def __init__(self, label=None, validators=None, **kwargs):
|
||||
super().__init__(label, validators, **kwargs)
|
||||
|
||||
def _value(self):
|
||||
if self.raw_data:
|
||||
return self.raw_data[0]
|
||||
if self.data is not None:
|
||||
return str(self.data)
|
||||
return ""
|
||||
|
||||
def process_data(self, value):
|
||||
if value is None or value is unset_value:
|
||||
self.data = None
|
||||
return
|
||||
|
||||
try:
|
||||
self.data = int(value)
|
||||
except (ValueError, TypeError) as exc:
|
||||
self.data = None
|
||||
raise ValueError(self.gettext("Not a valid integer value.")) from exc
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
if not valuelist:
|
||||
return
|
||||
|
||||
try:
|
||||
self.data = int(valuelist[0])
|
||||
except ValueError as exc:
|
||||
self.data = None
|
||||
raise ValueError(self.gettext("Not a valid integer value.")) from exc
|
||||
|
||||
|
||||
class DecimalField(LocaleAwareNumberField):
|
||||
"""
|
||||
A text field which displays and coerces data of the `decimal.Decimal` type.
|
||||
|
||||
:param places:
|
||||
How many decimal places to quantize the value to for display on form.
|
||||
If unset, use 2 decimal places.
|
||||
If explicitely set to `None`, does not quantize value.
|
||||
:param rounding:
|
||||
How to round the value during quantize, for example
|
||||
`decimal.ROUND_UP`. If unset, uses the rounding value from the
|
||||
current thread's context.
|
||||
:param use_locale:
|
||||
If True, use locale-based number formatting. Locale-based number
|
||||
formatting requires the 'babel' package.
|
||||
:param number_format:
|
||||
Optional number format for locale. If omitted, use the default decimal
|
||||
format for the locale.
|
||||
"""
|
||||
|
||||
widget = widgets.NumberInput(step="any")
|
||||
|
||||
def __init__(
|
||||
self, label=None, validators=None, places=unset_value, rounding=None, **kwargs
|
||||
):
|
||||
super().__init__(label, validators, **kwargs)
|
||||
if self.use_locale and (places is not unset_value or rounding is not None):
|
||||
raise TypeError(
|
||||
"When using locale-aware numbers, 'places' and 'rounding' are ignored."
|
||||
)
|
||||
|
||||
if places is unset_value:
|
||||
places = 2
|
||||
self.places = places
|
||||
self.rounding = rounding
|
||||
|
||||
def _value(self):
|
||||
if self.raw_data:
|
||||
return self.raw_data[0]
|
||||
|
||||
if self.data is None:
|
||||
return ""
|
||||
|
||||
if self.use_locale:
|
||||
return str(self._format_decimal(self.data))
|
||||
|
||||
if self.places is None:
|
||||
return str(self.data)
|
||||
|
||||
if not hasattr(self.data, "quantize"):
|
||||
# If for some reason, data is a float or int, then format
|
||||
# as we would for floats using string formatting.
|
||||
format = "%%0.%df" % self.places
|
||||
return format % self.data
|
||||
|
||||
exp = decimal.Decimal(".1") ** self.places
|
||||
if self.rounding is None:
|
||||
quantized = self.data.quantize(exp)
|
||||
else:
|
||||
quantized = self.data.quantize(exp, rounding=self.rounding)
|
||||
return str(quantized)
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
if not valuelist:
|
||||
return
|
||||
|
||||
try:
|
||||
if self.use_locale:
|
||||
self.data = self._parse_decimal(valuelist[0])
|
||||
else:
|
||||
self.data = decimal.Decimal(valuelist[0])
|
||||
except (decimal.InvalidOperation, ValueError) as exc:
|
||||
self.data = None
|
||||
raise ValueError(self.gettext("Not a valid decimal value.")) from exc
|
||||
|
||||
|
||||
class FloatField(Field):
|
||||
"""
|
||||
A text field, except all input is coerced to an float. Erroneous input
|
||||
is ignored and will not be accepted as a value.
|
||||
"""
|
||||
|
||||
widget = widgets.TextInput()
|
||||
|
||||
def __init__(self, label=None, validators=None, **kwargs):
|
||||
super().__init__(label, validators, **kwargs)
|
||||
|
||||
def _value(self):
|
||||
if self.raw_data:
|
||||
return self.raw_data[0]
|
||||
if self.data is not None:
|
||||
return str(self.data)
|
||||
return ""
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
if not valuelist:
|
||||
return
|
||||
|
||||
try:
|
||||
self.data = float(valuelist[0])
|
||||
except ValueError as exc:
|
||||
self.data = None
|
||||
raise ValueError(self.gettext("Not a valid float value.")) from exc
|
||||
|
||||
|
||||
class IntegerRangeField(IntegerField):
|
||||
"""
|
||||
Represents an ``<input type="range">``.
|
||||
"""
|
||||
|
||||
widget = widgets.RangeInput()
|
||||
|
||||
|
||||
class DecimalRangeField(DecimalField):
|
||||
"""
|
||||
Represents an ``<input type="range">``.
|
||||
"""
|
||||
|
||||
widget = widgets.RangeInput(step="any")
|
||||
173
venv/lib/python3.11/site-packages/wtforms/fields/simple.py
Normal file
173
venv/lib/python3.11/site-packages/wtforms/fields/simple.py
Normal file
@@ -0,0 +1,173 @@
|
||||
from .. import widgets
|
||||
from .core import Field
|
||||
|
||||
__all__ = (
|
||||
"BooleanField",
|
||||
"TextAreaField",
|
||||
"PasswordField",
|
||||
"FileField",
|
||||
"MultipleFileField",
|
||||
"HiddenField",
|
||||
"SearchField",
|
||||
"SubmitField",
|
||||
"StringField",
|
||||
"TelField",
|
||||
"URLField",
|
||||
"EmailField",
|
||||
"ColorField",
|
||||
)
|
||||
|
||||
|
||||
class BooleanField(Field):
|
||||
"""
|
||||
Represents an ``<input type="checkbox">``. Set the ``checked``-status by using the
|
||||
``default``-option. Any value for ``default``, e.g. ``default="checked"`` puts
|
||||
``checked`` into the html-element and sets the ``data`` to ``True``
|
||||
|
||||
:param false_values:
|
||||
If provided, a sequence of strings each of which is an exact match
|
||||
string of what is considered a "false" value. Defaults to the tuple
|
||||
``(False, "false", "")``
|
||||
"""
|
||||
|
||||
widget = widgets.CheckboxInput()
|
||||
false_values = (False, "false", "")
|
||||
|
||||
def __init__(self, label=None, validators=None, false_values=None, **kwargs):
|
||||
super().__init__(label, validators, **kwargs)
|
||||
if false_values is not None:
|
||||
self.false_values = false_values
|
||||
|
||||
def process_data(self, value):
|
||||
self.data = bool(value)
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
if not valuelist or valuelist[0] in self.false_values:
|
||||
self.data = False
|
||||
else:
|
||||
self.data = True
|
||||
|
||||
def _value(self):
|
||||
if self.raw_data:
|
||||
return str(self.raw_data[0])
|
||||
return "y"
|
||||
|
||||
|
||||
class StringField(Field):
|
||||
"""
|
||||
This field is the base for most of the more complicated fields, and
|
||||
represents an ``<input type="text">``.
|
||||
"""
|
||||
|
||||
widget = widgets.TextInput()
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
if valuelist:
|
||||
self.data = valuelist[0]
|
||||
|
||||
def _value(self):
|
||||
return str(self.data) if self.data is not None else ""
|
||||
|
||||
|
||||
class TextAreaField(StringField):
|
||||
"""
|
||||
This field represents an HTML ``<textarea>`` and can be used to take
|
||||
multi-line input.
|
||||
"""
|
||||
|
||||
widget = widgets.TextArea()
|
||||
|
||||
|
||||
class PasswordField(StringField):
|
||||
"""
|
||||
A StringField, except renders an ``<input type="password">``.
|
||||
|
||||
Also, whatever value is accepted by this field is not rendered back
|
||||
to the browser like normal fields.
|
||||
"""
|
||||
|
||||
widget = widgets.PasswordInput()
|
||||
|
||||
|
||||
class FileField(Field):
|
||||
"""Renders a file upload field.
|
||||
|
||||
By default, the value will be the filename sent in the form data.
|
||||
WTForms **does not** deal with frameworks' file handling capabilities.
|
||||
A WTForms extension for a framework may replace the filename value
|
||||
with an object representing the uploaded data.
|
||||
"""
|
||||
|
||||
widget = widgets.FileInput()
|
||||
|
||||
def _value(self):
|
||||
# browser ignores value of file input for security
|
||||
return False
|
||||
|
||||
|
||||
class MultipleFileField(FileField):
|
||||
"""A :class:`FileField` that allows choosing multiple files."""
|
||||
|
||||
widget = widgets.FileInput(multiple=True)
|
||||
|
||||
def process_formdata(self, valuelist):
|
||||
self.data = valuelist
|
||||
|
||||
|
||||
class HiddenField(StringField):
|
||||
"""
|
||||
HiddenField is a convenience for a StringField with a HiddenInput widget.
|
||||
|
||||
It will render as an ``<input type="hidden">`` but otherwise coerce to a string.
|
||||
"""
|
||||
|
||||
widget = widgets.HiddenInput()
|
||||
|
||||
|
||||
class SubmitField(BooleanField):
|
||||
"""
|
||||
Represents an ``<input type="submit">``. This allows checking if a given
|
||||
submit button has been pressed.
|
||||
"""
|
||||
|
||||
widget = widgets.SubmitInput()
|
||||
|
||||
|
||||
class SearchField(StringField):
|
||||
"""
|
||||
Represents an ``<input type="search">``.
|
||||
"""
|
||||
|
||||
widget = widgets.SearchInput()
|
||||
|
||||
|
||||
class TelField(StringField):
|
||||
"""
|
||||
Represents an ``<input type="tel">``.
|
||||
"""
|
||||
|
||||
widget = widgets.TelInput()
|
||||
|
||||
|
||||
class URLField(StringField):
|
||||
"""
|
||||
Represents an ``<input type="url">``.
|
||||
"""
|
||||
|
||||
widget = widgets.URLInput()
|
||||
|
||||
|
||||
class EmailField(StringField):
|
||||
"""
|
||||
Represents an ``<input type="email">``.
|
||||
"""
|
||||
|
||||
widget = widgets.EmailInput()
|
||||
|
||||
|
||||
class ColorField(StringField):
|
||||
"""
|
||||
Represents an ``<input type="color">``.
|
||||
"""
|
||||
|
||||
widget = widgets.ColorInput()
|
||||
330
venv/lib/python3.11/site-packages/wtforms/form.py
Normal file
330
venv/lib/python3.11/site-packages/wtforms/form.py
Normal file
@@ -0,0 +1,330 @@
|
||||
import itertools
|
||||
from collections import OrderedDict
|
||||
|
||||
from wtforms.meta import DefaultMeta
|
||||
from wtforms.utils import unset_value
|
||||
|
||||
__all__ = ("BaseForm", "Form")
|
||||
|
||||
_default_meta = DefaultMeta()
|
||||
|
||||
|
||||
class BaseForm:
|
||||
"""
|
||||
Base Form Class. Provides core behaviour like field construction,
|
||||
validation, and data and error proxying.
|
||||
"""
|
||||
|
||||
def __init__(self, fields, prefix="", meta=_default_meta):
|
||||
"""
|
||||
:param fields:
|
||||
A dict or sequence of 2-tuples of partially-constructed fields.
|
||||
:param prefix:
|
||||
If provided, all fields will have their name prefixed with the
|
||||
value.
|
||||
:param meta:
|
||||
A meta instance which is used for configuration and customization
|
||||
of WTForms behaviors.
|
||||
"""
|
||||
if prefix and prefix[-1] not in "-_;:/.":
|
||||
prefix += "-"
|
||||
|
||||
self.meta = meta
|
||||
self._form_error_key = ""
|
||||
self._prefix = prefix
|
||||
self._fields = OrderedDict()
|
||||
|
||||
if hasattr(fields, "items"):
|
||||
fields = fields.items()
|
||||
|
||||
translations = self.meta.get_translations(self)
|
||||
extra_fields = []
|
||||
if meta.csrf:
|
||||
self._csrf = meta.build_csrf(self)
|
||||
extra_fields.extend(self._csrf.setup_form(self))
|
||||
|
||||
for name, unbound_field in itertools.chain(fields, extra_fields):
|
||||
field_name = unbound_field.name or name
|
||||
options = dict(name=field_name, prefix=prefix, translations=translations)
|
||||
field = meta.bind_field(self, unbound_field, options)
|
||||
self._fields[name] = field
|
||||
|
||||
self.form_errors = []
|
||||
|
||||
def __iter__(self):
|
||||
"""Iterate form fields in creation order."""
|
||||
return iter(self._fields.values())
|
||||
|
||||
def __contains__(self, name):
|
||||
"""Returns `True` if the named field is a member of this form."""
|
||||
return name in self._fields
|
||||
|
||||
def __getitem__(self, name):
|
||||
"""Dict-style access to this form's fields."""
|
||||
return self._fields[name]
|
||||
|
||||
def __setitem__(self, name, value):
|
||||
"""Bind a field to this form."""
|
||||
self._fields[name] = value.bind(form=self, name=name, prefix=self._prefix)
|
||||
|
||||
def __delitem__(self, name):
|
||||
"""Remove a field from this form."""
|
||||
del self._fields[name]
|
||||
|
||||
def populate_obj(self, obj):
|
||||
"""
|
||||
Populates the attributes of the passed `obj` with data from the form's
|
||||
fields.
|
||||
|
||||
:note: This is a destructive operation; Any attribute with the same name
|
||||
as a field will be overridden. Use with caution.
|
||||
"""
|
||||
for name, field in self._fields.items():
|
||||
field.populate_obj(obj, name)
|
||||
|
||||
def process(self, formdata=None, obj=None, data=None, extra_filters=None, **kwargs):
|
||||
"""Process default and input data with each field.
|
||||
|
||||
:param formdata: Input data coming from the client, usually
|
||||
``request.form`` or equivalent. Should provide a "multi
|
||||
dict" interface to get a list of values for a given key,
|
||||
such as what Werkzeug, Django, and WebOb provide.
|
||||
:param obj: Take existing data from attributes on this object
|
||||
matching form field attributes. Only used if ``formdata`` is
|
||||
not passed.
|
||||
:param data: Take existing data from keys in this dict matching
|
||||
form field attributes. ``obj`` takes precedence if it also
|
||||
has a matching attribute. Only used if ``formdata`` is not
|
||||
passed.
|
||||
:param extra_filters: A dict mapping field attribute names to
|
||||
lists of extra filter functions to run. Extra filters run
|
||||
after filters passed when creating the field. If the form
|
||||
has ``filter_<fieldname>``, it is the last extra filter.
|
||||
:param kwargs: Merged with ``data`` to allow passing existing
|
||||
data as parameters. Overwrites any duplicate keys in
|
||||
``data``. Only used if ``formdata`` is not passed.
|
||||
"""
|
||||
formdata = self.meta.wrap_formdata(self, formdata)
|
||||
|
||||
if data is not None:
|
||||
kwargs = dict(data, **kwargs)
|
||||
|
||||
filters = extra_filters.copy() if extra_filters is not None else {}
|
||||
|
||||
for name, field in self._fields.items():
|
||||
field_extra_filters = filters.get(name, [])
|
||||
|
||||
inline_filter = getattr(self, f"filter_{name}", None)
|
||||
if inline_filter is not None:
|
||||
field_extra_filters.append(inline_filter)
|
||||
|
||||
if obj is not None and hasattr(obj, name):
|
||||
data = getattr(obj, name)
|
||||
elif name in kwargs:
|
||||
data = kwargs[name]
|
||||
else:
|
||||
data = unset_value
|
||||
|
||||
field.process(formdata, data, extra_filters=field_extra_filters)
|
||||
|
||||
def validate(self, extra_validators=None):
|
||||
"""
|
||||
Validates the form by calling `validate` on each field.
|
||||
|
||||
:param extra_validators:
|
||||
If provided, is a dict mapping field names to a sequence of
|
||||
callables which will be passed as extra validators to the field's
|
||||
`validate` method.
|
||||
|
||||
Returns `True` if no errors occur.
|
||||
"""
|
||||
success = True
|
||||
for name, field in self._fields.items():
|
||||
if extra_validators is not None and name in extra_validators:
|
||||
extra = extra_validators[name]
|
||||
else:
|
||||
extra = tuple()
|
||||
if not field.validate(self, extra):
|
||||
success = False
|
||||
return success
|
||||
|
||||
@property
|
||||
def data(self):
|
||||
return {name: f.data for name, f in self._fields.items()}
|
||||
|
||||
@property
|
||||
def errors(self):
|
||||
errors = {name: f.errors for name, f in self._fields.items() if f.errors}
|
||||
if self.form_errors:
|
||||
errors[self._form_error_key] = self.form_errors
|
||||
return errors
|
||||
|
||||
|
||||
class FormMeta(type):
|
||||
"""
|
||||
The metaclass for `Form` and any subclasses of `Form`.
|
||||
|
||||
`FormMeta`'s responsibility is to create the `_unbound_fields` list, which
|
||||
is a list of `UnboundField` instances sorted by their order of
|
||||
instantiation. The list is created at the first instantiation of the form.
|
||||
If any fields are added/removed from the form, the list is cleared to be
|
||||
re-generated on the next instantiation.
|
||||
|
||||
Any properties which begin with an underscore or are not `UnboundField`
|
||||
instances are ignored by the metaclass.
|
||||
"""
|
||||
|
||||
def __init__(cls, name, bases, attrs):
|
||||
type.__init__(cls, name, bases, attrs)
|
||||
cls._unbound_fields = None
|
||||
cls._wtforms_meta = None
|
||||
|
||||
def __call__(cls, *args, **kwargs):
|
||||
"""
|
||||
Construct a new `Form` instance.
|
||||
|
||||
Creates the `_unbound_fields` list and the internal `_wtforms_meta`
|
||||
subclass of the class Meta in order to allow a proper inheritance
|
||||
hierarchy.
|
||||
"""
|
||||
if cls._unbound_fields is None:
|
||||
fields = []
|
||||
for name in dir(cls):
|
||||
if not name.startswith("_"):
|
||||
unbound_field = getattr(cls, name)
|
||||
if hasattr(unbound_field, "_formfield"):
|
||||
fields.append((name, unbound_field))
|
||||
# We keep the name as the second element of the sort
|
||||
# to ensure a stable sort.
|
||||
fields.sort(key=lambda x: (x[1].creation_counter, x[0]))
|
||||
cls._unbound_fields = fields
|
||||
|
||||
# Create a subclass of the 'class Meta' using all the ancestors.
|
||||
if cls._wtforms_meta is None:
|
||||
bases = []
|
||||
for mro_class in cls.__mro__:
|
||||
if "Meta" in mro_class.__dict__:
|
||||
bases.append(mro_class.Meta)
|
||||
cls._wtforms_meta = type("Meta", tuple(bases), {})
|
||||
return type.__call__(cls, *args, **kwargs)
|
||||
|
||||
def __setattr__(cls, name, value):
|
||||
"""
|
||||
Add an attribute to the class, clearing `_unbound_fields` if needed.
|
||||
"""
|
||||
if name == "Meta":
|
||||
cls._wtforms_meta = None
|
||||
elif not name.startswith("_") and hasattr(value, "_formfield"):
|
||||
cls._unbound_fields = None
|
||||
type.__setattr__(cls, name, value)
|
||||
|
||||
def __delattr__(cls, name):
|
||||
"""
|
||||
Remove an attribute from the class, clearing `_unbound_fields` if
|
||||
needed.
|
||||
"""
|
||||
if not name.startswith("_"):
|
||||
cls._unbound_fields = None
|
||||
type.__delattr__(cls, name)
|
||||
|
||||
|
||||
class Form(BaseForm, metaclass=FormMeta):
|
||||
"""
|
||||
Declarative Form base class. Extends BaseForm's core behaviour allowing
|
||||
fields to be defined on Form subclasses as class attributes.
|
||||
|
||||
In addition, form and instance input data are taken at construction time
|
||||
and passed to `process()`.
|
||||
"""
|
||||
|
||||
Meta = DefaultMeta
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
formdata=None,
|
||||
obj=None,
|
||||
prefix="",
|
||||
data=None,
|
||||
meta=None,
|
||||
**kwargs,
|
||||
):
|
||||
"""
|
||||
:param formdata: Input data coming from the client, usually
|
||||
``request.form`` or equivalent. Should provide a "multi
|
||||
dict" interface to get a list of values for a given key,
|
||||
such as what Werkzeug, Django, and WebOb provide.
|
||||
:param obj: Take existing data from attributes on this object
|
||||
matching form field attributes. Only used if ``formdata`` is
|
||||
not passed.
|
||||
:param prefix: If provided, all fields will have their name
|
||||
prefixed with the value. This is for distinguishing multiple
|
||||
forms on a single page. This only affects the HTML name for
|
||||
matching input data, not the Python name for matching
|
||||
existing data.
|
||||
:param data: Take existing data from keys in this dict matching
|
||||
form field attributes. ``obj`` takes precedence if it also
|
||||
has a matching attribute. Only used if ``formdata`` is not
|
||||
passed.
|
||||
:param meta: A dict of attributes to override on this form's
|
||||
:attr:`meta` instance.
|
||||
:param extra_filters: A dict mapping field attribute names to
|
||||
lists of extra filter functions to run. Extra filters run
|
||||
after filters passed when creating the field. If the form
|
||||
has ``filter_<fieldname>``, it is the last extra filter.
|
||||
:param kwargs: Merged with ``data`` to allow passing existing
|
||||
data as parameters. Overwrites any duplicate keys in
|
||||
``data``. Only used if ``formdata`` is not passed.
|
||||
"""
|
||||
meta_obj = self._wtforms_meta()
|
||||
if meta is not None and isinstance(meta, dict):
|
||||
meta_obj.update_values(meta)
|
||||
super().__init__(self._unbound_fields, meta=meta_obj, prefix=prefix)
|
||||
|
||||
for name, field in self._fields.items():
|
||||
# Set all the fields to attributes so that they obscure the class
|
||||
# attributes with the same names.
|
||||
setattr(self, name, field)
|
||||
self.process(formdata, obj, data=data, **kwargs)
|
||||
|
||||
def __setitem__(self, name, value):
|
||||
raise TypeError("Fields may not be added to Form instances, only classes.")
|
||||
|
||||
def __delitem__(self, name):
|
||||
del self._fields[name]
|
||||
setattr(self, name, None)
|
||||
|
||||
def __delattr__(self, name):
|
||||
if name in self._fields:
|
||||
self.__delitem__(name)
|
||||
else:
|
||||
# This is done for idempotency, if we have a name which is a field,
|
||||
# we want to mask it by setting the value to None.
|
||||
unbound_field = getattr(self.__class__, name, None)
|
||||
if unbound_field is not None and hasattr(unbound_field, "_formfield"):
|
||||
setattr(self, name, None)
|
||||
else:
|
||||
super().__delattr__(name)
|
||||
|
||||
def validate(self, extra_validators=None):
|
||||
"""Validate the form by calling ``validate`` on each field.
|
||||
Returns ``True`` if validation passes.
|
||||
|
||||
If the form defines a ``validate_<fieldname>`` method, it is
|
||||
appended as an extra validator for the field's ``validate``.
|
||||
|
||||
:param extra_validators: A dict mapping field names to lists of
|
||||
extra validator methods to run. Extra validators run after
|
||||
validators passed when creating the field. If the form has
|
||||
``validate_<fieldname>``, it is the last extra validator.
|
||||
"""
|
||||
if extra_validators is not None:
|
||||
extra = extra_validators.copy()
|
||||
else:
|
||||
extra = {}
|
||||
|
||||
for name in self._fields:
|
||||
inline = getattr(self.__class__, f"validate_{name}", None)
|
||||
if inline is not None:
|
||||
extra.setdefault(name, []).append(inline)
|
||||
|
||||
return super().validate(extra)
|
||||
72
venv/lib/python3.11/site-packages/wtforms/i18n.py
Normal file
72
venv/lib/python3.11/site-packages/wtforms/i18n.py
Normal file
@@ -0,0 +1,72 @@
|
||||
import os
|
||||
|
||||
|
||||
def messages_path():
|
||||
"""
|
||||
Determine the path to the 'messages' directory as best possible.
|
||||
"""
|
||||
module_path = os.path.abspath(__file__)
|
||||
locale_path = os.path.join(os.path.dirname(module_path), "locale")
|
||||
if not os.path.exists(locale_path): # pragma: no cover
|
||||
locale_path = "/usr/share/locale"
|
||||
return locale_path
|
||||
|
||||
|
||||
def get_builtin_gnu_translations(languages=None):
|
||||
"""
|
||||
Get a gettext.GNUTranslations object pointing at the
|
||||
included translation files.
|
||||
|
||||
:param languages:
|
||||
A list of languages to try, in order. If omitted or None, then
|
||||
gettext will try to use locale information from the environment.
|
||||
"""
|
||||
import gettext
|
||||
|
||||
return gettext.translation("wtforms", messages_path(), languages)
|
||||
|
||||
|
||||
def get_translations(languages=None, getter=get_builtin_gnu_translations):
|
||||
"""
|
||||
Get a WTForms translation object which wraps a low-level translations object.
|
||||
|
||||
:param languages:
|
||||
A sequence of languages to try, in order.
|
||||
:param getter:
|
||||
A single-argument callable which returns a low-level translations object.
|
||||
"""
|
||||
return getter(languages)
|
||||
|
||||
|
||||
class DefaultTranslations:
|
||||
"""
|
||||
A WTForms translations object to wrap translations objects which use
|
||||
ugettext/ungettext.
|
||||
"""
|
||||
|
||||
def __init__(self, translations):
|
||||
self.translations = translations
|
||||
|
||||
def gettext(self, string):
|
||||
return self.translations.ugettext(string)
|
||||
|
||||
def ngettext(self, singular, plural, n):
|
||||
return self.translations.ungettext(singular, plural, n)
|
||||
|
||||
|
||||
class DummyTranslations:
|
||||
"""
|
||||
A translations object which simply returns unmodified strings.
|
||||
|
||||
This is typically used when translations are disabled or if no valid
|
||||
translations provider can be found.
|
||||
"""
|
||||
|
||||
def gettext(self, string):
|
||||
return string
|
||||
|
||||
def ngettext(self, singular, plural, n):
|
||||
if n == 1:
|
||||
return singular
|
||||
|
||||
return plural
|
||||
62
venv/lib/python3.11/site-packages/wtforms/locale/README.md
Normal file
62
venv/lib/python3.11/site-packages/wtforms/locale/README.md
Normal file
@@ -0,0 +1,62 @@
|
||||
Translations
|
||||
============
|
||||
|
||||
WTForms uses gettext to provide translations. Translations for various
|
||||
strings rendered by WTForms are created and updated by the community. If
|
||||
you notice that your locale is missing, or find a translation error,
|
||||
please submit a fix.
|
||||
|
||||
|
||||
Create
|
||||
------
|
||||
|
||||
To create a translation, initialize a catalog in the new locale:
|
||||
|
||||
```
|
||||
$ pybabel init --input-file src/wtforms/locale/wtforms.pot --output-dir src/wtforms/locale --domain wtforms --locale <your locale>
|
||||
```
|
||||
|
||||
This will create some folders under the locale name and copy the
|
||||
template.
|
||||
|
||||
Update
|
||||
------
|
||||
|
||||
To add new translatable string to the catalog:
|
||||
|
||||
```
|
||||
pybabel extract --copyright-holder="WTForms Team" --project="WTForms" --version="$(python -c 'import wtforms; print(wtforms.__version__)')" --output-file src/wtforms/locale/wtforms.pot src/wtforms
|
||||
```
|
||||
|
||||
Edit
|
||||
----
|
||||
|
||||
After creating a translation, or to edit an existing translation, open
|
||||
the ``.po`` file. While they can be edited by hand, there are also tools
|
||||
that make working with gettext files easier.
|
||||
|
||||
Make sure the `.po` file:
|
||||
|
||||
- Is a valid UTF-8 text file.
|
||||
- Has the header filled out appropriately.
|
||||
- Translates all messages.
|
||||
|
||||
|
||||
Verify
|
||||
------
|
||||
|
||||
After working on the catalog, verify that it compiles and produces the
|
||||
correct translations.
|
||||
|
||||
```
|
||||
$ pybabel compile --directory src/wtforms/locale --domain wtforms --statistics
|
||||
```
|
||||
|
||||
Try loading your translations into some sample code to verify they look
|
||||
correct.
|
||||
|
||||
|
||||
Submit
|
||||
------
|
||||
|
||||
To submit your translation, create a pull request on GitHub.
|
||||
Binary file not shown.
@@ -0,0 +1,205 @@
|
||||
# Arabic translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2015-04-08 20:59+0100\n"
|
||||
"Last-Translator: Jalal Maqdisi <jalal.maqdisi@gmail.com>\n"
|
||||
"Language-Team: ar <LL@li.org>\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n>=3 && "
|
||||
"n<=10 ? 3 : n>=11 && n<=99 ? 4 : 5)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "اسم الحقل '%s' غير صالح."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "يجب على الحقل ان يساوي %(other_name)s ."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "لا يمكن للحقل ان يحتوي على اقل من %(min)d حرف."
|
||||
msgstr[1] "لا يمكن للحقل ان يحتوي على اقل من %(min)d حروف."
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
msgstr[4] ""
|
||||
msgstr[5] ""
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "لا يمكن للحقل ان يحتوي على اكثر من %(max)d حرف."
|
||||
msgstr[1] "لا يمكن للحقل ان يحتوي على اكثر من %(max)d حروف."
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
msgstr[4] ""
|
||||
msgstr[5] ""
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
msgstr[4] ""
|
||||
msgstr[5] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "يجب على طول الحقل ان يكون ما بين %(min)d و %(max)d حرف."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "لا يجب على الرقم ان يقل عن %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "لا يجب على الرقم ان يزيد عن %(max)s. "
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "يجب على الرقم ان يكون ما بين %(min)s و %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "هذا الحقل مطلوب."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "الاملاء غير صالح."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "البريد الالكتروني غير صالح."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "پروتوكول الانترنت IP غير صالح."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "عنوان Mac غير صالح."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "عنوان الرابط غير صالح."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "عنوان UUID غير صالح."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "قيمة غير صالحة، يجب أن تكون واحدة من: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "قيمة غير صالحة، يجب أن تكون اي من: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "هذا الحقل مطلوب."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "رمز CSRF غير صالح."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "رمز CSRF مفقود."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF قد فشل."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "انتهت صلاحية رمز CSRF."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "اختيار غير صالح: لا يمكن الاجبار."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "اختيار غير صحيح."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "اختيارات غير صالحة: واحدة او اكثر من الادخالات لا يمكن اجبارها."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "القيمة '%(value)s' ليست باختيار صحيح لهذا الحقل."
|
||||
msgstr[1] "القيمة '%(value)s' ليست باختيار صحيح لهذا الحقل."
|
||||
msgstr[2] "القيمة '%(value)s' ليست باختيار صحيح لهذا الحقل."
|
||||
msgstr[3] "القيمة '%(value)s' ليست باختيار صحيح لهذا الحقل."
|
||||
msgstr[4] "القيمة '%(value)s' ليست باختيار صحيح لهذا الحقل."
|
||||
msgstr[5] "القيمة '%(value)s' ليست باختيار صحيح لهذا الحقل."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "قيمة الوقت والتاريخ غير صالحة."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "قيمة التاريخ غير صالحة."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "قيمة التاريخ غير صالحة."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "قيمة العدد الحقيقي غير صالحة."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "القيمة العشرية غير صالحة."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "القيمة العائمة غير صالحة."
|
||||
Binary file not shown.
@@ -0,0 +1,190 @@
|
||||
# Bulgarian (Bulgaria) translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2017-02-16 11:59+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Vladimir Kolev <me@vkolev.net>\n"
|
||||
"Language: bg_BG\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Невалидно име на поле '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Полето трябва да е еднакво с %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Полето трябва да бъде дълго поне %(min)d символ."
|
||||
msgstr[1] "Полето трябва да бъде дълго поне %(min)d символа."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Полето не моде да бъде по-дълго от %(max)d символ."
|
||||
msgstr[1] "Полето не моде да бъде по-дълго от %(max)d символа."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Дължината на полето трябва да бъде между %(min)d и %(max)d символа."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Числото трябва да е поне %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Числото трябва да е максимално %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Числото трябва да бъде между %(min)s и %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Това поле е задължително"
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Невалидно въвеждане."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Невалиден Е-мейл адрес."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Невалиден IP адрес."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Невалиден MAC адрес."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Невалиден URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Невалиден UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Невалидна стойност, трябва да бъде една от: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Невалидна стойност, не може да бъде една от: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Това поле е задължително"
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Невалиден CSRF Token"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF token липсва"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF провален"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF token изтече"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Невалиден избор: не може да бъде преобразувана"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Не е валиден избор"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Невалиден(и) избор(и): една или повече въведени данни не могат да бъдат "
|
||||
"преобразувани"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' не е валиден избор за това поле"
|
||||
msgstr[1] "'%(value)s' не е валиден избор за това поле"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Не е валидна стойност за дата и време"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Не е валидна стойност за дата"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Не е валидна стойност за дата"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Не е валидна цифрова стойност"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Не е валидна десетична стойност"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Не е валидна стойност с плаваща запетая"
|
||||
Binary file not shown.
@@ -0,0 +1,189 @@
|
||||
# Catalan translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2014-01-16 09:58+0100\n"
|
||||
"Last-Translator: Òscar Vilaplana <oscar.vilaplana@paylogic.eu>\n"
|
||||
"Language-Team: ca <oscar.vilaplana@paylogic.eu>\n"
|
||||
"Language: ca\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Nom de camp no vàlid '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "El camp ha de ser igual a %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "El camp ha de contenir almenys %(min)d caràcter."
|
||||
msgstr[1] "El camp ha de contenir almenys %(min)d caràcters."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "El camp no pot contenir més d'%(max)d caràcter."
|
||||
msgstr[1] "El camp no pot contenir més de %(max)d caràcters."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "El camp ha de contenir entre %(min)d i %(min)d caràcters."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "El nombre ha de ser major o igual a %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "El nombre ha de ser com a màxim %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "El nombre ha d'estar entre %(min)s i %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Aquest camp és obligatori."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Valor no vàlid."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Adreça d'e-mail no vàlida."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Adreça IP no vàlida."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Adreça MAC no vàlida."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "URL no vàlida."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "UUID no vàlid."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Valor no vàlid, ha de ser un d'entre: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Valor no vàlid, no pot ser cap d'aquests: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Aquest camp és obligatori."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Token CSRF no vàlid"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Falta el token CSRF"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "Ha fallat la comprovació de CSRF"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "Token CSRF caducat"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Opció no vàlida"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Opció no acceptada"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Opció o opcions no vàlides: alguna de les entrades no s'ha pogut processar"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' no és una opció acceptada per a aquest camp"
|
||||
msgstr[1] "'%(value)s' no és una opció acceptada per a aquest camp"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Valor de data i hora no vàlid"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Valor de data no vàlid"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Valor de data no vàlid"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Valor enter no vàlid"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Valor decimal no vàlid"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Valor en coma flotant no vàlid"
|
||||
Binary file not shown.
@@ -0,0 +1,192 @@
|
||||
# Czech (Czechia) translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0.2dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Daniil Barabash <ghostbarik@gmail.com>\n"
|
||||
"Language-Team: cz <ghostbarik@gmail.com>\n"
|
||||
"Language: cs_CZ\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Neplatný název pole '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Hodnota pole má být stejná jako u %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Počet znaků daného pole má být minimálně %(min)d."
|
||||
msgstr[1] "Počet znaků daného pole má být minimálně %(min)d."
|
||||
msgstr[2] ""
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Počet znaků daného pole má byt maximálně %(max)d."
|
||||
msgstr[1] "Počet znaků daného pole má byt maximálně %(max)d."
|
||||
msgstr[2] ""
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Délka pole ma být mezi %(min)d a %(max)d."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Hodnota čísla má být alespoň %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Hodnota čísla má být maximálně %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Hodnota čísla má být mezi %(min)s and %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Toto pole je povinné."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Neplatný vstup."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Neplatná emailová adresa."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Neplatná IP adresa."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Neplatná MAC adresa."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Neplatné URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Neplatné UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Neplatná hodnota, povolené hodnoty jsou: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Neplatná hodnota, nesmí být mezi: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Toto pole je povinné."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Neplatný CSRF token."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Chybí CSRF token."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "Chyba CSRF."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "Hodnota CSRF tokenu."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Neplatná volba: nelze převést."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Neplatná volba."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Neplatná volba: jeden nebo více datových vstupů nemohou být převedeny."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' není platnou volbou pro dané pole."
|
||||
msgstr[1] "'%(value)s' není platnou volbou pro dané pole."
|
||||
msgstr[2] "'%(value)s' není platnou volbou pro dané pole."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Neplatná hodnota pro datum a čas."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Neplatná hodnota pro datum."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Neplatná hodnota pro datum."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Neplatná hodnota pro celé číslo."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Neplatná hodnota pro desetinné číslo."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Neplatná hodnota pro desetinné číslo."
|
||||
Binary file not shown.
@@ -0,0 +1,189 @@
|
||||
# Welsh translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2015-01-29 14:07+0000\n"
|
||||
"Last-Translator: Josh Rowe josh.rowe@digital.justice.gov.uk\n"
|
||||
"Language-Team: cy <LL@li.org>\n"
|
||||
"Language: cy\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Enw maes annilys '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Rhaid i'r maes fod yr un fath â/ag %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Mae'n rhaid i Maes fod o leiaf %(min)d cymeriad hir."
|
||||
msgstr[1] "Mae'n rhaid i Maes fod o leiaf %(min)d nod o hyd."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Ni all Maes fod yn hirach na %(max)d cymeriad."
|
||||
msgstr[1] "Ni all Maes fod yn fwy na %(max)d cymeriadau."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Rhaid i'r maes fod rhwng %(min)d a %(max)d o nodau"
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Rhaid i'r rhif fod o leiaf %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Ni chaiff y rhif fod yn fwy na %(max)s. "
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Rhaid i'r rhif fod rhwng %(min)s a %(max)s. "
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Rhaid cwblhau'r maes hwn."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Mewnbwn annilys"
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Cyfeiriad e-bost annilys"
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Cyfeiriad IP annilys"
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Cyfeiriad Mac annilys."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "URL annilys."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "UUID annilys."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Gwerth annilys, rhaid i'r gwerth fod yn un o'r canlynol: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Gwerth annilys, ni all fod yn un o'r canlynol: %(values)s"
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Rhaid cwblhau'r maes hwn."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Tocyn CSRF annilys"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Tocyn CSRF ar goll"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF wedi methu"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "Tocyn CSRF wedi dod i ben"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Dewis annilys: ddim yn bosib gweithredu"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Nid yw hwn yn ddewis dilys"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Dewis(iadau) annilys: ddim yn bosib gweithredu un neu ragor o fewnbynnau data"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "Nid yw '%(value)s' yn ddewis dilys ar gyfer y maes hwn"
|
||||
msgstr[1] "Nid yw '%(value)s' yn ddewis dilys ar gyfer y maes hwn"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Gwerth dyddiad/amser annilys"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Gwerth dyddiad annilys"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Gwerth dyddiad annilys"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Gwerth integer annilys"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Gwerth degolyn annilys"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Gwerth float annilys"
|
||||
Binary file not shown.
@@ -0,0 +1,190 @@
|
||||
# German translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0.4\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2013-05-13 19:27+0100\n"
|
||||
"Last-Translator: Chris Buergi <chris.buergi@gmx.net>\n"
|
||||
"Language-Team: de <LL@li.org>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Ungültiger Feldname '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Feld muss gleich wie %(other_name)s sein."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Feld muss mindestens %(min)d Zeichen beinhalten."
|
||||
msgstr[1] "Feld muss mindestens %(min)d Zeichen beinhalten."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Feld kann nicht länger als %(max)d Zeichen sein."
|
||||
msgstr[1] "Feld kann nicht länger als %(max)d Zeichen sein."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Feld muss zwischen %(min)d und %(max)d Zeichen beinhalten."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Zahl muss mindestens %(min)s sein."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Zahl kann höchstens %(max)s sein."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Zahl muss zwischen %(min)s und %(max)s liegen."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Dieses Feld wird benötigt."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Ungültige Eingabe."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Ungültige E-Mail-Adresse."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Ungültige IP-Adresse."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Ungültige Mac-Adresse."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Ungültige URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Ungültige UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Ungültiger Wert. Mögliche Werte: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Ungültiger Wert. Wert kann keiner von folgenden sein: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Dieses Feld wird benötigt."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Ungültiger CSRF-Code."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF-Code nicht vorhanden."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF fehlgeschlagen."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF-Code verfallen."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Ungültige Auswahl: Konnte nicht umwandeln."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Keine gültige Auswahl."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Ungültige Auswahl: Einer oder mehrere Eingaben konnten nicht umgewandelt "
|
||||
"werden."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' ist kein gültige Auswahl für dieses Feld."
|
||||
msgstr[1] "'%(value)s' ist kein gültige Auswahl für dieses Feld."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Kein gültiges Datum mit Zeit."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Kein gültiges Datum."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Kein gültiges Datum."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Keine gültige, ganze Zahl."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Keine gültige Dezimalzahl."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Keine gültige Gleitkommazahl."
|
||||
Binary file not shown.
@@ -0,0 +1,190 @@
|
||||
# German (Switzerland) translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0.4\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2013-05-13 19:27+0100\n"
|
||||
"Last-Translator: Chris Buergi <chris.buergi@gmx.net>\n"
|
||||
"Language-Team: de_CH <LL@li.org>\n"
|
||||
"Language: de_CH\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Ungültiger Feldname '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Feld muss gleich wie %(other_name)s sein."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Feld muss mindestens %(min)d Zeichen beinhalten."
|
||||
msgstr[1] "Feld muss mindestens %(min)d Zeichen beinhalten."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Feld kann nicht länger als %(max)d Zeichen sein."
|
||||
msgstr[1] "Feld kann nicht länger als %(max)d Zeichen sein."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Feld muss zwischen %(min)d und %(max)d Zeichen beinhalten."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Zahl muss mindestens %(min)s sein."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Zahl kann höchstens %(max)s sein."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Zahl muss zwischen %(min)s und %(max)s liegen."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Dieses Feld wird benötigt."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Ungültige Eingabe."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Ungültige Email-Adresse."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Ungültige IP-Adresse."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Ungültige Mac-Adresse."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Ungültige URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Ungültige UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Ungültiger Wert. Mögliche Werte: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Ungültiger Wert. Wert kann keiner von folgenden sein: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Dieses Feld wird benötigt."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Ungültiger CSRF-Code"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF-Code nicht vorhanden"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF fehlgeschlagen"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF-Code verfallen"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Ungültige Auswahl: Konnte nicht umwandeln"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Keine gültige Auswahl"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Ungültige Auswahl: Einer oder mehrere Eingaben konnten nicht umgewandelt "
|
||||
"werden."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' ist kein gültige Auswahl für dieses Feld."
|
||||
msgstr[1] "'%(value)s' ist kein gültige Auswahl für dieses Feld."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Kein gültiges Datum mit Zeit"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Kein gültiges Datum"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Kein gültiges Datum"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Keine gültige, ganze Zahl"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Keine gültige Dezimalzahl"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Keine gültige Gleitkommazahl"
|
||||
Binary file not shown.
@@ -0,0 +1,188 @@
|
||||
# Greek translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2014-04-04 20:18+0300\n"
|
||||
"Last-Translator: Daniel Dourvaris <dourvaris@gmail.com>\n"
|
||||
"Language-Team: el <LL@li.org>\n"
|
||||
"Language: el\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Λάθος όνομα πεδίου '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Το πεδίο πρέπει να είναι το ίδιο με το %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Το πεδίο πρέπει να έχει τουλάχιστον %(min)d χαρακτήρα."
|
||||
msgstr[1] "Το πεδίο πρέπει να έχει τουλάχιστον %(min)d χαρακτήρες."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Το πεδίο δεν μπορεί να έχει πάνω από %(max)d χαρακτήρα."
|
||||
msgstr[1] "Το πεδίο δεν μπορεί να έχει πάνω από %(max)d χαρακτήρες."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Το πεδίο πρέπει να είναι ανάμεσα από %(min)d και %(max)d χαρακτήρες."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Το νούμερο πρέπει να είναι τουλάχιστον %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Το νούμερο πρέπει να είναι μέγιστο %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Το νούμερο πρέπει να είναι ανάμεσα %(min)s και %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Αυτό το πεδίο είναι υποχρεωτικό"
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Λανθασμένα δεδομένα"
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Λανθασμένο email."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Λανθασμένη διεύθυνση IP."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Λανθασμένο διεύθυνση Mac."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Λανθασμένο URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Λανθασμένο UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Λάθος επιλογή, πρέπει να είναι ένα από: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Λάθος επιλογή, δεν μπορεί να είναι ένα από: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Αυτό το πεδίο είναι υποχρεωτικό"
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Λάθος CSRF"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "To CSRF δεν υπάρχει"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "Αποτυχία CSRF"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "Έχει λήξει το διακριτικό CSRF"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Λανθασμένη Επιλογή: δεν μετατρέπεται"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Άγνωστη επιλογή"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Λανθασμένη επιλογή(ές): κάποιες τιμές δεν μπορούσαν να μετατραπούν"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' δεν είναι έγκυρη επιλογή για αυτό το πεδίο"
|
||||
msgstr[1] "'%(value)s' δεν είναι έγκυρη επιλογή για αυτό το πεδίο"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Δεν είναι σωστή ημερομηνία/ώρα"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Δεν είναι σωστή ημερομηνία"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Δεν είναι σωστή ημερομηνία"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Δεν είναι ακέραιο νούμερο"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Δεν είναι δεκαδικό"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Δεν είναι δεκαδικό"
|
||||
Binary file not shown.
@@ -0,0 +1,169 @@
|
||||
# English translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0.4\n"
|
||||
"Report-Msgid-Bugs-To: wtforms@simplecodes.com\n"
|
||||
"POT-Creation-Date: 2020-04-25 11:34-0700\n"
|
||||
"PO-Revision-Date: 2013-04-28 15:36-0700\n"
|
||||
"Last-Translator: James Crasta <james+i18n@simplecodes.com>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en_US <james+i18n@simplecodes.com>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:87
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Invalid field name '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:98
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Field must be equal to %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:134
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Field must be at least %(min)d character long."
|
||||
msgstr[1] "Field must be at least %(min)d characters long."
|
||||
|
||||
#: src/wtforms/validators.py:140
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Field cannot be longer than %(max)d character."
|
||||
msgstr[1] "Field cannot be longer than %(max)d characters."
|
||||
|
||||
#: src/wtforms/validators.py:146
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "Field must be exactly %(max)d character long."
|
||||
msgstr[1] "Field must be exactly %(max)d characters long."
|
||||
|
||||
#: src/wtforms/validators.py:152
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Field must be between %(min)d and %(max)d characters long."
|
||||
|
||||
#: src/wtforms/validators.py:197
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Number must be at least %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:199
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Number must be at most %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:201
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Number must be between %(min)s and %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:269 src/wtforms/validators.py:294
|
||||
msgid "This field is required."
|
||||
msgstr "This field is required."
|
||||
|
||||
#: src/wtforms/validators.py:327
|
||||
msgid "Invalid input."
|
||||
msgstr "Invalid input."
|
||||
|
||||
#: src/wtforms/validators.py:387
|
||||
msgid "Invalid email address."
|
||||
msgstr "Invalid email address."
|
||||
|
||||
#: src/wtforms/validators.py:423
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Invalid IP address."
|
||||
|
||||
#: src/wtforms/validators.py:466
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Invalid MAC address."
|
||||
|
||||
#: src/wtforms/validators.py:501
|
||||
msgid "Invalid URL."
|
||||
msgstr "Invalid URL."
|
||||
|
||||
#: src/wtforms/validators.py:522
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Invalid UUID."
|
||||
|
||||
#: src/wtforms/validators.py:553
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Invalid value, must be one of: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:588
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Invalid value, can't be any of: %(values)s."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Invalid CSRF Token."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF token missing."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF failed."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF token expired."
|
||||
|
||||
#: src/wtforms/fields/core.py:534
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Invalid Choice: could not coerce."
|
||||
|
||||
#: src/wtforms/fields/core.py:538
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "Choices cannot be None."
|
||||
|
||||
#: src/wtforms/fields/core.py:545
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Not a valid choice."
|
||||
|
||||
#: src/wtforms/fields/core.py:573
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
|
||||
#: src/wtforms/fields/core.py:584
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgstr "'%(value)s' is not a valid choice for this field."
|
||||
|
||||
#: src/wtforms/fields/core.py:679 src/wtforms/fields/core.py:689
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Not a valid integer value."
|
||||
|
||||
#: src/wtforms/fields/core.py:760
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Not a valid decimal value."
|
||||
|
||||
#: src/wtforms/fields/core.py:788
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Not a valid float value."
|
||||
|
||||
#: src/wtforms/fields/core.py:853
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Not a valid datetime value."
|
||||
|
||||
#: src/wtforms/fields/core.py:871
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Not a valid date value."
|
||||
|
||||
#: src/wtforms/fields/core.py:889
|
||||
msgid "Not a valid time value."
|
||||
msgstr "Not a valid time value."
|
||||
Binary file not shown.
@@ -0,0 +1,187 @@
|
||||
# Spanish translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-01-15 09:06+0000\n"
|
||||
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
|
||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/wtforms/wtforms/"
|
||||
"es/>\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.4-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Nombre de campo inválido '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "El campo debe coincidir con %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "El campo debe tener al menos %(min)d caracter."
|
||||
msgstr[1] "El campo debe tener al menos %(min)d caracteres."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "El campo no puede tener más de %(max)d caracter."
|
||||
msgstr[1] "El campo no puede tener más de %(max)d caracteres."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "El campo debe ser exactamente %(max)d caracter."
|
||||
msgstr[1] "El campo debe ser exactamente %(max)d caracteres."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "El campo debe tener entre %(min)d y %(max)d caracteres."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "El número debe ser mayor que %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "El número debe ser menor que %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "El número debe estar entre %(min)s y %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Este campo es obligatorio."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Valor inválido."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Email inválido."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Dirección IP inválida."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Dirección MAC inválida."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "URL inválida."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "UUID inválido."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Valor inválido, debe ser uno de: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Valor inválido, no puede ser ninguno de: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Este campo no se puede editar."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "Este campo está desactivado y no puede tener un valor."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "El token CSRF es incorrecto."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "El token CSRF falta."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "Fallo CSRF."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "El token CSRF ha expirado."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Elección inválida: no se puede ajustar."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "La elección no puede ser None."
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Opción inválida."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Opción(es) inválida(s): una o más entradas de datos no pueden ser "
|
||||
"coaccionadas."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "%(value)s' no es una opción válida para este campo."
|
||||
msgstr[1] "%(value)s' no son opciones válidas para este campo."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "No es un valor para la fecha y la hora válido."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "No es una fecha válida."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "No es un tiempo válido."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "No es un valor semanal válido."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "No es un valor entero válido."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "No es un numero decimal válido."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "No es un número de punto flotante válido."
|
||||
Binary file not shown.
@@ -0,0 +1,188 @@
|
||||
# Estonian translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0.6dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2013-09-22 12:37+0300\n"
|
||||
"Last-Translator: Laur Mõtus <laur@povi.ee>\n"
|
||||
"Language-Team: Estonian <kde-i18n-doc@kde.org>\n"
|
||||
"Language: et\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Vigane välja nimi: '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Väli peab võrduma %(other_name)s -ga."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Väli peab olema vähemalt %(min)d tähemärgi pikkune."
|
||||
msgstr[1] "Väli peab olema vähemalt %(min)d tähemärgi pikkune."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Väli ei tohi olla üle %(max)d tähemärgi pikk."
|
||||
msgstr[1] "Väli ei tohi olla üle %(max)d tähemärgi pikk."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Välja pikkus peab olema vahemikus %(min)d - %(max)d."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Number peab olema vähemalt %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Number tohib olla maksimaalselt %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Number peab olema vahemikus %(min)s - %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Kohustuslik väli."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Vigane sisend."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Vigane e-posti aadress."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Vigane IP aadress."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Vigane MAC aadress."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Vigane URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Vigane UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Vigane väärtus, peaks hoopis olema üks järgmistest: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Vigane väärtus, ei tohi olla ükski järgnevatest: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Kohustuslik väli."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Vigane CSRF tunnus"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Puudub CSRF tunnus"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF nurjus"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF tunnus on aegunud"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Vigane valik: ei saa teisendada"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Pole korrektne valik"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Vigane valik: ühte või rohkemat andmesisendit ei saa teisendada"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' pole sellele väljale korrektne valik"
|
||||
msgstr[1] "'%(value)s' pole sellele väljale korrektne valik"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Pole korrektne kuupäeva/kellaaja väärtus"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Pole korrektne kuupäevaline väärtus"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Pole korrektne kuupäevaline väärtus"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Pole korrektne täisarvuline väärtus"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Pole korrektne kümnendarvuline väärtus"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Pole korrektne ujukomaarvuline väärtus"
|
||||
Binary file not shown.
@@ -0,0 +1,187 @@
|
||||
# persian translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0.3\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2013-01-20 16:49+0330\n"
|
||||
"Last-Translator: mohammad Efazati <mohammad@efazati.org>\n"
|
||||
"Language-Team: fa <mohammad@efazati.org>\n"
|
||||
"Language: persian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "فیلد '%s' اشتباه است."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "مقدار فیلد باید برابر %(other_name)s باشد."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "طول فیلد حداقل باید %(min)d حرف باشد."
|
||||
msgstr[1] "طول فیلد حداقل باید %(min)d حرف باشد."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "طول فیلد حداکثر باید %(max)d حرف باشد."
|
||||
msgstr[1] "طول فیلد حداکثر باید %(max)d حرف باشد."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "طول فیلد باید بین %(min)d تا %(max)d حرف باشد."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "عدد باید از %(min)s بزرگتر باشد."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "عدد باید از %(max)s. کوچکتر باشد."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "عدد باید بین %(min)s تا %(max)s باشد."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "این فیلد اجباریست."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "ورودی اشتباه است."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "آدرس پست الکترونیک اشتباه است."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "آدرس IP اشتباه است."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "آدرس MAC اشتباه است."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "آدرس وب سایت وارد شده اشتباه است."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "UUID اشتباده است."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "ورودی اشتباه است. باید یکی از %(values)s باشد."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "ورودی اشتباه است. نباید یکی از %(values)s باشد."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "این فیلد اجباریست."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "مقدار کلید امنیتی اشتباه است."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "مقدار کلید امنیتی در درخواست شما نیست."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "کلید امنیتی با خطا مواجه شد."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "زمان استفاده از کلید امنیتی به اتمام رسیده است."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "انتخاب شما اشتباه است. ورودی قابل بررسی نیست."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "انتخاب درستی نیست."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "انتخاب شما اشتباه است. یک یا چند تا از ورودی ها قابل بررسی نیست."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s انتخاب مناسبی برای این فیلد نیست."
|
||||
msgstr[1] "'%(value)s انتخاب مناسبی برای این فیلد نیست."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "مقداری که وارد کردید، تاریخ نیست."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "مقداری که وارد کردید، تاریخ نیست."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "مقداری که وارد کردید، تاریخ نیست."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "یک عدد درست نیست."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "یک عدد اعشاری درست نیست."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "یک عدد اعشاری درست نیست."
|
||||
Binary file not shown.
@@ -0,0 +1,188 @@
|
||||
# Finnish translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2016-06-13 15:16+0300\n"
|
||||
"Last-Translator: Teijo Mursu <zcmander+wtforms@gmail.com>\n"
|
||||
"Language-Team: fi <LL@li.org>\n"
|
||||
"Language: fi\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Epäkelpo kentän nimi '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Täytyy olla sama kuin %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Täytyy olla vähintään %(min)d merkki."
|
||||
msgstr[1] "Täytyy olla vähintään %(min)d merkkiä."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Ei voi olla pidempi kuin %(max)d merkki."
|
||||
msgstr[1] "Ei voi olla pidempi kuin %(max)d merkkiä."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Täytyy olla pidempi kuin %(min)d ja lyhyempi kuin %(max)d."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Vähintään %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Enintään %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Täytyy olla välillä %(min)s - %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Pakollinen."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Virheellinen syöte."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Virheellinen sähköpostiosoite."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Virheellinen IP-osoite"
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Virheellinen MAC-osoite."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Virheellinen URL-osoite."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Virheellinen UUID-tunnus."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Epäkelpo arvo, täytyy olla yksi seuraavista: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Epäkelpo arvo, ei voi olla yksi seuraavista: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Pakollinen."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Virheellienen CSRF-tunnus."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF-tunnus puuttuu."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF epäonnistui"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF-tunnus vanhentunut"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Virheellinen valinta: ei voida muuntaa"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Virheellinen valinta"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Virheellinen valinta: Yksi tai useampaa syötettä ei voitu muuntaa"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' ei ole kelvollinen valinta tälle kentälle"
|
||||
msgstr[1] "'%(value)s' ei ole kelvollinen valinta tälle kentälle"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Ei ole kelvollinen päivämäärä ja aika -arvo"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Ei ole kelvollinen päivämäärä-arvo"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Ei ole kelvollinen päivämäärä-arvo"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Ei ole kelvollinen kokonaisluku"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Ei ole kelvollinen desimaaliluku"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Ei ole kelvollinen liukuluku"
|
||||
Binary file not shown.
@@ -0,0 +1,188 @@
|
||||
# French translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
# Stéphane Raimbault <stephane.raimbault@gmail.com>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0.3\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-01-11 20:06+0000\n"
|
||||
"Last-Translator: Éloi Rivard <eloi.rivard@nubla.fr>\n"
|
||||
"Language-Team: French <https://hosted.weblate.org/projects/wtforms/wtforms/"
|
||||
"fr/>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.4-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Nom de champ non valide « %s »."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Le champ doit être égal à %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Le champ doit contenir au moins %(min)d caractère."
|
||||
msgstr[1] "Le champ doit contenir au moins %(min)d caractères."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Le champ ne peut pas contenir plus de %(max)d caractère."
|
||||
msgstr[1] "Le champ ne peut pas contenir plus de %(max)d caractères."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "Le champ doit contenir exactement %(max)d caractère."
|
||||
msgstr[1] "Le champ doit contenir exactement %(max)d caractères."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr ""
|
||||
"La longueur du champ doit être comprise entre %(min)d et %(max)d caractères."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Le nombre doit être au minimum %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Le nombre doit être au maximum %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Le nombre doit être compris entre %(min)s et %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Ce champ est requis."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Saisie non valide."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Adresse électronique non valide."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Adresse IP non valide."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Adresse MAC non valide."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "URL non valide."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "UUID non valide."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Valeur non valide, doit être parmi : %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Valeur non valide, ne peut contenir : %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Ce champ n’est pas éditable."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "Ce champ est désactivé et ne peut avoir de valeur."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Jeton CSRF non valide."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Jeton CSRF manquant."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF a échoué."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "Jeton CSRF expiré."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Choix non valide, ne peut pas être converti."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "Vous devez choisir au moins un élément."
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "N'est pas un choix valide."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Choix incorrect, une ou plusieurs saisies ne peuvent pas être converties."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "« %(value)s » n'est pas un choix valide pour ce champ."
|
||||
msgstr[1] "« %(value)s » n'est pas un choix valide pour ce champ."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "N'est pas une date/heure valide."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "N'est pas une date valide."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "N'est pas un horaire valide."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "N'est pas une semaine valide."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "N'est pas un entier valide."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "N'est pas une valeur décimale valide."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "N'est pas un flottant valide."
|
||||
Binary file not shown.
@@ -0,0 +1,188 @@
|
||||
# Hebrew translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2017-04-19 00:41+0300\n"
|
||||
"Last-Translator: Tomer Levy <tmrlvi@gmail.com>\n"
|
||||
"Language-Team: he <LL@li.org>\n"
|
||||
"Language: he\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "שם שדה לא תקין: '%s'"
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "שדה חייב להיות זהה ל-%(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "שדה חייב להכיל לפחות %(min)d תו."
|
||||
msgstr[1] "שדה חייב להכיל לפחות %(min)d תווים."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "שדה אינו יכול להכיל יותר מ-%(max)d תו"
|
||||
msgstr[1] "שדה אינו יכול להכיל יותר מ-%(max)d תווים"
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "שדה חייב להכיל בין %(min)d ל-%(max)d תווים"
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "מספר חייב להיות לפחות %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "מספר חייב להיות לכל היותר %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "מספר חייב להיות בין %(min)s ו-%(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "חובה למלא שדה זה."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "קלט לא תקין."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "כתובת מייל לא תקינה."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "כתובת IP לא תקינה."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "כתובת Mac לא תקינה."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "URL לא תקין."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "UUID לא תקין."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "ערך לא חוקי, חייב להיות מתוך: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "ערך לא חוקי, לא יכול להיות מתוך: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "חובה למלא שדה זה."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "מזהה CSRF לא תקין"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "מזהה CSRF חסר"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF נכשל"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "מזהה CSRF פג תוקף"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "לא בחירה חוקית"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "בחירה\\ות לא תקינה: לא ניתן לכפות סוג על קלט אחד או יותר"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' אינו בחירה תקינה עבור השדה הזה"
|
||||
msgstr[1] "'%(value)s' אינו בחירה תקינה עבור השדה הזה"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "לא ערך תאריך-זמן תקין"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "לא תאריך תקין"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "לא תאריך תקין"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "לא מספר שלם תקין"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "לא מספר עשרוני"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "לא מספר מסוג float"
|
||||
Binary file not shown.
@@ -0,0 +1,188 @@
|
||||
# Hungarian translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2016-09-27 13:09-0400\n"
|
||||
"Last-Translator: Zoltan Fedor <zoltan.0.fedor@gmail.com>\n"
|
||||
"Language-Team: Hungarian <>\n"
|
||||
"Language: hu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Érvénytelen mező '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "A mező értéke %(other_name)s kell hogy legyen."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "A mező legalább %(min)d karakter hosszú kell hogy legyen."
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "A mező nem lehet hosszabb mint %(max)d karakter."
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "A mező hossza %(min)d és %(max)d karakter között kell hogy legyen."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "A szám %(min)s vagy nagyobb kell hogy legyen."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "A szám maximum %(max)s lehet."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "A szám %(min)s és %(max)s között kell hogy legyen."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Ez a mező kötelező."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Érvénytelen adat."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Érvénytelen email cím."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Érvénytelen IP cím."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Érvénytelen Mac cím."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Érvénytelen URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Érvénytelen UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Érvénytelen adat, a következőek egyike kell hogy legyen: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Érvénytelen adat, a következőek egyike sem lehet: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Ez a mező kötelező."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Érvénytelen CSRF token"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Hiányzó CSRF token"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF hiba"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "Lejárt CSRF token"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Érvénytelen választás: adat nem használható"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Érvénytelen érték"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Érvénytelen választás: egy vagy több adat elem nem használható"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' egy érvénytelen érték ebben a mezőben"
|
||||
msgstr[1] "'%(value)s' egy érvénytelen érték ebben a mezőben"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Érvénytelen adat, nem dátum/időpont"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Érvénytelen adat, nem dátum"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Érvénytelen adat, nem dátum"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Érvénytelen adat, nem egész szám"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Érvénytelen adat, nem decimális szám"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Érvénytelen adat, nem lebegőpontos szám"
|
||||
Binary file not shown.
@@ -0,0 +1,190 @@
|
||||
# Italian translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2017-03-01 11:53+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Nome del campo non valido '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Il valore deve essere uguale a %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Il valore deve essere lungo almeno %(min)d carattere."
|
||||
msgstr[1] "Il valore deve essere lungo almeno %(min)d caratteri."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Il valore non può essere più lungo di %(max)d carattere."
|
||||
msgstr[1] "Il valore non può essere più lungo di %(max)d caratteri."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr ""
|
||||
"La lunghezza del valore deve essere compresa tra %(min)d e %(max)d caratteri."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Il numero deve essere maggiore o uguale a %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Il numero deve essere minore o uguale a %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Il numero deve essere compreso tra %(min)s e %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Questo campo è obbligatorio."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Valore non valido."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Indirizzo e-mail non valido."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Indirizzo IP non valido."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Indirizzo Mac non valido."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "URL non valido."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "UUID non valido."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Valore non valido, deve essere uno tra: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Valore non valido, non può essere nessuno tra: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Questo campo è obbligatorio."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Token CSRF non valido"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Token CSRF mancante"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF fallito"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "Token CSRF scaduto"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Opzione non valida: valore non convertibile"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Non è una opzione valida"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Opzione(i) non valida(e): uno o pù valori non possono essere convertiti"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' non è una opzione valida per questo campo"
|
||||
msgstr[1] "'%(value)s' non è una opzione valida per questo campo"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Il valore non corrisponde ad una data e un orario validi"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Non è una data valida"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Non è una data valida"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Non è una valore intero valido"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Non è un valore decimale valido"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Non è un valore in virgola mobile valido"
|
||||
Binary file not shown.
@@ -0,0 +1,184 @@
|
||||
# Japanese translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2015-07-06 23:49+0900\n"
|
||||
"Last-Translator: yusuke furukawa <littlefive.jp@gmail.com>\n"
|
||||
"Language-Team: ja <littlefive.jp@gmail.com>\n"
|
||||
"Language: ja\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "%s は無効なフィールド名です。"
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "フィールドは %(other_name)s でなければいけません。"
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "フィールドは %(min)d 文字以上でなければなりません。"
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "フィールドは %(max)d 文字を超えることはできません。"
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "フィールドは %(min)d 以上, %(max)d 文字以内でなければなりません。"
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "数値は %(min)s 以上でなければなりません。"
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "数値は 最高でも %(max)s でなければなりません。"
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "数値は %(min)s 以上, %(max)s 以下でなければいけません。"
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "このフィールドは必須です。"
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "無効な入力です。"
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "無効なメールアドレスです。"
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "無効なIPアドレスです。"
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "無効なMacアドレスです。"
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "無効なURLです。"
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "無効なUUIDです。"
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "無効な値です, 次のうちの1つでなければいけません: %(values)s。"
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "無効な値です、次に含まれるものは使えません: %(values)s。"
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "このフィールドは必須です。"
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "不正なCSRFトークンです。"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRFトークンがありません。"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF認証に失敗しました。"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRFトークンの期限が切れました。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "無効な選択: 型変換できません。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "選択肢が正しくありません。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "無効な選択: 1つ以上の値を型変換できません。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' はこのフィールドでは有効ではありません。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "無効な時間型です。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "無効な日付型です。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "無効な時間型です。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "無効な日付型です。"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "無効な整数です。"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "無効な少数です。"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "無効なfloat値です。"
|
||||
Binary file not shown.
@@ -0,0 +1,187 @@
|
||||
# Translations template for WTForms.
|
||||
# Copyright (C) 2024 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-03-11 07:01+0000\n"
|
||||
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
|
||||
"Language-Team: Kazakh <https://hosted.weblate.org/projects/wtforms/wtforms/"
|
||||
"kk/>\n"
|
||||
"Language: kk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.5-dev\n"
|
||||
"Generated-By: Babel 2.12.1\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Жарамсыз '%s' өріс атауы."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Өріс мәні %(other_name)s өрісімен бірдей болуы тиіс."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Өріс ұзындығы кем дегенде %(min)d таңба болуы тиіс."
|
||||
msgstr[1] "Өріс ұзындығы кем дегенде %(min)d таңба болуы тиіс."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Өріс ұзындығы көп дегенде %(max)d таңба болуы тиіс."
|
||||
msgstr[1] "Өріс ұзындығы көп дегенде %(max)d таңба болуы тиіс."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "Өріс ұзындығы дәл %(max)d таңба болуы тиіс."
|
||||
msgstr[1] "Өріс ұзындығы дәл %(max)d таңба болуы тиіс."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Өріс ұзындығы %(min)d және %(max)d таңба арасында болуы тиіс."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Сан кем дегенде %(min)s болуы тиіс."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Сан көп дегенде %(max)s болуы тиіс."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Сан %(min)s және %(max)s аралығында болуы тиіс."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Бұл өріс міндетті түрде керек."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Жарасыз енгізу."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Жарамсыз эл. пошта адресі."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Жарамсыз IP адрес."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Жарамсыз Mac адрес."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Жарамсыз URL адресі."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Жарамсыз UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Жарамсыз мән, келесінің біреуі болуы тиіс: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Жарамсыз мән, келесінің ешқайсысы болмауы тиіс: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Бұл өрісті өңдеу мүмкін емес."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "Бұл өріс сөндірілген және мәнге ие бола алмайды."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Жарамсыз CSRF токені."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF токені жоқ болып тұр."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF сәтсіз аяқталды."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF токенінің мерзімі аяқталды."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Жарамсыз таңдау: Мәнін келтіру мүмкін емес."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "Таңдаулар мәні Ешнәрсе болмауы тиіс."
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Жарамды таңдау емес."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Жарамсыз таңдау(лар): бір немесе бірнеше деректер енгізуін келтіру мүмкін "
|
||||
"емес."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' бұл өріс үшін жарамды таңдау емес."
|
||||
msgstr[1] "'%(value)s' бұл өріс үшін жарамды таңдаулар емес."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Жарамды күн мен уақыт мәні емес."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Жарамды күн мәні емес."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "Жарамды уақыт мәні емес."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Жарамды апта мәні емес."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Жарамды бүтін сан мәні емес."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Жарамды ондық мән емес."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Жарамды қалқымалы үтірлі сан мәні емес."
|
||||
Binary file not shown.
@@ -0,0 +1,184 @@
|
||||
# Korean translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0.3\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-09-29 13:15+0000\n"
|
||||
"Last-Translator: simmon <simmon@nplob.com>\n"
|
||||
"Language-Team: Korean <https://hosted.weblate.org/projects/wtforms/wtforms/"
|
||||
"ko/>\n"
|
||||
"Language: ko\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.8-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "'%s'는 올바르지 않은 항목 이름입니다."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "이 항목은 %(other_name)s 항목과 같아야 합니다."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "이 항목은 최소 %(min)d자 이상이어야 합니다."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "이 항목은 %(max)d자 보다 많을 수 없습니다."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "이 항목은 정확히 %(max)d자이어야 합니다."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "이 항목은 최소 %(min)d자 이상, %(max)d자 이하이어야 합니다."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "이 값은 최소 %(min)s 이상이어야 합니다."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "이 값은 %(max)s보다 클 수 없습니다."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "이 값은 %(min)s 이상, %(max)s 이하이어야 합니다."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "이 항목은 필수입니다."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "올바르지 않은 입력값입니다."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "올바르지 않은 이메일 주소입니다."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "올바르지 않은 IP 주소입니다."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "올바르지 않은 Mac주소입니다."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "올바르지 않은 URL입니다."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "올바르지 않은 UUID입니다."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "올바르지 않은 값입니다, 다음 중 하나이어야 합니다: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "올바르지 않은 값입니다, 다음 값은 사용할 수 없습니다: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "이 필드는 편집할 수 없습니다."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "이 필드는 사용할 수 없으므로 값을 가질 수 없습니다."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "올바르지 않은 CSRF 토큰입니다."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF 토큰을 찾을 수 없습니다."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF 인증에 실패하였습니다."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF 토큰이 만료되었습니다."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "올바르지 않은 선택값입니다: 변환할 수 없습니다."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "선택값이 None일 수 없습니다."
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "올바르지 않은 선택값입니다."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "올바르지 않은 선택값입니다: 한개 이상의 값을 변화할 수 없습니다."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] ""
|
||||
"'%(value)s'는 이와 같은 부분을 위해 유효한 선택이 없습니다.\n"
|
||||
"\n"
|
||||
"'%(value)s'는 이와 같은 부분을 위해 유효한 선택들이 없습니다."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "올바르지 않은 시간 값입니다."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "올바르지 않은 날짜 값입니다."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "올바르지 않은 시간 값입니다."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "유효한 주 값이 아닙니다."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "올바르지 않은 정수 값입니다."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "올바르지 않은 숫자 값입니다."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "올바르지 않은 float 값입니다."
|
||||
Binary file not shown.
@@ -0,0 +1,188 @@
|
||||
# Norwegian Bokmål translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2014-05-05 16:18+0100\n"
|
||||
"Last-Translator: Frode Danielsen <frode@e5r.no>\n"
|
||||
"Language-Team: nb <LL@li.org>\n"
|
||||
"Language: nb\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Ugyldig feltnavn '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Feltet må være lik som %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Feltet må være minst %(min)d tegn langt."
|
||||
msgstr[1] "Feltet må være minst %(min)d tegn langt."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Feltet kan ikke være lenger enn %(max)d tegn."
|
||||
msgstr[1] "Feltet kan ikke være lenger enn %(max)d tegn."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Feltet må være mellom %(min)d og %(max)d tegn langt."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Tall må være minst %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Tall må være maks %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Tall må være mellom %(min)s og %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Dette feltet er påkrevd."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Ugyldig verdi."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Ugyldig e-postadresse."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Ugyldig IP-adresse."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Ugyldig MAC-adresse."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Ugyldig URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Ugyldig UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Ugyldig verdi, den må være en av følgende: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Ugyldig verdi, den kan ikke være en av følgende: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Dette feltet er påkrevd."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Ugyldig CSRF-pollett"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Manglende CSRF-pollett"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF-sjekk feilet"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "Utløpt CSRF-pollett"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Ugyldig valg: Kunne ikke oversette"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Ikke et gyldig valg"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Ugyldig(e) valg: En eller flere dataverdier kunne ikke oversettes"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' er ikke et gyldig valg for dette feltet"
|
||||
msgstr[1] "'%(value)s' er ikke et gyldig valg for dette feltet"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Ikke en gyldig dato- og tidsverdi"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Ikke en gyldig datoverdi"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Ikke en gyldig datoverdi"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Ikke en gyldig heltallsverdi"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Ikke en gyldig desimalverdi"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Ikke en gyldig flyttallsverdi"
|
||||
Binary file not shown.
@@ -0,0 +1,186 @@
|
||||
# Dutch translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-03-22 11:01+0000\n"
|
||||
"Last-Translator: Mikachu <micah.sh@proton.me>\n"
|
||||
"Language-Team: Dutch <https://hosted.weblate.org/projects/wtforms/wtforms/nl/"
|
||||
">\n"
|
||||
"Language: nl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.5-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Ongeldige naam voor veld '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Veld moet gelijk zijn aan %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Veld moet minstens %(min)d karakter lang zijn."
|
||||
msgstr[1] "Veld moet minstens %(min)d karakters lang zijn."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Veld mag niet langer zijn dan %(max)d karakter."
|
||||
msgstr[1] "Veld mag niet langer zijn dan %(max)d karakters."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "Veld moet exact %(max)d karakter lang zijn."
|
||||
msgstr[1] "Veld moet exact %(max)d karakters lang zijn."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Veld moet tussen %(min)d en %(max)d karakters lang zijn."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Getal moet minstens %(min)s zijn."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Nummer mag maximaal %(max)s zijn."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Nummer moet tussen %(min)s en %(max)s liggen."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Dit veld is vereist."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Ongeldige invoer."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Ongeldig e-mailadres."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Ongeldig IP-adres."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Ongeldig MAC-adres."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Ongeldige URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Ongeldige UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Ongeldige waarde, moet een waarde zijn uit: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Ongeldige waarde, kan geen waarde zijn uit: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Dit veld kan niet worden bewerkt."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "Dit veld is uitgeschakeld en kan geen waarde hebben."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Ongeldig CSRF-token."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF-token ontbreekt."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF is gefaald."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF-token is verlopen."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Ongeldige keuze: kon niet omgezet worden."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "Keuzes mogen niet None zijn."
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Ongeldige keuze."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Ongeldige keuze(s): een of meer van de invoeren kon niet omgezet worden."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' is een ongeldige keuze voor dit veld."
|
||||
msgstr[1] "'%(value)s' zijn ongeldige keuzes voor dit veld."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Ongeldige datum/tijd."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Ongeldige datum."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "Ongeldige waarde."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Ongeldige waarde voor week."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Ongeldig getal."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Ongeldige decimale waarde."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Ongeldige float-waarde."
|
||||
Binary file not shown.
@@ -0,0 +1,194 @@
|
||||
# Polish translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2012-05-05 23:20+0200\n"
|
||||
"Last-Translator: Aleksander Nitecki <ixendr@itogi.re>\n"
|
||||
"Language-Team: pl <wolanskim@gmail.com>\n"
|
||||
"Language: pl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| n%100>=20) ? 1 : 2)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Nieprawidłowa nazwa pola '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Wartość pola musi być równa %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Pole musi mieć przynajmniej %(min)d znak."
|
||||
msgstr[1] "Pole musi mieć przynajmniej %(min)d znaki."
|
||||
msgstr[2] "Pole musi mieć przynajmniej %(min)d znaków."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Wartość w polu nie może mieć więcej niż %(max)d znak."
|
||||
msgstr[1] "Wartość w polu nie może mieć więcej niż %(max)d znaki."
|
||||
msgstr[2] "Wartość w polu nie może mieć więcej niż %(max)d znaków."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Wartość musi być długa na od %(min)d do %(max)d znaków."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Liczba musi być większa lub równa %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Liczba musi być mniejsza lub równa %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Liczba musi być z zakresu %(min)s i %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "To pole jest wymagane."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Nieprawidłowa wartość."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Nieprawidłowy adres e-mail."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Nieprawidłowy adres IP."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Nieprawidłowy adres Mac."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Nieprawidłowy URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Nieprawidłowy UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Wartość musi być jedną z: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Wartość nie może być żadną z: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "To pole jest wymagane."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Nieprawidłowy token CSRF"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Brak tokena CSRF"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "błąd CSRF"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "Wygasł token CSRF"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Nieprawidłowy wybór: nie można skonwertować"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Nieprawidłowy wybór"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Nieprawidłowy wybór: nie można skonwertować przynajmniej jednej wartości"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' nie jest poprawnym wyborem dla tego pola"
|
||||
msgstr[1] "'%(value)s' nie jest poprawnym wyborem dla tego pola"
|
||||
msgstr[2] "'%(value)s' nie jest poprawnym wyborem dla tego pola"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Nieprawidłowa data i czas"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Nieprawidłowa data"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Nieprawidłowa data"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Nieprawidłowa liczba całkowita"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Nieprawidłowa liczba dziesiętna"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Nieprawidłowa liczba zmiennoprzecinkowa"
|
||||
Binary file not shown.
@@ -0,0 +1,185 @@
|
||||
# Portuguese translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-06-17 21:09+0000\n"
|
||||
"Last-Translator: Josimar Gabriel <jgr-araujo@protonmail.com>\n"
|
||||
"Language-Team: Portuguese <https://hosted.weblate.org/projects/wtforms/"
|
||||
"wtforms/pt/>\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.6-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Nome do campo inválido '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "O campo deve ser igual a %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "O campo deve ter pelo menos %(min)d caracteres."
|
||||
msgstr[1] "Os campos devem ter pelo menos %(min)d caracteres."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "O campo não pode ter mais do que %(max)d caracteres."
|
||||
msgstr[1] "Os campos não podem ter mais do que %(max)d caracteres."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "O campo deve ter exatamente %(max)d caracteres."
|
||||
msgstr[1] "Os campos devem ter exatamente %(max)d caracteres."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "O campo deve ter entre %(min)d e %(max)d caracteres."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "O valor não pode ser menos do que %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "O valor não pode ser mais do que %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "O valor tem que ser entre %(min)s e %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Campo obrigatório."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Entrada inválida."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Email inválido."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "IP inválido."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Mac address inválido."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "URL inválido."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "UUID inválido."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Valor inválido, deve ser um dos seguintes: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Valor inválido, não deve ser um dos seguintes: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Este campo não pode ser editado."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "Campo desativado: não pode ter um valor."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Token CSRF inválido."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Falta o token CSRF."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF falhou."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "Token CSRF expirado."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Escolha inválida: não é possível calcular."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "A escolha não pode ser None."
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Escolha inválida."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Escolha(s) inválida(s): não é possível calcular alguns dos valores."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "‘%(value)s’ não é uma escolha válida para este campo."
|
||||
msgstr[1] "‘%(value)s’ não são escolhas válidas para este campo."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "O valor temporal não é válido."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "A data não é válida."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "Não é um valor de tempo válido."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Não é um valor de semana válido."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "O valor inteiro não é válido."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "O valor decimal não é válido."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "O valor com vírgula flutuante não é válido."
|
||||
Binary file not shown.
@@ -0,0 +1,195 @@
|
||||
# Translations template for WTForms.
|
||||
# Copyright (C) 2023 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 3.0.1\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2023-10-07 06:11+0000\n"
|
||||
"Last-Translator: Victor Buzdugan <buzdugan.victor@icloud.com>\n"
|
||||
"Language-Team: Romanian <https://hosted.weblate.org/projects/wtforms/wtforms/"
|
||||
"ro/>\n"
|
||||
"Language: ro\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
|
||||
"20)) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.1-dev\n"
|
||||
"Generated-By: Babel 2.12.1\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Numele câmpului este invalid '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Câmpul trebuie să fie egal cu %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Câmpul trebuie să aibă minim %(min)d caracter."
|
||||
msgstr[1] "Câmpul trebuie să aibă minim %(min)d caractere."
|
||||
msgstr[2] "Câmpul trebuie să aibă minim %(min)d de caractere."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Câmpul nu poate fi mai mare de %(max)d caracter."
|
||||
msgstr[1] "Câmpul nu poate fi mai mare de %(max)d caractere."
|
||||
msgstr[2] "Câmpul nu poate fi mai mare de %(max)d de caractere."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "Câmpul trebuie să aibă exact %(max)d caracter."
|
||||
msgstr[1] "Câmpul trebuie să aibă exact %(max)d caractere."
|
||||
msgstr[2] "Câmpul trebuie să aibă exact %(max)d de caractere."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Câmpul trebuie să aibă între %(min)d și %(max)d caractere."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Numărul trebuie să fie cel puțin %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Numărul trebuie să fie cel mult %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Numărul trebuie să fie între %(min)s și %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Acest câmp este obligatoriu."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Valoarea introdusă este invalidă."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Adresa email este invalidă."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Adresa IP este invalidă."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Adresa Mac este invalidă."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "URL invalid."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "UUID invalid."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Valoare invalidă, trebuie să fie una din: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Valoare invalidă, nu trebuie să fie una din: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field cannot be edited"
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Câmpul nu poate fi editat"
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
#, fuzzy
|
||||
#| msgid "This field is disabled and cannot have a value"
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "Câmpul este dezactivat și nu poate conține o valoare"
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Token-ul CSRF este invalid."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Lipsește token-ul CSRF."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "Validarea CSRF a eșuat."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "Token-ul CSRF a expirat."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Selecție invalidă: valoarea nu a putut fi transformată."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "Selecția nu poate fi None."
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Selecție invalidă."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Selecție(ii) invalidă: una sau mai multe valori nu au putut fi transformate."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' nu este o selecție validă pentru acest câmp."
|
||||
msgstr[1] "'%(value)s' nu sunt selecții valide pentru acest câmp."
|
||||
msgstr[2] "'%(value)s' nu sunt selecții valide pentru acest câmp."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Valoare dată-timp invalidă."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Valoarea pentru dată este invalidă."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "Valoarea pentru timp este invalidă."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Valoarea pentru săptămână este invalidă."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Număr întreg invalid."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Număr zecimal invalid."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Număr cu virgulă invalid."
|
||||
Binary file not shown.
@@ -0,0 +1,195 @@
|
||||
# Russian translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0.3\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-04-26 21:07+0000\n"
|
||||
"Last-Translator: \"Sophie Sh.\" <lisp_spb@mail.ru>\n"
|
||||
"Language-Team: Russian <https://hosted.weblate.org/projects/wtforms/wtforms/"
|
||||
"ru/>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 5.5.1\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Неправильное имя поля '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Поле должно совпадать с %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Значение должно содержать не менее %(min)d символа."
|
||||
msgstr[1] "Значение должно содержать не менее %(min)d символов."
|
||||
msgstr[2] "Значение должно содержать не менее %(min)d символов."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Значение не должно содержать более %(max)d символа."
|
||||
msgstr[1] "Значение не должно содержать более %(max)d символов."
|
||||
msgstr[2] "Значение не должно содержать более %(max)d символов."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "Значение должно быть точно %(max)d символа."
|
||||
msgstr[1] "Значение должно быть %(max)d символов."
|
||||
msgstr[2] "Значение должно быть %(max)d символов."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Значение должно содержать от %(min)d до %(max)d символов."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Число должно быть больше %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Число должно быть меньше %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Значение должно быть между %(min)s и %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Обязательное поле."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Некорректный ввод."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Неверный адрес электронной почты."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Неверный IP адрес."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Неверный MAC адрес."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Неверный URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Неверный UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Неверное значение, должно быть одним из %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Неверное значение, не должно быть одним из %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Данное поле не может быть изменено."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "Данное поле отключено и не может быть изменено."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Неверный CSRF токен."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF токен отсутствует."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "Ошибка CSRF."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF токен просрочен."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Неверный вариант: невозможно преобразовать."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "Выбор не может быть None"
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Неверный вариант."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
"Неверный вариант(варианты): одно или несколько значений невозможно "
|
||||
"преобразовать."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' - неверный вариант для этого поля."
|
||||
msgstr[1] "'%(value)s' - неверный вариант для этого поля."
|
||||
msgstr[2] "'%(value)s' - неверный вариант для этого поля."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Неверное значение даты и времени."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Неверное значение даты."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "Неверное значение времени."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Неверное значение недели."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Неверное целое число."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Неверное десятичное число."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Неверное десятичное число."
|
||||
Binary file not shown.
@@ -0,0 +1,189 @@
|
||||
# Slovak translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-01-19 21:00+0000\n"
|
||||
"Last-Translator: Milan Šalka <salka.milan@googlemail.com>\n"
|
||||
"Language-Team: Slovak <https://hosted.weblate.org/projects/wtforms/wtforms/"
|
||||
"sk/>\n"
|
||||
"Language: sk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 5.4-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Neplatný názov poľa '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Hodnota poľa musí byť rovnaká ako v prípade %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Pole musí obsahovať aspoň %(min)d znak."
|
||||
msgstr[1] "Pole musí obsahovať aspoň %(min)d znaky."
|
||||
msgstr[2] "Pole musí obsahovať aspoň %(min)d znakov."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Pole nesmie byť dlhšie ako %(max)d znak."
|
||||
msgstr[1] "Pole nesmie byť dlhšie ako %(max)d znaky."
|
||||
msgstr[2] "Pole nesmie byť dlhšie ako %(max)d znakov."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "Pole musí byť presne %(max)d znak dlhé."
|
||||
msgstr[1] "Pole musí byť presne %(max)d znaky dlhé."
|
||||
msgstr[2] "Pole musí byť presne %(max)d znakov dlhé."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Počet znakov v poli musí byť medzi %(min)d a %(max)d."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Číslo musí byť aspoň %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Číslo musí byť najviac %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Číslo musí byť medzi %(min)s a %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Toto pole je povinné."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Neplatný vstup."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Neplatná emailová adresa."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Neplatná IP adresa."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Neplatná MAC adresa."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Neplatné URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Neplatné UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Neplatná hodnota, povolené hodnoty sú: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Neplatná hodnota, nesmie byť jedna z: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Toto pole nie je možné upravovať."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "Toto pole je zakázané a nemôže mať hodnotu."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Neplatný CSRF token."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "Chýba CSRF token."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "Chyba CSRF."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF token expiroval."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Neplatná voľba: hodnotu sa nepodarilo previesť."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "Výbery nemôžu byť žiadne."
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Neplatná voľba."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Neplatná voľba: jeden alebo viacero vstupov sa nepodarilo previesť."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' nieje platnou voľbou pre toto pole."
|
||||
msgstr[1] "'%(value)s' niesú platnou voľbou pre toto pole."
|
||||
msgstr[2] "'%(value)s' nieje platnou voľbou pre toto pole."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Neplatná hodnota pre dátum a čas."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Neplatná hodnota pre dátum."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "Nie je platná hodnota času."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Nie je platný týždeň."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Neplatná hodnota pre celé číslo."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Nie je platnou desatinnou hodnotou."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Neplatná hodnota pre desatinné číslo."
|
||||
Binary file not shown.
@@ -0,0 +1,185 @@
|
||||
# Swedish translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-01-24 11:01+0000\n"
|
||||
"Last-Translator: bittin1ddc447d824349b2 <bittin@reimu.nl>\n"
|
||||
"Language-Team: Swedish <https://hosted.weblate.org/projects/wtforms/wtforms/"
|
||||
"sv/>\n"
|
||||
"Language: sv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.4-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Felaktigt fältnamn '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Fältvärdet måste matcha %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Fältet måste vara minst %(min)d tecken långt."
|
||||
msgstr[1] "Fältet måste vara minst %(min)d tecken långt."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Fältet får inte vara längre än %(max)d tecken."
|
||||
msgstr[1] "Fältet får inte vara längre än %(max)d tecken."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "Fält måste vara exakt %(max)d tecken långt."
|
||||
msgstr[1] "Fältet måste vara exakt %(max)d tecken långt."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Fältet måste vara mellan %(min)d och %(max)d tecken långt."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Numret får inte vara mindre än %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Numret får inte vara högre än %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Numret måste vara mellan %(min)s och %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Det här fältet är obligatoriskt."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Felaktig indata."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Felaktig epost-adress."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Felaktig IP-adress."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Felaktig MAC-adress."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Felaktig URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Felaktig UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Felaktigt värde, måste vara ett av: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Felaktigt värde, får inte vara något av: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Detta fält kan inte redigeras."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "Det här fältet är inaktiverat och kan inte ha ett värde."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Felaktigt CSRF-token"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF-token saknas"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF misslyckades"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF-token utdaterat"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Felaktigt val; kunde inte ceorce:a"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "Val kan inte vara Inga."
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Inte ett giltigt val"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Felaktigt val; ett eller flera inputfält kunde inte coerca:s"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' är inte ett giltigt val för detta fält."
|
||||
msgstr[1] "'%(value)s' är inte giltiga val för detta fält."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Inte ett giltigt datum-/tidsvärde"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Inte ett giltigt datum"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "Inte ett giltigt tidsvärde."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Inte ett giltigt veckovärde."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Inte ett giltigt heltal"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Inte ett giltigt decimaltal"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Inte ett giltigt flyttal"
|
||||
Binary file not shown.
@@ -0,0 +1,185 @@
|
||||
# Turkish translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0.4\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-01-22 19:01+0000\n"
|
||||
"Last-Translator: Oğuz Ersen <oguz@ersen.moe>\n"
|
||||
"Language-Team: Turkish <https://hosted.weblate.org/projects/wtforms/wtforms/"
|
||||
"tr/>\n"
|
||||
"Language: tr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.4-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Geçersiz alan adı '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Alan %(other_name)s ile eşit olmalı."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Alan en az %(min)d karakter uzunluğunda olmalı."
|
||||
msgstr[1] "Alan en az %(min)d karakter uzunluğunda olmalı."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Alan %(max)d karakterden uzun olamaz."
|
||||
msgstr[1] "Alan %(max)d karakterden uzun olamaz."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "Alan tam olarak %(max)d karakter uzunluğunda olmalı."
|
||||
msgstr[1] "Alan tam olarak %(max)d karakter uzunluğunda olmalı."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Alanın uzunluğu %(min)d ile %(max)d karakter arasında olmalıdır."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Sayı en az %(min)s olmalıdır."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Sayı en fazla %(max)s olmalıdır."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Sayı %(min)s ile %(max)s arasında olmalıdır."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Bu alan zorunludur."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Geçersiz girdi."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Geçersiz e-posta adresi."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Geçersiz IP adresi."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Geçersiz Mac adresi."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Geçersiz URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Geçersiz UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Geçersiz değer, değerlerden biri olmalı: %(values)s ."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Geçersiz değer, değerlerden biri olamaz: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Bu alan düzenlenemez."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "Bu alan devre dışıdır ve bir değere sahip olamaz."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Geçersiz CSRF Anahtarı."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF anahtarı gerekli."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF hatalı."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF anahtarının süresi doldu."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Geçersiz seçim: tip uyuşmazlığı."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "Seçimler Hiçbiri olamaz."
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Geçerli bir seçenek değil."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Geçersiz seçenek: bir yada daha fazla tip uyuşmazlığı."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' bu alan için geçerli bir seçim değil."
|
||||
msgstr[1] "'%(value)s' bu alan için geçerli bir seçim değil."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Geçerli bir tarih-saat değeri değil."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Geçerli bir tarih değeri değil."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "Geçerli bir zaman değeri değil."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Geçerli bir hafta değeri değil."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Geçerli bir tam sayı değeri değil."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Geçerli bir ondalık sayı değeri değil."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Geçerli bir ondalık sayı değeri değil."
|
||||
Binary file not shown.
@@ -0,0 +1,190 @@
|
||||
# Ukrainian translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 2.0dev\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-01-15 09:06+0000\n"
|
||||
"Last-Translator: Сергій <sergiy.goncharuk.1@gmail.com>\n"
|
||||
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/wtforms/"
|
||||
"wtforms/uk/>\n"
|
||||
"Language: uk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 5.4-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "Невірне ім'я поля '%s'."
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "Поле має співпадати з %(other_name)s."
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "Значення поля має містити не менше %(min)d символа."
|
||||
msgstr[1] "Значення поля має містити не менше ніж %(min)d символи."
|
||||
msgstr[2] "Значення поля має містити не менше ніж %(min)d символів."
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "Значення поля має містити не більше %(max)d символа."
|
||||
msgstr[1] "Значення поля має містити не більше ніж %(max)d символи."
|
||||
msgstr[2] "Значення поля має містити не більше ніж %(max)d символів."
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "Поле повинно мати довжину рівно %(max)d символі."
|
||||
msgstr[1] "Поле повинно мати довжину рівно %(max)d символи."
|
||||
msgstr[2] "Поле повинно мати довжину рівно %(max)d символів."
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "Значення поля має містити від %(min)d до %(max)d символів."
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "Число має бути щонайменше %(min)s."
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "Число має бути щонайбільше %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "Число має бути між %(min)s та %(max)s."
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "Це поле є обов'язковим."
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "Введено невірно."
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "Невірна електронна адреса."
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "Невірна IP адреса."
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "Невірна Mac адреса."
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "Невірний URL."
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "Невірний UUID."
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "Значення невірне, має бути одним з: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "Значення невірне, не може бути одним з: %(values)s."
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "Це поле не можна редагувати."
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "Це поле неактивне і не може містити значення."
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "Невірний CSRF токен."
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF токен відсутній."
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "Помилка CSRF."
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF токен прострочений."
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "Недійсний варіант: перетворення неможливе."
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "Варіанти не можуть бути None."
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "Недійсний варіант."
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "Недійсний варіант: одне чи більше значень неможливо перетворити."
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "'%(value)s' не є дійсним варіантом для цього поля."
|
||||
msgstr[1] "'%(value)s' не є дійсним варіантом для цього поля."
|
||||
msgstr[2] "'%(value)s' не є дійсним варіантом для цього поля."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "Недійсне значення дати/часу."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "Не дійсне значення дати."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "Не дійсне значення часу."
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "Недійсне значення тижня."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "Недійсне ціле число."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "Не є дійсним десятковим числом."
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "Недійсне число з рухомою комою."
|
||||
182
venv/lib/python3.11/site-packages/wtforms/locale/wtforms.pot
Normal file
182
venv/lib/python3.11/site-packages/wtforms/locale/wtforms.pot
Normal file
@@ -0,0 +1,182 @@
|
||||
# Translations template for WTForms.
|
||||
# Copyright (C) 2024 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.12.1\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr ""
|
||||
Binary file not shown.
@@ -0,0 +1,188 @@
|
||||
# Chinese translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0.3\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2012-01-31 13:03-0700\n"
|
||||
"Last-Translator: Grey Li <withlihui@gmail.com>\n"
|
||||
"Language-Team: zh_CN <james+i18n@simplecodes.com>\n"
|
||||
"Language: zh\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "'%s' 是无效的字段名。"
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "字段必须和 %(other_name)s 相等。"
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "字段长度必须至少 %(min)d 个字符。"
|
||||
msgstr[1] "字段长度必须至少 %(min)d 个字符。"
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "字段长度不能超过 %(max)d 个字符。"
|
||||
msgstr[1] "字段长度不能超过 %(max)d 个字符。"
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "字段长度必须为 %(max)d 个字符。"
|
||||
msgstr[1] "字段长度必须为 %(max)d 个字符。"
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "字段长度必须介于 %(min)d 到 %(max)d 个字符之间。"
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "数值必须大于 %(min)s。"
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "数值必须小于 %(max)s。"
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "数值大小必须介于 %(min)s 到 %(max)s 之间。"
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "该字段是必填字段。"
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "无效的输入。"
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "无效的 Email 地址。"
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "无效的 IP 地址。"
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "无效的 MAC 地址。"
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "无效的 URL。"
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "无效的 UUID。"
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "无效的值,必须是下列之一: %(values)s。"
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "无效的值,不能是下列任何一个: %(values)s。"
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
#, fuzzy
|
||||
#| msgid "This field is required."
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "该字段是必填字段。"
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr ""
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "无效的 CSRF 验证令牌。"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "缺失 CSRF 验证令牌。"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF 验证失败。"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF 验证令牌过期。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "选择无效:无法转化类型。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "选择不能是空值。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "不是有效的选择。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "选择无效:至少一个数据输入无法被转化类型。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, fuzzy, python-format
|
||||
#| msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "“%(value)s” 对该字段而言是无效选项。"
|
||||
msgstr[1] "“%(value)s” 对该字段而言是无效选项。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "不是有效的日期与时间值。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "不是有效的日期值。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "不是有效的时间值。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
#, fuzzy
|
||||
#| msgid "Not a valid date value."
|
||||
msgid "Not a valid week value."
|
||||
msgstr "不是有效的日期值。"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "不是有效的整数。"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "不是有效的小数。"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "不是有效的浮点数。"
|
||||
Binary file not shown.
@@ -0,0 +1,181 @@
|
||||
# Chinese (Traditional, Taiwan) translations for WTForms.
|
||||
# Copyright (C) 2020 WTForms Team
|
||||
# This file is distributed under the same license as the WTForms project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WTForms 1.0.3\n"
|
||||
"Report-Msgid-Bugs-To: eloi.rivard@nubla.fr\n"
|
||||
"POT-Creation-Date: 2024-01-11 08:20+0100\n"
|
||||
"PO-Revision-Date: 2024-06-30 03:38+0000\n"
|
||||
"Last-Translator: hugoalh <hugoalh@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/"
|
||||
"wtforms/wtforms/zh_Hant/>\n"
|
||||
"Language: zh_TW\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.7-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: src/wtforms/validators.py:86
|
||||
#, python-format
|
||||
msgid "Invalid field name '%s'."
|
||||
msgstr "無效的欄位名稱「%s」。"
|
||||
|
||||
#: src/wtforms/validators.py:99
|
||||
#, python-format
|
||||
msgid "Field must be equal to %(other_name)s."
|
||||
msgstr "欄位必須與 %(other_name)s 相同。"
|
||||
|
||||
#: src/wtforms/validators.py:145
|
||||
#, python-format
|
||||
msgid "Field must be at least %(min)d character long."
|
||||
msgid_plural "Field must be at least %(min)d characters long."
|
||||
msgstr[0] "欄位長度必須至少為 %(min)d 個字元。"
|
||||
|
||||
#: src/wtforms/validators.py:151
|
||||
#, python-format
|
||||
msgid "Field cannot be longer than %(max)d character."
|
||||
msgid_plural "Field cannot be longer than %(max)d characters."
|
||||
msgstr[0] "欄位長度不能超過 %(max)d 個字元。"
|
||||
|
||||
#: src/wtforms/validators.py:157
|
||||
#, python-format
|
||||
msgid "Field must be exactly %(max)d character long."
|
||||
msgid_plural "Field must be exactly %(max)d characters long."
|
||||
msgstr[0] "欄位長度必須剛好為 %(max)d 個字元。"
|
||||
|
||||
#: src/wtforms/validators.py:163
|
||||
#, python-format
|
||||
msgid "Field must be between %(min)d and %(max)d characters long."
|
||||
msgstr "欄位長度必須介於 %(min)d 和 %(max)d 個字元之間。"
|
||||
|
||||
#: src/wtforms/validators.py:216
|
||||
#, python-format
|
||||
msgid "Number must be at least %(min)s."
|
||||
msgstr "數字必須至少為 %(min)s。"
|
||||
|
||||
#: src/wtforms/validators.py:219
|
||||
#, python-format
|
||||
msgid "Number must be at most %(max)s."
|
||||
msgstr "數字必須至多為 %(max)s。"
|
||||
|
||||
#: src/wtforms/validators.py:222
|
||||
#, python-format
|
||||
msgid "Number must be between %(min)s and %(max)s."
|
||||
msgstr "數字必須介於 %(min)s 和 %(max)s 之間。"
|
||||
|
||||
#: src/wtforms/validators.py:293 src/wtforms/validators.py:323
|
||||
msgid "This field is required."
|
||||
msgstr "此欄位是必需的。"
|
||||
|
||||
#: src/wtforms/validators.py:358
|
||||
msgid "Invalid input."
|
||||
msgstr "無效的輸入。"
|
||||
|
||||
#: src/wtforms/validators.py:422
|
||||
msgid "Invalid email address."
|
||||
msgstr "無效的電子郵件地址。"
|
||||
|
||||
#: src/wtforms/validators.py:460
|
||||
msgid "Invalid IP address."
|
||||
msgstr "無效的 IP 位址。"
|
||||
|
||||
#: src/wtforms/validators.py:503
|
||||
msgid "Invalid Mac address."
|
||||
msgstr "無效的 MAC 位址。"
|
||||
|
||||
#: src/wtforms/validators.py:540
|
||||
msgid "Invalid URL."
|
||||
msgstr "無效的網址。"
|
||||
|
||||
#: src/wtforms/validators.py:561
|
||||
msgid "Invalid UUID."
|
||||
msgstr "無效的 UUID。"
|
||||
|
||||
#: src/wtforms/validators.py:594
|
||||
#, python-format
|
||||
msgid "Invalid value, must be one of: %(values)s."
|
||||
msgstr "無效的值,必須為以下之一:%(values)s。"
|
||||
|
||||
#: src/wtforms/validators.py:629
|
||||
#, python-format
|
||||
msgid "Invalid value, can't be any of: %(values)s."
|
||||
msgstr "無效的值,不能為以下之一:%(values)s。"
|
||||
|
||||
#: src/wtforms/validators.py:698
|
||||
msgid "This field cannot be edited."
|
||||
msgstr "此欄位不能編輯。"
|
||||
|
||||
#: src/wtforms/validators.py:714
|
||||
msgid "This field is disabled and cannot have a value."
|
||||
msgstr "此欄位被停用並且不能有值。"
|
||||
|
||||
#: src/wtforms/csrf/core.py:96
|
||||
msgid "Invalid CSRF Token."
|
||||
msgstr "無效的 CSRF 憑證。"
|
||||
|
||||
#: src/wtforms/csrf/session.py:63
|
||||
msgid "CSRF token missing."
|
||||
msgstr "CSRF 憑證不存在。"
|
||||
|
||||
#: src/wtforms/csrf/session.py:71
|
||||
msgid "CSRF failed."
|
||||
msgstr "CSRF 驗證失敗。"
|
||||
|
||||
#: src/wtforms/csrf/session.py:76
|
||||
msgid "CSRF token expired."
|
||||
msgstr "CSRF 憑證過期。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:142
|
||||
msgid "Invalid Choice: could not coerce."
|
||||
msgstr "無效的選擇:無法強制轉化。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:149 src/wtforms/fields/choices.py:203
|
||||
msgid "Choices cannot be None."
|
||||
msgstr "選擇不能為空值。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:155
|
||||
msgid "Not a valid choice."
|
||||
msgstr "不是有效的選擇。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:193
|
||||
msgid "Invalid choice(s): one or more data inputs could not be coerced."
|
||||
msgstr "無效的選擇:至少有一筆資料無法被強制轉化。"
|
||||
|
||||
#: src/wtforms/fields/choices.py:214
|
||||
#, python-format
|
||||
msgid "'%(value)s' is not a valid choice for this field."
|
||||
msgid_plural "'%(value)s' are not valid choices for this field."
|
||||
msgstr[0] "「%(value)s」不是此欄位的有效選擇。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:51
|
||||
msgid "Not a valid datetime value."
|
||||
msgstr "不是有效的日期與時間值。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:77
|
||||
msgid "Not a valid date value."
|
||||
msgstr "不是有效的日期值。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:103
|
||||
msgid "Not a valid time value."
|
||||
msgstr "不是有效的時間值。"
|
||||
|
||||
#: src/wtforms/fields/datetime.py:148
|
||||
msgid "Not a valid week value."
|
||||
msgstr "不是有效的週值。"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:82 src/wtforms/fields/numeric.py:92
|
||||
msgid "Not a valid integer value."
|
||||
msgstr "不是有效的整數值。"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:168
|
||||
msgid "Not a valid decimal value."
|
||||
msgstr "不是有效的十進位數值。"
|
||||
|
||||
#: src/wtforms/fields/numeric.py:197
|
||||
msgid "Not a valid float value."
|
||||
msgstr "不是有效的浮點數值。"
|
||||
132
venv/lib/python3.11/site-packages/wtforms/meta.py
Normal file
132
venv/lib/python3.11/site-packages/wtforms/meta.py
Normal file
@@ -0,0 +1,132 @@
|
||||
from wtforms import i18n
|
||||
from wtforms.utils import WebobInputWrapper
|
||||
from wtforms.widgets.core import clean_key
|
||||
|
||||
|
||||
class DefaultMeta:
|
||||
"""
|
||||
This is the default Meta class which defines all the default values and
|
||||
therefore also the 'API' of the class Meta interface.
|
||||
"""
|
||||
|
||||
# -- Basic form primitives
|
||||
|
||||
def bind_field(self, form, unbound_field, options):
|
||||
"""
|
||||
bind_field allows potential customization of how fields are bound.
|
||||
|
||||
The default implementation simply passes the options to
|
||||
:meth:`UnboundField.bind`.
|
||||
|
||||
:param form: The form.
|
||||
:param unbound_field: The unbound field.
|
||||
:param options:
|
||||
A dictionary of options which are typically passed to the field.
|
||||
|
||||
:return: A bound field
|
||||
"""
|
||||
return unbound_field.bind(form=form, **options)
|
||||
|
||||
def wrap_formdata(self, form, formdata):
|
||||
"""
|
||||
wrap_formdata allows doing custom wrappers of WTForms formdata.
|
||||
|
||||
The default implementation detects webob-style multidicts and wraps
|
||||
them, otherwise passes formdata back un-changed.
|
||||
|
||||
:param form: The form.
|
||||
:param formdata: Form data.
|
||||
:return: A form-input wrapper compatible with WTForms.
|
||||
"""
|
||||
if formdata is not None and not hasattr(formdata, "getlist"):
|
||||
if hasattr(formdata, "getall"):
|
||||
return WebobInputWrapper(formdata)
|
||||
else:
|
||||
raise TypeError(
|
||||
"formdata should be a multidict-type wrapper that"
|
||||
" supports the 'getlist' method"
|
||||
)
|
||||
return formdata
|
||||
|
||||
def render_field(self, field, render_kw):
|
||||
"""
|
||||
render_field allows customization of how widget rendering is done.
|
||||
|
||||
The default implementation calls ``field.widget(field, **render_kw)``
|
||||
"""
|
||||
|
||||
render_kw = {clean_key(k): v for k, v in render_kw.items()}
|
||||
|
||||
other_kw = getattr(field, "render_kw", None)
|
||||
if other_kw is not None:
|
||||
other_kw = {clean_key(k): v for k, v in other_kw.items()}
|
||||
render_kw = dict(other_kw, **render_kw)
|
||||
return field.widget(field, **render_kw)
|
||||
|
||||
# -- CSRF
|
||||
|
||||
csrf = False
|
||||
csrf_field_name = "csrf_token"
|
||||
csrf_secret = None
|
||||
csrf_context = None
|
||||
csrf_class = None
|
||||
|
||||
def build_csrf(self, form):
|
||||
"""
|
||||
Build a CSRF implementation. This is called once per form instance.
|
||||
|
||||
The default implementation builds the class referenced to by
|
||||
:attr:`csrf_class` with zero arguments. If `csrf_class` is ``None``,
|
||||
will instead use the default implementation
|
||||
:class:`wtforms.csrf.session.SessionCSRF`.
|
||||
|
||||
:param form: The form.
|
||||
:return: A CSRF implementation.
|
||||
"""
|
||||
if self.csrf_class is not None:
|
||||
return self.csrf_class()
|
||||
|
||||
from wtforms.csrf.session import SessionCSRF
|
||||
|
||||
return SessionCSRF()
|
||||
|
||||
# -- i18n
|
||||
|
||||
locales = False
|
||||
cache_translations = True
|
||||
translations_cache = {}
|
||||
|
||||
def get_translations(self, form):
|
||||
"""
|
||||
Override in subclasses to provide alternate translations factory.
|
||||
See the i18n documentation for more.
|
||||
|
||||
:param form: The form.
|
||||
:return: An object that provides gettext() and ngettext() methods.
|
||||
"""
|
||||
locales = self.locales
|
||||
if locales is False:
|
||||
return None
|
||||
|
||||
if self.cache_translations:
|
||||
# Make locales be a hashable value
|
||||
locales = tuple(locales) if locales else None
|
||||
|
||||
translations = self.translations_cache.get(locales)
|
||||
if translations is None:
|
||||
translations = self.translations_cache[locales] = i18n.get_translations(
|
||||
locales
|
||||
)
|
||||
|
||||
return translations
|
||||
|
||||
return i18n.get_translations(locales)
|
||||
|
||||
# -- General
|
||||
|
||||
def update_values(self, values):
|
||||
"""
|
||||
Given a dictionary of values, update values on this `Meta` instance.
|
||||
"""
|
||||
for key, value in values.items():
|
||||
setattr(self, key, value)
|
||||
91
venv/lib/python3.11/site-packages/wtforms/utils.py
Normal file
91
venv/lib/python3.11/site-packages/wtforms/utils.py
Normal file
@@ -0,0 +1,91 @@
|
||||
import os
|
||||
import re
|
||||
|
||||
_LEADING_SYMBOL = "#" if os.name == "nt" else "-"
|
||||
|
||||
# https://docs.python.org/3/library/datetime.html#technical-detail (see NOTE #9)
|
||||
_DATETIME_STRIP_ZERO_PADDING_FORMATS_RE = re.compile(
|
||||
f"%{_LEADING_SYMBOL}["
|
||||
"d" # day of month
|
||||
"m" # month
|
||||
"H" # hour (24-hour)
|
||||
"I" # hour (12-hour)
|
||||
"M" # minutes
|
||||
"S" # seconds
|
||||
"U" # week of year (Sunday first day of week)
|
||||
"W" # week of year (Monday first day of week)
|
||||
"V" # week of year (ISO 8601)
|
||||
"]",
|
||||
re.MULTILINE,
|
||||
)
|
||||
|
||||
|
||||
def clean_datetime_format_for_strptime(formats):
|
||||
"""
|
||||
Remove dashes used to disable zero-padding with strftime formats (for
|
||||
compatibility with strptime).
|
||||
"""
|
||||
return [
|
||||
re.sub(
|
||||
_DATETIME_STRIP_ZERO_PADDING_FORMATS_RE,
|
||||
lambda m: m[0].replace(_LEADING_SYMBOL, ""),
|
||||
format,
|
||||
)
|
||||
for format in formats
|
||||
]
|
||||
|
||||
|
||||
class UnsetValue:
|
||||
"""
|
||||
An unset value.
|
||||
|
||||
This is used in situations where a blank value like `None` is acceptable
|
||||
usually as the default value of a class variable or function parameter
|
||||
(iow, usually when `None` is a valid value.)
|
||||
"""
|
||||
|
||||
def __str__(self):
|
||||
return "<unset value>"
|
||||
|
||||
def __repr__(self):
|
||||
return "<unset value>"
|
||||
|
||||
def __bool__(self):
|
||||
return False
|
||||
|
||||
def __nonzero__(self):
|
||||
return False
|
||||
|
||||
|
||||
unset_value = UnsetValue()
|
||||
|
||||
|
||||
class WebobInputWrapper:
|
||||
"""
|
||||
Wrap a webob MultiDict for use as passing as `formdata` to Field.
|
||||
|
||||
Since for consistency, we have decided in WTForms to support as input a
|
||||
small subset of the API provided in common between cgi.FieldStorage,
|
||||
Django's QueryDict, and Werkzeug's MultiDict, we need to wrap Webob, the
|
||||
only supported framework whose multidict does not fit this API, but is
|
||||
nevertheless used by a lot of frameworks.
|
||||
|
||||
While we could write a full wrapper to support all the methods, this will
|
||||
undoubtedly result in bugs due to some subtle differences between the
|
||||
various wrappers. So we will keep it simple.
|
||||
"""
|
||||
|
||||
def __init__(self, multidict):
|
||||
self._wrapped = multidict
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self._wrapped)
|
||||
|
||||
def __len__(self):
|
||||
return len(self._wrapped)
|
||||
|
||||
def __contains__(self, name):
|
||||
return name in self._wrapped
|
||||
|
||||
def getlist(self, name):
|
||||
return self._wrapped.getall(name)
|
||||
734
venv/lib/python3.11/site-packages/wtforms/validators.py
Normal file
734
venv/lib/python3.11/site-packages/wtforms/validators.py
Normal file
@@ -0,0 +1,734 @@
|
||||
import ipaddress
|
||||
import math
|
||||
import re
|
||||
import uuid
|
||||
|
||||
__all__ = (
|
||||
"DataRequired",
|
||||
"data_required",
|
||||
"Email",
|
||||
"email",
|
||||
"EqualTo",
|
||||
"equal_to",
|
||||
"IPAddress",
|
||||
"ip_address",
|
||||
"InputRequired",
|
||||
"input_required",
|
||||
"Length",
|
||||
"length",
|
||||
"NumberRange",
|
||||
"number_range",
|
||||
"Optional",
|
||||
"optional",
|
||||
"Regexp",
|
||||
"regexp",
|
||||
"URL",
|
||||
"url",
|
||||
"AnyOf",
|
||||
"any_of",
|
||||
"NoneOf",
|
||||
"none_of",
|
||||
"MacAddress",
|
||||
"mac_address",
|
||||
"UUID",
|
||||
"ValidationError",
|
||||
"StopValidation",
|
||||
"readonly",
|
||||
"ReadOnly",
|
||||
"disabled",
|
||||
"Disabled",
|
||||
)
|
||||
|
||||
|
||||
class ValidationError(ValueError):
|
||||
"""
|
||||
Raised when a validator fails to validate its input.
|
||||
"""
|
||||
|
||||
def __init__(self, message="", *args, **kwargs):
|
||||
ValueError.__init__(self, message, *args, **kwargs)
|
||||
|
||||
|
||||
class StopValidation(Exception):
|
||||
"""
|
||||
Causes the validation chain to stop.
|
||||
|
||||
If StopValidation is raised, no more validators in the validation chain are
|
||||
called. If raised with a message, the message will be added to the errors
|
||||
list.
|
||||
"""
|
||||
|
||||
def __init__(self, message="", *args, **kwargs):
|
||||
Exception.__init__(self, message, *args, **kwargs)
|
||||
|
||||
|
||||
class EqualTo:
|
||||
"""
|
||||
Compares the values of two fields.
|
||||
|
||||
:param fieldname:
|
||||
The name of the other field to compare to.
|
||||
:param message:
|
||||
Error message to raise in case of a validation error. Can be
|
||||
interpolated with `%(other_label)s` and `%(other_name)s` to provide a
|
||||
more helpful error.
|
||||
"""
|
||||
|
||||
def __init__(self, fieldname, message=None):
|
||||
self.fieldname = fieldname
|
||||
self.message = message
|
||||
|
||||
def __call__(self, form, field):
|
||||
try:
|
||||
other = form[self.fieldname]
|
||||
except KeyError as exc:
|
||||
raise ValidationError(
|
||||
field.gettext("Invalid field name '%s'.") % self.fieldname
|
||||
) from exc
|
||||
if field.data == other.data:
|
||||
return
|
||||
|
||||
d = {
|
||||
"other_label": hasattr(other, "label")
|
||||
and other.label.text
|
||||
or self.fieldname,
|
||||
"other_name": self.fieldname,
|
||||
}
|
||||
message = self.message
|
||||
if message is None:
|
||||
message = field.gettext("Field must be equal to %(other_name)s.")
|
||||
|
||||
raise ValidationError(message % d)
|
||||
|
||||
|
||||
class Length:
|
||||
"""
|
||||
Validates the length of a string.
|
||||
|
||||
:param min:
|
||||
The minimum required length of the string. If not provided, minimum
|
||||
length will not be checked.
|
||||
:param max:
|
||||
The maximum length of the string. If not provided, maximum length
|
||||
will not be checked.
|
||||
:param message:
|
||||
Error message to raise in case of a validation error. Can be
|
||||
interpolated using `%(min)d` and `%(max)d` if desired. Useful defaults
|
||||
are provided depending on the existence of min and max.
|
||||
|
||||
When supported, sets the `minlength` and `maxlength` attributes on widgets.
|
||||
"""
|
||||
|
||||
def __init__(self, min=-1, max=-1, message=None):
|
||||
assert (
|
||||
min != -1 or max != -1
|
||||
), "At least one of `min` or `max` must be specified."
|
||||
assert max == -1 or min <= max, "`min` cannot be more than `max`."
|
||||
self.min = min
|
||||
self.max = max
|
||||
self.message = message
|
||||
self.field_flags = {}
|
||||
if self.min != -1:
|
||||
self.field_flags["minlength"] = self.min
|
||||
if self.max != -1:
|
||||
self.field_flags["maxlength"] = self.max
|
||||
|
||||
def __call__(self, form, field):
|
||||
length = field.data and len(field.data) or 0
|
||||
if length >= self.min and (self.max == -1 or length <= self.max):
|
||||
return
|
||||
|
||||
if self.message is not None:
|
||||
message = self.message
|
||||
|
||||
elif self.max == -1:
|
||||
message = field.ngettext(
|
||||
"Field must be at least %(min)d character long.",
|
||||
"Field must be at least %(min)d characters long.",
|
||||
self.min,
|
||||
)
|
||||
elif self.min == -1:
|
||||
message = field.ngettext(
|
||||
"Field cannot be longer than %(max)d character.",
|
||||
"Field cannot be longer than %(max)d characters.",
|
||||
self.max,
|
||||
)
|
||||
elif self.min == self.max:
|
||||
message = field.ngettext(
|
||||
"Field must be exactly %(max)d character long.",
|
||||
"Field must be exactly %(max)d characters long.",
|
||||
self.max,
|
||||
)
|
||||
else:
|
||||
message = field.gettext(
|
||||
"Field must be between %(min)d and %(max)d characters long."
|
||||
)
|
||||
|
||||
raise ValidationError(message % dict(min=self.min, max=self.max, length=length))
|
||||
|
||||
|
||||
class NumberRange:
|
||||
"""
|
||||
Validates that a number is of a minimum and/or maximum value, inclusive.
|
||||
This will work with any comparable number type, such as floats and
|
||||
decimals, not just integers.
|
||||
|
||||
:param min:
|
||||
The minimum required value of the number. If not provided, minimum
|
||||
value will not be checked.
|
||||
:param max:
|
||||
The maximum value of the number. If not provided, maximum value
|
||||
will not be checked.
|
||||
:param message:
|
||||
Error message to raise in case of a validation error. Can be
|
||||
interpolated using `%(min)s` and `%(max)s` if desired. Useful defaults
|
||||
are provided depending on the existence of min and max.
|
||||
|
||||
When supported, sets the `min` and `max` attributes on widgets.
|
||||
"""
|
||||
|
||||
def __init__(self, min=None, max=None, message=None):
|
||||
self.min = min
|
||||
self.max = max
|
||||
self.message = message
|
||||
self.field_flags = {}
|
||||
if self.min is not None:
|
||||
self.field_flags["min"] = self.min
|
||||
if self.max is not None:
|
||||
self.field_flags["max"] = self.max
|
||||
|
||||
def __call__(self, form, field):
|
||||
data = field.data
|
||||
if (
|
||||
data is not None
|
||||
and not math.isnan(data)
|
||||
and (self.min is None or data >= self.min)
|
||||
and (self.max is None or data <= self.max)
|
||||
):
|
||||
return
|
||||
|
||||
if self.message is not None:
|
||||
message = self.message
|
||||
|
||||
# we use %(min)s interpolation to support floats, None, and
|
||||
# Decimals without throwing a formatting exception.
|
||||
elif self.max is None:
|
||||
message = field.gettext("Number must be at least %(min)s.")
|
||||
|
||||
elif self.min is None:
|
||||
message = field.gettext("Number must be at most %(max)s.")
|
||||
|
||||
else:
|
||||
message = field.gettext("Number must be between %(min)s and %(max)s.")
|
||||
|
||||
raise ValidationError(message % dict(min=self.min, max=self.max))
|
||||
|
||||
|
||||
class Optional:
|
||||
"""
|
||||
Allows empty input and stops the validation chain from continuing.
|
||||
|
||||
If input is empty, also removes prior errors (such as processing errors)
|
||||
from the field.
|
||||
|
||||
:param strip_whitespace:
|
||||
If True (the default) also stop the validation chain on input which
|
||||
consists of only whitespace.
|
||||
|
||||
Sets the `optional` attribute on widgets.
|
||||
"""
|
||||
|
||||
def __init__(self, strip_whitespace=True):
|
||||
if strip_whitespace:
|
||||
self.string_check = lambda s: s.strip()
|
||||
else:
|
||||
self.string_check = lambda s: s
|
||||
|
||||
self.field_flags = {"optional": True}
|
||||
|
||||
def __call__(self, form, field):
|
||||
if (
|
||||
not field.raw_data
|
||||
or isinstance(field.raw_data[0], str)
|
||||
and not self.string_check(field.raw_data[0])
|
||||
):
|
||||
field.errors[:] = []
|
||||
raise StopValidation()
|
||||
|
||||
|
||||
class DataRequired:
|
||||
"""
|
||||
Checks the field's data is 'truthy' otherwise stops the validation chain.
|
||||
|
||||
This validator checks that the ``data`` attribute on the field is a 'true'
|
||||
value (effectively, it does ``if field.data``.) Furthermore, if the data
|
||||
is a string type, a string containing only whitespace characters is
|
||||
considered false.
|
||||
|
||||
If the data is empty, also removes prior errors (such as processing errors)
|
||||
from the field.
|
||||
|
||||
**NOTE** this validator used to be called `Required` but the way it behaved
|
||||
(requiring coerced data, not input data) meant it functioned in a way
|
||||
which was not symmetric to the `Optional` validator and furthermore caused
|
||||
confusion with certain fields which coerced data to 'falsey' values like
|
||||
``0``, ``Decimal(0)``, ``time(0)`` etc. Unless a very specific reason
|
||||
exists, we recommend using the :class:`InputRequired` instead.
|
||||
|
||||
:param message:
|
||||
Error message to raise in case of a validation error.
|
||||
|
||||
Sets the `required` attribute on widgets.
|
||||
"""
|
||||
|
||||
def __init__(self, message=None):
|
||||
self.message = message
|
||||
self.field_flags = {"required": True}
|
||||
|
||||
def __call__(self, form, field):
|
||||
if field.data and (not isinstance(field.data, str) or field.data.strip()):
|
||||
return
|
||||
|
||||
if self.message is None:
|
||||
message = field.gettext("This field is required.")
|
||||
else:
|
||||
message = self.message
|
||||
|
||||
field.errors[:] = []
|
||||
raise StopValidation(message)
|
||||
|
||||
|
||||
class InputRequired:
|
||||
"""
|
||||
Validates that input was provided for this field.
|
||||
|
||||
Note there is a distinction between this and DataRequired in that
|
||||
InputRequired looks that form-input data was provided, and DataRequired
|
||||
looks at the post-coercion data. This means that this validator only checks
|
||||
whether non-empty data was sent, not whether non-empty data was coerced
|
||||
from that data. Initially populated data is not considered sent.
|
||||
|
||||
Sets the `required` attribute on widgets.
|
||||
"""
|
||||
|
||||
def __init__(self, message=None):
|
||||
self.message = message
|
||||
self.field_flags = {"required": True}
|
||||
|
||||
def __call__(self, form, field):
|
||||
if field.raw_data and field.raw_data[0]:
|
||||
return
|
||||
|
||||
if self.message is None:
|
||||
message = field.gettext("This field is required.")
|
||||
else:
|
||||
message = self.message
|
||||
|
||||
field.errors[:] = []
|
||||
raise StopValidation(message)
|
||||
|
||||
|
||||
class Regexp:
|
||||
"""
|
||||
Validates the field against a user provided regexp.
|
||||
|
||||
:param regex:
|
||||
The regular expression string to use. Can also be a compiled regular
|
||||
expression pattern.
|
||||
:param flags:
|
||||
The regexp flags to use, for example re.IGNORECASE. Ignored if
|
||||
`regex` is not a string.
|
||||
:param message:
|
||||
Error message to raise in case of a validation error.
|
||||
"""
|
||||
|
||||
def __init__(self, regex, flags=0, message=None):
|
||||
if isinstance(regex, str):
|
||||
regex = re.compile(regex, flags)
|
||||
self.regex = regex
|
||||
self.message = message
|
||||
|
||||
def __call__(self, form, field, message=None):
|
||||
match = self.regex.match(field.data or "")
|
||||
if match:
|
||||
return match
|
||||
|
||||
if message is None:
|
||||
if self.message is None:
|
||||
message = field.gettext("Invalid input.")
|
||||
else:
|
||||
message = self.message
|
||||
|
||||
raise ValidationError(message)
|
||||
|
||||
|
||||
class Email:
|
||||
"""
|
||||
Validates an email address. Requires email_validator package to be
|
||||
installed. For ex: pip install wtforms[email].
|
||||
|
||||
:param message:
|
||||
Error message to raise in case of a validation error.
|
||||
:param granular_message:
|
||||
Use validation failed message from email_validator library
|
||||
(Default False).
|
||||
:param check_deliverability:
|
||||
Perform domain name resolution check (Default False).
|
||||
:param allow_smtputf8:
|
||||
Fail validation for addresses that would require SMTPUTF8
|
||||
(Default True).
|
||||
:param allow_empty_local:
|
||||
Allow an empty local part (i.e. @example.com), e.g. for validating
|
||||
Postfix aliases (Default False).
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
message=None,
|
||||
granular_message=False,
|
||||
check_deliverability=False,
|
||||
allow_smtputf8=True,
|
||||
allow_empty_local=False,
|
||||
):
|
||||
self.message = message
|
||||
self.granular_message = granular_message
|
||||
self.check_deliverability = check_deliverability
|
||||
self.allow_smtputf8 = allow_smtputf8
|
||||
self.allow_empty_local = allow_empty_local
|
||||
|
||||
def __call__(self, form, field):
|
||||
try:
|
||||
import email_validator
|
||||
except ImportError as exc: # pragma: no cover
|
||||
raise Exception(
|
||||
"Install 'email_validator' for email validation support."
|
||||
) from exc
|
||||
|
||||
try:
|
||||
if field.data is None:
|
||||
raise email_validator.EmailNotValidError()
|
||||
email_validator.validate_email(
|
||||
field.data,
|
||||
check_deliverability=self.check_deliverability,
|
||||
allow_smtputf8=self.allow_smtputf8,
|
||||
allow_empty_local=self.allow_empty_local,
|
||||
)
|
||||
except email_validator.EmailNotValidError as e:
|
||||
message = self.message
|
||||
if message is None:
|
||||
if self.granular_message:
|
||||
message = field.gettext(e)
|
||||
else:
|
||||
message = field.gettext("Invalid email address.")
|
||||
raise ValidationError(message) from e
|
||||
|
||||
|
||||
class IPAddress:
|
||||
"""
|
||||
Validates an IP address.
|
||||
|
||||
:param ipv4:
|
||||
If True, accept IPv4 addresses as valid (default True)
|
||||
:param ipv6:
|
||||
If True, accept IPv6 addresses as valid (default False)
|
||||
:param message:
|
||||
Error message to raise in case of a validation error.
|
||||
"""
|
||||
|
||||
def __init__(self, ipv4=True, ipv6=False, message=None):
|
||||
if not ipv4 and not ipv6:
|
||||
raise ValueError(
|
||||
"IP Address Validator must have at least one of ipv4 or ipv6 enabled."
|
||||
)
|
||||
self.ipv4 = ipv4
|
||||
self.ipv6 = ipv6
|
||||
self.message = message
|
||||
|
||||
def __call__(self, form, field):
|
||||
value = field.data
|
||||
valid = False
|
||||
if value:
|
||||
valid = (self.ipv4 and self.check_ipv4(value)) or (
|
||||
self.ipv6 and self.check_ipv6(value)
|
||||
)
|
||||
|
||||
if valid:
|
||||
return
|
||||
|
||||
message = self.message
|
||||
if message is None:
|
||||
message = field.gettext("Invalid IP address.")
|
||||
raise ValidationError(message)
|
||||
|
||||
@classmethod
|
||||
def check_ipv4(cls, value):
|
||||
try:
|
||||
address = ipaddress.ip_address(value)
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
if not isinstance(address, ipaddress.IPv4Address):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
@classmethod
|
||||
def check_ipv6(cls, value):
|
||||
try:
|
||||
address = ipaddress.ip_address(value)
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
if not isinstance(address, ipaddress.IPv6Address):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
class MacAddress(Regexp):
|
||||
"""
|
||||
Validates a MAC address.
|
||||
|
||||
:param message:
|
||||
Error message to raise in case of a validation error.
|
||||
"""
|
||||
|
||||
def __init__(self, message=None):
|
||||
pattern = r"^(?:[0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$"
|
||||
super().__init__(pattern, message=message)
|
||||
|
||||
def __call__(self, form, field):
|
||||
message = self.message
|
||||
if message is None:
|
||||
message = field.gettext("Invalid Mac address.")
|
||||
|
||||
super().__call__(form, field, message)
|
||||
|
||||
|
||||
class URL(Regexp):
|
||||
"""
|
||||
Simple regexp based url validation. Much like the email validator, you
|
||||
probably want to validate the url later by other means if the url must
|
||||
resolve.
|
||||
|
||||
:param require_tld:
|
||||
If true, then the domain-name portion of the URL must contain a .tld
|
||||
suffix. Set this to false if you want to allow domains like
|
||||
`localhost`.
|
||||
:param allow_ip:
|
||||
If false, then give ip as host will fail validation
|
||||
:param message:
|
||||
Error message to raise in case of a validation error.
|
||||
"""
|
||||
|
||||
def __init__(self, require_tld=True, allow_ip=True, message=None):
|
||||
regex = (
|
||||
r"^[a-z]+://"
|
||||
r"(?P<host>[^\/\?:]+)"
|
||||
r"(?P<port>:[0-9]+)?"
|
||||
r"(?P<path>\/.*?)?"
|
||||
r"(?P<query>\?.*)?$"
|
||||
)
|
||||
super().__init__(regex, re.IGNORECASE, message)
|
||||
self.validate_hostname = HostnameValidation(
|
||||
require_tld=require_tld, allow_ip=allow_ip
|
||||
)
|
||||
|
||||
def __call__(self, form, field):
|
||||
message = self.message
|
||||
if message is None:
|
||||
message = field.gettext("Invalid URL.")
|
||||
|
||||
match = super().__call__(form, field, message)
|
||||
if not self.validate_hostname(match.group("host")):
|
||||
raise ValidationError(message)
|
||||
|
||||
|
||||
class UUID:
|
||||
"""
|
||||
Validates a UUID.
|
||||
|
||||
:param message:
|
||||
Error message to raise in case of a validation error.
|
||||
"""
|
||||
|
||||
def __init__(self, message=None):
|
||||
self.message = message
|
||||
|
||||
def __call__(self, form, field):
|
||||
message = self.message
|
||||
if message is None:
|
||||
message = field.gettext("Invalid UUID.")
|
||||
try:
|
||||
uuid.UUID(field.data)
|
||||
except ValueError as exc:
|
||||
raise ValidationError(message) from exc
|
||||
|
||||
|
||||
class AnyOf:
|
||||
"""
|
||||
Compares the incoming data to a sequence of valid inputs.
|
||||
|
||||
:param values:
|
||||
A sequence of valid inputs.
|
||||
:param message:
|
||||
Error message to raise in case of a validation error. `%(values)s`
|
||||
contains the list of values.
|
||||
:param values_formatter:
|
||||
Function used to format the list of values in the error message.
|
||||
"""
|
||||
|
||||
def __init__(self, values, message=None, values_formatter=None):
|
||||
self.values = values
|
||||
self.message = message
|
||||
if values_formatter is None:
|
||||
values_formatter = self.default_values_formatter
|
||||
self.values_formatter = values_formatter
|
||||
|
||||
def __call__(self, form, field):
|
||||
data = field.data if isinstance(field.data, list) else [field.data]
|
||||
if any(d in self.values for d in data):
|
||||
return
|
||||
|
||||
message = self.message
|
||||
if message is None:
|
||||
message = field.gettext("Invalid value, must be one of: %(values)s.")
|
||||
|
||||
raise ValidationError(message % dict(values=self.values_formatter(self.values)))
|
||||
|
||||
@staticmethod
|
||||
def default_values_formatter(values):
|
||||
return ", ".join(str(x) for x in values)
|
||||
|
||||
|
||||
class NoneOf:
|
||||
"""
|
||||
Compares the incoming data to a sequence of invalid inputs.
|
||||
|
||||
:param values:
|
||||
A sequence of invalid inputs.
|
||||
:param message:
|
||||
Error message to raise in case of a validation error. `%(values)s`
|
||||
contains the list of values.
|
||||
:param values_formatter:
|
||||
Function used to format the list of values in the error message.
|
||||
"""
|
||||
|
||||
def __init__(self, values, message=None, values_formatter=None):
|
||||
self.values = values
|
||||
self.message = message
|
||||
if values_formatter is None:
|
||||
values_formatter = self.default_values_formatter
|
||||
self.values_formatter = values_formatter
|
||||
|
||||
def __call__(self, form, field):
|
||||
data = field.data if isinstance(field.data, list) else [field.data]
|
||||
if not any(d in self.values for d in data):
|
||||
return
|
||||
|
||||
message = self.message
|
||||
if message is None:
|
||||
message = field.gettext("Invalid value, can't be any of: %(values)s.")
|
||||
|
||||
raise ValidationError(message % dict(values=self.values_formatter(self.values)))
|
||||
|
||||
@staticmethod
|
||||
def default_values_formatter(v):
|
||||
return ", ".join(str(x) for x in v)
|
||||
|
||||
|
||||
class HostnameValidation:
|
||||
"""
|
||||
Helper class for checking hostnames for validation.
|
||||
|
||||
This is not a validator in and of itself, and as such is not exported.
|
||||
"""
|
||||
|
||||
hostname_part = re.compile(r"^(xn-|[a-z0-9_]+)(-[a-z0-9_-]+)*$", re.IGNORECASE)
|
||||
tld_part = re.compile(r"^([a-z]{2,20}|xn--([a-z0-9]+-)*[a-z0-9]+)$", re.IGNORECASE)
|
||||
|
||||
def __init__(self, require_tld=True, allow_ip=False):
|
||||
self.require_tld = require_tld
|
||||
self.allow_ip = allow_ip
|
||||
|
||||
def __call__(self, hostname):
|
||||
if self.allow_ip and (
|
||||
IPAddress.check_ipv4(hostname) or IPAddress.check_ipv6(hostname)
|
||||
):
|
||||
return True
|
||||
|
||||
# Encode out IDNA hostnames. This makes further validation easier.
|
||||
try:
|
||||
hostname = hostname.encode("idna")
|
||||
except UnicodeError:
|
||||
pass
|
||||
|
||||
# Turn back into a string in Python 3x
|
||||
if not isinstance(hostname, str):
|
||||
hostname = hostname.decode("ascii")
|
||||
|
||||
if len(hostname) > 253:
|
||||
return False
|
||||
|
||||
# Check that all labels in the hostname are valid
|
||||
parts = hostname.split(".")
|
||||
for part in parts:
|
||||
if not part or len(part) > 63:
|
||||
return False
|
||||
if not self.hostname_part.match(part):
|
||||
return False
|
||||
|
||||
if self.require_tld and (len(parts) < 2 or not self.tld_part.match(parts[-1])):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
class ReadOnly:
|
||||
"""
|
||||
Set a field readonly.
|
||||
|
||||
Validation fails if the form data is different than the
|
||||
field object data, or if unset, from the field default data.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.field_flags = {"readonly": True}
|
||||
|
||||
def __call__(self, form, field):
|
||||
if field.data != field.object_data:
|
||||
raise ValidationError(field.gettext("This field cannot be edited."))
|
||||
|
||||
|
||||
class Disabled:
|
||||
"""
|
||||
Set a field disabled.
|
||||
|
||||
Validation fails if the form data has any value.
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.field_flags = {"disabled": True}
|
||||
|
||||
def __call__(self, form, field):
|
||||
if field.raw_data is not None:
|
||||
raise ValidationError(
|
||||
field.gettext("This field is disabled and cannot have a value.")
|
||||
)
|
||||
|
||||
|
||||
email = Email
|
||||
equal_to = EqualTo
|
||||
ip_address = IPAddress
|
||||
mac_address = MacAddress
|
||||
length = Length
|
||||
number_range = NumberRange
|
||||
optional = Optional
|
||||
input_required = InputRequired
|
||||
data_required = DataRequired
|
||||
regexp = Regexp
|
||||
url = URL
|
||||
any_of = AnyOf
|
||||
none_of = NoneOf
|
||||
readonly = ReadOnly
|
||||
disabled = Disabled
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user