17.12
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
from .general import * # NOQA
|
||||
from .statistics import * # NOQA
|
||||
@@ -0,0 +1,66 @@
|
||||
from psycopg2.extras import (
|
||||
DateRange, DateTimeRange, DateTimeTZRange, NumericRange,
|
||||
)
|
||||
|
||||
from django.apps import AppConfig
|
||||
from django.db import connections
|
||||
from django.db.backends.signals import connection_created
|
||||
from django.db.migrations.writer import MigrationWriter
|
||||
from django.db.models import CharField, TextField
|
||||
from django.test.signals import setting_changed
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from .lookups import SearchLookup, TrigramSimilar, Unaccent
|
||||
from .serializers import RangeSerializer
|
||||
from .signals import register_type_handlers
|
||||
|
||||
RANGE_TYPES = (DateRange, DateTimeRange, DateTimeTZRange, NumericRange)
|
||||
|
||||
|
||||
def uninstall_if_needed(setting, value, enter, **kwargs):
|
||||
"""
|
||||
Undo the effects of PostgresConfig.ready() when django.contrib.postgres
|
||||
is "uninstalled" by override_settings().
|
||||
"""
|
||||
if not enter and setting == 'INSTALLED_APPS' and 'django.contrib.postgres' not in set(value):
|
||||
connection_created.disconnect(register_type_handlers)
|
||||
CharField._unregister_lookup(Unaccent)
|
||||
TextField._unregister_lookup(Unaccent)
|
||||
CharField._unregister_lookup(SearchLookup)
|
||||
TextField._unregister_lookup(SearchLookup)
|
||||
CharField._unregister_lookup(TrigramSimilar)
|
||||
TextField._unregister_lookup(TrigramSimilar)
|
||||
# Disconnect this receiver until the next time this app is installed
|
||||
# and ready() connects it again to prevent unnecessary processing on
|
||||
# each setting change.
|
||||
setting_changed.disconnect(uninstall_if_needed)
|
||||
MigrationWriter.unregister_serializer(RANGE_TYPES)
|
||||
|
||||
|
||||
class PostgresConfig(AppConfig):
|
||||
name = 'django.contrib.postgres'
|
||||
verbose_name = _('PostgreSQL extensions')
|
||||
|
||||
def ready(self):
|
||||
setting_changed.connect(uninstall_if_needed)
|
||||
# Connections may already exist before we are called.
|
||||
for conn in connections.all():
|
||||
if conn.vendor == 'postgresql':
|
||||
conn.introspection.data_types_reverse.update({
|
||||
3802: 'django.contrib.postgres.fields.JSONField',
|
||||
3904: 'django.contrib.postgres.fields.IntegerRangeField',
|
||||
3906: 'django.contrib.postgres.fields.DecimalRangeField',
|
||||
3910: 'django.contrib.postgres.fields.DateTimeRangeField',
|
||||
3912: 'django.contrib.postgres.fields.DateRangeField',
|
||||
3926: 'django.contrib.postgres.fields.BigIntegerRangeField',
|
||||
})
|
||||
if conn.connection is not None:
|
||||
register_type_handlers(conn)
|
||||
connection_created.connect(register_type_handlers)
|
||||
CharField.register_lookup(Unaccent)
|
||||
TextField.register_lookup(Unaccent)
|
||||
CharField.register_lookup(SearchLookup)
|
||||
TextField.register_lookup(SearchLookup)
|
||||
CharField.register_lookup(TrigramSimilar)
|
||||
TextField.register_lookup(TrigramSimilar)
|
||||
MigrationWriter.register_serializer(RANGE_TYPES, RangeSerializer)
|
||||
@@ -0,0 +1,112 @@
|
||||
import json
|
||||
|
||||
from django.contrib.postgres import forms, lookups
|
||||
from django.contrib.postgres.fields.array import ArrayField
|
||||
from django.core import exceptions
|
||||
from django.db.models import Field, TextField, Transform
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from .mixins import CheckFieldDefaultMixin
|
||||
|
||||
__all__ = ['HStoreField']
|
||||
|
||||
|
||||
class HStoreField(CheckFieldDefaultMixin, Field):
|
||||
empty_strings_allowed = False
|
||||
description = _('Map of strings to strings/nulls')
|
||||
default_error_messages = {
|
||||
'not_a_string': _('The value of "%(key)s" is not a string or null.'),
|
||||
}
|
||||
_default_hint = ('dict', '{}')
|
||||
|
||||
def db_type(self, connection):
|
||||
return 'hstore'
|
||||
|
||||
def get_transform(self, name):
|
||||
transform = super().get_transform(name)
|
||||
if transform:
|
||||
return transform
|
||||
return KeyTransformFactory(name)
|
||||
|
||||
def validate(self, value, model_instance):
|
||||
super().validate(value, model_instance)
|
||||
for key, val in value.items():
|
||||
if not isinstance(val, str) and val is not None:
|
||||
raise exceptions.ValidationError(
|
||||
self.error_messages['not_a_string'],
|
||||
code='not_a_string',
|
||||
params={'key': key},
|
||||
)
|
||||
|
||||
def to_python(self, value):
|
||||
if isinstance(value, str):
|
||||
value = json.loads(value)
|
||||
return value
|
||||
|
||||
def value_to_string(self, obj):
|
||||
return json.dumps(self.value_from_object(obj))
|
||||
|
||||
def formfield(self, **kwargs):
|
||||
return super().formfield(**{
|
||||
'form_class': forms.HStoreField,
|
||||
**kwargs,
|
||||
})
|
||||
|
||||
def get_prep_value(self, value):
|
||||
value = super().get_prep_value(value)
|
||||
|
||||
if isinstance(value, dict):
|
||||
prep_value = {}
|
||||
for key, val in value.items():
|
||||
key = str(key)
|
||||
if val is not None:
|
||||
val = str(val)
|
||||
prep_value[key] = val
|
||||
value = prep_value
|
||||
|
||||
if isinstance(value, list):
|
||||
value = [str(item) for item in value]
|
||||
|
||||
return value
|
||||
|
||||
|
||||
HStoreField.register_lookup(lookups.DataContains)
|
||||
HStoreField.register_lookup(lookups.ContainedBy)
|
||||
HStoreField.register_lookup(lookups.HasKey)
|
||||
HStoreField.register_lookup(lookups.HasKeys)
|
||||
HStoreField.register_lookup(lookups.HasAnyKeys)
|
||||
|
||||
|
||||
class KeyTransform(Transform):
|
||||
output_field = TextField()
|
||||
|
||||
def __init__(self, key_name, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.key_name = key_name
|
||||
|
||||
def as_sql(self, compiler, connection):
|
||||
lhs, params = compiler.compile(self.lhs)
|
||||
return '(%s -> %%s)' % lhs, tuple(params) + (self.key_name,)
|
||||
|
||||
|
||||
class KeyTransformFactory:
|
||||
|
||||
def __init__(self, key_name):
|
||||
self.key_name = key_name
|
||||
|
||||
def __call__(self, *args, **kwargs):
|
||||
return KeyTransform(self.key_name, *args, **kwargs)
|
||||
|
||||
|
||||
@HStoreField.register_lookup
|
||||
class KeysTransform(Transform):
|
||||
lookup_name = 'keys'
|
||||
function = 'akeys'
|
||||
output_field = ArrayField(TextField())
|
||||
|
||||
|
||||
@HStoreField.register_lookup
|
||||
class ValuesTransform(Transform):
|
||||
lookup_name = 'values'
|
||||
function = 'avals'
|
||||
output_field = ArrayField(TextField())
|
||||
@@ -0,0 +1,274 @@
|
||||
import datetime
|
||||
import json
|
||||
|
||||
from psycopg2.extras import DateRange, DateTimeTZRange, NumericRange, Range
|
||||
|
||||
from django.contrib.postgres import forms, lookups
|
||||
from django.db import models
|
||||
|
||||
from .utils import AttributeSetter
|
||||
|
||||
__all__ = [
|
||||
'RangeField', 'IntegerRangeField', 'BigIntegerRangeField',
|
||||
'DecimalRangeField', 'DateTimeRangeField', 'DateRangeField',
|
||||
'FloatRangeField',
|
||||
]
|
||||
|
||||
|
||||
class RangeField(models.Field):
|
||||
empty_strings_allowed = False
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
# Initializing base_field here ensures that its model matches the model for self.
|
||||
if hasattr(self, 'base_field'):
|
||||
self.base_field = self.base_field()
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
@property
|
||||
def model(self):
|
||||
try:
|
||||
return self.__dict__['model']
|
||||
except KeyError:
|
||||
raise AttributeError("'%s' object has no attribute 'model'" % self.__class__.__name__)
|
||||
|
||||
@model.setter
|
||||
def model(self, model):
|
||||
self.__dict__['model'] = model
|
||||
self.base_field.model = model
|
||||
|
||||
def get_prep_value(self, value):
|
||||
if value is None:
|
||||
return None
|
||||
elif isinstance(value, Range):
|
||||
return value
|
||||
elif isinstance(value, (list, tuple)):
|
||||
return self.range_type(value[0], value[1])
|
||||
return value
|
||||
|
||||
def to_python(self, value):
|
||||
if isinstance(value, str):
|
||||
# Assume we're deserializing
|
||||
vals = json.loads(value)
|
||||
for end in ('lower', 'upper'):
|
||||
if end in vals:
|
||||
vals[end] = self.base_field.to_python(vals[end])
|
||||
value = self.range_type(**vals)
|
||||
elif isinstance(value, (list, tuple)):
|
||||
value = self.range_type(value[0], value[1])
|
||||
return value
|
||||
|
||||
def set_attributes_from_name(self, name):
|
||||
super().set_attributes_from_name(name)
|
||||
self.base_field.set_attributes_from_name(name)
|
||||
|
||||
def value_to_string(self, obj):
|
||||
value = self.value_from_object(obj)
|
||||
if value is None:
|
||||
return None
|
||||
if value.isempty:
|
||||
return json.dumps({"empty": True})
|
||||
base_field = self.base_field
|
||||
result = {"bounds": value._bounds}
|
||||
for end in ('lower', 'upper'):
|
||||
val = getattr(value, end)
|
||||
if val is None:
|
||||
result[end] = None
|
||||
else:
|
||||
obj = AttributeSetter(base_field.attname, val)
|
||||
result[end] = base_field.value_to_string(obj)
|
||||
return json.dumps(result)
|
||||
|
||||
def formfield(self, **kwargs):
|
||||
kwargs.setdefault('form_class', self.form_field)
|
||||
return super().formfield(**kwargs)
|
||||
|
||||
|
||||
class IntegerRangeField(RangeField):
|
||||
base_field = models.IntegerField
|
||||
range_type = NumericRange
|
||||
form_field = forms.IntegerRangeField
|
||||
|
||||
def db_type(self, connection):
|
||||
return 'int4range'
|
||||
|
||||
|
||||
class BigIntegerRangeField(RangeField):
|
||||
base_field = models.BigIntegerField
|
||||
range_type = NumericRange
|
||||
form_field = forms.IntegerRangeField
|
||||
|
||||
def db_type(self, connection):
|
||||
return 'int8range'
|
||||
|
||||
|
||||
class DecimalRangeField(RangeField):
|
||||
base_field = models.DecimalField
|
||||
range_type = NumericRange
|
||||
form_field = forms.DecimalRangeField
|
||||
|
||||
def db_type(self, connection):
|
||||
return 'numrange'
|
||||
|
||||
|
||||
class FloatRangeField(RangeField):
|
||||
system_check_deprecated_details = {
|
||||
'msg': (
|
||||
'FloatRangeField is deprecated and will be removed in Django 3.1.'
|
||||
),
|
||||
'hint': 'Use DecimalRangeField instead.',
|
||||
'id': 'fields.W902',
|
||||
}
|
||||
base_field = models.FloatField
|
||||
range_type = NumericRange
|
||||
form_field = forms.FloatRangeField
|
||||
|
||||
def db_type(self, connection):
|
||||
return 'numrange'
|
||||
|
||||
|
||||
class DateTimeRangeField(RangeField):
|
||||
base_field = models.DateTimeField
|
||||
range_type = DateTimeTZRange
|
||||
form_field = forms.DateTimeRangeField
|
||||
|
||||
def db_type(self, connection):
|
||||
return 'tstzrange'
|
||||
|
||||
|
||||
class DateRangeField(RangeField):
|
||||
base_field = models.DateField
|
||||
range_type = DateRange
|
||||
form_field = forms.DateRangeField
|
||||
|
||||
def db_type(self, connection):
|
||||
return 'daterange'
|
||||
|
||||
|
||||
RangeField.register_lookup(lookups.DataContains)
|
||||
RangeField.register_lookup(lookups.ContainedBy)
|
||||
RangeField.register_lookup(lookups.Overlap)
|
||||
|
||||
|
||||
class DateTimeRangeContains(models.Lookup):
|
||||
"""
|
||||
Lookup for Date/DateTimeRange containment to cast the rhs to the correct
|
||||
type.
|
||||
"""
|
||||
lookup_name = 'contains'
|
||||
|
||||
def process_rhs(self, compiler, connection):
|
||||
# Transform rhs value for db lookup.
|
||||
if isinstance(self.rhs, datetime.date):
|
||||
output_field = models.DateTimeField() if isinstance(self.rhs, datetime.datetime) else models.DateField()
|
||||
value = models.Value(self.rhs, output_field=output_field)
|
||||
self.rhs = value.resolve_expression(compiler.query)
|
||||
return super().process_rhs(compiler, connection)
|
||||
|
||||
def as_sql(self, compiler, connection):
|
||||
lhs, lhs_params = self.process_lhs(compiler, connection)
|
||||
rhs, rhs_params = self.process_rhs(compiler, connection)
|
||||
params = lhs_params + rhs_params
|
||||
# Cast the rhs if needed.
|
||||
cast_sql = ''
|
||||
if (
|
||||
isinstance(self.rhs, models.Expression) and
|
||||
self.rhs._output_field_or_none and
|
||||
# Skip cast if rhs has a matching range type.
|
||||
not isinstance(self.rhs._output_field_or_none, self.lhs.output_field.__class__)
|
||||
):
|
||||
cast_internal_type = self.lhs.output_field.base_field.get_internal_type()
|
||||
cast_sql = '::{}'.format(connection.data_types.get(cast_internal_type))
|
||||
return '%s @> %s%s' % (lhs, rhs, cast_sql), params
|
||||
|
||||
|
||||
DateRangeField.register_lookup(DateTimeRangeContains)
|
||||
DateTimeRangeField.register_lookup(DateTimeRangeContains)
|
||||
|
||||
|
||||
class RangeContainedBy(models.Lookup):
|
||||
lookup_name = 'contained_by'
|
||||
type_mapping = {
|
||||
'integer': 'int4range',
|
||||
'bigint': 'int8range',
|
||||
'double precision': 'numrange',
|
||||
'date': 'daterange',
|
||||
'timestamp with time zone': 'tstzrange',
|
||||
}
|
||||
|
||||
def as_sql(self, qn, connection):
|
||||
field = self.lhs.output_field
|
||||
if isinstance(field, models.FloatField):
|
||||
sql = '%s::numeric <@ %s::{}'.format(self.type_mapping[field.db_type(connection)])
|
||||
else:
|
||||
sql = '%s <@ %s::{}'.format(self.type_mapping[field.db_type(connection)])
|
||||
lhs, lhs_params = self.process_lhs(qn, connection)
|
||||
rhs, rhs_params = self.process_rhs(qn, connection)
|
||||
params = lhs_params + rhs_params
|
||||
return sql % (lhs, rhs), params
|
||||
|
||||
def get_prep_lookup(self):
|
||||
return RangeField().get_prep_value(self.rhs)
|
||||
|
||||
|
||||
models.DateField.register_lookup(RangeContainedBy)
|
||||
models.DateTimeField.register_lookup(RangeContainedBy)
|
||||
models.IntegerField.register_lookup(RangeContainedBy)
|
||||
models.BigIntegerField.register_lookup(RangeContainedBy)
|
||||
models.FloatField.register_lookup(RangeContainedBy)
|
||||
|
||||
|
||||
@RangeField.register_lookup
|
||||
class FullyLessThan(lookups.PostgresSimpleLookup):
|
||||
lookup_name = 'fully_lt'
|
||||
operator = '<<'
|
||||
|
||||
|
||||
@RangeField.register_lookup
|
||||
class FullGreaterThan(lookups.PostgresSimpleLookup):
|
||||
lookup_name = 'fully_gt'
|
||||
operator = '>>'
|
||||
|
||||
|
||||
@RangeField.register_lookup
|
||||
class NotLessThan(lookups.PostgresSimpleLookup):
|
||||
lookup_name = 'not_lt'
|
||||
operator = '&>'
|
||||
|
||||
|
||||
@RangeField.register_lookup
|
||||
class NotGreaterThan(lookups.PostgresSimpleLookup):
|
||||
lookup_name = 'not_gt'
|
||||
operator = '&<'
|
||||
|
||||
|
||||
@RangeField.register_lookup
|
||||
class AdjacentToLookup(lookups.PostgresSimpleLookup):
|
||||
lookup_name = 'adjacent_to'
|
||||
operator = '-|-'
|
||||
|
||||
|
||||
@RangeField.register_lookup
|
||||
class RangeStartsWith(models.Transform):
|
||||
lookup_name = 'startswith'
|
||||
function = 'lower'
|
||||
|
||||
@property
|
||||
def output_field(self):
|
||||
return self.lhs.output_field.base_field
|
||||
|
||||
|
||||
@RangeField.register_lookup
|
||||
class RangeEndsWith(models.Transform):
|
||||
lookup_name = 'endswith'
|
||||
function = 'upper'
|
||||
|
||||
@property
|
||||
def output_field(self):
|
||||
return self.lhs.output_field.base_field
|
||||
|
||||
|
||||
@RangeField.register_lookup
|
||||
class IsEmpty(models.Transform):
|
||||
lookup_name = 'isempty'
|
||||
function = 'isempty'
|
||||
output_field = models.BooleanField()
|
||||
@@ -0,0 +1,11 @@
|
||||
from django.db.models import DateTimeField, Func, UUIDField
|
||||
|
||||
|
||||
class RandomUUID(Func):
|
||||
template = 'GEN_RANDOM_UUID()'
|
||||
output_field = UUIDField()
|
||||
|
||||
|
||||
class TransactionNow(Func):
|
||||
template = 'CURRENT_TIMESTAMP'
|
||||
output_field = DateTimeField()
|
||||
+1
@@ -0,0 +1 @@
|
||||
{% include 'django/forms/widgets/multiwidget.html' %}
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+112
@@ -0,0 +1,112 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Emin Mastizada <emin@linux.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-09-09 13:45+0000\n"
|
||||
"Last-Translator: Emin Mastizada <emin@linux.com>\n"
|
||||
"Language-Team: Azerbaijani (http://www.transifex.com/django/django/language/"
|
||||
"az/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: az\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL uzantıları"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "Array-dəki %(nth)s element təsdiqlənə bilmir:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "İç-içə array-lərin uzunluğu eyni olmalıdır."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "String-lərin string/null-lara xəritələnmə cədvəli"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "\"%(key)s\" dəyəri string və ya null deyil."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "JSON obyekt"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Dəyər düzgün JSON olmalıdır."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "JSON məlumat yüklənə bilmir."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Giriş JSON lüğət olmalıdır."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "'%(value)s' dəyəri düzgün JSON olmalıdır."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "İki düzgün dəyər daxil edin."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Aralığın başlanğıcı bitişindən böyük ola bilməz."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "İki tam rəqəm daxil edin."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "İki rəqəm daxil edin."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "İki düzgün tarix/vaxt daxil edin."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "İki düzgün tarix daxil edin."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Siyahıda %(show_value)d element var, ən çox %(limit_value)d ola bilər."
|
||||
msgstr[1] ""
|
||||
"Siyahıda %(show_value)d element var, ən çox %(limit_value)d ola bilər."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Siyahıda %(show_value)d element var, ən az %(limit_value)d ola bilər."
|
||||
msgstr[1] ""
|
||||
"Siyahıda %(show_value)d element var, ən az %(limit_value)d ola bilər."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Bəzi açarlar əksikdir: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Bəzi bilinməyən açarlar təchiz edilib: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr "Bu aralığın %(limit_value)s və ya daha az olduğuna əmin olun."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr "Bu aralığın %(limit_value)s və ya daha böyük olduğuna əmin olun."
|
||||
+132
@@ -0,0 +1,132 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Viktar Palstsiuk <vipals@gmail.com>, 2015
|
||||
# znotdead <zhirafchik@gmail.com>, 2016-2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-01-19 16:49+0100\n"
|
||||
"PO-Revision-Date: 2017-09-21 22:44+0000\n"
|
||||
"Last-Translator: znotdead <zhirafchik@gmail.com>\n"
|
||||
"Language-Team: Belarusian (http://www.transifex.com/django/django/language/"
|
||||
"be/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: be\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
|
||||
"%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "Пашырэнні PostgreSQL"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate: "
|
||||
msgstr "Элемент масіву нумар %(nth)s не прайшоў праверкі:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Укладзенныя масівы павінны мець аднолькавую даўжыню."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Адпаведнасць радкоў у радкі/нулі"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "Значэнне \"%(key)s\" не з'яўляецца радком ці нулём."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "JSON аб’ект"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Значэнне павінна быць сапраўдным JSON."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "Не атрымалася загрузіць дадзеныя JSON."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Значэнне павінна быць JSON слоўнікам. "
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "'%(value)s' значэнне павінна быць сапраўдным JSON."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Увядзіце два сапраўдных значэнні."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Пачатак дыяпазону не павінен перавышаць канец дыяпазону."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Увядзіце два цэлых лікі."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Увядзіце два лікі."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Увядзіце дзве/два сапраўдных даты/часу."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Увядзіце дзве сапраўдных даты."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Спіс мае %(show_value)d элемент, ён павінен мець не болей чым "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Спіс мае %(show_value)d элемента, ён павінен мець не болей чым "
|
||||
"%(limit_value)d."
|
||||
msgstr[2] ""
|
||||
"Спіс мае %(show_value)d элементаў, ён павінен мець не болей чым "
|
||||
"%(limit_value)d."
|
||||
msgstr[3] ""
|
||||
"Спіс мае %(show_value)d элементаў, ён павінен мець не болей чым "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Спіс мае %(show_value)d элемент, ён павінен мець не менш чым %(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Спіс мае %(show_value)d элемента, ён павінен мець не менш чым "
|
||||
"%(limit_value)d."
|
||||
msgstr[2] ""
|
||||
"Спіс мае %(show_value)d элементаў, ён павінен мець не менш чым "
|
||||
"%(limit_value)d."
|
||||
msgstr[3] ""
|
||||
"Спіс мае %(show_value)d элементаў, ён павінен мець не менш чым "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Не хапае нейкіх ключоў: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Дадзены нейкія невядомыя ключы: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
"Упэўніцеся, что ўсе элементы гэтага інтэрвалу менш ці раўны %(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
"Упэўніцеся, что ўсе элементы гэтага інтэрвалу больш ці раўны %(limit_value)s."
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Antoni Aloy <aaloy@apsl.net>, 2015,2017
|
||||
# duub qnnp, 2015
|
||||
# Gil Obradors Via <gil.obradors@gmail.com>, 2019
|
||||
# Roger Pons <rogerpons@gmail.com>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2019-01-29 07:53+0000\n"
|
||||
"Last-Translator: Gil Obradors Via <gil.obradors@gmail.com>\n"
|
||||
"Language-Team: Catalan (http://www.transifex.com/django/django/language/"
|
||||
"ca/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ca\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "Extensions de PostgreSQL"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "L'element %(nth)s de la matriu no s'ha pogut validar:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Les matrius niades han de tenir la mateixa longitud."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Mapa de cadenes a cadenes/nuls"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "El valor de \"%(key)s no és ni una cadena ni un nul."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "Un objecte JSON"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "El valor ha de ser JSON vàlid."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "No es poden carregar les dades JSON"
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "L'entrada ha de ser un diccionari JSON"
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "El valor '%(value)s' ha de ser JSON vàlid."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Introdueixi dos valors vàlids."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "L'inici del rang no pot excedir el seu final."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Introduïu dos números enters positius."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Introduïu dos números."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Introduïu dues data/hora vàlides."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Introduïu dos dates vàlides."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"La llista conté %(show_value)d element, no n'hauria de tenir més de "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"La llista conté %(show_value)d elements, no n'hauria de tenir més de "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"La llista conté %(show_value)d element, no n'hauria de contenir menys de "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"La llista conté %(show_value)d elements, no n'hauria de contenir menys de "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Algunes claus no hi són: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "S'han facilitat claus desconegudes: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
"Asseguri's que aquest rang és completament menor o igual a %(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
"Asseguri's que aquest rang és completament major o igual a %(limit_value)s."
|
||||
BIN
Binary file not shown.
+120
@@ -0,0 +1,120 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Erik Wognsen <r4mses@gmail.com>, 2015-2018
|
||||
# valberg <valberg@orn.li>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-05-18 20:41+0000\n"
|
||||
"Last-Translator: Erik Wognsen <r4mses@gmail.com>\n"
|
||||
"Language-Team: Danish (http://www.transifex.com/django/django/language/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: da\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL udvidelser"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "Element %(nth)s i array'et blev ikke valideret:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Indlejrede arrays skal have den samme længde."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Afbildning fra strenge til strenge/nulls"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "Værdien af \"%(key)s\" er ikke en streng eller null."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "Et JSON-objekt."
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Værdien skal være gyldig JSON."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "Kunne ikke indlæse JSON-data."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Input skal være et JSON-dictionary."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "'%(value)s'-værdien skal være gyldig JSON."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Indtast to gyldige værdier."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Starten af intervallet kan ikke overstige slutningen af intervallet."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Indtast to heltal."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Indtast to tal."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Indtast to gyldige dato/tider."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Indtast to gyldige datoer."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Listen indeholder %(show_value)d element, en bør ikke indeholde mere end "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Listen indeholder %(show_value)d elementer, den bør ikke indeholde mere end "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Listen indeholder %(show_value)d element, den bør ikke indeholde mindre end "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Listen indeholder %(show_value)d elementer, den bør ikke indeholde mindre "
|
||||
"end %(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Nøgler mangler: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Ukendte nøgler angivet: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
"Sørg for at dette interval er fuldstændigt mindre end eller lig med "
|
||||
"%(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
"Sørg for at dette interval er fuldstændigt større end eller lig med "
|
||||
"%(limit_value)s."
|
||||
BIN
Binary file not shown.
+128
@@ -0,0 +1,128 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2015-01-18 20:56+0100\n"
|
||||
"Last-Translator: Django team\n"
|
||||
"Language-Team: English <en@li.org>\n"
|
||||
"Language: en\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"
|
||||
|
||||
#: contrib/postgres/apps.py:13
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/fields/array.py:22 contrib/postgres/forms/array.py:16
|
||||
#: contrib/postgres/forms/array.py:170
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/fields/array.py:23
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/fields/hstore.py:16
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/fields/hstore.py:18
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/fields/jsonb.py:32
|
||||
msgid "A JSON object"
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/fields/jsonb.py:34
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/forms/hstore.py:16
|
||||
msgid "Could not load JSON data."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/forms/hstore.py:17
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/forms/jsonb.py:19
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/forms/ranges.py:16
|
||||
msgid "Enter two valid values."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/forms/ranges.py:17
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/forms/ranges.py:64
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/forms/ranges.py:70
|
||||
msgid "Enter two numbers."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/forms/ranges.py:76
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/forms/ranges.py:82
|
||||
msgid "Enter two valid dates."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/validators.py:12
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: contrib/postgres/validators.py:19
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: contrib/postgres/validators.py:29
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/validators.py:30
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/validators.py:70
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
|
||||
#: contrib/postgres/validators.py:76
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Ramiro Morales, 2015-2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-07-31 16:47+0000\n"
|
||||
"Last-Translator: Ramiro Morales\n"
|
||||
"Language-Team: Spanish (Argentina) (http://www.transifex.com/django/django/"
|
||||
"language/es_AR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es_AR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "Extensiones PostgreSQL"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "La validación del ítem %(nth)s del arreglo falló:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Los arreglos anidados deben ser de la misma longitud."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Mapa de cadenas a cadenas/nulos"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "El valor de \"%(key)s\" no es una cadena o nulo."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "Un objeto JSON"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "El valor debe ser JSON válido."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "No se han podido cargar los datos JSON."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "debe ser un diccionario JSON."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "El valor de '%(value)s' debe ser JSON válido."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Introduzca dos valores válidos."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "El inicio del rango no debe ser mayor que el fin del rango."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Introduzca dos números enteros."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Introduzca dos números."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Introduzca dos fechas/horas válidas."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Introduzca dos fechas válidas."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"La lista contiene %(show_value)d ítem, debe contener no mas de "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"La lista contiene %(show_value)d ítems, debe contener no mas de "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"La lista contiene %(show_value)d ítem, debe contener no mas de "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"La lista contiene %(show_value)d ítems, debe contener no menos de "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "No se encontraron algunas llaves: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Algunas de las llaves provistas son desconocidas: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
"Asegúrese de que este rango es completamente menor o igual a %(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
"Asegúrese de que este rango es completamente mayor o igual a %(limit_value)s."
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+120
@@ -0,0 +1,120 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Aarni Koskela, 2015,2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-01-19 16:49+0100\n"
|
||||
"PO-Revision-Date: 2017-09-21 22:44+0000\n"
|
||||
"Last-Translator: Aarni Koskela\n"
|
||||
"Language-Team: Finnish (http://www.transifex.com/django/django/language/"
|
||||
"fi/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fi\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL-laajennukset"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate: "
|
||||
msgstr "Taulukon %(nth)s alkio ei ole kelvollinen:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Sisäkkäisillä taulukoilla tulee olla sama pituus."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Kartta merkkijonoista merkkijonoihin tai tyhjiin (null)"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "Avaimen \"%(key)s\" arvo ei ole merkkijono tai tyhjä (null)."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "JSON-tietue"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Arvon pitää olla kelvollista JSONia."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "JSON-dataa ei voitu ladata."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Syötteen tulee olla JSON-sanakirja."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "%(value)s-arvo tulee olla kelvollista JSONia."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Anna kaksi oikeaa arvoa."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Alueen alku pitää olla pienempi kuin alueen loppu."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Anna kaksi kokonaislukua."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Anna kaksi lukua."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Anna kaksi oikeaa päivämäärää/kellonaikaa."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Anna kaksi oikeaa päivämäärää."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Listassa on %(show_value)d arvo, mutta siinä ei saa olla enempää kuin "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Listassa on %(show_value)d arvoa, mutta siinä ei saa olla enempää kuin "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Listassa on %(show_value)d arvo, mutta siinä ei saa olla vähempää kuin "
|
||||
"%(limit_value)d arvoa."
|
||||
msgstr[1] ""
|
||||
"Listassa on %(show_value)d arvoa, mutta siinä ei saa olla vähempää kuin "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Joitain avaimia puuttuu: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Tuntemattomia avaimia annettiin: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
"Tämän alueen tulee olla kokonaisuudessaan yhtäsuuri tai pienempi kuin "
|
||||
"%(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
"Tämän alueen tulee olla kokonaisuudessaan yhtäsuuri tai suurempi kuin "
|
||||
"%(limit_value)s."
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+129
@@ -0,0 +1,129 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Michael Wolf <milupo@sorbzilla.de>, 2016-2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-05-26 10:59+0000\n"
|
||||
"Last-Translator: Michael Wolf <milupo@sorbzilla.de>\n"
|
||||
"Language-Team: Upper Sorbian (http://www.transifex.com/django/django/"
|
||||
"language/hsb/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: hsb\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
|
||||
"%100==4 ? 2 : 3);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "Rozšěrjenja PostgreSQL"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "Zapisk %(nth)s w pólnym wariabli njeje so wokrućił:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Zakašćikowane pólne wariable maja samsnu dołhosć."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Konwertowanje znamješkowych rjećazkow do znamješkowych rjećazkow/nulow"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "Hódnota \" %(key)s\" znamješkowy rjećazk abo null njeje."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "JSON-objekt"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Hódnota dyrbi płaćiwy JSON być."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "JSON-daty njedachu so začitać."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Zapodaće dyrbi JSON-słownik być."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "Hódnota '%(value)s' dyrbi płaćiwy JSON być."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Zapodajće dwě płaćiwej hódnoće."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Spočatk wobłuka njesmě kónc wobłuka překročić."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Zapodajće dwě cyłej ličbje."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Zapodajće dwě ličbje."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Zapódajće dwě płaćiwej datowej/časowej podaći."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Zapodajće dwě płaćiwej datowej podaći."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Lisćina %(show_value)d element wobsahuje, wona njeměła wjace hač "
|
||||
"%(limit_value)d wobsahować."
|
||||
msgstr[1] ""
|
||||
"Lisćina %(show_value)d elementaj wobsahuje, wona njeměła wjace hač "
|
||||
"%(limit_value)d wobsahować."
|
||||
msgstr[2] ""
|
||||
"Lisćina %(show_value)d elementy wobsahuje, wona njeměła wjace hač "
|
||||
"%(limit_value)d wobsahować."
|
||||
msgstr[3] ""
|
||||
"Lisćina %(show_value)d elementow wobsahuje, wona njeměła wjace hač "
|
||||
"%(limit_value)d wobsahować."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Lisćina %(show_value)d element wobsahuje, wona njeměła mjenje hač "
|
||||
"%(limit_value)d wobsahować."
|
||||
msgstr[1] ""
|
||||
"Lisćina %(show_value)d elementaj wobsahuje, wona njeměła mjenje hač "
|
||||
"%(limit_value)d wobsahować."
|
||||
msgstr[2] ""
|
||||
"Lisćina %(show_value)d elementy wobsahuje, wona njeměła mjenje hač "
|
||||
"%(limit_value)d wobsahować."
|
||||
msgstr[3] ""
|
||||
"Lisćina %(show_value)d elementow wobsahuje, wona njeměła mjenje hač "
|
||||
"%(limit_value)d wobsahować."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Někotre kluče faluje: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Někotre njeznate kluče su so podali: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr "Zawěsćće. zo tutón wobłuk je mjeńši hač abo runja %(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr "Zawěsćće, zo tutón wobłuk je wjetši hač abo runja %(limit_value)s."
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-11-01 20:43+0000\n"
|
||||
"Last-Translator: Ruben Harutyunov <rharutyunov@mail.ru>\n"
|
||||
"Language-Team: Armenian (http://www.transifex.com/django/django/language/"
|
||||
"hy/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: hy\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL հավելվածներ"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Ներդրված մասսիվները պետք է ունենան նույն երկարությունը"
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr ""
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "JSON օբյեկտ"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Արժեքը պետք է լինի վավերական JSON"
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "Չհաջողվեց բեռնել JSON տվյալները"
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "'%(value)s' արժեքը պետք է լինի վավերական JSON"
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Մուտքագրեք երկու վավերական արժեք"
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Ինտերվալի սկիզբը չպետք է գերազանցի նրա ավարտը"
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Մուտքագրեք երկու ամբողջ թիվ"
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Մուտքագրեք երկու թիվ"
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Մուտքագրեք երկու ճիշտ ամսաթվեր/ժամանակ"
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Մուտքագրեք երկու ճիշտ ամսաթվեր"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Ցուցակը պարունակում է %(show_value)d էլեմենտը, բայց այն պետք է պարունակի "
|
||||
"%(limit_value)d֊ից ոչ ավելի էլեմենտ"
|
||||
msgstr[1] ""
|
||||
"Ցուցակը պարունակում է %(show_value)d էլեմենտները, բայց այն պետք է պարունակի "
|
||||
"%(limit_value)d֊ից ոչ ավելի էլեմենտ"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Ցուցակը պարունակում է %(show_value)d էլեմենտը, բայց այն պետք է պարունակի "
|
||||
"%(limit_value)d֊ից ոչ պակաս էլեմենտ"
|
||||
msgstr[1] ""
|
||||
"Ցուցակը պարունակում է %(show_value)d էլեմենտը, բայց այն պետք է պարունակի "
|
||||
"%(limit_value)d֊ից ոչ պակաս էլեմենտ"
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Որոշ բանալիներ պակասում են՝ %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Տրամադրվել են որոշ անհայտ բանալիներ՝ %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
"Համոզվեք, որ տիրույթին պատկանող արժեքները փոքր են, կամ հավասար "
|
||||
"%(limit_value)s֊ի"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
"Համոզվեք, որ տիրույթին պատկանող արժեքները մեծ են, կամ հավասար "
|
||||
"%(limit_value)s֊ի"
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Martijn Dekker <mcdutchie@hotmail.com>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-01-19 16:49+0100\n"
|
||||
"PO-Revision-Date: 2017-09-21 22:44+0000\n"
|
||||
"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
|
||||
"Language-Team: Interlingua (http://www.transifex.com/django/django/language/"
|
||||
"ia/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ia\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "Extensiones PostgreSQL"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate: "
|
||||
msgstr "Le elemento %(nth)s in le array non passava validation:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Arrays annidate debe haber le mesme longitude."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr ""
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr ""
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr ""
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr ""
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr ""
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
BIN
Binary file not shown.
+118
@@ -0,0 +1,118 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Thordur Sigurdsson <thordur@ja.is>, 2016-2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-07-19 02:52+0000\n"
|
||||
"Last-Translator: Thordur Sigurdsson <thordur@ja.is>\n"
|
||||
"Language-Team: Icelandic (http://www.transifex.com/django/django/language/"
|
||||
"is/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: is\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL viðbætur"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "Hlutur %(nth)s í listanum er ógildur:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Faldaðir (nested) listar verða að vera af sömu lengd."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Möppun strengja í strengi/null"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "Gildið á \"%(key)s\" er ekki strengur eða null."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "JSON hlutur"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Gildi verður að vera gilt JSON."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "Gat ekki hlaðið inn JSON gögnum."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Inntak verður að vera JSON hlutur (dictionary)."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "Gildi '%(value)s' verður að vera gilt JSON."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Sláðu inn tvö gild gildi."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Upphaf bils má ekki ná yfir endalok bils."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Sláðu inn tvær heilar tölur."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Sláðu inn tvær tölur."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Sláðu inn tvær gildar dagsetningar ásamt tíma."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Sláðu inn tvær gildar dagsetningar."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Listinn inniheldur %(show_value)d hlut, en má ekki innihalda fleiri en "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Listinn inniheldur %(show_value)d hluti, en má ekki innihalda fleiri en "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Listinn inniheldur %(show_value)d hlut, en má ekki innihalda færri en "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Listinn inniheldur %(show_value)d hluti, en má ekki innihalda færri en "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Þessa lykla vantar: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Þessir óþekktu lyklar fundust: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
"Gakktu úr skugga um að þetta bil sé minna eða jafnt og %(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
"Gakktu úr skugga um að þetta bil sé stærra eða jafnt og %(limit_value)s."
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# André Bouatchidzé <a@anbz.net>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-05-18 03:42+0000\n"
|
||||
"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
|
||||
"Language-Team: Georgian (http://www.transifex.com/django/django/language/"
|
||||
"ka/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ka\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL-ის გაფართოებები"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr ""
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr ""
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr ""
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr ""
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr ""
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr ""
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "შეიყვანეთ ორი მთელი რიცხვი."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "შეიყვანეთ ორი რიცხვი."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
BIN
Binary file not shown.
+107
@@ -0,0 +1,107 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Leo Trubach <leotrubach@gmail.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-05-18 03:42+0000\n"
|
||||
"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
|
||||
"Language-Team: Kazakh (http://www.transifex.com/django/django/language/kk/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: kk\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL кеңейтулері"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Бір-бірін ішіне салынған ауқымдардың ұзындықтары бірдей болу керек"
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr ""
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr ""
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr ""
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr ""
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr ""
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr ""
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
BIN
Binary file not shown.
+114
@@ -0,0 +1,114 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# hoseung2 <ghyutjik123@gmail.com>, 2017
|
||||
# Gihun Ham <progh2@gmail.com>, 2018
|
||||
# JunGu Kang <chr0m3.kr@gmail.com>, 2015
|
||||
# 조민권 <minkwon007@gmail.com>, 2016
|
||||
# minsung kang, 2015
|
||||
# Subin Choi <os1742@gmail.com>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-10-07 03:06+0000\n"
|
||||
"Last-Translator: Gihun Ham <progh2@gmail.com>\n"
|
||||
"Language-Team: Korean (http://www.transifex.com/django/django/language/ko/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ko\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL 확장"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "배열 안에 있는 항목 1%(nth)s가 올바르지 않습니다:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "네스팅된 배열은 반드시 같은 길이를 가져야 합니다."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "문자열을 문자열/null 에 매핑"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "\"%(key)s\"의 값은 문자열 또는 null이 아닙니다."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "JSON 객체"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "올바른 JSON 형식이여야 합니다."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "JSON 데이터를 불러오지 못했습니다."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "입력은 JSON 사전이어야만 합니다."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "'%(value)s' 값은 올바른 JSON 형식이여야 합니다."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "유효한 두 값을 입력하세요."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "범위의 시작은 끝보다 클 수 없습니다."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "두 정수를 입력하세요."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "두 숫자를 입력하세요."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "올바른 날짜/시각 두 개를 입력하세요."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "올바른 날짜 두 개를 입력하세요."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"리스트는 %(show_value)d 아이템들을 포함하며, %(limit_value)d를 초과해서 포함"
|
||||
"할 수 없습니다."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"리스트는 %(show_value)d 아이템들을 포함하며, %(limit_value)d 이상 포함해야 합"
|
||||
"니다."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "일부 키가 누락되어있습니다: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "일부 알 수 없는 키가 제공되었습니다. : %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr "주어진 범위가 %(limit_value)s 보다 작거나 같은지 확인하십시오."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr "주어진 범위가 %(limit_value)s 보다 크거나 같은지 확인하십시오."
|
||||
+130
@@ -0,0 +1,130 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Matas Dailyda <matas@dailyda.com>, 2015-2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-05-18 08:24+0000\n"
|
||||
"Last-Translator: Matas Dailyda <matas@dailyda.com>\n"
|
||||
"Language-Team: Lithuanian (http://www.transifex.com/django/django/language/"
|
||||
"lt/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: lt\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < "
|
||||
"11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? "
|
||||
"1 : n % 1 != 0 ? 2: 3);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL plėtiniai"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "%(nth)s elementų masyve yra nevalidžių:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Iterpti vienas į kitą masyvai turi būti vienodo ilgio."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Susietos tekstinės reikšmės su tekstinėmis reikšmėmis/nulls"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "\"%(key)s\" reikšmė nėra tekstinė arba null."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "JSON objektas"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Reikšmė turi būti tinkamas JSON."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "Nepavyko užkrauti JSON duomenų."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Įvestis turi būti JSON žodynas."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "'%(value)s' reikšmė turi būti tinkamas JSON."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Įveskite dvi tinkamas reikšmes."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Diapazono pradžia negali būti didesnė už diapazono pabaigą."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Įveskite du sveikus skaičius."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Įveskite du skaičius."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Įveskite dvi tinkamas datas/laikus."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Įveskite dvi tinkamas datas."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Sąrašas turi %(show_value)d elementą. Sąrašas neturėtų turėti daugiau "
|
||||
"elementų nei %(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Sąrašas turi %(show_value)d elementus. Sąrašas neturėtų turėti daugiau "
|
||||
"elementų nei %(limit_value)d."
|
||||
msgstr[2] ""
|
||||
"Sąrašas turi %(show_value)d elementų. Sąrašas neturėtų turėti daugiau "
|
||||
"elementų nei %(limit_value)d."
|
||||
msgstr[3] ""
|
||||
"Sąrašas turi %(show_value)d elementų. Sąrašas neturėtų turėti daugiau "
|
||||
"elementų nei %(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Sąrašas turi %(show_value)d elementą. Sąrašas turėtų turėti daugiau elementų "
|
||||
"nei %(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Sąrašas turi %(show_value)d elementus. Sąrašas turėtų turėti daugiau "
|
||||
"elementų nei %(limit_value)d."
|
||||
msgstr[2] ""
|
||||
"Sąrašas turi %(show_value)d elementų. Sąrašas turėtų turėti daugiau elementų "
|
||||
"nei %(limit_value)d."
|
||||
msgstr[3] ""
|
||||
"Sąrašas turi %(show_value)d elementų. Sąrašas turėtų turėti daugiau elementų "
|
||||
"nei %(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Kai kurių reikšmių nėra: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Buvo pateiktos kelios nežinomos reikšmės: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr "Įsitikinkite kad diapazonas yra mažesnis arba lygus %(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr "Įsitikinkite kad diapazonas yra didesnis arba lygus %(limit_value)s."
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+117
@@ -0,0 +1,117 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Jon <jon@kolonial.no>, 2015-2016
|
||||
# Jon <jon@kolonial.no>, 2017-2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-07-30 11:31+0000\n"
|
||||
"Last-Translator: Jon <jon@kolonial.no>\n"
|
||||
"Language-Team: Norwegian Bokmål (http://www.transifex.com/django/django/"
|
||||
"language/nb/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: nb\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL-utvidelser"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "Element %(nth)s i arrayen validerte ikke:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Nøstede arrays må ha samme lengde."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Oversikt over strenger til strenger/nulls"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "Verdien av \"%(key)s\" er ikke en streng eller null."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "Et JSON-objekt"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Verdi må være gyldig JSON."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "Kunne ikke laste JSON-data."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Input må være en JSON-dictionary."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "'%(value)s'-verdien må være gyldig JSON."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Oppgi to gyldige verdier."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Starten på serien må ikke overstige enden av serien."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Oppgi to heltall."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Oppgi to tall."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Oppgi to gyldige datoer og tidspunkter."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Oppgi to gyldige datoer."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Listen inneholder %(show_value)d element, den bør ikke inneholde mer enn "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Listen inneholder %(show_value)d elementer, den bør ikke inneholde mer enn "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Listen inneholder %(show_value)d element, den bør ikke inneholde færre enn "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Listen inneholder %(show_value)d elementer, den bør ikke inneholde færre enn "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Noen nøkler manglet: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Noen ukjente nøkler ble oppgitt: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr "Sørg for at denne serien er helt mindre enn eller lik %(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr "Sørg for at denne serien er helt større enn eller lik %(limit_value)s."
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+126
@@ -0,0 +1,126 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Andre Machado <csantos.machado@gmail.com>, 2016
|
||||
# Carlos Leite <caduado@gmail.com>, 2016
|
||||
# Claudemiro Alves Feitosa Neto <dimiro1@gmail.com>, 2015
|
||||
# Fábio C. Barrionuevo da Luz <bnafta@gmail.com>, 2015
|
||||
# Lucas Infante <maccinza@gmail.com>, 2015
|
||||
# Luiz Boaretto <lboaretto@gmail.com>, 2017
|
||||
# Marcelo Moro Brondani <mbrondani@inf.ufsm.br>, 2018
|
||||
# Rafael Ribeiro <pereiraribeirorafael@gmail.com>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-06-25 18:11+0000\n"
|
||||
"Last-Translator: Marcelo Moro Brondani <mbrondani@inf.ufsm.br>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/django/django/"
|
||||
"language/pt_BR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "Extensões para PostgreSQL"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "O item %(nth)s na matriz não validou:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Matrizes aninhadas devem ter o mesmo comprimento."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Mapa de strings para strings/nulls"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "O valor de \"%(key)s\" não é uma string ou null."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "Um objeto JSON"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "O valor deve ser um JSON válido."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "Não foi possível carregar dados JSON."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Input deve ser um dicionário JSON"
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "'%(value)s' deve ser um JSON válido."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Insira dois valores válidos."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "O inicio do intervalo não deve exceder o fim do intervalo."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Insira dois números cheios."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Insira dois números"
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Insira duas datas/horas válidas."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Insira duas datas válidas."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"A lista contém um item %(show_value)d, não deveria conter mais que "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"A lista contém itens %(show_value)d, não deveria conter mais que "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"A lista contém um item %(show_value)d, deveria conter não menos que "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"A lista contém %(show_value)d itens, deveria conter não menos que "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Algumas chaves estavam faltando: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Algumas chaves desconhecidas foram fornecidos: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
"Certifique-se que o intervalo é completamente menor que %(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
"Certifique-se que este intervalo é completamente maior ou igual a "
|
||||
"%(limit_value)s."
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+128
@@ -0,0 +1,128 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Martin Tóth <ezimir@gmail.com>, 2017-2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-09-05 17:06+0000\n"
|
||||
"Last-Translator: Martin Tóth <ezimir@gmail.com>\n"
|
||||
"Language-Team: Slovak (http://www.transifex.com/django/django/language/sk/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sk\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n "
|
||||
">= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL rozšírenia"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "%(nth)s. položka poľa je neplatná:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Vnorené polia musia mať rovnakú dĺžku."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Mapovanie reťazcov na reťazce/NULL"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "Hodnota s kľúčom \"%(key)s\" nie je reťazec ani NULL."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "Objekt JSON"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Musí byť v platnom formáte JSON."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "Údaje typu JSON sa nepodarilo načítať."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Vstup musí byť slovník vo formáte JSON."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "Hodnota '%(value)s' musí byť v platnom formáte JSON."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Zadajte dve platné hodnoty."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Začiatočná hodnota rozsahu nesmie býť vyššia ako koncová hodnota."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Zadajte dve celé čísla."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Zadajte dve čísla."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Zadajte dva platné dátumy/časy."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Zadajte dva platné dátumy."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Zoznam obsahuje %(show_value)d položku, ale nemal by obsahovať viac ako "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Zoznam obsahuje %(show_value)d položku, ale nemal by obsahovať viac ako "
|
||||
"%(limit_value)d."
|
||||
msgstr[2] ""
|
||||
"Zoznam obsahuje %(show_value)d položku, ale nemal by obsahovať viac ako "
|
||||
"%(limit_value)d."
|
||||
msgstr[3] ""
|
||||
"Zoznam obsahuje %(show_value)d položku, ale nemal by obsahovať viac ako "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Zoznam obsahuje %(show_value)d položku, ale nemal by obsahovať menej ako "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Zoznam obsahuje %(show_value)d položku, ale nemal by obsahovať menej ako "
|
||||
"%(limit_value)d."
|
||||
msgstr[2] ""
|
||||
"Zoznam obsahuje %(show_value)d položku, ale nemal by obsahovať menej ako "
|
||||
"%(limit_value)d."
|
||||
msgstr[3] ""
|
||||
"Zoznam obsahuje %(show_value)d položku, ale nemal by obsahovať menej ako "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Niektoré kľúče chýbajú: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Boli zadané neznáme kľúče: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr "Hodnota rozsahu musí byť celá menšia alebo rovná %(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr "Hodnota rozsahu musí byť celá väčšia alebo rovná %(limit_value)s."
|
||||
+117
@@ -0,0 +1,117 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Besnik <besnik@programeshqip.org>, 2017-2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-05-18 09:27+0000\n"
|
||||
"Last-Translator: Besnik <besnik@programeshqip.org>\n"
|
||||
"Language-Team: Albanian (http://www.transifex.com/django/django/language/"
|
||||
"sq/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sq\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "Zgjerime PostgreSQL"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "Objekti %(nth)s te vargu nuk u vleftësua:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Vargjet brenda vargjesh duhet të kenë të njëjtën gjatësi."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Hartë vargjesh te strings/nulls"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "Vlera e \"%(key)s\" s’është varg ose nul."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "Një objekt JSON"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Vlera duhet të jetë JSON i vlefshëm."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "S’u ngarkuan dot të dhëna JSON."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Vlera duhet të jetë një fjalor JSON."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "Vlera '%(value)s' duhet të jetë JSON i vlefshëm."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Jepni dy vlera të vlefshme."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Fillimi i një intervali s’duhet të tejkalojë fundin e një intervali."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Jepni dy vlera të plota numrash."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Jepni dy numra."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Jepni dy data/kohë të vlefshme."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Jepni dy data të vlefshme."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Lista përmban %(show_value)d element, duhet të përmbajë jo më shumë se "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Lista përmban %(show_value)d elementë, duhet të përmbajë jo më shumë se "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Lista përmban %(show_value)d element, duhet të përmbajë jo më pak "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Lista përmban %(show_value)d elementë, duhet të përmbajë jo më pak "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Mungojnë ca kyçe: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Janë dhënë kyçe të panjohur: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr "Sigurohuni që ky interval është më pak ose baras me %(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
"Sigurohuni që ky interval është më i madh ose baras me %(limit_value)s."
|
||||
BIN
Binary file not shown.
+123
@@ -0,0 +1,123 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# Branko Kokanovic <branko@kokanovic.org>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-07-04 19:55+0000\n"
|
||||
"Last-Translator: Branko Kokanovic <branko@kokanovic.org>\n"
|
||||
"Language-Team: Serbian (http://www.transifex.com/django/django/language/"
|
||||
"sr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sr\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"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL екстензије"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "Ставка %(nth)s у низу није валидирана:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "Угњеждени низови морају да буду исте дужине."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Мапа знаковних ниски на знаковне ниске/null-ове"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "Вредност кључа \"%(key)s\" није знаковна ниска или null."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "JSON објекат"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Вредност мора бити исправни JSON."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "Не могу да учитам JSON податке."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Улазна вредност мора бити JSON dict."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "'%(value)s' вредност мора бити исправни JSON."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Унесите две исправне вредности."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Почетак опсега не може бити преко краја опсега."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Унесите два цела броја."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "Унесите два броја."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Унесите два исправна датума/времена."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Унесите два исправна датума."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Листа садржи %(show_value)dставку, не би требало да садржи више од "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Листа садржи %(show_value)d ставке, не би требало да садржи више од "
|
||||
"%(limit_value)d."
|
||||
msgstr[2] ""
|
||||
"Листа садржи %(show_value)d ставки, не би требало да садржи више од "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Листа садржи %(show_value)d ставку, не би требало да садржи мање од "
|
||||
"%(limit_value)d."
|
||||
msgstr[1] ""
|
||||
"Листа садржи %(show_value)d ставке, не би требало да садржи мање од "
|
||||
"%(limit_value)d."
|
||||
msgstr[2] ""
|
||||
"Листа садржи %(show_value)d ставки, не би требало да садржи мање од "
|
||||
"%(limit_value)d."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Неки кључеви недостају: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Дати су неки непознати кључеви: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr "Овај опсег мора бити укупно мањи или једнак %(limit_value)s."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr "Овај опсег мора бити укупно већи или једнак %(limit_value)s."
|
||||
BIN
Binary file not shown.
+119
@@ -0,0 +1,119 @@
|
||||
# This file is distributed under the same license as the Django package.
|
||||
#
|
||||
# Translators:
|
||||
# BouRock, 2015-2018
|
||||
# BouRock, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: django\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-05-17 11:49+0200\n"
|
||||
"PO-Revision-Date: 2018-05-18 10:06+0000\n"
|
||||
"Last-Translator: BouRock\n"
|
||||
"Language-Team: Turkish (http://www.transifex.com/django/django/language/"
|
||||
"tr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: tr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
msgid "PostgreSQL extensions"
|
||||
msgstr "PostgreSQL uzantıları"
|
||||
|
||||
#, python-format
|
||||
msgid "Item %(nth)s in the array did not validate:"
|
||||
msgstr "Dizilimdeki %(nth)s öğesi doğrulanmadı:"
|
||||
|
||||
msgid "Nested arrays must have the same length."
|
||||
msgstr "İç içe dizilimler aynı uzunlukta olmak zorunda."
|
||||
|
||||
msgid "Map of strings to strings/nulls"
|
||||
msgstr "Dizgiler/boşlar olarak dizgilerin eşlemesi"
|
||||
|
||||
#, python-format
|
||||
msgid "The value of \"%(key)s\" is not a string or null."
|
||||
msgstr "\"%(key)s\" değeri bir dizgi ya da boş değil."
|
||||
|
||||
msgid "A JSON object"
|
||||
msgstr "JSON nesnesi"
|
||||
|
||||
msgid "Value must be valid JSON."
|
||||
msgstr "Değer geçerli JSON olmak zorundadır."
|
||||
|
||||
msgid "Could not load JSON data."
|
||||
msgstr "JSON verisi yüklenemedi."
|
||||
|
||||
msgid "Input must be a JSON dictionary."
|
||||
msgstr "Bir JSON dizini girilmek zorundadır."
|
||||
|
||||
#, python-format
|
||||
msgid "'%(value)s' value must be valid JSON."
|
||||
msgstr "'%(value)s' değeri geçerli JSON olmak zorundadır."
|
||||
|
||||
msgid "Enter two valid values."
|
||||
msgstr "Iki geçerli değer girin."
|
||||
|
||||
msgid "The start of the range must not exceed the end of the range."
|
||||
msgstr "Aralığın başlangıcı aralığın bitişini aşmamak zorundadır."
|
||||
|
||||
msgid "Enter two whole numbers."
|
||||
msgstr "Bütün iki sayıyı girin."
|
||||
|
||||
msgid "Enter two numbers."
|
||||
msgstr "İki sayı girin."
|
||||
|
||||
msgid "Enter two valid date/times."
|
||||
msgstr "Geçerli iki tarih/saat girin."
|
||||
|
||||
msgid "Enter two valid dates."
|
||||
msgstr "Geçerli iki tarih girin."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no more than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Liste %(show_value)d öğe içeriyor, %(limit_value)d değerden daha fazla "
|
||||
"içermemelidir."
|
||||
msgstr[1] ""
|
||||
"Liste %(show_value)d öğe içeriyor, %(limit_value)d değerden daha fazla "
|
||||
"içermemelidir."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"List contains %(show_value)d item, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgid_plural ""
|
||||
"List contains %(show_value)d items, it should contain no fewer than "
|
||||
"%(limit_value)d."
|
||||
msgstr[0] ""
|
||||
"Liste %(show_value)d öğe içeriyor, %(limit_value)d değerden daha az "
|
||||
"içermemelidir."
|
||||
msgstr[1] ""
|
||||
"Liste %(show_value)d öğe içeriyor, %(limit_value)d değerden daha az "
|
||||
"içermemelidir."
|
||||
|
||||
#, python-format
|
||||
msgid "Some keys were missing: %(keys)s"
|
||||
msgstr "Bazı anahtarlar eksik: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid "Some unknown keys were provided: %(keys)s"
|
||||
msgstr "Bazı bilinmeyen anahtarlar verilmiş: %(keys)s"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely less than or equal to %(limit_value)s."
|
||||
msgstr ""
|
||||
"Bu aralığın %(limit_value)s değerinden küçük veya eşit olduğundan emin olun."
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Ensure that this range is completely greater than or equal to "
|
||||
"%(limit_value)s."
|
||||
msgstr ""
|
||||
"Bu aralığın %(limit_value)s değerinden büyük veya eşit olduğundan emin olun."
|
||||
@@ -0,0 +1,77 @@
|
||||
from django.contrib.postgres.signals import (
|
||||
get_citext_oids, get_hstore_oids, register_type_handlers,
|
||||
)
|
||||
from django.db.migrations.operations.base import Operation
|
||||
|
||||
|
||||
class CreateExtension(Operation):
|
||||
reversible = True
|
||||
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
|
||||
def state_forwards(self, app_label, state):
|
||||
pass
|
||||
|
||||
def database_forwards(self, app_label, schema_editor, from_state, to_state):
|
||||
if schema_editor.connection.vendor != 'postgresql':
|
||||
return
|
||||
schema_editor.execute("CREATE EXTENSION IF NOT EXISTS %s" % schema_editor.quote_name(self.name))
|
||||
# Clear cached, stale oids.
|
||||
get_hstore_oids.cache_clear()
|
||||
get_citext_oids.cache_clear()
|
||||
# Registering new type handlers cannot be done before the extension is
|
||||
# installed, otherwise a subsequent data migration would use the same
|
||||
# connection.
|
||||
register_type_handlers(schema_editor.connection)
|
||||
|
||||
def database_backwards(self, app_label, schema_editor, from_state, to_state):
|
||||
schema_editor.execute("DROP EXTENSION %s" % schema_editor.quote_name(self.name))
|
||||
# Clear cached, stale oids.
|
||||
get_hstore_oids.cache_clear()
|
||||
get_citext_oids.cache_clear()
|
||||
|
||||
def describe(self):
|
||||
return "Creates extension %s" % self.name
|
||||
|
||||
|
||||
class BtreeGinExtension(CreateExtension):
|
||||
|
||||
def __init__(self):
|
||||
self.name = 'btree_gin'
|
||||
|
||||
|
||||
class BtreeGistExtension(CreateExtension):
|
||||
|
||||
def __init__(self):
|
||||
self.name = 'btree_gist'
|
||||
|
||||
|
||||
class CITextExtension(CreateExtension):
|
||||
|
||||
def __init__(self):
|
||||
self.name = 'citext'
|
||||
|
||||
|
||||
class CryptoExtension(CreateExtension):
|
||||
|
||||
def __init__(self):
|
||||
self.name = 'pgcrypto'
|
||||
|
||||
|
||||
class HStoreExtension(CreateExtension):
|
||||
|
||||
def __init__(self):
|
||||
self.name = 'hstore'
|
||||
|
||||
|
||||
class TrigramExtension(CreateExtension):
|
||||
|
||||
def __init__(self):
|
||||
self.name = 'pg_trgm'
|
||||
|
||||
|
||||
class UnaccentExtension(CreateExtension):
|
||||
|
||||
def __init__(self):
|
||||
self.name = 'unaccent'
|
||||
@@ -0,0 +1,239 @@
|
||||
from django.db.models import CharField, Field, FloatField, TextField
|
||||
from django.db.models.expressions import CombinedExpression, Func, Value
|
||||
from django.db.models.functions import Cast, Coalesce
|
||||
from django.db.models.lookups import Lookup
|
||||
|
||||
|
||||
class SearchVectorExact(Lookup):
|
||||
lookup_name = 'exact'
|
||||
|
||||
def process_rhs(self, qn, connection):
|
||||
if not hasattr(self.rhs, 'resolve_expression'):
|
||||
config = getattr(self.lhs, 'config', None)
|
||||
self.rhs = SearchQuery(self.rhs, config=config)
|
||||
rhs, rhs_params = super().process_rhs(qn, connection)
|
||||
return rhs, rhs_params
|
||||
|
||||
def as_sql(self, qn, connection):
|
||||
lhs, lhs_params = self.process_lhs(qn, connection)
|
||||
rhs, rhs_params = self.process_rhs(qn, connection)
|
||||
params = lhs_params + rhs_params
|
||||
return '%s @@ %s = true' % (lhs, rhs), params
|
||||
|
||||
|
||||
class SearchVectorField(Field):
|
||||
|
||||
def db_type(self, connection):
|
||||
return 'tsvector'
|
||||
|
||||
|
||||
class SearchQueryField(Field):
|
||||
|
||||
def db_type(self, connection):
|
||||
return 'tsquery'
|
||||
|
||||
|
||||
class SearchVectorCombinable:
|
||||
ADD = '||'
|
||||
|
||||
def _combine(self, other, connector, reversed):
|
||||
if not isinstance(other, SearchVectorCombinable) or not self.config == other.config:
|
||||
raise TypeError('SearchVector can only be combined with other SearchVectors')
|
||||
if reversed:
|
||||
return CombinedSearchVector(other, connector, self, self.config)
|
||||
return CombinedSearchVector(self, connector, other, self.config)
|
||||
|
||||
|
||||
class SearchVector(SearchVectorCombinable, Func):
|
||||
function = 'to_tsvector'
|
||||
arg_joiner = " || ' ' || "
|
||||
output_field = SearchVectorField()
|
||||
config = None
|
||||
|
||||
def __init__(self, *expressions, **extra):
|
||||
super().__init__(*expressions, **extra)
|
||||
self.config = self.extra.get('config', self.config)
|
||||
weight = self.extra.get('weight')
|
||||
if weight is not None and not hasattr(weight, 'resolve_expression'):
|
||||
weight = Value(weight)
|
||||
self.weight = weight
|
||||
|
||||
def resolve_expression(self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False):
|
||||
resolved = super().resolve_expression(query, allow_joins, reuse, summarize, for_save)
|
||||
if self.config:
|
||||
if not hasattr(self.config, 'resolve_expression'):
|
||||
resolved.config = Value(self.config).resolve_expression(query, allow_joins, reuse, summarize, for_save)
|
||||
else:
|
||||
resolved.config = self.config.resolve_expression(query, allow_joins, reuse, summarize, for_save)
|
||||
return resolved
|
||||
|
||||
def as_sql(self, compiler, connection, function=None, template=None):
|
||||
clone = self.copy()
|
||||
clone.set_source_expressions([
|
||||
Coalesce(
|
||||
expression
|
||||
if isinstance(expression.output_field, (CharField, TextField))
|
||||
else Cast(expression, TextField()),
|
||||
Value('')
|
||||
) for expression in clone.get_source_expressions()
|
||||
])
|
||||
config_params = []
|
||||
if template is None:
|
||||
if clone.config:
|
||||
config_sql, config_params = compiler.compile(clone.config)
|
||||
template = '%(function)s({}::regconfig, %(expressions)s)'.format(config_sql.replace('%', '%%'))
|
||||
else:
|
||||
template = clone.template
|
||||
sql, params = super(SearchVector, clone).as_sql(compiler, connection, function=function, template=template)
|
||||
extra_params = []
|
||||
if clone.weight:
|
||||
weight_sql, extra_params = compiler.compile(clone.weight)
|
||||
sql = 'setweight({}, {})'.format(sql, weight_sql)
|
||||
return sql, config_params + params + extra_params
|
||||
|
||||
|
||||
class CombinedSearchVector(SearchVectorCombinable, CombinedExpression):
|
||||
def __init__(self, lhs, connector, rhs, config, output_field=None):
|
||||
self.config = config
|
||||
super().__init__(lhs, connector, rhs, output_field)
|
||||
|
||||
|
||||
class SearchQueryCombinable:
|
||||
BITAND = '&&'
|
||||
BITOR = '||'
|
||||
|
||||
def _combine(self, other, connector, reversed):
|
||||
if not isinstance(other, SearchQueryCombinable):
|
||||
raise TypeError(
|
||||
'SearchQuery can only be combined with other SearchQuerys, '
|
||||
'got {}.'.format(type(other))
|
||||
)
|
||||
if reversed:
|
||||
return CombinedSearchQuery(other, connector, self, self.config)
|
||||
return CombinedSearchQuery(self, connector, other, self.config)
|
||||
|
||||
# On Combinable, these are not implemented to reduce confusion with Q. In
|
||||
# this case we are actually (ab)using them to do logical combination so
|
||||
# it's consistent with other usage in Django.
|
||||
def __or__(self, other):
|
||||
return self._combine(other, self.BITOR, False)
|
||||
|
||||
def __ror__(self, other):
|
||||
return self._combine(other, self.BITOR, True)
|
||||
|
||||
def __and__(self, other):
|
||||
return self._combine(other, self.BITAND, False)
|
||||
|
||||
def __rand__(self, other):
|
||||
return self._combine(other, self.BITAND, True)
|
||||
|
||||
|
||||
class SearchQuery(SearchQueryCombinable, Value):
|
||||
output_field = SearchQueryField()
|
||||
SEARCH_TYPES = {
|
||||
'plain': 'plainto_tsquery',
|
||||
'phrase': 'phraseto_tsquery',
|
||||
'raw': 'to_tsquery',
|
||||
}
|
||||
|
||||
def __init__(self, value, output_field=None, *, config=None, invert=False, search_type='plain'):
|
||||
self.config = config
|
||||
self.invert = invert
|
||||
if search_type not in self.SEARCH_TYPES:
|
||||
raise ValueError("Unknown search_type argument '%s'." % search_type)
|
||||
self.search_type = search_type
|
||||
super().__init__(value, output_field=output_field)
|
||||
|
||||
def resolve_expression(self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False):
|
||||
resolved = super().resolve_expression(query, allow_joins, reuse, summarize, for_save)
|
||||
if self.config:
|
||||
if not hasattr(self.config, 'resolve_expression'):
|
||||
resolved.config = Value(self.config).resolve_expression(query, allow_joins, reuse, summarize, for_save)
|
||||
else:
|
||||
resolved.config = self.config.resolve_expression(query, allow_joins, reuse, summarize, for_save)
|
||||
return resolved
|
||||
|
||||
def as_sql(self, compiler, connection):
|
||||
params = [self.value]
|
||||
function = self.SEARCH_TYPES[self.search_type]
|
||||
if self.config:
|
||||
config_sql, config_params = compiler.compile(self.config)
|
||||
template = '{}({}::regconfig, %s)'.format(function, config_sql)
|
||||
params = config_params + [self.value]
|
||||
else:
|
||||
template = '{}(%s)'.format(function)
|
||||
if self.invert:
|
||||
template = '!!({})'.format(template)
|
||||
return template, params
|
||||
|
||||
def _combine(self, other, connector, reversed):
|
||||
combined = super()._combine(other, connector, reversed)
|
||||
combined.output_field = SearchQueryField()
|
||||
return combined
|
||||
|
||||
def __invert__(self):
|
||||
return type(self)(self.value, config=self.config, invert=not self.invert)
|
||||
|
||||
def __str__(self):
|
||||
result = super().__str__()
|
||||
return ('~%s' % result) if self.invert else result
|
||||
|
||||
|
||||
class CombinedSearchQuery(SearchQueryCombinable, CombinedExpression):
|
||||
def __init__(self, lhs, connector, rhs, config, output_field=None):
|
||||
self.config = config
|
||||
super().__init__(lhs, connector, rhs, output_field)
|
||||
|
||||
def __str__(self):
|
||||
return '(%s)' % super().__str__()
|
||||
|
||||
|
||||
class SearchRank(Func):
|
||||
function = 'ts_rank'
|
||||
output_field = FloatField()
|
||||
|
||||
def __init__(self, vector, query, **extra):
|
||||
if not hasattr(vector, 'resolve_expression'):
|
||||
vector = SearchVector(vector)
|
||||
if not hasattr(query, 'resolve_expression'):
|
||||
query = SearchQuery(query)
|
||||
weights = extra.get('weights')
|
||||
if weights is not None and not hasattr(weights, 'resolve_expression'):
|
||||
weights = Value(weights)
|
||||
self.weights = weights
|
||||
super().__init__(vector, query, **extra)
|
||||
|
||||
def as_sql(self, compiler, connection, function=None, template=None):
|
||||
extra_params = []
|
||||
extra_context = {}
|
||||
if template is None and self.extra.get('weights'):
|
||||
if self.weights:
|
||||
template = '%(function)s(%(weights)s, %(expressions)s)'
|
||||
weight_sql, extra_params = compiler.compile(self.weights)
|
||||
extra_context['weights'] = weight_sql
|
||||
sql, params = super().as_sql(
|
||||
compiler, connection,
|
||||
function=function, template=template, **extra_context
|
||||
)
|
||||
return sql, extra_params + params
|
||||
|
||||
|
||||
SearchVectorField.register_lookup(SearchVectorExact)
|
||||
|
||||
|
||||
class TrigramBase(Func):
|
||||
output_field = FloatField()
|
||||
|
||||
def __init__(self, expression, string, **extra):
|
||||
if not hasattr(string, 'resolve_expression'):
|
||||
string = Value(string)
|
||||
super().__init__(expression, string, **extra)
|
||||
|
||||
|
||||
class TrigramSimilarity(TrigramBase):
|
||||
function = 'SIMILARITY'
|
||||
|
||||
|
||||
class TrigramDistance(TrigramBase):
|
||||
function = ''
|
||||
arg_joiner = ' <-> '
|
||||
@@ -0,0 +1,29 @@
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils.functional import SimpleLazyObject
|
||||
from django.utils.text import format_lazy
|
||||
|
||||
|
||||
def prefix_validation_error(error, prefix, code, params):
|
||||
"""
|
||||
Prefix a validation error message while maintaining the existing
|
||||
validation data structure.
|
||||
"""
|
||||
if error.error_list == [error]:
|
||||
error_params = error.params or {}
|
||||
return ValidationError(
|
||||
# We can't simply concatenate messages since they might require
|
||||
# their associated parameters to be expressed correctly which
|
||||
# is not something `format_lazy` does. For example, proxied
|
||||
# ngettext calls require a count parameter and are converted
|
||||
# to an empty string if they are missing it.
|
||||
message=format_lazy(
|
||||
'{} {}',
|
||||
SimpleLazyObject(lambda: prefix % params),
|
||||
SimpleLazyObject(lambda: error.message % error_params),
|
||||
),
|
||||
code=code,
|
||||
params={**error_params, **params},
|
||||
)
|
||||
return ValidationError([
|
||||
prefix_validation_error(e, prefix, code, params) for e in error.error_list
|
||||
])
|
||||
Reference in New Issue
Block a user