Added github integration
This commit is contained in:
79
buffteks/lib/python3.11/site-packages/wtforms/__init__.py
Normal file
79
buffteks/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",
|
||||
]
|
||||
96
buffteks/lib/python3.11/site-packages/wtforms/csrf/core.py
Normal file
96
buffteks/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."))
|
||||
@@ -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
|
||||
)
|
||||
@@ -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",
|
||||
]
|
||||
229
buffteks/lib/python3.11/site-packages/wtforms/fields/choices.py
Normal file
229
buffteks/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
buffteks/lib/python3.11/site-packages/wtforms/fields/core.py
Normal file
448
buffteks/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
buffteks/lib/python3.11/site-packages/wtforms/fields/datetime.py
Normal file
170
buffteks/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
buffteks/lib/python3.11/site-packages/wtforms/fields/form.py
Normal file
98
buffteks/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
buffteks/lib/python3.11/site-packages/wtforms/fields/list.py
Normal file
202
buffteks/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
buffteks/lib/python3.11/site-packages/wtforms/fields/numeric.py
Normal file
213
buffteks/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
buffteks/lib/python3.11/site-packages/wtforms/fields/simple.py
Normal file
173
buffteks/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
buffteks/lib/python3.11/site-packages/wtforms/form.py
Normal file
330
buffteks/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
buffteks/lib/python3.11/site-packages/wtforms/i18n.py
Normal file
72
buffteks/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
|
||||
@@ -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
buffteks/lib/python3.11/site-packages/wtforms/locale/wtforms.pot
Normal file
182
buffteks/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
buffteks/lib/python3.11/site-packages/wtforms/meta.py
Normal file
132
buffteks/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
buffteks/lib/python3.11/site-packages/wtforms/utils.py
Normal file
91
buffteks/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
buffteks/lib/python3.11/site-packages/wtforms/validators.py
Normal file
734
buffteks/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
|
||||
@@ -0,0 +1,57 @@
|
||||
from wtforms.widgets.core import CheckboxInput
|
||||
from wtforms.widgets.core import ColorInput
|
||||
from wtforms.widgets.core import DateInput
|
||||
from wtforms.widgets.core import DateTimeInput
|
||||
from wtforms.widgets.core import DateTimeLocalInput
|
||||
from wtforms.widgets.core import EmailInput
|
||||
from wtforms.widgets.core import FileInput
|
||||
from wtforms.widgets.core import HiddenInput
|
||||
from wtforms.widgets.core import html_params
|
||||
from wtforms.widgets.core import Input
|
||||
from wtforms.widgets.core import ListWidget
|
||||
from wtforms.widgets.core import MonthInput
|
||||
from wtforms.widgets.core import NumberInput
|
||||
from wtforms.widgets.core import Option
|
||||
from wtforms.widgets.core import PasswordInput
|
||||
from wtforms.widgets.core import RadioInput
|
||||
from wtforms.widgets.core import RangeInput
|
||||
from wtforms.widgets.core import SearchInput
|
||||
from wtforms.widgets.core import Select
|
||||
from wtforms.widgets.core import SubmitInput
|
||||
from wtforms.widgets.core import TableWidget
|
||||
from wtforms.widgets.core import TelInput
|
||||
from wtforms.widgets.core import TextArea
|
||||
from wtforms.widgets.core import TextInput
|
||||
from wtforms.widgets.core import TimeInput
|
||||
from wtforms.widgets.core import URLInput
|
||||
from wtforms.widgets.core import WeekInput
|
||||
|
||||
__all__ = [
|
||||
"CheckboxInput",
|
||||
"ColorInput",
|
||||
"DateInput",
|
||||
"DateTimeInput",
|
||||
"DateTimeLocalInput",
|
||||
"EmailInput",
|
||||
"FileInput",
|
||||
"HiddenInput",
|
||||
"ListWidget",
|
||||
"MonthInput",
|
||||
"NumberInput",
|
||||
"Option",
|
||||
"PasswordInput",
|
||||
"RadioInput",
|
||||
"RangeInput",
|
||||
"SearchInput",
|
||||
"Select",
|
||||
"SubmitInput",
|
||||
"TableWidget",
|
||||
"TextArea",
|
||||
"TextInput",
|
||||
"TelInput",
|
||||
"TimeInput",
|
||||
"URLInput",
|
||||
"WeekInput",
|
||||
"html_params",
|
||||
"Input",
|
||||
]
|
||||
569
buffteks/lib/python3.11/site-packages/wtforms/widgets/core.py
Normal file
569
buffteks/lib/python3.11/site-packages/wtforms/widgets/core.py
Normal file
@@ -0,0 +1,569 @@
|
||||
from markupsafe import escape
|
||||
from markupsafe import Markup
|
||||
|
||||
__all__ = (
|
||||
"CheckboxInput",
|
||||
"ColorInput",
|
||||
"DateInput",
|
||||
"DateTimeInput",
|
||||
"DateTimeLocalInput",
|
||||
"EmailInput",
|
||||
"FileInput",
|
||||
"HiddenInput",
|
||||
"ListWidget",
|
||||
"MonthInput",
|
||||
"NumberInput",
|
||||
"Option",
|
||||
"PasswordInput",
|
||||
"RadioInput",
|
||||
"RangeInput",
|
||||
"SearchInput",
|
||||
"Select",
|
||||
"SubmitInput",
|
||||
"TableWidget",
|
||||
"TextArea",
|
||||
"TextInput",
|
||||
"TelInput",
|
||||
"TimeInput",
|
||||
"URLInput",
|
||||
"WeekInput",
|
||||
)
|
||||
|
||||
|
||||
def clean_key(key):
|
||||
key = key.rstrip("_")
|
||||
if key.startswith("data_") or key.startswith("aria_"):
|
||||
key = key.replace("_", "-")
|
||||
return key
|
||||
|
||||
|
||||
def html_params(**kwargs):
|
||||
"""
|
||||
Generate HTML attribute syntax from inputted keyword arguments.
|
||||
|
||||
The output value is sorted by the passed keys, to provide consistent output
|
||||
each time this function is called with the same parameters. Because of the
|
||||
frequent use of the normally reserved keywords `class` and `for`, suffixing
|
||||
these with an underscore will allow them to be used.
|
||||
|
||||
In order to facilitate the use of ``data-`` and ``aria-`` attributes, if the
|
||||
name of the attribute begins with ``data_`` or ``aria_``, then every
|
||||
underscore will be replaced with a hyphen in the generated attribute.
|
||||
|
||||
>>> html_params(data_attr='user.name', aria_labeledby='name')
|
||||
'data-attr="user.name" aria-labeledby="name"'
|
||||
|
||||
In addition, the values ``True`` and ``False`` are special:
|
||||
* ``attr=True`` generates the HTML compact output of a boolean attribute,
|
||||
e.g. ``checked=True`` will generate simply ``checked``
|
||||
* ``attr=False`` will be ignored and generate no output.
|
||||
|
||||
>>> html_params(name='text1', id='f', class_='text')
|
||||
'class="text" id="f" name="text1"'
|
||||
>>> html_params(checked=True, readonly=False, name="text1", abc="hello")
|
||||
'abc="hello" checked name="text1"'
|
||||
|
||||
.. versionchanged:: 3.0
|
||||
``aria_`` args convert underscores to hyphens like ``data_``
|
||||
args.
|
||||
|
||||
.. versionchanged:: 2.2
|
||||
``data_`` args convert all underscores to hyphens, instead of
|
||||
only the first one.
|
||||
"""
|
||||
params = []
|
||||
for k, v in sorted(kwargs.items()):
|
||||
k = clean_key(k)
|
||||
if v is True:
|
||||
params.append(k)
|
||||
elif v is False:
|
||||
pass
|
||||
else:
|
||||
params.append(f'{str(k)}="{escape(v)}"') # noqa: B907
|
||||
return " ".join(params)
|
||||
|
||||
|
||||
class ListWidget:
|
||||
"""
|
||||
Renders a list of fields as a `ul` or `ol` list.
|
||||
|
||||
This is used for fields which encapsulate many inner fields as subfields.
|
||||
The widget will try to iterate the field to get access to the subfields and
|
||||
call them to render them.
|
||||
|
||||
If `prefix_label` is set, the subfield's label is printed before the field,
|
||||
otherwise afterwards. The latter is useful for iterating radios or
|
||||
checkboxes.
|
||||
"""
|
||||
|
||||
def __init__(self, html_tag="ul", prefix_label=True):
|
||||
assert html_tag in ("ol", "ul")
|
||||
self.html_tag = html_tag
|
||||
self.prefix_label = prefix_label
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
kwargs.setdefault("id", field.id)
|
||||
html = [f"<{self.html_tag} {html_params(**kwargs)}>"]
|
||||
for subfield in field:
|
||||
if self.prefix_label:
|
||||
html.append(f"<li>{subfield.label} {subfield()}</li>")
|
||||
else:
|
||||
html.append(f"<li>{subfield()} {subfield.label}</li>")
|
||||
html.append(f"</{self.html_tag}>")
|
||||
return Markup("".join(html))
|
||||
|
||||
|
||||
class TableWidget:
|
||||
"""
|
||||
Renders a list of fields as a set of table rows with th/td pairs.
|
||||
|
||||
If `with_table_tag` is True, then an enclosing <table> is placed around the
|
||||
rows.
|
||||
|
||||
Hidden fields will not be displayed with a row, instead the field will be
|
||||
pushed into a subsequent table row to ensure XHTML validity. Hidden fields
|
||||
at the end of the field list will appear outside the table.
|
||||
"""
|
||||
|
||||
def __init__(self, with_table_tag=True):
|
||||
self.with_table_tag = with_table_tag
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
html = []
|
||||
if self.with_table_tag:
|
||||
kwargs.setdefault("id", field.id)
|
||||
table_params = html_params(**kwargs)
|
||||
html.append(f"<table {table_params}>")
|
||||
hidden = ""
|
||||
for subfield in field:
|
||||
if subfield.type in ("HiddenField", "CSRFTokenField"):
|
||||
hidden += str(subfield)
|
||||
else:
|
||||
html.append(
|
||||
f"<tr><th>{subfield.label}</th><td>{hidden}{subfield}</td></tr>"
|
||||
)
|
||||
hidden = ""
|
||||
if self.with_table_tag:
|
||||
html.append("</table>")
|
||||
if hidden:
|
||||
html.append(hidden)
|
||||
return Markup("".join(html))
|
||||
|
||||
|
||||
class Input:
|
||||
"""
|
||||
Render a basic ``<input>`` field.
|
||||
|
||||
This is used as the basis for most of the other input fields.
|
||||
|
||||
By default, the `_value()` method will be called upon the associated field
|
||||
to provide the ``value=`` HTML attribute.
|
||||
"""
|
||||
|
||||
html_params = staticmethod(html_params)
|
||||
|
||||
def __init__(self, input_type=None):
|
||||
if input_type is not None:
|
||||
self.input_type = input_type
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
kwargs.setdefault("id", field.id)
|
||||
kwargs.setdefault("type", self.input_type)
|
||||
if "value" not in kwargs:
|
||||
kwargs["value"] = field._value()
|
||||
flags = getattr(field, "flags", {})
|
||||
for k in dir(flags):
|
||||
if k in self.validation_attrs and k not in kwargs:
|
||||
kwargs[k] = getattr(flags, k)
|
||||
input_params = self.html_params(name=field.name, **kwargs)
|
||||
return Markup(f"<input {input_params}>")
|
||||
|
||||
|
||||
class TextInput(Input):
|
||||
"""
|
||||
Render a single-line text input.
|
||||
"""
|
||||
|
||||
input_type = "text"
|
||||
validation_attrs = [
|
||||
"required",
|
||||
"disabled",
|
||||
"readonly",
|
||||
"maxlength",
|
||||
"minlength",
|
||||
"pattern",
|
||||
]
|
||||
|
||||
|
||||
class PasswordInput(Input):
|
||||
"""
|
||||
Render a password input.
|
||||
|
||||
For security purposes, this field will not reproduce the value on a form
|
||||
submit by default. To have the value filled in, set `hide_value` to
|
||||
`False`.
|
||||
"""
|
||||
|
||||
input_type = "password"
|
||||
validation_attrs = [
|
||||
"required",
|
||||
"disabled",
|
||||
"readonly",
|
||||
"maxlength",
|
||||
"minlength",
|
||||
"pattern",
|
||||
]
|
||||
|
||||
def __init__(self, hide_value=True):
|
||||
self.hide_value = hide_value
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
if self.hide_value:
|
||||
kwargs["value"] = ""
|
||||
return super().__call__(field, **kwargs)
|
||||
|
||||
|
||||
class HiddenInput(Input):
|
||||
"""
|
||||
Render a hidden input.
|
||||
"""
|
||||
|
||||
input_type = "hidden"
|
||||
validation_attrs = ["disabled"]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.field_flags = {"hidden": True}
|
||||
|
||||
|
||||
class CheckboxInput(Input):
|
||||
"""
|
||||
Render a checkbox.
|
||||
|
||||
The ``checked`` HTML attribute is set if the field's data is a non-false value.
|
||||
"""
|
||||
|
||||
input_type = "checkbox"
|
||||
validation_attrs = ["required", "disabled"]
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
if getattr(field, "checked", field.data):
|
||||
kwargs["checked"] = True
|
||||
return super().__call__(field, **kwargs)
|
||||
|
||||
|
||||
class RadioInput(Input):
|
||||
"""
|
||||
Render a single radio button.
|
||||
|
||||
This widget is most commonly used in conjunction with ListWidget or some
|
||||
other listing, as singular radio buttons are not very useful.
|
||||
"""
|
||||
|
||||
input_type = "radio"
|
||||
validation_attrs = ["required", "disabled"]
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
if field.checked:
|
||||
kwargs["checked"] = True
|
||||
return super().__call__(field, **kwargs)
|
||||
|
||||
|
||||
class FileInput(Input):
|
||||
"""Render a file chooser input.
|
||||
|
||||
:param multiple: allow choosing multiple files
|
||||
"""
|
||||
|
||||
input_type = "file"
|
||||
validation_attrs = ["required", "disabled", "accept"]
|
||||
|
||||
def __init__(self, multiple=False):
|
||||
super().__init__()
|
||||
self.multiple = multiple
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
# browser ignores value of file input for security
|
||||
kwargs["value"] = False
|
||||
|
||||
if self.multiple:
|
||||
kwargs["multiple"] = True
|
||||
|
||||
return super().__call__(field, **kwargs)
|
||||
|
||||
|
||||
class SubmitInput(Input):
|
||||
"""
|
||||
Renders a submit button.
|
||||
|
||||
The field's label is used as the text of the submit button instead of the
|
||||
data on the field.
|
||||
"""
|
||||
|
||||
input_type = "submit"
|
||||
validation_attrs = ["required", "disabled"]
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
kwargs.setdefault("value", field.label.text)
|
||||
return super().__call__(field, **kwargs)
|
||||
|
||||
|
||||
class TextArea:
|
||||
"""
|
||||
Renders a multi-line text area.
|
||||
|
||||
`rows` and `cols` ought to be passed as keyword args when rendering.
|
||||
"""
|
||||
|
||||
validation_attrs = ["required", "disabled", "readonly", "maxlength", "minlength"]
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
kwargs.setdefault("id", field.id)
|
||||
flags = getattr(field, "flags", {})
|
||||
for k in dir(flags):
|
||||
if k in self.validation_attrs and k not in kwargs:
|
||||
kwargs[k] = getattr(flags, k)
|
||||
textarea_params = html_params(name=field.name, **kwargs)
|
||||
textarea_innerhtml = escape(field._value())
|
||||
return Markup(
|
||||
f"<textarea {textarea_params}>\r\n{textarea_innerhtml}</textarea>"
|
||||
)
|
||||
|
||||
|
||||
class Select:
|
||||
"""
|
||||
Renders a select field.
|
||||
|
||||
If `multiple` is True, then the `size` property should be specified on
|
||||
rendering to make the field useful.
|
||||
|
||||
The field must provide an `iter_choices()` method which the widget will
|
||||
call on rendering; this method must yield tuples of
|
||||
`(value, label, selected)` or `(value, label, selected, render_kw)`.
|
||||
It also must provide a `has_groups()` method which tells whether choices
|
||||
are divided into groups, and if they do, the field must have an
|
||||
`iter_groups()` method that yields tuples of `(label, choices)`, where
|
||||
`choices` is a iterable of `(value, label, selected)` tuples.
|
||||
"""
|
||||
|
||||
validation_attrs = ["required", "disabled"]
|
||||
|
||||
def __init__(self, multiple=False):
|
||||
self.multiple = multiple
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
kwargs.setdefault("id", field.id)
|
||||
if self.multiple:
|
||||
kwargs["multiple"] = True
|
||||
flags = getattr(field, "flags", {})
|
||||
for k in dir(flags):
|
||||
if k in self.validation_attrs and k not in kwargs:
|
||||
kwargs[k] = getattr(flags, k)
|
||||
select_params = html_params(name=field.name, **kwargs)
|
||||
html = [f"<select {select_params}>"]
|
||||
if field.has_groups():
|
||||
for group, choices in field.iter_groups():
|
||||
optgroup_params = html_params(label=group)
|
||||
html.append(f"<optgroup {optgroup_params}>")
|
||||
for choice in choices:
|
||||
val, label, selected, render_kw = choice
|
||||
html.append(self.render_option(val, label, selected, **render_kw))
|
||||
html.append("</optgroup>")
|
||||
else:
|
||||
for choice in field.iter_choices():
|
||||
val, label, selected, render_kw = choice
|
||||
html.append(self.render_option(val, label, selected, **render_kw))
|
||||
html.append("</select>")
|
||||
return Markup("".join(html))
|
||||
|
||||
@classmethod
|
||||
def render_option(cls, value, label, selected, **kwargs):
|
||||
if value is True:
|
||||
# Handle the special case of a 'True' value.
|
||||
value = str(value)
|
||||
|
||||
options = dict(kwargs, value=value)
|
||||
if selected:
|
||||
options["selected"] = True
|
||||
return Markup(f"<option {html_params(**options)}>{escape(label)}</option>")
|
||||
|
||||
|
||||
class Option:
|
||||
"""
|
||||
Renders the individual option from a select field.
|
||||
|
||||
This is just a convenience for various custom rendering situations, and an
|
||||
option by itself does not constitute an entire field.
|
||||
"""
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
return Select.render_option(
|
||||
field._value(), field.label.text, field.checked, **kwargs
|
||||
)
|
||||
|
||||
|
||||
class SearchInput(Input):
|
||||
"""
|
||||
Renders an input with type "search".
|
||||
"""
|
||||
|
||||
input_type = "search"
|
||||
validation_attrs = [
|
||||
"required",
|
||||
"disabled",
|
||||
"readonly",
|
||||
"maxlength",
|
||||
"minlength",
|
||||
"pattern",
|
||||
]
|
||||
|
||||
|
||||
class TelInput(Input):
|
||||
"""
|
||||
Renders an input with type "tel".
|
||||
"""
|
||||
|
||||
input_type = "tel"
|
||||
validation_attrs = [
|
||||
"required",
|
||||
"disabled",
|
||||
"readonly",
|
||||
"maxlength",
|
||||
"minlength",
|
||||
"pattern",
|
||||
]
|
||||
|
||||
|
||||
class URLInput(Input):
|
||||
"""
|
||||
Renders an input with type "url".
|
||||
"""
|
||||
|
||||
input_type = "url"
|
||||
validation_attrs = [
|
||||
"required",
|
||||
"disabled",
|
||||
"readonly",
|
||||
"maxlength",
|
||||
"minlength",
|
||||
"pattern",
|
||||
]
|
||||
|
||||
|
||||
class EmailInput(Input):
|
||||
"""
|
||||
Renders an input with type "email".
|
||||
"""
|
||||
|
||||
input_type = "email"
|
||||
validation_attrs = [
|
||||
"required",
|
||||
"disabled",
|
||||
"readonly",
|
||||
"maxlength",
|
||||
"minlength",
|
||||
"pattern",
|
||||
]
|
||||
|
||||
|
||||
class DateTimeInput(Input):
|
||||
"""
|
||||
Renders an input with type "datetime".
|
||||
"""
|
||||
|
||||
input_type = "datetime"
|
||||
validation_attrs = ["required", "disabled", "readonly", "max", "min", "step"]
|
||||
|
||||
|
||||
class DateInput(Input):
|
||||
"""
|
||||
Renders an input with type "date".
|
||||
"""
|
||||
|
||||
input_type = "date"
|
||||
validation_attrs = ["required", "disabled", "readonly", "max", "min", "step"]
|
||||
|
||||
|
||||
class MonthInput(Input):
|
||||
"""
|
||||
Renders an input with type "month".
|
||||
"""
|
||||
|
||||
input_type = "month"
|
||||
validation_attrs = ["required", "disabled", "readonly", "max", "min", "step"]
|
||||
|
||||
|
||||
class WeekInput(Input):
|
||||
"""
|
||||
Renders an input with type "week".
|
||||
"""
|
||||
|
||||
input_type = "week"
|
||||
validation_attrs = ["required", "disabled", "readonly", "max", "min", "step"]
|
||||
|
||||
|
||||
class TimeInput(Input):
|
||||
"""
|
||||
Renders an input with type "time".
|
||||
"""
|
||||
|
||||
input_type = "time"
|
||||
validation_attrs = ["required", "disabled", "readonly", "max", "min", "step"]
|
||||
|
||||
|
||||
class DateTimeLocalInput(Input):
|
||||
"""
|
||||
Renders an input with type "datetime-local".
|
||||
"""
|
||||
|
||||
input_type = "datetime-local"
|
||||
validation_attrs = ["required", "disabled", "readonly", "max", "min", "step"]
|
||||
|
||||
|
||||
class NumberInput(Input):
|
||||
"""
|
||||
Renders an input with type "number".
|
||||
"""
|
||||
|
||||
input_type = "number"
|
||||
validation_attrs = ["required", "disabled", "readonly", "max", "min", "step"]
|
||||
|
||||
def __init__(self, step=None, min=None, max=None):
|
||||
self.step = step
|
||||
self.min = min
|
||||
self.max = max
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
if self.step is not None:
|
||||
kwargs.setdefault("step", self.step)
|
||||
if self.min is not None:
|
||||
kwargs.setdefault("min", self.min)
|
||||
if self.max is not None:
|
||||
kwargs.setdefault("max", self.max)
|
||||
return super().__call__(field, **kwargs)
|
||||
|
||||
|
||||
class RangeInput(Input):
|
||||
"""
|
||||
Renders an input with type "range".
|
||||
"""
|
||||
|
||||
input_type = "range"
|
||||
validation_attrs = ["disabled", "max", "min", "step"]
|
||||
|
||||
def __init__(self, step=None):
|
||||
self.step = step
|
||||
|
||||
def __call__(self, field, **kwargs):
|
||||
if self.step is not None:
|
||||
kwargs.setdefault("step", self.step)
|
||||
return super().__call__(field, **kwargs)
|
||||
|
||||
|
||||
class ColorInput(Input):
|
||||
"""
|
||||
Renders an input with type "color".
|
||||
"""
|
||||
|
||||
input_type = "color"
|
||||
validation_attrs = ["disabled"]
|
||||
Reference in New Issue
Block a user