Merge remote-tracking branch 'reference/master' into feature/ipaddress-fix

Conflicts:
	docs/api-guide/fields.md
This commit is contained in:
Xavier Ordoquy 2015-06-04 14:21:33 +01:00
commit dee5fb5647
127 changed files with 5143 additions and 2618 deletions

View File

@ -5,6 +5,10 @@ sudo: false
env:
- TOX_ENV=py27-flake8
- TOX_ENV=py27-docs
- TOX_ENV=py34-django18
- TOX_ENV=py33-django18
- TOX_ENV=py32-django18
- TOX_ENV=py27-django18
- TOX_ENV=py34-django17
- TOX_ENV=py33-django17
- TOX_ENV=py32-django17
@ -21,10 +25,18 @@ env:
- TOX_ENV=py26-django15
- TOX_ENV=py27-django14
- TOX_ENV=py26-django14
- TOX_ENV=py34-django18beta
- TOX_ENV=py33-django18beta
- TOX_ENV=py32-django18beta
- TOX_ENV=py27-django18beta
- TOX_ENV=py27-djangomaster
- TOX_ENV=py32-djangomaster
- TOX_ENV=py33-djangomaster
- TOX_ENV=py34-djangomaster
matrix:
fast_finish: true
allow_failures:
- env: TOX_ENV=py27-djangomaster
- env: TOX_ENV=py32-djangomaster
- env: TOX_ENV=py33-djangomaster
- env: TOX_ENV=py34-djangomaster
install:
- pip install tox

24
LICENSE.md Normal file
View File

@ -0,0 +1,24 @@
# License
Copyright (c) 2011-2015, Tom Christie
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,3 +1,5 @@
include README.md
include LICENSE.md
recursive-include rest_framework/static *.js *.css *.png *.eot *.svg *.ttf *.woff
recursive-include rest_framework/templates *.html
recursive-exclude * __pycache__

View File

@ -9,7 +9,9 @@ Full documentation for the project is available at [http://www.django-rest-frame
---
**Note**: We have now released Django REST framework 3.0. For older codebases you may want to refer to the version 2.4.4 [source code](https://github.com/tomchristie/django-rest-framework/tree/version-2.4.x), and [documentation](http://tomchristie.github.io/rest-framework-2-docs/).
**Note**: We have now released Django REST framework 3.1. For older codebases you may want to refer to the version 2.4.4 [source code](https://github.com/tomchristie/django-rest-framework/tree/version-2.4.x), and [documentation](http://tomchristie.github.io/rest-framework-2-docs/).
For more details see the [3.1 release notes][3.1-announcement]
---
@ -23,7 +25,7 @@ Some reasons you might want to use REST framework:
* [Authentication policies][authentication] including optional packages for [OAuth1a][oauth1-section] and [OAuth2][oauth2-section].
* [Serialization][serializers] that supports both [ORM][modelserializer-section] and [non-ORM][serializer-section] data sources.
* Customizable all the way down - just use [regular function-based views][functionview-section] if you don't need the [more][generic-views] [powerful][viewsets] [features][routers].
* [Extensive documentation][index], and [great community support][group].
* [Extensive documentation][docs], and [great community support][group].
There is a live example API for testing purposes, [available here][sandbox].
@ -34,7 +36,7 @@ There is a live example API for testing purposes, [available here][sandbox].
# Requirements
* Python (2.6.5+, 2.7, 3.2, 3.3, 3.4)
* Django (1.4.11+, 1.5.6+, 1.6.3+, 1.7, 1.8-beta)
* Django (1.4.11+, 1.5.6+, 1.6.3+, 1.7, 1.8)
# Installation
@ -154,42 +156,15 @@ If you believe youve found something in Django REST framework which has secur
Send a description of the issue via email to [rest-framework-security@googlegroups.com][security-mail]. The project maintainers will then work with you to resolve any issues where required, prior to any public disclosure.
# License
Copyright (c) 2011-2015, Tom Christie
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[build-status-image]: https://secure.travis-ci.org/tomchristie/django-rest-framework.svg?branch=master
[travis]: http://travis-ci.org/tomchristie/django-rest-framework?branch=master
[pypi-version]: https://pypip.in/version/djangorestframework/badge.svg
[pypi-version]: https://img.shields.io/pypi/v/djangorestframework.svg
[pypi]: https://pypi.python.org/pypi/djangorestframework
[twitter]: https://twitter.com/_tomchristie
[group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
[0.4]: https://github.com/tomchristie/django-rest-framework/tree/0.4.X
[sandbox]: http://restframework.herokuapp.com/
[index]: http://www.django-rest-framework.org/
[oauth1-section]: http://www.django-rest-framework.org/api-guide/authentication/#django-rest-framework-oauth
[oauth2-section]: http://www.django-rest-framework.org/api-guide/authentication/#django-oauth-toolkit
[serializer-section]: http://www.django-rest-framework.org/api-guide/serializers/#serializers
@ -200,18 +175,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[routers]: http://www.django-rest-framework.org/api-guide/routers/
[serializers]: http://www.django-rest-framework.org/api-guide/serializers/
[authentication]: http://www.django-rest-framework.org/api-guide/authentication/
[rest-framework-2-announcement]: http://www.django-rest-framework.org/topics/rest-framework-2-announcement/
[2.1.0-notes]: https://groups.google.com/d/topic/django-rest-framework/Vv2M0CMY9bg/discussion
[image]: http://www.django-rest-framework.org/img/quickstart.png
[tox]: http://testrun.org/tox/latest/
[tehjones]: https://twitter.com/tehjones/status/294986071979196416
[wlonk]: https://twitter.com/wlonk/status/261689665952833536
[laserllama]: https://twitter.com/laserllama/status/328688333750407168
[docs]: http://www.django-rest-framework.org/
[urlobject]: https://github.com/zacharyvoase/urlobject
[markdown]: http://pypi.python.org/pypi/Markdown/
[django-filter]: http://pypi.python.org/pypi/django-filter
[security-mail]: mailto:rest-framework-security@googlegroups.com
[3.1-announcement]: http://www.django-rest-framework.org/topics/3.1-announcement/

5
docs/api-guide/authentication.md Executable file → Normal file
View File

@ -168,7 +168,6 @@ The `curl` command line tool may be useful for testing token authenticated APIs.
If you want every user to have an automatically generated Token, you can simply catch the User's `post_save` signal.
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db.models.signals import post_save
from django.dispatch import receiver
from rest_framework.authtoken.models import Token
@ -248,6 +247,10 @@ Unauthenticated responses that are denied permission will result in an `HTTP 403
If you're using an AJAX style API with SessionAuthentication, you'll need to make sure you include a valid CSRF token for any "unsafe" HTTP method calls, such as `PUT`, `PATCH`, `POST` or `DELETE` requests. See the [Django CSRF documentation][csrf-ajax] for more details.
**Warning**: Always use Django's standard login view when creating login pages. This will ensure your login views are properly protected.
CSRF validation in REST framework works slightly differently to standard Django due to the need to support both session and non-session based authentication to the same views. This means that only authenticated requests require CSRF tokens, and anonymous requests may be sent without CSRF tokens. This behaviour is not suitable for login views, which should always have CSRF validation applied.
# Custom authentication
To implement a custom authentication scheme, subclass `BaseAuthentication` and override the `.authenticate(self, request)` method. The method should return a two-tuple of `(user, auth)` if authentication succeeds, or `None` otherwise.

View File

@ -1,11 +1,5 @@
source: fields.py
---
**Note**: This is the documentation for the **version 3.0** of REST framework. Documentation for [version 2.4](http://tomchristie.github.io/rest-framework-2-docs/) is also available.
---
# Serializer fields
> Each field in a Form class is responsible not only for validating data, but also for "cleaning" it — normalizing it to a consistent format.
@ -189,6 +183,15 @@ A field that ensures the input is a valid UUID string. The `to_internal_value` m
"de305d54-75b4-431b-adb2-eb6b9e546013"
**Signature:** `UUIDField(format='hex_verbose')`
- `format`: Determines the representation format of the uuid value
- `'hex_verbose'` - The cannoncical hex representation, including hyphens: `"5ce0e9a5-5ffa-654b-cee0-1238041fb31a"`
- `'hex'` - The compact hex representation of the UUID, not including hyphens: `"5ce0e9a55ffa654bcee01238041fb31a"`
- `'int'` - A 128 bit integer representation of the UUID: `"123456789012312313134124512351145145114"`
- `'urn'` - RFC 4122 URN representation of the UUID: `"urn:uuid:5ce0e9a5-5ffa-654b-cee0-1238041fb31a"`
Changing the `format` parameters only affects representation values. All formats are accepted by `to_internal_value`
## IPAddressField
A field that ensures the input is a valid IPv4 or IPv6 string.
@ -319,6 +322,18 @@ Corresponds to `django.db.models.fields.TimeField`
Format strings may either be [Python strftime formats][strftime] which explicitly specify the format, or the special string `'iso-8601'`, which indicates that [ISO 8601][iso8601] style times should be used. (eg `'12:34:56.000000'`)
## DurationField
A Duration representation.
Corresponds to `django.db.models.fields.DurationField`
The `validated_data` for these fields will contain a `datetime.timedelta` instance.
The representation is a string following this format `'[DD] [HH:[MM:]]ss[.uuuuuu]'`.
**Note:** This field is only available with Django versions >= 1.8.
**Signature:** `DurationField()`
---
# Choice selection fields
@ -451,7 +466,7 @@ A field class that does not take a value based on user input, but instead takes
For example, to include a field that always provides the current time as part of the serializer validated data, you would use the following:
modified = serializer.HiddenField(default=timezone.now)
modified = serializers.HiddenField(default=timezone.now)
The `HiddenField` class is usually only needed if you have some validation that needs to run based on some pre-provided field values, but you do not want to expose all of those fields to the end user.
@ -498,7 +513,7 @@ If you want to create a custom field, you'll need to subclass `Field` and then o
The `.to_representation()` method is called to convert the initial datatype into a primitive, serializable datatype.
The `to_internal_value()` method is called to restore a primitive datatype into its internal python representation. This method should raise a `serializer.ValidationError` if the data is invalid.
The `to_internal_value()` method is called to restore a primitive datatype into its internal python representation. This method should raise a `serializers.ValidationError` if the data is invalid.
Note that the `WritableField` class that was present in version 2.x no longer exists. You should subclass `Field` and override `to_internal_value()` if the field supports data input.

View File

@ -72,7 +72,7 @@ We can override `.get_queryset()` to deal with URLs such as `http://example.com/
by filtering against a `username` query parameter in the URL.
"""
queryset = Purchase.objects.all()
username = self.request.QUERY_PARAMS.get('username', None)
username = self.request.query_params.get('username', None)
if username is not None:
queryset = queryset.filter(purchaser__username=username)
return queryset
@ -395,6 +395,10 @@ The following third party packages provide additional filter implementations.
The [django-rest-framework-filters package][django-rest-framework-filters] works together with the `DjangoFilterBackend` class, and allows you to easily create filters across relationships, or create multiple filter lookup types for a given field.
## Django REST framework full word search filter
The [djangorestframework-word-filter][django-rest-framework-word-search-filter] developed as alternative to `filters.SearchFilter` which will search full word in text, or exact match.
[cite]: https://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-specific-objects-with-filters
[django-filter]: https://github.com/alex/django-filter
[django-filter-docs]: https://django-filter.readthedocs.org/en/latest/index.html
@ -404,3 +408,4 @@ The [django-rest-framework-filters package][django-rest-framework-filters] works
[nullbooleanselect]: https://github.com/django/django/blob/master/django/forms/widgets.py
[search-django-admin]: https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields
[django-rest-framework-filters]: https://github.com/philipn/django-rest-framework-filters
[django-rest-framework-word-search-filter]: https://github.com/trollknurr/django-rest-framework-word-search-filter

23
docs/api-guide/generic-views.md Executable file → Normal file
View File

@ -1,12 +1,6 @@
source: mixins.py
generics.py
---
**Note**: This is the documentation for the **version 3.0** of REST framework. Documentation for [version 2.4](http://tomchristie.github.io/rest-framework-2-docs/) is also available.
---
# Generic views
> Djangos generic views... were developed as a shortcut for common usage patterns... They take certain common idioms and patterns found in view development and abstract them so that you can quickly write common views of data without having to repeat yourself.
@ -57,7 +51,7 @@ For more complex cases you might also want to override various methods on the vi
For very simple cases you might want to pass through any class attributes using the `.as_view()` method. For example, your URLconf might include something like the following entry:
url(r'^/users/', ListCreateAPIView.as_view(model=User), name='user-list')
url(r'^/users/', ListCreateAPIView.as_view(queryset=User.objects.all(), serializer_class=UserSerializer), name='user-list')
---
@ -84,10 +78,9 @@ The following attributes control the basic view behavior.
The following attributes are used to control pagination when used with list views.
* `paginate_by` - The size of pages to use with paginated data. If set to `None` then pagination is turned off. If unset this uses the same value as the `PAGINATE_BY` setting, which defaults to `None`.
* `paginate_by_param` - The name of a query parameter, which can be used by the client to override the default page size to use for pagination. If unset this uses the same value as the `PAGINATE_BY_PARAM` setting, which defaults to `None`.
* `pagination_serializer_class` - The pagination serializer class to use when determining the style of paginated responses. Defaults to the same value as the `DEFAULT_PAGINATION_SERIALIZER_CLASS` setting.
* `page_kwarg` - The name of a URL kwarg or URL query parameter which can be used by the client to control which page is requested. Defaults to `'page'`.
* `pagination_class` - The pagination class that should be used when paginating list results. Defaults to the same value as the `DEFAULT_PAGINATION_CLASS` setting, which is `'rest_framework.pagination.PageNumberPagination'`.
Note that usage of the `paginate_by`, `paginate_by_param` and `page_kwarg` attributes are now pending deprecation. The `pagination_serializer_class` attribute and `DEFAULT_PAGINATION_SERIALIZER_CLASS` setting have been removed completely. Pagination settings should instead be controlled by overriding a pagination class and setting any configuration attributes there. See the pagination documentation for more details.
**Filtering**:
@ -135,14 +128,14 @@ Note that if your API doesn't include any object level permissions, you may opti
Returns the classes that should be used to filter the queryset. Defaults to returning the `filter_backends` attribute.
May be overridden to provide more complex behavior with filters, such as using different (or even exlusive) lists of filter_backends depending on different criteria.
May be overridden to provide more complex behavior with filters, such as using different (or even exclusive) lists of filter_backends depending on different criteria.
For example:
def get_filter_backends(self):
if "geo_route" in self.request.QUERY_PARAMS:
if "geo_route" in self.request.query_params:
return (GeoRouteFilter, CategoryFilter)
elif "geo_point" in self.request.QUERY_PARAMS:
elif "geo_point" in self.request.query_params:
return (GeoPointFilter, CategoryFilter)
return (CategoryFilter,)
@ -200,7 +193,7 @@ You won't typically need to override the following methods, although you might n
* `get_serializer_context(self)` - Returns a dictionary containing any extra context that should be supplied to the serializer. Defaults to including `'request'`, `'view'` and `'format'` keys.
* `get_serializer(self, instance=None, data=None, files=None, many=False, partial=False, allow_add_remove=False)` - Returns a serializer instance.
* `get_pagination_serializer(self, page)` - Returns a serializer instance to use with paginated data.
* `get_paginated_response(self, data)` - Returns a paginated style `Response` object.
* `paginate_queryset(self, queryset)` - Paginate a queryset if required, either returning a page object, or `None` if pagination is not configured for this view.
* `filter_queryset(self, queryset)` - Given a queryset, filter it with whichever filter backends are in use, returning a new queryset.

View File

@ -1,11 +1,5 @@
source: metadata.py
---
**Note**: This is the documentation for the **version 3.0** of REST framework. Documentation for [version 2.4](http://tomchristie.github.io/rest-framework-2-docs/) is also available.
---
# Metadata
> [The `OPTIONS`] method allows a client to determine the options and/or requirements associated with a resource, or the capabilities of a server, without implying a resource action or initiating a resource retrieval.

View File

@ -51,7 +51,8 @@ You can then apply your new style to a view using the `.pagination_class` attrib
Or apply the style globally, using the `DEFAULT_PAGINATION_CLASS` settings key. For example:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'apps.core.pagination.StandardResultsSetPagination' }
'DEFAULT_PAGINATION_CLASS': 'apps.core.pagination.StandardResultsSetPagination'
}
---
@ -79,11 +80,11 @@ This pagination style accepts a single number page number in the request query p
#### Setup
To enable the `PageNumberPagination` style globally, use the following configuration, modifying the `DEFAULT_PAGE_SIZE` as desired:
To enable the `PageNumberPagination` style globally, use the following configuration, modifying the `PAGE_SIZE` as desired:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'DEFAULT_PAGE_SIZE': 100
'PAGE_SIZE': 100
}
On `GenericAPIView` subclasses you may also set the `pagination_class` attribute to select `PageNumberPagination` on a per-view basis.
@ -94,7 +95,7 @@ The `PageNumberPagination` class includes a number of attributes that may be ove
To set these attributes you should override the `PageNumberPagination` class, and then enable your custom pagination class as above.
* `page_size` - A numeric value indicating the page size. If set, this overrides the `DEFAULT_PAGE_SIZE` setting. Defaults to the same value as the `DEFAULT_PAGE_SIZE` settings key.
* `page_size` - A numeric value indicating the page size. If set, this overrides the `PAGE_SIZE` setting. Defaults to the same value as the `PAGE_SIZE` settings key.
* `page_query_param` - A string value indicating the name of the query parameter to use for the pagination control.
* `page_size_query_param` - If set, this is a string value indicating the name of a query parameter that allows the client to set the page size on a per-request basis. Defaults to `None`, indicating that the client may not control the requested page size.
* `max_page_size` - If set, this is a numeric value indicating the maximum allowable requested page size. This attribute is only valid if `page_size_query_param` is also set.
@ -126,13 +127,13 @@ This pagination style mirrors the syntax used when looking up multiple database
#### Setup
To enable the `PageNumberPagination` style globally, use the following configuration:
To enable the `LimitOffsetPagination` style globally, use the following configuration:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination'
}
Optionally, you may also set a `DEFAULT_PAGE_SIZE` key. If the `DEFAULT_PAGE_SIZE` parameter is also used then the `limit` query parameter will be optional, and may be omitted by the client.
Optionally, you may also set a `PAGE_SIZE` key. If the `PAGE_SIZE` parameter is also used then the `limit` query parameter will be optional, and may be omitted by the client.
On `GenericAPIView` subclasses you may also set the `pagination_class` attribute to select `LimitOffsetPagination` on a per-view basis.
@ -142,7 +143,7 @@ The `LimitOffsetPagination` class includes a number of attributes that may be ov
To set these attributes you should override the `LimitOffsetPagination` class, and then enable your custom pagination class as above.
* `default_limit` - A numeric value indicating the limit to use if one is not provided by the client in a query parameter. Defaults to the same value as the `DEFAULT_PAGE_SIZE` settings key.
* `default_limit` - A numeric value indicating the limit to use if one is not provided by the client in a query parameter. Defaults to the same value as the `PAGE_SIZE` settings key.
* `limit_query_param` - A string value indicating the name of the "limit" query parameter. Defaults to `'limit'`.
* `offset_query_param` - A string value indicating the name of the "offset" query parameter. Defaults to `'offset'`.
* `max_limit` - If set this is a numeric value indicating the maximum allowable limit that may be requested by the client. Defaults to `None`.
@ -158,28 +159,33 @@ Cursor based pagination requires that there is a unique, unchanging ordering of
Cursor based pagination is more complex than other schemes. It also requires that the result set presents a fixed ordering, and does not allow the client to arbitrarily index into the result set. However it does provide the following benefits:
* Provides a consistent pagination view. When used properly `CursorPagination` ensures that the client will never see the same item twice when paging through records.
* Provides a consistent pagination view. When used properly `CursorPagination` ensures that the client will never see the same item twice when paging through records, even when new items are being inserted by other clients during the pagination process.
* Supports usage with very large datasets. With extremely large datasets pagination using offset-based pagination styles may become inefficient or unusable. Cursor based pagination schemes instead have fixed-time properties, and do not slow down as the dataset size increases.
#### Details and limitations
This implementation of cursor pagination uses a smart "position plus offset" style that allows it to properly support not-strictly-unique values as the ordering.
Proper use of cursor based pagination requires a little attention to detail. You'll need to think about what ordering you want the scheme to be applied against. The default is to order by `"-created"`. This assumes that **there must be a 'created' timestamp field** on the model instances, and will present a "timeline" style paginated view, with the most recently added items first.
It should be noted that using non-unique values the ordering does introduce the possibility of paging artifacts, where pagination consistency is no longer 100% guaranteed.
You can modify the ordering by overriding the `'ordering'` attribute on the pagination class, or by using the `OrderingFilter` filter class together with `CursorPagination`. When used with `OrderingFilter` you should strongly consider restricting the fields that the user may order by.
**TODO**: Notes on `None`.
Proper usage of cursor pagination should have an ordering field that satisfies the following:
The implementation also supports both forward and reverse pagination, which is often not supported in other implementations.
* Should be an unchanging value, such as a timestamp, slug, or other field that is only set once, on creation.
* Should be unique, or nearly unique. Millisecond precision timestamps are a good example. This implementation of cursor pagination uses a smart "position plus offset" style that allows it to properly support not-strictly-unique values as the ordering.
* Should be a non-nullable value that can be coerced to a string.
* The field should have a database index.
Using an ordering field that does not satisfy these constraints will generally still work, but you'll be loosing some of the benefits of cursor pagination.
For more technical details on the implementation we use for cursor pagination, the ["Building cursors for the Disqus API"][disqus-cursor-api] blog post gives a good overview of the basic approach.
#### Setup
To enable the `CursorPagination` style globally, use the following configuration, modifying the `DEFAULT_PAGE_SIZE` as desired:
To enable the `CursorPagination` style globally, use the following configuration, modifying the `PAGE_SIZE` as desired:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.CursorPagination',
'DEFAULT_PAGE_SIZE': 100
'PAGE_SIZE': 100
}
On `GenericAPIView` subclasses you may also set the `pagination_class` attribute to select `CursorPagination` on a per-view basis.
@ -190,9 +196,9 @@ The `CursorPagination` class includes a number of attributes that may be overrid
To set these attributes you should override the `CursorPagination` class, and then enable your custom pagination class as above.
* `page_size` = A numeric value indicating the page size. If set, this overrides the `DEFAULT_PAGE_SIZE` setting. Defaults to the same value as the `DEFAULT_PAGE_SIZE` settings key.
* `page_size` = A numeric value indicating the page size. If set, this overrides the `PAGE_SIZE` setting. Defaults to the same value as the `PAGE_SIZE` settings key.
* `cursor_query_param` = A string value indicating the name of the "cursor" query parameter. Defaults to `'cursor'`.
* `ordering` = This should be a string, or list of strings, indicating the field against which the cursor based pagination will be applied. For example: `ordering = 'created'`. Any filters on the view which define a `get_ordering` will override this attribute. Defaults to `None`.
* `ordering` = This should be a string, or list of strings, indicating the field against which the cursor based pagination will be applied. For example: `ordering = 'slug'`. Defaults to `-created`. This value may also be overridden by using `OrderingFilter` on the view.
* `template` = The name of a template to use when rendering pagination controls in the browsable API. May be overridden to modify the rendering style, or set to `None` to disable HTML pagination controls completely. Defaults to `"rest_framework/pagination/previous_and_next.html"`.
---
@ -208,11 +214,36 @@ Note that the `paginate_queryset` method may set state on the pagination instanc
## Example
Suppose we want to replace the default pagination output style with a modified format that includes the next and previous links under in a nested 'links' key. We could specify a custom pagination class like so:
class CustomPagination(pagination.PageNumberPagination):
def get_paginated_response(self, data):
return Response({
'links': {
'next': self.get_next_link(),
'previous': self.get_previous_link()
},
'count': self.page.paginator.count,
'results': data
})
We'd then need to setup the custom class in our configuration:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'my_project.apps.core.pagination.CustomPagination',
'PAGE_SIZE': 100
}
Note that if you care about how the ordering of keys is displayed in responses in the browsable API you might choose to use an `OrderedDict` when constructing the body of paginated responses, but this is optional.
## Header based pagination
Let's modify the built-in `PageNumberPagination` style, so that instead of include the pagination links in the body of the response, we'll instead include a `Link` header, in a [similar style to the GitHub API][github-link-pagination].
class LinkHeaderPagination(pagination.PageNumberPagination):
def get_paginated_response(self, data):
next_url = self.get_next_link() previous_url = self.get_previous_link()
next_url = self.get_next_link()
previous_url = self.get_previous_link()
if next_url is not None and previous_url is not None:
link = '<{next_url}; rel="next">, <{previous_url}; rel="prev">'
@ -234,7 +265,7 @@ To have your custom pagination class be used by default, use the `DEFAULT_PAGINA
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'my_project.apps.core.pagination.LinkHeaderPagination',
'DEFAULT_PAGE_SIZE': 10
'PAGE_SIZE': 100
}
API responses for list endpoints will now include a `Link` header, instead of including the pagination links as part of the body of the response, for example:

View File

@ -150,7 +150,7 @@ Similar to `DjangoModelPermissions`, but also allows unauthenticated users to ha
This permission class ties into Django's standard [object permissions framework][objectpermissions] that allows per-object permissions on models. In order to use this permission class, you'll also need to add a permission backend that supports object-level permissions, such as [django-guardian][guardian].
As with `DjangoModelPermissions`, this permission must only be applied to views that have a `.queryset` property. Authorization will only be granted if the user *is authenticated* and has the *relevant per-object permissions* and *relevant model permissions* assigned.
As with `DjangoModelPermissions`, this permission must only be applied to views that have a `.queryset` property or `.get_queryset()` method. Authorization will only be granted if the user *is authenticated* and has the *relevant per-object permissions* and *relevant model permissions* assigned.
* `POST` requests require the user to have the `add` permission on the model instance.
* `PUT` and `PATCH` requests require the user to have the `change` permission on the model instance.
@ -233,10 +233,6 @@ Also note that the generic views will only check the object-level permissions fo
The following third party packages are also available.
## DRF Any Permissions
The [DRF Any Permissions][drf-any-permissions] packages provides a different permission behavior in contrast to REST framework. Instead of all specified permissions being required, only one of the given permissions has to be true in order to get access to the view.
## Composed Permissions
The [Composed Permissions][composed-permissions] package provides a simple way to define complex and multi-depth (with logic operators) permission objects, using small and reusable components.

View File

@ -1,11 +1,5 @@
source: relations.py
---
**Note**: This is the documentation for the **version 3.0** of REST framework. Documentation for [version 2.4](http://tomchristie.github.io/rest-framework-2-docs/) is also available.
---
# Serializer relations
> Bad programmers worry about the code.
@ -52,7 +46,7 @@ In order to explain the various types of relational fields, we'll use a couple o
class Meta:
unique_together = ('album', 'order')
order_by = 'order'
ordering = ['order']
def __unicode__(self):
return '%d: %s' % (self.order, self.title)
@ -279,7 +273,7 @@ If you want to implement a read-write relational field, you must also implement
## Example
For, example, we could define a relational field, to serialize a track to a custom string representation, using its ordering, title, and duration.
For example, we could define a relational field to serialize a track to a custom string representation, using its ordering, title, and duration.
import time

View File

@ -110,7 +110,7 @@ An example of a view that uses `TemplateHTMLRenderer`:
class UserDetail(generics.RetrieveAPIView):
"""
A view that returns a templated HTML representations of a given user.
A view that returns a templated HTML representation of a given user.
"""
queryset = User.objects.all()
renderer_classes = (TemplateHTMLRenderer,)
@ -135,7 +135,7 @@ See also: `StaticHTMLRenderer`
A simple renderer that simply returns pre-rendered HTML. Unlike other renderers, the data passed to the response object should be a string representing the content to be returned.
An example of a view that uses `TemplateHTMLRenderer`:
An example of a view that uses `StaticHTMLRenderer`:
@api_view(('GET',))
@renderer_classes((StaticHTMLRenderer,))
@ -143,7 +143,7 @@ An example of a view that uses `TemplateHTMLRenderer`:
data = '<html><body><h1>Hello, world</h1></body></html>'
return Response(data)
You can use `TemplateHTMLRenderer` either to return regular HTML pages using REST framework, or to return both HTML and API responses from a single endpoint.
You can use `StaticHTMLRenderer` either to return regular HTML pages using REST framework, or to return both HTML and API responses from a single endpoint.
**.media_type**: `text/html`
@ -406,7 +406,7 @@ Modify your REST framework settings.
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework_yaml.renderers.JSONPRenderer',
'rest_framework_jsonp.renderers.JSONPRenderer',
),
}

View File

@ -1,11 +1,5 @@
source: request.py
---
**Note**: This is the documentation for the **version 3.0** of REST framework. Documentation for [version 2.4](http://tomchristie.github.io/rest-framework-2-docs/) is also available.
---
# Requests
> If you're doing REST-based web service stuff ... you should ignore request.POST.

View File

@ -290,14 +290,14 @@ The following third party packages are also available.
The [drf-nested-routers package][drf-nested-routers] provides routers and relationship fields for working with nested resources.
## wq.db
## ModelRouter (wq.db.rest)
The [wq.db package][wq.db] provides an advanced [Router][wq.db-router] class (and singleton instance) that extends `DefaultRouter` with a `register_model()` API. Much like Django's `admin.site.register`, the only required argument to `app.router.register_model` is a model class. Reasonable defaults for a url prefix and viewset will be inferred from the model and global configuration.
The [wq.db package][wq.db] provides an advanced [ModelRouter][wq.db-router] class (and singleton instance) that extends `DefaultRouter` with a `register_model()` API. Much like Django's `admin.site.register`, the only required argument to `rest.router.register_model` is a model class. Reasonable defaults for a url prefix, serializer, and viewset will be inferred from the model and global configuration.
from wq.db.rest import app
from wq.db import rest
from myapp.models import MyModel
app.router.register_model(MyModel)
rest.router.register_model(MyModel)
## DRF-extensions
@ -307,7 +307,7 @@ The [`DRF-extensions` package][drf-extensions] provides [routers][drf-extensions
[route-decorators]: viewsets.md#marking-extra-actions-for-routing
[drf-nested-routers]: https://github.com/alanjds/drf-nested-routers
[wq.db]: http://wq.io/wq.db
[wq.db-router]: http://wq.io/docs/app.py
[wq.db-router]: http://wq.io/docs/router
[drf-extensions]: http://chibisov.github.io/drf-extensions/docs/
[drf-extensions-routers]: http://chibisov.github.io/drf-extensions/docs/#routers
[drf-extensions-nested-viewsets]: http://chibisov.github.io/drf-extensions/docs/#nested-routes

View File

@ -1,11 +1,5 @@
source: serializers.py
---
**Note**: This is the documentation for the **version 3.0** of REST framework. Documentation for [version 2.4](http://tomchristie.github.io/rest-framework-2-docs/) is also available.
---
# Serializers
> Expanding the usefulness of the serializers is something that we would
@ -350,7 +344,7 @@ Here's an example for an `update()` method on our previous `UserSerializer` clas
return instance
Because the behavior of nested creates and updates can be ambiguous, and may require complex dependancies between related models, REST framework 3 requires you to always write these methods explicitly. The default `ModelSerializer` `.create()` and `.update()` methods do not include support for writable nested representations.
Because the behavior of nested creates and updates can be ambiguous, and may require complex dependencies between related models, REST framework 3 requires you to always write these methods explicitly. The default `ModelSerializer` `.create()` and `.update()` methods do not include support for writable nested representations.
It is possible that a third party package, providing automatic support some kinds of automatic writable nested representations may be released alongside the 3.1 release.
@ -484,7 +478,7 @@ The default `ModelSerializer` uses primary keys for relationships, but you can a
The `depth` option should be set to an integer value that indicates the depth of relationships that should be traversed before reverting to a flat representation.
If you want to customize the way the serialization is done (e.g. using `allow_add_remove`) you'll need to define the field yourself.
If you want to customize the way the serialization is done you'll need to define the field yourself.
## Specifying fields explicitly
@ -818,7 +812,7 @@ There are four methods that can be overridden, depending on what functionality y
* `.to_representation()` - Override this to support serialization, for read operations.
* `.to_internal_value()` - Override this to support deserialization, for write operations.
* `.create()` and `.update()` - Overide either or both of these to support saving instances.
* `.create()` and `.update()` - Override either or both of these to support saving instances.
Because this class provides the same interface as the `Serializer` class, you can use it with the existing generic class based views exactly as you would for a regular `Serializer` or `ModelSerializer`.

View File

@ -65,7 +65,7 @@ When testing views directly using a request factory, it's often convenient to be
To forcibly authenticate a request, use the `force_authenticate()` method.
from rest_framework.tests import force_authenticate
from rest_framework.test import force_authenticate
factory = APIRequestFactory()
user = User.objects.get(username='olivia')

View File

@ -1,11 +1,5 @@
source: validators.py
---
**Note**: This is the documentation for the **version 3.0** of REST framework. Documentation for [version 2.4](http://tomchristie.github.io/rest-framework-2-docs/) is also available.
---
# Validators
> Validators can be useful for re-using validation logic between different types of fields.
@ -178,7 +172,7 @@ REST framework includes a couple of defaults that may be useful in this context.
A default class that can be used to represent the current user. In order to use this, the 'request' must have been provided as part of the context dictionary when instantiating the serializer.
owner = serializers.HiddenField(
default=CurrentUserDefault()
default=serializers.CurrentUserDefault()
)
#### CreateOnlyDefault
@ -215,7 +209,7 @@ To write a class based validator, use the `__call__` method. Class based validat
self.base = base
def __call__(self, value):
if value % self.base != 0
if value % self.base != 0:
message = 'This field must be a multiple of %d.' % self.base
raise serializers.ValidationError(message)

View File

@ -31,6 +31,8 @@ How you vary the API behavior is up to you, but one example you might typically
The `reverse` function included by REST framework ties in with the versioning scheme. You need to make sure to include the current `request` as a keyword argument, like so.
from rest_framework.reverse import reverse
reverse('bookings-list', request=request)
The above function will apply any URL transformations appropriate to the request version. For example:
@ -103,7 +105,7 @@ Your client requests would now look like this:
Host: example.com
Accept: application/vnd.megacorp.bookings+json; version=1.0
## URLParameterVersioning
## URLPathVersioning
This scheme requires the client to specify the version as part of the URL path.

View File

@ -136,8 +136,13 @@ For example:
@list_route()
def recent_users(self, request):
recent_users = User.objects.all().order('-last_login')
page = self.paginate_queryset(recent_users)
serializer = self.get_pagination_serializer(page)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(recent_users, many=True)
return Response(serializer.data)
The decorators can additionally take extra arguments that will be set for the routed view only. For example...

View File

@ -9,9 +9,9 @@
---
**Note**: This is the documentation for the **version 3.0** of REST framework. Documentation for [version 2.4](http://tomchristie.github.io/rest-framework-2-docs/) is also available.
**Note**: This is the documentation for the **version 3.1** of REST framework. Documentation for [version 2.4](http://tomchristie.github.io/rest-framework-2-docs/) is also available.
For more details see the [3.0 release notes][3.0-announcement].
For more details see the [3.1 release notes][3.1-announcement].
---
@ -50,7 +50,7 @@ Some reasons you might want to use REST framework:
REST framework requires the following:
* Python (2.6.5+, 2.7, 3.2, 3.3, 3.4)
* Django (1.4.11+, 1.5.6+, 1.6.3+, 1.7, 1.8-beta)
* Django (1.4.11+, 1.5.6+, 1.6.3+, 1.7+, 1.8)
The following packages are optional:

View File

@ -17,6 +17,15 @@ Some highlights include:
The pagination API has been improved, making it both easier to use, and more powerful.
A guide to the headline features follows. For full details, see [the pagination documentation][pagination].
Note that as a result of this work a number of settings keys and generic view attributes are now moved to pending deprecation. Controlling pagination styles is now largely handled by overriding a pagination class and modifying its configuration attributes.
* The `PAGINATE_BY` settings key will continue to work but is now pending deprecation. The more obviously named `PAGE_SIZE` settings key should now be used instead.
* The `PAGINATE_BY_PARAM`, `MAX_PAGINATE_BY` settings keys will continue to work but are now pending deprecation, in favor of setting configuration attributes on the configured pagination class.
* The `paginate_by`, `page_query_param`, `paginate_by_param` and `max_paginate_by` generic view attributes will continue to work but are now pending deprecation, in favor of setting configuration attributes on the configured pagination class.
* The `pagination_serializer_class` view attribute and `DEFAULT_PAGINATION_SERIALIZER_CLASS` settings key **are no longer valid**. The pagination API does not use serializers to determine the output format, and you'll need to instead override the `get_paginated_response` method on a pagination class in order to specify how the output format is controlled.
#### New pagination schemes.
Until now, there has only been a single built-in pagination style in REST framework. We now have page, limit/offset and cursor based schemes included by default.
@ -43,7 +52,7 @@ For more information, see the [custom pagination styles](../api-guide/pagination
## Versioning
We've made it easier to build versioned APIs. Built-in schemes for versioning include both URL based and Accept header based variations.
We've made it [easier to build versioned APIs][versioning]. Built-in schemes for versioning include both URL based and Accept header based variations.
When using a URL based scheme, hyperlinked serializers will resolve relationships to the same API version as used on the incoming request.
@ -71,7 +80,7 @@ The output representation would match the version used on the incoming request.
## Internationalization
REST framework now includes a built-in set of translations, and supports internationalized error responses. This allows you to either change the default language, or to allow clients to specify the language via the `Accept-Language` header.
REST framework now includes a built-in set of translations, and [supports internationalized error responses][internationalization]. This allows you to either change the default language, or to allow clients to specify the language via the `Accept-Language` header.
You can change the default language by using the standard Django `LANGUAGE_CODE` setting:
@ -136,7 +145,7 @@ If you're building a new 1.8 project, then you should probably consider using `U
The serializer redesign in 3.0 did not include any public API for modifying how ModelSerializer classes automatically generate a set of fields from a given mode class. We've now re-introduced an API for this, allowing you to create new ModelSerializer base classes that behave differently, such as using a different default style for relationships.
For more information, see the documentation on [customizing field mappings](../api-guide/serializers/#customizing-field-mappings) for ModelSerializer classes.
For more information, see the documentation on [customizing field mappings][customizing-field-mappings] for ModelSerializer classes.
---
@ -194,3 +203,7 @@ The next focus will be on HTML renderings of API output and will include:
This will either be made as a single 3.2 release, or split across two separate releases, with the HTML forms and filter controls coming in 3.2, and the admin-style interface coming in a 3.3 release.
[custom-exception-handler]: ../api-guide/exceptions.md#custom-exception-handling
[pagination]: ../api-guide/pagination.md
[versioning]: ../api-guide/versioning.md
[internationalization]: internationalization.md
[customizing-field-mappings]: ../api-guide/serializers.md#customizing-field-mappings

View File

@ -97,9 +97,15 @@ The following template should be used for the description of the issue, and serv
Release manager is @***.
Pull request is #***.
During development cycle:
- [ ] Upload the new content to be translated to [transifex](http://www.django-rest-framework.org/topics/project-management/#translations).
Checklist:
- [ ] Create pull request for [release notes](https://github.com/tomchristie/django-rest-framework/blob/master/docs/topics/release-notes.md) based on the [*.*.* milestone](https://github.com/tomchristie/django-rest-framework/milestones/***).
- [ ] Update the translations from [transifex](http://www.django-rest-framework.org/topics/project-management/#translations).
- [ ] Ensure the pull request increments the version to `*.*.*` in [`restframework/__init__.py`](https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/__init__.py).
- [ ] Confirm with @tomchristie that release is finalized and ready to go.
- [ ] Ensure that release date is included in pull request.

View File

@ -38,8 +38,55 @@ You can determine your currently installed version using `pip freeze`:
---
## 3.0.x series
## 3.1.x series
### 3.1.2
**Date**: [13rd May 2015][3.1.2-milestone].
* `DateField.to_representation` can handle str and empty values. ([#2656][gh2656], [#2687][gh2687], [#2869][gh2869])
* Use default reason phrases from HTTP standard. ([#2764][gh2764], [#2763][gh2763])
* Raise error when `ModelSerializer` used with abstract model. ([#2757][gh2757], [#2630][gh2630])
* Handle reversal of non-API view_name in `HyperLinkedRelatedField` ([#2724][gh2724], [#2711][gh2711])
* Dont require pk strictly for related fields. ([#2745][gh2745], [#2754][gh2754])
* Metadata detects null boolean field type. ([#2762][gh2762])
* Proper handling of depth in nested serializers. ([#2798][gh2798])
* Display viewset without paginator. ([#2807][gh2807])
* Don't check for deprecated `.model` attribute in permissions ([#2818][gh2818])
* Restrict integer field to integers and strings. ([#2835][gh2835], [#2836][gh2836])
* Improve `IntegerField` to use compiled decimal regex. ([#2853][gh2853])
* Prevent empty `queryset` to raise AssertionError. ([#2862][gh2862])
* `DjangoModelPermissions` rely on `get_queryset`. ([#2863][gh2863])
* Check `AcceptHeaderVersioning` with content negotiation in place. ([#2868][gh2868])
* Allow `DjangoObjectPermissions` to use views that define `get_queryset`. ([#2905][gh2905])
### 3.1.1
**Date**: [23rd March 2015][3.1.1-milestone].
* **Security fix**: Escape tab switching cookie name in browsable API.
* Display input forms in browsable API if `serializer_class` is used, even when `get_serializer` method does not exist on the view. ([#2743][gh2743])
* Use a password input for the AuthTokenSerializer. ([#2741][gh2741])
* Fix missing anchor closing tag after next button. ([#2691][gh2691])
* Fix `lookup_url_kwarg` handling in viewsets. ([#2685][gh2685], [#2591][gh2591])
* Fix problem with importing `rest_framework.views` in `apps.py` ([#2678][gh2678])
* LimitOffsetPagination raises `TypeError` if PAGE_SIZE not set ([#2667][gh2667], [#2700][gh2700])
* German translation for `min_value` field error message references `max_value`. ([#2645][gh2645])
* Remove `MergeDict`. ([#2640][gh2640])
* Support serializing unsaved models with related fields. ([#2637][gh2637], [#2641][gh2641])
* Allow blank/null on radio.html choices. ([#2631][gh2631])
### 3.1.0
**Date**: [5th March 2015][3.1.0-milestone].
For full details see the [3.1 release announcement](3.1-announcement.md).
---
## 3.0.x series
### 3.0.5
@ -137,7 +184,7 @@ For full details see the [3.0 release announcement](3.0-announcement.md).
---
For older release notes, [please see the version 2.x documentation](old-release-notes).
For older release notes, [please see the version 2.x documentation][old-release-notes].
[cite]: http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html
[deprecation-policy]: #deprecation-policy
@ -149,13 +196,16 @@ For older release notes, [please see the version 2.x documentation](old-release-
[2.1.0-notes]: https://groups.google.com/d/topic/django-rest-framework/Vv2M0CMY9bg/discussion
[ticket-582]: https://github.com/tomchristie/django-rest-framework/issues/582
[rfc-6266]: http://tools.ietf.org/html/rfc6266#section-4.3
[old-release-notes]: http://tomchristie.github.io/rest-framework-2-docs/topics/release-notes#24x-series
[old-release-notes]: https://github.com/tomchristie/django-rest-framework/blob/version-2.4.x/docs/topics/release-notes.md
[3.0.1-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.0.1+Release%22
[3.0.2-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.0.2+Release%22
[3.0.3-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.0.3+Release%22
[3.0.4-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.0.4+Release%22
[3.0.5-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.0.5+Release%22
[3.1.0-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.1.0+Release%22
[3.1.1-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.1.1+Release%22
[3.1.2-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.1.2+Release%22
<!-- 3.0.1 -->
[gh2013]: https://github.com/tomchristie/django-rest-framework/issues/2013
@ -254,3 +304,40 @@ For older release notes, [please see the version 2.x documentation](old-release-
[gh2519]: https://github.com/tomchristie/django-rest-framework/issues/2519
[gh2524]: https://github.com/tomchristie/django-rest-framework/issues/2524
[gh2530]: https://github.com/tomchristie/django-rest-framework/issues/2530
<!-- 3.1.1 -->
[gh2691]: https://github.com/tomchristie/django-rest-framework/issues/2691
[gh2685]: https://github.com/tomchristie/django-rest-framework/issues/2685
[gh2591]: https://github.com/tomchristie/django-rest-framework/issues/2591
[gh2678]: https://github.com/tomchristie/django-rest-framework/issues/2678
[gh2667]: https://github.com/tomchristie/django-rest-framework/issues/2667
[gh2700]: https://github.com/tomchristie/django-rest-framework/issues/2700
[gh2645]: https://github.com/tomchristie/django-rest-framework/issues/2645
[gh2640]: https://github.com/tomchristie/django-rest-framework/issues/2640
[gh2637]: https://github.com/tomchristie/django-rest-framework/issues/2637
[gh2641]: https://github.com/tomchristie/django-rest-framework/issues/2641
[gh2631]: https://github.com/tomchristie/django-rest-framework/issues/2631
[gh2741]: https://github.com/tomchristie/django-rest-framework/issues/2641
[gh2743]: https://github.com/tomchristie/django-rest-framework/issues/2643
<!-- 3.1.2 -->
[gh2656]: https://github.com/tomchristie/django-rest-framework/issues/2656
[gh2687]: https://github.com/tomchristie/django-rest-framework/issues/2687
[gh2869]: https://github.com/tomchristie/django-rest-framework/issues/2869
[gh2764]: https://github.com/tomchristie/django-rest-framework/issues/2764
[gh2763]: https://github.com/tomchristie/django-rest-framework/issues/2763
[gh2757]: https://github.com/tomchristie/django-rest-framework/issues/2757
[gh2630]: https://github.com/tomchristie/django-rest-framework/issues/2630
[gh2724]: https://github.com/tomchristie/django-rest-framework/issues/2724
[gh2711]: https://github.com/tomchristie/django-rest-framework/issues/2711
[gh2745]: https://github.com/tomchristie/django-rest-framework/issues/2745
[gh2754]: https://github.com/tomchristie/django-rest-framework/issues/2754
[gh2762]: https://github.com/tomchristie/django-rest-framework/issues/2762
[gh2798]: https://github.com/tomchristie/django-rest-framework/issues/2798
[gh2807]: https://github.com/tomchristie/django-rest-framework/issues/2807
[gh2818]: https://github.com/tomchristie/django-rest-framework/issues/2818
[gh2835]: https://github.com/tomchristie/django-rest-framework/issues/2835
[gh2836]: https://github.com/tomchristie/django-rest-framework/issues/2836
[gh2853]: https://github.com/tomchristie/django-rest-framework/issues/2853
[gh2862]: https://github.com/tomchristie/django-rest-framework/issues/2862
[gh2863]: https://github.com/tomchristie/django-rest-framework/issues/2863
[gh2868]: https://github.com/tomchristie/django-rest-framework/issues/2868
[gh2905]: https://github.com/tomchristie/django-rest-framework/issues/2905

View File

@ -206,6 +206,7 @@ To submit new content, [open an issue][drf-create-issue] or [create a pull reque
* [drf-compound-fields][drf-compound-fields] - Provides "compound" serializer fields, such as lists of simple values.
* [django-extra-fields][django-extra-fields] - Provides extra serializer fields.
* [django-versatileimagefield][django-versatileimagefield] - Provides a drop-in replacement for Django's stock `ImageField` that makes it easy to serve images in multiple sizes/renditions from a single field. For DRF-specific implementation docs, [click here][django-versatileimagefield-drf-docs].
### Views
@ -239,6 +240,8 @@ To submit new content, [open an issue][drf-create-issue] or [create a pull reque
* [gaiarestframework][gaiarestframework] - Utils for django-rest-framewok
* [drf-extensions][drf-extensions] - A collection of custom extensions
* [ember-django-adapter][ember-django-adapter] - An adapter for working with Ember.js
* [django-versatileimagefield][django-versatileimagefield] - Provides a drop-in replacement for Django's stock `ImageField` that makes it easy to serve images in multiple sizes/renditions from a single field. For DRF-specific implementation docs, [click here][django-versatileimagefield-drf-docs].
* [drf-tracking][drf-tracking] - Utilities to track requests to DRF API views.
## Other Resources
@ -265,6 +268,9 @@ To submit new content, [open an issue][drf-create-issue] or [create a pull reque
* [Web API performance: profiling Django REST framework][web-api-performance-profiling-django-rest-framework]
* [API Development with Django and Django REST Framework][api-development-with-django-and-django-rest-framework]
### Documentations
* [Classy Django REST Framework][cdrf.co]
[cite]: http://www.software-ecosystems.com/Software_Ecosystems/Ecosystems.html
[cookiecutter]: https://github.com/jpadilla/cookiecutter-django-rest-framework
[new-repo]: https://github.com/new
@ -326,3 +332,7 @@ To submit new content, [open an issue][drf-create-issue] or [create a pull reque
[web-api-performance-profiling-django-rest-framework]: http://dabapps.com/blog/api-performance-profiling-django-rest-framework/
[api-development-with-django-and-django-rest-framework]: https://bnotions.com/api-development-with-django-and-django-rest-framework/
[django-rest-auth]: https://github.com/Tivix/django-rest-auth/
[django-versatileimagefield]: https://github.com/WGBH/django-versatileimagefield
[django-versatileimagefield-drf-docs]:http://django-versatileimagefield.readthedocs.org/en/latest/drf_integration.html
[cdrf.co]:http://www.cdrf.co
[drf-tracking]: https://github.com/aschn/drf-tracking

View File

@ -28,11 +28,11 @@ Some example output from our serializer.
{
'title': 'Leaving party preperations',
'items': {
'items': [
{'text': 'Compile playlist', 'is_completed': True},
{'text': 'Send invites', 'is_completed': False},
{'text': 'Clean house', 'is_completed': False}
}
]
}
Let's take a look at updating our nested one-to-many data structure.

View File

@ -124,7 +124,7 @@ The first part of the serializer class defines the fields that get serialized/de
A serializer class is very similar to a Django `Form` class, and includes similar validation flags on the various fields, such as `required`, `max_length` and `default`.
The field flags can also control how the serializer should be displayed in certain circumstances, such as when rendering to HTML. The `{'base_template': 'textarea.html'}` flag above is equivelent to using `widget=widgets.Textarea` on a Django `Form` class. This is particularly useful for controlling how the browsable API should be displayed, as we'll see later in the tutorial.
The field flags can also control how the serializer should be displayed in certain circumstances, such as when rendering to HTML. The `{'base_template': 'textarea.html'}` flag above is equivalent to using `widget=widgets.Textarea` on a Django `Form` class. This is particularly useful for controlling how the browsable API should be displayed, as we'll see later in the tutorial.
We can actually also save ourselves some time by using the `ModelSerializer` class, as we'll see later, but for now we'll keep our serializer definition explicit.

View File

@ -200,7 +200,7 @@ See the [browsable api][browsable-api] topic for more information about the brow
In [tutorial part 3][tut-3], we'll start using class based views, and see how generic views reduce the amount of code we need to write.
[json-url]: http://example.com/api/items/4.json
[json-url]: http://example.com/api/items/4/.json
[devserver]: http://127.0.0.1:8000/snippets/
[browsable-api]: ../topics/browsable-api.md
[tut-1]: 1-serialization.md

View File

@ -18,7 +18,7 @@ Right now we have endpoints for 'snippets' and 'users', but we don't have a sing
'snippets': reverse('snippet-list', request=request, format=format)
})
Notice that we're using REST framework's `reverse` function in order to return fully-qualified URLs.
Two things should be noticed here. First, we're using REST framework's `reverse` function in order to return fully-qualified URLs; second, URL patterns are identified by convenience names that we will declare later on in our `snippets/urls.py`.
## Creating an endpoint for the highlighted snippets
@ -104,9 +104,11 @@ If we're going to have a hyperlinked API, we need to make sure we name our URL p
* Our user serializer includes a field that refers to `'snippet-detail'`.
* Our snippet and user serializers include `'url'` fields that by default will refer to `'{model_name}-detail'`, which in this case will be `'snippet-detail'` and `'user-detail'`.
After adding all those names into our URLconf, our final `snippets/urls.py` file should look something like this:
After adding all those names into our URLconf, our final `snippets/urls.py` file should look like this:
from django.conf.urls import url, include
from rest_framework.urlpatterns import format_suffix_patterns
from snippets import views
# API endpoints
urlpatterns = format_suffix_patterns([
@ -141,7 +143,7 @@ The list views for users and code snippets could end up returning quite a lot of
We can change the default list style to use pagination, by modifying our `tutorial/settings.py` file slightly. Add the following setting:
REST_FRAMEWORK = {
'PAGINATE_BY': 10
'PAGE_SIZE': 10
}
Note that settings in REST framework are all namespaced into a single dictionary setting, named 'REST_FRAMEWORK', which helps keep them well separated from your other project settings.

View File

@ -83,8 +83,6 @@ Rather than write multiple views we're grouping together all the common behavior
We can easily break these down into individual views if we need to, but using viewsets keeps the view logic nicely organized as well as being very concise.
Notice that our viewset classes here are a little different from those in the [frontpage example][readme-example-api], as they include `queryset` and `serializer_class` attributes, instead of a `model` attribute.
For trivial cases you can simply set a `model` attribute on the `ViewSet` class and the serializer and queryset will be automatically generated for you. Setting the `queryset` and/or `serializer_class` attributes gives you more explicit control of the API behaviour, and is the recommended style for most applications.
## URLs
@ -123,7 +121,7 @@ We'd also like to set a few global settings. We'd like to turn on pagination, a
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),
'PAGINATE_BY': 10
'PAGE_SIZE': 10
}
Okay, we're done.

View File

@ -1,216 +1,9 @@
<!DOCTYPE html>
<html lang="en">
{% extends "base.html" %}
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<title>Django REST framework - 404 - Page not found</title>
<link href="http://www.django-rest-framework.org/img/favicon.ico" rel="icon" type="image/x-icon">
<link rel="canonical" href="http://www.django-rest-framework.org/404" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Django, API, REST, 404 - Page not found">
<meta name="author" content="Tom Christie">
{% block content %}
<!-- Le styles -->
<link href="http://www.django-rest-framework.org/css/prettify.css" rel="stylesheet">
<link href="http://www.django-rest-framework.org/css/bootstrap.css" rel="stylesheet">
<link href="http://www.django-rest-framework.org/css/bootstrap-responsive.css" rel="stylesheet">
<link href="http://www.django-rest-framework.org/css/default.css" rel="stylesheet">
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-18852272-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript';
ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body onload="prettyPrint()" class="404-page">
<div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<a class="repo-link btn btn-primary btn-small" href="https://github.com/tomchristie/django-rest-framework/tree/master">GitHub</a>
<a class="repo-link btn btn-inverse btn-small disabled" href="#">Next <i class="icon-arrow-right icon-white"></i></a>
<a class="repo-link btn btn-inverse btn-small disabled" href="#"><i class="icon-arrow-left icon-white"></i> Previous</a>
<a class="repo-link btn btn-inverse btn-small" href="#searchModal" data-toggle="modal"><i class="icon-search icon-white"></i> Search</a>
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="http://www.django-rest-framework.org">Django REST framework</a>
<div class="nav-collapse collapse">
<ul class="nav">
<li><a href="http://www.django-rest-framework.org">Home</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Tutorial <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="http://www.django-rest-framework.org/tutorial/quickstart">Quickstart</a></li>
<li><a href="http://www.django-rest-framework.org/tutorial/1-serialization">1 - Serialization</a></li>
<li><a href="http://www.django-rest-framework.org/tutorial/2-requests-and-responses">2 - Requests and responses</a></li>
<li><a href="http://www.django-rest-framework.org/tutorial/3-class-based-views">3 - Class based views</a></li>
<li><a href="http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions">4 - Authentication and permissions</a></li>
<li><a href="http://www.django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis">5 - Relationships and hyperlinked APIs</a></li>
<li><a href="http://www.django-rest-framework.org/tutorial/6-viewsets-and-routers">6 - Viewsets and routers</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">API Guide <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="http://www.django-rest-framework.org/api-guide/requests">Requests</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/responses">Responses</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/views">Views</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/generic-views">Generic views</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/viewsets">Viewsets</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/routers">Routers</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/parsers">Parsers</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/renderers">Renderers</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/serializers">Serializers</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/fields">Serializer fields</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/relations">Serializer relations</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/authentication">Authentication</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/permissions">Permissions</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/throttling">Throttling</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/filtering">Filtering</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/pagination">Pagination</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/content-negotiation">Content negotiation</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/format-suffixes">Format suffixes</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/reverse">Returning URLs</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/exceptions">Exceptions</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/status-codes">Status codes</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/testing">Testing</a></li>
<li><a href="http://www.django-rest-framework.org/api-guide/settings">Settings</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Topics <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="http://www.django-rest-framework.org/topics/documenting-your-api">Documenting your API</a></li>
<li><a href="http://www.django-rest-framework.org/topics/ajax-csrf-cors">AJAX, CSRF & CORS</a></li>
<li><a href="http://www.django-rest-framework.org/topics/browser-enhancements">Browser enhancements</a></li>
<li><a href="http://www.django-rest-framework.org/topics/browsable-api">The Browsable API</a></li>
<li><a href="http://www.django-rest-framework.org/topics/rest-hypermedia-hateoas">REST, Hypermedia & HATEOAS</a></li>
<li><a href="http://www.django-rest-framework.org/topics/rest-framework-2-announcement">2.0 Announcement</a></li>
<li><a href="http://www.django-rest-framework.org/topics/2.2-announcement">2.2 Announcement</a></li>
<li><a href="http://www.django-rest-framework.org/topics/2.3-announcement">2.3 Announcement</a></li>
<li><a href="http://www.django-rest-framework.org/topics/release-notes">Release Notes</a></li>
<li><a href="http://www.django-rest-framework.org/topics/credits">Credits</a></li>
</ul>
</li>
</ul>
<ul class="nav pull-right">
<!-- TODO
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Version: 2.0.0 <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">Trunk</a></li>
<li><a href="#">2.0.0</a></li>
</ul>
</li>
-->
</ul>
</div>
<!--/.nav-collapse -->
</div>
</div>
</div>
<div class="body-content">
<div class="container-fluid">
<!-- Search Modal -->
<div id="searchModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3 id="myModalLabel">Documentation search</h3>
</div>
<div class="modal-body">
<!-- Custom google search -->
<script>
(function() {
var cx = '015016005043623903336:rxraeohqk6w';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:search></gcse:search>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
</div>
<div class="row-fluid">
<div id="main-content" class="span12">
<h1 id="404-page-not-found" style="text-align: center">404</h1>
<p style="text-align: center"><strong>Page not found</strong>
</p>
<p style="text-align: center"><strong>Page not found</strong></p>
<p style="text-align: center">Try the <a href="http://www.django-rest-framework.org/">homepage</a>, or <a href="#searchModal" data-toggle="modal">search the documentation</a>.</p>
</div>
<!--/span-->
</div>
<!--/row-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div>
</div>
<!--/.wrapper -->
<footer class="span12">
<p>Sponsored by <a href="http://dabapps.com/">DabApps</a>.</a>
</p>
</footer>
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="http://www.django-rest-framework.org/js/jquery-1.8.1-min.js"></script>
<script src="http://www.django-rest-framework.org/js/prettify-1.0.js"></script>
<script src="http://www.django-rest-framework.org/js/bootstrap-2.1.1-min.js"></script>
<script>
//$('.side-nav').scrollspy()
var shiftWindow = function() {
scrollBy(0, -50)
};
if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow);
$('.dropdown-menu').on('click touchstart', function(event) {
event.stopPropagation();
});
// Dynamically force sidenav to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130);
$(function() {
$(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130);
});
});
</script>
</body>
</html>
{% endblock %}

View File

@ -4,11 +4,11 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<title>{{ page_title }}</title>
<title>{% if page_title %}{{ page_title }} - {% endif %}{{ site_name }}</title>
<link href="{{ base_url }}/img/favicon.ico" rel="icon" type="image/x-icon">
<link rel="canonical" href="{{ canonical_url }}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Django, API, REST, {{ current_page.title }}">
<meta name="description" content="Django, API, REST{% if current_page %}, {{ current_page.title }}{% endif %}">
<meta name="author" content="Tom Christie">
<!-- Le styles -->
@ -54,7 +54,7 @@
}
</style>
</head>
<body onload="prettyPrint()" class="{% if current_page.is_homepage %}index{% endif %}-page">
<body onload="prettyPrint()" class="{% if current_page and current_page.is_homepage %}index{% endif %}-page">
<div class="wrapper">
@ -64,27 +64,19 @@
<div class="container-fluid">
<!-- Search Modal -->
<div id="searchModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3 id="myModalLabel">Documentation search</h3>
</div>
<div class="modal-body">
<!-- Custom google search -->
<script>
(function() {
var cx = '015016005043623903336:rxraeohqk6w';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:search></gcse:search>
<form role="form">
<div class="form-group">
<input type="text" name="q" class="form-control" placeholder="Search..." id="mkdocs-search-query">
</div>
</form>
<div id="mkdocs-search-results"></div>
</div>
<div class="modal-footer">
@ -104,7 +96,7 @@
<div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed">
{% if current_page.is_homepage %}
{% if current_page and current_page.is_homepage %}
<li class="main">
<a href="#">Django REST framework</a>
</li>
@ -112,7 +104,7 @@
{% for toc_item in toc %}
<li class="{% if not current_page.is_homepage %}main{% endif %}">
<li class="{% if current_page and not current_page.is_homepage %}main{% endif %}">
<a href="{{ toc_item.url }}">{{ toc_item.title }}</a>
</li>
@ -124,7 +116,7 @@
{% endfor %}
{% if current_page.is_homepage %}
{% if current_page and current_page.is_homepage %}
<div class="promo">
<hr/>
<script type="text/javascript" src="//cdn.fusionads.net/fusion.js?zoneid=1332&serve=C6SDP2Y&placement=djangorestframework" id="_fusionads_js"></script>
@ -137,6 +129,9 @@
</div>
<div id="main-content" class="span9">
{% block content %}
{% if meta.source %}
{% for filename in meta.source %}
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/{{ filename }}">
@ -146,6 +141,9 @@
{% endif %}
{{ content }}
{% endblock %}
</div>
<!--/span-->
</div>
@ -169,6 +167,8 @@
<script src="{{ base_url }}/js/jquery-1.8.1-min.js"></script>
<script src="{{ base_url }}/js/prettify-1.0.js"></script>
<script src="{{ base_url }}/js/bootstrap-2.1.1-min.js"></script>
<script>var base_url = '{{ base_url }}';</script>
<script src="{{ base_url }}/mkdocs/js/require.js"></script>
<script src="{{ base_url }}/js/theme.js"></script>
<script>

View File

@ -415,3 +415,7 @@ ul.sponsor {
list-style: none;
display: block;
}
#mkdocs_search_modal article p{
word-wrap: break-word;
}

View File

@ -1,5 +1,35 @@
$(function(){
function getSearchTerm()
{
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++)
{
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == 'q')
{
return sParameterName[1];
}
}
}
$(function() {
var initialise_search = function(){
require.config({"baseUrl":"/mkdocs/js"});
require(["search",]);
}
var search_term = getSearchTerm();
if(search_term){
$('#mkdocs_search_modal').modal();
}
$('pre code').parent().addClass('prettyprint well');
$(document).on("submit", "#mkdocs_search_modal form", function (e) {
$("#mkdocs-search-results").html("Searching...");
initialise_search();
return false;
});
});

View File

@ -8,7 +8,7 @@
<a class="repo-link btn btn-inverse btn-small {% if not previous_page %}disabled{% endif %}" rel="next" {% if previous_page %}href="{{ previous_page.url }}"{% endif %}>
<i class="icon-arrow-left icon-white"></i> Previous
</a>
<a class="repo-link btn btn-inverse btn-small" href="#searchModal" data-toggle="modal"><i class="icon-search icon-white"></i> Search</a>
<a id="search_modal_show" class="repo-link btn btn-inverse btn-small" href="#mkdocs_search_modal" data-toggle="modal" data-target="#mkdocs_search_modal"><i class="icon-search icon-white"></i> Search</a>
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
@ -19,7 +19,6 @@
{% if include_nav %}
<!-- Main navigation -->
<ul class="nav navbar-nav">
<li {% if current_page.is_homepage %}class="active"{% endif %}><a href="/">Home</a></li>
{% for nav_item in nav %} {% if nav_item.children %}
<li class="dropdown{% if nav_item.active %} active{% endif %}">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{{ nav_item.title }} <b class="caret"></b></a>

View File

@ -7,50 +7,53 @@ repo_url: https://github.com/tomchristie/django-rest-framework
theme_dir: docs_theme
pages:
- ['index.md', 'Home']
- ['tutorial/quickstart.md', 'Tutorial', 'Quickstart']
- ['tutorial/1-serialization.md', 'Tutorial', '1 - Serialization']
- ['tutorial/2-requests-and-responses.md', 'Tutorial', '2 - Requests and responses']
- ['tutorial/3-class-based-views.md', 'Tutorial', '3 - Class based views']
- ['tutorial/4-authentication-and-permissions.md', 'Tutorial', '4 - Authentication and permissions']
- ['tutorial/5-relationships-and-hyperlinked-apis.md', 'Tutorial', '5 - Relationships and hyperlinked APIs']
- ['tutorial/6-viewsets-and-routers.md', 'Tutorial', '6 - Viewsets and routers']
- ['api-guide/requests.md', 'API Guide', 'Requests']
- ['api-guide/responses.md', 'API Guide', 'Responses']
- ['api-guide/views.md', 'API Guide', 'Views']
- ['api-guide/generic-views.md', 'API Guide', 'Generic views']
- ['api-guide/viewsets.md', 'API Guide', 'Viewsets']
- ['api-guide/routers.md', 'API Guide', 'Routers']
- ['api-guide/parsers.md', 'API Guide', 'Parsers']
- ['api-guide/renderers.md', 'API Guide', 'Renderers']
- ['api-guide/serializers.md', 'API Guide', 'Serializers']
- ['api-guide/fields.md', 'API Guide', 'Serializer fields']
- ['api-guide/relations.md', 'API Guide', 'Serializer relations']
- ['api-guide/validators.md', 'API Guide', 'Validators']
- ['api-guide/authentication.md', 'API Guide', 'Authentication']
- ['api-guide/permissions.md', 'API Guide', 'Permissions']
- ['api-guide/throttling.md', 'API Guide', 'Throttling']
- ['api-guide/filtering.md', 'API Guide', 'Filtering']
- ['api-guide/pagination.md', 'API Guide', 'Pagination']
- ['api-guide/versioning.md', 'API Guide', 'Versioning']
- ['api-guide/content-negotiation.md', 'API Guide', 'Content negotiation']
- ['api-guide/metadata.md', 'API Guide', 'Metadata']
- ['api-guide/format-suffixes.md', 'API Guide', 'Format suffixes']
- ['api-guide/reverse.md', 'API Guide', 'Returning URLs']
- ['api-guide/exceptions.md', 'API Guide', 'Exceptions']
- ['api-guide/status-codes.md', 'API Guide', 'Status codes']
- ['api-guide/testing.md', 'API Guide', 'Testing']
- ['api-guide/settings.md', 'API Guide', 'Settings']
- ['topics/documenting-your-api.md', 'Topics', 'Documenting your API']
- ['topics/internationalization.md', 'Topics', 'Internationalization']
- ['topics/ajax-csrf-cors.md', 'Topics', 'AJAX, CSRF & CORS']
- ['topics/browser-enhancements.md', 'Topics',]
- ['topics/browsable-api.md', 'Topics', 'The Browsable API']
- ['topics/rest-hypermedia-hateoas.md', 'Topics', 'REST, Hypermedia & HATEOAS']
- ['topics/third-party-resources.md', 'Topics', 'Third Party Resources']
- ['topics/contributing.md', 'Topics', 'Contributing to REST framework']
- ['topics/project-management.md', 'Topics', 'Project management']
- ['topics/3.0-announcement.md', 'Topics', '3.0 Announcement']
- ['topics/3.1-announcement.md', 'Topics', '3.1 Announcement']
- ['topics/kickstarter-announcement.md', 'Topics', 'Kickstarter Announcement']
- ['topics/release-notes.md', 'Topics', 'Release Notes']
- Home: 'index.md'
- Tutorial:
- 'Quickstart': 'tutorial/quickstart.md'
- '1 - Serialization': 'tutorial/1-serialization.md'
- '2 - Requests and responses': 'tutorial/2-requests-and-responses.md'
- '3 - Class based views': 'tutorial/3-class-based-views.md'
- '4 - Authentication and permissions': 'tutorial/4-authentication-and-permissions.md'
- '5 - Relationships and hyperlinked APIs': 'tutorial/5-relationships-and-hyperlinked-apis.md'
- '6 - Viewsets and routers': 'tutorial/6-viewsets-and-routers.md'
- API Guide:
- 'Requests': 'api-guide/requests.md'
- 'Responses': 'api-guide/responses.md'
- 'Views': 'api-guide/views.md'
- 'Generic views': 'api-guide/generic-views.md'
- 'Viewsets': 'api-guide/viewsets.md'
- 'Routers': 'api-guide/routers.md'
- 'Parsers': 'api-guide/parsers.md'
- 'Renderers': 'api-guide/renderers.md'
- 'Serializers': 'api-guide/serializers.md'
- 'Serializer fields': 'api-guide/fields.md'
- 'Serializer relations': 'api-guide/relations.md'
- 'Validators': 'api-guide/validators.md'
- 'Authentication': 'api-guide/authentication.md'
- 'Permissions': 'api-guide/permissions.md'
- 'Throttling': 'api-guide/throttling.md'
- 'Filtering': 'api-guide/filtering.md'
- 'Pagination': 'api-guide/pagination.md'
- 'Versioning': 'api-guide/versioning.md'
- 'Content negotiation': 'api-guide/content-negotiation.md'
- 'Metadata': 'api-guide/metadata.md'
- 'Format suffixes': 'api-guide/format-suffixes.md'
- 'Returning URLs': 'api-guide/reverse.md'
- 'Exceptions': 'api-guide/exceptions.md'
- 'Status codes': 'api-guide/status-codes.md'
- 'Testing': 'api-guide/testing.md'
- 'Settings': 'api-guide/settings.md'
- Topics:
- 'Documenting your API': 'topics/documenting-your-api.md'
- 'Internationalization': 'topics/internationalization.md'
- 'AJAX, CSRF & CORS': 'topics/ajax-csrf-cors.md'
- 'Browser Enhancements': 'topics/browser-enhancements.md'
- 'The Browsable API': 'topics/browsable-api.md'
- 'REST, Hypermedia & HATEOAS': 'topics/rest-hypermedia-hateoas.md'
- 'Third Party Resources': 'topics/third-party-resources.md'
- 'Contributing to REST framework': 'topics/contributing.md'
- 'Project management': 'topics/project-management.md'
- '3.0 Announcement': 'topics/3.0-announcement.md'
- '3.1 Announcement': 'topics/3.1-announcement.md'
- 'Kickstarter Announcement': 'topics/kickstarter-announcement.md'
- 'Release Notes': 'topics/release-notes.md'

View File

@ -1,3 +1,3 @@
# PEP8 code linting, which we run on all commits.
flake8==2.3.0
pep8==1.6.2
flake8==2.4.0
pep8==1.5.7

View File

@ -1,2 +1,2 @@
# MkDocs to build our documentation.
mkdocs==0.11.1
mkdocs==0.13.2

View File

@ -8,7 +8,7 @@ ______ _____ _____ _____ __
"""
__title__ = 'Django REST framework'
__version__ = '3.1.0'
__version__ = '3.1.2'
__author__ = 'Tom Christie'
__license__ = 'BSD 2-Clause'
__copyright__ = 'Copyright 2011-2015 Tom Christie'

View File

@ -8,6 +8,7 @@ from django.middleware.csrf import CsrfViewMiddleware
from django.utils.translation import ugettext_lazy as _
from rest_framework import exceptions, HTTP_HEADER_ENCODING
from rest_framework.authtoken.models import Token
from rest_framework.compat import get_user_model
def get_authorization_header(request):
@ -85,7 +86,12 @@ class BasicAuthentication(BaseAuthentication):
"""
Authenticate the userid and password against username and password.
"""
user = authenticate(username=userid, password=password)
username_field = getattr(get_user_model(), 'USERNAME_FIELD', 'username')
credentials = {
username_field: userid,
'password': password
}
user = authenticate(**credentials)
if user is None:
raise exceptions.AuthenticationFailed(_('Invalid username/password.'))

View File

@ -6,7 +6,7 @@ from rest_framework import exceptions, serializers
class AuthTokenSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField()
password = serializers.CharField(style={'input_type': 'password'})
def validate(self, attrs):
username = attrs.get('username')

View File

@ -11,9 +11,10 @@ class ObtainAuthToken(APIView):
permission_classes = ()
parser_classes = (parsers.FormParser, parsers.MultiPartParser, parsers.JSONParser,)
renderer_classes = (renderers.JSONRenderer,)
serializer_class = AuthTokenSerializer
def post(self, request):
serializer = AuthTokenSerializer(data=request.data)
serializer = self.serializer_class(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data['user']
token, created = Token.objects.get_or_create(user=user)

View File

@ -7,6 +7,7 @@ versions of django/python, and compatibility wrappers around optional packages.
from __future__ import unicode_literals
from django.core.exceptions import ImproperlyConfigured
from django.conf import settings
from django.db import connection, transaction
from django.utils.encoding import force_text
from django.utils.six.moves.urllib.parse import urlparse as _urlparse
from django.utils import six
@ -119,6 +120,14 @@ def get_model_name(model_cls):
return model_cls._meta.module_name
# Support custom user models in Django 1.5+
try:
from django.contrib.auth import get_user_model
except ImportError:
from django.contrib.auth.models import User
get_user_model = lambda: User
# View._allowed_methods only present from 1.5 onwards
if django.VERSION >= (1, 5):
from django.views.generic import View
@ -250,3 +259,27 @@ else:
SHORT_SEPARATORS = (b',', b':')
LONG_SEPARATORS = (b', ', b': ')
INDENT_SEPARATORS = (b',', b': ')
if django.VERSION >= (1, 8):
from django.db.models import DurationField
from django.utils.dateparse import parse_duration
from django.utils.duration import duration_string
else:
DurationField = duration_string = parse_duration = None
def set_rollback():
if hasattr(transaction, 'set_rollback'):
if connection.settings_dict.get('ATOMIC_REQUESTS', False):
# If running in >=1.6 then mark a rollback as required,
# and allow it to be handled by Django.
transaction.set_rollback(True)
elif transaction.is_managed():
# Otherwise handle it explicitly if in managed mode.
if transaction.is_dirty():
transaction.rollback()
transaction.leave_transaction_management()
else:
# transaction not managed
pass

View File

@ -13,7 +13,7 @@ from rest_framework import ISO_8601
from rest_framework.compat import (
EmailValidator, MinValueValidator, MaxValueValidator,
MinLengthValidator, MaxLengthValidator, URLValidator, OrderedDict,
unicode_repr, unicode_to_repr
unicode_repr, unicode_to_repr, parse_duration, duration_string,
)
from rest_framework.exceptions import ValidationError
from rest_framework.settings import api_settings
@ -104,7 +104,7 @@ def set_value(dictionary, keys, value):
dictionary[keys[-1]] = value
class CreateOnlyDefault:
class CreateOnlyDefault(object):
"""
This class may be used to provide default values that are only used
for create operations, but that do not return any value for update
@ -115,6 +115,8 @@ class CreateOnlyDefault:
def set_context(self, serializer_field):
self.is_update = serializer_field.parent.instance is not None
if callable(self.default) and hasattr(self.default, 'set_context') and not self.is_update:
self.default.set_context(serializer_field)
def __call__(self):
if self.is_update:
@ -129,7 +131,7 @@ class CreateOnlyDefault:
)
class CurrentUserDefault:
class CurrentUserDefault(object):
def set_context(self, serializer_field):
self.user = serializer_field.context['request'].user
@ -338,7 +340,7 @@ class Field(object):
* Raise `ValidationError`, indicating invalid data.
* Raise `SkipField`, indicating that the field should be ignored.
* Return (True, data), indicating an empty value that should be
returned without any furhter validation being applied.
returned without any further validation being applied.
* Return (False, data), indicating a non-empty value, that should
have validation applied as normal.
"""
@ -638,20 +640,37 @@ class URLField(CharField):
class UUIDField(Field):
valid_formats = ('hex_verbose', 'hex', 'int', 'urn')
default_error_messages = {
'invalid': _('"{value}" is not a valid UUID.'),
}
def __init__(self, **kwargs):
self.uuid_format = kwargs.pop('format', 'hex_verbose')
if self.uuid_format not in self.valid_formats:
raise ValueError(
'Invalid format for uuid representation. '
'Must be one of "{0}"'.format('", "'.join(self.valid_formats))
)
super(UUIDField, self).__init__(**kwargs)
def to_internal_value(self, data):
if not isinstance(data, uuid.UUID):
try:
return uuid.UUID(data)
if isinstance(data, six.integer_types):
return uuid.UUID(int=data)
else:
return uuid.UUID(hex=data)
except (ValueError, TypeError):
self.fail('invalid', value=data)
return data
def to_representation(self, value):
if self.uuid_format == 'hex_verbose':
return str(value)
else:
return getattr(value, self.uuid_format)
class IPAddressField(CharField):
@ -689,6 +708,7 @@ class IntegerField(Field):
'max_string_length': _('String value too large.')
}
MAX_STRING_LENGTH = 1000 # Guard against malicious string inputs.
re_decimal = re.compile(r'\.0*\s*$') # allow e.g. '1.0' as an int, but not '1.2'
def __init__(self, **kwargs):
self.max_value = kwargs.pop('max_value', None)
@ -706,7 +726,7 @@ class IntegerField(Field):
self.fail('max_string_length')
try:
data = int(data)
data = int(self.re_decimal.sub('', str(data)))
except (ValueError, TypeError):
self.fail('invalid')
return data
@ -805,7 +825,8 @@ class DecimalField(Field):
self.fail('invalid')
sign, digittuple, exponent = value.as_tuple()
decimals = abs(exponent)
decimals = exponent * decimal.Decimal(-1) if exponent < 0 else 0
# digittuple doesn't include any leading zeros.
digits = len(digittuple)
if decimals > digits:
@ -948,6 +969,9 @@ class DateField(Field):
self.fail('invalid', format=humanized_format)
def to_representation(self, value):
if not value:
return None
if self.format is None:
return value
@ -961,7 +985,10 @@ class DateField(Field):
)
if self.format.lower() == ISO_8601:
if (isinstance(value, str)):
value = datetime.datetime.strptime(value, '%Y-%m-%d').date()
return value.isoformat()
return value.strftime(self.format)
@ -1019,6 +1046,29 @@ class TimeField(Field):
return value.strftime(self.format)
class DurationField(Field):
default_error_messages = {
'invalid': _('Duration has wrong format. Use one of these formats instead: {format}.'),
}
def __init__(self, *args, **kwargs):
if parse_duration is None:
raise NotImplementedError(
'DurationField not supported for django versions prior to 1.8')
return super(DurationField, self).__init__(*args, **kwargs)
def to_internal_value(self, value):
if isinstance(value, datetime.timedelta):
return value
parsed = parse_duration(value)
if parsed is not None:
return parsed
self.fail('invalid', format='[DD] [HH:[MM:]]ss[.uuuuuu]')
def to_representation(self, value):
return duration_string(value)
# Choice types...
class ChoiceField(Field):
@ -1062,7 +1112,7 @@ class ChoiceField(Field):
def to_representation(self, value):
if value in ('', None):
return value
return self.choice_strings_to_values[six.text_type(value)]
return self.choice_strings_to_values.get(six.text_type(value), value)
class MultipleChoiceField(ChoiceField):
@ -1076,7 +1126,11 @@ class MultipleChoiceField(ChoiceField):
# We override the default field access in order to support
# lists in HTML forms.
if html.is_html_input(dictionary):
return dictionary.getlist(self.field_name)
ret = dictionary.getlist(self.field_name)
if getattr(self.root, 'partial', False) and not ret:
ret = empty
return ret
return dictionary.get(self.field_name, empty)
def to_internal_value(self, data):
@ -1090,7 +1144,7 @@ class MultipleChoiceField(ChoiceField):
def to_representation(self, value):
return set([
self.choice_strings_to_values[six.text_type(item)] for item in value
self.choice_strings_to_values.get(six.text_type(item), item) for item in value
])

View File

@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Arabic (http://www.transifex.com/projects/p/django-rest-framework/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,37 +18,49 @@ msgstr ""
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr ""
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr ""
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr ""
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "اسم المستخدم/كلمة السر غير صحيحين."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "المستخدم غير مفعل او تم حذفه."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr ""
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr ""
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr ""
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "المستخدم غير مفعل او تم حذفه."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "حساب المستخدم غير مفعل."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "تعذر تسجيل الدخول بالبيانات التي ادخلتها."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "يجب أن تتضمن \"اسم المستخدم\" و \"كلمة المرور\"."
#: exceptions.py:38
msgid "A server error occurred."
@ -70,11 +82,12 @@ msgstr "لم يتم تزويد بيانات الدخول."
msgid "You do not have permission to perform this action."
msgstr "ليس لديك صلاحية للقيام بهذا الإجراء."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "غير موجود."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr ""
@ -83,6 +96,7 @@ msgid "Could not satisfy the request Accept header."
msgstr ""
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr ""
@ -90,161 +104,180 @@ msgstr ""
msgid "Request was throttled."
msgstr ""
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "هذا الحقل مطلوب."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "لا يمكن لهذا الحقل ان يكون فارغاً null."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" ليس قيمة منطقية."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "لا يمكن لهذا الحقل ان يكون فارغاً."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "تأكد ان الحقل لا يزيد عن {max_length} محرف."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "تأكد ان الحقل {min_length} محرف على الاقل."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "عليك ان تدخل بريد إلكتروني صالح."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "هذه القيمة لا تطابق النمط المطلوب."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr ""
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "الرجاء إدخال رابط إلكتروني صالح."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "الرجاء إدخال رقم صحيح صالح."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "تأكد ان القيمة أقل أو تساوي {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "تأكد ان القيمة أكبر أو تساوي {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr ""
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "الرجاء إدخال رقم صالح."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "تأكد ان القيمة لا تحوي أكثر من {max_digits} رقم."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr ""
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr ""
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "صيغة التاريخ و الوقت غير صحيحة. عليك أن تستخدم واحدة من هذه الصيغ التالية: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr ""
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "صيغة التاريخ غير صحيحة. عليك أن تستخدم واحدة من هذه الصيغ التالية: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr ""
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "صيغة الوقت غير صحيحة. عليك أن تستخدم واحدة من هذه الصيغ التالية: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" ليست واحدة من الخيارات الصالحة."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr ""
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "لم يتم إرسال أي ملف."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr ""
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr ""
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "الملف الذي تم إرساله فارغ."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "تأكد ان اسم الملف لا يحوي أكثر من {max_length} محرف (الإسم المرسل يحوي {length} محرف)."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "رقم الصفحة \"{page_number}\" غير صالح : {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "معرف العنصر \"{pk_value}\" غير صالح - العنصر غير موجود."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
@ -261,38 +294,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr ""
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr ""
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "قيمة غير صالحة."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr ""
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr ""
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
@ -304,22 +356,14 @@ msgstr ""
msgid "Invalid version in URL path."
msgstr ""
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "حساب المستخدم غير مفعل."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "تعذر تسجيل الدخول بالبيانات التي ادخلتها."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "يجب أن تتضمن \"اسم المستخدم\" و \"كلمة المرور\"."
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -4,13 +4,14 @@
#
# Translators:
# Jirka Vejrazka <Jirka.Vejrazka@gmail.com>, 2015
# Tomáš Ehrlich <tomas.ehrlich@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/django-rest-framework/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,37 +19,49 @@ msgstr ""
"Language: cs\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Chybná hlavička. Nebyly poskytnuty přihlašovací údaje."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Chybná hlavička. Přihlašovací údaje by neměly obsahovat mezery."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Chybná hlavička. Přihlašovací údaje nebyly správně zakódovány pomocí base64."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Chybné uživatelské jméno nebo heslo."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Uživatelský účet je neaktivní nebo byl smazán."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Chybná hlavička tokenu. Nebyly zadány přihlašovací údaje."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Chybná hlavička tokenu. Přihlašovací údaje by neměly obsahovat mezery."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Chybný token."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Uživatelský účet je neaktivní nebo byl smazán."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Uživatelský účet je uzamčen."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Zadanými údaji se nebylo možné přihlásit."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Musí obsahovat \"uživatelské jméno\" a \"heslo\"."
#: exceptions.py:38
msgid "A server error occurred."
@ -64,17 +77,18 @@ msgstr "Chybné přihlašovací údaje."
#: exceptions.py:83
msgid "Authentication credentials were not provided."
msgstr "Přihlašovací údaje nebyly zadány."
msgstr "Nebyly zadány přihlašovací údaje."
#: exceptions.py:88
msgid "You do not have permission to perform this action."
msgstr "K této akci nemáte oprávnění."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Nenalezeno."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Metoda \"{method}\" není povolena."
@ -83,168 +97,188 @@ msgid "Could not satisfy the request Accept header."
msgstr "Nelze vyhovět požadavku v hlavičce Accept."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Nepodporovaný media type \"{media_type}\" v požadavku."
#: exceptions.py:134
msgid "Request was throttled."
msgstr "Pořadavek byl limitován kvůli omezení počtu požadavků za časovou periodu."
msgstr "Požadavek byl limitován kvůli omezení počtu požadavků za časovou periodu."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Toto pole je vyžadováno."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Toto pole nesmí být prázdné (null)."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" nelze použít jako typ boolean."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Toto pole nesmí být prázdné.."
msgstr "Toto pole nesmí být prázdné."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Zkontrolujte, že toto pole není delší než {max_length} znaků."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Zkontrolujte, že toto obsahuje alespoň {min_length} znaků"
msgstr "Zkontrolujte, že toto pole obsahuje alespoň {min_length} znaků."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Vložte platnou e-mailovou adresu."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Hodnota v tomto poli neodpovídá požadovanému formátu."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Vložte platnou \"zkrácenou formu\" obsahující pouze malá písmena, čísla, spojovník nebo podtržítko."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Vložte platný odkaz."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value}\" není platné UUID."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Je vyžadováno číslo."
msgstr "Je vyžadováno celé číslo."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Zkontrolujte, že hodnota je menší nebo rovna {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Zkontrolujte, že hodnota je větší nebo rovna {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "Řetězec je příliš dlouhý"
msgstr "Řetězec je příliš dlouhý."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Je vyžadováno číslo."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Zkontrolujte, že číslo neobsahuje více než {max_digits} čislic."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Zkontrolujte, že číslo nemá více než {max_decimal_places} desetinných míst."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Zkontrolujte, že číslo neobsahuje více než {max_whole_digits} čislic před desetinnou čárkou."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Chybný formát data a času. Použijte jeden z těchto formátů: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Bylo zadáno pouze datum místo data a času."
msgstr "Bylo zadáno pouze datum bez času."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Chybný formát data. Použijte jeden z těchto formátů: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Bylo zadáno datum a čas, místo samotného data."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Chybný formát času. Použijte jeden z těchto formátů: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" není platnou možností."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Byl očekáván seznam položek ale nalezen \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Nebyl zaslán žádný soubor."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "Zaslaná data neobsahují soubor. Zkontrolujte typ kódování ve formuláři."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Nebylo možno zjistit jméno souboru."
msgstr "Nebylo možné zjistit jméno souboru."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "Zaslaný soubor je prázdný."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Zajistěte, aby jméno souboru obsahovalo maximálně {max_length} znaků (teď má {length} znaků)."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Nahrajte platný obrázek. Nahraný soubor buď není obrázkem, nebo je poškozen."
msgstr "Nahrajte platný obrázek. Nahraný soubor buď není obrázkem nebo je poškozen."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "Byl očekáván slovník položek ale nalezen \"{input_type}\"."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Chybné čislo stránky \"{page_number}\": {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "Chybný kurzor."
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Chybný primární klíč \"{pk_value}\" - objekt neexistuje."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Chybný typ. Byl přijat typ {data_type} místo hodnoty primárního klíče."
@ -261,65 +295,76 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "Chybný odkaz - objekt neexistuje."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Chybný typ. Byl přijat typ {data_type} místo očekávaného odkazu."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "Objekt s {slug_name}={value} neexistuje."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Chybná hodnota."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Chybná data. Byl přijat typ {datatype} místo očakávaného slovníku."
msgstr "Chybná data. Byl přijat typ {datatype} místo očekávaného slovníku."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "Tato položka musí být unikátní."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "Položka {field_names} musí tvořit unikátní množinu."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "Tato položka musí být pro datum \"{date_field}\" unikátní."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "Tato položka musí být pro měsíc \"{date_field}\" unikátní."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "Tato položka musí být pro rok \"{date_field}\" unikátní."
#: versioning.py:39
msgid "Invalid version in \"Accept\" header."
msgstr "Chybné číslo verze v hlavičce Accept"
msgstr "Chybné číslo verze v hlavičce Accept."
#: versioning.py:70 versioning.py:112
msgid "Invalid version in URL path."
msgstr "Chybné číslo verze v odkazu."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Chybné číslo verze v hostname."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Chybné čislo verze v URL parametru."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Uživatelský účet je zamčen."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Se zadanými údaji nebylo možné se přihlásit."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Musí obsahovat \"uživatelské jméno! a \"heslo\"."
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Danish (http://www.transifex.com/projects/p/django-rest-framework/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,37 +18,49 @@ msgstr ""
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Ugyldig basic header. Ingen legitimation angivet."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Ugyldig basic header. Legitimationsstrenge må ikke indeholde mellemrum."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Ugyldig basic header. Legitimationen er ikke base64 encoded på korrekt vis."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Ugyldigt brugernavn/kodeord."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Inaktiv eller slettet bruger."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Ugyldig token header."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Ugyldig token header. Token-strenge må ikke indeholde mellemrum."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Ugyldigt token."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Inaktiv eller slettet bruger."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Brugerkontoen er deaktiveret."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Kunne ikke logge ind med den angivne legitimation."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Skal indeholde \"username\" og \"password\"."
#: exceptions.py:38
msgid "A server error occurred."
@ -70,11 +82,12 @@ msgstr "Legitimation til autentificering blev ikke angivet."
msgid "You do not have permission to perform this action."
msgstr "Du har ikke lov til at udføre denne handling."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Ikke fundet."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Metoden \"{method}\" er ikke tilladt."
@ -83,6 +96,7 @@ msgid "Could not satisfy the request Accept header."
msgstr "Kunne ikke efterkomme forespørgslens Accept header."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Forespørgslens media type, \"{media_type}\", er ikke understøttet."
@ -90,161 +104,180 @@ msgstr "Forespørgslens media type, \"{media_type}\", er ikke understøttet."
msgid "Request was throttled."
msgstr "Forespørgslen blev neddroslet."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Dette felt er påkrævet."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Dette felt må ikke være null."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" er ikke en tilladt boolsk værdi."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Dette felt må ikke være tomt."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Tjek at dette felt ikke indeholder flere end {max_length} tegn."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Tjek at dette felt indeholder mindst {min_length} tegn."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Angiv en gyldig e-mailadresse."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Denne værdi passer ikke med det påkrævede mønster."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Indtast en gyldig \"slug\", bestående af bogstaver, tal, bund- og bindestreger."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Indtast en gyldig URL."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Et gyldigt heltal er påkrævet."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Tjek at værdien er mindre end eller lig med {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Tjek at værdien er større end eller lig med {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "Strengværdien er for stor."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Et gyldigt tal er påkrævet."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Tjek at der ikke er flere end {max_digits} cifre i alt."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Tjek at der ikke er flere end {max_decimal_places} cifre efter kommaet."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Tjek at der ikke er flere end {max_whole_digits} cifre før kommaet."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Datotid har et forkert format. Brug i stedet et af disse formater: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Forventede en datotid, men fik en dato."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Dato har et forkert format. Brug i stedet et af disse formater: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Forventede en dato men fik en datotid."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Klokkeslæt har forkert format. Brug i stedet et af disse formater: {format}. "
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" er ikke et gyldigt valg."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Forventede en liste, men fik noget af typen \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Ingen medsendt fil."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "Det medsendte data var ikke en fil. Tjek typen af indkodning på formularen."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Filnavnet kunne ikke afgøres."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "Den medsendte fil er tom."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Sørg for at filnavnet er højst {max_length} langt (det er {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Medsend et gyldigt billede. Den medsendte fil var enten ikke et billede eller billedfilen var ødelagt."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Ugyldig side \"{page_number}\": {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Ugyldig primærnøgle \"{pk_value}\" - objektet findes ikke."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Ugyldig type. Forventet værdi er primærnøgle, fik {data_type}."
@ -261,38 +294,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "Ugyldigt hyperlink - objektet findes ikke."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Forkert type. Forventede en URL-streng, fik {data_type}."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "Object med {slug_name}={value} findes ikke."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Ugyldig værdi."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Ugyldig data. Forventede en dictionary, men fik {datatype}."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "Dette felt skal være unikt."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "Felterne {field_names} skal udgøre et unikt sæt."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "Dette felt skal være unikt for \"{date_field}\"-datoen."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "Dette felt skal være unikt for \"{date_field}\"-måneden."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "Dette felt skal være unikt for \"{date_field}\"-året."
@ -304,22 +356,14 @@ msgstr "Ugyldig version i \"Accept\" headeren."
msgid "Invalid version in URL path."
msgstr "Ugyldig version i URL-stien."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Ugyldig version i hostname."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Ugyldig version i forespørgselsparameteren."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Brugerkontoen er deaktiveret."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Kunne ikke logge ind med den angivne legitimation."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Skal indeholde \"username\" og \"password\"."
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -3,14 +3,16 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Fabian Büchler <fabian@buechler.io>, 2015
# Thomas Tanner, 2015
# Xavier Ordoquy <xordoquy@linovia.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 23:04+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: German (http://www.transifex.com/projects/p/django-rest-framework/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,37 +20,49 @@ msgstr ""
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Ungültiger basic header. Keine Zugangsdaten angegeben."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Ungültiger basic header. Zugangsdaten sollen keine Leerzeichen enthalten."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Ungültiger basic header. Zugangsdaten sind nicht korrekt mit base64 kodiert."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Ungültiger Benutzername/Passwort"
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Benutzer inaktiv oder gelöscht."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Ungültiger token header. Keine Zugangsdaten angegeben."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Ungültiger token header. Zugangsdaten sollen keine Leerzeichen enthalten."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Ungültiges Token"
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Benutzer inaktiv oder gelöscht."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Benutzerkonto ist gesperrt."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Kann nicht mit den angegeben Zugangsdaten anmelden."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "\"username\" und \"password\" sind erforderlich."
#: exceptions.py:38
msgid "A server error occurred."
@ -70,19 +84,21 @@ msgstr "Anmeldedaten fehlen."
msgid "You do not have permission to perform this action."
msgstr "Sie sind nicht berechtigt, diese Aktion durchzuführen."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Nicht gefunden."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Methode \"{method}\" nicht erlaubt."
#: exceptions.py:109
msgid "Could not satisfy the request Accept header."
msgstr "Kann den Accept header der Anfrage nicht erfüllen."
msgstr "Kann die Accept Kopfzeile der Anfrage nicht erfüllen."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Nicht unterstützter Medientyp \"{media_type}\" in der Anfrage."
@ -90,236 +106,266 @@ msgstr "Nicht unterstützter Medientyp \"{media_type}\" in der Anfrage."
msgid "Request was throttled."
msgstr "Die Anfrage wurde gedrosselt."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Dieses Feld ist erforderlich."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Dieses Feld darf nicht Null sein."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" ist kein gültiger Boole'scher Wert."
msgstr "\"{input}\" ist kein gültiger Wahrheitswert."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Dieses Feld darf nicht leer sein."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Stelle sicher, dass dieses Feld nicht mehr als {max_length} Zeichen lang ist."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Stelle sicher, dass dieses Feld mindestens {min_length} Zeichen lang ist."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Gebe eine gültige E-Mail Adresse an."
msgstr "Gib eine gültige E-Mail Adresse an."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Dieser Wert passt nicht zu dem erforderlichen Muster."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Gebe ein gültiges \"slug\" aus Buchstaben, Ziffern, Unterstrichen und Minuszeichen ein."
msgstr "Gib ein gültiges \"slug\" aus Buchstaben, Ziffern, Unterstrichen und Minuszeichen ein."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Gebe eine gültige URL ein."
msgstr "Gib eine gültige URL ein."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value}\" ist keine gültige UUID."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Eine gültige Ganzzahl ist erforderlich."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Stelle sicher, dass dieser Wert kleiner oder gleich {max_value} ist."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Stelle sicher, dass dieser Wert größer oder gleich {max_value} ist."
msgstr "Stelle sicher, dass dieser Wert größer oder gleich {min_value} ist."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "Zeichenkette zu lang."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Eine gültige Zahl ist erforderlich."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Stelle sicher, dass es insgesamt nicht mehr als {max_digits} Ziffern lang ist."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Stelle sicher, dass es nicht mehr als {max_decimal_places} Nachkommastellen lang ist."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Stelle sicher, dass es nicht mehr als {max_whole_places} Stellen vor dem Komma lang ist."
msgstr "Stelle sicher, dass es nicht mehr als {max_whole_digits} Stellen vor dem Komma lang ist."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Datum- und Zeitangabe hat das falsche Format. Nutze stattdessen eines dieser Formate: {format}."
msgstr "Datums- und Zeitangabe hat das falsche Format. Nutze stattdessen eines dieser Formate: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Erwarte eine Datum- und Zeitangabe, erhielt aber ein Datum."
msgstr "Erwarte eine Datums- und Zeitangabe, erhielt aber ein Datum."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Datum hat das falsche Format. Nutze stattdessen eines dieser Formate: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Erwarte ein Datum, erhielt aber eine Datum- und Zeitangabe."
msgstr "Erwarte ein Datum, erhielt aber eine Datums- und Zeitangabe."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Zeitangabe hat das falsche Format. Nutze stattdessen eines dieser Formate: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" ist keine gültige Option."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Erwarte eine Liste von Elementen, erhielt aber den Typ \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Es wurde keine Datei übermittelt."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "Die übermittelten Daten sind keine Datei. Prüfe den Kodierungstyp im Formular."
msgstr "Die übermittelten Daten stellen keine Datei dar. Prüfe den Kodierungstyp im Formular."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Der Dateiname konnte nicht ermittelt werden."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "Die übermittelte Datei ist leer."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr ""
msgstr "Stelle sicher, dass dieser Dateiname höchstens {max_length} Zeichen lang ist (er hat {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
msgstr "Lade ein gültiges Bild hoch. Die hochgeladene Datei ist entweder kein Bild oder ein beschädigtes Bild."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "Erwarte ein Dictionary mit Elementen, erhielt aber den Typ \"{input_type}\"."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr ""
msgstr "Ungültige Seite \"{page_number}\": {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "Ungültiger Zeiger"
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr ""
msgstr "Ungültiger pk \"{pk_value}\" - Object existiert nicht."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
msgstr "Falscher Typ. Erwarte pk Wert, erhielt aber {data_type}."
#: relations.py:157
msgid "Invalid hyperlink - No URL match."
msgstr ""
msgstr "Ungültiger Hyperlink - entspricht keiner URL."
#: relations.py:158
msgid "Invalid hyperlink - Incorrect URL match."
msgstr ""
msgstr "Ungültiger Hyperlink - URL stimmt nicht überein."
#: relations.py:159
msgid "Invalid hyperlink - Object does not exist."
msgstr ""
msgstr "Ungültiger Hyperlink - Objekt existiert nicht."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
msgstr "Falscher Typ. Erwarte URL Zeichenkette, erhielt aber {data_type}."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr ""
msgstr "Objekt mit {slug_name}={value} existiert nicht."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Ungültiger Wert."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Ungültige Daten. Dictionary erwartet, aber {datatype} erhalten."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "Dieses Feld muss eineindeutig sein."
msgstr "Dieses Feld muss eindeutig sein."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
msgstr "Die Felder {field_names} müssen eine eindeutige Menge bilden."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
msgstr "Dieses Feld muss bezüglich des \"{date_field}\" Datums eindeutig sein."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
msgstr "Dieses Feld muss bezüglich des \"{date_field}\" Monats eindeutig sein."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
msgstr "Dieses Feld muss bezüglich des \"{date_field}\" Jahrs eindeutig sein."
#: versioning.py:39
msgid "Invalid version in \"Accept\" header."
msgstr ""
msgstr "Ungültige Version in der \"Accept\" Kopfzeile."
#: versioning.py:70 versioning.py:112
msgid "Invalid version in URL path."
msgstr ""
msgstr "Ungültige Version im URL Pfad."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
msgstr "Ungültige Version im Hostname."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Ungültige Version im Anfrageparameter."
#: views.py:82
msgid "Permission denied."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Benutzerkonto ist gesperrt."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Kann nicht mit den angegeben Zugangsdaten anmelden."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "\"username\" und \"password\" sind erforderlich."

View File

@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: English (http://www.transifex.com/projects/p/django-rest-framework/language/en/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -17,37 +17,49 @@ msgstr ""
"Language: en\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Invalid basic header. No credentials provided."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Invalid basic header. Credentials string should not contain spaces."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Invalid basic header. Credentials not correctly base64 encoded."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Invalid username/password."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "User inactive or deleted."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Invalid token header. No credentials provided."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Invalid token header. Token string should not contain spaces."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Invalid token."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "User inactive or deleted."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "User account is disabled."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Unable to log in with provided credentials."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Must include \"username\" and \"password\"."
#: exceptions.py:38
msgid "A server error occurred."
@ -69,11 +81,12 @@ msgstr "Authentication credentials were not provided."
msgid "You do not have permission to perform this action."
msgstr "You do not have permission to perform this action."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Not found."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Method \"{method}\" not allowed."
@ -82,6 +95,7 @@ msgid "Could not satisfy the request Accept header."
msgstr "Could not satisfy the request Accept header."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Unsupported media type \"{media_type}\" in request."
@ -89,161 +103,180 @@ msgstr "Unsupported media type \"{media_type}\" in request."
msgid "Request was throttled."
msgstr "Request was throttled."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "This field is required."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "This field may not be null."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" is not a valid boolean."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "This field may not be blank."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Ensure this field has no more than {max_length} characters."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Ensure this field has at least {min_length} characters."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Enter a valid email address."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "This value does not match the required pattern."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Enter a valid \"slug\" consisting of letters, numbers, underscores or hyphens."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Enter a valid URL."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr "\"{value}\" is not a valid UUID."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "A valid integer is required."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Ensure this value is less than or equal to {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Ensure this value is greater than or equal to {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "String value too large."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "A valid number is required."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Ensure that there are no more than {max_digits} digits in total."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Ensure that there are no more than {max_decimal_places} decimal places."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Ensure that there are no more than {max_whole_digits} digits before the decimal point."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Datetime has wrong format. Use one of these formats instead: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Expected a datetime but got a date."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Date has wrong format. Use one of these formats instead: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Expected a date but got a datetime."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Time has wrong format. Use one of these formats instead: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" is not a valid choice."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Expected a list of items but got type \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "No file was submitted."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "The submitted data was not a file. Check the encoding type on the form."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "No filename could be determined."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "The submitted file is empty."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Ensure this filename has at most {max_length} characters (it has {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Upload a valid image. The file you uploaded was either not an image or a corrupted image."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr "Expected a dictionary of items but got type \"{input_type}\"."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Invalid page \"{page_number}\": {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr "Invalid cursor"
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Invalid pk \"{pk_value}\" - object does not exist."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Incorrect type. Expected pk value, received {data_type}."
@ -260,38 +293,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "Invalid hyperlink - Object does not exist."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Incorrect type. Expected URL string, received {data_type}."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "Object with {slug_name}={value} does not exist."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Invalid value."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Invalid data. Expected a dictionary, but got {datatype}."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr "None"
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr "No items to select."
#: validators.py:22
msgid "This field must be unique."
msgstr "This field must be unique."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "The fields {field_names} must make a unique set."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "This field must be unique for the \"{date_field}\" date."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "This field must be unique for the \"{date_field}\" month."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "This field must be unique for the \"{date_field}\" year."
@ -303,22 +355,14 @@ msgstr "Invalid version in \"Accept\" header."
msgid "Invalid version in URL path."
msgstr "Invalid version in URL path."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Invalid version in hostname."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Invalid version in query parameter."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "User account is disabled."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Unable to log in with provided credentials."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Must include \"username\" and \"password\"."
#: views.py:82
msgid "Permission denied."
msgstr "Permission denied."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:40+0000\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,36 +17,48 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr ""
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr ""
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr ""
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr ""
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr ""
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr ""
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr ""
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr ""
#: authentication.py:171
msgid "User inactive or deleted."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr ""
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr ""
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr ""
#: exceptions.py:38
@ -74,6 +86,7 @@ msgid "Not found."
msgstr ""
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr ""
@ -82,6 +95,7 @@ msgid "Could not satisfy the request Accept header."
msgstr ""
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr ""
@ -89,159 +103,178 @@ msgstr ""
msgid "Request was throttled."
msgstr ""
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr ""
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr ""
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr ""
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr ""
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr ""
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr ""
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr ""
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr ""
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr ""
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr ""
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr ""
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr ""
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr ""
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr ""
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr ""
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr ""
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid "Ensure that there are no more than {max_decimal_places} decimal places."
msgstr ""
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr ""
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr ""
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr ""
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr ""
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr ""
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr ""
#: fields.py:1068
#: fields.py:1086
msgid "The submitted data was not a file. Check the encoding type on the form."
msgstr ""
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr ""
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr ""
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr ""
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr ""
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr ""
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
@ -258,38 +291,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr ""
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr ""
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr ""
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr ""
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr ""
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
@ -301,26 +353,14 @@ msgstr ""
msgid "Invalid version in URL path."
msgstr ""
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr ""
#: views.py:81
#: views.py:82
msgid "Permission denied."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr ""
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr ""
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr ""

View File

@ -4,15 +4,15 @@
#
# Translators:
# José Padilla <jpadilla@webapplicate.com>, 2015
# Miguel González <migonzalvar@activitycentral.com>, 2015
# Miguel González <migonzalvar@gmail.com>, 2015
# Sergio Infante <rsinfante@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/django-rest-framework/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -20,37 +20,49 @@ msgstr ""
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Cabecera básica inválida. Las credenciales no fueron suministradas."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Cabecera básica inválida. La cadena con las credenciales no debe contener espacios."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Cabecera básica inválida. Las credenciales incorrectamente codificadas en base64."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Nombre de usuario/contraseña inválidos."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Usuario inactivo o borrado."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Cabecera token inválida. Las credenciales no fueron suministradas."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Cabecera token inválida. La cadena token no debe contener espacios."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Token inválido."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Usuario inactivo o borrado."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Cuenta de usuario está deshabilitada."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "No puede iniciar sesión con las credenciales proporcionadas."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Debe incluir \"username\" y \"password\"."
#: exceptions.py:38
msgid "A server error occurred."
@ -72,11 +84,12 @@ msgstr "Las credenciales de autenticación no se proveyeron."
msgid "You do not have permission to perform this action."
msgstr "Usted no tiene permiso para realizar esta acción."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "No encontrado."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Método \"{method}\" no permitido."
@ -85,6 +98,7 @@ msgid "Could not satisfy the request Accept header."
msgstr "No se ha podido satisfacer la solicitud de cabecera de Accept."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Tipo de medio \"{media_type}\" incompatible en la solicitud."
@ -92,161 +106,180 @@ msgstr "Tipo de medio \"{media_type}\" incompatible en la solicitud."
msgid "Request was throttled."
msgstr "Solicitud fue regulada (throttled)."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Este campo es requerido."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Este campo no puede ser nulo."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" no es un booleano válido."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Este campo no puede estar en blanco."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Asegúrese de que este campo no tenga más de {max_length} caracteres."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Asegúrese de que este campo tenga al menos {min_length} caracteres."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Introduzca una dirección de correo electrónico válida."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Este valor no coincide con el patrón requerido."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Introduzca un \"slug\" válido consistente en letras, números, guiones o guiones bajos."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Introduzca una URL válida."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value}\" no es un UUID válido."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Introduzca un número entero válido."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Asegúrese de que este valor es menor o igual a {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Asegúrese de que este valor es mayor o igual a {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "Cadena demasiado larga."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Se requiere un número válido."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Asegúrese de que no haya más de {max_digits} dígitos en total."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Asegúrese de que no haya más de {max_decimal_places} decimales."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Asegúrese de que no haya más de {max_whole_digits} dígitos en la parte entera."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Fecha/hora con formato erróneo. Use uno de los siguientes formatos en su lugar: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Se esperaba un fecha/hora en vez de una fecha."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Fecha con formato erróneo. Use uno de los siguientes formatos en su lugar: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Se esperaba una fecha en vez de una fecha/hora."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Hora con formato erróneo. Use uno de los siguientes formatos en su lugar: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" no es una elección válida."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Se esperaba una lista de elementos en vez del tipo \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "No se envió ningún archivo."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "La información enviada no era un archivo. Compruebe el tipo de codificación del formulario."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "No se pudo determinar un nombre de archivo."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "El archivo enviado está vació."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Asegúrese de que el nombre de archivo no tenga más de {max_length} caracteres (tiene {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Adjunte una imagen válida. El archivo adjunto o bien no es una imagen o bien está dañado."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "Se esperaba un diccionario de elementos en vez del tipo \"{input_type}\"."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Página \"{page_number}\" inválida: {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "Cursor inválido"
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Clave primaria \"{pk_value}\" inválida - objeto no existe."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Tipo incorrecto. Se esperaba valor de clave primaria y se recibió {data_type}."
@ -263,38 +296,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "Hiperenlace inválido - Objeto no existe."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Tipo incorrecto. Se esperaba una URL y se recibió {data_type}."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "Objeto con {slug_name}={value} no existe."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Valor inválido."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Datos inválidos. Se esperaba un diccionario pero es un {datatype}."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "Este campo debe ser único."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "Los campos {field_names} deben formar un conjunto único."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "Este campo debe ser único para el día \"{date_field}\"."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "Este campo debe ser único para el mes \"{date_field}\"."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "Este campo debe ser único para el año \"{date_field}\"."
@ -306,22 +358,14 @@ msgstr "Versión inválida en la cabecera \"Accept\"."
msgid "Invalid version in URL path."
msgstr "Versión inválida en la ruta de la URL."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Versión inválida en el nombre de host."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Versión inválida en el parámetro de consulta."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Cuenta de usuario está deshabilitada."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "No puede iniciar sesión con las credenciales proporcionadas."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Debe incluir \"username\" y \"password\"."
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Estonian (http://www.transifex.com/projects/p/django-rest-framework/language/et/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,303 +18,41 @@ msgstr ""
"Language: et\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr ""
msgstr "Sobimatu lihtpäis. Kasutajatunnus on esitamata."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr ""
msgstr "Sobimatu lihtpäis. Kasutajatunnus ei tohi sisaldada tühikuid."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr ""
msgstr "Sobimatu lihtpäis. Kasutajatunnus pole korrektselt base64-kodeeritud."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Vale kasutajatunnus/salasõna."
msgstr "Sobimatu kasutajatunnus/salasõna."
#: authentication.py:156
msgid "Invalid token header. No credentials provided."
msgstr ""
#: authentication.py:159
msgid "Invalid token header. Token string should not contain spaces."
msgstr ""
#: authentication.py:168
msgid "Invalid token."
msgstr ""
#: authentication.py:171
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Kasutaja on inaktiivne või kustutatud."
#: exceptions.py:38
msgid "A server error occurred."
msgstr ""
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Sobimatu lubakaardi päis. Kasutajatunnus on esitamata."
#: exceptions.py:73
msgid "Malformed request."
msgstr ""
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Sobimatu lubakaardi päis. Loa sõne ei tohi sisaldada tühikuid."
#: exceptions.py:78
msgid "Incorrect authentication credentials."
msgstr ""
#: exceptions.py:83
msgid "Authentication credentials were not provided."
msgstr ""
#: exceptions.py:88
msgid "You do not have permission to perform this action."
msgstr ""
#: exceptions.py:93
msgid "Not found."
msgstr ""
#: exceptions.py:98
msgid "Method \"{method}\" not allowed."
msgstr ""
#: exceptions.py:109
msgid "Could not satisfy the request Accept header."
msgstr ""
#: exceptions.py:121
msgid "Unsupported media type \"{media_type}\" in request."
msgstr ""
#: exceptions.py:134
msgid "Request was throttled."
msgstr ""
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
msgid "This field is required."
msgstr "Väli on kohustuslik."
#: fields.py:154
msgid "This field may not be null."
msgstr "Väli ei tohi olla tühi."
#: fields.py:487 fields.py:515
msgid "\"{input}\" is not a valid boolean."
msgstr ""
#: fields.py:550
msgid "This field may not be blank."
msgstr ""
#: fields.py:551 fields.py:1324
msgid "Ensure this field has no more than {max_length} characters."
msgstr ""
#: fields.py:552
msgid "Ensure this field has at least {min_length} characters."
msgstr ""
#: fields.py:587
msgid "Enter a valid email address."
msgstr "Sisesta kehtiv e-posti aadress."
#: fields.py:604
msgid "This value does not match the required pattern."
msgstr "Väärtus ei ühti etteantud mustriga."
#: fields.py:615
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr ""
#: fields.py:627
msgid "Enter a valid URL."
msgstr "Sisesta korrektne URL."
#: fields.py:638
msgid "\"{value}\" is not a valid UUID."
msgstr ""
#: fields.py:657
msgid "A valid integer is required."
msgstr ""
#: fields.py:658 fields.py:692 fields.py:725
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Veendu, et väärtus on väiksem kui või võrdne väärtusega {max_value}. "
#: fields.py:659 fields.py:693 fields.py:726
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Veendu, et väärtus on suurem kui või võrdne väärtusega {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
msgid "String value too large."
msgstr "Sõne on liiga pikk."
#: fields.py:691 fields.py:724
msgid "A valid number is required."
msgstr ""
#: fields.py:727
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Veendu, et kokku pole rohkem kui {max_digits}."
#: fields.py:728
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Veendu, et komakohti pole rohkem kui {max_decimal_places}. "
#: fields.py:729
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr ""
#: fields.py:813
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:814
msgid "Expected a datetime but got a date."
msgstr ""
#: fields.py:878
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:879
msgid "Expected a date but got a datetime."
msgstr ""
#: fields.py:936
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:992 fields.py:1036
msgid "\"{input}\" is not a valid choice."
msgstr ""
#: fields.py:1037 fields.py:1151 serializers.py:482
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr ""
#: fields.py:1067
msgid "No file was submitted."
msgstr ""
#: fields.py:1068
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr ""
#: fields.py:1069
msgid "No filename could be determined."
msgstr ""
#: fields.py:1070
msgid "The submitted file is empty."
msgstr ""
#: fields.py:1071
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr ""
#: fields.py:1113
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: fields.py:1188
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
#: pagination.py:221
msgid "Invalid page \"{page_number}\": {message}."
msgstr ""
#: pagination.py:442
msgid "Invalid cursor"
msgstr ""
#: relations.py:133
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr ""
#: relations.py:134
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
#: relations.py:157
msgid "Invalid hyperlink - No URL match."
msgstr ""
#: relations.py:158
msgid "Invalid hyperlink - Incorrect URL match."
msgstr ""
#: relations.py:159
msgid "Invalid hyperlink - Object does not exist."
msgstr ""
#: relations.py:160
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
#: relations.py:295
msgid "Object with {slug_name}={value} does not exist."
msgstr ""
#: relations.py:296
msgid "Invalid value."
msgstr ""
#: serializers.py:299
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr ""
#: validators.py:76
msgid "The fields {field_names} must make a unique set."
msgstr ""
#: validators.py:219
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
#: validators.py:234
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
#: validators.py:247
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
#: versioning.py:39
msgid "Invalid version in \"Accept\" header."
msgstr ""
#: versioning.py:70 versioning.py:112
msgid "Invalid version in URL path."
msgstr ""
#: versioning.py:138
msgid "Invalid version in hostname."
msgstr ""
#: versioning.py:160
msgid "Invalid version in query parameter."
msgstr ""
#: authentication.py:179
msgid "Invalid token."
msgstr "Sobimatu lubakaart."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Kasutajakonto on suletud"
msgstr "Kasutajakonto on suletud."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
@ -323,3 +61,309 @@ msgstr "Sisselogimine antud tunnusega ebaõnnestus."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Peab sisaldama \"kasutajatunnust\" ja \"slasõna\"."
#: exceptions.py:38
msgid "A server error occurred."
msgstr "Viga serveril."
#: exceptions.py:73
msgid "Malformed request."
msgstr "Väändunud päring."
#: exceptions.py:78
msgid "Incorrect authentication credentials."
msgstr "Ebakorrektne autentimistunnus."
#: exceptions.py:83
msgid "Authentication credentials were not provided."
msgstr "Autentimistunnus on esitamata."
#: exceptions.py:88
msgid "You do not have permission to perform this action."
msgstr "Teil puuduvad piisavad õigused selle tegevuse teostamiseks."
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Ei leidnud."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Meetod \"{method}\" pole lubatud."
#: exceptions.py:109
msgid "Could not satisfy the request Accept header."
msgstr "Päringu Accept-päist ei suutnud täita."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Meedia tüüpi {media_type} päringus ei toetata."
#: exceptions.py:134
msgid "Request was throttled."
msgstr "Liiga palju päringuid."
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Väli on kohustuslik."
#: fields.py:163
msgid "This field may not be null."
msgstr "Väli ei tohi olla tühi."
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" pole kehtiv kahendarv."
#: fields.py:559
msgid "This field may not be blank."
msgstr "See väli ei tohi olla tühi."
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Veendu, et see väli poleks pikem kui {max_length} tähemärki."
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Veendu, et see väli oleks vähemalt {min_length} tähemärki pikk."
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Sisestage kehtiv e-posti aadress."
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Väärtus ei ühti etteantud mustriga."
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Sisestage kehtiv \"slug\", mis koosneks tähtedest, numbritest, ala- või sidekriipsudest."
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Sisestage korrektne URL."
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr "\"{value}\" pole kehtiv UUID."
#: fields.py:662
msgid "A valid integer is required."
msgstr "Sisendiks peab olema täisarv."
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Veenduge, et väärtus on väiksem kui või võrdne väärtusega {max_value}. "
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Veenduge, et väärtus on suurem kui või võrdne väärtusega {min_value}."
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "Sõne on liiga pikk."
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Sisendiks peab olema arv."
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Veenduge, et kokku pole rohkem kui {max_digits} numbit."
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Veenduge, et komakohti pole rohkem kui {max_decimal_places}. "
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Veenduge, et täiskohti poleks rohkem kui {max_whole_digits}."
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Valesti formaaditud kuupäev-kellaaeg. Kasutage mõnda neist: {format}."
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Ootasin kuupäev-kellaaeg andmetüüpi, kuid sain hoopis kuupäeva."
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Valesti formaaditud kuupäev. Kasutage mõnda neist: {format}."
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Ootasin kuupäeva andmetüüpi, kuid sain hoopis kuupäev-kellaaja."
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Valesti formaaditud kellaaeg. Kasutage mõnda neist: {format}."
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" on sobimatu valik."
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Ootasin kirjete järjendit, kuid sain \"{input_type}\" - tüübi."
#: fields.py:1085
msgid "No file was submitted."
msgstr "Ühtegi faili ei esitatud."
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "Esitatud andmetes ei olnud faili. Kontrollige vormi kodeeringut."
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Ei suutnud tuvastada failinime."
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "Esitatud fail oli tühi."
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Veenduge, et failinimi oleks maksimaalselt {max_length} tähemärki pikk (praegu on {length})."
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Laadige üles kehtiv pildifail. Üles laetud fail ei olnud pilt või oli see katki."
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr "Ootasin kirjete sõnastikku, kuid sain \"{input_type}\"."
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Sobimatu lehekülg \"{page_number}\": {message}."
#: pagination.py:492
msgid "Invalid cursor"
msgstr "Sobimatu kursor."
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Sobimatu primaarvõti \"{pk_value}\" - objekti pole olemas."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Sobimatu andmetüüp. Ootasin primaarvõtit, sain {data_type}."
#: relations.py:157
msgid "Invalid hyperlink - No URL match."
msgstr "Sobimatu hüperlink - ei leidnud URLi vastet."
#: relations.py:158
msgid "Invalid hyperlink - Incorrect URL match."
msgstr "Sobimatu hüperlink - vale URLi vaste."
#: relations.py:159
msgid "Invalid hyperlink - Object does not exist."
msgstr "Sobimatu hüperlink - objekti ei eksisteeri."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Sobimatu andmetüüp. Ootasin URLi sõne, sain {data_type}."
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "Objekti {slug_name}={value} ei eksisteeri."
#: relations.py:303
msgid "Invalid value."
msgstr "Sobimatu väärtus."
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Sobimatud andmed. Ootasin sõnastikku, kuid sain {datatype}."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "Selle välja väärtus peab olema unikaalne."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "Veerud {field_names} peavad moodustama unikaalse hulga."
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "Selle välja väärtus peab olema unikaalne veerus \"{date_field}\" märgitud kuupäeval."
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "Selle välja väärtus peab olema unikaalneveerus \"{date_field}\" märgitud kuul."
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "Selle välja väärtus peab olema unikaalneveerus \"{date_field}\" märgitud aastal."
#: versioning.py:39
msgid "Invalid version in \"Accept\" header."
msgstr "Sobimatu versioon \"Accept\" päises."
#: versioning.py:70 versioning.py:112
msgid "Invalid version in URL path."
msgstr "Sobimatu versioon URLi rajas."
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Sobimatu versioon hostinimes."
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Sobimatu versioon päringu parameetris."
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -5,13 +5,15 @@
# Translators:
# Etienne Desgagné <etienne.desgagne@evimbec.ca>, 2015
# Martin Maillard <martin.maillard@gmail.com>, 2015
# Martin Maillard <martin.maillard@gmail.com>, 2015
# Xavier Ordoquy <xordoquy@linovia.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 23:15+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/django-rest-framework/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -19,37 +21,49 @@ msgstr ""
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "En-tête « basic » non valide. Informations d'identification non fournies."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "En-tête « basic » non valide. Les informations d'identification ne doivent pas contenir d'espaces."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "En-tête « basic » non valide. Encodage base64 des informations d'identification incorrect."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Nom d'utilisateur et/ou mot de passe non valide(s)."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Utilisateur inactif ou supprimé."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "En-tête « token » non valide. Informations d'identification non fournies."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "En-tête « token » non valide. Un token ne doit pas contenir d'espaces."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Token non valide."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Utilisateur inactif ou supprimé."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Ce compte est désactivé."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Impossible de se connecter avec les informations d'identification fournies."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "\"username\" et \"password\" doivent être inclus."
#: exceptions.py:38
msgid "A server error occurred."
@ -71,229 +85,269 @@ msgstr "Informations d'authentification non fournies."
msgid "You do not have permission to perform this action."
msgstr "Vous n'avez pas la permission d'effectuer cette action."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr ""
msgstr "Pas trouvé."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Méthode \"{method}\" non autorisée."
#: exceptions.py:109
msgid "Could not satisfy the request Accept header."
msgstr ""
msgstr "L'en-tête « Accept » n'a pas pu être satisfaite."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr ""
msgstr "Type de média \"{media_type}\" non supporté."
#: exceptions.py:134
msgid "Request was throttled."
msgstr ""
msgstr "Requête ralentie."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Ce champ est obligatoire."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Ce champ ne peut être null."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" n'est pas un booléen valide."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Ce champ ne peut être vide."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Assurez-vous que ce champ comporte au plus {max_length} caractères."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Assurez-vous que ce champ comporte au moins {min_length} caractères."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Saisissez une adresse email valable."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Cette valeur ne satisfait pas le motif imposé."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _ et des traits d'union."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Saisissez une URL valide."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value}\" n'est pas un UUID valide."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Saisissez un nombre entier valide."
msgstr "Un nombre entier valide est requis."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Assurez-vous que cette valeur est inférieure ou égale à {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Assurez-vous que cette valeur est supérieure ou égale à {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "Chaîne de caractères trop longue."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Un nombre valide est requis."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Assurez-vous qu'il n'y a pas plus de {max_digits} chiffres au total."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Assurez-vous qu'il n'y a pas plus de {max_decimal_places} chiffres après la virgule."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Assurez-vous qu'il n'y a pas plus de {max_whole_digits} chiffres avant la virgule."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr ""
msgstr "La date + heure n'a pas le bon format. Utilisez un des formats suivants : {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr ""
msgstr "Attendait une date + heure mais a reçu une date."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr ""
msgstr "La date n'a pas le bon format. Utilisez un des formats suivants : {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr ""
msgstr "Attendait une date mais a reçu une date + heure."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr ""
msgstr "L'heure n'a pas le bon format. Utilisez un des formats suivants : {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" n'est pas un choix valide."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr ""
msgstr "Attendait une liste d'éléments mais a reçu \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Aucun fichier n'a été soumis."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "La donnée soumise n'est pas un fichier. Vérifiez le type d'encodage du formulaire."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Le nom de fichier n'a pu être déterminé."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "Le fichier soumis est vide."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Assurez-vous que le nom de fichier comporte au plus {max_length} caractères (il en comporte {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Transférez une image valide. Le fichier que vous avez transféré n'est pas une image, ou il est corrompu."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "Attendait un dictionnaire d'éléments mais a reçu \"{input_type}\"."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Page \"{page_number}\" non valide : {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "Curseur non valide"
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Clé primaire \"{pk_value}\" non valide - l'objet n'existe pas."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
msgstr "Type incorrect. Attendait une clé primaire, a reçu {data_type}."
#: relations.py:157
msgid "Invalid hyperlink - No URL match."
msgstr ""
msgstr "Lien non valide : pas d'URL correspondante."
#: relations.py:158
msgid "Invalid hyperlink - Incorrect URL match."
msgstr ""
msgstr "Lien non valide : URL correspondante incorrecte."
#: relations.py:159
msgid "Invalid hyperlink - Object does not exist."
msgstr ""
msgstr "Lien non valide : l'objet n'existe pas."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
msgstr "Type incorrect. Attendait une URL, a reçu {data_type}."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "L'object avec {slug_name}={value} n'existe pas."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Valeur non valide."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr ""
msgstr "Donnée non valide. Attendait un dictionnaire, a reçu {datatype}."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr "Aucune"
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr "Aucun élément à sélectionner."
#: validators.py:22
msgid "This field must be unique."
msgstr "Ce champ doit être unique."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "Les champs {field_names} doivent former un ensemble unique."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "Ce champ doit être unique pour la date \"{date_field}\"."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "Ce champ doit être unique pour le mois \"{date_field}\"."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "Ce champ doit être unique pour l'année \"{date_field}\"."
@ -305,22 +359,14 @@ msgstr "Version non valide dans l'en-tête « Accept »."
msgid "Invalid version in URL path."
msgstr "Version non valide dans l'URL."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Version non valide dans le nom d'hôte."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Version non valide dans le paramètre de requête."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Ce compte est désactivé."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Impossible de se connecter avec les informations d'identification fournies."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "\"username\" et \"password\" doivent être inclus."
#: views.py:82
msgid "Permission denied."
msgstr "Permission refusée."

View File

@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Hungarian (http://www.transifex.com/projects/p/django-rest-framework/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,37 +18,49 @@ msgstr ""
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Érvénytelen basic fejlécmező. Nem voltak megadva azonosítók."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Érvénytelen basic fejlécmező. Az azonosító karakterlánc nem tartalmazhat szóközöket."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Érvénytelen basic fejlécmező. Az azonosítók base64 kódolása nem megfelelő."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Érvénytelen felhasználónév/jelszó."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "A felhasználó nincs aktiválva vagy törölve lett."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Érvénytelen token fejlécmező. Nem voltak megadva azonosítók."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Érvénytelen token fejlécmező. A token karakterlánc nem tartalmazhat szóközöket."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Érvénytelen token."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "A felhasználó nincs aktiválva vagy törölve lett."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "A felhasználó tiltva van."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "A megadott azonosítókkal nem lehet bejelentkezni."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Tartalmaznia kell a \"felhasználónevet\" és a \"jelszót\"."
#: exceptions.py:38
msgid "A server error occurred."
@ -70,11 +82,12 @@ msgstr "Nem voltak megadva azonosítók."
msgid "You do not have permission to perform this action."
msgstr "Nincs jogosultsága a művelet végrehajtásához."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Nem található."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "A \"{method}\" metódus nem megengedett."
@ -83,6 +96,7 @@ msgid "Could not satisfy the request Accept header."
msgstr "A kérés Accept fejlécmezőjét nem lehetett kiszolgálni."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Nem támogatott média típus \"{media_type}\" a kérésben."
@ -90,161 +104,180 @@ msgstr "Nem támogatott média típus \"{media_type}\" a kérésben."
msgid "Request was throttled."
msgstr "A kérés korlátozva lett."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Ennek a mezőnek a megadása kötelező."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Ez a mező nem lehet null értékű."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "Az \"{input}\" nem egy érvényes logikai érték."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Ez a mező nem lehet üres."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Bizonyosodjon meg arról, hogy ez a mező legfeljebb {max_length} karakterből áll."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Bizonyosodjon meg arról, hogy ez a mező legalább {min_length} karakterből áll."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Adjon meg egy érvényes e-mail címet!"
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Ez az érték nem illeszkedik a szükséges mintázatra."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Az URL barát cím csak betűket, számokat, aláhúzásokat és kötőjeleket tartalmazhat."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Adjon meg egy érvényes URL-t!"
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Egy érvényes egész szám megadása szükséges."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Bizonyosodjon meg arról, hogy ez az érték legfeljebb {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Bizonyosodjon meg arról, hogy ez az érték legalább {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "A karakterlánc túl hosszú."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Egy érvényes szám megadása szükséges."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Bizonyosodjon meg arról, hogy a számjegyek száma összesen legfeljebb {max_digits}."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Bizonyosodjon meg arról, hogy a tizedes tört törtrészében levő számjegyek száma összesen legfeljebb {max_decimal_places}."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Bizonyosodjon meg arról, hogy a tizedes tört egész részében levő számjegyek száma összesen legfeljebb {max_whole_digits}."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "A dátum formátuma hibás. Használja ezek valamelyikét helyette: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Időt is tartalmazó dátum helyett egy időt nem tartalmazó dátum lett elküldve."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "A dátum formátuma hibás. Használja ezek valamelyikét helyette: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Időt nem tartalmazó dátum helyett egy időt is tartalmazó dátum lett elküldve."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Az idő formátuma hibás. Használja ezek valamelyikét helyette: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "Az \"{input}\" nem egy érvényes elem."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Elemek listája helyett \"{input_type}\" lett elküldve."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Semmilyen fájl sem került feltöltésre."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "Az elküldött adat nem egy fájl volt. Ellenőrizze a kódolás típusát az űrlapon!"
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "A fájlnév nem megállapítható."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "A küldött fájl üres."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Bizonyosodjon meg arról, hogy a fájlnév legfeljebb {max_length} karakterből áll (jelenlegi hossza: {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Töltsön fel egy érvényes képfájlt! A feltöltött fájl nem kép volt, vagy megsérült."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Érvénytelen oldal \"{page_number}\": {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Érvénytelen pk \"{pk_value}\" - az objektum nem létezik."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Helytelen típus. pk érték helyett {data_type} lett elküldve."
@ -261,38 +294,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "Érvénytelen link - Az objektum nem létezik."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Helytelen típus. URL karakterlánc helyett {data_type} lett elküldve."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "Nem létezik olyan objektum, amelynél {slug_name}={value}."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Érvénytelen érték."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Érvénytelen adat. Egy dictionary helyett {datatype} lett elküldve."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "Ennek a mezőnek egyedinek kell lennie."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "A {field_names} mezőnevek nem tartalmazhatnak duplikátumot."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "A mezőnek egyedinek kell lennie a \"{date_field}\" dátumra."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "A mezőnek egyedinek kell lennie a \"{date_field}\" hónapra."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "A mezőnek egyedinek kell lennie a \"{date_field}\" évre."
@ -304,22 +356,14 @@ msgstr "Érvénytelen verzió az \"Accept\" fejlécmezőben."
msgid "Invalid version in URL path."
msgstr "Érvénytelen verzió az URL elérési útban."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Érvénytelen verzió a hosztnévben."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Érvénytelen verzió a lekérdezési paraméterben."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "A felhasználó tiltva van."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "A megadott azonosítókkal nem lehet bejelentkezni."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Tartalmaznia kell a \"felhasználónevet\" és a \"jelszót\"."
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:51+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Indonesian (http://www.transifex.com/projects/p/django-rest-framework/language/id/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -17,36 +17,48 @@ msgstr ""
"Language: id\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr ""
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr ""
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr ""
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr ""
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr ""
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr ""
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr ""
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr ""
#: authentication.py:171
msgid "User inactive or deleted."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr ""
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr ""
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr ""
#: exceptions.py:38
@ -69,11 +81,12 @@ msgstr ""
msgid "You do not have permission to perform this action."
msgstr ""
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr ""
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr ""
@ -82,6 +95,7 @@ msgid "Could not satisfy the request Accept header."
msgstr ""
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr ""
@ -89,161 +103,180 @@ msgstr ""
msgid "Request was throttled."
msgstr ""
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr ""
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr ""
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr ""
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr ""
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr ""
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr ""
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr ""
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr ""
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr ""
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr ""
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr ""
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr ""
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr ""
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr ""
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr ""
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr ""
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr ""
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr ""
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr ""
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr ""
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr ""
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr ""
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr ""
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr ""
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr ""
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr ""
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr ""
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr ""
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr ""
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
@ -260,38 +293,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr ""
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr ""
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr ""
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr ""
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr ""
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
@ -303,22 +355,14 @@ msgstr ""
msgid "Invalid version in URL path."
msgstr ""
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr ""
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr ""
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -3,14 +3,16 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Antonio Mancina <antomicx@gmail.com>, 2015
# Mattia Procopio <promat85@gmail.com>, 2015
# Xavier Ordoquy <xordoquy@linovia.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 23:07+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/django-rest-framework/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,37 +20,49 @@ msgstr ""
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr ""
msgstr "Header di base invalido. Credenziali non fornite."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr ""
msgstr "Header di base invalido. Le credenziali non dovrebbero contenere spazi."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr ""
msgstr "Credenziali non correttamente codificate in base64."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Nome utente/password non validi"
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Utente inattivo o eliminato."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Header del token non valido. Credenziali non fornite."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Header del token non valido. Il contenuto del token non dovrebbe contenere spazi."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Token invalido."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Utente inattivo o eliminato."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "L'account dell'utente è disabilitato"
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Impossibile eseguire il log in con le credenziali immesse."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Deve includere \"nome utente\" e \"password\"."
#: exceptions.py:38
msgid "A server error occurred."
@ -70,11 +84,12 @@ msgstr "Non sono state immesse le credenziali di autenticazione."
msgid "You do not have permission to perform this action."
msgstr "Non hai l'autorizzazione per eseguire questa azione."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Non trovato."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Metodo \"{method}\" non consentito"
@ -83,197 +98,232 @@ msgid "Could not satisfy the request Accept header."
msgstr "Impossibile soddisfare l'header \"Accept\" presente nella richiesta."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Tipo di media \"{media_type}\"non supportato."
#: exceptions.py:134
msgid "Request was throttled."
msgstr ""
msgstr "La richiesta è stata limitata (throttled)."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Campo obbligatorio."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Il campo non puà essere nullo."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" non è un valido valore booleano."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Questo campo non può essere omesso."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Assicurati che questo campo non abbia più di {max_length} caratteri."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Assicurati che questo campo abbia almeno {max_length} caratteri."
msgstr "Assicurati che questo campo abbia almeno {min_length} caratteri."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Inserisci un indirizzo email valido."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr ""
msgstr "Questo valore non corrisponde alla sequenza richiesta."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Immetti uno \"slug\" valido che consista di lettere, numeri, underscore o trattini."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Inserisci un URL valido"
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value}\" non è un UUID valido."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "È richiesto un numero intero valido."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Assicurati che il valore sia minore o uguale a {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Assicurati che il valore sia maggiore o uguale a {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr ""
msgstr "Stringa troppo lunga."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "È richiesto un numero valido."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Assicurati che non ci siano più di {max_digits} cifre in totale."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Assicurati che non ci siano più di {max_decimal_places} cifre decimali."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Assicurati che non ci siano più di {max_whole_digits} cifre prima del separatore decimale."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "L'oggetto di tipo datetime è in un formato errato. Usa uno dei seguenti formati: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Atteso un oggetto di tipo datetime ma l'oggetto ricevuto è di tipo date."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "La data è in un formato errato. Usa uno dei seguenti formati: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Atteso un oggetto di tipo date ma l'oggetto ricevuto è di tipo datetime."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr ""
msgstr "L'orario ha un formato errato. Usa uno dei seguenti formati: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" non è una scelta valida."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Attesa una lista di oggetti ma l'oggetto ricevuto è di tipo \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Non è stato inviato alcun file."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr ""
msgstr "I dati inviati non corrispondono ad un file. Si prega di controllare il tipo di codifica nel form."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Il nome del file non può essere determinato."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "Il file inviato è vuoto."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr ""
msgstr "Assicurati che il nome del file abbia, al più, {max_length} caratteri (attualmente ne ha {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
msgstr "Invia un'immagine valida. Il file che hai inviato non era un'immagine o era corrotto."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "Era atteso un dizionario di oggetti ma il dato ricevuto è di tipo \"{input_type}\"."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr ""
msgstr "Pagina \"{page_number}\" non valida: {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "Cursore non valido"
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr ""
msgstr "Pk \"{pk_value}\" non valido - l'oggetto non esiste."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
msgstr "Tipo non corretto. Era atteso un valore pk, ma è stato ricevuto {data_type}."
#: relations.py:157
msgid "Invalid hyperlink - No URL match."
msgstr ""
msgstr "Collegamento non valido - Nessuna corrispondenza di URL."
#: relations.py:158
msgid "Invalid hyperlink - Incorrect URL match."
msgstr ""
msgstr "Collegamento non valido - Corrispondenza di URL non corretta."
#: relations.py:159
msgid "Invalid hyperlink - Object does not exist."
msgstr ""
msgstr "Collegamento non valido - L'oggetto non esiste."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
msgstr "Tipo non corretto. Era attesa una stringa URL, ma è stato ricevuto {data_type}."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr ""
msgstr "L'oggetto con {slug_name}={value} non esiste."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Valore non valido."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Dati non validi. Era atteso un dizionario, ma si è ricevuto {datatype}."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
@ -281,45 +331,41 @@ msgid "This field must be unique."
msgstr "Questo campo deve essere unico."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
msgstr "I campi {field_names} devono costituire un insieme unico."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
msgstr "Questo campo deve essere unico per la data \"{date_field}\"."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
msgstr "Questo campo deve essere unico per il mese \"{date_field}\"."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
msgstr "Questo campo deve essere unico per l'anno \"{date_field}\"."
#: versioning.py:39
msgid "Invalid version in \"Accept\" header."
msgstr ""
msgstr "Versione non valida nell'header \"Accept\"."
#: versioning.py:70 versioning.py:112
msgid "Invalid version in URL path."
msgstr ""
msgstr "Versione non valida nella sequenza URL."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
msgstr "Versione non valida nel nome dell'host."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Versione non valida nel parametro della query."
#: views.py:82
msgid "Permission denied."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "L'account dell'utente è disabilitato"
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Impossibile eseguire il log in con le credenziali immesse."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Deve includere \"nome utente\" e \"password\"."

View File

@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Korean (Korea) (http://www.transifex.com/projects/p/django-rest-framework/language/ko_KR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,37 +18,49 @@ msgstr ""
"Language: ko_KR\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "기본 헤더(basic header)가 유효하지 않습니다. 인증데이터(credentials)가 제공되지 않았습니다."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "기본 헤더(basic header)가 유효하지 않습니다. 인증데이터(credentials) 문자열은 빈칸(spaces)을 포함하지 않아야 합니다."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "기본 헤더(basic header)가 유효하지 않습니다. 인증데이터(credentials)가 base64로 적절히 부호화(encode)되지 않았습니다."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "아이디/비밀번호가 유효하지 않습니다."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "계정이 중지되었거나 삭제되었습니다."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "토큰 헤더가 유효하지 않습니다. 인증데이터(credentials)가 제공되지 않았습니다."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "토큰 헤더가 유효하지 않습니다. 토큰 문자열은 빈칸(spaces)를 포함하지 않아야 합니다."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "토큰이 유효하지 않습니다."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "계정이 중지되었거나 삭제되었습니다."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "사용자 계정을 사용할 수 없습니다."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "제공된 인증데이터(credentials)로는 로그인할 수 없습니다."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "\"아이디\"와 \"비밀번호\"를 포함해야 합니다."
#: exceptions.py:38
msgid "A server error occurred."
@ -70,19 +82,21 @@ msgstr "자격 인증데이터(authentication credentials)가 제공되지 않
msgid "You do not have permission to perform this action."
msgstr "이 작업을 "
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "찾을 수 없습니다."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "메소드(Method) \"{method}\"는 허용되지 않습니다."
#: exceptions.py:109
msgid "Could not satisfy the request Accept header."
msgstr ""
msgstr "Accept header 요청을 만족할 수 없습니다."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "요청된 \"{media_type}\"가 지원되지 않는 미디어 형태입니다."
@ -90,161 +104,180 @@ msgstr "요청된 \"{media_type}\"가 지원되지 않는 미디어 형태입니
msgid "Request was throttled."
msgstr "요청이 지연(throttled)되었습니다."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "이 항목을 채워주십시오."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr ""
msgstr "이 칸은 null일 수 없습니다."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\"이 유효하지 않은 부울(boolean)입니다."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr ""
msgstr "이 칸은 blank일 수 없습니다."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "이 칸이 글자 수가 {max_length} 이하인지 확인하십시오."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "이 칸이 글자 수가 적어도 {min_length} 이상인지 확인하십시오."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "유효한 이메일 주소를 입력하십시오."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "형식에 맞지 않는 값입니다."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "문자, 숫자, 밑줄( _ ) 또는 하이픈( - )으로 이루어진 유효한 \"slug\"를 입력하십시오."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "유효한 URL을 입력하십시오."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value}\"가 유효하지 않은 UUID 입니다."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "유효한 정수(integer)를 넣어주세요."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "이 값이 {max_value}보다 작거나 같은지 확인하십시오."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "이 값이 {min_value}보다 크거나 같은지 확인하십시오."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "문자열 값이 너무 큽니다."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "유효한 숫자를 넣어주세요."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "전체 숫자(digits)가 {max_digits} 이하인지 확인하십시오."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "소수점 자릿수가 {max_decimal_places} 이하인지 확인하십시오."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "소수점 자리 앞에 숫자(digits)가 {max_whole_digits} 이하인지 확인하십시오."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Datetime의 포멧이 잘못되었습니다. 이 형식들 중 한가지를 사용하세요: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "예상된 datatime 대신 date를 받았습니다."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Date의 포멧이 잘못되었습니다. 이 형식들 중 한가지를 사용하세요: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "예상된 date 대신 datetime을 받았습니다."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Time의 포멧이 잘못되었습니다. 이 형식들 중 한가지를 사용하세요: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\"이 유효하지 않은 선택(choice)입니다."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "아이템 리스트가 예상되었으나 \"{input_type}\"를 받았습니다."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "파일이 제출되지 않았습니다."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "제출된 데이터는 파일이 아닙니다. 제출된 서식의 인코딩 형식을 확인하세요."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "파일명을 알 수 없습니다."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "제출된 파일이 비어있습니다."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "이 파일명의 글자수가 최대 {max_length}를 넘지 않는지 확인하십시오. (이것은 {length}가 있습니다)."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "유효한 이미지 파일을 업로드 하십시오. 업로드 하신 파일은 이미지 파일이 아니거나 손상된 이미지 파일입니다."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "아이템 딕셔너리가 예상되었으나 \"{input_type}\" 타입을 받았습니다."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "유효하지 않은 page \"{page_number}\": {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "커서(cursor)가 유효하지 않습니다."
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "유효하지 않은 pk \"{pk_value}\" - 객체가 존재하지 않습니다."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "잘못된 형식입니다. pk 값 대신 {data_type}를 받았습니다."
@ -261,65 +294,76 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "유효하지 않은 하이퍼링크 - 객체가 존재하지 않습니다."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "잘못된 형식입니다. URL 문자열을 예상했으나 {data_type}을 받았습니다."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "{slug_name}={value} 객체가 존재하지 않습니다."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "값이 유효하지 않습니다."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "유효하지 않은 데이터. 딕셔너리(dictionary)대신 {datatype}를 받았습니다."
#: validators.py:22
msgid "This field must be unique."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "이 칸은 반드시 고유해야 합니다."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
#: versioning.py:39
msgid "Invalid version in \"Accept\" header."
msgstr ""
msgstr "\"Accept\" header내 버전이 유효하지 않습니다."
#: versioning.py:70 versioning.py:112
msgid "Invalid version in URL path."
msgstr ""
msgstr "URL path내 버전이 유효하지 않습니다."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
msgstr "hostname내 버전이 유효하지 않습니다."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "쿼리 파라메터내 버전이 유효하지 않습니다."
#: views.py:82
msgid "Permission denied."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "사용자 계정을 사용할 수 없습니다."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "제공된 인증데이터(credentials)로는 로그인할 수 없습니다."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "\"아이디\"와 \"비밀번호\"를 포함해야 합니다."

View File

@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Macedonian (http://www.transifex.com/projects/p/django-rest-framework/language/mk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,37 +18,49 @@ msgstr ""
"Language: mk\n"
"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Невалиден основен header. Не се внесени податоци за автентикација."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Невалиден основен header. Автентикационата низа не треба да содржи празни места."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Невалиден основен header. Податоците за автентикација не се енкодирани со base64."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Невалидно корисничко име/лозинка."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Корисникот е деактивиран или избришан."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Невалиден токен header. Не се внесени податоци за најава."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Невалиден токен во header. Токенот не треба да содржи празни места."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Невалиден токен."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Корисникот е деактивиран или избришан."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Сметката на корисникот е деактивирана."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Не може да се најавите со податоците за најава."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Мора да се внесе „username“ и „password“."
#: exceptions.py:38
msgid "A server error occurred."
@ -70,11 +82,12 @@ msgstr "Не се внесени податоци за најава."
msgid "You do not have permission to perform this action."
msgstr "Немате дозвола да го сторите ова."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Не е пронајдено ништо."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Методата \"{method}\" не е дозволена."
@ -83,6 +96,7 @@ msgid "Could not satisfy the request Accept header."
msgstr "Не може да се исполни барањето на Accept header-от."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Media типот „{media_type}“ не е поддржан."
@ -90,161 +104,180 @@ msgstr "Media типот „{media_type}“ не е поддржан."
msgid "Request was throttled."
msgstr "Request-от е забранет заради ограничувања."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Ова поле е задолжително."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Ова поле не смее да биде недефинирано."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" не е валиден boolean."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Ова поле не смее да биде празно."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Ова поле не смее да има повеќе од {max_length} знаци."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Ова поле мора да има барем {min_length} знаци."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Внесете валидна email адреса."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Ова поле не е по правилната шема/барање."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Внесете валидно име што содржи букви, бројки, долни црти или црти."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Внесете валиден URL."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Задолжителен е валиден цел број."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Вредноста треба да биде помала или еднаква на {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Вредноста треба да биде поголема или еднаква на {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "Вредноста е преголема."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Задолжителен е валиден број."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Не смее да има повеќе од {max_digits} цифри вкупно."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Не смее да има повеќе од {max_decimal_places} децимални места."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Не смее да има повеќе од {max_whole_digits} цифри пред децималната точка."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Датата и времето се со погрешен формат. Користете го овој формат: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Очекувано беше дата и време, а внесено беше само дата."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Датата е со погрешен формат. Користете го овој формат: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Очекувана беше дата, а внесени беа и дата и време."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Времето е со погрешен формат. Користете го овој формат: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "„{input}“ не е валиден избор."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Очекувана беше листа, а внесено беше „{input_type}“."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Ниеден фајл не е качен (upload-иран)."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "Испратените податоци не се фајл. Проверете го encoding-от на формата."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Не може да се открие име на фајлот."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "Качениот (upload-иран) фајл е празен."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Името на фајлот треба да има највеќе {max_length} знаци (а има {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Качете (upload-ирајте) валидна слика. Фајлот што го качивте не е валидна слика или е расипан."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Невалидна страна „{page_number}“: {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Невалиден pk „{pk_value}“ - објектот не постои."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Неточен тип. Очекувано беше pk, а внесено {data_type}."
@ -261,38 +294,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "Невалиден хиперлинк - Објектот не постои."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Неточен тип. Очекувано беше URL, a внесено {data_type}."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "Објектот со {slug_name}={value} не постои."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Невалидна вредност."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Невалидни податоци. Очекуван беше dictionary, а внесен {datatype}."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "Ова поле мора да биде уникатно."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "Полињата {field_names} заедно мора да формираат уникатен збир."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "Ова поле мора да биде уникатно за „{date_field}“ датата."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "Ова поле мора да биде уникатно за „{date_field}“ месецот."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "Ова поле мора да биде уникатно за „{date_field}“ годината."
@ -304,22 +356,14 @@ msgstr "Невалидна верзија во „Accept“ header-от."
msgid "Invalid version in URL path."
msgstr "Невалидна верзија во URL патеката."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Невалидна верзија во hostname-от."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Невалидна верзија во query параметарот."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Сметката на корисникот е деактивирана."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Не може да се најавите со податоците за најава."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Мора да се внесе „username“ и „password“."
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Dutch (http://www.transifex.com/projects/p/django-rest-framework/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -17,36 +17,48 @@ msgstr ""
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr ""
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr ""
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr ""
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr ""
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr ""
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr ""
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr ""
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr ""
#: authentication.py:171
msgid "User inactive or deleted."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr ""
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr ""
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr ""
#: exceptions.py:38
@ -69,11 +81,12 @@ msgstr ""
msgid "You do not have permission to perform this action."
msgstr ""
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr ""
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr ""
@ -82,6 +95,7 @@ msgid "Could not satisfy the request Accept header."
msgstr ""
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr ""
@ -89,161 +103,180 @@ msgstr ""
msgid "Request was throttled."
msgstr ""
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr ""
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr ""
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr ""
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr ""
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr ""
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr ""
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr ""
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr ""
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr ""
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr ""
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr ""
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr ""
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr ""
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr ""
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr ""
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr ""
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr ""
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr ""
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr ""
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr ""
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr ""
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr ""
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr ""
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr ""
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr ""
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr ""
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr ""
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr ""
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr ""
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
@ -260,38 +293,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr ""
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr ""
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr ""
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr ""
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr ""
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
@ -303,22 +355,14 @@ msgstr ""
msgid "Invalid version in URL path."
msgstr ""
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr ""
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr ""
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -4,14 +4,15 @@
#
# Translators:
# Janusz Harkot <jh@blueice.pl>, 2015
# Piotr Jakimiak <legolass71@gmail.com>, 2015
# Maciek Olko <maciej.olko@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 23:12+0000\n"
"Last-Translator: Janusz Harkot <jh@blueice.pl>\n"
"Language-Team: Polish (http://www.transifex.com/projects/p/django-rest-framework/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -19,37 +20,49 @@ msgstr ""
"Language: pl\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Niepoprawny podstawowy nagłówek. Brak danych uwierzytelniających."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Niepoprawny podstawowy nagłówek. Ciąg znaków danych uwierzytelniających nie powinien zawierać spacji."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Niepoprawny podstawowy nagłówek. Niewłaściwe kodowanie base64 danych uwierzytelniających."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Niepoprawna nazwa użytkownika lub hasło."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Użytkownik nieaktywny lub usunięty."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Niepoprawny nagłówek tokena. Brak danych uwierzytelniających."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Niepoprawny nagłówek tokena. Token nie może zawierać odstępów."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Niepoprawny token."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Użytkownik nieaktywny lub usunięty."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Konto użytkownika jest nieaktywne."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Podane dane uwierzytelniające nie pozwalają na zalogowanie."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Musi zawierać \"username\" i \"password\"."
#: exceptions.py:38
msgid "A server error occurred."
@ -71,11 +84,12 @@ msgstr "Nie podano danych uwierzytelniających."
msgid "You do not have permission to perform this action."
msgstr "Nie masz uprawnień, by wykonać tę czynność."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Nie znaleziono."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Niedozwolona metoda \"{method}\"."
@ -84,6 +98,7 @@ msgid "Could not satisfy the request Accept header."
msgstr "Nie można zaspokoić nagłówka Accept żądania."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Brak wsparcia dla żądanego typu danych \"{media_type}\"."
@ -91,161 +106,180 @@ msgstr "Brak wsparcia dla żądanego typu danych \"{media_type}\"."
msgid "Request was throttled."
msgstr "Żądanie zostało zdławione."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "To pole jest wymagane."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Pole nie może mieć wartości null."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" nie jest poprawną wartością logiczną."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "To pole nie może być puste."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Upewnij się, że to pole ma nie więcej niż {max_length} znaków."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Upewnij się, że pole ma co najmniej {min_length} znaków."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Podaj poprawny adres e-mail."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Ta wartość nie pasuje do wymaganego wzorca."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Wprowadź poprawną wartość pola typu \"slug\", składającą się ze znaków łacińskich, cyfr, podkreślenia lub myślnika."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Wprowadź poprawny adres URL."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value}\" nie jest poprawnym UUID."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Wymagana poprawna liczba całkowita."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Upewnij się, że ta wartość jest mniejsza lub równa {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Upewnij się, że ta wartość jest większa lub równa {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "Za długi ciąg znaków."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Wymagana poprawna liczba."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Upewnij się, że liczba ma nie więcej niż {max_digits} cyfr."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Upewnij się, że liczba ma nie więcej niż {max_decimal_places} cyfr dziesiętnych."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Upewnij się, że liczba ma nie więcej niż {max_whole_digits} cyfr całkowitych."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Wartość daty z czasem ma zły format. Użyj jednego z dostępnych formatów: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Oczekiwano datę z czasem, otrzymano tylko datę."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Data ma zły format. Użyj jednego z tych formatów: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Oczekiwano daty a otrzymano datę z czasem."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Błędny format czasu. Użyj jednego z dostępnych formatów: {format}"
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" nie jest poprawnym wyborem."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Oczekiwano listy elementów, a otrzymano dane typu \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Nie przesłano pliku."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "Przesłane dane nie były plikiem. Sprawdź typ kodowania formatki."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Nie można określić nazwy pliku."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "Przesłany plik jest pusty."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Upewnij się, że nazwa pliku ma długość co najwyżej {max_length} znaków (aktualnie ma {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Prześlij poprawny plik graficzny. Przesłany plik albo nie jest grafiką lub jest uszkodzony."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "Oczekiwano słownika, ale otrzymano \"{input_type}\"."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Niepoprawna strona \"{page_number}\": {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "Niepoprawny wskaźnik"
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Błędny klucz główny \"{pk_value}\" - obiekt nie istnieje."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Błędny typ danych. Oczekiwano wartość klucza głównego, otrzymano {data_type}."
@ -262,38 +296,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "Błędny hyperlink - obiekt nie istnieje."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Błędny typ danych. Oczekiwano adresu URL, otrzymano {data_type}"
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "Obiekt z polem {slug_name}={value} nie istnieje"
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Niepoprawna wartość."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Niepoprawne dane. Oczekiwano słownika, otrzymano {datatype}."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr "None"
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr "Nie wybrano wartości."
#: validators.py:22
msgid "This field must be unique."
msgstr "Wartość dla tego pola musi być unikalna."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "Pola {field_names} muszą tworzyć unikalny zestaw."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "To pole musi mieć unikalną wartość dla jednej daty z pola \"{date_field}\"."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "To pole musi mieć unikalną wartość dla konkretnego miesiąca z pola \"{date_field}\"."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "To pole musi mieć unikalną wartość dla konkretnego roku z pola \"{date_field}\"."
@ -305,22 +358,14 @@ msgstr "Błędna wersja w nagłówku \"Accept\"."
msgid "Invalid version in URL path."
msgstr "Błędna wersja w ścieżce URL."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Błędna wersja w nazwie hosta."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Błędna wersja w parametrach zapytania."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Konto użytkownika jest nieaktywne."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Podane dane uwierzytelniające nie pozwalają na zalogowanie."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Musi zawierać \"username\" i \"password\"."
#: views.py:82
msgid "Permission denied."
msgstr "Brak uprawnień."

View File

@ -9,9 +9,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/django-rest-framework/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -19,37 +19,49 @@ msgstr ""
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Cabeçalho básico inválido. Credenciais não fornecidas."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Cabeçalho básico inválido. String de credenciais não deve incluir espaços."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Cabeçalho básico inválido. Credenciais codificadas em base64 incorretamente."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Usário ou senha inválido."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Usuário inativo ou removido."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Cabeçalho de token inválido. Credenciais não fornecidas."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Cabeçalho de token inválido. String de token não deve incluir espaços."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Token inválido."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Usuário inativo ou removido."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Conta de usário desabilitada."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Impossível fazer login com as credenciais fornecidas."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Obrigatório incluir \"usuário\" e \"senha\"."
#: exceptions.py:38
msgid "A server error occurred."
@ -71,11 +83,12 @@ msgstr "As credenciais de autenticação não foram fornecidas."
msgid "You do not have permission to perform this action."
msgstr "Você não tem persmissao para executar essa ação."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Não encontrado."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Método \"{method}\" não é permitido."
@ -84,6 +97,7 @@ msgid "Could not satisfy the request Accept header."
msgstr "Não foi possível satisfazer a requisição do cabeçalho Accept."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Media type \"{media_type}\" no pedido não é suportado."
@ -91,161 +105,180 @@ msgstr "Media type \"{media_type}\" no pedido não é suportado."
msgid "Request was throttled."
msgstr "Pedido foi limitado."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Este campo é obrigatório."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Este campo não pode ser nulo."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" não é um valor boleano válido."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Este campo não pode ser em branco."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Certifique-se de que este campo não tenha mais de {max_length} caracteres."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Certifique-se de que este campo tenha mais de {min_length} caracteres."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Insira um endereço de email válido."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Este valor não corresponde ao padrão exigido."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Entrar um \"slug\" válido que consista de letras, números, sublinhados ou hífens."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Entrar um URL válido."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value}\" não é um UUID valid."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Um número inteiro válido é exigido."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Certifique-se de que este valor seja inferior ou igual a {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Certifque-se de que este valor seja maior ou igual a {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "Valor da string é muito grande."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Um número válido é necessário."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Certifique-se de que não haja mais de {max_digits} dígitos no total."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Certifique-se de que não haja mais de {max_decimal_places} casas decimais."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Certifique-se de que não haja mais de {max_whole_digits} dígitos antes do ponto decimal."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Formato inválido para data e hora. Use um dos formatos a seguir: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Data e hora são necessários mas apenas data foi encontrada."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Formato inválido para data. Use um dos formatos a seguir: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Necessário uma data mas recebeu uma data e hora."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Tempo tem formato errado. Usa um desses em vez disso: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" não é um escolha válido."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Necessário uma lista de itens, mas recebeu tipo \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Ficheiro não foi submetido."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "Os dados submetidos nao foram um ficheiro. Certifique-se do tipo de codificação no formulário."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Nome do arquivo não pode ser determinado."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "O arquivo submetido ésta vázio."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Certifique-se de que o nome do ficheiro tem menos de {max_length} caracteres (tem {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Fazer upload de um imagem válido. O arquivo mandou não foi um imagem ou foi corrupto."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "Esperou um dicionário de itens mas recebeu tipo \"{input_type}\"."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Página inválido \"{page_number}\": {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "Cursor invalído"
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Pk inválido \"{pk_value}\" - objeto não existe."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Tipo incorreto. Necessário valor pk, recebeu {data_type}."
@ -262,38 +295,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "Hyperlink inválido - objeto não existe."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Tipo incorreto. Necessário string URL, recebeu {data_type}."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "Objeto com {slug_name}={value} não existe."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Valor inválido."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Data inválido. Necessário um dicionário mas recebeu {datatype}."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "Esse campo deve ser unico."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "Os campos {field_names} devem criar um set unico."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "O campo deve ser unico pela data \"{date_field}\"."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "O campo deve ser unico pelo anô \"{date_field}\"."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "O campo deve ser unico pela mês \"{date_field}\"."
@ -305,22 +357,14 @@ msgstr "Versão inválido no cabeçalho \"Accept\"."
msgid "Invalid version in URL path."
msgstr "Versão inválido no caminho de URL."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Versão inválido no hostname."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Versão inválida no parâmetro de query."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Conta de usário desabilitada."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Impossível fazer login com as credenciais fornecidas."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Obrigatório incluir \"usuário\" e \"senha\"."
#: views.py:82
msgid "Permission denied."
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,368 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:51+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/django-rest-framework/language/pt_PT/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt_PT\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr ""
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr ""
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr ""
#: authentication.py:97
msgid "Invalid username/password."
msgstr ""
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr ""
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr ""
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr ""
#: authentication.py:179
msgid "Invalid token."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr ""
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr ""
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr ""
#: exceptions.py:38
msgid "A server error occurred."
msgstr ""
#: exceptions.py:73
msgid "Malformed request."
msgstr ""
#: exceptions.py:78
msgid "Incorrect authentication credentials."
msgstr ""
#: exceptions.py:83
msgid "Authentication credentials were not provided."
msgstr ""
#: exceptions.py:88
msgid "You do not have permission to perform this action."
msgstr ""
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr ""
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr ""
#: exceptions.py:109
msgid "Could not satisfy the request Accept header."
msgstr ""
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr ""
#: exceptions.py:134
msgid "Request was throttled."
msgstr ""
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr ""
#: fields.py:163
msgid "This field may not be null."
msgstr ""
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr ""
#: fields.py:559
msgid "This field may not be blank."
msgstr ""
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr ""
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr ""
#: fields.py:598
msgid "Enter a valid email address."
msgstr ""
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr ""
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr ""
#: fields.py:632
msgid "Enter a valid URL."
msgstr ""
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
#: fields.py:662
msgid "A valid integer is required."
msgstr ""
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr ""
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr ""
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr ""
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr ""
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr ""
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr ""
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr ""
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr ""
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr ""
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr ""
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr ""
#: fields.py:1085
msgid "No file was submitted."
msgstr ""
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr ""
#: fields.py:1087
msgid "No filename could be determined."
msgstr ""
#: fields.py:1088
msgid "The submitted file is empty."
msgstr ""
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr ""
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr ""
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr ""
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
#: relations.py:157
msgid "Invalid hyperlink - No URL match."
msgstr ""
#: relations.py:158
msgid "Invalid hyperlink - Incorrect URL match."
msgstr ""
#: relations.py:159
msgid "Invalid hyperlink - Object does not exist."
msgstr ""
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr ""
#: relations.py:303
msgid "Invalid value."
msgstr ""
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr ""
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr ""
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
#: versioning.py:39
msgid "Invalid version in \"Accept\" header."
msgstr ""
#: versioning.py:70 versioning.py:112
msgid "Invalid version in URL path."
msgstr ""
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr ""
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -3,52 +3,66 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Kirill Tarasenko, 2015
# koodjo <koodjo@mail.ru>, 2015
# Mikhail Dmitriev <mktums@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Russian (http://www.transifex.com/projects/p/django-rest-framework/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\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"
"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"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Недопустимый заголовок. Не предоставлены учетные данные."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Недопустимый заголовок. Учетные данные не должны содержать пробелов."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Недопустимый заголовок. Учетные данные некорректно закодированны в base64."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Недопустимые имя пользователя или пароль."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Пользователь неактивен или удален."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Недопустимый заголовок токена. Не предоставлены учетные данные."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Недопустимый заголовок токена. Токен не должен содержать пробелов."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Недопустимый токен."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Пользователь неактивен или удален."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Учетная запись пользователя отключена."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Невозможно войти с предоставленными учетными данными."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Должен включать \"username\" и \"password\"."
#: exceptions.py:38
msgid "A server error occurred."
@ -70,11 +84,12 @@ msgstr "Учетные данные не были предоставлены."
msgid "You do not have permission to perform this action."
msgstr "У вас нет прав для выполнения этой операции."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Не найдено."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Метод \"{method}\" не разрешен."
@ -83,6 +98,7 @@ msgid "Could not satisfy the request Accept header."
msgstr "Невозможно удовлетворить \"Accept\" заголовок запроса."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Неподдерживаемый тип данных \"{media_type}\" в запросе."
@ -90,161 +106,180 @@ msgstr "Неподдерживаемый тип данных \"{media_type}\" в
msgid "Request was throttled."
msgstr "Запрос был проигнорирован."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Это поле обязательно."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Это поле не может быть null."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" не является корректным булевым значением."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Это поле не может быть пустым."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Убедитесь что в этом поле не больше {max_length} символов."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Убедитесь что в этом поле как минимум {min_length} символов."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Введите корректный адрес электронной почты."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Значение не соответствует требуемому паттерну."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Введите корректный \"slug\", состоящий из букв, цифр, знаков подчеркивания или дефисов."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Введите корректный URL."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value}\" не является корректным UUID."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Требуется целочисленное значение."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Убедитесь что значение меньше или равно {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Убедитесь что значение больше или равно {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "Слишком длинное значение."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Требуется численное значение."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Убедитесь что в числе не больше {max_digits} знаков."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Убедитесь что в числе не больше {max_decimal_places} знаков в дробной части."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Убедитесь что в цисле не больше {max_whole_digits} знаков в целой части."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Неправильный формат datetime. Используйте один из этих форматов: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Ожидался datetime, но был получен date."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Неправильный формат date. Используйте один из этих форматов: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Ожидался date, но был получен datetime."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Неправильный формат времени. Используйте один из этих форматов: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" не является корректным значением."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Ожидался list со значениями, но был получен \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Не был загружен файл."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "Загруженный файл не является корректным файлом. "
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Невозможно определить имя файла."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "Загруженный файл пуст."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Убедитесь что имя файла меньше {max_length} символов (сейчас {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Загрузите корректное изображение. Загруженный файл не является изображением, либо является испорченным."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "Ожидался словарь со значениями, но был получен \"{input_type}\"."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Недопустимая страница \"{page_number}\": {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "Не корректный курсор"
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Недопустимый первичный ключ \"{pk_value}\" - объект не существует."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Некорректный тип. Ожилалось значение первичного ключа, получен {data_type}."
@ -261,65 +296,76 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "Недопустимая ссылка - объект не существует."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Некорректный тип. Ожидался URL, получен {data_type}."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "Объект с {slug_name}={value} не существует."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Недопустимое значение."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Недопустимые данные. Ожидался dictionary, но был получен {datatype}."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr ""
msgstr "Это поле должно быть уникально."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
msgstr "Поля {field_names} должны производить массив с уникальными значениями."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
msgstr "Это поле должно быть уникально для даты \"{date_field}\"."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
msgstr "Это поле должно быть уникально для месяца \"{date_field}\"."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
msgstr "Это поле должно быть уникально для года \"{date_field}\"."
#: versioning.py:39
msgid "Invalid version in \"Accept\" header."
msgstr ""
msgstr "Недопустимая версия в заголовке \"Accept\"."
#: versioning.py:70 versioning.py:112
msgid "Invalid version in URL path."
msgstr ""
msgstr "Недопустимая версия в пути URL."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
msgstr "Недопустимая версия в имени хоста."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Недопустимая версия в параметре запроса."
#: views.py:82
msgid "Permission denied."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Учетная запись пользователя отключена."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Невозможно войти с предоставленными учетными данными."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Должен включать \"username\" и \"password\"."

View File

@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Slovak (http://www.transifex.com/projects/p/django-rest-framework/language/sk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,37 +18,49 @@ msgstr ""
"Language: sk\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Nesprávna hlavička. Neboli poskytnuté prihlasovacie údaje."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Nesprávna hlavička. Prihlasovacie údaje nesmú obsahovať medzery."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Nesprávna hlavička. Prihlasovacie údaje nie sú správne zakódované pomocou metódy base64."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Nesprávne prihlasovacie údaje."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Daný používateľ je neaktívny, alebo zmazaný."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Nesprávna token hlavička. Neboli poskytnuté prihlasovacie údaje."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Nesprávna token hlavička. Token hlavička nesmie obsahovať medzery."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Nesprávny token."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Daný používateľ je neaktívny, alebo zmazaný."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Daný používateľ je zablokovaný."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "S danými prihlasovacími údajmi nebolo možné sa prihlásiť."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Musí obsahovať parametre \"používateľské meno\" a \"heslo\"."
#: exceptions.py:38
msgid "A server error occurred."
@ -70,11 +82,12 @@ msgstr "Prihlasovacie údaje neboli zadané."
msgid "You do not have permission to perform this action."
msgstr "K danej akcii nemáte oprávnenie."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Nebolo nájdené."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Metóda \"{method}\" nie je povolená."
@ -83,243 +96,274 @@ msgid "Could not satisfy the request Accept header."
msgstr "Nie je možné vyhovieť požiadavku v hlavičke \"Accept\"."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Požiadavok obsahuje nepodporovaný media type: \"{media_type}\"."
#: exceptions.py:134
msgid "Request was throttled."
msgstr ""
msgstr "Požiadavok bol obmedzený, z dôvodu prekročenia limitu."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr ""
msgstr "Toto pole je povinné."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr ""
msgstr "Toto pole nemôže byť nulové."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr ""
msgstr "\"{input}\" je validný boolean."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr ""
msgstr "Toto pole nemože byť prázdne."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr ""
msgstr "Uistite sa, že toto pole nemá viac ako {max_length} znakov."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr ""
msgstr "Uistite sa, že toto pole má viac ako {min_length} znakov."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr ""
msgstr "Vložte správnu emailovú adresu."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr ""
msgstr "Toto pole nezodpovedá požadovanému formátu."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr ""
msgstr "Zadajte platný \"slug\", ktorý obsahuje len malé písmená, čísla, spojovník alebopodtržítko."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr ""
msgstr "Zadajte platnú URL adresu."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value}\" nie je platné UUID."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr ""
msgstr "Je vyžadované celé číslo."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr ""
msgstr "Uistite sa, že hodnota je menšia alebo rovná {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr ""
msgstr "Uistite sa, že hodnota je väčšia alebo rovná {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr ""
msgstr "Zadaný textový reťazec je príliš dlhý."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr ""
msgstr "Je vyžadované číslo."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr ""
msgstr "Uistite sa, že hodnota neobsahuje viac ako {max_digits} cifier."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr ""
msgstr "Uistite sa, že hodnota neobsahuje viac ako {max_decimal_places} desatinných miest."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr ""
msgstr "Uistite sa, že hodnota neobsahuje viac ako {max_whole_digits} cifier pred desatinnou čiarkou."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr ""
msgstr "Nesprávny formát dátumu a času. Prosím použite jeden z nasledujúcich formátov: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr ""
msgstr "Vložený len dátum - date namiesto dátumu a času - datetime."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr ""
msgstr "Nesprávny formát dátumu. Prosím použite jeden z nasledujúcich formátov: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr ""
msgstr "Vložený dátum a čas - datetime namiesto jednoduchého dátumu - date."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr ""
msgstr "Nesprávny formát času. Prosím použite jeden z nasledujúcich formátov: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr ""
msgstr "\"{input}\" je nesprávny výber z daných možností."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr ""
msgstr "Bol očakávaný zoznam položiek, no namiesto toho bol nájdený \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr ""
msgstr "Nebol odoslaný žiadny súbor."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr ""
msgstr "Odoslané dáta neobsahujú súbor. Prosím skontrolujte kódovanie - encoding type daného formuláru."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr ""
msgstr "Nebolo možné určiť meno súboru."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr ""
msgstr "Odoslaný súbor je prázdny."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr ""
msgstr "Uistite sa, že meno súboru neobsahuje viac ako {max_length} znakov. (V skutočnosti ich má {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
msgstr "Uploadujte prosím obrázok. Súbor, ktorý ste uploadovali buď nie je obrázok, alebo daný obrázok je poškodený."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "Bol očakávaný slovník položiek, no namiesto toho bol nájdený \"{input_type}\"."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr ""
msgstr "Nesprávne číslo stránky \"{page_number}\": {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "Nesprávny kurzor."
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr ""
msgstr "Nesprávny primárny kľúč \"{pk_value}\" - objekt s daným primárnym kľúčom neexistuje."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
msgstr "Nesprávny typ. Bol prijatý {data_type} namiesto primárneho kľúča."
#: relations.py:157
msgid "Invalid hyperlink - No URL match."
msgstr ""
msgstr "Nesprávny hypertextový odkaz - žiadna zhoda."
#: relations.py:158
msgid "Invalid hyperlink - Incorrect URL match."
msgstr ""
msgstr "Nesprávny hypertextový odkaz - chybná URL."
#: relations.py:159
msgid "Invalid hyperlink - Object does not exist."
msgstr ""
msgstr "Nesprávny hypertextový odkaz - požadovný objekt neexistuje."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
msgstr "Nesprávny typ {data_type}. Požadovaný typ: hypertextový odkaz."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr ""
msgstr "Objekt, ktorého atribút \"{slug_name}\" je \"{value}\" neexistuje."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Nesprávna hodnota."
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Bol očakávaný slovník položiek, no namiesto toho bol nájdený \"{datatype}\"."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: serializers.py:299
msgid "Invalid data. Expected a dictionary, but got {datatype}."
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr ""
msgstr "Táto položka musí byť unikátna."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
msgstr "Dané položky: {field_names} musia tvoriť musia spolu tvoriť unikátnu množinu."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
msgstr "Položka musí byť pre špecifický deň \"{date_field}\" unikátna."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
msgstr "Položka musí byť pre mesiac \"{date_field}\" unikátna."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
msgstr "Položka musí byť pre rok \"{date_field}\" unikátna."
#: versioning.py:39
msgid "Invalid version in \"Accept\" header."
msgstr ""
msgstr "Nesprávna verzia v \"Accept\" hlavičke."
#: versioning.py:70 versioning.py:112
msgid "Invalid version in URL path."
msgstr ""
msgstr "Nesprávna verzia v URL adrese."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
msgstr "Nesprávna verzia v \"hostname\"."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Nesprávna verzia v parametri požiadavku."
#: views.py:82
msgid "Permission denied."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Daný používateľ je zablokovaný."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "S danými prihlasovacími údajmi nebolo možné sa prihlásiť."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Musí obsahovať parametre \"používateľské meno\" a \"heslo\"."

View File

@ -3,14 +3,15 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Frank Wickström <frwickst@gmail.com>, 2015
# Joakim Soderlund, 2015
msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Swedish (http://www.transifex.com/projects/p/django-rest-framework/language/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,37 +19,49 @@ msgstr ""
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "Ogiltig \"basic\"-header. Inga användaruppgifter tillhandahölls."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "Ogiltig \"basic\"-header. Strängen för användaruppgifterna ska inte innehålla mellanslag."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "Ogiltig \"basic\"-header. Användaruppgifterna är inte korrekt base64-kodade."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Ogiltigt användarnamn/lösenord."
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Användaren borttagen eller inaktiv."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Ogiltig \"token\"-header. Inga användaruppgifter tillhandahölls."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Ogiltig \"token\"-header. Strängen för referensen ska inte innehålla mellanslag."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Ogiltig \"token\"."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Användaren borttagen eller inaktiv."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Användarkontot är borttaget."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Kunde inte logga in med de angivna inloggningsuppgifterna."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Användarnamn och lösenord måste anges."
#: exceptions.py:38
msgid "A server error occurred."
@ -70,11 +83,12 @@ msgstr "Autentiseringsuppgifter ej tillhandahållna."
msgid "You do not have permission to perform this action."
msgstr "Du har inte tillåtelse att utföra denna förfrågan."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Hittades inte."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "Metoden \"{method}\" tillåts inte."
@ -83,6 +97,7 @@ msgid "Could not satisfy the request Accept header."
msgstr "Kunde inte tillfredsställa förfrågans \"Accept\"-header."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "Medietypen \"{media_type}\" stöds inte."
@ -90,161 +105,180 @@ msgstr "Medietypen \"{media_type}\" stöds inte."
msgid "Request was throttled."
msgstr "Förfrågan stoppades eftersom du har skickat för många."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Det här fältet är obligatoriskt."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Det här fältet får inte vara null."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" är inte ett giltigt booleskt värde."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Det här fältet får inte vara blankt."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Se till att detta fält inte har fler än {max_length} tecken."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Se till att detta fält har minst {min_length} tecken."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Ange en giltig mejladress."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Det här värdet matchar inte mallen."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Ange en giltig \"slug\" bestående av bokstäver, nummer, understreck eller bindestreck."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Ange en giltig URL."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value} är inte ett giltigt UUID."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Ett giltigt heltal krävs."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Se till att detta värde är mindre än eller lika med {max_value}."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Se till att detta värde är större än eller lika med {min_value}."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "Textvärdet är för långt."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Ett giltigt nummer krävs."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Se till att det inte finns fler än totalt {max_digits} siffror."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Se till att det inte finns fler än {max_decimal_places} decimaler."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Se till att det inte finns fler än {max_whole_digits} siffror före decimalpunkten."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Datumtiden har fel format. Använd ett av dessa format istället: {format}."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Förväntade en datumtid men fick ett datum."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Datumet har fel format. Använde ett av dessa format istället: {format}."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Förväntade ett datum men fick en datumtid."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Tiden har fel format. Använd ett av dessa format istället: {format}."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" är inte ett giltigt val."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Förväntade en lista med element men fick typen \"{input_type}\"."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Ingen fil skickades."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "Den skickade informationen var inte en fil. Kontrollera formulärets kodningstyp."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Inget filnamn kunde bestämmas."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "Den skickade filen var tom."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Se till att det här filnamnet har högst {max_length} tecken (det har {length})."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Ladda upp en giltig bild. Filen du laddade upp var antingen inte en bild eller en skadad bild."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "Förväntade en \"dictionary\" med element men fick typen \"{input_type}\"."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Ogiltigt sida \"{page_number}\": {message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "Ogiltig cursor."
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Ogiltigt pk \"{pk_value}\" - Objektet finns inte."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Felaktig typ. Förväntade pk-värde, fick {data_type}."
@ -261,38 +295,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "Ogiltig hyperlänk - Objektet finns inte."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Felaktig typ. Förväntade URL-sträng, fick {data_type}."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "Objekt med {slug_name}={value} finns inte."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Ogiltigt värde."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Ogiltig data. Förväntade en dictionary, men fick {datatype}."
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "Det här fältet måste vara unikt."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "Fälten {field_names} måste skapa ett unikt set."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "Det här fältet måste vara unikt för datumet \"{date_field}\"."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "Det här fältet måste vara unikt för månaden \"{date_field}\"."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "Det här fältet måste vara unikt för året \"{date_field}\"."
@ -304,22 +357,14 @@ msgstr "Ogiltig version i \"Accept\"-headern."
msgid "Invalid version in URL path."
msgstr "Ogiltig version i URL-resursen."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Ogiltig version i värdnamnet."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Ogiltig version i förfrågningsparametern."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Användarkontot är borttaget."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Kunde inte logga in med de angivna inloggningsuppgifterna."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "Användarnamn och lösenord måste anges."
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -3,6 +3,7 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Emrah BİLBAY <emrahbilbay@gmail.com>, 2015
# Ertaç Paprat <epaprat@gmail.com>, 2015
# Mesut Can Gürle <mesutcang@gmail.com>, 2015
# Recep KIRMIZI <rkirmizi@gmail.com>, 2015
@ -11,9 +12,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Turkish (http://www.transifex.com/projects/p/django-rest-framework/language/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -21,37 +22,49 @@ msgstr ""
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr ""
msgstr "Geçersiz yetkilendirme başlığı. Gerekli uygunluk kriterleri sağlanmamış."
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr ""
msgstr "Geçersiz yetkilendirme başlığı. Uygunluk kriterine ait veri boşluk karakteri içermemeli."
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr ""
msgstr "Geçersiz yetkilendirme başlığı. Uygunluk kriterleri base64 formatına uygun olarak kodlanmamış."
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "Geçersiz kullanıcı adı/parola"
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "Kullanıcı aktif değil ya da silinmiş."
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "Geçersiz token başlığı. Kimlik bilgileri eksik."
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "Geçersiz token başlığı. Token'da boşluk olmamalı."
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "Geçersiz token."
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "Kullanıcı aktif değil ya da silinmiş."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Kullanıcı hesabı devre dışı bırakılmış."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Verilen bilgiler ile giriş sağlanamadı."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "\"Kullanıcı Adı\" ve \"Parola\" eklenmeli."
#: exceptions.py:38
msgid "A server error occurred."
@ -73,181 +86,202 @@ msgstr "Giriş bilgileri verilmedi."
msgid "You do not have permission to perform this action."
msgstr "Bu işlemi yapmak için izniniz bulunmuyor."
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "Bulunamadı."
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "\"{method}\" metoduna izin verilmiyor."
#: exceptions.py:109
msgid "Could not satisfy the request Accept header."
msgstr ""
msgstr "İsteğe ait Accept başlık bilgisi yanıt verilecek başlık bilgileri arasında değil."
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "İstekte desteklenmeyen medya tipi: \"{media_type}\"."
#: exceptions.py:134
msgid "Request was throttled."
msgstr ""
msgstr "Üst üste çok fazla istek yapıldı."
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "Bu alan zorunlu."
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "Bu alan boş bırakılmamalı."
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "\"{input}\" geçerli bir boolean değil."
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "Bu alan boş bırakılmamalı."
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "Bu alanın {max_length} karakterden fazla karakter barındırmadığından emin olun."
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "Bu alanın en az {min_length} karakter barındırdığından emin olun."
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "Geçerli bir e-posta adresi girin."
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "Bu değer gereken düzenli ifade deseni ile uyuşmuyor."
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "Harf, rakam, altçizgi veya tireden oluşan geçerli bir \"slug\" giriniz."
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "Geçerli bir URL girin."
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "\"{value}\" geçerli bir UUID değil."
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "Geçerli bir tam sayı girin."
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "Değerin {max_value} değerinden küçük ya da eşit olduğundan emin olun."
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "Değerin {min_value} değerinden büyük ya da eşit olduğundan emin olun."
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "String değeri çok uzun."
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "Geçerli bir numara gerekiyor."
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "Toplamda {max_digits} haneden fazla hane olmadığından emin olun."
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "Ondalık basamak değerinin {max_decimal_places} haneden fazla olmadığından emin olun."
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "Ondalık ayracından önce {max_whole_digits} basamaktan fazla olmadığından emin olun."
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "Datetime alanı yanlış biçimde. {format} biçimlerinden birini kullanın."
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "Datetime değeri bekleniyor, ama date değeri geldi."
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "Tarih biçimi yanlış. {format} biçimlerinden birini kullanın."
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "Date tipi beklenmekteydi, fakat datetime tipi geldi."
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "Time biçimi yanlış. {format} biçimlerinden birini kullanın."
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "\"{input}\" geçerli bir seçim değil."
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "Elemanların listesi beklenirken \"{input_type}\" alındı."
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "Hiçbir dosya verilmedi."
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "Gönderilen veri dosya değil. Formdaki kodlama tipini kontrol edin."
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "Hiçbir dosya adı belirlenemedi."
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "Gönderilen dosya boş."
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "Bu dosya adının en fazla {max_length} karakter uzunluğunda olduğundan emin olun. (şu anda {length} karakter)."
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "Geçerli bir resim yükleyin. Yüklediğiniz dosya resim değil ya da bozuk."
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "Sözlük tipi bir değişken beklenirken \"{input_type}\" tipi bir değişken alındı."
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "Geçersiz sayfa \"{page_number}\":{message}."
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "Sayfalandırma imleci geçersiz"
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "Geçersiz pk \"{pk_value}\" - obje bulunamadı."
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "Hatalı tip. Pk değeri beklenirken, alınan {data_type}."
@ -264,38 +298,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "Geçersiz bağlantı - Obje bulunamadı."
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "Hatalı tip. URL metni bekleniyor, {data_type} alındı."
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "{slug_name}={value} değerini taşıyan obje bulunamadı."
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "Geçersiz değer."
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "Geçersiz veri. Sözlük bekleniyordu fakat {datatype} geldi. "
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "Bu alan eşsiz olmalı."
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "{field_names} hep birlikte eşsiz bir küme oluşturmalılar."
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "Bu alan \"{date_field}\" tarihine göre eşsiz olmalı."
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "Bu alan \"{date_field}\" ayına göre eşsiz olmalı."
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "Bu alan \"{date_field}\" yılına göre eşsiz olmalı."
@ -307,22 +360,14 @@ msgstr "\"Accept\" başlığındaki sürüm geçersiz."
msgid "Invalid version in URL path."
msgstr "URL dizininde geçersiz versiyon."
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "Host adında geçersiz versiyon."
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "Sorgu parametresinde geçersiz versiyon."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "Kullanıcı hesabı devre dışı bırakılmış."
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "Verilen bilgiler ile giriş sağlanamadı."
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "\"Kullanıcı Adı\" ve \"Parola\" eklenmeli."
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:51+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django-rest-framework/language/uk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -17,36 +17,48 @@ msgstr ""
"Language: uk\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"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr ""
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr ""
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr ""
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr ""
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr ""
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr ""
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr ""
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr ""
#: authentication.py:171
msgid "User inactive or deleted."
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr ""
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr ""
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr ""
#: exceptions.py:38
@ -69,11 +81,12 @@ msgstr ""
msgid "You do not have permission to perform this action."
msgstr ""
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr ""
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr ""
@ -82,6 +95,7 @@ msgid "Could not satisfy the request Accept header."
msgstr ""
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr ""
@ -89,161 +103,180 @@ msgstr ""
msgid "Request was throttled."
msgstr ""
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr ""
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr ""
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr ""
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr ""
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr ""
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr ""
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr ""
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr ""
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr ""
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr ""
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr ""
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr ""
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr ""
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr ""
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr ""
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr ""
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr ""
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr ""
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr ""
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr ""
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr ""
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr ""
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr ""
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr ""
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr ""
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr ""
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr ""
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr ""
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr ""
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
@ -260,38 +293,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr ""
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr ""
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr ""
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr ""
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr ""
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
@ -303,22 +355,14 @@ msgstr ""
msgid "Invalid version in URL path."
msgstr ""
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr ""
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr ""
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
#: views.py:82
msgid "Permission denied."
msgstr ""

Binary file not shown.

View File

@ -0,0 +1,368 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:51+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django-rest-framework/language/vi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: vi\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr ""
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr ""
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr ""
#: authentication.py:97
msgid "Invalid username/password."
msgstr ""
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr ""
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr ""
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr ""
#: authentication.py:179
msgid "Invalid token."
msgstr ""
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr ""
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr ""
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr ""
#: exceptions.py:38
msgid "A server error occurred."
msgstr ""
#: exceptions.py:73
msgid "Malformed request."
msgstr ""
#: exceptions.py:78
msgid "Incorrect authentication credentials."
msgstr ""
#: exceptions.py:83
msgid "Authentication credentials were not provided."
msgstr ""
#: exceptions.py:88
msgid "You do not have permission to perform this action."
msgstr ""
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr ""
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr ""
#: exceptions.py:109
msgid "Could not satisfy the request Accept header."
msgstr ""
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr ""
#: exceptions.py:134
msgid "Request was throttled."
msgstr ""
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr ""
#: fields.py:163
msgid "This field may not be null."
msgstr ""
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr ""
#: fields.py:559
msgid "This field may not be blank."
msgstr ""
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr ""
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr ""
#: fields.py:598
msgid "Enter a valid email address."
msgstr ""
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr ""
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr ""
#: fields.py:632
msgid "Enter a valid URL."
msgstr ""
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
#: fields.py:662
msgid "A valid integer is required."
msgstr ""
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr ""
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr ""
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr ""
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr ""
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr ""
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr ""
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr ""
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr ""
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr ""
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr ""
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr ""
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr ""
#: fields.py:1085
msgid "No file was submitted."
msgstr ""
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr ""
#: fields.py:1087
msgid "No filename could be determined."
msgstr ""
#: fields.py:1088
msgid "The submitted file is empty."
msgstr ""
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr ""
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr ""
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr ""
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr ""
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr ""
#: relations.py:157
msgid "Invalid hyperlink - No URL match."
msgstr ""
#: relations.py:158
msgid "Invalid hyperlink - Incorrect URL match."
msgstr ""
#: relations.py:159
msgid "Invalid hyperlink - Object does not exist."
msgstr ""
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr ""
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr ""
#: relations.py:303
msgid "Invalid value."
msgstr ""
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr ""
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr ""
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr ""
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr ""
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr ""
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr ""
#: versioning.py:39
msgid "Invalid version in \"Accept\" header."
msgstr ""
#: versioning.py:70 versioning.py:112
msgid "Invalid version in URL path."
msgstr ""
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr ""
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr ""
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -4,13 +4,14 @@
#
# Translators:
# Lele Long <schemacs@gmail.com>, 2015
# Ming Chen <mockey.chen@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Django REST framework\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-01-30 16:23+0000\n"
"PO-Revision-Date: 2015-01-30 16:27+0000\n"
"Last-Translator: Thomas Christie <tom@tomchristie.com>\n"
"POT-Creation-Date: 2015-06-01 23:48+0100\n"
"PO-Revision-Date: 2015-06-01 22:52+0000\n"
"Last-Translator: Xavier Ordoquy <xordoquy@linovia.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django-rest-framework/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -18,37 +19,49 @@ msgstr ""
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: authentication.py:69
#: authentication.py:70
msgid "Invalid basic header. No credentials provided."
msgstr "没有提供认证信息基本认证HTTP头无效。"
#: authentication.py:72
#: authentication.py:73
msgid "Invalid basic header. Credentials string should not contain spaces."
msgstr "认证字符串不应该包含空格基本认证HTTP头无效。"
#: authentication.py:78
#: authentication.py:79
msgid "Invalid basic header. Credentials not correctly base64 encoded."
msgstr "认证字符串base64编码错误基本认证HTTP头无效。"
#: authentication.py:90
#: authentication.py:97
msgid "Invalid username/password."
msgstr "用户名或者密码错误。"
#: authentication.py:156
#: authentication.py:100 authentication.py:182
msgid "User inactive or deleted."
msgstr "用户未激活或者已删除。"
#: authentication.py:167
msgid "Invalid token header. No credentials provided."
msgstr "没有提供认证信息认证令牌HTTP头无效。"
#: authentication.py:159
#: authentication.py:170
msgid "Invalid token header. Token string should not contain spaces."
msgstr "认证令牌字符串不应该包含空格无效的认证令牌HTTP头。"
#: authentication.py:168
#: authentication.py:179
msgid "Invalid token."
msgstr "认证令牌无效。"
#: authentication.py:171
msgid "User inactive or deleted."
msgstr "用户未激活或者已删除。"
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "用户账户已禁用。"
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "无法使用提供的认证信息登录。"
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "必须包含 “用户名” 和 “密码”。"
#: exceptions.py:38
msgid "A server error occurred."
@ -56,25 +69,26 @@ msgstr "服务器出现了错误。"
#: exceptions.py:73
msgid "Malformed request."
msgstr "畸形的请求。"
msgstr "错误的请求。"
#: exceptions.py:78
msgid "Incorrect authentication credentials."
msgstr "不正确的身份认证凭据。"
msgstr "不正确的身份认证信息。"
#: exceptions.py:83
msgid "Authentication credentials were not provided."
msgstr "身份认证凭据未提供。"
msgstr "身份认证信息未提供。"
#: exceptions.py:88
msgid "You do not have permission to perform this action."
msgstr "您没有执行该操作的权限。"
#: exceptions.py:93
#: exceptions.py:93 views.py:77
msgid "Not found."
msgstr "未找到。"
#: exceptions.py:98
#, python-brace-format
msgid "Method \"{method}\" not allowed."
msgstr "方法 “{method}” 不被允许。"
@ -83,168 +97,188 @@ msgid "Could not satisfy the request Accept header."
msgstr "无法满足Accept HTTP头的请求。"
#: exceptions.py:121
#, python-brace-format
msgid "Unsupported media type \"{media_type}\" in request."
msgstr "不支持请求中的媒体类型 “{media_type}”。"
#: exceptions.py:134
msgid "Request was throttled."
msgstr "请求限速。"
msgstr "请求超过了限速。"
#: fields.py:153 relations.py:132 relations.py:156 validators.py:77
#: validators.py:155
#: fields.py:162 relations.py:132 relations.py:156 validators.py:77
#: validators.py:160
msgid "This field is required."
msgstr "这个字段是必填项。"
#: fields.py:154
#: fields.py:163
msgid "This field may not be null."
msgstr "这个值不能为 null。"
#: fields.py:487 fields.py:515
#: fields.py:496 fields.py:524
#, python-brace-format
msgid "\"{input}\" is not a valid boolean."
msgstr "“{input}” 不是合法的布尔值。"
#: fields.py:550
#: fields.py:559
msgid "This field may not be blank."
msgstr "此字段不能为空。"
#: fields.py:551 fields.py:1324
#: fields.py:560 fields.py:1342
#, python-brace-format
msgid "Ensure this field has no more than {max_length} characters."
msgstr "请确保这个字段不能超过 {max_length} 个字符。"
#: fields.py:552
#: fields.py:561
#, python-brace-format
msgid "Ensure this field has at least {min_length} characters."
msgstr "请确保这个字段至少包含 {min_length} 个字符。"
#: fields.py:587
#: fields.py:598
msgid "Enter a valid email address."
msgstr "请输入合法的邮件地址。"
#: fields.py:604
#: fields.py:609
msgid "This value does not match the required pattern."
msgstr "输入值不匹配要求的模式。"
#: fields.py:615
#: fields.py:620
msgid ""
"Enter a valid \"slug\" consisting of letters, numbers, underscores or "
"hyphens."
msgstr "请输入合法的“短语“,只能包含字母,数字,下划线或者中划线。"
#: fields.py:627
#: fields.py:632
msgid "Enter a valid URL."
msgstr "请输入合法的URL。"
#: fields.py:638
#: fields.py:643
#, python-brace-format
msgid "\"{value}\" is not a valid UUID."
msgstr ""
msgstr "“{value}”不是合法的UUID。"
#: fields.py:657
#: fields.py:662
msgid "A valid integer is required."
msgstr "请填写合法的整数值。"
#: fields.py:658 fields.py:692 fields.py:725
#: fields.py:663 fields.py:698 fields.py:731
#, python-brace-format
msgid "Ensure this value is less than or equal to {max_value}."
msgstr "请确保该值小于或者等于 {max_value}。"
#: fields.py:659 fields.py:693 fields.py:726
#: fields.py:664 fields.py:699 fields.py:732
#, python-brace-format
msgid "Ensure this value is greater than or equal to {min_value}."
msgstr "请确保该值大于或者等于 {min_value}。"
#: fields.py:660 fields.py:694 fields.py:730
#: fields.py:665 fields.py:700 fields.py:736
msgid "String value too large."
msgstr "字符值太长。"
msgstr "字符值太长。"
#: fields.py:691 fields.py:724
#: fields.py:697 fields.py:730
msgid "A valid number is required."
msgstr "请填写合法的数字。"
#: fields.py:727
#: fields.py:733
#, python-brace-format
msgid "Ensure that there are no more than {max_digits} digits in total."
msgstr "请确保总计不超过 {max_digits} 个数字。"
#: fields.py:728
#: fields.py:734
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_decimal_places} decimal places."
msgstr "请确保总计不超过 {max_decimal_places} 个小数位。"
#: fields.py:729
#: fields.py:735
#, python-brace-format
msgid ""
"Ensure that there are no more than {max_whole_digits} digits before the "
"decimal point."
msgstr "请确保小数点前不超过 {max_whole_digits} 个数字。"
#: fields.py:813
#: fields.py:825
#, python-brace-format
msgid "Datetime has wrong format. Use one of these formats instead: {format}."
msgstr "日期时间格式错误。请从这些格式中选择:{format}。"
#: fields.py:814
#: fields.py:826
msgid "Expected a datetime but got a date."
msgstr "期望为日期时间,得到的是日期。"
#: fields.py:878
#: fields.py:890
#, python-brace-format
msgid "Date has wrong format. Use one of these formats instead: {format}."
msgstr "日期格式错误。请从这些格式中选择:{format}。"
#: fields.py:879
#: fields.py:891
msgid "Expected a date but got a datetime."
msgstr "期望为日期,得到的是日期时间。"
#: fields.py:936
#: fields.py:954
#, python-brace-format
msgid "Time has wrong format. Use one of these formats instead: {format}."
msgstr "时间格式错误。请从这些格式中选择:{format}。"
#: fields.py:992 fields.py:1036
#: fields.py:1010 fields.py:1054
#, python-brace-format
msgid "\"{input}\" is not a valid choice."
msgstr "“{input}” 不是合法选项。"
#: fields.py:1037 fields.py:1151 serializers.py:482
#: fields.py:1055 fields.py:1169 serializers.py:483
#, python-brace-format
msgid "Expected a list of items but got type \"{input_type}\"."
msgstr "期望为一个包含物件的列表,得到的类型是“{input_type}”。"
#: fields.py:1067
#: fields.py:1085
msgid "No file was submitted."
msgstr "没有提交任何文件。"
#: fields.py:1068
#: fields.py:1086
msgid ""
"The submitted data was not a file. Check the encoding type on the form."
msgstr "提交的数据不是一个文件。请检查表单的编码类型。"
#: fields.py:1069
#: fields.py:1087
msgid "No filename could be determined."
msgstr "无法检测到文件名。"
#: fields.py:1070
#: fields.py:1088
msgid "The submitted file is empty."
msgstr "提交的是空文件。"
#: fields.py:1071
#: fields.py:1089
#, python-brace-format
msgid ""
"Ensure this filename has at most {max_length} characters (it has {length})."
msgstr "确保该文件名最多包含 {max_length} 个字符 ( 当前长度为{length} ) 。"
#: fields.py:1113
#: fields.py:1131
msgid ""
"Upload a valid image. The file you uploaded was either not an image or a "
"corrupted image."
msgstr "请上传有效图片。您上传的该文件不是图片或者图片已经损坏。"
#: fields.py:1188
#: fields.py:1206
#, python-brace-format
msgid "Expected a dictionary of items but got type \"{input_type}\"."
msgstr ""
msgstr "期望是包含类目的字典,得到类型为 “{input_type}”。"
#: pagination.py:221
#: pagination.py:231
#, python-brace-format
msgid "Invalid page \"{page_number}\": {message}."
msgstr "无效页面 “{page_number}”:{message}。"
#: pagination.py:442
#: pagination.py:492
msgid "Invalid cursor"
msgstr ""
msgstr "无效游标"
#: relations.py:133
#, python-brace-format
msgid "Invalid pk \"{pk_value}\" - object does not exist."
msgstr "无效主键 “{pk_value}” 对象不存在。"
#: relations.py:134
#, python-brace-format
msgid "Incorrect type. Expected pk value, received {data_type}."
msgstr "类型错误。期望为主键,得到的类型为 {data_type}。"
@ -261,38 +295,57 @@ msgid "Invalid hyperlink - Object does not exist."
msgstr "无效超链接 -对象不存在。"
#: relations.py:160
#, python-brace-format
msgid "Incorrect type. Expected URL string, received {data_type}."
msgstr "类型错误。期望为URL字符串得到的类型是 {data_type}。"
msgstr "类型错误。期望为URL字符串实际的类型是 {data_type}。"
#: relations.py:295
#: relations.py:302
#, python-brace-format
msgid "Object with {slug_name}={value} does not exist."
msgstr "属性 {slug_name} 为 {value} 的对象不存在。"
#: relations.py:296
#: relations.py:303
msgid "Invalid value."
msgstr "无效值。"
#: serializers.py:299
#: serializers.py:300
#, python-brace-format
msgid "Invalid data. Expected a dictionary, but got {datatype}."
msgstr "无效数据。期待为字典类型,得到的是 {datatype} 。"
#: templates/rest_framework/horizontal/radio.html:2
#: templates/rest_framework/inline/radio.html:2
#: templates/rest_framework/vertical/radio.html:2
msgid "None"
msgstr ""
#: templates/rest_framework/horizontal/select_multiple.html:2
#: templates/rest_framework/inline/select_multiple.html:2
#: templates/rest_framework/vertical/select_multiple.html:2
msgid "No items to select."
msgstr ""
#: validators.py:22
msgid "This field must be unique."
msgstr "该字段必须唯一。"
#: validators.py:76
#, python-brace-format
msgid "The fields {field_names} must make a unique set."
msgstr "字段 {field_names} 必须能构成唯一集合。"
#: validators.py:219
#: validators.py:224
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" date."
msgstr "该字段必须在日期 “{date_field}” 唯一。"
#: validators.py:234
#: validators.py:239
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" month."
msgstr "该字段必须在月份 “{date_field}” 唯一。"
#: validators.py:247
#: validators.py:252
#, python-brace-format
msgid "This field must be unique for the \"{date_field}\" year."
msgstr "该字段必须在年 “{date_field}” 唯一。"
@ -302,24 +355,16 @@ msgstr "“Accept” HTTP头包含无效版本。"
#: versioning.py:70 versioning.py:112
msgid "Invalid version in URL path."
msgstr "URl路径包含无效版本。"
msgstr "URL路径包含无效版本。"
#: versioning.py:138
#: versioning.py:141
msgid "Invalid version in hostname."
msgstr "主机名包含无效版本。"
#: versioning.py:160
#: versioning.py:163
msgid "Invalid version in query parameter."
msgstr "请求参数里包含无效版本。"
#: authtoken/serializers.py:20
msgid "User account is disabled."
msgstr "用户账户已禁用。"
#: authtoken/serializers.py:23
msgid "Unable to log in with provided credentials."
msgstr "无法使用提供的认证信息登录。"
#: authtoken/serializers.py:26
msgid "Must include \"username\" and \"password\"."
msgstr "必须包含 “用户名” 和 “密码”。"
#: views.py:82
msgid "Permission denied."
msgstr ""

View File

@ -36,6 +36,7 @@ class SimpleMetadata(BaseMetadata):
label_lookup = ClassLookupDict({
serializers.Field: 'field',
serializers.BooleanField: 'boolean',
serializers.NullBooleanField: 'boolean',
serializers.CharField: 'string',
serializers.URLField: 'url',
serializers.EmailField: 'email',
@ -126,7 +127,7 @@ class SimpleMetadata(BaseMetadata):
if value is not None and value != '':
field_info[attr] = force_text(value, strings_only=True)
if hasattr(field, 'choices'):
if not field_info.get('read_only') and hasattr(field, 'choices'):
field_info['choices'] = [
{
'value': choice_value,

View File

@ -4,7 +4,7 @@ incoming request. Typically this will be based on the request's Accept header.
"""
from __future__ import unicode_literals
from django.http import Http404
from rest_framework import exceptions
from rest_framework import HTTP_HEADER_ENCODING, exceptions
from rest_framework.settings import api_settings
from rest_framework.utils.mediatypes import order_by_precedence, media_type_matches
from rest_framework.utils.mediatypes import _MediaType
@ -54,13 +54,19 @@ class DefaultContentNegotiation(BaseContentNegotiation):
for media_type in media_type_set:
if media_type_matches(renderer.media_type, media_type):
# Return the most specific media type as accepted.
media_type_wrapper = _MediaType(media_type)
if (
_MediaType(renderer.media_type).precedence >
_MediaType(media_type).precedence
media_type_wrapper.precedence
):
# Eg client requests '*/*'
# Accepted media type is 'application/json'
return renderer, renderer.media_type
full_media_type = ';'.join(
(renderer.media_type,) +
tuple('{0}={1}'.format(
key, value.decode(HTTP_HEADER_ENCODING))
for key, value in media_type_wrapper.params.items()))
return renderer, full_media_type
else:
# Eg client requests 'application/json; indent=8'
# Accepted media type is 'application/json; indent=8'

View File

@ -10,7 +10,7 @@ from django.core.paginator import InvalidPage, Paginator as DjangoPaginator
from django.template import Context, loader
from django.utils import six
from django.utils.six.moves.urllib import parse as urlparse
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy as _
from rest_framework.compat import OrderedDict
from rest_framework.exceptions import NotFound
from rest_framework.response import Response
@ -18,6 +18,7 @@ from rest_framework.settings import api_settings
from rest_framework.utils.urls import (
replace_query_param, remove_query_param
)
import warnings
def _positive_int(integer_string, strict=False, cutoff=None):
@ -130,12 +131,19 @@ def _decode_cursor(encoded):
"""
Given a string representing an encoded cursor, return a `Cursor` instance.
"""
# The offset in the cursor is used in situations where we have a
# nearly-unique index. (Eg millisecond precision creation timestamps)
# We guard against malicious users attempting to cause expensive database
# queries, by having a hard cap on the maximum possible size of the offset.
OFFSET_CUTOFF = 1000
try:
querystring = b64decode(encoded.encode('ascii')).decode('ascii')
tokens = urlparse.parse_qs(querystring, keep_blank_values=True)
offset = tokens.get('o', ['0'])[0]
offset = _positive_int(offset)
offset = _positive_int(offset, cutoff=OFFSET_CUTOFF)
reverse = tokens.get('r', ['0'])[0]
reverse = bool(int(reverse))
@ -203,18 +211,18 @@ class PageNumberPagination(BasePagination):
"""
# The default page size.
# Defaults to `None`, meaning pagination is disabled.
paginate_by = api_settings.PAGINATE_BY
page_size = api_settings.PAGE_SIZE
# Client can control the page using this query parameter.
page_query_param = 'page'
# Client can control the page size using this query parameter.
# Default is 'None'. Set to eg 'page_size' to enable usage.
paginate_by_param = api_settings.PAGINATE_BY_PARAM
page_size_query_param = None
# Set to an integer to limit the maximum page size the client may request.
# Only relevant if 'paginate_by_param' has also been set.
max_paginate_by = api_settings.MAX_PAGINATE_BY
# Only relevant if 'page_size_query_param' has also been set.
max_page_size = None
last_page_strings = ('last',)
@ -228,12 +236,48 @@ class PageNumberPagination(BasePagination):
attributes were set there. The attributes should now be set on
the pagination class, but the old style is still pending deprecation.
"""
for attr in (
'paginate_by', 'page_query_param',
'paginate_by_param', 'max_paginate_by'
assert not (
getattr(view, 'pagination_serializer_class', None) or
getattr(api_settings, 'DEFAULT_PAGINATION_SERIALIZER_CLASS', None)
), (
"The pagination_serializer_class attribute and "
"DEFAULT_PAGINATION_SERIALIZER_CLASS setting have been removed as "
"part of the 3.1 pagination API improvement. See the pagination "
"documentation for details on the new API."
)
for (settings_key, attr_name) in (
('PAGINATE_BY', 'page_size'),
('PAGINATE_BY_PARAM', 'page_size_query_param'),
('MAX_PAGINATE_BY', 'max_page_size')
):
if hasattr(view, attr):
setattr(self, attr, getattr(view, attr))
value = getattr(api_settings, settings_key, None)
if value is not None:
setattr(self, attr_name, value)
warnings.warn(
"The `%s` settings key is pending deprecation. "
"Use the `%s` attribute on the pagination class instead." % (
settings_key, attr_name
),
PendingDeprecationWarning,
)
for (view_attr, attr_name) in (
('paginate_by', 'page_size'),
('page_query_param', 'page_query_param'),
('paginate_by_param', 'page_size_query_param'),
('max_paginate_by', 'max_page_size')
):
value = getattr(view, view_attr, None)
if value is not None:
setattr(self, attr_name, value)
warnings.warn(
"The `%s` view attribute is pending deprecation. "
"Use the `%s` attribute on the pagination class instead." % (
view_attr, attr_name
),
PendingDeprecationWarning,
)
def paginate_queryset(self, queryset, request, view=None):
"""
@ -264,7 +308,7 @@ class PageNumberPagination(BasePagination):
self.display_page_controls = True
self.request = request
return self.page
return list(self.page)
def get_paginated_response(self, data):
return Response(OrderedDict([
@ -275,17 +319,17 @@ class PageNumberPagination(BasePagination):
]))
def get_page_size(self, request):
if self.paginate_by_param:
if self.page_size_query_param:
try:
return _positive_int(
request.query_params[self.paginate_by_param],
request.query_params[self.page_size_query_param],
strict=True,
cutoff=self.max_paginate_by
cutoff=self.max_page_size
)
except (KeyError, ValueError):
pass
return self.paginate_by
return self.page_size
def get_next_link(self):
if not self.page.has_next():
@ -336,7 +380,7 @@ class LimitOffsetPagination(BasePagination):
http://api.example.org/accounts/?limit=100
http://api.example.org/accounts/?offset=400&limit=100
"""
default_limit = api_settings.PAGINATE_BY
default_limit = api_settings.PAGE_SIZE
limit_query_param = 'limit'
offset_query_param = 'offset'
max_limit = None
@ -344,12 +388,15 @@ class LimitOffsetPagination(BasePagination):
def paginate_queryset(self, queryset, request, view=None):
self.limit = self.get_limit(request)
if self.limit is None:
return None
self.offset = self.get_offset(request)
self.count = _get_count(queryset)
self.request = request
if self.count > self.limit and self.template is not None:
self.display_page_controls = True
return queryset[self.offset:self.offset + self.limit]
return list(queryset[self.offset:self.offset + self.limit])
def get_paginated_response(self, data):
return Response(OrderedDict([
@ -435,17 +482,21 @@ class LimitOffsetPagination(BasePagination):
class CursorPagination(BasePagination):
# Determine how/if True, False and None positions work - do the string
# encodings work with Django queryset filters?
# Consider a max offset cap.
# Tidy up the `get_ordering` API (eg remove queryset from it)
"""
The cursor pagination implementation is neccessarily complex.
For an overview of the position/offset style we use, see this post:
http://cramer.io/2011/03/08/building-cursors-for-the-disqus-api/
"""
cursor_query_param = 'cursor'
page_size = api_settings.PAGINATE_BY
page_size = api_settings.PAGE_SIZE
invalid_cursor_message = _('Invalid cursor')
ordering = None
ordering = '-created'
template = 'rest_framework/pagination/previous_and_next.html'
def paginate_queryset(self, queryset, request, view=None):
if self.page_size is None:
return None
self.base_url = request.build_absolute_uri()
self.ordering = self.get_ordering(request, queryset, view)
@ -484,7 +535,7 @@ class CursorPagination(BasePagination):
# We also always fetch an extra item in order to determine if there is a
# page following on from this one.
results = list(queryset[offset:offset + self.page_size + 1])
self.page = results[:self.page_size]
self.page = list(results[:self.page_size])
# Determine the position of the final item following the page.
if len(results) > len(self.page):
@ -643,12 +694,12 @@ class CursorPagination(BasePagination):
)
)
else:
# The default case is to check for an `ordering` attribute,
# first on the view instance, and then on this pagination instance.
ordering = getattr(view, 'ordering', getattr(self, 'ordering', None))
# The default case is to check for an `ordering` attribute
# on this pagination instance.
ordering = self.ordering
assert ordering is not None, (
'Using cursor pagination, but no ordering attribute was declared '
'on the view or on the pagination class.'
'on the pagination class.'
)
assert isinstance(ordering, (six.string_types, list, tuple)), (

View File

@ -5,7 +5,7 @@ from __future__ import unicode_literals
from django.http import Http404
from rest_framework.compat import get_model_name
SAFE_METHODS = ['GET', 'HEAD', 'OPTIONS']
SAFE_METHODS = ('GET', 'HEAD', 'OPTIONS')
class BasePermission(object):
@ -77,7 +77,7 @@ class DjangoModelPermissions(BasePermission):
`add`/`change`/`delete` permissions on the model.
This permission can only be applied against view classes that
provide a `.model` or `.queryset` attribute.
provide a `.queryset` attribute.
"""
# Map methods into required permission codes.
@ -107,24 +107,22 @@ class DjangoModelPermissions(BasePermission):
return [perm % kwargs for perm in self.perms_map[method]]
def has_permission(self, request, view):
# Note that `.model` attribute on views is deprecated, although we
# enforce the deprecation on the view `get_serializer_class()` and
# `get_queryset()` methods, rather than here.
model_cls = getattr(view, 'model', None)
queryset = getattr(view, 'queryset', None)
if model_cls is None and queryset is not None:
model_cls = queryset.model
# Workaround to ensure DjangoModelPermissions are not applied
# to the root view when using DefaultRouter.
if model_cls is None and getattr(view, '_ignore_model_permissions', False):
if getattr(view, '_ignore_model_permissions', False):
return True
assert model_cls, ('Cannot apply DjangoModelPermissions on a view that'
' does not have `.model` or `.queryset` property.')
try:
queryset = view.get_queryset()
except AttributeError:
queryset = getattr(view, 'queryset', None)
perms = self.get_required_permissions(request.method, model_cls)
assert queryset is not None, (
'Cannot apply DjangoModelPermissions on a view that '
'does not have `.queryset` property or overrides the '
'`.get_queryset()` method.')
perms = self.get_required_permissions(request.method, queryset.model)
return (
request.user and
@ -150,7 +148,7 @@ class DjangoObjectPermissions(DjangoModelPermissions):
`add`/`change`/`delete` permissions on the object using .has_perms.
This permission can only be applied against view classes that
provide a `.model` or `.queryset` attribute.
provide a `.queryset` attribute.
"""
perms_map = {
@ -171,21 +169,27 @@ class DjangoObjectPermissions(DjangoModelPermissions):
return [perm % kwargs for perm in self.perms_map[method]]
def has_object_permission(self, request, view, obj):
model_cls = getattr(view, 'model', None)
try:
queryset = view.get_queryset()
except AttributeError:
queryset = getattr(view, 'queryset', None)
if model_cls is None and queryset is not None:
assert queryset is not None, (
'Cannot apply DjangoObjectPermissions on a view that '
'does not have `.queryset` property or overrides the '
'`.get_queryset()` method.')
model_cls = queryset.model
user = request.user
perms = self.get_required_object_permissions(request.method, model_cls)
user = request.user
if not user.has_perms(perms, obj):
# If the user does not have permissions we need to determine if
# they have read permissions to see 403, or not, and simply see
# a 404 response.
if request.method in ('GET', 'OPTIONS', 'HEAD'):
if request.method in SAFE_METHODS:
# Read permissions already checked and failed, no need
# to make another lookup.
raise Http404

View File

@ -196,7 +196,7 @@ class HyperlinkedRelatedField(RelatedField):
attributes are not configured to correctly match the URL conf.
"""
# Unsaved objects will not yet have a valid URL.
if obj.pk is None:
if hasattr(obj, 'pk') and obj.pk is None:
return None
lookup_value = getattr(obj, self.lookup_field)
@ -360,6 +360,10 @@ class ManyRelatedField(Field):
]
def get_attribute(self, instance):
# Can't have any relationships if not created
if hasattr(instance, 'pk') and instance.pk is None:
return []
relationship = get_attribute(instance, self.source_attrs)
return relationship.all() if (hasattr(relationship, 'all')) else relationship

View File

@ -421,6 +421,14 @@ class BrowsableAPIRenderer(BaseRenderer):
return False # Doesn't have permissions
return True
def _get_serializer(self, serializer_class, view_instance, request, *args, **kwargs):
kwargs['context'] = {
'request': request,
'format': self.format,
'view': view_instance
}
return serializer_class(*args, **kwargs)
def get_rendered_html_form(self, data, view, method, request):
"""
Return a string representing a rendered HTML form, possibly bound to
@ -457,8 +465,11 @@ class BrowsableAPIRenderer(BaseRenderer):
if method in ('DELETE', 'OPTIONS'):
return True # Don't actually need to return a form
has_serializer = getattr(view, 'get_serializer', None)
has_serializer_class = getattr(view, 'serializer_class', None)
if (
not getattr(view, 'get_serializer', None) or
(not has_serializer and not has_serializer_class) or
not any(is_form_media_type(parser.media_type) for parser in view.parser_classes)
):
return
@ -466,10 +477,19 @@ class BrowsableAPIRenderer(BaseRenderer):
if existing_serializer is not None:
serializer = existing_serializer
else:
if has_serializer:
if method in ('PUT', 'PATCH'):
serializer = view.get_serializer(instance=instance, **kwargs)
else:
serializer = view.get_serializer(**kwargs)
else:
# at this point we must have a serializer_class
if method in ('PUT', 'PATCH'):
serializer = self._get_serializer(view.serializer_class, view,
request, instance=instance, **kwargs)
else:
serializer = self._get_serializer(view.serializer_class, view,
request, **kwargs)
if hasattr(serializer, 'initial_data'):
serializer.is_valid()
@ -591,7 +611,7 @@ class BrowsableAPIRenderer(BaseRenderer):
renderer_content_type += ' ;%s' % renderer.charset
response_headers['Content-Type'] = renderer_content_type
if hasattr(view, 'paginator') and view.paginator.display_page_controls:
if getattr(view, 'paginator', None) and view.paginator.display_page_controls:
paginator = view.paginator
else:
paginator = None

Some files were not shown because too many files have changed in this diff Show More