瀏覽代碼

Remove ModelAdmin

Matt Westcott 1 年之前
父節點
當前提交
c363f6dd27
共有 100 個文件被更改,包括 10 次插入7483 次删除
  1. 0 1
      client/scss/core.scss
  2. 0 196
      client/scss/layouts/_modeladmin.scss
  3. 0 6
      client/webpack.config.js
  4. 0 1
      docs/advanced_topics/icons.md
  5. 0 1
      docs/advanced_topics/reference_index.md
  6. 2 2
      docs/extending/forms.md
  7. 0 5
      docs/reference/contrib/index.md
  8. 0 19
      docs/reference/contrib/modeladmin/base_url.md
  9. 0 30
      docs/reference/contrib/modeladmin/chooseparentview.md
  10. 0 170
      docs/reference/contrib/modeladmin/create_edit_delete_views.md
  11. 0 194
      docs/reference/contrib/modeladmin/index.md
  12. 0 610
      docs/reference/contrib/modeladmin/indexview.md
  13. 0 67
      docs/reference/contrib/modeladmin/inspectview.md
  14. 0 62
      docs/reference/contrib/modeladmin/menu_item.md
  15. 0 189
      docs/reference/contrib/modeladmin/migrating_to_snippets.md
  16. 0 323
      docs/reference/contrib/modeladmin/primer.md
  17. 0 46
      docs/reference/contrib/modeladmin/tips_and_tricks/custom_clean.md
  18. 0 12
      docs/reference/contrib/modeladmin/tips_and_tricks/index.md
  19. 0 37
      docs/reference/contrib/modeladmin/tips_and_tricks/modeladmingroup_extra_views.md
  20. 0 123
      docs/reference/contrib/modeladmin/tips_and_tricks/reversing_urls.md
  21. 1 1
      docs/reference/pages/model_recipes.md
  22. 1 1
      docs/releases/1.5.rst
  23. 1 1
      docs/releases/1.8.rst
  24. 1 1
      docs/releases/3.0.md
  25. 1 1
      docs/releases/5.0.md
  26. 1 1
      docs/releases/5.1.md
  27. 0 3
      wagtail/admin/tests/test_menu.py
  28. 2 5
      wagtail/admin/tests/tests.py
  29. 0 1
      wagtail/contrib/modeladmin/.gitignore
  30. 0 0
      wagtail/contrib/modeladmin/__init__.py
  31. 0 19
      wagtail/contrib/modeladmin/apps.py
  32. 0 29
      wagtail/contrib/modeladmin/forms.py
  33. 0 4
      wagtail/contrib/modeladmin/helpers/__init__.py
  34. 0 177
      wagtail/contrib/modeladmin/helpers/button.py
  35. 0 186
      wagtail/contrib/modeladmin/helpers/permission.py
  36. 0 82
      wagtail/contrib/modeladmin/helpers/search.py
  37. 0 75
      wagtail/contrib/modeladmin/helpers/url.py
  38. 二進制
      wagtail/contrib/modeladmin/locale/af/LC_MESSAGES/django.mo
  39. 0 25
      wagtail/contrib/modeladmin/locale/af/LC_MESSAGES/django.po
  40. 二進制
      wagtail/contrib/modeladmin/locale/ar/LC_MESSAGES/django.mo
  41. 0 219
      wagtail/contrib/modeladmin/locale/ar/LC_MESSAGES/django.po
  42. 二進制
      wagtail/contrib/modeladmin/locale/az_AZ/LC_MESSAGES/django.mo
  43. 0 34
      wagtail/contrib/modeladmin/locale/az_AZ/LC_MESSAGES/django.po
  44. 二進制
      wagtail/contrib/modeladmin/locale/be/LC_MESSAGES/django.mo
  45. 0 83
      wagtail/contrib/modeladmin/locale/be/LC_MESSAGES/django.po
  46. 二進制
      wagtail/contrib/modeladmin/locale/bg/LC_MESSAGES/django.mo
  47. 0 52
      wagtail/contrib/modeladmin/locale/bg/LC_MESSAGES/django.po
  48. 二進制
      wagtail/contrib/modeladmin/locale/bn/LC_MESSAGES/django.mo
  49. 0 40
      wagtail/contrib/modeladmin/locale/bn/LC_MESSAGES/django.po
  50. 二進制
      wagtail/contrib/modeladmin/locale/ca/LC_MESSAGES/django.mo
  51. 0 239
      wagtail/contrib/modeladmin/locale/ca/LC_MESSAGES/django.po
  52. 二進制
      wagtail/contrib/modeladmin/locale/cs/LC_MESSAGES/django.mo
  53. 0 230
      wagtail/contrib/modeladmin/locale/cs/LC_MESSAGES/django.po
  54. 二進制
      wagtail/contrib/modeladmin/locale/cy/LC_MESSAGES/django.mo
  55. 0 235
      wagtail/contrib/modeladmin/locale/cy/LC_MESSAGES/django.po
  56. 二進制
      wagtail/contrib/modeladmin/locale/da/LC_MESSAGES/django.mo
  57. 0 58
      wagtail/contrib/modeladmin/locale/da/LC_MESSAGES/django.po
  58. 二進制
      wagtail/contrib/modeladmin/locale/de/LC_MESSAGES/django.mo
  59. 0 254
      wagtail/contrib/modeladmin/locale/de/LC_MESSAGES/django.po
  60. 二進制
      wagtail/contrib/modeladmin/locale/el/LC_MESSAGES/django.mo
  61. 0 211
      wagtail/contrib/modeladmin/locale/el/LC_MESSAGES/django.po
  62. 二進制
      wagtail/contrib/modeladmin/locale/en/LC_MESSAGES/django.mo
  63. 0 286
      wagtail/contrib/modeladmin/locale/en/LC_MESSAGES/django.po
  64. 二進制
      wagtail/contrib/modeladmin/locale/en_IN/LC_MESSAGES/django.mo
  65. 0 28
      wagtail/contrib/modeladmin/locale/en_IN/LC_MESSAGES/django.po
  66. 二進制
      wagtail/contrib/modeladmin/locale/es/LC_MESSAGES/django.mo
  67. 0 247
      wagtail/contrib/modeladmin/locale/es/LC_MESSAGES/django.po
  68. 二進制
      wagtail/contrib/modeladmin/locale/es_419/LC_MESSAGES/django.mo
  69. 0 41
      wagtail/contrib/modeladmin/locale/es_419/LC_MESSAGES/django.po
  70. 二進制
      wagtail/contrib/modeladmin/locale/es_VE/LC_MESSAGES/django.mo
  71. 0 29
      wagtail/contrib/modeladmin/locale/es_VE/LC_MESSAGES/django.po
  72. 二進制
      wagtail/contrib/modeladmin/locale/et/LC_MESSAGES/django.mo
  73. 0 226
      wagtail/contrib/modeladmin/locale/et/LC_MESSAGES/django.po
  74. 二進制
      wagtail/contrib/modeladmin/locale/eu/LC_MESSAGES/django.mo
  75. 0 28
      wagtail/contrib/modeladmin/locale/eu/LC_MESSAGES/django.po
  76. 二進制
      wagtail/contrib/modeladmin/locale/fa/LC_MESSAGES/django.mo
  77. 0 211
      wagtail/contrib/modeladmin/locale/fa/LC_MESSAGES/django.po
  78. 二進制
      wagtail/contrib/modeladmin/locale/fi/LC_MESSAGES/django.mo
  79. 0 242
      wagtail/contrib/modeladmin/locale/fi/LC_MESSAGES/django.po
  80. 二進制
      wagtail/contrib/modeladmin/locale/fr/LC_MESSAGES/django.mo
  81. 0 248
      wagtail/contrib/modeladmin/locale/fr/LC_MESSAGES/django.po
  82. 二進制
      wagtail/contrib/modeladmin/locale/gl/LC_MESSAGES/django.mo
  83. 0 242
      wagtail/contrib/modeladmin/locale/gl/LC_MESSAGES/django.po
  84. 二進制
      wagtail/contrib/modeladmin/locale/he_IL/LC_MESSAGES/django.mo
  85. 0 66
      wagtail/contrib/modeladmin/locale/he_IL/LC_MESSAGES/django.po
  86. 二進制
      wagtail/contrib/modeladmin/locale/hi/LC_MESSAGES/django.mo
  87. 0 22
      wagtail/contrib/modeladmin/locale/hi/LC_MESSAGES/django.po
  88. 二進制
      wagtail/contrib/modeladmin/locale/hr_HR/LC_MESSAGES/django.mo
  89. 0 240
      wagtail/contrib/modeladmin/locale/hr_HR/LC_MESSAGES/django.po
  90. 二進制
      wagtail/contrib/modeladmin/locale/ht/LC_MESSAGES/django.mo
  91. 0 37
      wagtail/contrib/modeladmin/locale/ht/LC_MESSAGES/django.po
  92. 二進制
      wagtail/contrib/modeladmin/locale/hu/LC_MESSAGES/django.mo
  93. 0 242
      wagtail/contrib/modeladmin/locale/hu/LC_MESSAGES/django.po
  94. 二進制
      wagtail/contrib/modeladmin/locale/id_ID/LC_MESSAGES/django.mo
  95. 0 200
      wagtail/contrib/modeladmin/locale/id_ID/LC_MESSAGES/django.po
  96. 二進制
      wagtail/contrib/modeladmin/locale/is_IS/LC_MESSAGES/django.mo
  97. 0 242
      wagtail/contrib/modeladmin/locale/is_IS/LC_MESSAGES/django.po
  98. 二進制
      wagtail/contrib/modeladmin/locale/it/LC_MESSAGES/django.mo
  99. 0 245
      wagtail/contrib/modeladmin/locale/it/LC_MESSAGES/django.po
  100. 二進制
      wagtail/contrib/modeladmin/locale/ja/LC_MESSAGES/django.mo

+ 0 - 1
client/scss/core.scss

@@ -200,5 +200,4 @@ These are classes that provide overrides.
 @import 'layouts/add-multiple';
 @import 'layouts/chooser-duplicate-upload';
 @import 'layouts/focal-point-chooser';
-@import 'layouts/modeladmin';
 @import 'layouts/redirects';

+ 0 - 196
client/scss/layouts/_modeladmin.scss

@@ -1,196 +0,0 @@
-.modeladmin {
-  .result-count {
-    display: block;
-    font-weight: 500;
-
-    &:before {
-      content: '(';
-    }
-
-    &:after {
-      content: ')';
-    }
-
-    @include media-breakpoint-up(lg) {
-      display: inline-block;
-      margin-inline-start: 0.25em;
-    }
-  }
-
-  .result-list {
-    margin-bottom: 0;
-  }
-
-  .listing {
-    td,
-    th {
-      vertical-align: top;
-    }
-
-    thead th.sorted a {
-      color: theme('colors.text-link-default');
-    }
-
-    tbody {
-      overflow: auto;
-
-      tr:hover ul.actions {
-        visibility: visible;
-      }
-
-      tr > td {
-        background-color: inherit;
-
-        // stylelint-disable-next-line max-nesting-depth
-        a.edit-obj {
-          color: inherit;
-          font-weight: 600;
-        }
-      }
-    }
-  }
-
-  .changelist-filter {
-    padding: 0 15px;
-
-    h2 {
-      background-color: theme('colors.surface-header');
-      font-size: 13px;
-      line-height: 31px;
-      margin-top: 0;
-      padding-inline-start: 8px;
-      border-bottom: 1px solid theme('colors.border-furniture');
-    }
-
-    h3 {
-      font-size: 12px;
-      margin-bottom: 0;
-    }
-
-    ul {
-      padding-inline-start: 0;
-      margin-bottom: 25px;
-    }
-
-    li {
-      list-style-type: none;
-      margin: 0 0 4px;
-      padding-inline-start: 0;
-    }
-
-    a {
-      font-family: $font-sans;
-      border-radius: 3px;
-      width: auto;
-      line-height: 1.2em;
-      padding: 8px 12px;
-      font-size: 0.9em;
-      font-weight: normal;
-      vertical-align: middle;
-      display: block;
-      background-color: theme('colors.surface-page');
-      border: 1px solid theme('colors.text-button-outline-default');
-      color: theme('colors.text-button-outline-default');
-      text-decoration: none;
-      position: relative;
-      overflow: hidden;
-      -webkit-font-smoothing: auto;
-      // stylelint-disable-next-line property-no-vendor-prefix
-      -moz-appearance: none;
-
-      &:hover {
-        background-color: theme('colors.text-button-outline-default');
-        border-color: theme('colors.text-button-outline-default');
-        color: theme('colors.surface-page');
-      }
-    }
-
-    li.selected a {
-      // stylelint-disable-next-line declaration-no-important
-      color: theme('colors.surface-page') !important;
-      // stylelint-disable-next-line declaration-no-important
-      border-color: theme('colors.text-link-default') !important;
-      background-color: theme('colors.text-link-default');
-    }
-  }
-
-  .no-search-results {
-    margin-top: 30px;
-
-    h2 {
-      padding-top: 0.3em;
-      margin-bottom: 0.3em;
-    }
-
-    img {
-      float: left;
-      margin: 0 15px 15px 0;
-      width: 50px;
-    }
-  }
-
-  .pagination {
-    margin-top: 3em;
-    border-top: 1px dashed theme('colors.border-furniture');
-    padding: 2em 1em 0;
-
-    ul {
-      margin-top: -1.25em;
-    }
-  }
-
-  p.no-results {
-    margin: 30px 1em 0;
-  }
-
-  @include media-breakpoint-up(sm) {
-    .changelist-filter {
-      float: right;
-      padding: 0 1.5%;
-    }
-
-    .result-list {
-      padding: 0 1.5% 0 0;
-
-      &.col12 {
-        padding-inline-end: 0;
-
-        // stylelint-disable-next-line max-nesting-depth
-        tbody td:last-child {
-          padding-inline-end: 50px;
-        }
-      }
-
-      tbody th:first-child {
-        padding-inline-start: 50px;
-      }
-    }
-
-    .pagination {
-      padding-inline-start: 50px;
-      padding-inline-end: 50px;
-    }
-
-    .pagination.col9 {
-      width: 73.5%;
-    }
-
-    p.no-results {
-      margin: 30px 50px 0;
-    }
-  }
-
-  @include media-breakpoint-up(lg) {
-    .result-list.col9 {
-      width: 79%;
-    }
-
-    .changelist-filter {
-      width: 21%;
-    }
-
-    .pagination.col9 {
-      width: 77.5%;
-    }
-  }
-}

+ 0 - 6
client/webpack.config.js

@@ -9,7 +9,6 @@ const getOutputPath = (app, folder, filename) => {
     'contrib/table_block': 'table_block',
     'contrib/typed_table_block': 'typed_table_block',
     'contrib/styleguide': 'wagtailstyleguide',
-    'contrib/modeladmin': 'wagtailmodeladmin',
   };
 
   const appLabel = exceptions[app] || `wagtail${app}`;
@@ -184,11 +183,6 @@ module.exports = function exports(env, argv) {
             to: 'wagtail/users/static/',
             globOptions: { ignore: ['**/{app,scss}/**', '*.{css,txt}'] },
           },
-          {
-            from: 'wagtail/contrib/modeladmin/static_src/',
-            to: 'wagtail/contrib/modeladmin/static/',
-            globOptions: { ignore: ['**/{app,scss}/**', '*.{css,txt}'] },
-          },
         ],
       }),
     ],

+ 0 - 1
docs/advanced_topics/icons.md

@@ -9,7 +9,6 @@ Elements that use icons are:
 -   [Register Admin Menu Item](register_admin_menu_item)
 -   [Client-side React components](extending_client_side_react)
 -   [Rich text editor toolbar buttons](extending_the_draftail_editor)
--   [ModelAdmin menu](modeladmin_menu_icon)
 -   [Snippets](wagtailsnippets_icon)
 -   [StreamField blocks](custom_streamfield_blocks)
 

+ 0 - 1
docs/advanced_topics/reference_index.md

@@ -13,7 +13,6 @@ By default, the index will store references between objects managed within the W
 -   Documents
 -   models registered as [Snippets](snippets)
 -   models registered with [`ModelViewSet`](../extending/generic_views)
--   models registered with ModelAdmin
 
 The reference index does not require any further configuration. However there are circumstances where it may be necessary to add or remove models from the index.
 

+ 2 - 2
docs/extending/forms.md

@@ -54,13 +54,13 @@ class WagtailVideosAppConfig(AppConfig):
         register_form_field_override(ForeignKey, to=Video, override={'widget': VideoChooser})
 ```
 
-Wagtail's edit views for pages, snippets and ModelAdmin use `WagtailAdminModelForm` as standard, so this change will take effect across the Wagtail admin; a foreign key to `Video` on a page model will automatically use the `VideoChooser` widget, with no need to specify this explicitly.
+Wagtail's edit views for pages and snippets use `WagtailAdminModelForm` as standard, so this change will take effect across the Wagtail admin; a foreign key to `Video` on a page model will automatically use the `VideoChooser` widget, with no need to specify this explicitly.
 
 (forms_panels_overview)=
 
 ## Panels
 
-Panels (also known as edit handlers until Wagtail 3.0) are Wagtail's mechanism for specifying the content and layout of a model form without having to write a template. They are used for the editing interface for pages and snippets, as well as the [ModelAdmin](/reference/contrib/modeladmin/index) and [site settings](/reference/contrib/settings) contrib modules.
+Panels (also known as edit handlers until Wagtail 3.0) are Wagtail's mechanism for specifying the content and layout of a model form without having to write a template. They are used for the editing interface for pages and snippets, as well as the [site settings](/reference/contrib/settings) contrib module.
 
 See [](/reference/pages/panels) for the set of panel types provided by Wagtail. All panels inherit from the base class `wagtail.admin.panels.Panel`. A single panel object (usually `ObjectList` or `TabbedInterface`) exists at the top level and is the only one directly accessed by the view code; panels containing child panels inherit from the base class `wagtail.admin.panels.PanelGroup` and take care of recursively calling methods on their child panels where appropriate.
 

+ 0 - 5
docs/reference/contrib/index.md

@@ -11,7 +11,6 @@ forms/index
 sitemaps
 frontendcache
 routablepage
-modeladmin/index
 searchpromotions
 simple_translation
 table_block
@@ -41,10 +40,6 @@ A module for automatically purging pages from a cache (Varnish, Squid, Cloudflar
 
 Provides a way of embedding Django URLconfs into pages.
 
-## [](modeladmin/index)
-
-A module allowing for more customisable representation and management of custom models in Wagtail's admin area.
-
 ## [](searchpromotions)
 
 A module for managing "Promoted Search Results"

+ 0 - 19
docs/reference/contrib/modeladmin/base_url.md

@@ -1,19 +0,0 @@
-# Customising the base URL path
-
-You can use the following attributes and methods on the `ModelAdmin` class to alter the base URL path used to represent your model in Wagtail's admin area.
-
-```{contents}
----
-local:
-depth: 1
----
-```
-
-(modeladmin_base_url_path)=
-
-## `ModelAdmin.base_url_path`
-
-**Expected value**: A string.
-
-Set this attribute to a string value to override the default base URL path used for the model to `admin/{base_url_path}`.
-If not set, the base URL path will be `admin/{app_label}/{model_name}`.

+ 0 - 30
docs/reference/contrib/modeladmin/chooseparentview.md

@@ -1,30 +0,0 @@
-# Customising `ChooseParentView`
-
-When adding a new page via Wagtail's explorer view, you essentially choose where you want to add a new page by navigating the relevant part of the page tree and choosing to 'add a child page' to your chosen parent page. Wagtail then asks you to select what type of page you'd like to add.
-
-When adding a page from a `ModelAdmin` list page, we know what type of page needs to be added, but we might not automatically know where in the page tree it should be added. If there's only one possible choice of parent for a new page (as defined by setting `parent_page_types` and `subpage_types` attributes on your models), then we skip a step and use that as the parent. Otherwise, the user must specify a parent page using modeladmin's `ChooseParentView`.
-
-It should be very rare that you need to customise this view, but in case you do, modeladmin offers the following attributes that you can override:
-
-```{contents}
----
-local:
-depth: 1
----
-```
-
-(modeladmin_choose_parent_template_name)=
-
-## `ModelAdmin.choose_parent_template_name`
-
-**Expected value**: The path to a custom template to use for `ChooseParentView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_templates)
-
-(modeladmin_choose_parent_view_class)=
-
-## `ModelAdmin.choose_parent_view_class`
-
-**Expected value**: A custom `view` class to replace `modeladmin.views.ChooseParentView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_views)

+ 0 - 170
docs/reference/contrib/modeladmin/create_edit_delete_views.md

@@ -1,170 +0,0 @@
-# Customising `CreateView`, `EditView` and `DeleteView`
-
-```{note}
-**NOTE:** `modeladmin` only provides 'create', 'edit' and 'delete' functionality for non page type models (models that do not extend `wagtailcore.models.Page`). If your model is a 'page type' model, customising any of the following will not have any effect:
-```
-
-(modeladmin_edit_handler_customisation)=
-
-# Changing which fields appear in `CreateView` & `EditView`
-
-`edit_handler` can be used on any Django models.Model class, just like it can be used for `Page` models or other models registered as `Snippets` in Wagtail.
-
-To change the way your `MyPageModel` is displayed in the CreateView and the EditView, simply define an `edit_handler` or `panels` attribute on your model class.
-
-```python
-class MyPageModel(models.Model):
-    first_name = models.CharField(max_length=100)
-    last_name = models.CharField(max_length=100)
-    address = models.TextField()
-
-    panels = [
-        MultiFieldPanel([
-            FieldRowPanel([
-                FieldPanel('first_name', classname='fn'),
-                FieldPanel('last_name', classname='ln'),
-            ]),
-            FieldPanel('address', classname='custom1',)
-        ])
-    ]
-```
-
-Or alternatively:
-
-```python
-class MyPageModel(models.Model):
-    first_name = models.CharField(max_length=100)
-    last_name = models.CharField(max_length=100)
-    address = models.TextField()
-
-    custom_panels = [
-        MultiFieldPanel([
-            FieldRowPanel([
-                FieldPanel('first_name', classname='fn'),
-                FieldPanel('last_name', classname='ln'),
-            ]),
-            FieldPanel('address', classname='custom1',)
-        ])
-    ]
-    edit_handler = ObjectList(custom_panels)
-    # or
-    edit_handler = TabbedInterface([
-        ObjectList(custom_panels, heading='First Tab'),
-        ObjectList(...)
-    ])
-```
-
-`edit_handler` and `panels` can alternatively be defined on a `ModelAdmin` definition. This feature is especially useful for use cases where you have to work with models that are 'out of reach' (due to being part of a third-party package, for example).
-
-```python
-class BookAdmin(ModelAdmin):
-    model = Book
-
-    panels = [
-        FieldPanel('title'),
-        FieldPanel('author'),
-    ]
-```
-
-Or alternatively:
-
-```python
-class BookAdmin(ModelAdmin):
-    model = Book
-
-    custom_panels = [
-        FieldPanel('title'),
-        FieldPanel('author'),
-    ]
-    edit_handler = ObjectList(custom_panels)
-```
-
-(modeladmin_form_view_extra_css)=
-
-## `ModelAdmin.form_view_extra_css`
-
-**Expected value**: A list of path names of additional stylesheets to be added to `CreateView` and `EditView`
-
-See the following part of the docs to find out more: [](modeladmin_adding_css_and_js)
-
-(modeladmin_form_view_extra_js)=
-
-## `ModelAdmin.form_view_extra_js`
-
-**Expected value**: A list of path names of additional js files to be added to `CreateView` and `EditView`
-
-See the following part of the docs to find out more: [](modeladmin_adding_css_and_js)
-
-(modeladmin_create_template_name)=
-
-## `ModelAdmin.create_template_name`
-
-**Expected value**: The path to a custom template to use for `CreateView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_templates)
-
-(modeladmin_create_view_class)=
-
-## `ModelAdmin.create_view_class`
-
-**Expected value**: A custom `view` class to replace `modeladmin.views.CreateView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_views)
-
-(modeladmin_edit_template_name)=
-
-## `ModelAdmin.edit_template_name`
-
-**Expected value**: The path to a custom template to use for `EditView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_templates)
-
-(modeladmin_edit_view_class)=
-
-## `ModelAdmin.edit_view_class`
-
-**Expected value**: A custom `view` class to replace `modeladmin.views.EditView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_views)
-
-(modeladmin_delete_template_name)=
-
-## `ModelAdmin.delete_template_name`
-
-**Expected value**: The path to a custom template to use for `DeleteView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_templates)
-
-(modeladmin_delete_view_class)=
-
-## `ModelAdmin.delete_view_class`
-
-**Expected value**: A custom `view` class to replace `modeladmin.views.DeleteView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_views)
-
-(modeladmin_form_fields_exclude)=
-
-## `ModelAdmin.form_fields_exclude`
-
-**Expected value**: A list or tuple of fields names
-
-When using CreateView or EditView to create or update model instances, this value will be passed to the edit form, so that any named fields will be excluded from the form. This is particularly useful when registering ModelAdmin classes for models from third-party apps, where defining panel configurations on the Model itself is more complicated.
-
-(modeladmin_prepopulated_fields)=
-
-## `ModelAdmin.prepopulated_fields`
-
-**Expected value**: A dict mapping prepopulated fields to a tuple of fields to prepopulate from
-
-When using CreateView or EditView to create or update model instances, the fields corresponding to the keys in the dict are prepopulated using the fields in the corresponding tuple. The main use for this functionality is to automatically generate the value for SlugField fields from one or more other fields. The generated value is produced by concatenating the values of the source fields, and then by transforming that result into a valid slug (for example substituting dashes for spaces; lowercasing ASCII letters; and removing various English stop words such as ‘a’, ‘an’, ‘as’, and similar).
-
-Prepopulated fields aren’t modified by JavaScript after a value has been saved. It’s usually undesired that slugs change (which would cause an object’s URL to change if the slug is used in it).
-
-prepopulated_fields doesn’t accept DateTimeField, ForeignKey, OneToOneField, and ManyToManyField fields.
-
-## `ModelAdmin.get_edit_handler()`
-
-**Must return**: An instance of `wagtail.admin.panels.ObjectList`
-
-Returns the appropriate `edit_handler` for the modeladmin class. `edit_handlers` can be defined either on the model itself or on the modeladmin (as property `edit_handler` or `panels`). Falls back to extracting panel / edit handler definitions from the model class.

+ 0 - 194
docs/reference/contrib/modeladmin/index.md

@@ -1,194 +0,0 @@
-# `ModelAdmin`
-
-The `modeladmin` module allows you to add any model in your project to the Wagtail admin. You can create customisable listing pages for a model, including plain Django models, and add navigation elements so that a model can be accessed directly from the Wagtail admin. Simply extend the `ModelAdmin` class, override a few attributes to suit your needs, register it with Wagtail using an easy one-line `modeladmin_register` method (you can copy and paste from the examples below), and you're good to go. Your model doesn’t need to extend `Page` or be registered as a `Snippet`, and it won’t interfere with any of the existing admin functionality that Wagtail provides.
-
-```{note}
-The `modeladmin` module is deprecated. To manage non-page models in Wagtail, use [`wagtail.snippets`](snippets) or [`ModelViewSet`](generic_views) instead. For more details, see [](./migrating_to_snippets.md).
-
-If you still rely on ModelAdmin, use the separate [wagtail-modeladmin](https://github.com/wagtail-nest/wagtail-modeladmin) package. The `wagtail.contrib.modeladmin` module will be removed in a future release.
-```
-
-(modeladmin_feature_summary)=
-
-## Summary of features
-
--   A customisable list view, allowing you to control what values are displayed for each row, available options for result filtering, default ordering, spreadsheet downloads and more.
--   Access your list views from the Wagtail admin menu easily with automatically generated menu items, with automatic 'active item' highlighting. Control the label text and icons used with easy-to-change attributes on your class.
--   An additional `ModelAdminGroup` class, that allows you to group your related models, and list them together in their own submenu, for a more logical user experience.
--   Simple, robust **add** and **edit** views for your non-Page models that use the panel configurations defined on your model using Wagtail's edit panels.
--   For Page models, the system directs to Wagtail's existing add and edit views, and returns you back to the correct list page, for a seamless experience.
--   Full respect for permissions assigned to your Wagtail users and groups. Users will only be able to do what you want them to!
--   All you need to easily hook your `ModelAdmin` classes into Wagtail, taking care of URL registration, menu changes, and registering any missing model permissions, so that you can assign them to Groups.
--   **Built to be customisable** - While `modeladmin` provides a solid experience out of the box, you can easily use your own templates, and the `ModelAdmin` class has a large number of methods that you can override or extend, allowing you to customise the behaviour to a greater degree.
-
-(modeladmin_usage)=
-
-## Installation
-
-Add `wagtail.contrib.modeladmin` to your `INSTALLED_APPS`:
-
-```python
-    INSTALLED_APPS = [
-       ...
-       'wagtail.contrib.modeladmin',
-    ]
-```
-
-## How to use
-
-(modeladmin_example_simple)=
-
-### A simple example
-
-Let's say your website is for a local library. They have a model called `Book` that appears across the site in many places. You can define a normal Django model for it, then use ModelAdmin to create a menu in Wagtail's admin to create, view, and edit `Book` entries.
-
-`models.py` looks like this:
-
-```python
-    from django.db import models
-    from wagtail.admin.panels import FieldPanel
-
-    class Book(models.Model):
-        title = models.CharField(max_length=255)
-        author = models.CharField(max_length=255)
-        cover_photo = models.ForeignKey(
-            'wagtailimages.Image',
-            null=True, blank=True,
-            on_delete=models.SET_NULL,
-            related_name='+'
-        )
-
-        panels = [
-            FieldPanel('title'),
-            FieldPanel('author'),
-            FieldPanel('cover_photo')
-        ]
-```
-
-```{note}
-You can specify panels like `MultiFieldPanel` within the `panels` attribute of the model.
-This lets you use Wagtail-specific layouts in an otherwise traditional Django model.
-```
-
-`wagtail_hooks.py` in your app directory would look something like this:
-
-```python
-from wagtail.contrib.modeladmin.options import (
-    ModelAdmin, modeladmin_register)
-from .models import Book
-
-
-class BookAdmin(ModelAdmin):
-    model = Book
-    base_url_path = 'bookadmin' # customise the URL from default to admin/bookadmin
-    menu_label = 'Book'  # ditch this to use verbose_name_plural from model
-    menu_icon = 'pilcrow'  # change as required
-    menu_order = 200  # will put in 3rd place (000 being 1st, 100 2nd)
-    add_to_settings_menu = False  # or True to add your model to the Settings sub-menu
-    exclude_from_explorer = False # or True to exclude pages of this type from Wagtail's explorer view
-    add_to_admin_menu = True  # or False to exclude your model from the menu
-    list_display = ('title', 'author')
-    list_filter = ('author',)
-    search_fields = ('title', 'author')
-
-# Now you just need to register your customised ModelAdmin class with Wagtail
-modeladmin_register(BookAdmin)
-```
-
-(modeladmin_example_complex)=
-
-### A more complicated example
-
-In addition to `Book`, perhaps we also want to add `Author` and `Genre` models to our app and display a menu item for each of them, too. Creating lots of menus can add up quickly, so it might be a good idea to group related menus together. This section show you how to create one menu called _Library_ which expands to show submenus for _Book_, _Author_, and _Genre_.
-
-Assume we've defined `Book`, `Author`, and `Genre` models in `models.py`.
-
-`wagtail_hooks.py` in your app directory would look something like this:
-
-```python
-from wagtail.contrib.modeladmin.options import (
-    ModelAdmin, ModelAdminGroup, modeladmin_register)
-from .models import (
-    Book, Author, Genre)
-
-
-class BookAdmin(ModelAdmin):
-    model = Book
-    menu_label = 'Book'  # ditch this to use verbose_name_plural from model
-    menu_icon = 'pilcrow'  # change as required
-    list_display = ('title', 'author')
-    list_filter = ('genre', 'author')
-    search_fields = ('title', 'author')
-
-
-class AuthorAdmin(ModelAdmin):
-    model = Author
-    menu_label = 'Author'  # ditch this to use verbose_name_plural from model
-    menu_icon = 'user'  # change as required
-    list_display = ('first_name', 'last_name')
-    list_filter = ('first_name', 'last_name')
-    search_fields = ('first_name', 'last_name')
-
-
-class GenreAdmin(ModelAdmin):
-    model = Genre
-    menu_label = 'Genre'  # ditch this to use verbose_name_plural from model
-    menu_icon = 'group'  # change as required
-    list_display = ('name',)
-    list_filter = ('name',)
-    search_fields = ('name',)
-
-
-class LibraryGroup(ModelAdminGroup):
-    menu_label = 'Library'
-    menu_icon = 'folder-open-inverse'  # change as required
-    menu_order = 200  # will put in 3rd place (000 being 1st, 100 2nd)
-    items = (BookAdmin, AuthorAdmin, GenreAdmin)
-
-# When using a ModelAdminGroup class to group several ModelAdmin classes together,
-# you only need to register the ModelAdminGroup class with Wagtail:
-modeladmin_register(LibraryGroup)
-```
-
-(modeladmin_multi_registration)=
-
-### Registering multiple classes in one `wagtail_hooks.py` file
-
-Each time you call `modeladmin_register(MyAdmin)` it creates a new top-level menu item in Wagtail's left sidebar. You can call this multiple times within the same `wagtail_hooks.py` file if you want. The example below will create 3 top-level menus.
-
-```python
-class BookAdmin(ModelAdmin):
-    model = Book
-    ...
-
-class MovieAdmin(ModelAdmin):
-    model = MovieModel
-    ...
-
-class MusicAdminGroup(ModelAdminGroup):
-    menu_label = _("Music")
-    items = (AlbumAdmin, ArtistAdmin)
-    ...
-
-modeladmin_register(BookAdmin)
-modeladmin_register(MovieAdmin)
-modeladmin_register(MusicAdminGroup)
-```
-
-## Index
-
-```{toctree}
----
-maxdepth: 1
-titlesonly:
----
-primer
-base_url
-menu_item
-indexview
-create_edit_delete_views
-inspectview
-chooseparentview
-tips_and_tricks/index
-migrating_to_snippets
-```

+ 0 - 610
docs/reference/contrib/modeladmin/indexview.md

@@ -1,610 +0,0 @@
-# Customising `IndexView` - the listing view
-
-For the sake of consistency, this section of the docs will refer to the listing view as `IndexView`, because that is the view class that does all the heavy lifting.
-
-You can use the following attributes and methods on the `ModelAdmin` class to alter how your model data is treated and represented by the `IndexView`.
-
-```{contents}
----
-local:
-depth: 1
----
-```
-
-(modeladmin_list_display)=
-
-## `ModelAdmin.list_display`
-
-**Expected value**: A list or tuple, where each item is the name of a field or single-argument callable on your model, or a similarly simple method defined on the `ModelAdmin` class itself.
-
-Default value: `('__str__',)`
-
-Set `list_display` to control which fields are displayed in the `IndexView` for your model.
-
-You have three possible values that can be used in `list_display`:
-
--   A field of the model. For example:
-
-    ```python
-    from wagtail.contrib.modeladmin.options import ModelAdmin
-    from .models import Person
-
-    class PersonAdmin(ModelAdmin):
-        model = Person
-        list_display = ('first_name', 'last_name')
-    ```
-
--   The name of a custom method on your `ModelAdmin` class, that accepts a single parameter for the model instance. For example:
-
-    ```python
-    from wagtail.contrib.modeladmin.options import ModelAdmin
-    from .models import Person
-
-
-    class PersonAdmin(ModelAdmin):
-        model = Person
-        list_display = ('upper_case_name',)
-
-        def upper_case_name(self, obj):
-            return ("%s %s" % (obj.first_name, obj.last_name)).upper()
-        upper_case_name.short_description = 'Name'
-    ```
-
--   The name of a method on your `Model` class that accepts only `self` as an argument. For example:
-
-    ```python
-    from django.db import models
-    from wagtail.contrib.modeladmin.options import ModelAdmin
-
-    class Person(models.Model):
-        name = models.CharField(max_length=50)
-        birthday = models.DateField()
-
-        def decade_born_in(self):
-            return self.birthday.strftime('%Y')[:3] + "0's"
-        decade_born_in.short_description = 'Birth decade'
-
-
-    class PersonAdmin(ModelAdmin):
-        model = Person
-        list_display = ('name', 'decade_born_in')
-    ```
-
-A few special cases to note about `list_display`:
-
--   If the field is a `ForeignKey`, Django will display the output of `__str__()` of the related object.
-
--   If the string provided is a method of the model or `ModelAdmin` class, Django will HTML-escape the output by default. To escape user input and allow your own unescaped tags, use `format_html()`. For example:
-
-    ```python
-    from django.db import models
-    from django.utils.html import format_html
-    from wagtail.contrib.modeladmin.options import ModelAdmin
-
-    class Person(models.Model):
-        first_name = models.CharField(max_length=50)
-        last_name = models.CharField(max_length=50)
-        color_code = models.CharField(max_length=6)
-
-        def styled_name(self):
-            return format_html(
-                '<span style="color: #{};">{} {}</span>',
-                self.color_code,
-                self.first_name,
-                self.last_name,
-            )
-
-
-    class PersonAdmin(ModelAdmin):
-        model = Person
-        list_display = ('first_name', 'last_name', 'styled_name')
-    ```
-
--   If the value of a field is `None`, an empty string, or an iterable without elements, Wagtail will display a dash (-) for that column. You can override this by setting `empty_value_display` on your `ModelAdmin` class. For example:
-
-    ```python
-        from wagtail.contrib.modeladmin.options import ModelAdmin
-
-        class PersonAdmin(ModelAdmin):
-            empty_value_display = 'N/A'
-            ...
-    ```
-
-    Or, if you'd like to change the value used depending on the field, you can override `ModelAdmin`'s `get_empty_value_display()` method, like so:
-
-    ```python
-    from django.db import models
-    from wagtail.contrib.modeladmin.options import ModelAdmin
-
-
-    class Person(models.Model):
-        name = models.CharField(max_length=100)
-        nickname = models.CharField(blank=True, max_length=100)
-        likes_cat_gifs = models.NullBooleanField()
-
-
-    class PersonAdmin(ModelAdmin):
-        model = Person
-        list_display = ('name', 'nickname', 'likes_cat_gifs')
-
-        def get_empty_value_display(self, field_name=None):
-            if field_name == 'nickname':
-                return 'None given'
-            if field_name == 'likes_cat_gifs':
-                return 'Unanswered'
-            return super().get_empty_value_display(field_name)
-    ```
-
-    The `__str__()` method is just as valid in `list_display` as any other model method, so it’s perfectly OK to do this:
-
-    ```python
-    list_display = ('__str__', 'some_other_field')
-    ```
-
-    By default, the ability to sort results by an item in `list_display` is only offered when it's a field that has an actual database value (because sorting is done at the database level). However, if the output of the method is representative of a database field, you can indicate this fact by setting the `admin_order_field` attribute on that method, like so:
-
-    ```python
-    from django.db import models
-    from django.utils.html import format_html
-    from wagtail.contrib.modeladmin.options import ModelAdmin
-
-    class Person(models.Model):
-        first_name = models.CharField(max_length=50)
-        last_name = models.CharField(max_length=50)
-        color_code = models.CharField(max_length=6)
-
-        def styled_first_name(self):
-            return format_html(
-                '<span style="color: #{};">{}</span>',
-                self.color_code,
-                self.first_name,
-            )
-        styled_first_name.admin_order_field = 'first_name'
-
-
-    class PersonAdmin(ModelAdmin):
-        model = Person
-        list_display = ('styled_first_name', 'last_name')
-    ```
-
-    The above will tell Wagtail to order by the `first_name` field when trying to sort by `styled_first_name` in the index view.
-
-    The above will tell Wagtail to order by the `first_name` field when
-    trying to sort by `styled_first_name` in the index view.
-
-    To indicate descending order with `admin_order_field` you can use a
-    hyphen prefix on the field name. Using the above example, this would look
-    like:
-
-    .. code-block:: python
-
-        styled_first_name.admin_order_field = '-first_name'
-
-    `admin_order_field` supports query lookups to sort by values on related models, too. This example includes an “author first name” column in the list display and allows sorting it by first name:
-
-    ```python
-    from django.db import models
-
-
-    class Blog(models.Model):
-        title = models.CharField(max_length=255)
-        author = models.ForeignKey(Person, on_delete=models.CASCADE)
-
-        def author_first_name(self, obj):
-            return obj.author.first_name
-
-        author_first_name.admin_order_field = 'author__first_name'
-    ```
-
--   Elements of `list_display` can also be properties. Please note however, that due to the way properties work in Python, setting `short_description` on a property is only possible when using the `property()` function and **not** with the `@property` decorator.
-
-    For example:
-
-    ```python
-    from django.db import models
-    from wagtail.contrib.modeladmin.options import ModelAdmin
-
-    class Person(models.Model):
-        first_name = models.CharField(max_length=50)
-        last_name = models.CharField(max_length=50)
-
-        def full_name_property(self):
-            return self.first_name + ' ' + self.last_name
-        full_name_property.short_description = "Full name of the person"
-
-        full_name = property(full_name_property)
-
-
-    class PersonAdmin(ModelAdmin):
-        list_display = ('full_name',)
-    ```
-
-(modeladmin_list_export)=
-
-## `ModelAdmin.list_export`
-
-**Expected value**: A list or tuple, where each item is the name of a field or single-argument callable on your model, or a similarly simple method defined on the `ModelAdmin` class itself.
-
-Set `list_export` to set the fields you wish to be exported as columns when downloading a spreadsheet version of your index_view
-
-```python
-class PersonAdmin(ModelAdmin):
-    list_export = ('is_staff', 'company')
-```
-
-(modeladmin_list_filter)=
-
-## `ModelAdmin.list_filter`
-
-**Expected value**: A list or tuple, where each item is the name of model field of type `BooleanField`, `CharField`, `DateField`, `DateTimeField`, `IntegerField` or `ForeignKey`.
-
-Set `list_filter` to activate filters in the right sidebar of the list page for your model. For example:
-
-```python
-class PersonAdmin(ModelAdmin):
-    list_filter = ('is_staff', 'company')
-```
-
-(modeladmin_export_filename)=
-
-## `ModelAdmin.export_filename`
-
-**Expected value**: A string specifying the filename of an exported spreadsheet, without file extensions.
-
-```python
-class PersonAdmin(ModelAdmin):
-    export_filename = 'people_spreadsheet'
-```
-
-(modeladmin_search_fields)=
-
-## `ModelAdmin.search_fields`
-
-**Expected value**: A list or tuple, where each item is the name of a model field of type `CharField`, `TextField`, `RichTextField` or `StreamField`.
-
-Set `search_fields` to enable a search box at the top of the index page for your model. You should add names of any fields on the model that should be searched whenever somebody submits a search query using the search box.
-
-Searching is handled via Django's QuerySet API by default, see [](modeladmin_search_handler_class) about changing this behaviour. This means by default it will work for all models, whatever search backend your project is using, and without any additional setup or configuration.
-
-(modeladmin_search_handler_class)=
-
-## `ModelAdmin.search_handler_class`
-
-**Expected value**: A subclass of `wagtail.contrib.modeladmin.helpers.search.BaseSearchHandler`
-
-The default value is `DjangoORMSearchHandler`, which uses the Django ORM to perform lookups on the fields specified by `search_fields`.
-
-If you would prefer to use the built-in Wagtail search backend to search your models, you can use the `WagtailBackendSearchHandler` class instead. For example:
-
-```python
-from wagtail.contrib.modeladmin.helpers import WagtailBackendSearchHandler
-
-from .models import Person
-
-class PersonAdmin(ModelAdmin):
-    model = Person
-    search_handler_class = WagtailBackendSearchHandler
-```
-
-### Extra considerations when using `WagtailBackendSearchHandler`
-
-#### `ModelAdmin.search_fields` is used differently
-
-The value of `search_fields` is passed to the underlying search backend to limit the fields used when matching. Each item in the list must be indexed on your model using [](wagtailsearch_index_searchfield).
-
-To allow matching on **any** indexed field, set the `search_fields` attribute on your `ModelAdmin` class to `None`, or remove it completely.
-
-#### Indexing extra fields using `index.FilterField`
-
-The underlying search backend must be able to interpret all of the fields and relationships used in the queryset created by `IndexView`, including those used in `prefetch()` or `select_related()` queryset methods, or used in `list_display`, `list_filter` or `ordering`.
-
-Be sure to test things thoroughly in a development environment (ideally using the same search backend as you use in production). Wagtail will raise an `IndexError` if the backend encounters something it does not understand, and will tell you what you need to change.
-
-(modeladmin_extra_search_kwargs)=
-
-## `ModelAdmin.extra_search_kwargs`
-
-**Expected value**: A dictionary of keyword arguments that will be passed on to the `search()` method of `search_handler_class`.
-
-For example, to override the `WagtailBackendSearchHandler` default operator you could do the following:
-
-```python
-from wagtail.contrib.modeladmin.helpers import WagtailBackendSearchHandler
-from wagtail.search.utils import OR
-
-from .models import IndexedModel
-
-class DemoAdmin(ModelAdmin):
-    model = IndexedModel
-    search_handler_class = WagtailBackendSearchHandler
-    extra_search_kwargs = {'operator': OR}
-```
-
-(modeladmin_ordering)=
-
-## `ModelAdmin.ordering`
-
-**Expected value**: A list or tuple in the same format as a model’s [ordering](django.db.models.Options.ordering) parameter.
-
-Set `ordering` to specify the default ordering of objects when listed by IndexView. If not provided, the model’s default ordering will be respected.
-
-If you need to specify a dynamic order (for example, depending on user or language) you can override the `get_ordering()` method instead.
-
-(modeladmin_list_per_page)=
-
-## `ModelAdmin.list_per_page`
-
-**Expected value**: A positive integer
-
-Set `list_per_page` to control how many items appear on each paginated page of the index view. By default, this is set to `100`.
-
-(modeladmin_get_queryset)=
-
-## `ModelAdmin.get_queryset()`
-
-**Must return**: A QuerySet
-
-The `get_queryset` method returns the 'base' QuerySet for your model, to which any filters and search queries are applied. By default, the `all()` method of your model's default manager is used. But, if for any reason you only want a certain sub-set of objects to appear in the IndexView listing, overriding the `get_queryset` method on your `ModelAdmin` class can help you with that. The method takes an `HttpRequest` object as a parameter, so
-limiting objects by the current logged-in user is possible.
-
-For example:
-
-```python
-from django.db import models
-from wagtail.contrib.modeladmin.options import ModelAdmin
-
-class Person(models.Model):
-    first_name = models.CharField(max_length=50)
-    last_name = models.CharField(max_length=50)
-    managed_by = models.ForeignKey('auth.User', on_delete=models.CASCADE)
-
-
-class PersonAdmin(ModelAdmin):
-    model = Person
-    list_display = ('first_name', 'last_name')
-
-    def get_queryset(self, request):
-        qs = super().get_queryset(request)
-        # Only show people managed by the current user
-        return qs.filter(managed_by=request.user)
-```
-
-(modeladmin_get_extra_attrs_for_row)=
-
-## `ModelAdmin.get_extra_attrs_for_row()`
-
-**Must return**: A dictionary
-
-The `get_extra_attrs_for_row` method allows you to add html attributes to the opening `<tr>` tag for each result, in addition to the `data-object_pk` and `class` attributes already added by the `result_row_display` template tag.
-
-If you want to add additional CSS classes, simply provide those class names as a string value using the `'class'` key, and the `odd`/`even` will be appended to your custom class names when rendering.
-
-For example, if you wanted to add some additional class names based on field values, you could do something like:
-
-```python
-from decimal import Decimal
-from django.db import models
-from wagtail.contrib.modeladmin.options import ModelAdmin
-
-class BankAccount(models.Model):
-    name = models.CharField(max_length=50)
-    account_number = models.CharField(max_length=50)
-    balance = models.DecimalField(max_digits=5, num_places=2)
-
-
-class BankAccountAdmin(ModelAdmin):
-    list_display = ('name', 'account_number', 'balance')
-
-    def get_extra_attrs_for_row(self, obj, context):
-        if obj.balance < Decimal('0.00'):
-            classname = 'balance-negative'
-        else:
-            classname = 'balance-positive'
-        return {
-            'class': classname,
-        }
-```
-
-(modeladmin_get_extra_class_names_for_field_col)=
-
-## `ModelAdmin.get_extra_class_names_for_field_col()`
-
-**Must return**: A list
-
-The `get_extra_class_names_for_field_col` method allows you to add additional CSS class names to any of the columns defined by `list_display` for your model. The method takes two parameters:
-
--   `obj`: the object being represented by the current row
--   `field_name`: the item from `list_display` being represented by the current column
-
-For example, if you'd like to apply some conditional formatting to a cell
-depending on the row's value, you could do something like:
-
-```python
-from decimal import Decimal
-from django.db import models
-from wagtail.contrib.modeladmin.options import ModelAdmin
-
-class BankAccount(models.Model):
-    name = models.CharField(max_length=50)
-    account_number = models.CharField(max_length=50)
-    balance = models.DecimalField(max_digits=5, num_places=2)
-
-
-class BankAccountAdmin(ModelAdmin):
-    list_display = ('name', 'account_number', 'balance')
-
-    def get_extra_class_names_for_field_col(self, obj, field_name):
-        if field_name == 'balance':
-            if obj.balance <= Decimal('-100.00'):
-                return ['brand-danger']
-            elif obj.balance <= Decimal('-0.00'):
-                return ['brand-warning']
-            elif obj.balance <= Decimal('50.00'):
-                return ['brand-info']
-            else:
-                return ['brand-success']
-        return []
-```
-
-(modeladmin_get_extra_attrs_for_field_col)=
-
-## `ModelAdmin.get_extra_attrs_for_field_col()`
-
-**Must return**: A dictionary
-
-The `get_extra_attrs_for_field_col` method allows you to add additional HTML attributes to any of the columns defined in `list_display`. Like the `get_extra_class_names_for_field_col` method above, this method takes two parameters:
-
--   `obj`: the object being represented by the current row
--   `field_name`: the item from `list_display` being represented by the current column
-
-For example, you might like to add some tooltip text to a certain column, to
-help give the value more context:
-
-```python
-from django.db import models
-from wagtail.contrib.modeladmin.options import ModelAdmin
-
-
-class Person(models.Model):
-    name = models.CharField(max_length=100)
-    likes_cat_gifs = models.NullBooleanField()
-
-
-class PersonAdmin(ModelAdmin):
-    model = Person
-    list_display = ('name', 'likes_cat_gifs')
-
-    def get_extra_attrs_for_field_col(self, obj, field_name=None):
-        attrs = super().get_extra_attrs_for_field_col(obj, field_name)
-        if field_name == 'likes_cat_gifs' and obj.likes_cat_gifs is None:
-            attrs.update({
-                'title': (
-                    'The person was shown several cat gifs, but failed to '
-                    'indicate a preference.'
-                ),
-            })
-        return attrs
-```
-
-Or you might like to add one or more data attributes to help implement some kind of interactivity using JavaScript:
-
-```python
-from django.db import models
-from wagtail.contrib.modeladmin.options import ModelAdmin
-
-
-class Event(models.Model):
-    title = models.CharField(max_length=255)
-    start_date = models.DateField()
-    end_date = models.DateField()
-    start_time = models.TimeField()
-    end_time = models.TimeField()
-
-
-class EventAdmin(ModelAdmin):
-    model = Event
-    list_display = ('title', 'start_date', 'end_date')
-
-    def get_extra_attrs_for_field_col(self, obj, field_name=None):
-        attrs = super().get_extra_attrs_for_field_col(obj, field_name)
-        if field_name == 'start_date':
-            # Add the start time as data to the 'start_date' cell
-            attrs.update({ 'data-time': obj.start_time.strftime('%H:%M') })
-        elif field_name == 'end_date':
-            # Add the end time as data to the 'end_date' cell
-            attrs.update({ 'data-time': obj.end_time.strftime('%H:%M') })
-        return attrs
-```
-
-(modeladmin_thumbnailmixin)=
-
-## `wagtail.contrib.modeladmin.mixins.ThumbnailMixin`
-
-If you're using `wagtailimages.Image` to define an image for each item in your model, `ThumbnailMixin` can help you add thumbnail versions of that image to each row in `IndexView`. To use it, simply extend `ThumbnailMixin`
-as well as `ModelAdmin` when defining your `ModelAdmin` class, and change a few attributes to change the thumbnail to your liking, like so:
-
-```python
-from django.db import models
-from wagtail.contrib.modeladmin.mixins import ThumbnailMixin
-from wagtail.contrib.modeladmin.options import ModelAdmin
-
-class Person(models.Model):
-    name = models.CharField(max_length=255)
-    avatar = models.ForeignKey('wagtailimages.Image', on_delete=models.SET_NULL, null=True)
-    likes_cat_gifs = models.NullBooleanField()
-
-class PersonAdmin(ThumbnailMixin, ModelAdmin):
-
-    # Add 'admin_thumb' to list_display, where you want the thumbnail to appear
-    list_display = ('admin_thumb', 'name', 'likes_cat_gifs')
-
-    # Optionally tell IndexView to add buttons to a different column (if the
-    # first column contains the thumbnail, the buttons are likely better off
-    # displayed elsewhere)
-    list_display_add_buttons = 'name'
-
-    """
-    Set 'thumb_image_field_name' to the name of the ForeignKey field that
-    links to 'wagtailimages.Image'
-    """
-    thumb_image_field_name = 'avatar'
-
-    # Optionally override the filter spec used to create each thumb
-    thumb_image_filter_spec = 'fill-100x100' # this is the default
-
-    # Optionally override the 'width' attribute value added to each `<img>` tag
-    thumb_image_width = 50 # this is the default
-
-    # Optionally override the class name added to each `<img>` tag
-    thumb_classname = 'admin-thumb' # this is the default
-
-    # Optionally override the text that appears in the column header
-    thumb_col_header_text = 'image' # this is the default
-
-    # Optionally specify a fallback image to be used when the object doesn't
-    # have an image set, or the image has been deleted. It can an image from
-    # your static files folder, or an external URL.
-    thumb_default = 'https://lorempixel.com/100/100'
-```
-
-(modeladmin_list_display_add_buttons)=
-
-## `ModelAdmin.list_display_add_buttons`
-
-**Expected value**: A string matching one of the items in `list_display`.
-
-If for any reason you'd like to change which column the action buttons appear in for each row, you can specify a different column using `list_display_add_buttons` on your `ModelAdmin` class. The value must match one of the items your class's `list_display` attribute. By default, buttons are added to the first column of each row.
-
-See the `ThumbnailMixin` example above to see how `list_display_add_buttons` can be used.
-
-(modeladmin_index_view_extra_css)=
-
-## `ModelAdmin.index_view_extra_css`
-
-**Expected value**: A list of path names of additional stylesheets to be added to the `IndexView`
-
-See the following part of the docs to find out more: [](modeladmin_adding_css_and_js)
-
-(modeladmin_index_view_extra_js)=
-
-## `ModelAdmin.index_view_extra_js`
-
-**Expected value**: A list of path names of additional js files to be added to the `IndexView`
-
-See the following part of the docs to find out more: [](modeladmin_adding_css_and_js)
-
-(modeladmin_index_template_name)=
-
-## `ModelAdmin.index_template_name`
-
-**Expected value**: The path to a custom template to use for `IndexView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_templates)
-
-(modeladmin_index_view_class)=
-
-## `ModelAdmin.index_view_class`
-
-**Expected value**: A custom `view` class to replace `modeladmin.views.IndexView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_views)

+ 0 - 67
docs/reference/contrib/modeladmin/inspectview.md

@@ -1,67 +0,0 @@
-# Enabling & customising `InspectView`
-
-The `InspectView` is disabled by default, as it's not often useful for most models. However, if you need a view that enables users to view more detailed information about an instance without the option to edit it, you can easily
-enable the inspect view by setting `inspect_view_enabled=True` on your `ModelAdmin` class.
-
-When `InspectView` is enabled, an 'Inspect' button will automatically appear for each row in your index / listing view, linking to a new page that shows a list of field values for that particular object.
-
-By default, all 'concrete' fields (where the field value is stored as a column in the database table for your model) will be shown. You can customise what values are displayed by adding the following attributes to your `ModelAdmin` class:
-
-```{contents}
----
-local:
-depth: 1
----
-```
-
-(modeladmin_inspect_view_fields)=
-
-## `ModelAdmin.inspect_view_fields`
-
-**Expected value:** A list or tuple, where each item is the name of a field or attribute on the instance that you'd like `InspectView` to render.
-
-A sensible value will be rendered for most field types.
-
-If you have `wagtail.images` installed, and the value happens to be an instance of `wagtailimages.models.Image` (or a custom model that subclasses `wagtailimages.models.AbstractImage`), a thumbnail of that image will be rendered.
-
-If you have `wagtail.documents` installed, and the value happens to be an instance of `wagtaildocs.models.Document` (or a custom model that subclasses `wagtaildocs.models.AbstractDocument`), a link to that document will be rendered, along with the document title, file extension and size.
-
-(modeladmin_inspect_view_fields_exclude)=
-
-## `ModelAdmin.inspect_view_fields_exclude`
-
-**Expected value:** A list or tuple, where each item is the name of a field that you'd like to exclude from `InspectView`
-
-**Note:** If both `inspect_view_fields` and `inspect_view_fields_exclude` are set, `inspect_view_fields_exclude` will be ignored.
-
-(modeladmin_inspect_view_extra_css)=
-
-## `ModelAdmin.inspect_view_extra_css`
-
-**Expected value**: A list of path names of additional stylesheets to be added to the `InspectView`
-
-See the following part of the docs to find out more: [](modeladmin_adding_css_and_js)
-
-(modeladmin_inspect_view_extra_js)=
-
-## `ModelAdmin.inspect_view_extra_js`
-
-**Expected value**: A list of path names of additional js files to be added to the `InspectView`
-
-See the following part of the docs to find out more: [](modeladmin_adding_css_and_js)
-
-(modeladmin_inspect_template_name)=
-
-## `ModelAdmin.inspect_template_name`
-
-**Expected value**: The path to a custom template to use for `InspectView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_templates)
-
-(modeladmin_inspect_view_class)=
-
-## `ModelAdmin.inspect_view_class`
-
-**Expected value**: A custom `view` class to replace `modeladmin.views.InspectView`
-
-See the following part of the docs to find out more: [](modeladmin_overriding_views)

+ 0 - 62
docs/reference/contrib/modeladmin/menu_item.md

@@ -1,62 +0,0 @@
-# Customising the menu item
-
-You can use the following attributes and methods on the `ModelAdmin` class to alter the menu item used to represent your model in Wagtail's admin area.
-
-```{contents}
----
-local:
-depth: 1
----
-```
-
-(modeladmin_menu_label)=
-
-## `ModelAdmin.menu_label`
-
-**Expected value**: A string.
-
-Set this attribute to a string value to override the label used for the menu item that appears in Wagtail's sidebar. If not set, the menu item will use `verbose_name_plural` from your model's `Meta` data.
-
-(modeladmin_menu_icon)=
-
-## `ModelAdmin.menu_icon`
-
-**Expected value**: A string matching one of Wagtail's icon class names.
-
-If you want to change the icon used to represent your model, you can set the `menu_icon` attribute on your class to use one of the other icons available in Wagtail's CMS. The same icon will be used for the menu item in Wagtail's sidebar, and will also appear in the header on the list page and other views for your model. If not set, `'doc-full-inverse'` will be used for page-type models, and `'snippet'` for others.
-
-If you're using a `ModelAdminGroup` class to group together several `ModelAdmin` classes in their own sub-menu, and want to change the menu item used to represent the group, you should override the `menu_icon` attribute on your `ModelAdminGroup` class (`'folder-open-inverse'` is the default).
-
-(modeladmin_menu_order)=
-
-## `ModelAdmin.menu_order`
-
-**Expected value**: An integer between `1` and `999`.
-
-If you want to change the position of the menu item for your model (or group of models) in Wagtail's sidebar, you do that by setting `menu_order`. The value should be an integer between `1` and `999`. The lower the value, the higher up the menu item will appear.
-
-Wagtail's 'Explorer' menu item has an order value of `100`, so supply a value greater than that if you wish to keep the explorer menu item at the top.
-
-(modeladmin_add_to_settings_menu)=
-
-## `ModelAdmin.add_to_settings_menu`
-
-**Expected value**: `True` or `False`
-
-If you'd like the menu item for your model to appear in Wagtail's 'Settings' sub-menu instead of at the top level, add `add_to_settings_menu = True` to your `ModelAdmin` class.
-
-This will only work for individual `ModelAdmin` classes registered with their own `modeladmin_register` call. It won't work for members of a `ModelAdminGroup`.
-
-## `ModelAdmin.add_to_admin_menu`
-
-**Expected value**: `True` or `False`
-
-If you'd like this model admin to be excluded from the menu, set to `False`.
-
-(modeladmin_menu_item_name)=
-
-## `ModelAdmin.menu_item_name`
-
-**Expected value**: A string or `None`
-
-Passed on as the `name` parameter when initialising the `MenuItem` for this class, becoming the `name` attribute value for that instance.

+ 0 - 189
docs/reference/contrib/modeladmin/migrating_to_snippets.md

@@ -1,189 +0,0 @@
-# Migrating from ModelAdmin to Snippets
-
-To provide a single, unified way to manage non-page Django models, the `modeladmin` contrib module has been deprecated in favor of the `snippets` module. This page explains how to migrate from `modeladmin` to `snippets`.
-
-```{versionadded} 5.2
-If you would rather not register the models as snippets, you can also use `ModelViewSet`. The migration explained with `SnippetViewSet` and `SnippetViewSetGroup` on this page can be substituted with `ModelViewSet` and `ModelViewSetGroup`. However, as of this release, the `ModelViewSet` does not support the following:
-
-- The use of `panels`, `edit_handler` as described in [](modeladmin_edit_handler_customisation).
-- The `get_queryset` method as described in [](modeladmin_get_queryset).
-
-See [](generic_views) for more details on using `ModelViewSet`.
-```
-
-## Installation
-
-Ensure `wagtail.snippets` is in your `INSTALLED_APPS`:
-
-```python
-INSTALLED_APPS = [
-    ...,
-    'wagtail.snippets',
-    ...,
-]
-```
-
-## Convert `ModelAdmin` class to `SnippetViewSet`
-
-```{eval-rst}
-.. module:: wagtail.snippets.views.snippets
-    :noindex:
-```
-
-The {class}`~SnippetViewSet` class is the snippets-equivalent to the `ModelAdmin` class. To migrate a `ModelAdmin` class to a `SnippetViewSet` class, follow these instructions.
-
-Change any imports of `ModelAdmin` and `modeladmin_register` to `SnippetViewSet` and `register_snippet`, respectively:
-
-```diff
-- from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
-+ from wagtail.snippets.models import register_snippet
-+ from wagtail.snippets.views.snippets import SnippetViewSet
-```
-
-Change any references to `ModelAdmin` and `modeladmin_register` to `SnippetViewSet` and `register_snippet`, respectively:
-
-```diff
-- class MyModelAdmin(ModelAdmin):
-+ class MySnippetViewSet(SnippetViewSet):
-      ...
-
-- modeladmin_register(MyModelAdmin)
-+ register_snippet(MySnippetViewSet)
-```
-
-There are a few attributes of `ModelAdmin` that need to be renamed/adjusted for `SnippetViewSet`. The following is a table of such attributes and the changes that need to be made:
-
-| `ModelAdmin` attribute | `SnippetViewSet` attribute                                             | Notes                                                                                                                                                                                                                                                                                                                                                                                            |
-| ---------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| `add_to_admin_menu`    | {attr}`~wagtail.admin.viewsets.base.ViewSet.add_to_admin_menu`         | Same attribute name, but the value defaults to `False` instead of `True`. Set to `True` to add a top-level menu item for the model.                                                                                                                                                                                                                                                              |
-| `menu_icon`            | {attr}`~wagtail.admin.viewsets.base.ViewSet.icon`                      | Same value, but different attribute name, as the icon is used throughout the admin and not just in the menu.                                                                                                                                                                                                                                                                                     |
-| `list_display`         | {attr}`~wagtail.admin.viewsets.model.ModelViewSet.list_display`        | Same attribute name, but the list/tuple of strings must refer to existing attributes or methods on the model, not the `SnippetViewSet` class. If you have specified a string that refers to an attribute or method on the `ModelAdmin` class, you need to move it to the model. In addition, `list_display` now also supports instances of the `wagtail.admin.ui.tables.Column` component class. |
-| `list_filter`          | {attr}`~wagtail.admin.viewsets.model.ModelViewSet.list_filter`         | Same attribute name and value, but filtering is built on top of the django-filter package under the hood, which behaves differently to ModelAdmin's filters. See documentation for `SnippetViewSet.list_filter` and {attr}`~SnippetViewSet.filterset_class` for more details.                                                                                                                    |
-| `form_fields_exclude`  | {attr}`~wagtail.admin.viewsets.model.ModelViewSet.exclude_form_fields` | Same value, but different attribute name to better align with `ModelViewSet`.                                                                                                                                                                                                                                                                                                                    |
-| -                      | {attr}`~wagtail.admin.viewsets.model.ModelViewSet.template_prefix`     | New attribute. Set to the name of a template directory to override the `"wagtailsnippets/snippets/"` default. If set to `"modeladmin/"`, the template directory structure will be equal to what ModelAdmin uses. Make sure any custom templates are placed in the correct directory according to this prefix. See [](wagtailsnippets_templates) for more details.                                |
-
-### Boolean properties in `list_display`
-
-In ModelAdmin, boolean fields in `list_display` are rendered as tick/cross icons. To achieve the same behavior in SnippetViewSet, you need to use a `wagtail.admin.ui.tables.BooleanColumn` instance in `SnippetViewSet.list_display`:
-
-```python
-from wagtail.admin.ui.tables import BooleanColumn
-
-
-class MySnippetViewSet(SnippetViewSet):
-    list_display = ("title", BooleanColumn("is_active"))
-```
-
-The `BooleanColumn` class works with both model fields and custom properties that return booleans.
-
-## Convert `ModelAdminGroup` class to `SnippetViewSetGroup`
-
-The {class}`~SnippetViewSetGroup` class is the snippets-equivalent to the `ModelAdminGroup` class. To migrate a `ModelAdminGroup` class to a `SnippetViewSetGroup` class, follow these instructions.
-
-Change any imports of `ModelAdminGroup` to `SnippetViewSetGroup`:
-
-```diff
-- from wagtail.contrib.modeladmin.options import ModelAdminGroup
-+ from wagtail.snippets.views.snippets import SnippetViewSetGroup
-```
-
-Change any references to `ModelAdminGroup` to `SnippetViewSetGroup`:
-
-```diff
-- class MyModelAdminGroup(ModelAdminGroup):
-+ class MySnippetViewSetGroup(SnippetViewSetGroup):
-      ...
-
-- modeladmin_register(MyModelAdminGroup)
-+ register_snippet(MySnippetViewSetGroup)
-```
-
-## Unsupported features and customizations
-
-Some features and customizations in `ModelAdmin` are not directly supported via `SnippetViewSet`, but may be achievable via other means that are more in line with Wagtail's architecture.
-
-### Using ModelAdmin to manage Page models
-
-ModelAdmin allows the registration of Page models, but the main use case is to create custom page listing views. The create and edit views are not supported by ModelAdmin, as there are page-specific operations in those views that are best handled by Wagtail's page views. For this reason, registering a Page model as a snippet is not supported.
-
-```{note}
-In a future release, Wagtail will introduce a new "treeless" listing view for pages, as outlined in [RFC 082: Treeless page listings](https://github.com/wagtail/rfcs/pull/82) and the [Universal Listings discussion](https://github.com/wagtail/wagtail/discussions/10446). This feature will allow for custom page listing views and will be the recommended way to achieve this use case. Feedback to this upcoming feature is welcome.
-```
-
-### Customization of index view table rows and columns
-
-ModelAdmin has a number of APIs that allow customization of the index view table rows and columns. Meanwhile, Wagtail has an internal generic tables UI framework that is used throughout the admin, including snippets. This table framework will become the standard way to build table elements in index views within the admin. As a result, the following APIs are not supported in snippets:
-
-- `ModelAdmin.get_extra_attrs_for_row`
-
-  This can be achieved by creating a custom `wagtail.admin.ui.tables.Table` subclass and using it as the `IndexView.table_class`.
-
-- `ModelAdmin.get_extra_class_names_for_field_col`
-
-  This can be achieved using a custom `wagtail.admin.ui.tables.Column` instance in `SnippetViewSet.list_display`.
-- `ModelAdmin.list_display_add_buttons`
-
-  By default, the first column specified in `list_display` is the one that contains the buttons. Using custom `wagtail.admin.ui.tables.Column` instances in `SnippetViewSet.list_display` allows you to specify a different column.
-
-- Attributes for `wagtail.contrib.modeladmin.mixins.ThumbnailMixin`
-
-  This mixin is used to show a thumbnail in the index view. A similar functionality can be achieved using a custom `wagtail.admin.ui.tables.Column` instance in `SnippetViewSet.list_display`. Hence, the following attributes are not supported:
-
-    - `ModelAdmin.thumb_image_field_name`
-    - `ModelAdmin.thumb_image_width`
-    - `ModelAdmin.thumb_classname`
-    - `ModelAdmin.thumb_col_header_text`
-    - `ModelAdmin.thumb_default`
-
-### Custom CSS and JS
-
-ModelAdmin supports inserting custom extra CSS and JS files into the admin via the following attributes on the ModelAdmin class:
-
-- `ModelAdmin.index_view_extra_css`
-- `ModelAdmin.index_view_extra_js`
-- `ModelAdmin.form_view_extra_css`
-- `ModelAdmin.form_view_extra_js`
-- `ModelAdmin.inspect_view_extra_css`
-- `ModelAdmin.inspect_view_extra_js`
-
-This is not supported in snippets, but custom CSS and JS files can be inserted by overriding the respective view's template. Alternatively, the [`insert_global_admin_css`](insert_global_admin_css) and [`insert_global_admin_js`](insert_global_admin_js) hooks can also be used.
-
-### Helper classes
-
-Helper classes encapsulate the logic that is commonly used across views in ModelAdmin. These classes do not exist for snippets, as the similar logic now relies on generic patterns used across Wagtail.
-
-- `ModelAdmin.url_helper_class`
-
-  The base {class}`~wagtail.admin.viewsets.base.ViewSet` class has {meth}`~wagtail.admin.viewsets.base.ViewSet.get_urlpatterns()` and {meth}`~wagtail.admin.viewsets.base.ViewSet.get_url_name()` methods that can be used to manage the URLs of snippets views. The URL names can be used with Django's `reverse()` function to generate URLs.
-
-- `ModelAdmin.permission_helper_class`
-
-  Wagtail uses an internal permission policy system to manage permissions across the admin. The {class}`~SnippetViewSet` class has a {attr}`~SnippetViewSet.permission_policy` attribute, which is an instance of a permission policy class.
-
-- `ModelAdmin.button_helper_class`
-
-  The pre-existing [`register_snippet_listing_buttons`](register_snippet_listing_buttons) and [`construct_snippet_listing_buttons`](construct_snippet_listing_buttons) hooks can be used to customize the buttons in the listing view. For other views, custom buttons can be added by overriding the respective view's template.
-
-- `ModelAdmin.search_handler_class`
-
-  When searching snippets, Wagtail's default search backend is used. To use a different backend, the {attr}`~wagtail.admin.viewsets.model.ModelViewSet.search_backend_name` attribute can be overridden. If the attribute is set to `None`, the search uses the Django ORM instead.
-
-  As the `search_handler_class` attribute is not supported in snippets, the `ModelAdmin.extra_search_kwargs` attribute is also not supported.
-
-### Other customizations
-
-- `ModelAdmin.empty_value_display` and `ModelAdmin.get_empty_value_display()`
-
-  This can be replaced by the Django-standard {meth}`~django.db.models.Model.get_FOO_display` method on the model.
-
-- `ModelAdmin.get_ordering(request)`
-
-  The {attr}`SnippetViewSet.ordering` attribute is responsible for the default ordering of the index view, before falling back to the model's {attr}`~django.db.models.Options.ordering`. The index view handles per-request ordering based on the columns that are specified in `list_display`. For more advanced customization, you can override the {attr}`~SnippetViewSet.index_view_class`.
-
-- `ModelAdmin.prepopulated_fields`
-
-  This is not supported in favor of [`TitleFieldPanel`](title_field_panel).
-
-## Keep ModelAdmin usage
-
-If you still rely on ModelAdmin, it is still available as a separate [wagtail-modeladmin](https://github.com/wagtail-nest/wagtail-modeladmin) package. The package is in maintenance mode and will not receive new features. If you have a use case that is not supported by `SnippetViewSet` and not described above, consider opening a feature request in the Wagtail issue tracker. For more details, see [](../../../contributing/issue_tracking).

+ 0 - 323
docs/reference/contrib/modeladmin/primer.md

@@ -1,323 +0,0 @@
-# `modeladmin` customisation primer
-
-The `modeladmin` app is designed to offer you as much flexibility as possible in how your model and its objects are represented in Wagtail's CMS. This page aims to provide you with some background information to help you gain a better understanding of what the app can do, and to point you in the right direction, depending on the kind of customisations you're looking to make.
-
-```{contents}
----
-local:
-depth: 1
----
-```
-
-## Wagtail's `ModelAdmin` class isn't the same as Django's
-
-Wagtail's `ModelAdmin` class is designed to be used in a similar way to Django's class of the same name, and it often uses the same attribute and method names to achieve similar things. However, there are a few key differences:
-
-### Add & edit forms are still defined by `panels` and `edit_handlers`
-
-In Wagtail, controlling which fields appear in add/edit forms for your `Model`, and defining how they are grouped and ordered, is achieved by adding a `panels` attribute, or `edit_handler` to your `Model` class. This remains the same whether your model is a `Page` type, a snippet, or just a standard Django `Model`. Because of this, Wagtail's `ModelAdmin` class is mostly concerned with 'listing' configuration. For example, `list_display`, `list_filter` and `search_fields` attributes are present and support largely the same values as Django's ModelAdmin class, while `fields`, `fieldsets`, `exclude` and other attributes you may be used to using to configure Django's add/edit views, simply aren't supported by Wagtail's version.
-
-### 'Page type' models need to be treated differently from other models
-
-While `modeladmin`'s listing view and it's supported customisation options work in exactly the same way for all types of `Model`, when it comes to the other management views, the treatment differs depending on whether your ModelAdmin class is representing a page type model (that extends `wagtailcore.models.Page`) or not.
-
-Pages in Wagtail have some unique properties, and require additional views, interface elements and general treatment in order to be managed effectively. For example, they have a tree structure that must be preserved properly as pages are added, deleted and moved around. They also have a revisions system, their own permission considerations, and the facility to preview changes before saving changes. Because of this added complexity, Wagtail provides its own specific views for managing any custom page types you might add to your project (whether you create a `ModelAdmin` class
-for them or not).
-
-In order to deliver a consistent user experience, `modeladmin` simply redirects users to Wagtail's existing page management views wherever possible. You should bear this in mind if you ever find yourself wanting to change what happens when pages of a certain type are added, deleted, published, or have some other action applied to them. Customising the `CreateView` or `EditView` for your page type `Model` (even if just to add an additional stylesheet or JavaScript), simply won't have any effect, as those views are not used.
-
-If you do find yourself needing to customise the add, edit or other behaviour for a page type model, you should take a look at the following part of the documentation: [](admin_hooks).
-
-### Wagtail's `ModelAdmin` class is 'modular'
-
-Unlike Django's class of the same name, wagtailadmin's `ModelAdmin` acts primarily as a 'controller' class. While it does have a set of attributes and methods to enable you to configure how various components should treat your model, it has been deliberately designed to do as little work as possible by itself; it designates all of the real work to a set of
-separate, swappable components.
-
-The theory is: If you want to do something differently, or add some functionality that `modeladmin` doesn't already have, you can create new classes (or extend the ones provided by `modeladmin`) and easily configure your `ModelAdmin` class to use them instead of the defaults.
-
--   Learn more about [](modeladmin_overriding_views)
--   Learn more about [](modeladmin_overriding_helper_classes)
-
-## Changing what appears in the listing
-
-You should familiarise yourself with the attributes and methods supported by the `ModelAdmin` class, that allow you to change what is displayed in the `IndexView`. The following page should give you everything you need to get going: [](indexview)
-
-(modeladmin_adding_css_and_js)=
-
-## Adding additional stylesheets and/or JavaScript
-
-The `ModelAdmin` class provides several attributes to enable you to easily add additional stylesheets and JavaScript to the admin interface for your model. Each attribute simply needs to be a list of paths to the files you want to include. If the path is for a file in your project's static directory, then Wagtail will automatically prepend the path with `STATIC_URL` so that you don't need to repeat it each time in your list of paths.
-
-If you'd like to add styles or scripts to the `IndexView`, you should set the following attributes:
-
--   `index_view_extra_css` - Where each item is the path name of a pre-compiled stylesheet that you'd like to include.
-
--   `index_view_extra_js` - Where each item is the path name of a JavaScript file that you'd like to include.
-
-If you'd like to do the same for `CreateView` and `EditView`, you should set the following attributes:
-
--   `form_view_extra_css` - Where each item is the path name of a pre-compiled stylesheet that you'd like to include.
-
--   `form_view_extra_js` - Where each item is the path name of a JavaScript file that you'd like to include.
-
-And if you're using the `InspectView` for your model, and want to do the same for that view, you should set the following attributes:
-
--   `inspect_view_extra_css` - Where each item is the path name of a pre-compiled stylesheet that you'd like to include.
-
--   `inspect_view_extra_js` - Where each item is the path name of a JavaScript file that you'd like to include.
-
-(modeladmin_overriding_templates)=
-
-## Overriding templates
-
-For all modeladmin views, Wagtail looks for templates in the following folders within your project or app, before resorting to the defaults:
-
-1. `templates/modeladmin/app-name/model-name/`
-2. `templates/modeladmin/app-name/`
-3. `templates/modeladmin/`
-
-So, to override the template used by `IndexView` for example, you'd create a new `index.html` template and put it in one of those locations. For example, if you wanted to do this for an `ArticlePage` model in a `news` app, you'd add your custom template as `news/templates/modeladmin/news/articlepage/index.html`.
-
-For reference, `modeladmin` looks for templates with the following names for each view:
-
--   `'index.html'` for `IndexView`
--   `'inspect.html'` for `InspectView`
--   `'create.html'` for `CreateView`
--   `'edit.html'` for `EditView`
--   `'delete.html'` for `DeleteView`
--   `'choose_parent.html'` for `ChooseParentView`
-
-To add extra information to a block within one of the above Wagtail templates, use Django's `{{ block.super }}` within the `{% block ... %}` that you wish to extend. For example, if you wish to display an image in an edit form below the fields of the model that is being edited, you could do the following:
-
-```html+django
-{% extends "modeladmin/edit.html" %}
-{% load static %}
-
-{% block content %}
-    {{ block.super }}
-    <div>
-        <img src="{% get_media_prefix %}{{ instance.image }}"/>
-    </div>
-{% endblock %}
-```
-
-If for any reason you'd rather bypass the above behaviour and explicitly specify a template for a specific view, you can set either of the following attributes on your `ModelAdmin` class:
-
--   `index_template_name` to specify a template for `IndexView`
--   `inspect_template_name` to specify a template for `InspectView`
--   `create_template_name` to specify a template for `CreateView`
--   `edit_template_name` to specify a template for `EditView`
--   `delete_template_name` to specify a template for `DeleteView`
--   `choose_parent_template_name` to specify a template for `ChooseParentView`
-
-(modeladmin_overriding_views)=
-
-## Overriding views
-
-For all of the views offered by `ModelAdmin`, the class provides an attribute that you can override in order to tell it which class you'd like to use:
-
--   `index_view_class`
--   `inspect_view_class`
--   `create_view_class` (not used for 'page type' models)
--   `edit_view_class` (not used for 'page type' models)
--   `delete_view_class` (not used for 'page type' models)
--   `choose_parent_view_class` (only used for 'page type' models)
-
-For example, if you'd like to create your own view class and use it for the `IndexView`, you would do the following:
-
-```python
-from wagtail.contrib.modeladmin.views import IndexView
-from wagtail.contrib.modeladmin.options import ModelAdmin
-from .models import MyModel
-
-class MyCustomIndexView(IndexView):
-    # New functionality and existing method overrides added here
-    ...
-
-
-class MyModelAdmin(ModelAdmin):
-    model = MyModel
-    index_view_class = MyCustomIndexView
-```
-
-Or, if you have no need for any of `IndexView`'s existing functionality in your view and would rather create your own view from scratch, `modeladmin` will support that too. However, it's highly recommended that you use `modeladmin.views.WMABaseView` as a base for your view. It'll make integrating with your `ModelAdmin` class much easier and will provide a bunch of useful attributes and methods to get you started.
-
-You can also use the url_helper to easily reverse URLs for any ModelAdmin see [](modeladmin_reversing_urls).
-
-(modeladmin_overriding_helper_classes)=
-
-## Overriding helper classes
-
-While 'view classes' are responsible for a lot of the work, there are also a number of other tasks that `modeladmin` must do regularly, that need to be handled in a consistent way, and in a number of different places. These tasks are designated to a set of simple classes (in `modeladmin`, these are termed 'helper' classes) and can be found in `wagtail.contrib.modeladmin.helpers`.
-
-If you ever intend to write and use your own custom views with `modeladmin`, you should familiarise yourself with these helpers, as they are made available to views via the `modeladmin.views.WMABaseView` view.
-
-There are three types of 'helper class':
-
--   **URL helpers** - That help with the consistent generation, naming and referencing of urls.
--   **Permission helpers** - That help with ensuring only users with sufficient permissions can perform certain actions, or see options to perform those actions.
--   **Button helpers** - That, with the help of the other two, helps with the generation of buttons for use in a number of places.
-
-The `ModelAdmin` class allows you to define and use your own helper classes by setting values on the following attributes:
-
-(modeladmin_url_helper_class)=
-
-### `ModelAdmin.url_helper_class`
-
-By default, the `modeladmin.helpers.url.PageAdminURLHelper` class is used when your model extends `wagtailcore.models.Page`, otherwise `modeladmin.helpers.url.AdminURLHelper` is used.
-
-If you find that the above helper classes don't work for your needs, you can easily create your own helper class by sub-classing `AdminURLHelper` or `PageAdminURLHelper` (if your model extends Wagtail's `Page` model), and making any necessary additions/overrides.
-
-Once your class is defined, set the `url_helper_class` attribute on your `ModelAdmin` class to use your custom URLHelper, like so:
-
-```python
-from wagtail.contrib.modeladmin.helpers import AdminURLHelper
-from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
-from .models import MyModel
-
-
-class MyURLHelper(AdminURLHelper):
-    ...
-
-
-class MyModelAdmin(ModelAdmin):
-    model = MyModel
-    url_helper_class = MyURLHelper
-
-modeladmin_register(MyModelAdmin)
-```
-
-Or, if you have a more complicated use case, where simply setting that attribute isn't possible (due to circular imports, for example) or doesn't meet your needs, you can override the `get_url_helper_class` method, like so:
-
-```python
-class MyModelAdmin(ModelAdmin):
-    model = MyModel
-
-    def get_url_helper_class(self):
-        if self.some_attribute is True:
-            return MyURLHelper
-        return AdminURLHelper
-```
-
-(modeladmin_permission_helper_class)=
-
-### `ModelAdmin.permission_helper_class`
-
-By default, the `modeladmin.helpers.permission.PagePermissionHelper` class is used when your model extends `wagtailcore.models.Page`, otherwise `modeladmin.helpers.permission.PermissionHelper` is used.
-
-If you find that the above helper classes don't work for your needs, you can easily create your own helper class, by sub-classing `PermissionHelper` (or `PagePermissionHelper` if your model extends Wagtail's `Page` model), and making any necessary additions/overrides. Once defined, you set the `permission_helper_class` attribute on your `ModelAdmin` class to use your custom class instead of the default, like so:
-
-```python
-from wagtail.contrib.modeladmin.helpers import PermissionHelper
-from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
-from .models import MyModel
-
-
-class MyPermissionHelper(PermissionHelper):
-    ...
-
-
-class MyModelAdmin(ModelAdmin):
-    model = MyModel
-    permission_helper_class = MyPermissionHelper
-
-modeladmin_register(MyModelAdmin)
-```
-
-Or, if you have a more complicated use case, where simply setting an attribute isn't possible or doesn't meet your needs, you can override the `get_permission_helper_class` method, like so:
-
-```python
-class MyModelAdmin(ModelAdmin):
-    model = MyModel
-
-    def get_permission_helper_class(self):
-        if self.some_attribute is True:
-            return MyPermissionHelper
-        return PermissionHelper
-```
-
-(modeladmin_button_helper_class)=
-
-### `ModelAdmin.button_helper_class`
-
-By default, the `modeladmin.helpers.button.PageButtonHelper` class is used when your model extends `wagtailcore.models.Page`, otherwise `modeladmin.helpers.button.ButtonHelper` is used.
-
-If you wish to add or change buttons for your model's IndexView, you'll need to create your own button helper class by sub-classing `ButtonHelper` or `PageButtonHelper` (if your model extend's Wagtail's `Page` model), and make any necessary additions/overrides. Once defined, you set the `button_helper_class` attribute on your `ModelAdmin` class to use your custom class instead of the default, like so:
-
-```python
-from wagtail.contrib.modeladmin.helpers import ButtonHelper
-from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
-from .models import MyModel
-
-
-class MyButtonHelper(ButtonHelper):
-    def add_button(self, classnames_add=None, classnames_exclude=None):
-        if classnames_add is None:
-            classnames_add = []
-        if classnames_exclude is None:
-            classnames_exclude = []
-        classnames = self.add_button_classnames + classnames_add
-        cn = self.finalise_classname(classnames, classnames_exclude)
-        return {
-            'url': self.url_helper.create_url,
-            'label': _('Add %s') % self.verbose_name,
-            'classname': cn,
-            'title': _('Add a new %s') % self.verbose_name,
-        }
-
-    def inspect_button(self, pk, classnames_add=None, classnames_exclude=None):
-        ...
-
-    def edit_button(self, pk, classnames_add=None, classnames_exclude=None):
-        ...
-
-    def delete_button(self, pk, classnames_add=None, classnames_exclude=None):
-        ...
-
-
-class MyModelAdmin(ModelAdmin):
-    model = MyModel
-    button_helper_class = MyButtonHelper
-
-modeladmin_register(MyModelAdmin)
-```
-
-To customise the buttons found in the ModelAdmin List View you can change the returned dictionary in the `add_button`, `delete_button`, `edit_button` or `inspect_button` methods. For example if you wanted to change the `Delete` button you could modify the `delete_button` method in your `ButtonHelper` like so:
-
-```python
-class MyButtonHelper(ButtonHelper):
-    #...
-
-    def delete_button(self, pk, classnames_add=None, classnames_exclude=None):
-        #...
-        return {
-            'url': reverse("your_custom_url"),
-            'label': _('Delete'),
-            'classname': "custom-css-class",
-            'title': _('Delete this item')
-        }
-```
-
-Or, if you have a more complicated use case, where simply setting an attribute isn't possible or doesn't meet your needs, you can override the `get_button_helper_class` method, like so:
-
-```python
-class MyModelAdmin(ModelAdmin):
-    model = MyModel
-
-    def get_button_helper_class(self):
-        if self.some_attribute is True:
-            return MyButtonHelper
-        return ButtonHelper
-```
-
-(modeladmin_helpers_in_custom_views)=
-
-### Using helpers in your custom views
-
-As long as you sub-class `modeladmin.views.WMABaseView` (or one of the more 'specific' view classes) to create your custom view, instances of each helper should be available on instances of your class as:
-
--   `self.url_helper`
--   `self.permission_helper`
--   `self.button_helper`
-
-Unlike the other two, `self.button_helper` isn't populated right away when the view is instantiated. In order to show the right buttons for the right users, ButtonHelper instances need to be 'request aware', so `self.button_helper` is only set once the view's `dispatch()` method has run, which takes a `HttpRequest` object as an argument, from which the current user can be identified.

+ 0 - 46
docs/reference/contrib/modeladmin/tips_and_tricks/custom_clean.md

@@ -1,46 +0,0 @@
-(modeladmin_custom_clean)=
-
-# Adding a custom clean method to your ModelAdmin models
-
-The simplest way is to extend your ModelAdmin model and add a clean() model to it. For example:
-
-```python
-from django import forms
-from django.db import models
-
-class ModelAdminModel(models.Model):
-    def clean(self):
-        if self.image.width < 1920 or self.image.height < 1080:
-            raise forms.ValidationError("The image must be at least 1920x1080 pixels in size.")
-```
-
-This will run the clean and raise the `ValidationError` whenever you save the model and the check fails. The error will be displayed at the top of the wagtail admin.
-
-If you want more fine grained-control you can add a custom `clean()` method to the `WagtailAdminPageForm` of your model.
-You can override the form of your ModelAdmin in a similar matter as wagtail Pages.
-
-So, create a custom `WagtailAdminPageForm`:
-
-```python
-from wagtail.admin.forms import WagtailAdminPageForm
-
-class ModelAdminModelForm(WagtailAdminPageForm):
-    def clean(self):
-        cleaned_data = super().clean()
-        image = cleaned_data.get("image")
-        if image and image.width < 1920 or image.height < 1080:
-            self.add_error("image", "The image must be at least 1920x1080px")
-
-        return cleaned_data
-```
-
-And then set the `base_form_class` of your model:
-
-```python
-from django.db import models
-
-class ModelAdminModel(models.Model):
-    base_form_class = ModelAdminModelForm
-```
-
-Using `self.add_error` will display the error to the particular field that has the error.

+ 0 - 12
docs/reference/contrib/modeladmin/tips_and_tricks/index.md

@@ -1,12 +0,0 @@
-# Additional tips and tricks
-
-This section explores some of modeladmin's lesser-known features, and provides examples to help with modeladmin customisation. More pages will be added in future.
-
-```{toctree}
----
-maxdepth: 1
----
-custom_clean
-reversing_urls
-modeladmingroup_extra_views
-```

+ 0 - 37
docs/reference/contrib/modeladmin/tips_and_tricks/modeladmingroup_extra_views.md

@@ -1,37 +0,0 @@
-# Adding non-ModelAdmin views to a `ModelAdminGroup`
-
-To add menu items to a `ModelAdminGroup` that are not managed by ModelAdmin, you can override the `get_submenu_items` method. For example, to add the calendar view described in [](../../../../extending/admin_views) alongside an `EventAdmin` modeladmin, you would do the following (in place of registering it through the `register_admin_menu_item` hook):
-
-```{code-block} python
-from django.urls import reverse
-from wagtail.contrib.modeladmin.options import (
-    ModelAdmin,
-    modeladmin_register,
-    ModelAdminGroup,
-)
-from wagtail.admin.menu import MenuItem
-
-
-class EventAdmin(ModelAdmin):
-    model = CalendarEvent
-    menu_label = "Events"
-    menu_icon = "date"
-    menu_order = 200
-    list_display = ('title', 'date')
-
-
-class CalendarGroup(ModelAdminGroup):
-    menu_label = "Calendar events"
-    menu_icon = "folder-open-inverse"
-    menu_order = 900
-    items = (EventAdmin,)
-
-    def get_submenu_items(self):
-        menu_items = super().get_submenu_items()
-        menu_items.append(
-            MenuItem('Calendar', reverse('calendar'), icon_name='date'),
-        )
-        return menu_items
-
-modeladmin_register(CalendarGroup)
-```

+ 0 - 123
docs/reference/contrib/modeladmin/tips_and_tricks/reversing_urls.md

@@ -1,123 +0,0 @@
-(modeladmin_reversing_urls)=
-
-# Reversing ModelAdmin URLs
-
-It's sometimes useful to be able to derive the `index` (listing) or
-`create` URLs for a model along with the `edit`, `delete` or
-`inspect` URL for a specific object in a model you have registered via
-the `modeladmin` app.
-
-Wagtail itself does this by instantiating each `ModelAdmin` class you have
-registered, and using the `url_helper` attribute of each instance to
-determine what these URLs are.
-
-You can take a similar approach in your own code too, by creating a
-`ModelAdmin` instance yourself, and using its `url_helper`
-to determine URLs.
-
-See below for some examples:
-
-```{contents}
----
-local:
-depth: 1
----
-```
-
-## Getting the `edit` or `delete` or `inspect` URL for an object
-
-In this example, we will provide a quick way to `edit` the Author that is
-linked to a blog post from the admin page listing menu. We have defined
-an `AuthorModelAdmin` class and registered it with Wagtail to allow
-`Author` objects to be administered via the admin area. The `BlogPage`
-model has an `author` field (a `ForeignKey` to the `Author` model)
-to allow a single author to be specified for each post.
-
-```python
-# file: wagtail_hooks.py
-
-from wagtail.admin.widgets import PageListingButton
-from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
-from wagtail import hooks
-
-# Author & BlogPage model not shown in this example
-from models import Author
-
-# ensure our modeladmin is created
-class AuthorModelAdmin(ModelAdmin):
-    model = Author
-    menu_order = 200
-
-# Creating an instance of `AuthorModelAdmin`
-author_modeladmin = AuthorModelAdmin()
-
-@hooks.register('register_page_listing_buttons')
-def add_author_edit_buttons(page, user, next_url=None):
-    """
-    For pages that have an author, add an additional button to the page listing,
-    linking to the 'edit' page for that author.
-    """
-    author_id = getattr(page, 'author_id', None)
-    if author_id:
-        # the url helper will return something like: /admin/my-app/author/edit/2/
-        author_edit_url = author_modeladmin.url_helper.get_action_url('edit', author_id)
-        yield PageListingButton('Edit Author',  author_edit_url, priority=10)
-
-modeladmin_register(AuthorModelAdmin)
-```
-
-As you can see from the example above, when using `get_action_url()` to
-generate object-specific URLs, the target object's primary key value must be supplied
-so that it can be included in the resulting URL (for example `"/admin/my-app/author/edit/2/"`).
-The following object-specific action names are supported by `get_action_url()`:
-
--   `'edit'` Returns a URL for updating a specific object.
--   `'delete'` Returns a URL for deleting a specific object.
--   `'inspect'` Returns a URL for viewing details of a specific object.
-    -   **NOTE:** This will only work if `inspect_view_enabled` is set to `True` on your `ModelAdmin` class.
-
-```{note}
-If you are using string values as primary keys for you model, you may need to handle
-cases where the key contains characters that are not URL safe. Only alphanumerics
-(`[0-9a-zA-Z]`), or the following special characters are safe:
-`$`, `-`, `_`, `.`, `+`, `!`, `*`, `'`, `(`, `)`.
-
-`django.contrib.admin.utils.quote()` can be used to safely encode these primary
-key values before passing them to `get_action_url()`. Failure to do this may result
-in Wagtail not being able to recognise the primary key when the URL is visited,
-resulting in 404 errors.
-```
-
-## Getting the `index` or `create` URL for a model
-
-There are URLs available for the model listing view (action is `'index'`) and
-the create model view (action is `'create'`). Each of these has an equivalent
-shortcut available; `url_helper.index_url` and `url_helper.create_url`.
-
-For example:
-
-```python
-from .wagtail_hooks import AuthorModelAdmin
-
-url_helper = AuthorModelAdmin().url_helper
-
-index_url = url_helper.get_action_url('index')
-# OR we can use the 'index_url' shortcut
-also_index_url = url_helper.index_url # note: do not call this property as a function
-# both will output /admin/my-app/author
-
-create_url = url_helper.get_action_url('create')
-# OR we can use the 'create_url' shortcut
-also_create_url = url_helper.create_url # note: do not call this property as a function
-# both will output /admin/my-app/author/create
-```
-
-```{note}
-If you have registered a page type with `modeladmin` (for example `BlogPage`), and pages
-of that type can be added to more than one place in the page tree, when a user visits
-the `create` URL, they'll be automatically redirected to another view to choose a
-parent for the new page. So, this isn't something you need to check or cater for in
-your own code.
-```
-
-To customise `url_helper` behaviour, see [](modeladmin_url_helper_class).

+ 1 - 1
docs/reference/pages/model_recipes.md

@@ -194,7 +194,7 @@ Here, `blog_entries.filter(tags__name=tag)` follows the `tags` relation on `Blog
 
 Iterating through `page.tags.all` will display each tag associated with `page`, while the links back to the index make use of the filter option added to the `BlogIndexPage` model. A Django query could also use the `tagged_items` related name field to get `BlogPage` objects associated with a tag.
 
-The same approach can be used to add tagging to non-page models managed through [](snippets) and [](../contrib/modeladmin/index). In this case, the model must inherit from `modelcluster.models.ClusterableModel` to be compatible with `ClusterTaggableManager`.
+The same approach can be used to add tagging to non-page models managed through [](snippets). In this case, the model must inherit from `modelcluster.models.ClusterableModel` to be compatible with `ClusterTaggableManager`.
 
 ### Custom tag models
 

+ 1 - 1
docs/releases/1.5.rst

@@ -27,7 +27,7 @@ Wagtail now includes an app ``wagtail.contrib.modeladmin`` (previously available
 .. image:: ../_static/images/releasenotes_1_5_modeladmin.png
 
 
-See :doc:`/reference/contrib/modeladmin/index` for full documentation. This feature was developed by Andy Babic.
+This feature was developed by Andy Babic.
 
 
 TableBlock

+ 1 - 1
docs/releases/1.8.rst

@@ -57,7 +57,7 @@ Other features
 * Added support of a custom ``edit_handler`` for site settings. See :ref:`docs for the site settings module <edit_handlers_settings>`. (Axel Haustant)
 * Added ``get_landing_page_template`` getter method to ``AbstractForm`` (Gagaro)
 * Added ``Page.get_admin_display_title`` method to override how the title is displayed in the admin (Henk-Jan van Hasselaar)
-* Added support for specifying custom HTML attributes for table rows on ModelAdmin index pages. See :ref:`modeladmin_get_extra_attrs_for_row` (Andy Babic)
+* Added support for specifying custom HTML attributes for table rows on ModelAdmin index pages. (Andy Babic)
 * Added ``first_common_ancestor`` method to ``PageQuerySet`` (Tim Heap)
 * Page chooser now opens at the deepest ancestor page that covers all the pages of the required page type (Tim Heap)
 * ``PageChooserBlock`` now accepts a ``target_model`` option to specify the required page type (Tim Heap)

+ 1 - 1
docs/releases/3.0.md

@@ -79,7 +79,7 @@ When using a queryset to render a list of items with images, you can now make us
  * Remove core usage of jinjalint and migrate to curlylint to resolve dependency incompatibility issues (Thibaud Colas)
  * Switch focus outlines implementation to `:focus-visible` for cross-browser consistency (Paarth Agarwal)
  * Migrate multiple documentation pages from RST to MD - including the editor's guide (Vibhakar Solanki, LB (Ben Johnston), Shwet Khatri)
- * Add documentation for defining [custom form validation](modeladmin_custom_clean) on models used in Wagtail's `modelAdmin` (Serafeim Papastefanos)
+ * Add documentation for defining custom form validation on models used in Wagtail's `ModelAdmin` (Serafeim Papastefanos)
  * Update `README.md` logo to work for GitHub dark mode (Paarth Agarwal)
  * Avoid an unnecessary page reload when pressing enter within the header search bar (Images, Pages, Documents) (Riley de Mestre)
  * Removed unofficial length parameter on `If-Modified-Since` header in `sendfile_streaming_backend` which was only used by IE (Mariusz Felisiak)

+ 1 - 1
docs/releases/5.0.md

@@ -300,7 +300,7 @@ The `search_garbage_collect` command used to remove old stored search queries an
 
 ### Changes to header CSS classes in `ModelAdmin` templates
 
-If there are custom styles in place for the `ModelAdmin`'s header content or more complex [template overrides](modeladmin_overriding_templates) in us, there are a few changes for the following classes to be aware of.
+If there are custom styles in place for the `ModelAdmin`'s header content or more complex template overrides in use, there are a few changes for the following classes to be aware of.
 
 | **Content**                      | **Old classes**       | **New classes** |
 | -------------------------------- | --------------------- | --------------- |

+ 1 - 1
docs/releases/5.1.md

@@ -308,7 +308,7 @@ The `insert_editor_css` hook has been deprecated. The `insert_global_admin_css`
 
 ### `wagtail.contrib.modeladmin` is deprecated
 
-As part of the [RFC 85: Snippets parity with ModelAdmin](https://github.com/wagtail/rfcs/pull/85) implementation, the `wagtail.contrib.modeladmin` app is deprecated. To manage non-page models in Wagtail, use [`wagtail.snippets`](snippets) instead. See [](../reference/contrib/modeladmin/migrating_to_snippets) for more details.
+As part of the [RFC 85: Snippets parity with ModelAdmin](https://github.com/wagtail/rfcs/pull/85) implementation, the `wagtail.contrib.modeladmin` app is deprecated. To manage non-page models in Wagtail, use [`wagtail.snippets`](snippets) instead.
 
 If you still rely on ModelAdmin, use the separate [wagtail-modeladmin](https://github.com/wagtail-nest/wagtail-modeladmin) package. The `wagtail.contrib.modeladmin` module will be removed in a future release.
 

+ 0 - 3
wagtail/admin/tests/test_menu.py

@@ -400,11 +400,8 @@ class TestMenuRendering(WagtailTestUtils, TestCase):
             "sites",
             "publishables",
             "locked-pages",
-            "single-event-pages",
-            "event-pages",
             "workflow-tasks",
             "icon-site-setting",
-            "venue-pages",
             "revisable-models",
             "collections",
             "locales",

+ 2 - 5
wagtail/admin/tests/tests.py

@@ -47,11 +47,8 @@ class TestHome(WagtailTestUtils, TestCase):
             '[{"name": "explorer", "label": "Pages", "icon_name": "folder-open-inverse", "classname": "", "attrs": {}, "url": "/admin/pages/"}, 1]',
         )
 
-        # There should be a link to the friend admin in on the home page.
-        self.assertContains(response, '"url": "/admin/friendadmin/"')
-
-        # Since we've marked this as not being shown, it shouldn't be shown.
-        self.assertNotContains(response, '"url": "/admin/enemyadmin/"')
+        # There should be a link to the full-featured snippet admin in on the home page.
+        self.assertContains(response, '"url": "/admin/deep/within/the/admin/"')
 
         # check that is_shown is respected on menu items
         response = self.client.get(reverse("wagtailadmin_home") + "?hide-kittens=true")

+ 0 - 1
wagtail/contrib/modeladmin/.gitignore

@@ -1 +0,0 @@
-static/

+ 0 - 0
wagtail/contrib/modeladmin/__init__.py


+ 0 - 19
wagtail/contrib/modeladmin/apps.py

@@ -1,19 +0,0 @@
-from warnings import warn
-
-from django.apps import AppConfig
-from django.utils.translation import gettext_lazy as _
-
-from wagtail.utils.deprecation import RemovedInWagtail60Warning
-
-
-class WagtailModelAdminAppConfig(AppConfig):
-    name = "wagtail.contrib.modeladmin"
-    label = "wagtailmodeladmin"
-    verbose_name = _("Wagtail ModelAdmin")
-
-    def ready(self):
-        warn(
-            "wagtail.contrib.modeladmin is deprecated. "
-            "Use wagtail.snippets or the separate wagtail-modeladmin package instead.",
-            category=RemovedInWagtail60Warning,
-        )

+ 0 - 29
wagtail/contrib/modeladmin/forms.py

@@ -1,29 +0,0 @@
-from django import forms
-from django.utils.translation import gettext as _
-
-from wagtail.models import Page
-
-
-class PageChoiceField(forms.ModelChoiceField):
-    def label_from_instance(self, obj):
-        bits = []
-        for ancestor in (
-            obj.get_ancestors(inclusive=True).exclude(depth=1).specific(defer=True)
-        ):
-            bits.append(ancestor.get_admin_display_title())
-        return " | ".join(bits)
-
-
-class ParentChooserForm(forms.Form):
-    parent_page = PageChoiceField(
-        label=_("Parent page"),
-        required=True,
-        empty_label=None,
-        queryset=Page.objects.none(),
-        widget=forms.RadioSelect(),
-    )
-
-    def __init__(self, valid_parents_qs, *args, **kwargs):
-        self.valid_parents_qs = valid_parents_qs
-        super().__init__(*args, **kwargs)
-        self.fields["parent_page"].queryset = self.valid_parents_qs

+ 0 - 4
wagtail/contrib/modeladmin/helpers/__init__.py

@@ -1,4 +0,0 @@
-from .button import ButtonHelper, PageButtonHelper  # NOQA: F401
-from .permission import PagePermissionHelper, PermissionHelper  # NOQA: F401
-from .search import DjangoORMSearchHandler, WagtailBackendSearchHandler  # NOQA: F401
-from .url import AdminURLHelper, ModelAdminURLFinder, PageAdminURLHelper  # NOQA: F401

+ 0 - 177
wagtail/contrib/modeladmin/helpers/button.py

@@ -1,177 +0,0 @@
-from django.contrib.admin.utils import quote
-from django.utils.encoding import force_str
-from django.utils.translation import gettext as _
-
-
-class ButtonHelper:
-
-    default_button_classnames = ["button"]
-    add_button_classnames = ["bicolor", "button--icon"]
-    inspect_button_classnames = ["button-secondary"]
-    edit_button_classnames = ["button-secondary"]
-    delete_button_classnames = ["no"]
-
-    def __init__(self, view, request):
-        self.view = view
-        self.request = request
-        self.model = view.model
-        self.opts = view.model._meta
-        self.verbose_name = force_str(self.opts.verbose_name)
-        self.verbose_name_plural = force_str(self.opts.verbose_name_plural)
-        self.permission_helper = view.permission_helper
-        self.url_helper = view.url_helper
-
-    def finalise_classname(self, classnames_add=None, classnames_exclude=None):
-        if classnames_add is None:
-            classnames_add = []
-        if classnames_exclude is None:
-            classnames_exclude = []
-        combined = self.default_button_classnames + classnames_add
-        finalised = [cn for cn in combined if cn not in classnames_exclude]
-        return " ".join(finalised)
-
-    def add_button(self, classnames_add=None, classnames_exclude=None):
-        if classnames_add is None:
-            classnames_add = []
-        if classnames_exclude is None:
-            classnames_exclude = []
-        classnames = self.add_button_classnames + classnames_add
-        cn = self.finalise_classname(classnames, classnames_exclude)
-        return {
-            "url": self.url_helper.create_url,
-            "label": _("Add %(object)s") % {"object": self.verbose_name},
-            "icon": "plus",
-            "classname": cn,
-            "title": _("Add a new %(object)s") % {"object": self.verbose_name},
-        }
-
-    def inspect_button(self, pk, classnames_add=None, classnames_exclude=None):
-        if classnames_add is None:
-            classnames_add = []
-        if classnames_exclude is None:
-            classnames_exclude = []
-        classnames = self.inspect_button_classnames + classnames_add
-        cn = self.finalise_classname(classnames, classnames_exclude)
-        return {
-            "url": self.url_helper.get_action_url("inspect", quote(pk)),
-            "label": _("Inspect"),
-            "classname": cn,
-            "title": _("Inspect this %(object)s") % {"object": self.verbose_name},
-        }
-
-    def edit_button(self, pk, classnames_add=None, classnames_exclude=None):
-        if classnames_add is None:
-            classnames_add = []
-        if classnames_exclude is None:
-            classnames_exclude = []
-        classnames = self.edit_button_classnames + classnames_add
-        cn = self.finalise_classname(classnames, classnames_exclude)
-        return {
-            "url": self.url_helper.get_action_url("edit", quote(pk)),
-            "label": _("Edit"),
-            "classname": cn,
-            "title": _("Edit this %(object)s") % {"object": self.verbose_name},
-        }
-
-    def delete_button(self, pk, classnames_add=None, classnames_exclude=None):
-        if classnames_add is None:
-            classnames_add = []
-        if classnames_exclude is None:
-            classnames_exclude = []
-        classnames = self.delete_button_classnames + classnames_add
-        cn = self.finalise_classname(classnames, classnames_exclude)
-        return {
-            "url": self.url_helper.get_action_url("delete", quote(pk)),
-            "label": _("Delete"),
-            "classname": cn,
-            "title": _("Delete this %(object)s") % {"object": self.verbose_name},
-        }
-
-    def get_buttons_for_obj(
-        self, obj, exclude=None, classnames_add=None, classnames_exclude=None
-    ):
-        if exclude is None:
-            exclude = []
-        if classnames_add is None:
-            classnames_add = []
-        if classnames_exclude is None:
-            classnames_exclude = []
-        ph = self.permission_helper
-        usr = self.request.user
-        pk = getattr(obj, self.opts.pk.attname)
-        btns = []
-        if "inspect" not in exclude and ph.user_can_inspect_obj(usr, obj):
-            btns.append(self.inspect_button(pk, classnames_add, classnames_exclude))
-        if "edit" not in exclude and ph.user_can_edit_obj(usr, obj):
-            btns.append(self.edit_button(pk, classnames_add, classnames_exclude))
-        if "delete" not in exclude and ph.user_can_delete_obj(usr, obj):
-            btns.append(self.delete_button(pk, classnames_add, classnames_exclude))
-        return btns
-
-    def get_primary_button(self, obj):
-        ph = self.permission_helper
-        usr = self.request.user
-        pk = getattr(obj, self.opts.pk.attname)
-        if ph.user_can_edit_obj(usr, obj):
-            return self.edit_button(pk)
-        if ph.user_can_inspect_obj(usr, obj):
-            return self.inspect_button(pk)
-
-
-class PageButtonHelper(ButtonHelper):
-
-    unpublish_button_classnames = []
-    copy_button_classnames = []
-
-    def unpublish_button(self, pk, classnames_add=None, classnames_exclude=None):
-        if classnames_add is None:
-            classnames_add = []
-        if classnames_exclude is None:
-            classnames_exclude = []
-        classnames = self.unpublish_button_classnames + classnames_add
-        cn = self.finalise_classname(classnames, classnames_exclude)
-        return {
-            "url": self.url_helper.get_action_url("unpublish", quote(pk)),
-            "label": _("Unpublish"),
-            "classname": cn,
-            "title": _("Unpublish this %(object)s") % {"object": self.verbose_name},
-        }
-
-    def copy_button(self, pk, classnames_add=None, classnames_exclude=None):
-        if classnames_add is None:
-            classnames_add = []
-        if classnames_exclude is None:
-            classnames_exclude = []
-        classnames = self.copy_button_classnames + classnames_add
-        cn = self.finalise_classname(classnames, classnames_exclude)
-        return {
-            "url": self.url_helper.get_action_url("copy", quote(pk)),
-            "label": _("Copy"),
-            "classname": cn,
-            "title": _("Copy this %(object)s") % {"object": self.verbose_name},
-        }
-
-    def get_buttons_for_obj(
-        self, obj, exclude=None, classnames_add=None, classnames_exclude=None
-    ):
-        if exclude is None:
-            exclude = []
-        if classnames_add is None:
-            classnames_add = []
-        if classnames_exclude is None:
-            classnames_exclude = []
-        ph = self.permission_helper
-        usr = self.request.user
-        pk = getattr(obj, self.opts.pk.attname)
-        btns = []
-        if "inspect" not in exclude and ph.user_can_inspect_obj(usr, obj):
-            btns.append(self.inspect_button(pk, classnames_add, classnames_exclude))
-        if "edit" not in exclude and ph.user_can_edit_obj(usr, obj):
-            btns.append(self.edit_button(pk, classnames_add, classnames_exclude))
-        if "copy" not in exclude and ph.user_can_copy_obj(usr, obj):
-            btns.append(self.copy_button(pk, classnames_add, classnames_exclude))
-        if "unpublish" not in exclude and ph.user_can_unpublish_obj(usr, obj):
-            btns.append(self.unpublish_button(pk, classnames_add, classnames_exclude))
-        if "delete" not in exclude and ph.user_can_delete_obj(usr, obj):
-            btns.append(self.delete_button(pk, classnames_add, classnames_exclude))
-        return btns

+ 0 - 186
wagtail/contrib/modeladmin/helpers/permission.py

@@ -1,186 +0,0 @@
-from django.contrib.auth import get_permission_codename
-from django.contrib.auth.models import Permission
-from django.contrib.contenttypes.models import ContentType
-from django.utils.functional import cached_property
-
-from wagtail.models import Page
-from wagtail.permission_policies.pages import PagePermissionPolicy
-
-
-class PermissionHelper:
-    """
-    Provides permission-related helper functions to help determine what a
-    user can do with a 'typical' model (where permissions are granted
-    model-wide), and to a specific instance of that model.
-    """
-
-    def __init__(self, model, inspect_view_enabled=False):
-        self.model = model
-        self.opts = model._meta
-        self.inspect_view_enabled = inspect_view_enabled
-
-    def get_all_model_permissions(self):
-        """
-        Return a queryset of all Permission objects pertaining to the `model`
-        specified at initialisation.
-        """
-
-        return Permission.objects.filter(
-            content_type__app_label=self.opts.app_label,
-            content_type__model=self.opts.model_name,
-        )
-
-    @cached_property
-    def all_permission_codenames(self):
-        return list(
-            self.get_all_model_permissions()
-            .values_list("codename", flat=True)
-            .distinct()
-        )
-
-    def get_perm_codename(self, action):
-        return get_permission_codename(action, self.opts)
-
-    def user_has_specific_permission(self, user, perm_codename):
-        """
-        Combine `perm_codename` with `self.opts.app_label` to call the provided
-        Django user's built-in `has_perm` method.
-        """
-
-        return user.has_perm(f"{self.opts.app_label}.{perm_codename}")
-
-    def user_has_any_permissions(self, user):
-        """
-        Return a boolean to indicate whether `user` has any model-wide
-        permissions
-        """
-        for perm_codename in self.all_permission_codenames:
-            if self.user_has_specific_permission(user, perm_codename):
-                return True
-        return False
-
-    def user_can_list(self, user):
-        """
-        Return a boolean to indicate whether `user` is permitted to access the
-        list view for self.model
-        """
-        return self.user_has_any_permissions(user)
-
-    def user_can_create(self, user):
-        """
-        Return a boolean to indicate whether `user` is permitted to create new
-        instances of `self.model`
-        """
-        perm_codename = self.get_perm_codename("add")
-        return self.user_has_specific_permission(user, perm_codename)
-
-    def user_can_inspect_obj(self, user, obj):
-        """
-        Return a boolean to indicate whether `user` is permitted to 'inspect'
-        a specific `self.model` instance.
-        """
-        return self.inspect_view_enabled and self.user_has_any_permissions(user)
-
-    def user_can_edit_obj(self, user, obj):
-        """
-        Return a boolean to indicate whether `user` is permitted to 'change'
-        a specific `self.model` instance.
-        """
-        perm_codename = self.get_perm_codename("change")
-        return self.user_has_specific_permission(user, perm_codename)
-
-    def user_can_delete_obj(self, user, obj):
-        """
-        Return a boolean to indicate whether `user` is permitted to 'delete'
-        a specific `self.model` instance.
-        """
-        perm_codename = self.get_perm_codename("delete")
-        return self.user_has_specific_permission(user, perm_codename)
-
-    def user_can_unpublish_obj(self, user, obj):
-        return False
-
-    def user_can_copy_obj(self, user, obj):
-        return False
-
-
-class PagePermissionHelper(PermissionHelper):
-    """
-    Provides permission-related helper functions to help determine what
-    a user can do with a model extending Wagtail's Page model. It differs
-    from `PermissionHelper`, because model-wide permissions aren't really
-    relevant. We generally need to determine permissions on an
-    object-specific basis.
-    """
-
-    def get_valid_parent_pages(self, user):
-        """
-        Identifies possible parent pages for the current user by first looking
-        at allowed_parent_page_models() on self.model to limit options to the
-        correct type of page, then checking permissions on those individual
-        pages to make sure we have permission to add a subpage to it.
-        """
-        # Get queryset of pages where this page type can be added
-        allowed_parent_page_content_types = list(
-            ContentType.objects.get_for_models(
-                *self.model.allowed_parent_page_models()
-            ).values()
-        )
-        allowed_parent_pages = Page.objects.filter(
-            content_type__in=allowed_parent_page_content_types
-        )
-
-        # Get queryset of pages where the user has permission to add subpages
-        if user.is_superuser:
-            pages_where_user_can_add = Page.objects.all()
-        else:
-            pages_where_user_can_add = Page.objects.none()
-
-            perms = {
-                perm
-                for perm in PagePermissionPolicy().get_cached_permissions_for_user(user)
-                if perm.permission.codename == "add_page"
-            }
-            for perm in perms:
-                # user has add permission on any subpage of perm.page
-                # (including perm.page itself)
-                pages_where_user_can_add |= Page.objects.descendant_of(
-                    perm.page, inclusive=True
-                )
-
-        # Combine them
-        return allowed_parent_pages & pages_where_user_can_add
-
-    def user_can_list(self, user):
-        """
-        For models extending Page, permitted actions are determined by
-        permissions on individual objects. Rather than check for change
-        permissions on every object individually (which would be quite
-        resource intensive), we simply always allow the list view to be
-        viewed, and limit further functionality when relevant.
-        """
-        return True
-
-    def user_can_create(self, user):
-        """
-        For models extending Page, whether or not a page of this type can be
-        added somewhere in the tree essentially determines the add permission,
-        rather than actual model-wide permissions
-        """
-        return self.get_valid_parent_pages(user).exists()
-
-    def user_can_edit_obj(self, user, obj):
-        perms = obj.permissions_for_user(user)
-        return perms.can_edit()
-
-    def user_can_delete_obj(self, user, obj):
-        perms = obj.permissions_for_user(user)
-        return perms.can_delete()
-
-    def user_can_unpublish_obj(self, user, obj):
-        perms = obj.permissions_for_user(user)
-        return obj.live and perms.can_unpublish()
-
-    def user_can_copy_obj(self, user, obj):
-        parent_page = obj.get_parent()
-        return parent_page.permissions_for_user(user).can_publish_subpage()

+ 0 - 82
wagtail/contrib/modeladmin/helpers/search.py

@@ -1,82 +0,0 @@
-import operator
-from functools import reduce
-
-from django.db.models import Q
-
-from wagtail.search.backends import get_search_backend
-
-try:
-    from django.contrib.admin.utils import lookup_spawns_duplicates
-except ImportError:
-    # fallback for Django <4.0
-    from django.contrib.admin.utils import (
-        lookup_needs_distinct as lookup_spawns_duplicates,
-    )
-
-
-class BaseSearchHandler:
-    def __init__(self, search_fields):
-        self.search_fields = search_fields
-
-    def search_queryset(self, queryset, search_term, **kwargs):
-        """
-        Returns an iterable of objects from ``queryset`` matching the
-        provided ``search_term``.
-        """
-        raise NotImplementedError()
-
-    @property
-    def show_search_form(self):
-        """
-        Returns a boolean that determines whether a search form should be
-        displayed in the IndexView UI.
-        """
-        return True
-
-
-class DjangoORMSearchHandler(BaseSearchHandler):
-    def search_queryset(self, queryset, search_term, **kwargs):
-        if not search_term or not self.search_fields:
-            return queryset
-
-        orm_lookups = [
-            "%s__icontains" % str(search_field) for search_field in self.search_fields
-        ]
-        for bit in search_term.split():
-            or_queries = [Q(**{orm_lookup: bit}) for orm_lookup in orm_lookups]
-            queryset = queryset.filter(reduce(operator.or_, or_queries))
-        opts = queryset.model._meta
-        for search_spec in orm_lookups:
-            if lookup_spawns_duplicates(opts, search_spec):
-                return queryset.distinct()
-        return queryset
-
-    @property
-    def show_search_form(self):
-        return bool(self.search_fields)
-
-
-class WagtailBackendSearchHandler(BaseSearchHandler):
-
-    default_search_backend = "default"
-
-    def search_queryset(
-        self,
-        queryset,
-        search_term,
-        preserve_order=False,
-        operator=None,
-        backend=None,
-        **kwargs,
-    ):
-        if not search_term:
-            return queryset
-
-        backend = get_search_backend(backend or self.default_search_backend)
-        return backend.search(
-            search_term,
-            queryset,
-            fields=self.search_fields or None,
-            operator=operator,
-            order_by_relevance=not preserve_order,
-        )

+ 0 - 75
wagtail/contrib/modeladmin/helpers/url.py

@@ -1,75 +0,0 @@
-from urllib.parse import quote
-
-from django.contrib.admin.utils import quote as admin_quote
-from django.urls import reverse
-from django.utils.functional import cached_property
-
-
-class AdminURLHelper:
-    def __init__(self, model, base_url_path=None):
-        self.model = model
-        self.opts = model._meta
-        self.base_url_path = self._get_base_url_path(base_url_path)
-
-    def _get_base_url_path(self, base_url_path):
-        if base_url_path:
-            return base_url_path.strip().strip("/")
-        return rf"{self.opts.app_label}/{self.opts.model_name}"
-
-    def _get_action_url_pattern(self, action):
-        if action == "index":
-            return r"^%s/$" % (self.base_url_path)
-        return rf"^{self.base_url_path}/{action}/$"
-
-    def _get_object_specific_action_url_pattern(self, action):
-        return r"^{}/{}/(?P<instance_pk>[-\w]+)/$".format(
-            self.base_url_path,
-            action,
-        )
-
-    def get_action_url_pattern(self, action):
-        if action in ("create", "choose_parent", "index"):
-            return self._get_action_url_pattern(action)
-        return self._get_object_specific_action_url_pattern(action)
-
-    def get_action_url_name(self, action):
-        return "{}_modeladmin_{}".format(
-            self.base_url_path.replace("/", "_"),
-            action,
-        )
-
-    def get_action_url(self, action, *args, **kwargs):
-        if action in ("create", "choose_parent", "index"):
-            return reverse(self.get_action_url_name(action))
-        url_name = self.get_action_url_name(action)
-        return reverse(url_name, args=args, kwargs=kwargs)
-
-    @cached_property
-    def index_url(self):
-        return self.get_action_url("index")
-
-    @cached_property
-    def create_url(self):
-        return self.get_action_url("create")
-
-
-# for registering with wagtail.admin.admin_url_finder.
-# Subclasses should define url_helper and permission_helper
-class ModelAdminURLFinder:
-    def __init__(self, user):
-        self.user = user
-
-    def get_edit_url(self, instance):
-        if self.user is None or self.permission_helper.user_can_edit_obj(
-            self.user, instance
-        ):
-            return self.url_helper.get_action_url("edit", admin_quote(instance.pk))
-
-
-class PageAdminURLHelper(AdminURLHelper):
-    def get_action_url(self, action, *args, **kwargs):
-        if action in ("add", "edit", "delete", "unpublish", "copy", "history"):
-            url_name = "wagtailadmin_pages:%s" % action
-            target_url = reverse(url_name, args=args, kwargs=kwargs)
-            return f"{target_url}?next={quote(self.index_url)}"
-        return super().get_action_url(action, *args, **kwargs)

二進制
wagtail/contrib/modeladmin/locale/af/LC_MESSAGES/django.mo


+ 0 - 25
wagtail/contrib/modeladmin/locale/af/LC_MESSAGES/django.po

@@ -1,25 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Afrikaans (http://app.transifex.com/torchbox/wagtail/language/"
-"af/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: af\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Save"
-msgstr "Stoor"
-
-msgid "Date"
-msgstr "Datum"

二進制
wagtail/contrib/modeladmin/locale/ar/LC_MESSAGES/django.mo


+ 0 - 219
wagtail/contrib/modeladmin/locale/ar/LC_MESSAGES/django.po

@@ -1,219 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# abdulaziz alfuhigi <abajall@gmail.com>, 2018
-# Ahmad Kiswani <kiswani.ahmad@gmail.com>, 2016
-# ultraify media <ultraify@gmail.com>, 2018
-# Younes Oumakhou, 2022
-# Younes Oumakhou, 2022
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: Younes Oumakhou, 2022\n"
-"Language-Team: Arabic (http://app.transifex.com/torchbox/wagtail/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-msgid "Parent page"
-msgstr "صفحة الأم"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "اضف %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "اضف جديد %(object)s"
-
-msgid "Inspect"
-msgstr "فحص"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "افحص %(object)s"
-
-msgid "Edit"
-msgstr "تعديل"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "تحرير هذا %(object)s"
-
-msgid "Delete"
-msgstr "حذف"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "حذف %(object)s"
-
-msgid "Unpublish"
-msgstr "غير منشور"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "عدم نشر %(object)s"
-
-msgid "Copy"
-msgstr "انسخ"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "نسخ %(object)s"
-
-msgid "image"
-msgstr "صورة"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "الرجوع الى %(model_name)s القائمة"
-
-msgid "Choose a parent page"
-msgstr "إختر صفحة أم"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)sيمكن إضافتها إلى أكثر من مكان واحد في موقعك. أي مما يلي تود أن "
-"تكون أصل الصفحة الجديدة؟ "
-
-msgid "Continue"
-msgstr "أكمل"
-
-msgid "Saving…"
-msgstr "يتم الحفظ…"
-
-msgid "Save"
-msgstr "حفظ"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "%(model_name)sلا يمكن حذفها "
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' تتم الإشارة إليها حاليًا بواسطة كائنات أخرى ، ولا يمكن "
-"حذفها دون تعريض سلامة البيانات للخطر. لحذفها بنجاح ، قم أولاً بإزالة المراجع "
-"من الكائنات التالية ، ثم حاول مرة أخرى:"
-
-msgid "Go back to listing"
-msgstr "العودة إلى القائمة"
-
-msgid "Yes, delete"
-msgstr "نعم, احذف"
-
-msgid "No, don't delete"
-msgstr "لا, لا تذف"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr "عذرًا ، لا توجد مطابقة لـ %(name)s عمليات البحث الخاصة بك."
-
-msgid "Search for"
-msgstr "إبحث عن"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "بحث %(name)s"
-
-msgid "Search"
-msgstr "بحث"
-
-msgid "Filter"
-msgstr "فلتر"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"لا %(name)s تم إنشاؤه بعد. يجب إنشاء أحد الإجراءات التالية قبل أن تتمكن من "
-"إضافة أي %(name)s:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "لا %(name)s تم إنشاؤه بعد."
-
-msgid "Pagination"
-msgstr "ترقيم الصفحات"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "صفحة %(current_page)s من %(num_pages)s."
-
-msgid "Previous"
-msgstr "السابق"
-
-msgid "Next"
-msgstr "التالي"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "تم إنشاء '%(object)s' '%(model_name)s'"
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "لا يمكن إنشاء %(object)s بسبب أخطاء."
-
-msgid "New"
-msgstr "جديد"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "أنشئ %(object)s جديد"
-
-msgid "Editing"
-msgstr "جاري التعديل"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "جاري التعديل %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "تم تحديث '%(object)s' '%(model_name)s'."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "لا يمكن حفظ %(object)s بسبب الأخطاء."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "تأكيد حذف %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"هل أنت متأكد أنك تريد حذف هذا %(object)s؟ إذا كانت هناك أشياء أخرى في موقعك "
-"مرتبطة بها ، فقد تتأثر أيضًا."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "تم حذف '%(object)s' '%(model_name)s'."
-
-msgid "Inspecting"
-msgstr "يتم الفحص"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "يتم فحص %(object)s"
-
-msgid "Date"
-msgstr "تاريخ"

二進制
wagtail/contrib/modeladmin/locale/az_AZ/LC_MESSAGES/django.mo


+ 0 - 34
wagtail/contrib/modeladmin/locale/az_AZ/LC_MESSAGES/django.po

@@ -1,34 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Azerbaijani (Azerbaijan) (http://app.transifex.com/torchbox/"
-"wagtail/language/az_AZ/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az_AZ\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Delete"
-msgstr "Silmək"
-
-msgid "Unpublish"
-msgstr "Dərc etməmək"
-
-msgid "Saving…"
-msgstr "Yadda saxlanılır..."
-
-msgid "Save"
-msgstr "Yadda saxla"
-
-msgid "Editing"
-msgstr "Düzəliş edilir"

二進制
wagtail/contrib/modeladmin/locale/be/LC_MESSAGES/django.mo


+ 0 - 83
wagtail/contrib/modeladmin/locale/be/LC_MESSAGES/django.po

@@ -1,83 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Belarusian (http://app.transifex.com/torchbox/wagtail/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
-"(n%100>=11 && n%100<=14)? 2 : 3);\n"
-
-msgid "Edit"
-msgstr "Рэдагаваць"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Рэдактаваць гэта %(object)s"
-
-msgid "Delete"
-msgstr "Выдаліць"
-
-msgid "Unpublish"
-msgstr "Адмяніць публікацыю"
-
-msgid "Copy"
-msgstr "Скапіяваць"
-
-msgid "Continue"
-msgstr "Працягнуць"
-
-msgid "Saving…"
-msgstr "Захаваць..."
-
-msgid "Save"
-msgstr "Захаваць"
-
-msgid "Yes, delete"
-msgstr "Так. Выдаліць"
-
-msgid "No, don't delete"
-msgstr "Не, не выдаляць"
-
-msgid "History"
-msgstr "Гісторыя"
-
-msgid "Search"
-msgstr "Пошук"
-
-msgid "Filter"
-msgstr "Фільтр"
-
-msgid "Pagination"
-msgstr "Пагінацыя"
-
-msgid "Previous"
-msgstr "Папярэдні"
-
-msgid "Next"
-msgstr "Наступная"
-
-msgid "New"
-msgstr "Новы"
-
-msgid "Editing"
-msgstr "Рэдагаванне"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Рэдагаванне %(object)s"
-
-msgid "Date"
-msgstr "Дата"

二進制
wagtail/contrib/modeladmin/locale/bg/LC_MESSAGES/django.mo


+ 0 - 52
wagtail/contrib/modeladmin/locale/bg/LC_MESSAGES/django.po

@@ -1,52 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Bulgarian (http://app.transifex.com/torchbox/wagtail/language/"
-"bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Edit"
-msgstr "Редакция"
-
-msgid "Delete"
-msgstr "Изтрий"
-
-msgid "Unpublish"
-msgstr "Отмени публикуването"
-
-msgid "Save"
-msgstr "Запази"
-
-msgid "Yes, delete"
-msgstr "Да, изтрий го"
-
-msgid "Search"
-msgstr "Търсене"
-
-msgid "Previous"
-msgstr "Предишно"
-
-msgid "Next"
-msgstr "Следващо"
-
-msgid "New"
-msgstr "Ново"
-
-msgid "Editing"
-msgstr "Редактиране"
-
-msgid "Date"
-msgstr "Дата"

二進制
wagtail/contrib/modeladmin/locale/bn/LC_MESSAGES/django.mo


+ 0 - 40
wagtail/contrib/modeladmin/locale/bn/LC_MESSAGES/django.po

@@ -1,40 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Bengali (http://app.transifex.com/torchbox/wagtail/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Edit"
-msgstr "সম্পাদনা করুন"
-
-msgid "Delete"
-msgstr "মুছে ফেলুন "
-
-msgid "Unpublish"
-msgstr "অপ্রকাশিত করুন "
-
-msgid "Saving…"
-msgstr "সংরক্ষিত হচ্ছে..."
-
-msgid "Save"
-msgstr "সংরক্ষণ"
-
-msgid "Search"
-msgstr "সার্চ"
-
-msgid "Editing"
-msgstr "সম্পাদিত হচ্ছে"

二進制
wagtail/contrib/modeladmin/locale/ca/LC_MESSAGES/django.mo


+ 0 - 239
wagtail/contrib/modeladmin/locale/ca/LC_MESSAGES/django.po

@@ -1,239 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# Roger Pons <rogerpons@gmail.com>, 2017,2020,2023
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: Roger Pons <rogerpons@gmail.com>, 2017,2020,2023\n"
-"Language-Team: Catalan (http://app.transifex.com/torchbox/wagtail/language/"
-"ca/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ca\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "ModelAdmin de Wagtail"
-
-msgid "Parent page"
-msgstr "Pàgina pare"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Afegir %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Afegir nou %(object)s"
-
-msgid "Inspect"
-msgstr "Inspeccionar"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Inspeccionar aquest %(object)s"
-
-msgid "Edit"
-msgstr "Editar"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Editar aquest %(object)s"
-
-msgid "Delete"
-msgstr "Eliminar"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Eliminar aquest %(object)s"
-
-msgid "Unpublish"
-msgstr "Despublicar"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Despublicar aquest %(object)s"
-
-msgid "Copy"
-msgstr "Copiar"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Copiar aquest %(object)s"
-
-msgid "image"
-msgstr "imatge"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Tornar la llista de %(model_name)s"
-
-msgid "Choose a parent page"
-msgstr "Triar pàgina pare"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s poden ser afegides a més d'una ubicació dins del vostre lloc web. "
-"Quin dels següents voleu que sigui el pare de la nova pàgina web?"
-
-msgid "Continue"
-msgstr "Continuar"
-
-msgid "Saving…"
-msgstr "Desant…"
-
-msgid "Save"
-msgstr "Desar"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "No es pot eliminar %(model_name)s"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' està actualment referenciat per altres objectes i no pot "
-"ser eliminat sense posar en perill la integritat de les dades. Per tal de "
-"poder-lo eliminar, suprimiu les referències dels objectes següents i torneu "
-"a provar:"
-
-msgid "Go back to listing"
-msgstr "Tornar a la llista"
-
-msgid "Yes, delete"
-msgstr "Sí, eliminar"
-
-msgid "No, don't delete"
-msgstr "No, no esborrar"
-
-#, python-format
-msgid "By %(filter_title)s"
-msgstr "Per %(filter_title)s"
-
-msgid "Last updated"
-msgstr "Última actualització"
-
-msgid "History"
-msgstr "Historial"
-
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr "%(result_count)s fora de %(all_count)s"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr "No hi ha %(name)s que coincideixin amb els paràmetres de cerca."
-
-msgid "Search for"
-msgstr "Cercar per"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Cercar %(name)s"
-
-msgid "Search"
-msgstr "Cercar"
-
-msgid "Filter"
-msgstr "Filtrar"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Encara no s'ha creat cap %(name)s. Cal crear un dels següents abans que "
-"pugueu afegir algun %(name)s:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Encara no s'ha creat cap %(name)s."
-
-#, python-format
-msgid "Why not <a href=\"%(url)s\">add one</a>?"
-msgstr "Voleu <a href=\"%(url)s\">afegir un</a>?"
-
-msgid "Pagination"
-msgstr "Paginació"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Pàgina %(current_page)s de %(num_pages)s."
-
-msgid "Previous"
-msgstr "Anterior"
-
-msgid "Next"
-msgstr "Següent"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' creat."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "No s'ha pogut crear el %(object)s a causa d'errors."
-
-msgid "New"
-msgstr "Nou"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Crear nou %(object)s"
-
-msgid "Editing"
-msgstr "Editant"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Editant %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' actualitzat."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "No s'ha pogut desar el %(object)s a causa d'errors."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Confirmar eliminació de %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Segur que voleu eliminar aquest %(object)s? Si hi ha altres elements del "
-"vostre lloc relacionats amb ell podrien veure's afectats."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' esborrat."
-
-msgid "Inspecting"
-msgstr "Inspeccionant"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Inspeccionant %(object)s"
-
-msgid "Action"
-msgstr "Acció"
-
-msgid "Date"
-msgstr "Data"

二進制
wagtail/contrib/modeladmin/locale/cs/LC_MESSAGES/django.mo


+ 0 - 230
wagtail/contrib/modeladmin/locale/cs/LC_MESSAGES/django.po

@@ -1,230 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# IT Management <hudan@itmanagement.cz>, 2018
-# IT Management <hudan@itmanagement.cz>, 2018,2020
-# IT Management <hudan@itmanagement.cz>, 2020
-# Marek Turnovec <aesculap@gmail.com>, 2016
-# Mirek Zvolský <zvolsky@seznam.cz>, 2019-2020
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: Marek Turnovec <aesculap@gmail.com>, 2016\n"
-"Language-Team: Czech (http://app.transifex.com/torchbox/wagtail/language/"
-"cs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cs\n"
-"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n "
-"<= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "Wagtail ModelAdmin"
-
-msgid "Parent page"
-msgstr "Nadřazená stránka"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Přidat %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Přidat nový %(object)s"
-
-msgid "Inspect"
-msgstr "Prozkoumat"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Prozkoumat  %(object)s"
-
-msgid "Edit"
-msgstr "Upravit"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Edituj %(object)s"
-
-msgid "Delete"
-msgstr "Smazat"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Přidat %(object)s"
-
-msgid "Unpublish"
-msgstr "Zrušit publikaci"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Zrušit publikaci %(object)s"
-
-msgid "Copy"
-msgstr "Kopírovat"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Kopírovat %(object)s"
-
-msgid "image"
-msgstr "obrázek"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Zpátky na seznam %(model_name)s"
-
-msgid "Choose a parent page"
-msgstr "Zvolit rodičovskou stránku"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s mohou být přidány na více míst Vašeho webu. Vyberte, kam má být "
-"Vaše nová stránka přidána."
-
-msgid "Continue"
-msgstr "Pokračovat"
-
-msgid "Saving…"
-msgstr "Ukládání…"
-
-msgid "Save"
-msgstr "Uložit"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "%(model_name)s nemohl být zrušen"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' je právě odkazován jinými objekty a nemůže (nemohou) být "
-"zrušen(y) s ohledem na integritu dat. Nejprve je potřeba odebrat odkazy z "
-"těchot objektů; potom to zkuste znova:"
-
-msgid "Go back to listing"
-msgstr "Zpět na seznam"
-
-msgid "Yes, delete"
-msgstr "Ano, zrušit"
-
-msgid "No, don't delete"
-msgstr "Ne, nemazat"
-
-msgid "History"
-msgstr "Historie"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr ""
-"Bohužel nejsou žádná %(name)s, která by odpovídala Vašemu parametru "
-"vyhledávání."
-
-msgid "Search for"
-msgstr "Hledat.."
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Hledat %(name)s"
-
-msgid "Search"
-msgstr "Hledat"
-
-msgid "Filter"
-msgstr "Filtr"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Žádná %(name)s zatím nebyla vytvořena. Alespoň něco je potřeba vytvořit, než "
-"budete moci přidávat %(name)s:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Žádný(á/é) %(name)s ještě nebyl(a/o) vytvořen(a/o)."
-
-msgid "Pagination"
-msgstr "Stránkování"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Stránka %(current_page)s z %(num_pages)s."
-
-msgid "Previous"
-msgstr "Předchozí"
-
-msgid "Next"
-msgstr "Další"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' vytvořeno."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr " %(object)s nemohlo být vytvořeno kvůli chybám."
-
-msgid "New"
-msgstr "Nový"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Vytvořit nový(ou/é) %(object)s"
-
-msgid "Editing"
-msgstr "Editování"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Editování %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' aktualizováno."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "%(object)s nemohlo být uloženo kvůli chybám."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Potvrďte smazání %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Jste si jistý/á, že chcete zrušit %(object)s? Jestliže se k tomu vztahují "
-"další věci na Vašem webu, mohou být rovněž ovlivněny."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' zrušeno."
-
-msgid "Inspecting"
-msgstr "Prohlíží se.."
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Prohlíží se %(object)s"
-
-msgid "Action"
-msgstr "Akce"
-
-msgid "Date"
-msgstr "Datum"

二進制
wagtail/contrib/modeladmin/locale/cy/LC_MESSAGES/django.mo


+ 0 - 235
wagtail/contrib/modeladmin/locale/cy/LC_MESSAGES/django.po

@@ -1,235 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# Philip Crisp, 2022
-# Philip Crisp, 2022
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: Philip Crisp, 2022\n"
-"Language-Team: Welsh (http://app.transifex.com/torchbox/wagtail/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "ModelGweinyddol Wagtail"
-
-msgid "Parent page"
-msgstr "Tudalen rhiant"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Ychwanegu %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Ychwanegu %(object)s newydd"
-
-msgid "Inspect"
-msgstr "Archwilio"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Archwilio %(object)s  hon"
-
-msgid "Edit"
-msgstr "Golygu"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Golygu %(object)s"
-
-msgid "Delete"
-msgstr "Dileu"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Dileu %(object)s hon"
-
-msgid "Unpublish"
-msgstr "Anghyhoedd"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Dad-gyhoeddi %(object)s hon"
-
-msgid "Copy"
-msgstr "Copio"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Copio %(object)s hon"
-
-msgid "image"
-msgstr "delwedd"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Nôl i restr %(model_name)s"
-
-msgid "Choose a parent page"
-msgstr "Dewiswch dudalen rhiant"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"Gellir ychwanegu %(plural)s i fwy nag un lle o fewn eich gwefan. Pa un o'r "
-"canlynol hoffech chi fod yn rhiant i'ch tudalen newydd?"
-
-msgid "Continue"
-msgstr "Parhau"
-
-msgid "Saving…"
-msgstr "Cadw…"
-
-msgid "Save"
-msgstr "Cadw"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "Methwyd dileu %(model_name)s"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"Cyfeirir at '%(instance_name)s' gan wrthrychau eraill ar hyn o bryd, ac ni "
-"ellir ei ddileu heb beryglu cywirdeb data. Er mwyn ei ddileu yn "
-"llwyddiannus, yn gyntaf tynnwch gyfeiriadau o'r gwrthrychau canlynol, yna "
-"ceisiwch eto:"
-
-msgid "Go back to listing"
-msgstr "Ewch yn ôl i restru"
-
-msgid "Yes, delete"
-msgstr "Ia, dileu"
-
-msgid "No, don't delete"
-msgstr "Na, peidiwch a ddileu"
-
-msgid "Last updated"
-msgstr "Diweddarwyd diwethaf"
-
-msgid "History"
-msgstr "Hanes"
-
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr "%(result_count)s allan o %(all_count)s"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr ""
-"Mae'n ddrwg gennym, nid oes %(name)s yn cyfateb i baramedrau eich chwiliad."
-
-msgid "Search for"
-msgstr "Chwilio am"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Chwilio %(name)s"
-
-msgid "Search"
-msgstr "Chwilio"
-
-msgid "Filter"
-msgstr "Hidlydd"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Does dim %(name)s wedi ei greu eto. Rhaid creu un o'r canlynol cyn y gallwch "
-"ychwanegu unrhyw %(name)s:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Does dim %(name)s wedi ei greu eto."
-
-msgid "Pagination"
-msgstr "Tudaleniad"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Tudalen %(current_page)s o %(num_pages)s."
-
-msgid "Previous"
-msgstr "Blaenorol"
-
-msgid "Next"
-msgstr "Nesaf"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' wedi'i greu."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "Methwyd creu y %(object)s oherwydd gwallau."
-
-msgid "New"
-msgstr "Newydd"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Creu %(object)s newydd"
-
-msgid "Editing"
-msgstr "Golygu"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Golygu %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' wedi'i diweddaru."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "Nid oedd modd cadw'r %(object)s oherwydd gwallau."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Cadarnhau ddileu %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Ydych chi'n siŵr eich bod am ddileu'r %(object)s hwn? Os yw pethau eraill yn "
-"eich gwefan yn gysylltiedig ag ef, efallai y byddant yn cael eu heffeithio "
-"hefyd."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' wedi'i ddileu."
-
-msgid "Inspecting"
-msgstr "Arolygu"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Arolygu %(object)s"
-
-msgid "Action"
-msgstr "Gweithred"
-
-msgid "Date"
-msgstr "Dyddiad"

二進制
wagtail/contrib/modeladmin/locale/da/LC_MESSAGES/django.mo


+ 0 - 58
wagtail/contrib/modeladmin/locale/da/LC_MESSAGES/django.po

@@ -1,58 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Danish (http://app.transifex.com/torchbox/wagtail/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Edit"
-msgstr "Rediger"
-
-msgid "Delete"
-msgstr "Slet"
-
-msgid "Unpublish"
-msgstr "Afpublicer"
-
-msgid "Copy"
-msgstr "Kopi"
-
-msgid "Saving…"
-msgstr "Gemmer..."
-
-msgid "Save"
-msgstr "Gem"
-
-msgid "Yes, delete"
-msgstr "Ja, slet"
-
-msgid "Search"
-msgstr "Søg"
-
-msgid "Previous"
-msgstr "Forrige"
-
-msgid "Next"
-msgstr "Næste"
-
-msgid "New"
-msgstr "Ny"
-
-msgid "Editing"
-msgstr "Redigerer"
-
-msgid "Date"
-msgstr "Dato"

二進制
wagtail/contrib/modeladmin/locale/de/LC_MESSAGES/django.mo


+ 0 - 254
wagtail/contrib/modeladmin/locale/de/LC_MESSAGES/django.po

@@ -1,254 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# fd3e232e7013009a14520c2bc2e16691_e19811b, 2018
-# Bohreromir, 2019
-# Oliver Engel <codeangel@posteo.de>, 2022
-# Ettore Atalan <atalanttore@googlemail.com>, 2019-2020
-# fd3e232e7013009a14520c2bc2e16691_e19811b, 2018
-# Henrik Kröger <hedwig@riseup.net>, 2018
-# Bohreromir, 2019
-# Krzysztof Jeziorny <github@jeziorny.net>, 2021
-# Moritz Pfeiffer <moritz@alp-phone.ch>, 2016
-# Oliver Engel <codeangel@posteo.de>, 2022
-# Stefan Hammer <stefan@hammerworxx.com>, 2023
-# Stefan Hammer <stefan@hammerworxx.com>, 2022
-# Stefan Hammer <stefan@hammerworxx.com>, 2022
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: Stefan Hammer <stefan@hammerworxx.com>, 2023\n"
-"Language-Team: German (http://app.transifex.com/torchbox/wagtail/language/"
-"de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "Wagtail ModelAdmin"
-
-msgid "Parent page"
-msgstr "Übergeordnete Seite"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "%(object)s hinzufügen"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "%(object)s hinzufügen"
-
-msgid "Inspect"
-msgstr "Ansehen"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "%(object)s ansehen"
-
-msgid "Edit"
-msgstr "Bearbeiten"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "%(object)s bearbeiten"
-
-msgid "Delete"
-msgstr "Löschen"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "%(object)s löschen"
-
-msgid "Unpublish"
-msgstr "Veröffentlichung aufheben"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Veröffentlichung von %(object)s aufheben"
-
-msgid "Copy"
-msgstr "Kopieren"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "%(object)s kopieren"
-
-msgid "image"
-msgstr "Bild"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Zurück zur %(model_name)s Liste"
-
-msgid "Choose a parent page"
-msgstr "Wählen Sie eine übergeordnete Seite aus"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s können an mehreren Stellen im Seitenbaum eingefügt werden.  "
-"Welche der folgenden Seiten soll die übergeordnete Seite Ihrer neuen Seite "
-"werden?"
-
-msgid "Continue"
-msgstr "Weiter"
-
-msgid "Saving…"
-msgstr "Speichern…"
-
-msgid "Save"
-msgstr "Speichern"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "%(model_name)s konnte nicht gelöscht werden"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' wird momentan von anderen Objekten referenziert und kann "
-"nicht gelöscht werden, ohne die Integrität Ihrer Daten zu gefährden. "
-"Entfernen Sie bitte zuerst die Verweise von den folgenden Objekten und "
-"probieren Sie das Löschen erneut:"
-
-msgid "Go back to listing"
-msgstr "Zurück zur Liste"
-
-msgid "Yes, delete"
-msgstr "Ja, löschen"
-
-msgid "No, don't delete"
-msgstr "Nein, nicht löschen"
-
-#, python-format
-msgid "By %(filter_title)s"
-msgstr "Nach %(filter_title)s"
-
-msgid "Last updated"
-msgstr "Zuletzt aktualisiert:"
-
-msgid "History"
-msgstr "Historie"
-
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr "%(result_count)s von %(all_count)s"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr ""
-"Es wurden leider keine %(name)s gefunden, die Ihrer Suchanfrage entsprechen."
-
-msgid "Search for"
-msgstr "Suchen"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "%(name)s suchen"
-
-msgid "Search"
-msgstr "Suche"
-
-msgid "Filter"
-msgstr "Filter"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Es wurden noch keine %(name)s erstellt.  Eines der unten aufgeführten "
-"Objekte muss erstellt werden bevor %(name)s erstellt werden können:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Es wurden noch keine %(name)s erstellt."
-
-#, python-format
-msgid "Why not <a href=\"%(url)s\">add one</a>?"
-msgstr "Warum nicht <a href=\"%(url)s\">einen Eintrag hinzufügen</a>?"
-
-msgid "Pagination"
-msgstr "Seitennummerierung"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Seite %(current_page)s von %(num_pages)s."
-
-msgid "Previous"
-msgstr "Vorherige"
-
-msgid "Next"
-msgstr "Nächste"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' erstellt."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "%(object)s konnte aufgrund von Fehlern nicht erstellt werden."
-
-msgid "New"
-msgstr "Neu"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "%(object)s erstellen"
-
-msgid "Editing"
-msgstr "Bearbeite"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Bearbeite %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' geändert."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "%(object)s konnte aufgrund von Fehlern nicht gespeichert werden."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Löschen von %(object)s bestätigen"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Sind Sie sicher, dass Sie dieses „%(object)s“-Objekt löschen möchten? Andere "
-"Objekte Ihrer Seite, die damit verknüpft sind, können davon beeinträchtigt "
-"werden."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' gelöscht."
-
-msgid "Inspecting"
-msgstr "Ansehen"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "%(object)s ansehen"
-
-msgid "Action"
-msgstr "Aktion"
-
-msgid "Date"
-msgstr "Datum"

二進制
wagtail/contrib/modeladmin/locale/el/LC_MESSAGES/django.mo


+ 0 - 211
wagtail/contrib/modeladmin/locale/el/LC_MESSAGES/django.po

@@ -1,211 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# George Giannoulopoulos <vdotoree@yahoo.gr>, 2017
-# Nick Mavrakis <mavrakis.n@gmail.com>, 2017
-# Yiannis Inglessis <negtheone@gmail.com>, 2016
-# Yiannis Inglessis <negtheone@gmail.com>, 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: Yiannis Inglessis <negtheone@gmail.com>, 2016\n"
-"Language-Team: Greek (http://app.transifex.com/torchbox/wagtail/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Parent page"
-msgstr "Κύρια σελίδα"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Προσθήκη %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Προσθήκη νέου %(object)s "
-
-msgid "Inspect"
-msgstr "Επιθεωρείστε"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Επιθεωρείστε το %(object)s"
-
-msgid "Edit"
-msgstr "Επεξεργασία"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Επεξεργαστείτε το %(object)s"
-
-msgid "Delete"
-msgstr "Διαγραφή"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Διαγράψτε το %(object)s"
-
-msgid "Unpublish"
-msgstr "Κατάργηση δημοσίευσης"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Κατάργηση δημοσίευσης  %(object)s"
-
-msgid "Copy"
-msgstr "Αντιγραφή"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Αντιγραφή του %(object)s"
-
-msgid "image"
-msgstr "Εικόνα"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Πίσω στη λίστα του μοντέλου %(model_name)s"
-
-msgid "Choose a parent page"
-msgstr "Επιλέξτε μια κύρια σελίδα"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-
-msgid "Continue"
-msgstr "Επόμενο"
-
-msgid "Saving…"
-msgstr "Γίνεται αποθήκευση…"
-
-msgid "Save"
-msgstr "Αποθήκευση"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "Το μοντέλο %(model_name)s δεν μπόρεσε να διαγραφεί"
-
-msgid "Go back to listing"
-msgstr "Πίσω στη λίστα"
-
-msgid "Yes, delete"
-msgstr "Ναι, να γίνει διαγραφή"
-
-msgid "No, don't delete"
-msgstr "Ακύρωση διαγραφής"
-
-msgid "Last updated"
-msgstr "Τελευταία αναθεώρηση"
-
-msgid "History"
-msgstr "Ιστορικό"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr ""
-"Συγνώμη, δεν υπάρχει αντιστοίχηση με το όνομα %(name)s που να ταιριάζει στα "
-"κριτήρια αναζήτησης σας."
-
-msgid "Search for"
-msgstr "Αναζήτηση για"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Αναζήτηση %(name)s"
-
-msgid "Search"
-msgstr "Αναζήτηση"
-
-msgid "Filter"
-msgstr "Φίλτρο"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Κανένα %(name)s δεν δημιουργήθηκε ακόμα."
-
-msgid "Pagination"
-msgstr "Σελιδοποίηση"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Σελίδα %(current_page)s από %(num_pages)s."
-
-msgid "Previous"
-msgstr "Προηγούμενο"
-
-msgid "Next"
-msgstr "Επόμενο"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' δημιουργήθηκε"
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "Το %(object)s δεν μπόρεσε να δημιουργηθεί λόγω σφαλμάτων."
-
-msgid "New"
-msgstr "Καινούργιο"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Δημιουργία καινούργιου %(object)s"
-
-msgid "Editing"
-msgstr "Υπό επεξεργασία"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Επεξεργάζεται %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' αναθεωρήθηκε."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "%(object)s δεν μπορεί να αποθηκευτεί λόγω σφαλμάτων."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Επιβεβαιώστε τη διαγραφή του %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Είστε σίγουροι ότι θέλετε να διαγράψετε το %(object)s; Σε περίπτωση που άλλα "
-"πράγματα στο site σας συσχετίζονται με αυτό, τότε μπορεί και αυτά να "
-"επηρρεαστούν."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' διαγράφηκε."
-
-msgid "Inspecting"
-msgstr "Επισκόπηση"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Επισκόπηση %(object)s"
-
-msgid "Action"
-msgstr "Ενέργεια"
-
-msgid "Date"
-msgstr "Ημερομηνία"

二進制
wagtail/contrib/modeladmin/locale/en/LC_MESSAGES/django.mo


+ 0 - 286
wagtail/contrib/modeladmin/locale/en/LC_MESSAGES/django.po

@@ -1,286 +0,0 @@
-# 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.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+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"
-"Language: \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"
-
-#: apps.py:12
-msgid "Wagtail ModelAdmin"
-msgstr ""
-
-#: forms.py:19
-msgid "Parent page"
-msgstr ""
-
-#: helpers/button.py:42 views.py:933
-#, python-format
-msgid "Add %(object)s"
-msgstr ""
-
-#: helpers/button.py:45
-#, python-format
-msgid "Add a new %(object)s"
-msgstr ""
-
-#: helpers/button.py:57
-msgid "Inspect"
-msgstr ""
-
-#: helpers/button.py:59
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr ""
-
-#: helpers/button.py:71 views.py:245
-msgid "Edit"
-msgstr ""
-
-#: helpers/button.py:73
-#, python-format
-msgid "Edit this %(object)s"
-msgstr ""
-
-#: helpers/button.py:85 templates/modeladmin/edit.html:26 views.py:967
-msgid "Delete"
-msgstr ""
-
-#: helpers/button.py:87
-#, python-format
-msgid "Delete this %(object)s"
-msgstr ""
-
-#: helpers/button.py:135
-msgid "Unpublish"
-msgstr ""
-
-#: helpers/button.py:137
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr ""
-
-#: helpers/button.py:149
-msgid "Copy"
-msgstr ""
-
-#: helpers/button.py:151
-#, python-format
-msgid "Copy this %(object)s"
-msgstr ""
-
-#: mixins.py:19
-msgid "image"
-msgstr ""
-
-#: templates/modeladmin/choose_parent.html:31
-#: templates/modeladmin/inspect.html:31
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr ""
-
-#: templates/modeladmin/choose_parent.html:34
-msgid "Choose a parent page"
-msgstr ""
-
-#: templates/modeladmin/choose_parent.html:35
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-
-#: templates/modeladmin/choose_parent.html:41
-msgid "Continue"
-msgstr ""
-
-#: templates/modeladmin/create.html:45 templates/modeladmin/edit.html:17
-msgid "Saving…"
-msgstr ""
-
-#: templates/modeladmin/create.html:48 templates/modeladmin/edit.html:20
-msgid "Save"
-msgstr ""
-
-#: templates/modeladmin/delete.html:15
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr ""
-
-#: templates/modeladmin/delete.html:16
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-
-#: templates/modeladmin/delete.html:20
-msgid "Go back to listing"
-msgstr ""
-
-#: templates/modeladmin/delete.html:25
-msgid "Yes, delete"
-msgstr ""
-
-#: templates/modeladmin/delete.html:26
-msgid "No, don't delete"
-msgstr ""
-
-#: templates/modeladmin/includes/filter.html:2
-#, python-format
-msgid "By %(filter_title)s"
-msgstr ""
-
-#: templates/modeladmin/includes/header_with_history.html:10
-msgid "Last updated"
-msgstr ""
-
-#: templates/modeladmin/includes/header_with_history.html:14 views.py:1187
-msgid "History"
-msgstr ""
-
-#: templates/modeladmin/includes/result_count.html:3
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr ""
-
-#: templates/modeladmin/includes/result_list.html:23
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr ""
-
-#: templates/modeladmin/includes/search_form.html:4
-msgid "Search for"
-msgstr ""
-
-#: templates/modeladmin/includes/search_form.html:6
-#, python-format
-msgid "Search %(name)s"
-msgstr ""
-
-#: templates/modeladmin/includes/search_form.html:8
-msgid "Search"
-msgstr ""
-
-#: templates/modeladmin/index.html:49
-msgid "Filter"
-msgstr ""
-
-#: templates/modeladmin/index.html:60
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-
-#: templates/modeladmin/index.html:65
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr ""
-
-#: templates/modeladmin/index.html:67
-#, python-format
-msgid "Why not <a href=\"%(url)s\">add one</a>?"
-msgstr ""
-
-#: templates/modeladmin/index.html:80
-msgid "Pagination"
-msgstr ""
-
-#: templates/modeladmin/index.html:81
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr ""
-
-#: templatetags/modeladmin_tags.py:126
-msgid "Previous"
-msgstr ""
-
-#: templatetags/modeladmin_tags.py:140
-msgid "Next"
-msgstr ""
-
-#: views.py:238
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr ""
-
-#: views.py:249
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr ""
-
-#: views.py:742
-msgid "New"
-msgstr ""
-
-#: views.py:809
-#, python-format
-msgid "Create new %(object)s"
-msgstr ""
-
-#: views.py:833
-msgid "Editing"
-msgstr ""
-
-#: views.py:869
-#, python-format
-msgid "Editing %(object)s"
-msgstr ""
-
-#: views.py:872
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr ""
-
-#: views.py:899
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr ""
-
-#: views.py:981
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr ""
-
-#: views.py:985
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-
-#: views.py:994
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr ""
-
-#: views.py:1033
-msgid "Inspecting"
-msgstr ""
-
-#: views.py:1072
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr ""
-
-#: views.py:1190
-msgid "Action"
-msgstr ""
-
-#: views.py:1192
-msgid "Date"
-msgstr ""

二進制
wagtail/contrib/modeladmin/locale/en_IN/LC_MESSAGES/django.mo


+ 0 - 28
wagtail/contrib/modeladmin/locale/en_IN/LC_MESSAGES/django.po

@@ -1,28 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: English (India) (http://app.transifex.com/torchbox/wagtail/"
-"language/en_IN/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_IN\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Saving…"
-msgstr "Saving..."
-
-msgid "Save"
-msgstr "Save"
-
-msgid "Editing"
-msgstr "Editing"

二進制
wagtail/contrib/modeladmin/locale/es/LC_MESSAGES/django.mo


+ 0 - 247
wagtail/contrib/modeladmin/locale/es/LC_MESSAGES/django.po

@@ -1,247 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# Amós Oviedo <amos.oviedo@gmail.com>, 2020-2022
-# Amós Oviedo <amos.oviedo@gmail.com>, 2020
-# José Luis <alagunajs@gmail.com>, 2016,2018
-# Matt Westcott <matthew@torchbox.com>, 2016
-# Oscar Luciano Espirilla Flores, 2020
-# Oscar Luciano Espirilla Flores, 2020
-# José Luis <alagunajs@gmail.com>, 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: José Luis <alagunajs@gmail.com>, 2016,2018\n"
-"Language-Team: Spanish (http://app.transifex.com/torchbox/wagtail/language/"
-"es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? "
-"1 : 2;\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "Wagtail Administrador de Modelos"
-
-msgid "Parent page"
-msgstr "Página padre"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Añadir %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Añadir un nuevo %(object)s"
-
-msgid "Inspect"
-msgstr "Inspeccionar"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Inspeccionar este %(object)s"
-
-msgid "Edit"
-msgstr "Editar"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Editar este %(object)s"
-
-msgid "Delete"
-msgstr "Eliminar"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Eliminar este %(object)s"
-
-msgid "Unpublish"
-msgstr "Despublicar"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Despublicar este %(object)s"
-
-msgid "Copy"
-msgstr "Copiar"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Copiar este %(object)s"
-
-msgid "image"
-msgstr "Imagen"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Volver a la lista de %(model_name)s"
-
-msgid "Choose a parent page"
-msgstr "Seleccionar página padre"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s puede ser añadido a mas de un lugar dentro de tu sitio. Cuál de "
-"los siguientes sitios desea que sea el padre de su nueva página?"
-
-msgid "Continue"
-msgstr "Continuar"
-
-msgid "Saving…"
-msgstr "Guardando..."
-
-msgid "Save"
-msgstr "Guardar"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "%(model_name)s no puede ser eliminado"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' actualmente está referenciado por otros objetos, y no "
-"pueden ser eliminados sin poner en peligro la integridad de los datos. Para "
-"eliminarlo exitosamente, primero remueva las referencias a los siguientes "
-"objectos, y luego intente de nuevo:"
-
-msgid "Go back to listing"
-msgstr "Volver al listado"
-
-msgid "Yes, delete"
-msgstr "Si, eliminar"
-
-msgid "No, don't delete"
-msgstr "No, no eliminar"
-
-#, python-format
-msgid "By %(filter_title)s"
-msgstr "Por %(filter_title)s"
-
-msgid "Last updated"
-msgstr "Última vez actualizado"
-
-msgid "History"
-msgstr "Historial"
-
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr "%(result_count)s de %(all_count)s"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr ""
-"Lo sentimos, no hay %(name)s que concuerden con sus parametros de búsqueda."
-
-msgid "Search for"
-msgstr "Buscar por"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Buscar %(name)s"
-
-msgid "Search"
-msgstr "Buscar"
-
-msgid "Filter"
-msgstr "Filtro"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Ningún %(name)s ha sido creado aún. Uno de los siquientes debe ser creado "
-"antes de que pueda añadir algún %(name)s:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Ningun@ %(name)s ha sido creado aún."
-
-#, python-format
-msgid "Why not <a href=\"%(url)s\">add one</a>?"
-msgstr "¿Por qué no <a href=\"%(url)s\">añadir uno</a>?"
-
-msgid "Pagination"
-msgstr "Paginación"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Página %(current_page)s de %(num_pages)s."
-
-msgid "Previous"
-msgstr "Anterior"
-
-msgid "Next"
-msgstr "Siguiente"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' creado."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "El %(object)s no puede ser creado debido a errores."
-
-msgid "New"
-msgstr "Nuevo"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Crear nuevo %(object)s"
-
-msgid "Editing"
-msgstr "Editando"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Editando %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' actualizado."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "El %(object)s no puede ser guardado debido a errores."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Confirmar eliminación de %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Está seguro de que quiere eliminar este %(object)s? Si otras cosas en este "
-"sitio están relacionadas a esta, estas se verán afectadas también."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' eliminado."
-
-msgid "Inspecting"
-msgstr "Inspeccionar"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Inspeccionar %(object)s"
-
-msgid "Action"
-msgstr "Acción"
-
-msgid "Date"
-msgstr "Fecha"

二進制
wagtail/contrib/modeladmin/locale/es_419/LC_MESSAGES/django.mo


+ 0 - 41
wagtail/contrib/modeladmin/locale/es_419/LC_MESSAGES/django.po

@@ -1,41 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Spanish (Latin America) (http://app.transifex.com/torchbox/"
-"wagtail/language/es_419/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_419\n"
-"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? "
-"1 : 2;\n"
-
-msgid "Edit"
-msgstr "Editar"
-
-msgid "Delete"
-msgstr "Borrar"
-
-msgid "Unpublish"
-msgstr "Despublicar"
-
-msgid "Saving…"
-msgstr "Guardando..."
-
-msgid "Save"
-msgstr "Guardar"
-
-msgid "Search"
-msgstr "Buscar"
-
-msgid "Editing"
-msgstr "Editando"

二進制
wagtail/contrib/modeladmin/locale/es_VE/LC_MESSAGES/django.mo


+ 0 - 29
wagtail/contrib/modeladmin/locale/es_VE/LC_MESSAGES/django.po

@@ -1,29 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Spanish (Venezuela) (http://app.transifex.com/torchbox/"
-"wagtail/language/es_VE/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_VE\n"
-"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? "
-"1 : 2;\n"
-
-msgid "Unpublish"
-msgstr "Despublicar"
-
-msgid "Saving…"
-msgstr "Guardando..."
-
-msgid "Save"
-msgstr "Guardar"

二進制
wagtail/contrib/modeladmin/locale/et/LC_MESSAGES/django.mo


+ 0 - 226
wagtail/contrib/modeladmin/locale/et/LC_MESSAGES/django.po

@@ -1,226 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# Erlend <debcf78e@opayq.com>, 2020
-# Erlend <debcf78e@opayq.com>, 2020
-# Matt Westcott <matthew@torchbox.com>, 2020
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: Matt Westcott <matthew@torchbox.com>, 2020\n"
-"Language-Team: Estonian (http://app.transifex.com/torchbox/wagtail/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "Wagtail ModelAdmin"
-
-msgid "Parent page"
-msgstr "Vanemaleht"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Lisage %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Lisage uus %(object)s"
-
-msgid "Inspect"
-msgstr "Kontrollige"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Kontrollige seda %(object)s"
-
-msgid "Edit"
-msgstr "Muuda"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Muutke seda %(object)s"
-
-msgid "Delete"
-msgstr "Kustuta"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Kustuta see %(object)s"
-
-msgid "Unpublish"
-msgstr "Tühista avaldamine"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Tühista selle  %(object)s avaldamine"
-
-msgid "Copy"
-msgstr "Kopeeri"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Kopeeri see %(object)s"
-
-msgid "image"
-msgstr "pilt"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Tagasi %(model_name)s juurde"
-
-msgid "Choose a parent page"
-msgstr "Valige vanemleht"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s saab lisada rohkem kui ühte kohta teie saidil. Millist "
-"järgmistest sooviksite olla oma uue lehe vanem?"
-
-msgid "Continue"
-msgstr "Jätka"
-
-msgid "Saving…"
-msgstr "Salvestamine…"
-
-msgid "Save"
-msgstr "Salvesta"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "%(model_name)s ei õnnestunud kustutada"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' viitab praegu teisele objektile ja seda ei saa "
-"kustutada, ilma et see kahjustaks andmete terviklikkust. Edukaks "
-"kustutamiseks eemaldage kõigepealt järgmistelt objektidelt viited ja "
-"proovige uuesti:"
-
-msgid "Go back to listing"
-msgstr "Tagasi nimekirja juurde"
-
-msgid "Yes, delete"
-msgstr "Jah, kustuta"
-
-msgid "No, don't delete"
-msgstr "Ei, ära kustuta"
-
-msgid "History"
-msgstr "Ajalugu"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr "Vabandust, teie otsinguparameetritele ei vasta %(name)s."
-
-msgid "Search for"
-msgstr "Otsima"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Otsi %(name)s"
-
-msgid "Search"
-msgstr "Otsing"
-
-msgid "Filter"
-msgstr "Filtreeri"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Ühtegi %(name)s pole veel loodud. Enne mis tahes lisamist tuleb luua üks "
-"järgmistest %(name)s:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "%(name)s pole veel loodud."
-
-msgid "Pagination"
-msgstr "Lehekülgede otsimine"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Leht %(current_page)s %(num_pages)s lehest."
-
-msgid "Previous"
-msgstr "Eelmine"
-
-msgid "Next"
-msgstr "Järgmine"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' on loodud."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "Rakendust %(object)s ei õnnestunud vigade tõttu luua."
-
-msgid "New"
-msgstr "Uus"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Loo uus %(object)s"
-
-msgid "Editing"
-msgstr "Redigeerimine"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "%(object)s muutmine"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' on värskendatud."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "Rakendust %(object)s ei õnnestunud vigade tõttu salvestada."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Kinnitage %(object)s kustutamine"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Kas soovite selle %(object)s kindlasti kustutada? Kui muud teie saidil "
-"olevad asjad on sellega seotud, võivad need ka neid mõjutada."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' on kustutatud."
-
-msgid "Inspecting"
-msgstr "Ülevaatus"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "%(object)s kontrollimine"
-
-msgid "Action"
-msgstr "Tegevus"
-
-msgid "Date"
-msgstr "Kuupäev"

二進制
wagtail/contrib/modeladmin/locale/eu/LC_MESSAGES/django.mo


+ 0 - 28
wagtail/contrib/modeladmin/locale/eu/LC_MESSAGES/django.po

@@ -1,28 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Basque (http://app.transifex.com/torchbox/wagtail/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Delete"
-msgstr "Ezabatu"
-
-msgid "Search"
-msgstr "Bilatu"
-
-msgid "Date"
-msgstr "Data"

二進制
wagtail/contrib/modeladmin/locale/fa/LC_MESSAGES/django.mo


+ 0 - 211
wagtail/contrib/modeladmin/locale/fa/LC_MESSAGES/django.po

@@ -1,211 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# pyzenberg <pyzenberg@gmail.com>, 2017
-# pyzenberg <pyzenberg@gmail.com>, 2017
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: pyzenberg <pyzenberg@gmail.com>, 2017\n"
-"Language-Team: Persian (http://app.transifex.com/torchbox/wagtail/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-msgid "Parent page"
-msgstr "صفحه والد"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "افزودن %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "افزودن یک %(object)s جدید"
-
-msgid "Inspect"
-msgstr "بازرسی"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "بازرسی این %(object)s"
-
-msgid "Edit"
-msgstr "ویرایش"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "ویرایش این %(object)s"
-
-msgid "Delete"
-msgstr "حذف"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "حذف این %(object)s"
-
-msgid "Unpublish"
-msgstr "لغو انتشار"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "لغو انتشار این %(object)s"
-
-msgid "Copy"
-msgstr "کپی"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "کپی این %(object)s"
-
-msgid "image"
-msgstr "تصویر"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "بازگشت به فهرست %(model_name)s"
-
-msgid "Choose a parent page"
-msgstr "صفحه والد را انتخاب کنید"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s میتواند به بیش از یک محل در سایت شما اضافه شود. کدامیک از موارد "
-"زیر را میخواهید به عنوان والد صفحه جدید قرار داده شود؟"
-
-msgid "Continue"
-msgstr "ادامه"
-
-msgid "Saving…"
-msgstr "درحال ذخیره…"
-
-msgid "Save"
-msgstr "ذخیره"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "%(model_name)s قابل حذف نیست"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"«%(instance_name)s» در حال حاضر به اشیای دیگری مرتبط است و بدون بهم ریختگی "
-"داده ها قابل حذف شدن نیست. برای حذف موفق آن ابتدا ارجاعاتی که از اشیای زیر "
-"به آن شده را حذف و سپس مجددا اقدام کنید:"
-
-msgid "Go back to listing"
-msgstr "بازگشت به فهرست"
-
-msgid "Yes, delete"
-msgstr "بله حذف شود"
-
-msgid "No, don't delete"
-msgstr "نه، حذف نکن"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr "متاسفانه هیچ %(name)s منطبق با پارامترهای جستجو شما پیدا نشد."
-
-msgid "Search for"
-msgstr "جستجو برای"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "جستجوی %(name)s"
-
-msgid "Search"
-msgstr "جستجو"
-
-msgid "Filter"
-msgstr "فیلتر"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"هیچ %(name)s هنوز ساخته نشده. یکی از موارد زیر قبل از اضافه کردن هر %(name)s "
-"باید ساخته شود:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "هیچ %(name)s هنوز ایجاد نشده"
-
-msgid "Pagination"
-msgstr "صفحه‌بندی"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "صفحه %(current_page)s از %(num_pages)s."
-
-msgid "Previous"
-msgstr "قبلی"
-
-msgid "Next"
-msgstr "بعدی"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' ایجاد شد."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "%(object)s به دلیل بروز خطا ایجاد نشد"
-
-msgid "New"
-msgstr "جدید"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "ایجاد %(object)s جدید"
-
-msgid "Editing"
-msgstr "در حال ویرایش"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "ویرایش %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' بروز شد."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "به دلیل بروز خطا %(object)s ذخیره نشد."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "تایید حذف %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"آیا مطمئن هستید که میخواهید %(object)s را حذف کنید؟ اگر چیزهای دیگری در این "
-"سایت مرتبط با این شی هستند آنها نیز تحت تاثیر این حذف ممکن است قرار بگیرند."
-
-msgid "Inspecting"
-msgstr "بازرسی"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "بازرسی %(object)s"
-
-msgid "Date"
-msgstr "تاریخ"

二進制
wagtail/contrib/modeladmin/locale/fi/LC_MESSAGES/django.mo


+ 0 - 242
wagtail/contrib/modeladmin/locale/fi/LC_MESSAGES/django.po

@@ -1,242 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# Aarni Koskela, 2016
-# Aarni Koskela, 2016
-# Jiri Grönroos <jiri.gronroos@iki.fi>, 2020-2022
-# Niklas Jerva <niklas.jerva@gmail.com>, 2016
-# Valter Maasalo <vmaasalo@gmail.com>, 2020
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>, 2020-2022\n"
-"Language-Team: Finnish (http://app.transifex.com/torchbox/wagtail/language/"
-"fi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "Wagtailin tietomallin hallinta"
-
-msgid "Parent page"
-msgstr "Isäntäsivu"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Lisää %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Lisää uusi %(object)s"
-
-msgid "Inspect"
-msgstr "Tarkastele"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Tarkastele %(object)s-kohdetta"
-
-msgid "Edit"
-msgstr "Muokkaa"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Muokkaa %(object)s-kohdetta"
-
-msgid "Delete"
-msgstr "Poista"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Poista tämä %(object)s"
-
-msgid "Unpublish"
-msgstr "Piilota"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Piilota %(object)s"
-
-msgid "Copy"
-msgstr "Kopioi"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Kopioi %(object)s"
-
-msgid "image"
-msgstr "kuva"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Palaa %(model_name)s -listaan"
-
-msgid "Choose a parent page"
-msgstr "Valitse isäntäsivu"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s voidaan lisätä useampaan kuin yhteen paikkaan sivustollasi. Mihin "
-"haluaisit uuden sivun lisättävän?"
-
-msgid "Continue"
-msgstr "Jatka"
-
-msgid "Saving…"
-msgstr "Tallennetaan…"
-
-msgid "Save"
-msgstr "Tallenna"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "%(model_name)s-kohdetta ei voitu poistaa"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' viitataan muissa objekteissa ja sitä ei voida poistaa "
-"ilman tietojen eheyden vaarantumista. Jotta kohteen voi poistaa "
-"turvallisesti täytyy sinun poistaa viittaukset alla luetelluista objekteista:"
-
-msgid "Go back to listing"
-msgstr "Palaa listaukseen"
-
-msgid "Yes, delete"
-msgstr "Kyllä, poista"
-
-msgid "No, don't delete"
-msgstr "Ei, älä poista"
-
-#, python-format
-msgid "By %(filter_title)s"
-msgstr "Tekijä %(filter_title)s"
-
-msgid "Last updated"
-msgstr "Viimeksi päivitetty"
-
-msgid "History"
-msgstr "Historia"
-
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr "%(result_count)s/%(all_count)s"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr "Haulla ei löytynyt yhtään %(name)s-kohdetta."
-
-msgid "Search for"
-msgstr "Hae…"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Hae %(name)s"
-
-msgid "Search"
-msgstr "Haku"
-
-msgid "Filter"
-msgstr "Suodatin"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Yhtään %(name)s-kohdetta ei ole luotu vielä. Yksi seuraavista tulee luoda "
-"ennen kuin voit luoda %(name)s-kohteita:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Yhtään %(name)s-kohdetta ei ole luotu vielä."
-
-#, python-format
-msgid "Why not <a href=\"%(url)s\">add one</a>?"
-msgstr "Mikset vaikka <a href=\"%(url)s\">loisi yhtä</a>?"
-
-msgid "Pagination"
-msgstr "Sivutus"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Sivu %(current_page)s/%(num_pages)s."
-
-msgid "Previous"
-msgstr "Edellinen"
-
-msgid "Next"
-msgstr "Seuraava"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "Mallin %(model_name)s '%(object)s' luotu."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "%(object)s ei voitu luoda virheiden vuoksi."
-
-msgid "New"
-msgstr "Uusi"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Luo uusi %(object)s"
-
-msgid "Editing"
-msgstr "Muokataan"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Muokataan %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "Mallin %(model_name)s '%(object)s' päivitetty."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "%(object)s ei voitu tallentaa virheiden vuoksi."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Vahvista %(object)s poisto"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Haluatko varmasti poistaa %(object)s? Tämä saattaa vaikuttaa muihin "
-"sivustossa kohteeseen liittyviin asioihin."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "Mallin %(model_name)s '%(object)s' poistettu."
-
-msgid "Inspecting"
-msgstr "Tarkastellaan"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Tarkastellaan %(object)s"
-
-msgid "Action"
-msgstr "Toiminto"
-
-msgid "Date"
-msgstr "Pvm"

二進制
wagtail/contrib/modeladmin/locale/fr/LC_MESSAGES/django.mo


+ 0 - 248
wagtail/contrib/modeladmin/locale/fr/LC_MESSAGES/django.po

@@ -1,248 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# Benoît Vogel <contact@spicy-informatique.com>, 2019
-# Bertrand Bordage <bordage.bertrand@gmail.com>, 2018
-# Léo <leo@naeka.fr>, 2016
-# Loic Teixeira, 2020-2022
-# Sébastien Corbin <seb.corbin@gmail.com>, 2023
-# Tom Dyson <tom@torchbox.com>, 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: Sébastien Corbin <seb.corbin@gmail.com>, 2023\n"
-"Language-Team: French (http://app.transifex.com/torchbox/wagtail/language/"
-"fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % "
-"1000000 == 0 ? 1 : 2;\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "ModelAdmin Wagtail"
-
-msgid "Parent page"
-msgstr "Page parente"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Ajouter un(e) %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Ajouter un(e) autre %(object)s"
-
-msgid "Inspect"
-msgstr "Inspecter"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Inspecter ce/cette %(object)s"
-
-msgid "Edit"
-msgstr "Modifier"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Modifier ce/cette %(object)s"
-
-msgid "Delete"
-msgstr "Supprimer"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Supprimer ce/cette %(object)s"
-
-msgid "Unpublish"
-msgstr "Dépublier"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Dépublier ce/cette %(object)s"
-
-msgid "Copy"
-msgstr "Copier"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Copier ce/cette %(object)s"
-
-msgid "image"
-msgstr "image"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Retourner à la liste de %(model_name)s"
-
-msgid "Choose a parent page"
-msgstr "Choisir une page parente"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s peut être ajouté à plusieurs endroits de votre site. Laquelle des "
-"pages suivantes souhaitez vous avoir comme parente de votre nouvelle page ?"
-
-msgid "Continue"
-msgstr "Continuer"
-
-msgid "Saving…"
-msgstr "Enregistrement…"
-
-msgid "Save"
-msgstr "Enregistrer"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "%(model_name)s ne peut pas être supprimé"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"« %(instance_name)s » est actuellement référencé par d'autres objets, et ne "
-"peut être supprimé sans compromettre l'intégrité des données. Pour le "
-"supprimer avec succès, retirez en premier les références depuis les objets "
-"suivants, puis essayez à nouveau :"
-
-msgid "Go back to listing"
-msgstr "Retourner à la liste"
-
-msgid "Yes, delete"
-msgstr "Oui, supprimer"
-
-msgid "No, don't delete"
-msgstr "Non, ne pas supprimer"
-
-#, python-format
-msgid "By %(filter_title)s"
-msgstr "Par %(filter_title)s"
-
-msgid "Last updated"
-msgstr "Dernière mise à jour"
-
-msgid "History"
-msgstr "Historique"
-
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr "%(result_count)s sur %(all_count)s"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr ""
-"Désolé, il n'y a aucun(e) %(name)s correspondant à vos paramètres de "
-"recherche."
-
-msgid "Search for"
-msgstr "Rechercher"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Rechercher %(name)s"
-
-msgid "Search"
-msgstr "Rechercher"
-
-msgid "Filter"
-msgstr "Filtrer"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Aucun(e) %(name)s n'a été créé(e) pour l'instant. Au moins un des éléments "
-"suivants doit être créé avant de pouvoir ajouter un(e) %(name)s :"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Aucun(e) %(name)s n'a été créé(e) pour l'instant."
-
-#, python-format
-msgid "Why not <a href=\"%(url)s\">add one</a>?"
-msgstr "Pourquoi ne pas en <a href=\"%(url)s\">ajouter un(e)</a> ?"
-
-msgid "Pagination"
-msgstr "Pagination"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Page %(current_page)s sur %(num_pages)s."
-
-msgid "Previous"
-msgstr "Précédent"
-
-msgid "Next"
-msgstr "Suivant"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s « %(object)s » créé(e)."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "Le/la %(object)s ne peut être créé(e) du fait d'erreurs."
-
-msgid "New"
-msgstr "Nouveau"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Créer un(e) autre %(object)s"
-
-msgid "Editing"
-msgstr "Modification"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Modification de %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s « %(object)s » modifié(e)."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "Le/la %(object)s ne peut être enregistré(e) du fait d'erreurs."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Confirmer la suppression de %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Êtes-vous sûr(e) de vouloir supprimer ce/cette %(object)s ? Si d'autres "
-"éléments de votre site y sont liés, il se peut qu'ils soient également "
-"affectés."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s « %(object)s » supprimé(e)."
-
-msgid "Inspecting"
-msgstr "Inspection"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Inspection de ce/cette %(object)s"
-
-msgid "Action"
-msgstr "Action"
-
-msgid "Date"
-msgstr "Date"

二進制
wagtail/contrib/modeladmin/locale/gl/LC_MESSAGES/django.mo


+ 0 - 242
wagtail/contrib/modeladmin/locale/gl/LC_MESSAGES/django.po

@@ -1,242 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# Amós Oviedo <amos.oviedo@gmail.com>, 2016
-# Amós Oviedo <amos.oviedo@gmail.com>, 2016
-# Amós Oviedo <amos.oviedo@gmail.com>, 2016
-# X Bello <xbello@gmail.com>, 2022-2023
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: X Bello <xbello@gmail.com>, 2022-2023\n"
-"Language-Team: Galician (http://app.transifex.com/torchbox/wagtail/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "ModelAdmin de Wagtail"
-
-msgid "Parent page"
-msgstr "Páxina pai"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Engadir %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Engadir unha nova %(object)s"
-
-msgid "Inspect"
-msgstr "Inspeccionar"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Inspeccionar esta %(object)s"
-
-msgid "Edit"
-msgstr "Editar"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Editar este %(object)s"
-
-msgid "Delete"
-msgstr "Eliminar"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Eliminar esta %(object)s"
-
-msgid "Unpublish"
-msgstr "Non publicar"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Non publicar esta %(object)s"
-
-msgid "Copy"
-msgstr "Copiar"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Copiar esta %(object)s"
-
-msgid "image"
-msgstr "Imaxe"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Retornar á lista %(model_name)s"
-
-msgid "Choose a parent page"
-msgstr "Selecciona unha páxina pai"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s poden ser engadidas a máis dun lugar no teu sitio web. ¿Cal das "
-"seguintes gustaríache que fose o pai da túa nova páxina?"
-
-msgid "Continue"
-msgstr "Continuar"
-
-msgid "Saving…"
-msgstr "Gardando…"
-
-msgid "Save"
-msgstr "Gardar"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "%(model_name)s non puideron ser eliminadas"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' é actualmente referenciada por outros obxectos, e non "
-"pode ser eliminada sen por en perigo a integridade dos datos. Para eliminala "
-"satisfactoriamente, primeiro elimina as referencias dende os seguintes "
-"obxectos, entón téntao de novo:"
-
-msgid "Go back to listing"
-msgstr "Retorna ao listado"
-
-msgid "Yes, delete"
-msgstr "Si, eliminar"
-
-msgid "No, don't delete"
-msgstr "Non, non eliminar."
-
-#, python-format
-msgid "By %(filter_title)s"
-msgstr "Por %(filter_title)s "
-
-msgid "Last updated"
-msgstr "Actualizado por última vez"
-
-msgid "History"
-msgstr "Historial"
-
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr "%(result_count)s de %(all_count)s"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr "Síntoo, non hai %(name)s que coincidan cos teus parámetros de procura."
-
-msgid "Search for"
-msgstr "Procurar por"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Procura %(name)s"
-
-msgid "Search"
-msgstr "Procurar"
-
-msgid "Filter"
-msgstr "Filtro"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Non foron aínda creados %(name)s. Un dos seguintes deben ser creados antes "
-"de que podas engadir calquera %(name)s:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Non foron aínda creados %(name)s."
-
-#, python-format
-msgid "Why not <a href=\"%(url)s\">add one</a>?"
-msgstr "¿Por qué non <a href=\"%(url)s\">engadir unha</a>?"
-
-msgid "Pagination"
-msgstr "Paxinación"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Páxina %(current_page)s de %(num_pages)s."
-
-msgid "Previous"
-msgstr "Previa"
-
-msgid "Next"
-msgstr "Seguinte"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' creada."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "A %(object)s non puido ser creada debido a erros."
-
-msgid "New"
-msgstr "Nova"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Crear nova %(object)s"
-
-msgid "Editing"
-msgstr "Editando"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Editando %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' actualizada."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "A %(object)s non puido ser gardada debido a erros."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Confirmar eliminación de %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"¿Seguro que queres eliminar esta %(object)s? Se outras cosas no teu sitio "
-"web fan referencia a ela, poderían tamén verse afectadas."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' eliminada"
-
-msgid "Inspecting"
-msgstr "Inspeccionando"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Inspeccionando %(object)s"
-
-msgid "Action"
-msgstr "Acción"
-
-msgid "Date"
-msgstr "Data"

二進制
wagtail/contrib/modeladmin/locale/he_IL/LC_MESSAGES/django.mo


+ 0 - 66
wagtail/contrib/modeladmin/locale/he_IL/LC_MESSAGES/django.po

@@ -1,66 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Hebrew (Israel) (http://app.transifex.com/torchbox/wagtail/"
-"language/he_IL/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: he_IL\n"
-"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % "
-"1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
-
-msgid "Edit"
-msgstr "ערוך"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "ערוך את %(object)s זה"
-
-msgid "Delete"
-msgstr "מחק"
-
-msgid "Unpublish"
-msgstr "ביטול פרסום"
-
-msgid "Copy"
-msgstr "העתק"
-
-msgid "Saving…"
-msgstr "שומר..."
-
-msgid "Save"
-msgstr "שמור"
-
-msgid "Yes, delete"
-msgstr "כן, מחק"
-
-msgid "Search"
-msgstr "חיפוש"
-
-msgid "Filter"
-msgstr "מסנן"
-
-msgid "Previous"
-msgstr "קודם"
-
-msgid "Next"
-msgstr "הבא"
-
-msgid "New"
-msgstr "חדש"
-
-msgid "Editing"
-msgstr "עריכה"
-
-msgid "Date"
-msgstr "תאריך"

二進制
wagtail/contrib/modeladmin/locale/hi/LC_MESSAGES/django.mo


+ 0 - 22
wagtail/contrib/modeladmin/locale/hi/LC_MESSAGES/django.po

@@ -1,22 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Hindi (http://app.transifex.com/torchbox/wagtail/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Editing"
-msgstr "संपादन"

二進制
wagtail/contrib/modeladmin/locale/hr_HR/LC_MESSAGES/django.mo


+ 0 - 240
wagtail/contrib/modeladmin/locale/hr_HR/LC_MESSAGES/django.po

@@ -1,240 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# Dino Aljević <dino8890@protonmail.com>, 2020,2022
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: Dino Aljević <dino8890@protonmail.com>, 2020,2022\n"
-"Language-Team: Croatian (Croatia) (http://app.transifex.com/torchbox/wagtail/"
-"language/hr_HR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr_HR\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "Wagtail ModelAdmin"
-
-msgid "Parent page"
-msgstr "Roditeljska stranica"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Dodaj %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Dodaj novi %(object)s"
-
-msgid "Inspect"
-msgstr "Pregledaj"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Pregledaj %(object)s"
-
-msgid "Edit"
-msgstr "Uredi"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Uredi ovaj %(object)s"
-
-msgid "Delete"
-msgstr "Izbriši"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Izbriši %(object)s"
-
-msgid "Unpublish"
-msgstr "Odjavi"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Odjavi %(object)s"
-
-msgid "Copy"
-msgstr "Kopiraj"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Kopiraj %(object)s"
-
-msgid "image"
-msgstr "slika"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Povratak na popis %(model_name)s"
-
-msgid "Choose a parent page"
-msgstr "Odaberi roditeljsku stranicu"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s se mogu dodati na više mjesta u vašem sjedištu. Koji od "
-"slijedećih izbora želite postaviti kao roditelj vaše nove stranice?"
-
-msgid "Continue"
-msgstr "Nastavi"
-
-msgid "Saving…"
-msgstr "Spremanje..."
-
-msgid "Save"
-msgstr "Spremi"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "Nije moguće izbrisati izbrisati %(model_name)s"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' je povezan sa ostalim objektima i ne može se izbrisati "
-"bez narušavanja referencijalnog integriteta. Otklonite vezu sa sljedećih "
-"objekata prije brisanja, a zatim probajte ponovno:"
-
-msgid "Go back to listing"
-msgstr "Povratak na popis"
-
-msgid "Yes, delete"
-msgstr "Da, izbriši"
-
-msgid "No, don't delete"
-msgstr "Ne, nemoj izbrisati"
-
-#, python-format
-msgid "By %(filter_title)s"
-msgstr "Po %(filter_title)s"
-
-msgid "Last updated"
-msgstr "Zadnji put ažurirano"
-
-msgid "History"
-msgstr "Povijest"
-
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr "%(result_count)s od %(all_count)s"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr ""
-"Nažalost nije pronađen niti jedan %(name)s koji odgovara traženom pojmu."
-
-msgid "Search for"
-msgstr "Pretraži"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Pretraži %(name)s"
-
-msgid "Search"
-msgstr "Pretraži"
-
-msgid "Filter"
-msgstr "Filter"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Nema stvorenih %(name)s. Potrebno je stvoriti sljedeće kako bi dodali "
-"%(name)s:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Nema stvorenih %(name)s."
-
-#, python-format
-msgid "Why not <a href=\"%(url)s\">add one</a>?"
-msgstr "Zašto ne <a href=\"%(url)s\">dodate jedan</a>?"
-
-msgid "Pagination"
-msgstr "Numeriranje stranica"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Stranica %(current_page)s od %(num_pages)s."
-
-msgid "Previous"
-msgstr "Prethodna"
-
-msgid "Next"
-msgstr "Sljedeća"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' je stvoren."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "Nije moguće stvoriti %(object)s zbog grešaka."
-
-msgid "New"
-msgstr "Novi"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Stvori novi %(object)s"
-
-msgid "Editing"
-msgstr "Uređivanje"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Uređivanje %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' je ažuriran."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "Nije moguće sačuvati %(object)s zbog grešaka."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Potvrdi brisanje %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Jeste li sigurni da želite izbrisati %(object)s? Ako su ostale stvari "
-"povezane s ovime, one također mogu biti zahvaćene promjenom."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' je izbrisan."
-
-msgid "Inspecting"
-msgstr "Pregled"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Pregled %(object)s"
-
-msgid "Action"
-msgstr "Radnja"
-
-msgid "Date"
-msgstr "Datum"

二進制
wagtail/contrib/modeladmin/locale/ht/LC_MESSAGES/django.mo


+ 0 - 37
wagtail/contrib/modeladmin/locale/ht/LC_MESSAGES/django.po

@@ -1,37 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: Haitian (Haitian Creole) (http://app.transifex.com/torchbox/"
-"wagtail/language/ht/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ht\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Edit"
-msgstr "Modifye"
-
-msgid "Saving…"
-msgstr "Anrejistreman..."
-
-msgid "Save"
-msgstr "Anrejistre"
-
-msgid "Search"
-msgstr "Chèche"
-
-msgid "Editing"
-msgstr "Modifikasyon"
-
-msgid "Date"
-msgstr "Dat"

二進制
wagtail/contrib/modeladmin/locale/hu/LC_MESSAGES/django.mo


+ 0 - 242
wagtail/contrib/modeladmin/locale/hu/LC_MESSAGES/django.po

@@ -1,242 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# Istvan Farkas <istvan.farkas@gmail.com>, 2019-2022
-# Kornel Novak Mergulhão <nkornel@gmail.com>, 2016
-# Kornel Novak Mergulhão <nkornel@gmail.com>, 2016
-# Matt Westcott <matthew@torchbox.com>, 2019
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: Matt Westcott <matthew@torchbox.com>, 2019\n"
-"Language-Team: Hungarian (http://app.transifex.com/torchbox/wagtail/language/"
-"hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "Wagtail ModelAdmin"
-
-msgid "Parent page"
-msgstr "Szülő oldal"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "%(object)s hozzáadása"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Új %(object)s hozzáadása"
-
-msgid "Inspect"
-msgstr "Vizsgálat"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "%(object)s vizsgálata"
-
-msgid "Edit"
-msgstr "Szerkesztés"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "%(object)s szerkesztése"
-
-msgid "Delete"
-msgstr "Törlés"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "%(object)s törlése"
-
-msgid "Unpublish"
-msgstr "Visszavonás"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "%(object)s visszavonása"
-
-msgid "Copy"
-msgstr "Másolás"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "%(object)s másolása"
-
-msgid "image"
-msgstr "kép"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Vissza a(z) %(model_name)s listához"
-
-msgid "Choose a parent page"
-msgstr "Válasszon szülő oldalt"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"A(z) %(plural)s tartalmak több helyre is hozzáadhatóak. A következők közül "
-"melyik legyen az új oldal szülő oldala?"
-
-msgid "Continue"
-msgstr "Folytatás"
-
-msgid "Saving…"
-msgstr "Mentés folyamatban..."
-
-msgid "Save"
-msgstr "Mentés"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "A(z) %(model_name)s nem törölhető"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"A(z) '%(instance_name)s' jelenleg kapcsolatban van más rekordokkal, és nem "
-"lehet törölni az adatok integritásának megsértése nélkül. A törléshez előbb "
-"távolítsa el a hivatkozásokat a következő rekordokból, majd próbálja újra: "
-
-msgid "Go back to listing"
-msgstr "Vissza a listához"
-
-msgid "Yes, delete"
-msgstr "Igen, törlés"
-
-msgid "No, don't delete"
-msgstr "Nem, ne töröljük"
-
-#, python-format
-msgid "By %(filter_title)s"
-msgstr "ez alapján: %(filter_title)s"
-
-msgid "Last updated"
-msgstr "Utolsó frissítés"
-
-msgid "History"
-msgstr "Történet"
-
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr "%(result_count)s / %(all_count)s"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr ""
-"Sajnáljuk de nincs %(name)s, amelyik megfelelne a keresési feltételeknek."
-
-msgid "Search for"
-msgstr "Keresés:"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "%(name)s keresés"
-
-msgid "Search"
-msgstr "Keresés"
-
-msgid "Filter"
-msgstr "Szűrő"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Még nincs egyetlen %(name)s sem létrehozva. Legalább egyet létre kell hozni "
-"a következőkből, mielőtt hozzáadna egy %(name)s rekordot:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Még nincs %(name)s létrehozva."
-
-#, python-format
-msgid "Why not <a href=\"%(url)s\">add one</a>?"
-msgstr "Miért nem <a href=\"%(url)s\">ad hozzá egyet</a>?"
-
-msgid "Pagination"
-msgstr "Lapozó"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "%(current_page)s/%(num_pages)s. oldal"
-
-msgid "Previous"
-msgstr "Előző"
-
-msgid "Next"
-msgstr "Következő"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' létrehozva."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "Hiba a(z) %(object)s létrehozása közben."
-
-msgid "New"
-msgstr "Új"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Új %(object)s létrehozása"
-
-msgid "Editing"
-msgstr "Szerkesztés"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "%(object)s szerkesztése"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s'%(object)s' frissítve."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "Hiba a(z) %(object)s mentése közben."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "%(object)s törlésének megerősítése"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Biztosan törölni kívánja ezt a(z) %(object)s rekordot? Ha más tartalom is "
-"hivatkozik rá, azt is értintheti a törlés."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' törölve."
-
-msgid "Inspecting"
-msgstr "Vizsgálat"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "%(object)s vizsgálata"
-
-msgid "Action"
-msgstr "Akció"
-
-msgid "Date"
-msgstr "Dátum"

二進制
wagtail/contrib/modeladmin/locale/id_ID/LC_MESSAGES/django.mo


+ 0 - 200
wagtail/contrib/modeladmin/locale/id_ID/LC_MESSAGES/django.po

@@ -1,200 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# M. Febrian Ramadhana <febrian@ramadhana.me>, 2018
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: M. Febrian Ramadhana <febrian@ramadhana.me>, 2018\n"
-"Language-Team: Indonesian (Indonesia) (http://app.transifex.com/torchbox/"
-"wagtail/language/id_ID/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: id_ID\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "Wagtail ModelAdmin"
-
-msgid "Parent page"
-msgstr "Halaman induk"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Tambah %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Tambah %(object)s baru"
-
-msgid "Inspect"
-msgstr "Periksa"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Periksa %(object)s ini"
-
-msgid "Edit"
-msgstr "Ubah"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Ubah %(object)s ini"
-
-msgid "Delete"
-msgstr "Hapus"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Hapus %(object)s ini"
-
-msgid "Unpublish"
-msgstr "Batal Publikasi"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Batalkan publikasi untuk %(object)s ini"
-
-msgid "Copy"
-msgstr "Salin"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Salin %(object)s ini"
-
-msgid "image"
-msgstr "Gambar"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Kembali ke daftar %(model_name)s"
-
-msgid "Choose a parent page"
-msgstr "Pilih halaman induk"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)sbisa dimasukkan pada lebih dari satu tempat pada situs Anda. "
-"Manakah yang akan menjadi induk untuk halaman baru Anda?"
-
-msgid "Continue"
-msgstr "Lanjut"
-
-msgid "Saving…"
-msgstr "Menyimpan..."
-
-msgid "Save"
-msgstr "Simpan"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "%(model_name)s tidak dapat dihapus"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' mempunyai referensi pada objek lain dan tidak bisa "
-"dihapus tanpa membahayakan integritas data. Untuk menghapus dengan benar, "
-"pertama hapus referensi pada objek berikut, dan coba kembali:"
-
-msgid "Go back to listing"
-msgstr "Kembali ke daftar"
-
-msgid "Yes, delete"
-msgstr "Ya, hapus"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr "Maaf, tidak ada %(name)syang sesuai dengan parameter pencarian."
-
-msgid "Search for"
-msgstr "Pencarian untuk"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Pencarian %(name)s"
-
-msgid "Search"
-msgstr "Pencarian"
-
-msgid "Filter"
-msgstr "Saring"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Tidak ada %(name)syang telah dibuat. Salah satu dari yang selanjutnya perlu "
-"dibuat sebelum %(name)s dapat ditambah:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Tidak ada %(name)s yang telah dibuat."
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Halaman %(current_page)s dari %(num_pages)s."
-
-msgid "Previous"
-msgstr "Sebelumnya"
-
-msgid "Next"
-msgstr "Berikutnya"
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "%(object)s tidak dapat dibuat karena kesalahan."
-
-msgid "New"
-msgstr "Baru"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Buat %(object)s baru"
-
-msgid "Editing"
-msgstr "Mengubah"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Mengubah %(object)s"
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "%(object)s tidak dapat disimpan karena suatu kesalahan."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Konfirmasi penghapusan dari %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Apakah Anda yakin ingin menghapus %(object)s ini? Jika ada hal lain yang "
-"terkait dengan hal ini pada situs Anda, hal lain tersebut akan terpengaruh "
-"juga."
-
-msgid "Inspecting"
-msgstr "Memeriksa"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Memeriksa %(object)s"
-
-msgid "Date"
-msgstr "Tanggal"

二進制
wagtail/contrib/modeladmin/locale/is_IS/LC_MESSAGES/django.mo


+ 0 - 242
wagtail/contrib/modeladmin/locale/is_IS/LC_MESSAGES/django.po

@@ -1,242 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# Arnar Tumi Þorsteinsson <arnartumi@gmail.com>, 2016,2022
-# saevarom <saevar@saevar.is>, 2016
-# saevarom <saevar@saevar.is>, 2016,2018,2020-2021
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: saevarom <saevar@saevar.is>, 2016\n"
-"Language-Team: Icelandic (Iceland) (http://app.transifex.com/torchbox/"
-"wagtail/language/is_IS/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is_IS\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "Wagtail gagna stjórnborð"
-
-msgid "Parent page"
-msgstr "Yfirsíða"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Bæta við %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Bæta við nýrri %(object)s"
-
-msgid "Inspect"
-msgstr "Skoða"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Skoða þessa %(object)s"
-
-msgid "Edit"
-msgstr "Breyta"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Breyta þessu %(object)s"
-
-msgid "Delete"
-msgstr "Eyða"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Eyða þessu %(object)s"
-
-msgid "Unpublish"
-msgstr "Taka úr loftinu"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Taka %(object)s úr loftinu"
-
-msgid "Copy"
-msgstr "Afrita"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Afrita þessa %(object)s"
-
-msgid "image"
-msgstr "mynd"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Til baka í  %(model_name)s lista"
-
-msgid "Choose a parent page"
-msgstr "Veldu yfirsíðu"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s er hægt að vista á fleiri en einum stað á vefnum. Hver "
-"eftirtalinna síðna ætti að vera yfirsíða nýju síðunnar?"
-
-msgid "Continue"
-msgstr "Áfram"
-
-msgid "Saving…"
-msgstr "Vista…"
-
-msgid "Save"
-msgstr "Vista"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "ekki tókst að eyða %(model_name)s"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' er tengdur öðrum hlutum á síðunni, og er því ekki hægt "
-"að eyða án þess að valda vandræðum. Til að eyða því þá þarf að byrja á að "
-"fjarlægja tengsl við eftirfarandi hluti og reyna svo aftur:"
-
-msgid "Go back to listing"
-msgstr "Til baka í lista"
-
-msgid "Yes, delete"
-msgstr "Já, eyða"
-
-msgid "No, don't delete"
-msgstr "Nei, ekki eyða"
-
-#, python-format
-msgid "By %(filter_title)s"
-msgstr " Eftir %(filter_title)s "
-
-msgid "Last updated"
-msgstr "Síðast uppfært"
-
-msgid "History"
-msgstr "Saga"
-
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr "%(result_count)s af %(all_count)s"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr "Því miður þá eru engin %(name)s sem passa við leitarstrenginn."
-
-msgid "Search for"
-msgstr "Leita að"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Leita að %(name)s"
-
-msgid "Search"
-msgstr "Leita"
-
-msgid "Filter"
-msgstr "Sía"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Engin %(name)s hafa enn verið búin til. Búa þarf til eitt af eftirfarandi "
-"áður en hægt er að búa til %(name)s:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "Engin %(name)s hafa verið búin til enn."
-
-#, python-format
-msgid "Why not <a href=\"%(url)s\">add one</a>?"
-msgstr "Því ekki að <a href=\"%(url)s\">búa til eina</a>?"
-
-msgid "Pagination"
-msgstr "Síðuskipting"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Síða %(current_page)s af %(num_pages)s."
-
-msgid "Previous"
-msgstr "Fyrra"
-
-msgid "Next"
-msgstr "Næsta"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' búið til."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr ""
-"Ekki var hægt að búa til %(object)s þar sem það stóðst ekki villuprófanir"
-
-msgid "New"
-msgstr "Ný"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Búa til nýja %(object)s"
-
-msgid "Editing"
-msgstr "Breyti"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Breyti %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' uppfært."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr ""
-"Ekki var hægt að vista %(object)s þar sem það stóðst ekki villuprófanir"
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Staðfesta eyðingu á %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Ertu viss um að þú viljir eyða þessu %(object)s? Ef aðrir hlutir á síðunni "
-"eru háðir þessu þá gæti þetta haft áhrif á þá."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' eytt."
-
-msgid "Inspecting"
-msgstr "Skoða"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Skoða %(object)s"
-
-msgid "Action"
-msgstr "Aðgerð"
-
-msgid "Date"
-msgstr "Dagsetning"

二進制
wagtail/contrib/modeladmin/locale/it/LC_MESSAGES/django.mo


+ 0 - 245
wagtail/contrib/modeladmin/locale/it/LC_MESSAGES/django.po

@@ -1,245 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# Giacomo Ghizzani <giacomo.ghz@gmail.com>, 2016
-# giammi <gian-maria.daffre@giammi.org>, 2018
-# giammi <gian-maria.daffre@giammi.org>, 2018
-# LB (Ben Johnston) <mail@lb.ee>, 2019
-# Marco Badan <marco.badan@gmail.com>, 2021-2022
-msgid ""
-msgstr ""
-"Project-Id-Version: Wagtail\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-19 23:14+0100\n"
-"PO-Revision-Date: 2016-05-11 20:22+0000\n"
-"Last-Translator: LB (Ben Johnston) <mail@lb.ee>, 2019\n"
-"Language-Team: Italian (http://app.transifex.com/torchbox/wagtail/language/"
-"it/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: it\n"
-"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? "
-"1 : 2;\n"
-
-msgid "Wagtail ModelAdmin"
-msgstr "Amministrazione Modelli Wagtail"
-
-msgid "Parent page"
-msgstr "Pagina padre"
-
-#, python-format
-msgid "Add %(object)s"
-msgstr "Aggiungi %(object)s"
-
-#, python-format
-msgid "Add a new %(object)s"
-msgstr "Aggiungi un nuovo %(object)s"
-
-msgid "Inspect"
-msgstr "Controlla"
-
-#, python-format
-msgid "Inspect this %(object)s"
-msgstr "Controlla questo %(object)s"
-
-msgid "Edit"
-msgstr "Modifica"
-
-#, python-format
-msgid "Edit this %(object)s"
-msgstr "Modifica questo %(object)s"
-
-msgid "Delete"
-msgstr "Elimina"
-
-#, python-format
-msgid "Delete this %(object)s"
-msgstr "Elimina questo %(object)s"
-
-msgid "Unpublish"
-msgstr "Annulla pubblicazione"
-
-#, python-format
-msgid "Unpublish this %(object)s"
-msgstr "Annulla pubblicazione di %(object)s"
-
-msgid "Copy"
-msgstr "Copia"
-
-#, python-format
-msgid "Copy this %(object)s"
-msgstr "Copia questo %(object)s"
-
-msgid "image"
-msgstr "immagine"
-
-#, python-format
-msgid "Back to %(model_name)s list"
-msgstr "Torna alla lista di %(model_name)s"
-
-msgid "Choose a parent page"
-msgstr "Scegli una pagina padre"
-
-#, python-format
-msgid ""
-"%(plural)s can be added to more than one place within your site. Which of "
-"the following would you like to be the parent of your new page?"
-msgstr ""
-"%(plural)s può essere aggiunto in molti posti dentro al tuo sito. Quale "
-"delle seguenti pagine vuoi che sia la pagina padre?"
-
-msgid "Continue"
-msgstr "Continua"
-
-msgid "Saving…"
-msgstr "Salvataggio in corso…"
-
-msgid "Save"
-msgstr "Salva"
-
-#, python-format
-msgid "%(model_name)s could not be deleted"
-msgstr "%(model_name)s impossibile da eliminare"
-
-#, python-format
-msgid ""
-"'%(instance_name)s' is currently referenced by other objects, and cannot be "
-"deleted without jeopardising data integrity. To delete it successfully, "
-"first remove references from the following objects, then try again:"
-msgstr ""
-"'%(instance_name)s' è attualmente referenziato da altri oggetti e non può "
-"essere eliminato senza compromettere l'integrità dei dati. Per eliminarlo "
-"correttamente rimuovi tutti collegamenti all'oggetto e prova di nuovo:"
-
-msgid "Go back to listing"
-msgstr "Torna indietro alla lista"
-
-msgid "Yes, delete"
-msgstr "Si, elimina"
-
-msgid "No, don't delete"
-msgstr "No, non eliminarlo"
-
-#, python-format
-msgid "By %(filter_title)s"
-msgstr "Per %(filter_title)s"
-
-msgid "Last updated"
-msgstr "Ultima modifica"
-
-msgid "History"
-msgstr "Storico"
-
-#, python-format
-msgid "%(result_count)s out of %(all_count)s"
-msgstr "%(result_count)s di %(all_count)s"
-
-#, python-format
-msgid "Sorry, there are no %(name)s matching your search parameters."
-msgstr ""
-"Spiacente, non ci sono %(name)s corrispondenze con i tuoi parametri di "
-"ricerca."
-
-msgid "Search for"
-msgstr "Cerca per"
-
-#, python-format
-msgid "Search %(name)s"
-msgstr "Cerca %(name)s"
-
-msgid "Search"
-msgstr "Cerca"
-
-msgid "Filter"
-msgstr "Filtro"
-
-#, python-format
-msgid ""
-"No %(name)s have been created yet. One of the following must be created "
-"before you can add any %(name)s:"
-msgstr ""
-"Nessuna %(name)s  è stata ancora creata. Una delle seguenti deve essere "
-"creata prima che tu possa aggiungere qualsiasi %(name)s:"
-
-#, python-format
-msgid "No %(name)s have been created yet."
-msgstr "%(name)s non è stato ancora creata."
-
-#, python-format
-msgid "Why not <a href=\"%(url)s\">add one</a>?"
-msgstr "Perché non ne <a href=\"%(url)s\">aggiungi una</a>?"
-
-msgid "Pagination"
-msgstr "Paginazione"
-
-#, python-format
-msgid "Page %(current_page)s of %(num_pages)s."
-msgstr "Pagina %(current_page)s di %(num_pages)s."
-
-msgid "Previous"
-msgstr "Precedente"
-
-msgid "Next"
-msgstr "Successivo"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' created."
-msgstr "%(model_name)s '%(object)s' creato."
-
-#, python-format
-msgid "The %(object)s could not be created due to errors."
-msgstr "%(object)s non può essere creato a causa di errori. "
-
-msgid "New"
-msgstr "Nuovo"
-
-#, python-format
-msgid "Create new %(object)s"
-msgstr "Crea nuovo %(object)s"
-
-msgid "Editing"
-msgstr "Modifica"
-
-#, python-format
-msgid "Editing %(object)s"
-msgstr "Modifica %(object)s"
-
-#, python-format
-msgid "%(model_name)s '%(object)s' updated."
-msgstr "%(model_name)s '%(object)s' aggiornato."
-
-#, python-format
-msgid "The %(object)s could not be saved due to errors."
-msgstr "%(object)s non può essere salvato a causa di errori."
-
-#, python-format
-msgid "Confirm deletion of %(object)s"
-msgstr "Conferma cancellazione di %(object)s"
-
-#, python-format
-msgid ""
-"Are you sure you want to delete this %(object)s? If other things in your "
-"site are related to it, they may also be affected."
-msgstr ""
-"Sei sicuro di voler cancellare %(object)s? Saranno interessati tutti gli "
-"oggetti del sito in relazione a questo."
-
-#, python-format
-msgid "%(model_name)s '%(object)s' deleted."
-msgstr "%(model_name)s '%(object)s' eliminato."
-
-msgid "Inspecting"
-msgstr "Controllo in corso"
-
-#, python-format
-msgid "Inspecting %(object)s"
-msgstr "Controllo %(object)s"
-
-msgid "Action"
-msgstr "Azione"
-
-msgid "Date"
-msgstr "Data"

二進制
wagtail/contrib/modeladmin/locale/ja/LC_MESSAGES/django.mo


部分文件因文件數量過多而無法顯示