Merge branch 'main' into remove-get_valid_export_item_pks-1864

This commit is contained in:
Matt Hegarty 2025-09-24 13:24:31 +01:00 committed by GitHub
commit 01b0ed0e2c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
61 changed files with 2128 additions and 1316 deletions

View File

@ -1,24 +1,24 @@
repos:
- repo: https://github.com/adamchainz/django-upgrade
rev: 1.22.2
rev: 1.28.0
hooks:
- id: django-upgrade
args: [--target-version, "4.2"]
- repo: https://github.com/asottile/pyupgrade
rev: v3.19.1
rev: v3.20.0
hooks:
- id: pyupgrade
args: [--py38-plus]
args: [--py39-plus]
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 25.1.0
hooks:
- id: black
- repo: https://github.com/PyCQA/isort
rev: 6.0.0
rev: 6.0.1
hooks:
- id: isort
- repo: https://github.com/PyCQA/flake8
rev: 7.1.1
rev: 7.3.0
hooks:
- id: flake8
additional_dependencies:

View File

@ -3,7 +3,7 @@ version: 2
build:
os: "ubuntu-22.04"
tools:
python: "3.11"
python: "3.12"
sphinx:
configuration: docs/conf.py

View File

@ -122,7 +122,7 @@ The following is a list of much appreciated contributors:
* josx (José Luis Di Biase)
* Jan Rydzewski
* rpsands (Ryan P. Sands)
* 2ykwang (Yeongkwang Yang)
* 2ykwang (Youngkwang Yang)
* KamilRizatdinov (Kamil Rizatdinov)
* Mark Walker
* shimakaze-git
@ -159,3 +159,8 @@ The following is a list of much appreciated contributors:
* AyushDharDubey
* dahvo (David Mark Awad)
* jurrian
* merwok
* rodolvbg (Rodolfo Becerra)
* Andy Zickler
* kuldeepkhatke (Kuldeep Khatke)
* siddharth1012 (Siddharth Saraswat)

View File

@ -31,7 +31,7 @@ testp: ## run tests in parallel with the default Python
$(RUN_TEST_COMMAND) --parallel
messages: ## generate locale file translations
cd import_export && django-admin makemessages -a && django-admin compilemessages && cd ..
cd import_export && django-admin makemessages --add-location=file -a && django-admin compilemessages && cd ..
coverage: ## generates codecov report
coverage run tests/manage.py test core

View File

@ -230,6 +230,17 @@ It is possible to disable this extra step by setting the :ref:`import_export_ski
those items which users should be permitted to export.
See :meth:`~import_export.admin.ExportMixin.get_export_queryset`.
Exporting large datasets
^^^^^^^^^^^^^^^^^^^^^^^^
If exporting large datasets via the :ref:`action<export_via_admin_action>` menu, you may see Django's
`SuspiciousOperation <https://docs.djangoproject.com/en/dev/ref/exceptions/#suspiciousoperation>`_ exception for
'TooManyFieldsSent'. This is a built-in Django protection against Denial of Service attacks.
If you need to be able to export larger datasets via the action menu you can use the
`DATA_UPLOAD_MAX_NUMBER_FIELDS <https://docs.djangoproject.com/en/dev/ref/settings/#data-upload-max-number-fields>`_
setting to increase or disable this check.
.. _export_from_model_change_form:
Export from model instance change form
@ -293,7 +304,7 @@ Customize forms (for example see ``tests/core/forms.py``)::
Customize ``ModelAdmin`` (for example see ``tests/core/admin.py``)::
class CustomBookAdmin(ImportMixin, admin.ModelAdmin):
resource_classes = [BookResource]
resource_classes = [EBookResource]
import_form_class = CustomImportForm
confirm_form_class = CustomConfirmImportForm
@ -320,7 +331,7 @@ Add the following to ``CustomBookAdmin`` class (in ``tests/core/admin.py``)::
kwargs.update({"author": form.cleaned_data.get("author", None)})
return kwargs
Then add the following to ``CustomBookAdmin`` class (in ``tests/core/admin.py``)::
Then add the following to ``EBookResource`` class (in ``tests/core/admin.py``)::
def after_init_instance(self, instance, new, row, **kwargs):
if "author" in kwargs:

View File

@ -239,6 +239,75 @@ value changes::
* The ``original`` attribute will be null if :attr:`~import_export.options.ResourceOptions.skip_diff` is True.
* The ``instance`` attribute will be null if :attr:`~import_export.options.ResourceOptions.store_instance` is False.
.. _using_modelresource_factory:
Using modelresource_factory
==========================
The :func:`~import_export.resources.modelresource_factory` function dynamically creates
``ModelResource`` classes for you. This is useful for creating resources without writing
custom classes.
Basic usage
-----------
Create a simple resource for export::
>>> from import_export import resources
>>> from core.models import Book
>>> BookResource = resources.modelresource_factory(
... model=Book,
... meta_options={'fields': ('id', 'name', 'author')}
... )
>>>
>>> # Export data
>>> dataset = BookResource().export()
>>> print(dataset.csv)
id,name,author
1,Some book,1
Import data with custom configuration::
>>> from import_export import resources
>>> from core.models import Book
>>> # Create a resource for import with specific fields
>>> ImportResource = resources.modelresource_factory(
... model=Book,
... meta_options={
... 'fields': ('name', 'author_email'),
... 'import_id_fields': ('name',)
... }
... )
>>>
>>> # Import data
>>> dataset = tablib.Dataset(['New Book', 'author@example.com'], headers=['name', 'author_email'])
>>> result = ImportResource().import_data(dataset)
>>> print(result.has_errors())
False
Adding custom fields
-------------------
You can add custom fields and dehydrate methods::
>>> from import_export import resources, fields
>>> from core.models import Book
>>> BookResource = resources.modelresource_factory(
... model=Book,
... meta_options={'fields': ('id', 'name', 'custom_title')},
... custom_fields={
... 'custom_title': fields.Field(column_name='Custom Title', readonly=True)
... },
... dehydrate_methods={
... 'custom_title': lambda obj: f"{obj.name} by {obj.author.name if obj.author else 'Unknown'}"
... }
... )
>>>
>>> dataset = BookResource().export()
>>> print(dataset.csv)
id,name,custom_title
1,Some book,Some book by Author Name
Validation during import
========================
@ -784,7 +853,45 @@ See :ref:`dynamically_set_resource_values`.
Data manipulation on export
===========================
Accessing fields within ``JSONField`` or ``JSONObject``
-------------------------------------------------------
In the same way that it is possible to refer to the relationships of the model by defining a field with double underscore ``__``
syntax, values within ``JSONObject``/ ``JSONField`` can also be accessed but in this case it is necessary to specify it in ``attribute``::
from import_export.fields import Field
class BookResource(resources.ModelResource):
author_name = Field(attribute="author_json__name")
author_birthday = Field(attribute="author_json__birthday")
class Meta:
model = Book
fields = ("author_name", "author_birthday",)
In this case, the export looks like this:
>>> from app.admin import BookResource
>>> from app.models import Book as B
>>> queryset = EBook.objects.annotate(
author_json=JSONObject(
name=("author__name"),
birthday=("author__birthday"),
)
)
>>> queryset.first().author_json
{'name': 'Some Author', 'birthday': '1970-01-01'}
>>> dataset = BookResource().export(queryset=queryset)
>>> dataset.csv
author_name,author_birthday
Some Author,1970-01-01
.. note::
Remember that the types that are annotated/stored within these fields are primitive JSON
data types (strings, numbers, boolean, null) and also composite JSON data types (array and object).
That is why, in the example, the birthday field within the author_json dictionary is displayed as a string.
Using dehydrate methods
-----------------------
Not all data can be easily extracted from an object/model attribute.
In order to turn complicated data model into a (generally simpler) processed
data structure on export, ``dehydrate_<fieldname>`` method should be defined::

View File

@ -5,15 +5,38 @@ Changelog
If upgrading from v3, v4 introduces breaking changes. Please refer to :doc:`release notes<release_notes>`.
5.0.0 (unreleased)
------------------
- Removed the deprecated :meth:`~import_export.admin.ExportMixin.get_valid_export_item_pks` method in favour of :meth:`~import_export.admin.ExportMixin.get_queryset`
4.3.6 (unreleased)
4.3.9 (2025-07-21)
------------------
- Allow specifying meta options in the :ref:`model_resourcefactory<using_modelresource_factory>` (`2078 <https://github.com/django-import-export/django-import-export/pull/2078>`_)
- Allow custom fields and methods in :ref:`model_resourcefactory<using_modelresource_factory>` (`2081 <https://github.com/django-import-export/django-import-export/pull/2081>`_)
- FAQ update to describe how to customize Excel exports (`2088 <https://github.com/django-import-export/django-import-export/pull/2088>`_)
4.3.8 (2025-06-23)
------------------
- ui: fix error display twice issue on export field select page (`2066 <https://github.com/django-import-export/django-import-export/pull/2066>`_)
- ui: add 'select all' fields toggle on export page (`2068 <https://github.com/django-import-export/django-import-export/pull/2068>`_)
- Add Hebrew translation (`2071 <https://github.com/django-import-export/django-import-export/pull/2071>`_)
- ui: fix display of non field errors on import (`2075 <https://github.com/django-import-export/django-import-export/pull/2075>`_)
4.3.7 (2025-02-25)
------------------
- Update French translation (`2042 <https://github.com/django-import-export/django-import-export/pull/2042>`_)
4.3.6 (2025-02-21)
------------------
- Add flag to ignore empty rows in XLSX import (`2028 <https://github.com/django-import-export/django-import-export/issues/2028>`_)
- Add support for Django 5.2 (`2037 <https://github.com/django-import-export/django-import-export/pull/2037>`_)
- Fix Chinese translation (`2040 <https://github.com/django-import-export/django-import-export/issues/2040>`_)
4.3.5 (2025-02-01)
------------------

View File

@ -1,5 +1,6 @@
import os
import sys
from datetime import datetime
from importlib.metadata import version
import django
@ -39,7 +40,8 @@ master_doc = "index"
# General information about the project.
project = "django-import-export"
copyright = "20122024, Bojan Mihelac and others."
current_year = str(datetime.now().year)
copyright = f"2012{current_year}, Bojan Mihelac and others."
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the

View File

@ -165,7 +165,7 @@ Once you have cloned and checked out the repository, you can install a new devel
python -m venv django-import-export-venv
source django-import-export-venv/bin/activate
pip install .[tests]
python -m pip install '.[tests]'
Run tests
^^^^^^^^^
@ -179,7 +179,20 @@ Build documentation
To build a local version of the documentation::
pip install -r requirements/docs.txt
python -m pip install -r requirements/docs.txt
make build-html-doc
The documentation will be present in ``docs/_build/html/index.html``.
Translation
^^^^^^^^^^^
When generating or updating translation files with makemessages, use the `make messages <https://github.com/django-import-export/django-import-export/blob/c84e661ca4f26787f86de56f4ed546315913faab/Makefile#L33>`_
command. This command adds the
`--add-location=file <https://docs.djangoproject.com/en/dev/ref/django-admin/#cmdoption-makemessages-add-location>`_
arg to include only the source file path, not line numbers.
This keeps .po files cleaner and avoids unnecessary version control churn when line numbers shift due to
unrelated code changes.
Translators can still trace strings back to their source using the file references.

View File

@ -156,11 +156,25 @@ Foreign key is null when importing
It is possible to reference model relations by defining a field with the double underscore syntax. For example::
fields = ("author__name")
class BookResource(ModelResource):
class Meta:
model = Book
fields = ("author__name",)
This means that during export, the relation will be followed and the referenced field will be added correctly to the
export.
It works the same way when using ``attribute`` in ``Field``. For example::
class BookResource(ModelResource):
author_name = Field(attribute="author__name")
class Meta:
model = Book
fields = ("author_name",)
This does not work during import because the reference may not be enough to identify the correct relation instance.
:class:`~import_export.widgets.ForeignKeyWidget` should be used during import. See the documentation explaining
:ref:`advanced_usage:Foreign Key relations`.
@ -173,6 +187,14 @@ See the following responses on StackOverflow:
* https://stackoverflow.com/a/55046474/39296
* https://stackoverflow.com/questions/74802453/export-only-the-data-registered-by-the-user-django-import-export
How to customize Excel export data
----------------------------------
If you want more control over how export data is formatted when exporting to Excel you can write a custom format which
uses the `openpyxl API <https://openpyxl.readthedocs.io/en/stable/>`_.
See the example `here <https://github.com/django-import-export/django-import-export/issues/2085#issuecomment-3096872093>`_.
How to set export file encoding
-------------------------------

View File

@ -92,7 +92,8 @@ Let's import some data!
In the fourth line we use :func:`~import_export.resources.modelresource_factory`
to create a default :class:`~import_export.resources.ModelResource`.
The ``ModelResource`` class created this way is equal to the one shown in the
example in section :ref:`base-modelresource`.
example in section :ref:`base-modelresource`. For more advanced usage of this function,
see :ref:`using_modelresource_factory`.
In fifth line a :class:`~tablib.Dataset` with columns ``id`` and ``name``, and
one book entry, are created. A field (or combination of fields) which uniquely identifies an instance always needs to

View File

@ -184,6 +184,11 @@ A boolean value which will skip the :ref:`export form<admin_ui_exporting>` in th
requested from an :ref:`Admin UI action<export_via_admin_action>`, or from the 'Export' button on the
:ref:`change form <export_from_model_change_form>`.
See also :ref:`IMPORT_EXPORT_SKIP_ADMIN_EXPORT_UI`.
This flag can be enabled for the model admin using the
:attr:`~import_export.mixins.BaseExportMixin.skip_export_form_from_action` flag.
.. _import_export_escape_formulae_on_export:
``IMPORT_EXPORT_ESCAPE_FORMULAE_ON_EXPORT``

View File

@ -316,7 +316,7 @@ This section describes methods in which the parameters have changed.
* ``using_transactions`` param now in ``kwargs``
* - ``save_instance(self, instance, is_create, using_transactions=True, dry_run=False)``
- ``save_instance(self, instance, is_create, row, ***kwargs)``
- ``save_instance(self, instance, is_create, row, **kwargs)``
- * ``dry_run`` param now in ``kwargs``
* ``using_transactions`` param now in ``kwargs``
* ``row`` added as mandatory arg

View File

@ -233,15 +233,8 @@ class ImportMixin(BaseImportMixin, ImportExportMixinBase):
}
content_type_id = ContentType.objects.get_for_model(self.model).pk
for row in result:
if row.import_type in logentry_map.keys():
if row.import_type in logentry_map:
with warnings.catch_warnings():
if django.VERSION >= (5,):
from django.utils.deprecation import (
RemovedInDjango60Warning,
)
cat = RemovedInDjango60Warning
else:
cat = DeprecationWarning
warnings.simplefilter("ignore", category=cat)
LogEntry.objects.log_action(
@ -497,7 +490,7 @@ class ImportMixin(BaseImportMixin, ImportExportMixinBase):
except Exception as e:
self.add_data_read_fail_error_to_form(import_form, e)
else:
if len(dataset) == 0:
if not dataset:
import_form.add_error(
"import_file",
_(
@ -584,9 +577,10 @@ class ImportMixin(BaseImportMixin, ImportExportMixinBase):
RowResult.IMPORT_TYPE_UPDATE: CHANGE,
RowResult.IMPORT_TYPE_DELETE: DELETION,
}
missing = object()
for import_type, instances in rows.items():
if import_type in logentry_map.keys():
action_flag = logentry_map[import_type]
action_flag = logentry_map.get(import_type, missing)
if action_flag is not missing:
self._create_log_entry(
user_pk, rows[import_type], import_type, action_flag
)

View File

@ -65,6 +65,8 @@ class DeclarativeMetaclass(type):
class ModelDeclarativeMetaclass(DeclarativeMetaclass):
def __new__(cls, name, bases, attrs):
# Save the names of fields declared on this class
class_fields = {name for name, obj in attrs.items() if isinstance(obj, Field)}
new_class = super().__new__(cls, name, bases, attrs)
opts = new_class._meta
@ -87,9 +89,12 @@ class ModelDeclarativeMetaclass(DeclarativeMetaclass):
and field_name not in opts.fields
and column_name not in opts.fields
):
# #2017 warn only if the unlisted field is
# part of the current class
if field_name in class_fields:
warnings.warn(
f"ignoring field '{field_name}' because not declared "
"in 'fields' whitelist",
f"{name}: ignoring field '{field_name}' because "
"not declared in 'fields' whitelist",
stacklevel=2,
)
continue
@ -102,7 +107,7 @@ class ModelDeclarativeMetaclass(DeclarativeMetaclass):
if opts.exclude and f.name in opts.exclude:
continue
if f.name in set(declared_fields.keys()):
if f.name in declared_fields:
# If model field is declared in `ModelResource`,
# remove it from `declared_fields`
# to keep exact order of model fields

View File

@ -99,13 +99,6 @@ class Field:
"""
Returns the value of the instance's attribute.
"""
# The objects of a queryset can be dictionaries if the values method is used.
if isinstance(instance, dict):
if self.attribute not in instance:
return None
return instance[self.attribute]
if self.attribute is None:
return None
@ -114,8 +107,11 @@ class Field:
for attr in attrs:
try:
if isinstance(value, dict):
value = value[attr]
else:
value = getattr(value, attr, None)
except (ValueError, ObjectDoesNotExist):
except (ValueError, ObjectDoesNotExist, KeyError):
# needs to have a primary key value before a many-to-many
# relationship can be used.
return None
@ -141,8 +137,7 @@ class Field:
if cleaned is not None or self.saves_null_values:
if not is_m2m:
setattr(instance, attrs[-1], cleaned)
else:
if self.m2m_add:
elif self.m2m_add:
getattr(instance, attrs[-1]).add(*cleaned)
else:
getattr(instance, attrs[-1]).set(cleaned)

View File

@ -1,7 +1,7 @@
import os.path
from collections.abc import Iterable
from copy import deepcopy
from itertools import chain
from typing import Iterable
from django import forms
from django.conf import settings
@ -254,7 +254,7 @@ class SelectableFieldsExportForm(ExportForm):
return [
field
for field, value in self.cleaned_data.items()
if field in resource_fields and value is True
if value is True and field in resource_fields
]
def _validate_any_field_selected(self, resource) -> None:

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+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"
@ -19,103 +19,96 @@ msgstr ""
"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"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "إستيراد"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr ""
#: admin.py:262
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr ""
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "تصدير"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "تصدير %(verbose_name_plural)s المحددة"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "تنسيق"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "ملف للإستيراد"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "الرئيسية"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
@ -123,19 +116,23 @@ msgstr[3] ""
msgstr[4] ""
msgstr[5] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "هذا المستورد سوف يستورد الحقول التالية : "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "إرسال"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -143,66 +140,65 @@ msgstr ""
"فيما يلي إستعراض للبيانات التي سيتم إستيرادها. إذا كنت راضيا عن النتائج, "
"انقر على 'تأكيد الإستيراد'"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "تأكيد الإستيراد"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "أخطاء"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "رقم الصطر"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr ""
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr ""
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr ""
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr ""
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "معاينة"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "جديد"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "تجاهل"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "حذف"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "تحديث"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "هذا المستورد سوف يستورد الحقول التالية : "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Hristo Gatsinski <gatsinski@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,121 +18,118 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Импортиране"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s чрез import_export"
#: admin.py:262
#: admin.py
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "Импортирането е завършено, с {} нови и {} обновени {}."
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Експортиране"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Експортиране на избраните %(verbose_name_plural)s"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Формат"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Файл за импортиране"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Начало"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "Ще бъдат импортирани следните полета: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Изпълни"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -140,66 +137,65 @@ msgstr ""
"Отдолу виждате преглед на данните за импортиране. Ако сте доволни от "
"резултата, изберете 'Потвърди импортирането'"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Потвърди импортирането"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Грешки"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Номер на реда"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr ""
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr ""
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr ""
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr ""
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Преглед"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Нов"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Пропуснат"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Изтрит"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Обновен"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Ще бъдат импортирани следните полета: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+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"
@ -18,119 +18,116 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Importar"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr ""
#: admin.py:262
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr ""
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Exportar"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Exportar %(verbose_name_plural)s seleccionats"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Format"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Arxiu a importar"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Inici"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "Aquest importador importarà els següents camps: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Enviar"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -138,66 +135,65 @@ msgstr ""
"A continuació podeu veure una vista prèvia de les dades que s'importaran. Si "
"esteu satisfets amb els resultats, premeu 'Confirmar importació'"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Confirmar importació"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Errors"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Número de línia"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr ""
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr ""
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr ""
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr ""
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Vista prèvia"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Nou"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Omès"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Esborrar"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Actualitzar"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Aquest importador importarà els següents camps: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"PO-Revision-Date: 2017-05-02 19:17+0200\n"
"POT-Creation-Date: 2025-09-19 09:06+0200\n"
"PO-Revision-Date: 2025-09-17 11:44+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: cs\n"
@ -18,122 +18,120 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Poedit 2.0.1\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Import"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s skrz import_export"
#: admin.py:262
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "Import dokončen, {} nové a {} aktualizované {}."
msgstr ""
"Import dokončen, {} nové, {} aktualizované, {} smazané a {} přeskočené {}."
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
"Při načítání souboru se vyskytla chyba %(exc_name)s. Ujistěte se, že jste "
"zvolili správný formát souboru."
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
"Žádná data pro import. Ujistěte se, že soubor má správné hlavičky a data pro "
"import."
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Export"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Vybrán export %(verbose_name_plural)s"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
msgstr "export selhal z důvodu výskytu neplatného znaku"
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
msgstr "Zdroj"
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Formát"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Soubor k importu"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
msgstr "Formulář nebyl validován, nejdříve zavolejte `is_valid`"
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
msgstr "Zvolte alespoň 1 pole k exportu pro \"%(resource_name)s\""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
msgstr "Následující pole chybí v definovaných polích resource objektu: %s"
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
msgstr "Následující pole chybí v hlavičce zpracovávaného souboru: %s"
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
msgstr "konverze na text selhala: %s"
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Domů"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] "Exportovat %(len)s vybranou položku."
msgstr[1] "Exportovat %(len)s vybrané položky."
msgstr[2] "Exportovat %(len)s vybraných položek."
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#, fuzzy
#| msgid "This importer will import the following fields: "
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
msgid "This exporter will export the following fields: "
msgstr "Budou importována následující pole: "
msgstr "Budou exportována následující pole: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr "Vybrat vše"
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Odeslat"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -141,68 +139,66 @@ msgstr ""
"Níže je zobrazen náhled importovaných dat. Pokud je vše v pořádku, stiskněte "
"tlačítko „Provést import”"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Provést import"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Chyby"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Číslo řádku"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr ""
msgstr "Některé řádky nejsou platné"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr ""
"Opravte následující chyby ve vašich datech, pak znovu nahrajte soubor do "
"formuláře."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr ""
msgstr "Řádek"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr ""
msgstr "Obecné chyby řadku"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Náhled"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Nové"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Přeskočené"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Smazání"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Aktualizace"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Budou importována následující pole: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
msgstr "Hodnotu nelze načíst"
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""
#~ msgid "You must select an export format."
#~ msgstr "Musíte vybrat formát pro export."
msgstr "use_natural_foreign_keys a key_is_id nemůžou být oba True"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-01 13:15+0100\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: 2022-10-17 17:42+0200\n"
"Last-Translator: Jannes Blobel <jannes.blobel@inlang.com>\n"
"Language-Team: \n"
@ -16,24 +16,23 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.1.1\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Importieren"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s durch import_export"
#: admin.py:262
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr ""
"Import fertiggestellt: {} neue, {} aktualisierte, {} gelöschte und {} "
"übersprungene {}."
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
@ -42,7 +41,7 @@ msgstr ""
"%(exc_name)s trat auf, beim Versuch, die Datei zu lesen. Stelle sicher, dass "
"du das richtige Format für die Datei gewählt hast."
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
@ -50,43 +49,43 @@ msgstr ""
"Keine gültigen Daten für den Import. Stelle sicher, dass deine Datei die "
"korrektenKopfzeilen und Daten für den Import hat."
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Exportieren"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Ausgewählte %(verbose_name_plural)s exportieren"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr "Export schlug fehl wegen IllegalCharacterError"
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr "Ressource"
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Dateiformat"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Zu importierende Datei"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr "Formular ist nicht validiert, führe zuerst `is_valid` aus"
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr "Wähle mindestens 1 Feld für \"%(resource_name)s\" zum Exportieren aus"
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
@ -95,7 +94,7 @@ msgstr ""
"Die folgenden Felder sind in 'import_id_fields' deklariert, sind aber keine "
"Felder der Ressource: %s"
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
@ -104,45 +103,37 @@ msgstr ""
"Die folgenden Felder sind in 'import_id_fields' deklariert, aber nicht in "
"der Kopfzeile der Datei vorhanden: %s"
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr "Aufruf von force_str() in der Instanz schlug fehl: %s"
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Start"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgstr[0] ""
"\n"
" Exportiere %(len)s ausgewähltes Element.\n"
" "
msgstr[1] ""
"\n"
" Exportiere %(len)s ausgewählte Elemente.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] "Exportiere %(len)s ausgewähltes Element."
msgstr[1] "Exportiere %(len)s ausgewählte Elemente."
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
msgid "This exporter will export the following fields: "
msgstr "Es werden die folgenden Felder exportiert: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Absenden"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -150,24 +141,23 @@ msgstr ""
"Unten befindet sich eine Vorschau der zu importierenden Daten. Wenn die "
"Ergebnisse zufriedenstellend sind, klicke auf \"Import bestätigen\"."
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Import bestätigen"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Fehler"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Zeilennummer"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "Die Validierung einiger Zeilen schlug fehl"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
@ -175,42 +165,42 @@ msgstr ""
"Bitte korrigiere falls möglich diese Fehler in deiner Datei und lade sie "
"anschließend erneut mit dem obigen Formular hoch."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "Zeile"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "Nicht feldspezifisch"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Vorschau"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Neu"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Übersprungen"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Löschen"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Ändern"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Es werden die folgenden Felder importiert: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr "Wert konnte nicht eingelesen werden."
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr "use_natural_foreign_keys und key_is_id können nicht beide True sein"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: 2023-09-22 11:53-0300\n"
"Last-Translator: Santiago Muñoz <smunoz@mythologylabs.com.uy>\n"
"Language-Team: Spanish\n"
@ -19,24 +19,23 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Importar"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr ""
#: admin.py:262
#: admin.py
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "Proceso de importación finalizado, con {} nuevos y {} actualizados"
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
@ -45,97 +44,95 @@ msgstr ""
"Se encontró %(exc_name)s mientras se intentaba leer el archivo. Asegúrese "
"que seleccionó el formato correcto para el archivo."
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Exportar"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Exportar %(verbose_name_plural)s seleccionados"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr "Recurso"
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Formato"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Fichero a importar"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Inicio"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "Este importador importará los siguientes campos:"
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Enviar"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -143,24 +140,23 @@ msgstr ""
"A continuación se muestra una vista previa de los datos a importar. Si estás "
"satisfecho con los resultados, haz clic en 'Confirmar importación'"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Confirmar importación"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Errores"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Número de línea"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "Falló la validación de algunas filas"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
@ -169,43 +165,43 @@ msgstr ""
"sea posible, luego vuelva a subir el archivo utilizando el formulario de la "
"parte superior."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "Fila"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "No específico del campo"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Vista previa"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Nuevo"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Omitido"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Borrar"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Actualizar"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Este importador importará los siguientes campos:"
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: 2023-09-22 11:53-0300\n"
"Last-Translator: Santiago Muñoz <smunoz@mythologylabs.com.uy>\n"
"Language-Team: Spanish (Argentina)\n"
@ -19,24 +19,23 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.6.10\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Importar"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr ""
#: admin.py:262
#: admin.py
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "Proceso de importación finalizado, con {} nuevos y {} actualizados"
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
@ -45,97 +44,95 @@ msgstr ""
"Se encontró %(exc_name)s mientras se intentaba leer el archivo. Asegúrese "
"que seleccionó el formato correcto para el archivo."
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Exportar"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Exportar %(verbose_name_plural)s seleccionados"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr "Recurso"
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Formato"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Archivo a importar"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Inicio"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "Este importador importará los siguientes campos:"
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Enviar"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -143,24 +140,23 @@ msgstr ""
"A continuación se muestra una vista previa de los datos a importar. Si está "
"satisfecho con los resultados, haga clic en 'Confirmar importación'"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Confirmar importación"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Errores"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Número de línea"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "Falló la validación de algunas filas"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
@ -169,43 +165,43 @@ msgstr ""
"sea posible, luego vuelva a subir el archivo utilizando el formulario de la "
"parte superior."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "Fila"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "No específico del campo"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Vista previa"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Nuevo"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Omitido"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Borrar"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Actualizar"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Este importador importará los siguientes campos:"
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: 2021-03-09 00:29+0030\n"
"Last-Translator: MohammadReza Sadegh Zadeh <org.m.sdz@gmail.com>\n"
"Language-Team: Persain/Farsi <kde-i18n-it@kde.org>\n"
@ -18,18 +18,17 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "بارگذاری"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s با استفاده از ورودی-خروجی"
#: admin.py:262
#: admin.py
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
@ -37,7 +36,7 @@ msgstr ""
"بارگذاری تمام شد، با {} مورد جدید، {} مورد به روز شده، {} مورد حذف شده و {} "
"مورد در شده."
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
@ -46,49 +45,49 @@ msgstr ""
"در حال خواندن فایل، یک خطا رخ داده است. لطفا از فرمت مناسب برای فایل استفاده "
"کنید. %(exc_name)s"
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "خروجی"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "خروجی %(verbose_name_plural)s انتخاب شده"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr "منبع"
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "فرمت"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "فایل برای بارگذاری"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr "فرم معتبر نیست، ابتدا `is_valid` را فراخوانی کنید"
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr "حداقل یک فیلد را برای \"%(resource_name)s\" برای خروجی انتخاب کنید"
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
@ -97,7 +96,7 @@ msgstr ""
"فیلد‌های زیر در 'import_id_fields' اعلام شده اند، اما در فیلد‌های منبع وجود "
"ندارند: %s"
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
@ -106,47 +105,39 @@ msgstr ""
"فیلد‌های زیر در 'import_id_fields' اعلام شده اند، اما در فیلد‌های منبع وجود "
"ندارند: %s"
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr "فراخوانی به `force_str()` بر روی مورد نمونه با خطا رخ داده است: %s"
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "خانه"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgstr[0] ""
"\n"
" خروجی %(len)s مورد انتخاب شده.\n"
" "
msgstr[1] ""
"\n"
" خروجی %(len)s مورد انتخاب شده.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] "خروجی %(len)s مورد انتخاب شده."
msgstr[1] "خروجی %(len)s مورد انتخاب شده."
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "این خروجی شامل این فیلد‌ها هست:"
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "ارسال"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -154,66 +145,65 @@ msgstr ""
"پایین یک پیش‌نمایش از دیتا‌هایی است که بارگذاری خواهند شد اگر این موارد درست "
"هستند، روی 'تایید بارگذاری' کلیک کنید"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "تایید بارگذاری"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "خطاها"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "شماره خط"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "برخی سطر‌ها معتبر نبودند"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr "لطفا این خطا را تصحیح کنید و سپس مجدد فایل را بارگذاری کنید"
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "سطر"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "فیلد‌های غیر اختصاصی"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "پیش‌نمایش"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "جدید"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "رد شده"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "حذف"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "بروزرسانی"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "این بارگذاری شامل این فیلد‌ها هست:"
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr "مقدار قابل تجزیه نبود."
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: 2023-05-10 15:23+0300\n"
"Last-Translator: Lauri Virtanen <lauri.virtanen@iki.fi>\n"
"Language-Team: \n"
@ -12,24 +12,23 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Tuo"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s käyttäen import_export"
#: admin.py:262
#: admin.py
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "Tuonti valmis. Lisätty {} ja päivitetty {} kohteita {}."
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
@ -38,95 +37,93 @@ msgstr ""
"Kohdattiin %(exc_name)s tiedostoa lukiessa. Varmista, että olet valinnut "
"oikean tiedostotyypin."
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Vie"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Vie valitut %(verbose_name_plural)s"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr "Resurssi"
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Tiedostotyyppi"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Tuotava tiedosto"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Etusivu"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
msgid "This exporter will export the following fields: "
msgstr "Tämä vienti vie seuraavat kentät: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Lähetä"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -134,24 +131,23 @@ msgstr ""
"Alla on esikatselu tuotavista tiedoista. Jos olet tyytyväinen, paina "
"'Vahvista tuonti'."
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Vahvista tuonti"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Virheet"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Rivinumero"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "Joitakin rivejä ei voitu vahvistaa"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
@ -159,43 +155,43 @@ msgstr ""
"Korjaa nämä virheet tiedoissasi ja lähetä uudelleen käyttäen yllä olevaa "
"lomaketta."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "Rivi"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "Ei liity mihinkään kenttään"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Esikatselu"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Uusi"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Ohitettu"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Poisto"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Päivitys"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Tämä tuonti tuo seuraavat kentät: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+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"
@ -18,188 +18,195 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Importer"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr ""
msgstr "%s via import_export"
#: admin.py:262
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr ""
"Importation terminée: {} nouveaux, {} modifiés, {} supprimés et {} sautés "
"pour les {}."
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
"Erreur %(exc_name)s pendant la lecture du fichier. Assurez-vous davoir "
"choisi le bon format pour le fichier."
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
"Pas de données valides importables. Assurez-vous que le fichier contient des "
"en-têtes ou données correctes pour limportation."
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Exporter"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Exporter %(verbose_name_plural)s selectionnés"
msgstr "Exporter %(verbose_name_plural)s selectionné(e)s"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
msgstr "exportation échouée à cause de IllegalCharacterError"
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
msgstr "Ressource"
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Format"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Fichier à importer"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
msgstr "Le formulaire nest pas validé, appeler dabord `is_valid`"
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
msgstr "Sélectionner au moins 1 champ pour \"%(resource_name)s\" pour exporter"
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
"Les champs suivants sont déclarés dans 'import_id_fields' mais ne sont pas "
"présents dans les champs de la ressource: %s"
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
"Les champs suivants sont déclarés dans 'import_id_fields' mais ne sont pas "
"présents dans les en-têtes du fichier: %s"
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
msgstr "un appel à force_str() sur une instance a échoué: %s"
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Accueil"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgstr[0] ""
msgstr[1] ""
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] "Exporter %(len)s élément sélectionné."
msgstr[1] "Exporter %(len)s éléments sélectionnés."
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#, fuzzy
#| msgid "This importer will import the following fields: "
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
msgid "This exporter will export the following fields: "
msgstr "Cet importateur va importer les champs suivants: "
msgstr "Cet exportateur va exporter les champs suivants: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Soumettre"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
msgstr ""
"Voici un aperçu des données à importer. Si vous êtes satisfait des "
"résultats, cliquez sur 'Confirmer l'importation'"
"Voici un aperçu des données à importer. Si vous êtes satisfait(e) des "
"résultats, cliquez sur 'Confirmer limportation'"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Confirmer l'importation"
msgstr "Confirmer limportation"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Erreurs"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Numéro de ligne"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr ""
msgstr "Certaines lignes ont échoué à la validation"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr ""
"Veuillez corriger ces erreurs dans les données si possible, puis envoyer à "
"nouveau en utilisant le formulaire ci-dessus."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr ""
msgstr "Ligne"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr ""
msgstr "Non spécifique à un champ"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Aperçu"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Nouveau"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Ignoré"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Supprimer"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Mettre à jour"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Cet importateur va importer les champs suivants: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
msgstr "La valeur na pas pu être interprétée."
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""
"use_natural_foreign_keys et key_is_id ne peuvent pas être True en même temps"
#~ msgid "You must select an export format."
#~ msgstr "Vous devez sélectionner un format d'exportation."

Binary file not shown.

View File

@ -0,0 +1,205 @@
# Hebrew translation for django-import-export
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
msgid ""
msgstr ""
"Project-Id-Version: django-import-export\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: 2025-06-23 17:44+0300\n"
"Last-Translator: \n"
"Language-Team: Hebrew <he@li.org>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.6\n"
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "ייבוא"
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s באמצעות ייבוא/ייצוא"
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "הייבוא הסתיים: נוספו {}, עודכנו {}, נמחקו {}, דולגו {}."
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
"שגיאת %(exc_name)s אירעה בקריאת הקובץ. ודאו שבחרתם את פורמט הקובץ הנכון."
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
"לא נמצא מידע תקין לייבוא. יש לוודא שהכותרות והנתונים בקובץ תקינים ומתאימים "
"לייבוא."
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "ייצוא"
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "ייצוא %(verbose_name_plural)s שנבחרו"
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr "הייצוא נכשל עקב שגיאת תו לא חוקי (IllegalCharacterError)"
#: forms.py
msgid "Resource"
msgstr "משאב"
#: forms.py
msgid "Format"
msgstr "פורמט"
#: forms.py
msgid "File to import"
msgstr "קובץ לייבוא"
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr "הטופס לא אומת, יש לקרוא לפונקציה `is_valid` תחילה"
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr "יש לבחור לפחות שדה אחד לייצוא עבור \"%(resource_name)s\""
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr "השדות הבאים הוגדרו ב-'import_id_fields' אך אינם קיימים בשדות המשאב: %s"
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
"השדות הבאים הוגדרו ב-'import_id_fields' אך אינם קיימים בכותרות הקובץ: %s"
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr "הקריאה ל-force_str() על המופע נכשלה: %s"
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "דף הבית"
#: templates/admin/import_export/export.html
#, python-format
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] "ייצוא הפריט שנבחר"
msgstr[1] "ייצוא %(len)s פריטים שנבחרו"
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
msgid "This exporter will export the following fields: "
msgstr "הייצוא יכלול את השדות הבאים:"
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "שליחה"
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
msgstr ""
"להלן תצוגה מקדימה של הנתונים לייבוא. אם התוצאות נראות תקינות, לחצו על 'אשר "
"ייבוא'."
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "אשר ייבוא"
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "שגיאות"
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "מספר שורה"
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "אימות מספר שורות נכשל"
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr ""
"יש לתקן את השגיאות בקובץ המקורי במידת האפשר, ולטעון אותו מחדש באמצעות הטופס "
"למעלה."
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "שורה"
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "לא קשור לשדה מסוים"
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "תצוגה מקדימה"
#: templates/admin/import_export/import.html
msgid "New"
msgstr "חדש"
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "דולג"
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "מחיקה"
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "עדכון"
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "הייבוא יכלול את השדות הבאים:"
#: widgets.py
msgid "Value could not be parsed."
msgstr "לא ניתן היה לפענח את הערך."
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""
"לא ניתן להפעיל את ההגדרות 'use_natural_foreign_keys' ו-'key_is_id' בו-זמנית."
#~ msgid "You must select an export format."
#~ msgstr "עליך לבחור פורמט לייצוא."

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: 2015-08-30 20:32+0100\n"
"Last-Translator: Christian Galeffi <chri@gallochri.com>\n"
"Language-Team: Italian <kde-i18n-it@kde.org>\n"
@ -17,119 +17,116 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Importare"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr ""
#: admin.py:262
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr ""
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Esportare"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Esporta selezionati %(verbose_name_plural)s"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Formato"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "File da importare"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Home"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "Verranno importati i seguenti campi:"
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Inviare"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -137,66 +134,65 @@ msgstr ""
"Questa è un'anteprima dei dati che saranno importati. Se il risultato è "
"soddisfacente, premi 'Conferma importazione'"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Conferma importazione"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Errori"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Numero linea"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr ""
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr ""
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr ""
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr ""
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Anteprima"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Nuovo"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Salta"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Cancella"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Aggiorna"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Verranno importati i seguenti campi:"
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+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"
@ -18,118 +18,115 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "インポート"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr ""
#: admin.py:262
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr ""
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "エクスポート"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "選択した %(verbose_name_plural)s をエクスポート"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "フォーマット"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "インポートするファイル"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "ホーム"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "以下の列をインポートします。"
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "確定"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -137,66 +134,65 @@ msgstr ""
"インポートされるデータのプレビューを表示しています。この内容で問題なければ"
"「インポート実行」をクリックしてください。"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "インポート実行"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "エラー"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "行番号"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr ""
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr ""
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr ""
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr ""
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "プレビュー"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "新規"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "スキップ"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "削除"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "更新"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "以下の列をインポートします。"
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Yeongkwang Yang <immutable000@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,120 +18,117 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "가져오기"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s은(는) django-import-export를 통해 가져왔습니다."
#: admin.py:262
#: admin.py
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "가져오기 성공, {} 행 추가, {} 행 업데이트"
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "내보내기"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "선택한 %(verbose_name_plural)s 내보내기"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "형식"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "파일"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr ""
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "다음의 필드를 가져옵니다: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "제출"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -139,66 +136,65 @@ msgstr ""
"다음은 불러올 데이터의 미리보기 입니다.데이터에 문제가 없다면 확인을 눌러 가"
"져오기를 진행하세요."
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "확인"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "에러"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "행 번호"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "유효성 검증에 실패한 행이 있습니다."
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr "에러를 수정한 후 파일을 다시 업로드 해주세요."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr ""
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "지정된 필드 없음"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "미리보기"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "생성"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "넘어감"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "삭제"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "갱신"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "다음의 필드를 가져옵니다: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Muslim Beibytuly <muslimbeibytuly@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,121 +17,118 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Импорт"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s арқылы import_export"
#: admin.py:262
#: admin.py
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "Импорт аяқталды, {} жаңа және {} жаңартылды {}."
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Экспорт"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Таңдалған %(verbose_name_plural)s экспорттаңыз"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Формат"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Импорттауға арналған файл"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Басты бет"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "Бұл импорттаушы келесі өрістерді импорттайды: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Жіберу"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -139,24 +136,23 @@ msgstr ""
"Төменде импортталатын деректерді алдын ала қарау берілген. Егер сіз "
"нәтижелерге қанағаттансаңыз, 'Импортты растау' түймесін басыңыз."
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Импортты растау"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Қателер"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Жол нөмірі"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "Кейбір жолдар тексерілмеді"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
@ -164,43 +160,43 @@ msgstr ""
"Мүмкіндігінше деректеріңіздегі қателерді түзетіңіз, содан кейін жоғарыдағы "
"пішінді қолданып қайта жүктеңіз."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "Қатар"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "Өріске қатысты емес"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Алдын-ала қарау"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Жаңа"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Өткізілді"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Жою"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Жаңарту"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Бұл импорттаушы келесі өрістерді импорттайды: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+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"
@ -18,121 +18,118 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Importeren"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s door import_export"
#: admin.py:262
#: admin.py
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "Import is klaar met {} nieuwe en {} geupdate {}."
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Exporteren"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Exporteer geselecteerde %(verbose_name_plural)s"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Formaat"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Bestand om te importeren"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Terug"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "Deze import zal de volgende velden toevoegen"
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Indienen"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -140,24 +137,23 @@ msgstr ""
"Hieronder is een voorvertoning van de data die geïmporteerd zal worden. Als "
"u tevreden bent met het resultaat, klik dan op 'Accepteer de import'."
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Accepteer de import"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Fouten"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Regel nummer"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "Sommige regels zijn niet goedgekeurd"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
@ -165,43 +161,43 @@ msgstr ""
"Verander alstublieft de volgende fouten in uw data waar mogelijk. Upload het "
"bestand daarna nogmaals met het veld hierboven."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "Regel"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "Niet veld specifiek"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Voorbeeldweergave"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Nieuw"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Overgeslagen"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Verwijderen"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Bijwerken"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Deze import zal de volgende velden toevoegen"
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+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"
@ -19,122 +19,119 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Import"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s przez import_export"
#: admin.py:262
#: admin.py
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "Import zakończony, z {} nowymi i {} zaktualizowanymi {}."
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Eksport"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Eksportuj wybrane %(verbose_name_plural)s"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Format"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Plik do importu"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Powrót"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "Zostaną zaimportowane następujące pola: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Wyślij"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -142,66 +139,65 @@ msgstr ""
"Poniżej znajdują się przykładowe dane do zaimportowania. Jeśli "
"satysfakcjonuje Cię wynik, kliknij 'Potwierdź import'"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Potwierdź import"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Błędy"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Numer linii"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr ""
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr ""
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr ""
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr ""
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Podgląd"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Nowy"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Pominięty"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Usuń"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Zaktualizowany"
msgstr "Zaktualizuj"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Zostaną zaimportowane następujące pola: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: 2020-06-06 10:30-0500\n"
"Last-Translator: Daniel Pluth <pluthd@gmail.com>\n"
"Language-Team: \n"
@ -17,121 +17,118 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 20.04.1\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Importar"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s através import_export "
#: admin.py:262
#: admin.py
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "A importação foi completada com {} novas e {} atualizadas {}"
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Exportar"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Exportar %(verbose_name_plural)s selecionados"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Formato"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Arquivo a ser importado"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Início"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "Este importador vai importar os seguintes campos:"
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Enviar"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -139,24 +136,23 @@ msgstr ""
"Ver abaixo uma prévia dos dados a serem importados. Se você esta satisfeito "
"com os resultados, clique em 'Confirmar importação'"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Confirmar importação"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Erros"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Número da linha"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "Algumas linhas não foram validadas"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
@ -164,43 +160,43 @@ msgstr ""
"Por favor corrigir os erros nos dados onde possível e recarregar os dados "
"com o formato acima."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "Linha"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "Campo não é específico"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Prévia"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Novo"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Não usados"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Remover"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Atualizar"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Este importador vai importar os seguintes campos:"
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: 2024-04-26 20:55+0700\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -19,22 +19,21 @@ msgstr ""
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 3.0.1\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Импорт"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s через import_export"
#: admin.py:262
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "Импорт завершен: {} новых, {} обновлено, {} удалено и {} пропущено {}."
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
@ -43,7 +42,7 @@ msgstr ""
"При чтении файла возникла ошибка %(exc_name)s. Убедитесь, что используется "
"подходящий формат файла."
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
@ -51,43 +50,43 @@ msgstr ""
"Некорректные данные для импорта. Убедитесь, что файл содержит корректные "
"заголовок и данные."
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Экспорт"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Экспортировать выбранные %(verbose_name_plural)s"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr "Ресурс"
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Формат"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Файл для импорта"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr "Необходимо сначала вызвать `is_valid` для валидации формы"
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr "Выберите хотя бы одно поле для экспорта \"%(resource_name)s\""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
@ -96,7 +95,7 @@ msgstr ""
"Следующие поля указаны в 'import_id_fields', но отсутствуют в полях ресурса: "
"%s"
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
@ -105,49 +104,38 @@ msgstr ""
"Следующие поля указаны в 'import_id_fields', но отсутствуют в заголовке "
"файла: %s"
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr "вызов 'force_str()' завершился ошибкой: %s"
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Главная"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgstr[0] ""
"\n"
" Экспортировать %(len)s выбранный элемент.\n"
" "
msgstr[1] ""
"\n"
" Экспортировать %(len)s выбранных элемента.\n"
" "
msgstr[2] ""
"\n"
" Экспортировать %(len)s выбранных элементов.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] "Экспортировать %(len)s выбранный элемент."
msgstr[1] "Экспортировать %(len)s выбранных элемента."
msgstr[2] "Экспортировать %(len)s выбранных элементов."
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
msgid "This exporter will export the following fields: "
msgstr "Будут экспортированы следующие поля: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Отправить"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -155,24 +143,23 @@ msgstr ""
"Ниже показано то, что будет импортировано. Нажмите 'Подтвердить импорт', "
"если Вас устраивает результат"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Подтвердить импорт"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Ошибки"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Номер строки"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "Некоторые строки не прошли валидацию"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
@ -180,43 +167,43 @@ msgstr ""
"По возможности исправьте эти ошибки в своих данных, а затем повторно "
"загрузите их, используя форму выше."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "Строка"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "Не относящиеся к конкретному полю"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Предпросмотр"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Добавлено"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Пропущено"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Удалено"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Обновлено"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Будут импортированы следующие поля: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr "Ошибка парсинга значения."
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+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"
@ -18,120 +18,117 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "Importovať"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr ""
#: admin.py:262
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr ""
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Exportovať"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Exportovať vybrané %(verbose_name_plural)s"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Formát"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "Importovať súbor"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Domov"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
#, fuzzy
#| msgid "This importer will import the following fields: "
msgid "This exporter will export the following fields: "
msgstr "Budú importované nasledujúce polia: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Odoslať"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -139,66 +136,65 @@ msgstr ""
"Nižšie je zobrazený náhľad importovaných dát. Ak je všetko v poriadku, "
"kliknite na tlačidlo 'Potvrdiť import'"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "Potvrdiť import"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Chyby"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Číslo riadku"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr ""
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr ""
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr ""
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr ""
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Náhľad"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Nový"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Preskočený"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Vymazaný"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Aktualizovaný"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Budú importované nasledujúce polia: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -1,16 +1,16 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# Cihad GÜNDOĞDU <cihadgundogdu@gmail.com>, 2025.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-08-30 17:56+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Last-Translator: Cihad GÜNDOĞDU <cihadgundogdu@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
@ -18,121 +18,122 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "İçe aktar"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s vasıtasıyla import_export"
#: admin.py:262
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "{} yeni ve {} güncellenen {} ile içe aktarma bitti"
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr "%(exc_name)s dosyayı okumaya çalışırken karşılaşıldı. Dosya için doğru biçimi seçtiğinizden emin olun."
msgstr ""
"%(exc_name)s dosyayı okumaya çalışırken karşılaşıldı. Dosya için doğru "
"biçimi seçtiğinizden emin olun."
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr "Geçerli içe aktarılacak veri yok. Dosyanızın doğru başlıkları veya içe aktarım için verileri olduğundan emin olun."
msgstr ""
"Geçerli içe aktarılacak veri yok. Dosyanızın doğru başlıkları veya içe "
"aktarım için verileri olduğundan emin olun."
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "Dışa aktar"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "Seçililenleri dışa aktar %(verbose_name_plural)s"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr "dışa aktarma, IllegalCharacterError nedeniyle başarısız oldu"
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr "Kaynak"
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "Dosya biçimi"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "İçe alınacak dosya"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr "Form doğrulanmadı, önce `is_valid` çağırın"
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr "\"%(resource_name)s\" için en az 1 alan seçin"
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr "Aşağıdaki alanlar 'import_id_fields' içinde belirtilmiş ancak kaynak alanlarında bulunmamaktadır: %s"
msgstr ""
"Aşağıdaki alanlar 'import_id_fields' içinde belirtilmiş ancak kaynak "
"alanlarında bulunmamaktadır: %s"
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr "Aşağıdaki alanlar 'import_id_fields' içinde belirtilmiş ancak dosya başlıklarında bulunmamaktadır: %s"
msgstr ""
"Aşağıdaki alanlar 'import_id_fields' içinde belirtilmiş ancak dosya "
"başlıklarında bulunmamaktadır: %s"
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr "force_str() çağrısı örnekte başarısız oldu: %s"
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr "Ana sayfa"
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgstr[0] "\n Dışa aktar %(len)s seçilen öğe."
msgstr[1] "\n Dışa aktar %(len)s seçilen öğeler."
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] "Dışa aktar %(len)s seçilen öğe."
msgstr[1] "Dışa aktar %(len)s seçilen öğeler."
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#, fuzzy
#| msgid "This importer will import the following fields: "
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
msgid "This exporter will export the following fields: "
msgstr "Bu içe aktarıcı aşağıdaki alanları içe aktaracaktır: "
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr "Tümünü seç"
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "Kaydet"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
@ -140,24 +141,23 @@ msgstr ""
"Aşağıda içe aktarılacak verilerin önizlemesi verilmiştir. Sonuçlardan "
"memnunsanız 'İçe aktarmayı onayla'yı tıklayın."
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "İçe aktarmayı onayla"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "Hatalar"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "Satır numarası"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "Bazı satırlar doğrulanamadı"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
@ -165,43 +165,43 @@ msgstr ""
"Lütfen verilerinizdeki bu hataları olabildiğince düzeltin, sonra yukarıdaki "
"formu kullanarak tekrar yükleyin."
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "Satır"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "Alan olmayana özgü"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "Ön izleme"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "Yeni"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "Atlandı"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "Sil"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "Güncelle"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "Bu içe aktarıcı aşağıdaki alanları içe aktaracaktır: "
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr "Değer ayrıştırılamadı."
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr "use_natural_foreign_keys ve key_is_id aynı anda True olamaz"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-02 12:47+0000\n"
"POT-Creation-Date: 2025-06-23 19:11+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: hao wang <173300430@qq.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,185 +18,177 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: admin.py:184 admin.py:548
#: templates/admin/import_export/change_list_import_item.html:5
#: templates/admin/import_export/import.html:19
#: admin.py templates/admin/import_export/change_list_import_item.html
#: templates/admin/import_export/import.html
msgid "Import"
msgstr "导入"
#: admin.py:254 admin.py:600
#: admin.py
#, python-format
msgid "%s through import_export"
msgstr "%s 通过 django-import-export导入"
#: admin.py:262
#, fuzzy
#| msgid "Import finished, with {} new and {} updated {}."
#: admin.py
msgid "Import finished: {} new, {} updated, {} deleted and {} skipped {}."
msgstr "导入成功,新增{}条记录,更新{}条记录。"
msgstr "导入成功,新增{}条记录,更新{}条记录,删除{}条记录,忽略{}条记录。"
#: admin.py:431
#: admin.py
#, python-format
msgid ""
"%(exc_name)s encountered while trying to read file. Ensure you have chosen "
"the correct format for the file."
msgstr ""
#: admin.py:504
#: admin.py
msgid ""
"No valid data to import. Ensure your file has the correct headers or data "
"for import."
msgstr ""
#: admin.py:819 templates/admin/import_export/change_form.html:8
#: templates/admin/import_export/change_list_export_item.html:5
#: templates/admin/import_export/export.html:12
#: admin.py templates/admin/import_export/change_form.html
#: templates/admin/import_export/change_list_export_item.html
#: templates/admin/import_export/export.html
msgid "Export"
msgstr "导出"
#: admin.py:952
#: admin.py
#, python-format
msgid "Export selected %(verbose_name_plural)s"
msgstr "导出选中的 %(verbose_name_plural)s"
#: formats/base_formats.py:236
#: formats/base_formats.py
msgid "export failed due to IllegalCharacterError"
msgstr ""
#: forms.py:15
#: forms.py
msgid "Resource"
msgstr ""
#: forms.py:20
#: forms.py
msgid "Format"
msgstr "格式"
#: forms.py:56
#: forms.py
msgid "File to import"
msgstr "导入文件"
#: forms.py:216
#: forms.py
msgid "Form is not validated, call `is_valid` first"
msgstr ""
#: forms.py:268
#: forms.py
#, python-format
msgid "Select at least 1 field for \"%(resource_name)s\" to export"
msgstr ""
#: resources.py:1171
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the resource fields: %s"
msgstr ""
#: resources.py:1186
#: resources.py
#, python-format
msgid ""
"The following fields are declared in 'import_id_fields' but are not present "
"in the file headers: %s"
msgstr ""
#: results.py:150
#: results.py
#, python-format
msgid "call to force_str() on instance failed: %s"
msgstr ""
#: templates/admin/import_export/base.html:11
#: templates/admin/import_export/base.html
msgid "Home"
msgstr ""
#: templates/admin/import_export/export.html:24
#: templates/admin/import_export/export.html
#, python-format
msgid ""
"\n"
" Export %(len)s selected item.\n"
" "
msgid_plural ""
"\n"
" Export %(len)s selected items.\n"
" "
msgid "Export %(len)s selected item."
msgid_plural "Export %(len)s selected items."
msgstr[0] ""
#: templates/admin/import_export/export.html:51
#: templates/admin/import_export/resource_fields_list.html:5
#, fuzzy
#| msgid "This importer will import the following fields: "
#: templates/admin/import_export/export.html
#: templates/admin/import_export/resource_fields_list.html
msgid "This exporter will export the following fields: "
msgstr "此次将导以下字段:"
msgstr "此次将导出以下字段:"
#: templates/admin/import_export/export.html:85
#: templates/admin/import_export/import.html:73
#: templates/admin/import_export/export.html
msgid "Select all"
msgstr ""
#: templates/admin/import_export/export.html
#: templates/admin/import_export/import.html
msgid "Submit"
msgstr "提交"
#: templates/admin/import_export/import.html:30
#: templates/admin/import_export/import.html
msgid ""
"Below is a preview of data to be imported. If you are satisfied with the "
"results, click 'Confirm import'"
msgstr "以下是导入数据的预览。如果确认结果没有问题,可以点击 “确认导入”"
#: templates/admin/import_export/import.html:33
#: templates/admin/import_export/import.html
msgid "Confirm import"
msgstr "确认导入"
#: templates/admin/import_export/import.html:84
#: templates/admin/import_export/import.html:125
#: templates/admin/import_export/import.html
msgid "Errors"
msgstr "错误"
#: templates/admin/import_export/import.html:98
#: templates/admin/import_export/import.html
msgid "Line number"
msgstr "行号"
#: templates/admin/import_export/import.html:117
#: templates/admin/import_export/import.html
msgid "Some rows failed to validate"
msgstr "某些行验数据证失败"
#: templates/admin/import_export/import.html:119
#: templates/admin/import_export/import.html
msgid ""
"Please correct these errors in your data where possible, then reupload it "
"using the form above."
msgstr "请使用上面的表单,纠正这些提示有错误的数据,并重新上传"
#: templates/admin/import_export/import.html:124
#: templates/admin/import_export/import.html
msgid "Row"
msgstr "行"
#: templates/admin/import_export/import.html:151
#: templates/admin/import_export/import.html
msgid "Non field specific"
msgstr "没有指定的字段"
#: templates/admin/import_export/import.html:174
#: templates/admin/import_export/import.html
msgid "Preview"
msgstr "预览"
#: templates/admin/import_export/import.html:189
#: templates/admin/import_export/import.html
msgid "New"
msgstr "新增"
#: templates/admin/import_export/import.html:191
#: templates/admin/import_export/import.html
msgid "Skipped"
msgstr "忽略"
#: templates/admin/import_export/import.html:193
#: templates/admin/import_export/import.html
msgid "Delete"
msgstr "删除"
#: templates/admin/import_export/import.html:195
#: templates/admin/import_export/import.html
msgid "Update"
msgstr "更新"
#: templates/admin/import_export/resource_fields_list.html:7
#: templates/admin/import_export/resource_fields_list.html
msgid "This importer will import the following fields: "
msgstr "此次将导入以下字段:"
#: widgets.py:369
#: widgets.py
msgid "Value could not be parsed."
msgstr ""
#: widgets.py:497
#: widgets.py
msgid "use_natural_foreign_keys and key_is_id cannot both be True"
msgstr ""

View File

@ -206,11 +206,8 @@ class Resource(metaclass=DeclarativeMetaclass):
"""
Creates objects by calling ``bulk_create``.
"""
if len(self.create_instances) > 0 and (using_transactions or not dry_run):
try:
if len(self.create_instances) > 0:
if not using_transactions and dry_run:
pass
else:
self._meta.model.objects.bulk_create(
self.create_instances, batch_size=batch_size
)
@ -225,11 +222,8 @@ class Resource(metaclass=DeclarativeMetaclass):
"""
Updates objects by calling ``bulk_update``.
"""
if len(self.update_instances) > 0 and (using_transactions or not dry_run):
try:
if len(self.update_instances) > 0:
if not using_transactions and dry_run:
pass
else:
self._meta.model.objects.bulk_update(
self.update_instances,
self.get_bulk_update_fields(),
@ -245,11 +239,8 @@ class Resource(metaclass=DeclarativeMetaclass):
Deletes objects by filtering on a list of instances to be deleted,
then calling ``delete()`` on the entire queryset.
"""
if len(self.delete_instances) > 0 and (using_transactions or not dry_run):
try:
if len(self.delete_instances) > 0:
if not using_transactions and dry_run:
pass
else:
delete_ids = [o.pk for o in self.delete_instances]
self._meta.model.objects.filter(pk__in=delete_ids).delete()
except Exception as e:
@ -309,8 +300,7 @@ class Resource(metaclass=DeclarativeMetaclass):
self.create_instances.append(instance)
else:
self.update_instances.append(instance)
else:
if not self._is_using_transactions(kwargs) and self._is_dry_run(kwargs):
elif not self._is_using_transactions(kwargs) and self._is_dry_run(kwargs):
# we don't have transactions and we want to do a dry_run
pass
else:
@ -370,8 +360,7 @@ class Resource(metaclass=DeclarativeMetaclass):
self.before_delete_instance(instance, row, **kwargs)
if self._meta.use_bulk:
self.delete_instances.append(instance)
else:
if not self._is_using_transactions(kwargs) and self._is_dry_run(kwargs):
elif not self._is_using_transactions(kwargs) and self._is_dry_run(kwargs):
# we don't have transactions and we want to do a dry_run
pass
else:
@ -433,9 +422,11 @@ class Resource(metaclass=DeclarativeMetaclass):
def get_import_fields(self):
import_fields = []
missing = object()
for field_name in self.get_import_order():
if field_name in self.fields:
import_fields.append(self.fields[field_name])
field = self.fields.get(field_name, missing)
if field is not missing:
import_fields.append(field)
continue
# issue 1815
# allow for fields to be referenced by column_name in `fields` list
@ -588,8 +579,7 @@ class Resource(metaclass=DeclarativeMetaclass):
v.pk for v in original_values
):
return False
else:
if field.get_value(instance) != field.get_value(original):
elif field.get_value(instance) != field.get_value(original):
return False
return True
@ -1110,8 +1100,10 @@ class Resource(metaclass=DeclarativeMetaclass):
def _select_field(self, target_field_name):
# select field from fields based on either declared name or column name
if target_field_name in self.fields:
return self.fields[target_field_name]
missing = object()
field = self.fields.get(target_field_name, missing)
if field is not missing:
return field
for field_name, field in self.fields.items():
if target_field_name == field.column_name:
@ -1264,8 +1256,9 @@ class ModelResource(Resource, metaclass=ModelDeclarativeMetaclass):
if callable(getattr(f, "get_internal_type", None)):
internal_type = f.get_internal_type()
if internal_type in cls.WIDGETS_MAP:
result = cls.WIDGETS_MAP[internal_type]
widget_result = cls.WIDGETS_MAP.get(internal_type)
if widget_result is not None:
result = widget_result
if isinstance(result, str):
result = getattr(cls, result)(f)
else:
@ -1274,8 +1267,9 @@ class ModelResource(Resource, metaclass=ModelDeclarativeMetaclass):
# of a standard field class.
# iterate base classes to determine the correct widget class to use.
for base_class in f.__class__.__mro__:
if base_class.__name__ in cls.WIDGETS_MAP:
result = cls.WIDGETS_MAP[base_class.__name__]
widget_result = cls.WIDGETS_MAP.get(base_class.__name__)
if widget_result is not None:
result = widget_result
if isinstance(result, str):
result = getattr(cls, result)(f)
break
@ -1379,18 +1373,72 @@ class ModelResource(Resource, metaclass=ModelDeclarativeMetaclass):
return cls.__name__
def modelresource_factory(model, resource_class=ModelResource):
def modelresource_factory(
model,
resource_class=ModelResource,
meta_options=None,
custom_fields=None,
dehydrate_methods=None,
):
"""
Factory for creating ``ModelResource`` class for given Django model.
This factory function creates a ``ModelResource`` class dynamically, with support
for custom fields, methods.
:param model: Django model class
:param resource_class: Base resource class (default: ModelResource)
:param meta_options: Meta options dictionary
:param custom_fields: Dictionary mapping field names to Field object
:param dehydrate_methods: Dictionary mapping field names
to dehydrate method (Callable)
:returns: ModelResource class
"""
attrs = {"model": model}
Meta = type("Meta", (object,), attrs)
class_name = model.__name__ + "Resource"
def _create_dehydrate_func_wrapper(func):
def wrapper(self, obj):
return func(obj)
class_attrs = {
return wrapper
if meta_options is None:
meta_options = {}
if custom_fields is None:
custom_fields = {}
if dehydrate_methods is None:
dehydrate_methods = {}
for field_name, field in custom_fields.items():
if not isinstance(field, Field):
raise ValueError(
f"custom_fields['{field_name}'] must be a Field instance, "
f"got {type(field).__name__}"
)
meta_class_attrs = {**meta_options, "model": model}
Meta = type("Meta", (object,), meta_class_attrs)
resource_class_name = model.__name__ + "Resource"
resource_class_attrs = {
"Meta": Meta,
}
resource_class_attrs.update(custom_fields)
for field_name, method in dehydrate_methods.items():
if not callable(method):
raise ValueError(
f"dehydrate_methods['{field_name}'] must be callable, "
f"got {type(method).__name__}"
)
method_name = f"dehydrate_{field_name}"
resource_class_attrs[method_name] = _create_dehydrate_func_wrapper(method)
metaclass = ModelDeclarativeMetaclass
return metaclass(class_name, (resource_class,), class_attrs)
return metaclass(resource_class_name, (resource_class,), resource_class_attrs)

View File

@ -26,6 +26,24 @@ function onResourceSelected(e) {
hideUnselectedResourceFields(resourceIndex);
}
function onSelectToggleChange(e) {
/*
* Handles a checkbox click event to select / deselect all field checkboxes.
*/
const select = e.target;
const isChecked = select.checked;
if (isChecked) {
document.querySelectorAll('.selectable-field-export-row input[type="checkbox"]').forEach((checkbox) => {
checkbox.checked = true;
});
} else {
document.querySelectorAll('.selectable-field-export-row input[type="checkbox"]').forEach((checkbox) => {
checkbox.checked = false;
});
}
}
document.addEventListener("DOMContentLoaded", () => {
const resourceSelector = document.querySelector("#id_resource");

View File

@ -13,21 +13,23 @@
{% endblock %}
{% block content %}
{% if form.errors %}
{{ form.errors }}
{% endif %}
<form action="{{ export_url }}" method="POST">
{% csrf_token %}
{# export request has originated from an Admin UI action #}
{% if form.initial.export_items %}
<p>
{% blocktranslate count len=form.initial.export_items|length %}
{% blocktranslate count len=form.initial.export_items|length trimmed %}
Export {{ len }} selected item.
{% plural %}
Export {{ len }} selected items.
{% endblocktranslate %}
</p>
{% endif %}
{% if form.export_items.errors %}
<div class="error">
{{ form.export_items.errors }}
</div>
{% endif %}
{# fields list is not required with selectable fields form #}
{% if not form.is_selectable_fields_form %}
@ -49,6 +51,14 @@
>
{% if field.field.initial_field %}
<p style="padding: 0;">{% translate "This exporter will export the following fields: " %}</p>
{% if form.visible_fields|length >= 2 %}
<div>
<input type="checkbox" class="select-toggle" name="select-all-toggle"
onchange="onSelectToggleChange(event)" checked>
<label style="font-weight: bold;" for="select-all-toggle">{% translate "Select all" %}
</label>
</div>
{% endif %}
{% endif %}
{{ field.errors }}
@ -78,7 +88,9 @@
</fieldset>
<div>
{% if form.non_field_errors %}
{{ form.non_field_errors }}
{% endif %}
</div>
<div class="submit-row">

View File

@ -68,6 +68,8 @@
</fieldset>
{% endblock %}
{{ form.non_field_errors }}
{% block form_submit_button %}
<div class="submit-row">
<input type="submit" class="default" value="{% translate "Submit" %}">

View File

@ -182,7 +182,6 @@ class CharWidget(Widget):
return force_str(val)
def render(self, value, obj=None, **kwargs):
# FIXME - how are nulls exported to XLSX
self._obj_deprecation_warning(obj)
if self.coerce_to_string:
return "" if value is None else force_str(value)

View File

@ -19,8 +19,8 @@ dynamic = ["version"]
classifiers = [
"Framework :: Django",
"Framework :: Django :: 4.2",
"Framework :: Django :: 5.0",
"Framework :: Django :: 5.1",
"Framework :: Django :: 5.2",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
@ -54,10 +54,11 @@ yaml = ["tablib[yaml]"]
docs = [
"sphinx==8.1.3",
"sphinx-rtd-theme==3.0.1",
"openpyxl==3.1.5"
"openpyxl==3.1.5",
"psycopg[binary]>=3.2.9",
]
tests = [
"psycopg2-binary==2.9.10",
"psycopg[binary]>=3.2.9",
"mysqlclient==2.2.5",
"chardet==5.2.0",
"pytz==2024.2",

View File

@ -187,6 +187,19 @@ class ExportAdminIntegrationTest(AdminTestMixin, TestCase):
target_msg = "Some unknown error"
self.assertIn(target_msg, response.content.decode())
def test_get_export_FormError_occurrence(self):
# issue 2065
data = {
"format": "0",
"resource": 1,
"booknameresource_id": False,
"booknameresource_name": False,
}
response = self._post_url_response(self.book_export_url, data)
target_msg = "Select at least 1 field"
# Validate the occurrence of the error message should be 1
self.assertEqual(response.content.decode().count(target_msg), 1)
def test_export_second_resource(self):
self._get_url_response(
self.book_export_url, str_in_response="Export/Import only book names"

View File

@ -7,6 +7,7 @@ from core.models import Author, Book, EBook
from core.tests.admin_integration.mixins import AdminTestMixin
from django.contrib.admin.sites import AdminSite
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from django.test import RequestFactory
from django.test.testcases import TestCase
from django.test.utils import override_settings
@ -46,6 +47,15 @@ class ImportErrorHandlingTests(AdminTestMixin, TestCase):
)
self.assertFormError(response.context["form"], "import_file", target_msg)
def test_import_action_handles_NonFieldError(self):
# issue 2070
with mock.patch("django.forms.Form.clean") as mock_clean:
mock_clean.side_effect = ValidationError("some non field error")
response = self._do_import_post(self.book_import_url, "books.csv")
self.assertEqual(response.status_code, 200)
target_msg = "some non field error"
self.assertIn(target_msg, response.content.decode())
def test_import_action_handles_FieldError(self):
# issue 1722
with mock.patch(
@ -139,6 +149,50 @@ class ImportErrorHandlingTests(AdminTestMixin, TestCase):
).format(1, 0, 0, 0, EBook._meta.verbose_name_plural),
)
def test_confirm_import_handles_non_field_error(self):
"""Test if admin import handles errors gracefully when confirm_form is
has a non-field error. See #2070.
"""
Author.objects.create(id=11, name="Test Author")
# GET the import form
response = self._get_url_response(
self.ebook_import_url, str_in_response='form action=""'
)
self.assertTemplateUsed(response, self.admin_import_template_url)
# POST the import form
input_format = "0"
filename = os.path.join(
os.path.dirname(__file__),
os.path.pardir,
os.path.pardir,
"exports",
"books.csv",
)
with open(filename, "rb") as fobj:
data = {"author": 11, "format": input_format, "import_file": fobj}
response = self._post_url_response(self.ebook_import_url, data)
self.assertIn("result", response.context)
self.assertFalse(response.context["result"].has_errors())
self.assertIn("confirm_form", response.context)
confirm_form = response.context["confirm_form"]
self.assertIsInstance(
confirm_form,
CustomBookAdmin(EBook, "ebook/import").get_confirm_form_class(None),
)
data = confirm_form.initial
self.assertEqual(data["original_file_name"], "books.csv")
with mock.patch("django.forms.Form.clean") as mock_clean:
mock_clean.side_effect = ValidationError("some non field error")
response = self._post_url_response(
self.ebook_process_import_url, data, follow=True
)
target_msg = "some non field error"
self.assertIn(target_msg, response.content.decode())
def test_import_action_invalid_date(self):
# test that a row with an invalid date redirects to errors page
index = self._get_input_format_index("csv")

View File

@ -3,6 +3,8 @@ from datetime import date
import tablib
from core.admin import BookResource
from core.models import Author, Book, EBook
from django.db.models import CharField, Value
from django.db.models.functions import Cast, JSONObject, TruncDate
from django.test import TestCase
from import_export.fields import Field
@ -117,3 +119,62 @@ class ExportFunctionalityTest(TestCase):
self.book.save()
dataset = resource.export()
self.assertEqual("Ian Fleming", dataset.dict[0]["Author Name"])
def test_export_declared_field_value_and_dict_key(self):
# Test when attribute value is a dict and
# you want to access to return an specific key value
class EBookResource(ModelResource):
author_name = Field(
attribute="author_json__name", column_name="Author Name"
)
author_birthdate = Field(
attribute="author_json__birthdate", column_name="Author Birthdate"
)
custom_attribute = Field(
attribute="author_json__none_attribute_value__non_existentattribute",
column_name="Custom Attribute",
)
class Meta:
model = EBook
fields = ("id", "author_name", "author_birthdate", "custom_attribute")
self.book.author = Author.objects.get(pk=5)
self.book.save()
resource = EBookResource()
author_json_value = {
"name": "Ian Fleming",
"birthdate": "1908-05-28",
"none_attribute_value": None,
}
queryset = EBook.objects.annotate(
author_json=JSONObject(
name=("author__name"),
birthdate=Cast(TruncDate("author__birthday"), output_field=CharField()),
none_attribute_value=Value(None), # it will treat this as a JSON null
)
)
self.assertDictEqual(queryset.first().author_json, author_json_value)
dataset = resource.export(queryset=queryset)
self.assertEqual(dataset.dict[0]["Author Name"], "Ian Fleming")
self.assertEqual(dataset.dict[0]["Author Birthdate"], "1908-05-28")
self.assertEqual(dataset.dict[0]["Custom Attribute"], "")
queryset = queryset.values("author_json")
self.assertDictEqual(queryset.first(), {"author_json": author_json_value})
dataset = resource.export(queryset=queryset)
self.assertEqual(dataset.dict[0]["Author Name"], "Ian Fleming")
self.assertEqual(dataset.dict[0]["Author Birthdate"], "1908-05-28")
self.assertEqual(dataset.dict[0]["Custom Attribute"], "")
author_json_value["birthdate"] = None
author_json_value.pop("none_attribute_value")
queryset = EBook.objects.annotate(
author_json=JSONObject(name="author__name", birthdate=Value(None))
)
self.assertDictEqual(queryset.first().author_json, author_json_value)
dataset = resource.export(queryset=queryset)
self.assertEqual(dataset.dict[0]["Author Name"], "Ian Fleming")
self.assertEqual(dataset.dict[0]["Author Birthdate"], "")
self.assertEqual(dataset.dict[0]["Custom Attribute"], "")

View File

@ -1,7 +1,7 @@
from core.models import Book
from core.models import Author, Book
from django.test import TestCase
from import_export import resources
from import_export import fields, resources, widgets
class ModelResourceFactoryTest(TestCase):
@ -9,3 +9,241 @@ class ModelResourceFactoryTest(TestCase):
BookResource = resources.modelresource_factory(Book)
self.assertIn("id", BookResource.fields)
self.assertEqual(BookResource._meta.model, Book)
def test_create_with_meta(self):
BookResource = resources.modelresource_factory(
Book, meta_options={"clean_model_instances": True}
)
self.assertEqual(BookResource._meta.clean_model_instances, True)
def test_create_with_meta_options(self):
BookResource = resources.modelresource_factory(
Book,
meta_options={
"fields": ("id", "name"),
"exclude": ("imported",),
"use_bulk": True,
"clean_model_instances": True,
},
)
self.assertEqual(BookResource._meta.fields, ("id", "name"))
self.assertEqual(BookResource._meta.exclude, ("imported",))
self.assertTrue(BookResource._meta.use_bulk)
self.assertTrue(BookResource._meta.clean_model_instances)
def test_custom_fields(self):
custom_field = fields.Field(column_name="Custom Title", readonly=True)
BookResource = resources.modelresource_factory(
Book, custom_fields={"custom_title": custom_field}
)
self.assertIn("custom_title", BookResource.fields)
self.assertEqual(BookResource.fields["custom_title"], custom_field)
self.assertEqual(
BookResource.fields["custom_title"].column_name, "Custom Title"
)
self.assertTrue(BookResource.fields["custom_title"].readonly)
def test_custom_fields_validation(self):
with self.assertRaises(ValueError) as cm:
resources.modelresource_factory(
Book, custom_fields={"invalid_field": "not a field object"}
)
self.assertIn("must be a Field instance", str(cm.exception))
self.assertIn("custom_fields['invalid_field']", str(cm.exception))
def test_dehydrate_methods(self):
def custom_dehydrate_custom_title(obj):
return f"{obj.name} - Custom"
BookResource = resources.modelresource_factory(
Book,
custom_fields={"custom_title": fields.Field(column_name="Custom Title")},
dehydrate_methods={"custom_title": custom_dehydrate_custom_title},
)
self.assertTrue(hasattr(BookResource, "dehydrate_custom_title"))
resource = BookResource()
book = Book.objects.create(name="Test Book")
result = resource.dehydrate_custom_title(book)
self.assertEqual(result, "Test Book - Custom")
def test_dehydrate_methods_validation(self):
with self.assertRaises(ValueError) as cm:
resources.modelresource_factory(
Book, dehydrate_methods={"field_name": "not callable"}
)
self.assertIn("must be callable", str(cm.exception))
self.assertIn("dehydrate_methods['field_name']", str(cm.exception))
def test_lambda_dehydrate_methods(self):
BookResource = resources.modelresource_factory(
Book,
custom_fields={"custom_title": fields.Field(column_name="Custom Title")},
dehydrate_methods={
"custom_title": (
lambda obj: (
f"{obj.name} by {getattr(obj.author, 'name', 'Unknown')}"
)
)
},
)
author = Author.objects.create(name="Test Author")
book = Book.objects.create(name="Test Book", author=author)
resource = BookResource()
result = resource.dehydrate_custom_title(book)
self.assertEqual(result, "Test Book by Test Author")
book_no_author = Book.objects.create(name="Book")
result = resource.dehydrate_custom_title(book_no_author)
self.assertEqual(result, "Book by Unknown")
def test_comprehensive_example(self):
"""Test a comprehensive example with multiple features"""
BookResource = resources.modelresource_factory(
Book,
meta_options={
"fields": ("id", "name", "author", "custom_title", "status"),
"import_id_fields": ("name",),
"use_bulk": True,
},
custom_fields={
"custom_title": fields.Field(column_name="Custom Title", readonly=True),
"status": fields.Field(
attribute="imported",
column_name="Import Status",
widget=widgets.BooleanWidget(),
),
},
dehydrate_methods={"custom_title": lambda obj: f"{obj.name} - {obj.pk}"},
)
resource = BookResource()
self.assertEqual(
resource._meta.fields, ("id", "name", "author", "custom_title", "status")
)
self.assertEqual(resource._meta.import_id_fields, ("name",))
self.assertTrue(resource._meta.use_bulk)
self.assertIn("custom_title", resource.fields)
self.assertIn("status", resource.fields)
self.assertTrue(resource.fields["custom_title"].readonly)
self.assertTrue(hasattr(resource, "dehydrate_custom_title"))
book = Book.objects.create(name="Test Book")
custom_title_result = resource.dehydrate_custom_title(book)
self.assertEqual(custom_title_result, f"Test Book - {book.pk}")
dataset = resource.export([book])
self.assertEqual(len(dataset), 1)
def test_field_with_dehydrate_method_attribute(self):
BookResource1 = resources.modelresource_factory(
Book,
custom_fields={
"custom_title": fields.Field(
column_name="Custom Title",
dehydrate_method=lambda obj: f"Field method: {obj.name}",
)
},
)
BookResource2 = resources.modelresource_factory(
Book,
custom_fields={"custom_title": fields.Field(column_name="Custom Title")},
dehydrate_methods={
"custom_title": lambda obj: f"Factory method: {obj.name}"
},
)
book = Book.objects.create(name="Test Book")
resource1 = BookResource1()
field1 = resource1.fields["custom_title"]
self.assertTrue(callable(field1.dehydrate_method))
resource2 = BookResource2()
self.assertTrue(hasattr(resource2, "dehydrate_custom_title"))
result2 = resource2.dehydrate_custom_title(book)
self.assertEqual(result2, "Factory method: Test Book")
def test_empty_parameters(self):
BookResource = resources.modelresource_factory(
Book,
custom_fields={},
dehydrate_methods={},
)
self.assertIn("id", BookResource.fields)
self.assertEqual(BookResource._meta.model, Book)
def test_resource_class_inheritance(self):
class CustomModelResource(resources.ModelResource):
def custom_method(self):
return "custom"
BookResource = resources.modelresource_factory(
Book,
resource_class=CustomModelResource,
)
resource = BookResource()
self.assertTrue(hasattr(resource, "custom_method"))
self.assertEqual(resource.custom_method(), "custom")
def test_widgets_in_meta_options(self):
BookResource = resources.modelresource_factory(
Book,
meta_options={
"fields": ("id", "name", "price"),
"widgets": {
"price": {"coerce_to_string": True},
"name": {"coerce_to_string": True},
},
},
)
# Check that meta options were set correctly
self.assertEqual(BookResource._meta.fields, ("id", "name", "price"))
self.assertIn("price", BookResource._meta.widgets)
self.assertIn("name", BookResource._meta.widgets)
def test_complex_meta_options(self):
"""Test complex meta options configuration"""
BookResource = resources.modelresource_factory(
Book,
meta_options={
"fields": ("id", "name", "author", "price"),
"exclude": ("imported",),
"import_id_fields": ("name",),
"export_order": ("name", "author", "price", "id"),
"use_bulk": True,
"batch_size": 500,
"skip_unchanged": True,
"clean_model_instances": True,
"widgets": {"price": {"coerce_to_string": True}},
},
)
resource = BookResource()
# Verify all meta options
self.assertEqual(resource._meta.fields, ("id", "name", "author", "price"))
self.assertEqual(resource._meta.exclude, ("imported",))
self.assertEqual(resource._meta.import_id_fields, ("name",))
self.assertEqual(resource._meta.export_order, ("name", "author", "price", "id"))
self.assertTrue(resource._meta.use_bulk)
self.assertEqual(resource._meta.batch_size, 500)
self.assertTrue(resource._meta.skip_unchanged)
self.assertTrue(resource._meta.clean_model_instances)
self.assertIn("price", resource._meta.widgets)

View File

@ -21,7 +21,6 @@ class ModelResourceFieldDeclarations(TestCase):
fields = ("id", "price")
def setUp(self):
self.book = Book.objects.create(name="Moonraker", price=".99")
self.resource = ModelResourceFieldDeclarations.MyBookResource()
@ -173,3 +172,75 @@ class ModelResourceDeclarationsNotInImportTest(TestCase):
self.assertEqual("", self.book.author_email)
data = self.resource.export()
self.assertFalse("author_email" in data.dict[0])
class ModelResourceUnusedFieldWarnings(TestCase):
"""
Model Resources should warn on ignored declared fields, but only if
they are declared on the current class.
Ref: #2017
"""
class _BaseBookResource(resources.ModelResource):
name = fields.Field(
attribute="name",
)
imported = fields.Field(
attribute="imported",
)
price = fields.Field(
attribute="price",
)
class Meta:
model = Book
fields = (
"name",
"imported",
"price",
)
def setUp(self):
# Enable warnings for this test
warnings.simplefilter("default")
def test_no_warnings_defined_fields(self):
"""
A subclass that lists a subset of the parents defined fields
should receive no warnings.
"""
with warnings.catch_warnings(record=True) as w:
class _Export1BookResource(self._BaseBookResource):
class Meta:
fields = (
"name",
"imported",
)
# expect no warnings
self.assertEqual(len(w), 0)
def test_declared_field_expect_warning(self):
"""
A class that defines a field, but doesn't list it in fields
should receive a warning with the name of the field and the
class name
"""
with warnings.catch_warnings(record=True) as w:
class _Export2BookResource(self._BaseBookResource):
published = fields.Field(attribute="published")
published_time = fields.Field(attribute="published_time")
class Meta:
fields = ("author_email", "imported", "published_time")
self.assertEqual(len(w), 1)
self.assertIs(w[0].category, UserWarning)
self.assertIn(
"_Export2BookResource: ignoring field 'published' because not"
" declared in 'fields' whitelist",
str(w[0].message),
)

View File

@ -8,7 +8,7 @@ services:
IMPORT_EXPORT_POSTGRESQL_USER: ${IMPORT_EXPORT_POSTGRESQL_USER}
IMPORT_EXPORT_POSTGRESQL_PASSWORD: ${IMPORT_EXPORT_POSTGRESQL_PASSWORD}
POSTGRES_PASSWORD: ${IMPORT_EXPORT_POSTGRESQL_PASSWORD}
image: postgres:13
image: postgres:14
restart: "no"
ports:
- "${IMPORT_EXPORT_POSTGRESQL_PORT:-5432}:5432"
@ -16,7 +16,7 @@ services:
- ./docker/db/init-postgres-db.sh/:/docker-entrypoint-initdb.d/init-postgres-db.sh
- postgres-db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "sh -c 'pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}'"]
test: ["CMD-SHELL", "pg_isready -U \"${IMPORT_EXPORT_POSTGRESQL_USER}\" -d \"import_export\""]
interval: 10s
timeout: 3s
retries: 3

View File

@ -10,6 +10,7 @@ INSTALLED_APPS = [
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.sites",
"django.contrib.postgres",
"import_export",
"core",
]

View File

@ -1,9 +1,9 @@
[tox]
min_version = 4.0
envlist =
{py39,py310,py311}-{django42}
{py310,py311,py312,py313}-{django50,django51}
{py312,py313}-djangomain
py{39,310,311}-django{42}
py{310,311,312,313}-django{51,52}
py{312,313}-djangomain
py313-djangomain-tablibdev
[gh-actions]
@ -26,8 +26,8 @@ commands =
deps =
tablibdev: -egit+https://github.com/jazzband/tablib.git@master\#egg=tablib
django42: Django>=4.2,<5.0
django50: Django>=5.0,<5.1
django51: Django>=5.1,<5.2
django52: Django>=5.2,<5.3
djangomain: https://github.com/django/django/archive/main.tar.gz
.[tests]